@depup/webpack 5.111.1-depup.1 → 5.112.0-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/README.md +4 -7
  2. package/changes.json +3 -15
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +224 -106
  5. package/lib/Compiler.js +19 -19
  6. package/lib/Dependency.js +3 -551
  7. package/lib/DependencyTemplate.js +3 -70
  8. package/lib/EntryPlugin.js +3 -68
  9. package/lib/Entrypoint.js +3 -121
  10. package/lib/ExternalsPlugin.js +3 -92
  11. package/lib/FileSystemInfo.js +3 -4629
  12. package/lib/InitFragment.js +3 -204
  13. package/lib/LibraryTemplatePlugin.js +3 -46
  14. package/lib/ModuleFilenameHelpers.js +3 -400
  15. package/lib/ModuleNotFoundError.js +2 -2
  16. package/lib/MultiCompiler.js +37 -8
  17. package/lib/NormalModule.js +3 -2242
  18. package/lib/NullFactory.js +3 -22
  19. package/lib/ProgressPlugin.js +3 -908
  20. package/lib/RawModule.js +3 -197
  21. package/lib/RequestShortener.js +3 -37
  22. package/lib/SingleEntryPlugin.js +1 -1
  23. package/lib/WebpackError.js +2 -2
  24. package/lib/asset/AssetBytesGenerator.js +8 -8
  25. package/lib/asset/AssetBytesParser.js +3 -3
  26. package/lib/asset/AssetGenerator.js +36 -22
  27. package/lib/asset/AssetModule.js +2 -2
  28. package/lib/asset/AssetModulesPlugin.js +6 -9
  29. package/lib/asset/AssetParser.js +3 -3
  30. package/lib/asset/AssetSourceGenerator.js +8 -8
  31. package/lib/asset/AssetSourceParser.js +3 -3
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +7 -7
  34. package/lib/asset/WebManifestParser.js +5 -5
  35. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -3
  38. package/lib/async-modules/isGeneratorLowered.js +3 -3
  39. package/lib/bun/BunTargetPlugin.js +1 -1
  40. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  41. package/lib/{Cache.js → cache/Cache.js} +1 -1
  42. package/lib/{CacheFacade.js → cache/CacheFacade.js} +5 -5
  43. package/lib/cache/IdleFileCachePlugin.js +2 -2
  44. package/lib/cache/MemoryCachePlugin.js +2 -2
  45. package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
  46. package/lib/cache/PackFileCacheStrategy.js +8 -10
  47. package/lib/cache/ResolverCachePlugin.js +8 -4
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +217 -200
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +1 -1
  54. package/lib/{cli.js → config/cli.js} +5 -158
  55. package/lib/config/defaults.js +144 -48
  56. package/lib/config/getClaimedAssetTypes.js +21 -13
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +10 -0
  59. package/lib/container/ContainerEntryDependency.js +1 -1
  60. package/lib/container/ContainerEntryModule.js +13 -11
  61. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  62. package/lib/container/ContainerExposedDependency.js +1 -1
  63. package/lib/container/ContainerPlugin.js +178 -5
  64. package/lib/container/ContainerReferencePlugin.js +75 -14
  65. package/lib/container/FallbackDependency.js +1 -1
  66. package/lib/container/FallbackItemDependency.js +1 -1
  67. package/lib/container/FallbackModule.js +12 -10
  68. package/lib/container/FallbackModuleFactory.js +2 -2
  69. package/lib/container/HoistContainerReferencesPlugin.js +10 -11
  70. package/lib/container/ModuleFederationPlugin.js +306 -7
  71. package/lib/container/RemoteModule.js +14 -10
  72. package/lib/container/RemoteRuntimeModule.js +5 -5
  73. package/lib/container/RemoteToExternalDependency.js +1 -1
  74. package/lib/container/moduleFederationHooks.js +1 -1
  75. package/lib/context/ContextModule.js +36 -25
  76. package/lib/context/ContextModuleFactory.js +13 -10
  77. package/lib/context/ContextReplacementPlugin.js +3 -3
  78. package/lib/css/CssGenerator.js +38 -31
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +27 -29
  82. package/lib/css/CssModulesPlugin.js +128 -44
  83. package/lib/css/CssParser.js +682 -291
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/css/cssMinify.js +110 -37
  86. package/lib/css/data.js +6985 -5125
  87. package/lib/css/syntax-parser.js +19873 -0
  88. package/lib/css/syntax-printer.js +6037 -0
  89. package/lib/css/syntax.js +37 -18686
  90. package/lib/debug/ProfilingPlugin.js +52 -19
  91. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  92. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
  93. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  94. package/lib/deno/DenoTargetPlugin.js +1 -1
  95. package/lib/dependencies/ConstDependency.js +3 -120
  96. package/lib/dependencies/ContextElementDependency.js +5 -172
  97. package/lib/dependencies/NullDependency.js +3 -37
  98. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  99. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  100. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  101. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  102. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  103. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  104. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  105. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  106. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  107. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  108. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  109. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  110. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  111. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  112. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  113. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  114. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -33
  115. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  116. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  117. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  118. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +35 -30
  119. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  120. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  121. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  122. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  123. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
  124. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  125. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  126. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  127. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  128. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  129. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  130. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  131. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  132. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  133. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  134. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  135. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  136. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  137. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  138. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  139. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
  140. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  141. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  142. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  143. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  144. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  145. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  146. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  147. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  148. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  149. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  150. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  151. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  152. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  153. package/lib/dependencies/core/ConstDependency.js +131 -0
  154. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  155. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  156. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  157. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  158. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  159. package/lib/dependencies/core/NullDependency.js +44 -0
  160. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  161. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  162. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +369 -92
  163. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
  164. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  165. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  166. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +23 -16
  167. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  168. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  169. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  170. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
  171. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +19 -17
  172. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  173. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  174. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  175. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  176. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  177. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +133 -118
  178. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  179. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
  180. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  181. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  182. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  183. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +99 -84
  184. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  185. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  186. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
  187. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  188. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  189. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  190. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  191. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  192. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  193. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  194. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  195. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  196. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  198. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +51 -141
  199. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  200. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
  201. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
  202. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  203. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  204. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  205. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  206. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  207. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  208. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  209. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  210. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  211. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +119 -98
  213. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  214. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  215. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  216. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  217. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  218. package/lib/{url → dependencies/url}/URLParserPlugin.js +16 -18
  219. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  220. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  221. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  222. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  223. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +31 -33
  224. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  225. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  226. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  227. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  228. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  229. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  230. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +154 -26
  231. package/lib/{util → devtool}/generateDebugId.js +1 -1
  232. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  233. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  234. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  235. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  236. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  237. package/lib/dll/DelegatedModule.js +20 -18
  238. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  239. package/lib/dll/DelegatedPlugin.js +1 -1
  240. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  241. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  242. package/lib/dll/DllEntryPlugin.js +3 -3
  243. package/lib/dll/DllModule.js +11 -9
  244. package/lib/dll/DllModuleFactory.js +3 -3
  245. package/lib/dll/DllPlugin.js +18 -6
  246. package/lib/dll/DllReferencePlugin.js +102 -26
  247. package/lib/dll/LibManifestPlugin.js +9 -7
  248. package/lib/electron/ElectronTargetPlugin.js +2 -2
  249. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  250. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  251. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  252. package/lib/entry/EntryPlugin.js +75 -0
  253. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  254. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  255. package/lib/errors/BuildCycleError.js +1 -1
  256. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  257. package/lib/errors/ChunkRenderError.js +1 -1
  258. package/lib/errors/CodeGenerationError.js +1 -1
  259. package/lib/errors/CommentCompilationWarning.js +1 -1
  260. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  261. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  262. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  263. package/lib/errors/DllManifestError.js +26 -0
  264. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  265. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  266. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  267. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  268. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +7 -5
  269. package/lib/errors/ExternalStarReexportError.js +2 -2
  270. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  271. package/lib/errors/HookWebpackError.js +4 -4
  272. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  273. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  274. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  275. package/lib/errors/ModuleBuildError.js +1 -1
  276. package/lib/errors/ModuleDependencyError.js +2 -2
  277. package/lib/errors/ModuleDependencyWarning.js +2 -2
  278. package/lib/errors/ModuleError.js +1 -1
  279. package/lib/errors/ModuleHashingError.js +1 -1
  280. package/lib/errors/ModuleNotFoundError.js +3 -3
  281. package/lib/errors/ModuleParseError.js +1 -1
  282. package/lib/errors/ModuleRestoreError.js +1 -1
  283. package/lib/errors/ModuleStoreError.js +1 -1
  284. package/lib/errors/ModuleWarning.js +1 -1
  285. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  286. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  287. package/lib/errors/NodeStuffInWebError.js +7 -2
  288. package/lib/errors/PathVariableError.js +31 -0
  289. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  290. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  291. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  292. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  293. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  294. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  295. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  296. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  297. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  298. package/lib/errors/WebpackError.js +12 -3
  299. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  300. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  301. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  302. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  303. package/lib/{ExternalModule.js → externals/ExternalModule.js} +79 -55
  304. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  305. package/lib/externals/ExternalsPlugin.js +99 -0
  306. package/lib/fs/FileSystemInfo.js +4642 -0
  307. package/lib/{util → fs}/fs.js +22 -9
  308. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  309. package/lib/graph/Chunk.js +985 -0
  310. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  311. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  312. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  313. package/lib/graph/Dependency.js +628 -0
  314. package/lib/graph/Entrypoint.js +136 -0
  315. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +130 -82
  316. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  317. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
  318. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  319. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
  320. package/lib/{util → graph}/findGraphRoots.js +14 -8
  321. package/lib/graph/isDependencyKind.js +23 -0
  322. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  323. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -47
  324. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  325. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  327. package/lib/hmr/LazyCompilationPlugin.js +31 -21
  328. package/lib/html/HtmlGenerator.js +107 -43
  329. package/lib/html/HtmlModule.js +6 -2
  330. package/lib/html/HtmlModulesPlugin.js +172 -76
  331. package/lib/html/HtmlParser.js +503 -153
  332. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  333. package/lib/html/data.js +2 -1
  334. package/lib/html/htmlMinify.js +111 -41
  335. package/lib/html/syntax-parser.js +15796 -0
  336. package/lib/html/syntax-printer.js +1034 -0
  337. package/lib/html/syntax.js +37 -13952
  338. package/lib/html/xmlMinify.js +67 -0
  339. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  340. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  341. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  342. package/lib/ids/IdHelpers.js +4 -4
  343. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  344. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  345. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  346. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  347. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  348. package/lib/{util → ids}/numberHash.js +1 -1
  349. package/lib/index.js +303 -97
  350. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
  351. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  352. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  353. package/lib/javascript/ChunkHelpers.js +64 -4
  354. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  355. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  356. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
  357. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  358. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  359. package/lib/javascript/JavascriptGenerator.js +17 -17
  360. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  361. package/lib/javascript/JavascriptModule.js +4 -3
  362. package/lib/javascript/JavascriptModulesPlugin.js +440 -211
  363. package/lib/javascript/JavascriptParser.js +220 -134
  364. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  365. package/lib/javascript/MergedEntryExports.js +196 -0
  366. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  367. package/lib/javascript/StartupHelpers.js +6 -6
  368. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  369. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  370. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  371. package/lib/javascript/data.js +533 -122
  372. package/lib/javascript/jsMinify.js +272 -0
  373. package/lib/javascript/regexp.js +67 -32
  374. package/lib/javascript/syntax-parser.js +18561 -0
  375. package/lib/javascript/syntax-printer-data.js +933 -0
  376. package/lib/javascript/syntax-printer.js +47106 -0
  377. package/lib/javascript/syntax.js +20 -11274
  378. package/lib/json/JsonData.js +1 -1
  379. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  380. package/lib/json/JsonGenerator.js +10 -10
  381. package/lib/json/JsonModule.js +2 -2
  382. package/lib/json/JsonModulesPlugin.js +1 -1
  383. package/lib/json/JsonParser.js +5 -5
  384. package/lib/json/jsonMinify.js +69 -0
  385. package/lib/library/AbstractLibraryPlugin.js +28 -15
  386. package/lib/library/AmdLibraryPlugin.js +4 -4
  387. package/lib/library/AssignLibraryPlugin.js +27 -11
  388. package/lib/library/EnableLibraryPlugin.js +1 -1
  389. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  390. package/lib/library/JsonpLibraryPlugin.js +1 -1
  391. package/lib/library/LibraryTemplatePlugin.js +53 -0
  392. package/lib/library/ModuleLibraryPlugin.js +160 -166
  393. package/lib/library/SystemLibraryPlugin.js +6 -8
  394. package/lib/library/UmdLibraryPlugin.js +3 -4
  395. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  396. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  397. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  398. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  399. package/lib/loaders/LoaderRunner.js +31 -21
  400. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  401. package/lib/logging/Logger.js +7 -9
  402. package/lib/logging/ProgressPlugin.js +957 -0
  403. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  404. package/lib/{Generator.js → module/Generator.js} +16 -14
  405. package/lib/{Module.js → module/Module.js} +119 -51
  406. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  407. package/lib/module/NormalModule.js +2348 -0
  408. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  409. package/lib/module/NullFactory.js +29 -0
  410. package/lib/{Parser.js → module/Parser.js} +3 -3
  411. package/lib/module/RawModule.js +208 -0
  412. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  413. package/lib/{util → module}/extractSourceMap.js +2 -2
  414. package/lib/{util → module}/findCaseMismatch.js +2 -2
  415. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  416. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  417. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  418. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  419. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  420. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  421. package/lib/node/NodeTargetPlugin.js +1 -1
  422. package/lib/node/NodeWatchFileSystem.js +58 -6
  423. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  424. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  425. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  426. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  427. package/lib/node/nodeConsole.js +2 -4
  428. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  429. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  430. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  431. package/lib/optimize/ConcatenatedModule.js +229 -214
  432. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  433. package/lib/optimize/ConstExportsPlugin.js +7 -7
  434. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  435. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  436. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +17 -17
  437. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
  438. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  439. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  440. package/lib/optimize/InlineExports.js +11 -3
  441. package/lib/optimize/InnerGraph.js +5 -13
  442. package/lib/optimize/InnerGraphPlugin.js +10 -10
  443. package/lib/optimize/LazyBarrels.js +584 -0
  444. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  445. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  446. package/lib/optimize/MangleExportsPlugin.js +5 -5
  447. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  448. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  449. package/lib/optimize/ModuleConcatenationPlugin.js +20 -12
  450. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  451. package/lib/optimize/RealContentHashPlugin.js +16 -7
  452. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  453. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  454. package/lib/optimize/SideEffectsFlagPlugin.js +18 -18
  455. package/lib/optimize/SplitChunksPlugin.js +713 -155
  456. package/lib/{util → optimize}/TupleQueue.js +9 -9
  457. package/lib/optimize/chunkSetIntersections.js +437 -0
  458. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  459. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  460. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  461. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  462. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  463. package/lib/output/SSRManifestPlugin.js +349 -0
  464. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  465. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  466. package/lib/performance/BroadContextsPlugin.js +4 -4
  467. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  468. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  469. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  470. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  471. package/lib/performance/DynamicExportsPlugin.js +2 -2
  472. package/lib/performance/EvalUsagePlugin.js +3 -3
  473. package/lib/performance/HotspotsPlugin.js +11 -10
  474. package/lib/performance/LargeModulesPlugin.js +2 -3
  475. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  476. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  477. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  478. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  479. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  480. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  481. package/lib/performance/SizeLimitsPlugin.js +11 -12
  482. package/lib/performance/TopLevelThisPlugin.js +8 -7
  483. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  484. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  485. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  486. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  487. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  488. package/lib/performance/UnusedFederationPlugin.js +2 -4
  489. package/lib/performance/UnusedModulesPlugin.js +5 -4
  490. package/lib/performance/getModuleSize.js +1 -1
  491. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  492. package/lib/performance/isOnlyReexported.js +7 -6
  493. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  494. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  495. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  496. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  497. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  499. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  500. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  501. package/lib/prefetch/ResourceHintPlugin.js +65 -44
  502. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  503. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  505. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  506. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  507. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  508. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  509. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  510. package/lib/resolve/getResolveOptionsKey.js +59 -0
  511. package/lib/rules/RuleSetCompiler.js +27 -46
  512. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  513. package/lib/runtime/AsyncModuleRuntimeModule.js +7 -4
  514. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  515. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  516. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  517. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatRuntimeModule.js +4 -4
  519. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  520. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  521. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  524. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  525. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  526. package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
  527. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  528. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  529. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  530. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  531. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  532. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  533. package/lib/runtime/HelperRuntimeModule.js +16 -1
  534. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  535. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  536. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  537. package/lib/runtime/NonceRuntimeModule.js +2 -2
  538. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  539. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  540. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  541. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  542. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  543. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  544. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  545. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  546. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  547. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  549. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  550. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  551. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  552. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  553. package/lib/runtime/baseUri.js +1 -1
  554. package/lib/schemes/DataUriPlugin.js +1 -1
  555. package/lib/schemes/HttpUriPlugin.js +67 -11
  556. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  557. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  558. package/lib/serialization/FileMiddleware.js +3 -3
  559. package/lib/serialization/ObjectMiddleware.js +47 -16
  560. package/lib/serialization/SerializerMiddleware.js +2 -2
  561. package/lib/serialization/SingleItemMiddleware.js +4 -2
  562. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  563. package/lib/sharing/ConsumeSharedModule.js +18 -14
  564. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  565. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  566. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  567. package/lib/sharing/ProvideSharedDependency.js +1 -1
  568. package/lib/sharing/ProvideSharedModule.js +11 -9
  569. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  570. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  571. package/lib/sharing/SharePlugin.js +102 -9
  572. package/lib/sharing/ShareRuntimeModule.js +6 -6
  573. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  574. package/lib/{util → sharing}/semver.js +14 -16
  575. package/lib/sharing/utils.js +59 -2
  576. package/lib/stats/DefaultStatsFactoryPlugin.js +22 -19
  577. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  578. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  579. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  580. package/lib/{Stats.js → stats/Stats.js} +4 -4
  581. package/lib/stats/StatsFactory.js +14 -13
  582. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  583. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  584. package/lib/template/DependencyTemplate.js +77 -0
  585. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  586. package/lib/template/InitFragment.js +223 -0
  587. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  588. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  589. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  590. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +145 -63
  591. package/lib/{Template.js → template/Template.js} +13 -11
  592. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  593. package/lib/typescript/TypeScriptPlugin.js +3 -3
  594. package/lib/util/RequestShortener.js +44 -0
  595. package/lib/util/SortableSet.js +87 -22
  596. package/lib/util/SourceProcessor.js +349 -44
  597. package/lib/util/TupleSet.js +27 -27
  598. package/lib/util/WeakTupleMap.js +10 -12
  599. package/lib/util/buildDiagnostics.js +2 -2
  600. package/lib/util/comparators.js +10 -10
  601. package/lib/util/concatenate.js +28 -147
  602. package/lib/util/createMappings.js +111 -0
  603. package/lib/util/dataURL.js +94 -15
  604. package/lib/util/deprecation.js +1 -1
  605. package/lib/util/extractComments.js +118 -0
  606. package/lib/util/formatLocation.js +1 -1
  607. package/lib/util/globUtils.js +197 -16
  608. package/lib/util/haltVisitors.js +51 -0
  609. package/lib/util/handlerKeys.js +2 -2
  610. package/lib/util/identifier.js +117 -1
  611. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  612. package/lib/util/internalSerializables.js +294 -102
  613. package/lib/util/magicComment.js +12 -7
  614. package/lib/util/makeSerializable.js +23 -4
  615. package/lib/util/parseJson.js +1 -1
  616. package/lib/util/preloadModuleType.js +5 -2
  617. package/lib/util/registerExternalSerializer.js +2 -2
  618. package/lib/util/removeBOM.js +1 -1
  619. package/lib/util/runtime.js +1 -1
  620. package/lib/util/serialization.js +4 -1
  621. package/lib/util/source.js +2 -2
  622. package/lib/util/terminalColors.js +161 -0
  623. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  624. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  625. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  626. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +5 -5
  627. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
  628. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  629. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  630. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  631. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  632. package/lib/wasm/wasmModuleFilename.js +2 -2
  633. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  634. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  635. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  636. package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
  637. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
  638. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  639. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  640. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  641. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  642. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  643. package/lib/{Watching.js → watch/Watching.js} +8 -8
  644. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  645. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  646. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  647. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  648. package/lib/web/JsonpTemplatePlugin.js +1 -1
  649. package/lib/webpack.js +27 -17
  650. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  651. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  652. package/package.json +49 -38
  653. package/schemas/WebpackOptions.check.js +2 -1
  654. package/schemas/WebpackOptions.d.json.ts +2 -0
  655. package/schemas/WebpackOptions.json +294 -74
  656. package/schemas/plugins/BannerPlugin.check.js +2 -1
  657. package/schemas/plugins/BannerPlugin.json +29 -2
  658. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  659. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  660. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  661. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  662. package/schemas/plugins/IgnorePlugin.json +1 -1
  663. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  664. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  665. package/schemas/plugins/ManifestPlugin.json +3 -3
  666. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  667. package/schemas/plugins/ProgressPlugin.json +2 -7
  668. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  669. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  670. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  671. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  672. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  673. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  674. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  675. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  676. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  677. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  678. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  679. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  680. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  681. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  682. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  683. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  684. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  685. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  686. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  687. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  688. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  689. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  690. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  691. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  692. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  693. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  694. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  695. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  696. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  697. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  698. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  699. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  700. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  701. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  702. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  703. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  704. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  705. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  706. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  707. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  708. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  709. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  710. package/types.d.ts +19355 -13873
  711. package/lib/LazyBarrel.js +0 -388
  712. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  713. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  714. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  715. package/lib/javascript/grammar.js +0 -5546
  716. package/lib/javascript/parser.js +0 -1500
  717. package/lib/javascript/regexpData.js +0 -51
  718. package/lib/performance/getSourceModules.js +0 -22
  719. package/lib/util/Semaphore.js +0 -65
  720. package/lib/util/objectToMap.js +0 -15
  721. package/schemas/WebpackOptions.check.d.ts +0 -7
  722. package/schemas/_container.json +0 -155
  723. package/schemas/_sharing.json +0 -118
  724. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  725. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  726. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  727. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  728. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  729. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  730. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  732. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  733. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  734. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  735. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  736. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  737. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  740. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  741. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  744. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  745. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  752. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  753. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  754. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  755. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  759. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  763. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  764. /package/lib/{util → css}/conventions.js +0 -0
  765. /package/lib/{util → css}/topologicalSort.js +0 -0
  766. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  767. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  768. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  769. /package/lib/{util → javascript}/StackedMap.js +0 -0
  770. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  771. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  772. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  773. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  774. /package/lib/{util → optimize}/Queue.js +0 -0
  775. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -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
  /**
@@ -146,7 +146,7 @@ class ModuleGraphModule {
146
146
  * @property {boolean=} onDemandExports generate export definitions on demand
147
147
  */
148
148
 
149
- /** @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 */
150
150
 
151
151
  class ModuleGraph {
152
152
  constructor() {
@@ -346,14 +346,14 @@ class ModuleGraph {
346
346
  // Specifiers of one import statement share its source order, so `a` and `b`
347
347
  // of `import { a, b } from "lib"` both take the statement's index.
348
348
  const currentSourceOrder =
349
- /** @type {HarmonyImportSideEffectDependency | HarmonyImportSpecifierDependency} */
349
+ /** @type {ESMImportSideEffectDependency | ESMImportSpecifierDependency} */
350
350
  (dependency).sourceOrder;
351
351
 
352
352
  // lib/index.js (reexport)
353
353
  // import { a } from "lib/a" -> a = 0
354
354
  // import { b } from "lib/b" -> b = 1
355
355
  const originSourceOrder =
356
- /** @type {HarmonyImportSideEffectDependency | HarmonyImportSpecifierDependency} */
356
+ /** @type {ESMImportSideEffectDependency | ESMImportSpecifierDependency} */
357
357
  (originDependency).sourceOrder;
358
358
  if (
359
359
  typeof currentSourceOrder === "number" &&
@@ -381,7 +381,7 @@ class ModuleGraph {
381
381
  return;
382
382
  }
383
383
  for (const mod of this._modulesNeedingSort) {
384
- // If dependencies like HarmonyImportSideEffectDependency and HarmonyImportSpecifierDependency have a SourceOrder,
384
+ // If dependencies like ESMImportSideEffectDependency and ESMImportSpecifierDependency have a SourceOrder,
385
385
  // we sort based on it; otherwise, we preserve the original order.
386
386
  sortWithSourceOrder(
387
387
  mod.dependencies,
@@ -461,7 +461,7 @@ class ModuleGraph {
461
461
  connection
462
462
  );
463
463
  }
464
- pending.length = 0;
464
+ mgm._unassignedConnections = undefined;
465
465
  }
466
466
 
467
467
  /**
@@ -739,7 +739,7 @@ class ModuleGraph {
739
739
  foundConnection = connection;
740
740
  }
741
741
  }
742
- mgm._unassignedConnections.length = 0;
742
+ mgm._unassignedConnections = undefined;
743
743
  if (foundConnection !== undefined) {
744
744
  return foundConnection;
745
745
  }
@@ -1087,7 +1087,7 @@ class ModuleGraph {
1087
1087
  for (const connection of connections) {
1088
1088
  if (
1089
1089
  !connection.dependency ||
1090
- !(connection.dependency instanceof HarmonyImportDependency)
1090
+ !isDependencyKind(connection.dependency, "esm-import")
1091
1091
  ) {
1092
1092
  continue;
1093
1093
  }
@@ -1194,7 +1194,7 @@ class ModuleGraph {
1194
1194
  );
1195
1195
  }
1196
1196
 
1197
- // TODO remove in webpack 6
1197
+ // TODO in the next major release: remove
1198
1198
  /**
1199
1199
  * Gets module graph for module.
1200
1200
  * @deprecated
@@ -1228,7 +1228,7 @@ class ModuleGraph {
1228
1228
  return newFn(module);
1229
1229
  }
1230
1230
 
1231
- // TODO remove in webpack 6
1231
+ // TODO in the next major release: remove
1232
1232
  /**
1233
1233
  * Sets module graph for module.
1234
1234
  * @deprecated
@@ -1240,7 +1240,7 @@ class ModuleGraph {
1240
1240
  moduleGraphForModuleMap.set(module, moduleGraph);
1241
1241
  }
1242
1242
 
1243
- // TODO remove in webpack 6
1243
+ // TODO in the next major release: remove
1244
1244
  /**
1245
1245
  * Clear module graph for module.
1246
1246
  * @deprecated
@@ -1252,11 +1252,11 @@ class ModuleGraph {
1252
1252
  }
1253
1253
  }
1254
1254
 
1255
- // TODO remove in webpack 6
1255
+ // TODO in the next major release: remove
1256
1256
  /** @type {WeakMap<Module, ModuleGraph>} */
1257
1257
  const moduleGraphForModuleMap = new WeakMap();
1258
1258
 
1259
- // TODO remove in webpack 6
1259
+ // TODO in the next major release: remove
1260
1260
  /** @type {Map<string, (module: Module) => ModuleGraph>} */
1261
1261
  const deprecateMap = new Map();
1262
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,
@@ -700,14 +716,15 @@ const visitModules = (
700
716
  cgi = {
701
717
  depModule,
702
718
  circular: b.circular,
703
- initialized: false,
704
719
  chunkGroup: c,
705
720
  runtime: chunkGroupInfo.runtime,
706
721
  minAvailableModules: undefined,
707
722
  availableModulesToBeMerged: [],
708
723
  skippedItems: undefined,
709
724
  resultingAvailableModules: undefined,
725
+ connectedAvailableModules: undefined,
710
726
  children: undefined,
727
+ parents: undefined,
711
728
  availableSources: undefined,
712
729
  availableChildren: undefined,
713
730
  preOrderIndex: 0,
@@ -953,6 +970,12 @@ const visitModules = (
953
970
  let chunkMask = /** @type {bigint} */ (maskByChunk.get(chunk));
954
971
  chunkMask |= ONE_BIGINT << BigInt(moduleOrdinal);
955
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
+ }
956
979
  }
957
980
  // fallthrough
958
981
  case ENTER_MODULE: {
@@ -1009,6 +1032,19 @@ const visitModules = (
1009
1032
  }
1010
1033
  };
1011
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
+
1012
1048
  /**
1013
1049
  * Calculate resulting available modules.
1014
1050
  * @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
@@ -1019,18 +1055,9 @@ const visitModules = (
1019
1055
  return chunkGroupInfo.resultingAvailableModules;
1020
1056
  }
1021
1057
 
1022
- let resultingAvailableModules = /** @type {bigint} */ (
1023
- chunkGroupInfo.minAvailableModules
1024
- );
1025
-
1026
- // add the modules from the chunk group to the set
1027
- for (const chunk of chunkGroupInfo.chunkGroup.chunks) {
1028
- const mask = /** @type {bigint} */ (maskByChunk.get(chunk));
1029
- resultingAvailableModules |= mask;
1030
- }
1031
-
1032
1058
  return (chunkGroupInfo.resultingAvailableModules =
1033
- resultingAvailableModules);
1059
+ /** @type {bigint} */ (chunkGroupInfo.minAvailableModules) |
1060
+ getChunkGroupMask(chunkGroupInfo));
1034
1061
  };
1035
1062
 
1036
1063
  const processConnectQueue = () => {
@@ -1048,13 +1075,30 @@ const visitModules = (
1048
1075
  // 2. Calculate resulting available modules
1049
1076
  const resultingAvailableModules =
1050
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;
1051
1091
 
1052
1092
  const runtime = chunkGroupInfo.runtime;
1053
1093
 
1054
1094
  // 3. Update chunk group info
1055
- 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);
1056
1100
  target.availableModulesToBeMerged.push(resultingAvailableModules);
1057
- chunkGroupsForMerging.add([target, processBlock]);
1101
+ chunkGroupsForMerging.add([target, queueItem]);
1058
1102
  const oldRuntime = target.runtime;
1059
1103
  const newRuntime = mergeRuntime(oldRuntime, runtime);
1060
1104
  if (oldRuntime !== newRuntime) {
@@ -1072,7 +1116,7 @@ const visitModules = (
1072
1116
  statProcessedChunkGroupsForMerging += chunkGroupsForMerging.size;
1073
1117
 
1074
1118
  // Execute the merge
1075
- for (const [info, processBlock] of chunkGroupsForMerging) {
1119
+ for (const [info, queueItem] of chunkGroupsForMerging) {
1076
1120
  const availableModulesToBeMerged = info.availableModulesToBeMerged;
1077
1121
  const cachedMinAvailableModules = info.minAvailableModules;
1078
1122
  let minAvailableModules = cachedMinAvailableModules;
@@ -1099,25 +1143,17 @@ const visitModules = (
1099
1143
  outdatedChunkGroupInfo.add(info);
1100
1144
  }
1101
1145
 
1102
- if (processBlock) {
1103
- let blocks = blocksByChunkGroups.get(info);
1104
- if (!blocks) {
1105
- blocksByChunkGroups.set(info, (blocks = new Set()));
1106
- }
1107
-
1108
- // Whether to walk block depends on minAvailableModules and input block.
1109
- // We can treat creating chunk group as a function with 2 input, entry block and minAvailableModules
1110
- // If input is the same, we can skip re-walk
1111
- let needWalkBlock = !info.initialized || changed;
1112
- if (!blocks.has(processBlock.block)) {
1113
- needWalkBlock = true;
1114
- 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);
1115
1151
  }
1116
1152
 
1117
- if (needWalkBlock) {
1118
- info.initialized = true;
1119
- queueDelayed.push(processBlock);
1120
- }
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);
1121
1157
  }
1122
1158
  }
1123
1159
  chunkGroupsForMerging.clear();
@@ -1152,6 +1188,47 @@ const visitModules = (
1152
1188
  chunkGroupsForCombining.clear();
1153
1189
  };
1154
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
+
1155
1232
  const processOutdatedChunkGroupInfo = () => {
1156
1233
  statChunkGroupInfoUpdated += outdatedChunkGroupInfo.size;
1157
1234
  // Revisit skipped elements
@@ -1209,21 +1286,21 @@ const visitModules = (
1209
1286
  }
1210
1287
  }
1211
1288
 
1212
- // 2. Reconsider children chunk groups
1213
- if (info.children !== undefined) {
1289
+ // 3. Reconsider children chunk groups
1290
+ if (info.children !== undefined && info.children.size > 0) {
1214
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
+ }
1215
1298
  for (const cgi of info.children) {
1216
- let connectList = queueConnect.get(info);
1217
- if (connectList === undefined) {
1218
- /** @type {ConnectList} */
1219
- connectList = new Set();
1220
- queueConnect.set(info, connectList);
1221
- }
1222
1299
  connectList.add([cgi, null]);
1223
1300
  }
1224
1301
  }
1225
1302
 
1226
- // 3. Reconsider chunk groups for combining
1303
+ // 4. Reconsider chunk groups for combining
1227
1304
  if (info.availableChildren !== undefined) {
1228
1305
  for (const cgi of info.availableChildren) {
1229
1306
  chunkGroupsForCombining.add(cgi);
@@ -1236,7 +1313,12 @@ const visitModules = (
1236
1313
 
1237
1314
  // Iterative traversal of the Module graph
1238
1315
  // Recursive would be simpler to write but could result in Stack Overflows
1239
- while (queue.length || queueConnect.size) {
1316
+ while (
1317
+ queue.length ||
1318
+ queueConnect.size ||
1319
+ outdatedChunkGroupInfo.size ||
1320
+ chunkGroupsForCombining.size
1321
+ ) {
1240
1322
  logger.time("visitModules: visiting");
1241
1323
  processQueue();
1242
1324
  logger.timeAggregateEnd("visitModules: prepare");
@@ -1274,12 +1356,25 @@ const visitModules = (
1274
1356
  queue = queueDelayed.reverse();
1275
1357
  queueDelayed = tempQueue;
1276
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
+ }
1277
1372
  }
1278
1373
 
1279
1374
  for (const info of outdatedOrderIndexChunkGroups) {
1280
1375
  const { chunkGroup, runtime } = info;
1281
1376
 
1282
- const blocks = blocksByChunkGroups.get(info);
1377
+ const blocks = blocksByChunkGroupInfo.get(info);
1283
1378
 
1284
1379
  if (!blocks) {
1285
1380
  continue;
@@ -5,6 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const { first } = require("../util/SetHelpers");
9
+
8
10
  const NO_MARKER = 0;
9
11
  const IN_PROGRESS_MARKER = 1;
10
12
  const DONE_MARKER = 2;
@@ -13,16 +15,16 @@ const CANDIDATE_MARKER = 3;
13
15
  /**
14
16
  * Defines the nodes type used by this module.
15
17
  * @template T
16
- * @typedef {Set<Node<T>>} Nodes
18
+ * @typedef {Set<GraphNode<T>>} Nodes
17
19
  */
18
20
 
19
21
  /**
20
22
  * Represents the node runtime component.
21
23
  * @template T
22
24
  */
23
- class Node {
25
+ class GraphNode {
24
26
  /**
25
- * Creates an instance of Node.
27
+ * Creates an instance of GraphNode.
26
28
  * @param {T} item the value of the node
27
29
  */
28
30
  constructor(item) {
@@ -56,8 +58,8 @@ class SCC {
56
58
  * Defines the stack entry type used by this module.
57
59
  * @template T
58
60
  * @typedef {object} StackEntry
59
- * @property {Node<T>} node
60
- * @property {Node<T>[]} openEdges
61
+ * @property {GraphNode<T>} node
62
+ * @property {GraphNode<T>[]} openEdges
61
63
  */
62
64
 
63
65
  /**
@@ -68,10 +70,10 @@ class SCC {
68
70
  * @returns {Iterable<T>} graph roots of the items
69
71
  */
70
72
  module.exports = (items, getDependencies) => {
71
- /** @type {Map<T, Node<T>>} */
73
+ /** @type {Map<T, GraphNode<T>>} */
72
74
  const itemToNode = new Map();
73
75
  for (const item of items) {
74
- const node = new Node(item);
76
+ const node = new GraphNode(item);
75
77
  itemToNode.set(item, node);
76
78
  }
77
79
 
@@ -112,7 +114,7 @@ module.exports = (items, getDependencies) => {
112
114
  // Process one unvisited outgoing edge if available
113
115
  if (topOfStack.openEdges.length > 0) {
114
116
  const dependency =
115
- /** @type {Node<T>} */
117
+ /** @type {GraphNode<T>} */
116
118
  (topOfStack.openEdges.pop());
117
119
  const depSCC = dependency.scc;
118
120
  switch (depSCC.marker) {
@@ -183,6 +185,10 @@ module.exports = (items, getDependencies) => {
183
185
  // For each root SCC, we select node with the most incoming edges
184
186
  // from within the same SCC
185
187
  for (const scc of rootSCCs) {
188
+ if (scc.nodes.size === 1) {
189
+ rootNodes.add(/** @type {GraphNode<T>} */ (first(scc.nodes)).item);
190
+ continue;
191
+ }
186
192
  let max = 0;
187
193
  /** @type {Nodes<T>} */
188
194
  const nodes = new Set(scc.nodes);
@@ -0,0 +1,23 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ /** @import Dependency, { DependencyKinds } from "./Dependency" */
9
+
10
+ /**
11
+ * Returns whether a dependency is of the given kind; use it wherever a plugin's dependency can reach.
12
+ * A dependency extending another webpack copy's `Dependency` has no `is()` and is of no kind.
13
+ * @template {keyof DependencyKinds} K
14
+ * @param {Dependency} dependency a dependency
15
+ * @param {K} kind a dependency kind
16
+ * @returns {dependency is DependencyKinds[K]} true when the dependency is of that kind
17
+ */
18
+ const isDependencyKind = (dependency, kind) =>
19
+ // TODO in the next major release: remove, require plugin dependencies to extend the current
20
+ // `Dependency` and call `dependency.is(kind)` directly
21
+ typeof dependency.is === "function" && dependency.is(kind);
22
+
23
+ module.exports = isDependencyKind;
@@ -56,14 +56,14 @@
56
56
  * @property {Record<ModuleId, AcceptCallback>} _acceptedDependencies accept callbacks by dependency id
57
57
  * @property {Record<ModuleId, AcceptErrorHandler | undefined>} _acceptedErrorHandlers error handlers by dependency id
58
58
  * @property {Record<ModuleId, boolean>} _declinedDependencies declined dependency ids
59
- * @property {boolean | EXPECTED_FUNCTION} _selfAccepted true or the self-accept error handler
59
+ * @property {boolean | AcceptErrorHandler} _selfAccepted true or the self-accept error handler
60
60
  * @property {boolean} _selfDeclined module declined itself
61
61
  * @property {boolean} _selfInvalidated module invalidated itself
62
62
  * @property {DisposeHandler[]} _disposeHandlers registered dispose handlers
63
63
  * @property {boolean} _main module is the entry of the update
64
64
  * @property {() => void} _requireSelf re-require the module on apply
65
65
  * @property {boolean} active module is not disposed
66
- * @property {(dep?: ModuleId | ModuleId[] | AcceptCallback, callback?: AcceptCallback, errorHandler?: AcceptErrorHandler) => void} accept accept updates
66
+ * @property {(dep?: ModuleId | ModuleId[] | AcceptErrorHandler, callback?: AcceptCallback, errorHandler?: AcceptErrorHandler) => void} accept accept updates
67
67
  * @property {(dep?: ModuleId | ModuleId[]) => void} decline decline updates
68
68
  * @property {(callback: DisposeHandler) => void} dispose add a dispose handler
69
69
  * @property {(callback: DisposeHandler) => void} addDisposeHandler add a dispose handler