@depup/webpack 5.105.4-depup.37

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 (709) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +38 -0
  3. package/bin/webpack.js +196 -0
  4. package/hot/dev-server.js +90 -0
  5. package/hot/emitter-event-target.js +7 -0
  6. package/hot/emitter.js +2 -0
  7. package/hot/lazy-compilation-node.js +66 -0
  8. package/hot/lazy-compilation-universal.js +18 -0
  9. package/hot/lazy-compilation-web.js +93 -0
  10. package/hot/load-http.js +7 -0
  11. package/hot/log-apply-result.js +49 -0
  12. package/hot/log.js +78 -0
  13. package/hot/only-dev-server.js +118 -0
  14. package/hot/poll.js +41 -0
  15. package/hot/signal.js +66 -0
  16. package/lib/APIPlugin.js +392 -0
  17. package/lib/AbstractMethodError.js +56 -0
  18. package/lib/AsyncDependenciesBlock.js +128 -0
  19. package/lib/AsyncDependencyToInitialChunkError.js +34 -0
  20. package/lib/AutomaticPrefetchPlugin.js +66 -0
  21. package/lib/BannerPlugin.js +138 -0
  22. package/lib/Cache.js +168 -0
  23. package/lib/CacheFacade.js +349 -0
  24. package/lib/CaseSensitiveModulesWarning.js +72 -0
  25. package/lib/Chunk.js +899 -0
  26. package/lib/ChunkGraph.js +1968 -0
  27. package/lib/ChunkGroup.js +615 -0
  28. package/lib/ChunkRenderError.js +38 -0
  29. package/lib/ChunkTemplate.js +181 -0
  30. package/lib/CleanPlugin.js +495 -0
  31. package/lib/CodeGenerationError.js +35 -0
  32. package/lib/CodeGenerationResults.js +167 -0
  33. package/lib/CommentCompilationWarning.js +33 -0
  34. package/lib/CompatibilityPlugin.js +240 -0
  35. package/lib/Compilation.js +5876 -0
  36. package/lib/Compiler.js +1413 -0
  37. package/lib/ConcatenationScope.js +181 -0
  38. package/lib/ConcurrentCompilationError.js +18 -0
  39. package/lib/ConditionalInitFragment.js +120 -0
  40. package/lib/ConstPlugin.js +567 -0
  41. package/lib/ContextExclusionPlugin.js +33 -0
  42. package/lib/ContextModule.js +1411 -0
  43. package/lib/ContextModuleFactory.js +514 -0
  44. package/lib/ContextReplacementPlugin.js +227 -0
  45. package/lib/CssModule.js +179 -0
  46. package/lib/DefinePlugin.js +878 -0
  47. package/lib/DelegatedModule.js +279 -0
  48. package/lib/DelegatedModuleFactoryPlugin.js +116 -0
  49. package/lib/DelegatedPlugin.js +49 -0
  50. package/lib/DependenciesBlock.js +120 -0
  51. package/lib/Dependency.js +390 -0
  52. package/lib/DependencyTemplate.js +71 -0
  53. package/lib/DependencyTemplates.js +67 -0
  54. package/lib/DllEntryPlugin.js +76 -0
  55. package/lib/DllModule.js +175 -0
  56. package/lib/DllModuleFactory.js +38 -0
  57. package/lib/DllPlugin.js +73 -0
  58. package/lib/DllReferencePlugin.js +189 -0
  59. package/lib/DotenvPlugin.js +468 -0
  60. package/lib/DynamicEntryPlugin.js +93 -0
  61. package/lib/EntryOptionPlugin.js +98 -0
  62. package/lib/EntryPlugin.js +72 -0
  63. package/lib/Entrypoint.js +120 -0
  64. package/lib/EnvironmentNotSupportAsyncWarning.js +51 -0
  65. package/lib/EnvironmentPlugin.js +74 -0
  66. package/lib/ErrorHelpers.js +100 -0
  67. package/lib/EvalDevToolModulePlugin.js +135 -0
  68. package/lib/EvalSourceMapDevToolPlugin.js +252 -0
  69. package/lib/ExportsInfo.js +1663 -0
  70. package/lib/ExportsInfoApiPlugin.js +87 -0
  71. package/lib/ExternalModule.js +1169 -0
  72. package/lib/ExternalModuleFactoryPlugin.js +370 -0
  73. package/lib/ExternalsPlugin.js +93 -0
  74. package/lib/FalseIIFEUmdWarning.js +20 -0
  75. package/lib/FileSystemInfo.js +4131 -0
  76. package/lib/FlagAllModulesAsUsedPlugin.js +55 -0
  77. package/lib/FlagDependencyExportsPlugin.js +437 -0
  78. package/lib/FlagDependencyUsagePlugin.js +348 -0
  79. package/lib/FlagEntryExportAsUsedPlugin.js +56 -0
  80. package/lib/Generator.js +188 -0
  81. package/lib/GraphHelpers.js +46 -0
  82. package/lib/HarmonyLinkingError.js +17 -0
  83. package/lib/HookWebpackError.js +121 -0
  84. package/lib/HotModuleReplacementPlugin.js +930 -0
  85. package/lib/HotUpdateChunk.js +16 -0
  86. package/lib/IgnoreErrorModuleFactory.js +39 -0
  87. package/lib/IgnorePlugin.js +105 -0
  88. package/lib/IgnoreWarningsPlugin.js +41 -0
  89. package/lib/InitFragment.js +204 -0
  90. package/lib/InvalidDependenciesModuleWarning.js +44 -0
  91. package/lib/JavascriptMetaInfoPlugin.js +78 -0
  92. package/lib/LibManifestPlugin.js +144 -0
  93. package/lib/LibraryTemplatePlugin.js +48 -0
  94. package/lib/LoaderOptionsPlugin.js +81 -0
  95. package/lib/LoaderTargetPlugin.js +39 -0
  96. package/lib/MainTemplate.js +371 -0
  97. package/lib/ManifestPlugin.js +242 -0
  98. package/lib/Module.js +1319 -0
  99. package/lib/ModuleBuildError.js +83 -0
  100. package/lib/ModuleDependencyError.js +44 -0
  101. package/lib/ModuleDependencyWarning.js +49 -0
  102. package/lib/ModuleError.js +69 -0
  103. package/lib/ModuleFactory.js +57 -0
  104. package/lib/ModuleFilenameHelpers.js +388 -0
  105. package/lib/ModuleGraph.js +1024 -0
  106. package/lib/ModuleGraphConnection.js +199 -0
  107. package/lib/ModuleHashingError.js +31 -0
  108. package/lib/ModuleInfoHeaderPlugin.js +318 -0
  109. package/lib/ModuleNotFoundError.js +90 -0
  110. package/lib/ModuleParseError.js +125 -0
  111. package/lib/ModuleProfile.js +108 -0
  112. package/lib/ModuleRestoreError.js +46 -0
  113. package/lib/ModuleSourceTypeConstants.js +179 -0
  114. package/lib/ModuleStoreError.js +45 -0
  115. package/lib/ModuleTemplate.js +173 -0
  116. package/lib/ModuleTypeConstants.js +190 -0
  117. package/lib/ModuleWarning.js +68 -0
  118. package/lib/MultiCompiler.js +678 -0
  119. package/lib/MultiStats.js +213 -0
  120. package/lib/MultiWatching.js +77 -0
  121. package/lib/NoEmitOnErrorsPlugin.js +30 -0
  122. package/lib/NoModeWarning.js +23 -0
  123. package/lib/NodeStuffInWebError.js +35 -0
  124. package/lib/NodeStuffPlugin.js +587 -0
  125. package/lib/NormalModule.js +1798 -0
  126. package/lib/NormalModuleFactory.js +1455 -0
  127. package/lib/NormalModuleReplacementPlugin.js +75 -0
  128. package/lib/NullFactory.js +24 -0
  129. package/lib/OptimizationStages.js +10 -0
  130. package/lib/OptionsApply.js +24 -0
  131. package/lib/Parser.js +40 -0
  132. package/lib/PlatformPlugin.js +41 -0
  133. package/lib/PrefetchPlugin.js +56 -0
  134. package/lib/ProgressPlugin.js +712 -0
  135. package/lib/ProvidePlugin.js +121 -0
  136. package/lib/RawModule.js +180 -0
  137. package/lib/RecordIdsPlugin.js +216 -0
  138. package/lib/RequestShortener.js +36 -0
  139. package/lib/RequireJsStuffPlugin.js +84 -0
  140. package/lib/ResolverFactory.js +156 -0
  141. package/lib/RuntimeGlobals.js +450 -0
  142. package/lib/RuntimeModule.js +242 -0
  143. package/lib/RuntimePlugin.js +547 -0
  144. package/lib/RuntimeTemplate.js +1288 -0
  145. package/lib/SelfModuleFactory.js +33 -0
  146. package/lib/SingleEntryPlugin.js +8 -0
  147. package/lib/SizeFormatHelpers.js +25 -0
  148. package/lib/SourceMapDevToolModuleOptionsPlugin.js +52 -0
  149. package/lib/SourceMapDevToolPlugin.js +646 -0
  150. package/lib/Stats.js +89 -0
  151. package/lib/Template.js +427 -0
  152. package/lib/TemplatedPathPlugin.js +400 -0
  153. package/lib/UnhandledSchemeError.js +34 -0
  154. package/lib/UnsupportedFeatureWarning.js +35 -0
  155. package/lib/UseStrictPlugin.js +81 -0
  156. package/lib/WarnCaseSensitiveModulesPlugin.js +64 -0
  157. package/lib/WarnDeprecatedOptionPlugin.js +60 -0
  158. package/lib/WarnNoModeSetPlugin.js +27 -0
  159. package/lib/WatchIgnorePlugin.js +155 -0
  160. package/lib/Watching.js +531 -0
  161. package/lib/WebpackError.js +81 -0
  162. package/lib/WebpackIsIncludedPlugin.js +93 -0
  163. package/lib/WebpackOptionsApply.js +941 -0
  164. package/lib/WebpackOptionsDefaulter.js +26 -0
  165. package/lib/asset/AssetBytesGenerator.js +172 -0
  166. package/lib/asset/AssetBytesParser.js +37 -0
  167. package/lib/asset/AssetGenerator.js +816 -0
  168. package/lib/asset/AssetModulesPlugin.js +358 -0
  169. package/lib/asset/AssetParser.js +73 -0
  170. package/lib/asset/AssetSourceGenerator.js +171 -0
  171. package/lib/asset/AssetSourceParser.js +37 -0
  172. package/lib/asset/RawDataUrlModule.js +179 -0
  173. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  174. package/lib/async-modules/AwaitDependenciesInitFragment.js +90 -0
  175. package/lib/async-modules/InferAsyncModulesPlugin.js +54 -0
  176. package/lib/buildChunkGraph.js +1392 -0
  177. package/lib/cache/AddBuildDependenciesPlugin.js +32 -0
  178. package/lib/cache/AddManagedPathsPlugin.js +40 -0
  179. package/lib/cache/IdleFileCachePlugin.js +242 -0
  180. package/lib/cache/MemoryCachePlugin.js +57 -0
  181. package/lib/cache/MemoryWithGcCachePlugin.js +142 -0
  182. package/lib/cache/PackFileCacheStrategy.js +1600 -0
  183. package/lib/cache/ResolverCachePlugin.js +450 -0
  184. package/lib/cache/getLazyHashedEtag.js +91 -0
  185. package/lib/cache/mergeEtags.js +71 -0
  186. package/lib/cli.js +859 -0
  187. package/lib/config/browserslistTargetHandler.js +388 -0
  188. package/lib/config/defaults.js +2086 -0
  189. package/lib/config/normalization.js +681 -0
  190. package/lib/config/target.js +389 -0
  191. package/lib/container/ContainerEntryDependency.js +50 -0
  192. package/lib/container/ContainerEntryModule.js +303 -0
  193. package/lib/container/ContainerEntryModuleFactory.js +27 -0
  194. package/lib/container/ContainerExposedDependency.js +62 -0
  195. package/lib/container/ContainerPlugin.js +118 -0
  196. package/lib/container/ContainerReferencePlugin.js +139 -0
  197. package/lib/container/FallbackDependency.js +66 -0
  198. package/lib/container/FallbackItemDependency.js +34 -0
  199. package/lib/container/FallbackModule.js +193 -0
  200. package/lib/container/FallbackModuleFactory.js +27 -0
  201. package/lib/container/HoistContainerReferencesPlugin.js +256 -0
  202. package/lib/container/ModuleFederationPlugin.js +131 -0
  203. package/lib/container/RemoteModule.js +225 -0
  204. package/lib/container/RemoteRuntimeModule.js +144 -0
  205. package/lib/container/RemoteToExternalDependency.js +33 -0
  206. package/lib/container/options.js +105 -0
  207. package/lib/css/CssGenerator.js +587 -0
  208. package/lib/css/CssLoadingRuntimeModule.js +513 -0
  209. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  210. package/lib/css/CssModulesPlugin.js +939 -0
  211. package/lib/css/CssParser.js +2621 -0
  212. package/lib/css/walkCssTokens.js +1740 -0
  213. package/lib/debug/ProfilingPlugin.js +589 -0
  214. package/lib/dependencies/AMDDefineDependency.js +267 -0
  215. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +504 -0
  216. package/lib/dependencies/AMDPlugin.js +243 -0
  217. package/lib/dependencies/AMDRequireArrayDependency.js +124 -0
  218. package/lib/dependencies/AMDRequireContextDependency.js +69 -0
  219. package/lib/dependencies/AMDRequireDependenciesBlock.js +28 -0
  220. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +425 -0
  221. package/lib/dependencies/AMDRequireDependency.js +189 -0
  222. package/lib/dependencies/AMDRequireItemDependency.js +41 -0
  223. package/lib/dependencies/AMDRuntimeModules.js +50 -0
  224. package/lib/dependencies/CachedConstDependency.js +135 -0
  225. package/lib/dependencies/CommonJsDependencyHelpers.js +65 -0
  226. package/lib/dependencies/CommonJsExportRequireDependency.js +416 -0
  227. package/lib/dependencies/CommonJsExportsDependency.js +184 -0
  228. package/lib/dependencies/CommonJsExportsParserPlugin.js +425 -0
  229. package/lib/dependencies/CommonJsFullRequireDependency.js +162 -0
  230. package/lib/dependencies/CommonJsImportsParserPlugin.js +611 -0
  231. package/lib/dependencies/CommonJsPlugin.js +316 -0
  232. package/lib/dependencies/CommonJsRequireContextDependency.js +73 -0
  233. package/lib/dependencies/CommonJsRequireDependency.js +42 -0
  234. package/lib/dependencies/CommonJsSelfReferenceDependency.js +156 -0
  235. package/lib/dependencies/ConstDependency.js +118 -0
  236. package/lib/dependencies/ContextDependency.js +183 -0
  237. package/lib/dependencies/ContextDependencyHelpers.js +277 -0
  238. package/lib/dependencies/ContextDependencyTemplateAsId.js +63 -0
  239. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +62 -0
  240. package/lib/dependencies/ContextElementDependency.js +147 -0
  241. package/lib/dependencies/CreateRequireParserPlugin.js +356 -0
  242. package/lib/dependencies/CreateScriptUrlDependency.js +75 -0
  243. package/lib/dependencies/CriticalDependencyWarning.js +29 -0
  244. package/lib/dependencies/CssIcssExportDependency.js +539 -0
  245. package/lib/dependencies/CssIcssImportDependency.js +183 -0
  246. package/lib/dependencies/CssIcssSymbolDependency.js +131 -0
  247. package/lib/dependencies/CssImportDependency.js +120 -0
  248. package/lib/dependencies/CssUrlDependency.js +189 -0
  249. package/lib/dependencies/DelegatedSourceDependency.js +33 -0
  250. package/lib/dependencies/DllEntryDependency.js +61 -0
  251. package/lib/dependencies/DynamicExports.js +73 -0
  252. package/lib/dependencies/EntryDependency.js +30 -0
  253. package/lib/dependencies/ExportsInfoDependency.js +161 -0
  254. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  255. package/lib/dependencies/ExternalModuleInitFragment.js +137 -0
  256. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +87 -0
  257. package/lib/dependencies/HarmonyAcceptDependency.js +237 -0
  258. package/lib/dependencies/HarmonyAcceptImportDependency.js +37 -0
  259. package/lib/dependencies/HarmonyCompatibilityDependency.js +91 -0
  260. package/lib/dependencies/HarmonyDetectionParserPlugin.js +103 -0
  261. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +165 -0
  262. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +254 -0
  263. package/lib/dependencies/HarmonyExportExpressionDependency.js +211 -0
  264. package/lib/dependencies/HarmonyExportHeaderDependency.js +78 -0
  265. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +1494 -0
  266. package/lib/dependencies/HarmonyExportInitFragment.js +191 -0
  267. package/lib/dependencies/HarmonyExportSpecifierDependency.js +127 -0
  268. package/lib/dependencies/HarmonyExports.js +46 -0
  269. package/lib/dependencies/HarmonyImportDependency.js +459 -0
  270. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +576 -0
  271. package/lib/dependencies/HarmonyImportSideEffectDependency.js +91 -0
  272. package/lib/dependencies/HarmonyImportSpecifierDependency.js +514 -0
  273. package/lib/dependencies/HarmonyModulesPlugin.js +158 -0
  274. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +39 -0
  275. package/lib/dependencies/ImportContextDependency.js +81 -0
  276. package/lib/dependencies/ImportDependency.js +158 -0
  277. package/lib/dependencies/ImportEagerDependency.js +76 -0
  278. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  279. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +312 -0
  280. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  281. package/lib/dependencies/ImportMetaHotAcceptDependency.js +41 -0
  282. package/lib/dependencies/ImportMetaHotDeclineDependency.js +42 -0
  283. package/lib/dependencies/ImportMetaPlugin.js +447 -0
  284. package/lib/dependencies/ImportParserPlugin.js +602 -0
  285. package/lib/dependencies/ImportPhase.js +125 -0
  286. package/lib/dependencies/ImportPlugin.js +98 -0
  287. package/lib/dependencies/ImportWeakDependency.js +74 -0
  288. package/lib/dependencies/JsonExportsDependency.js +137 -0
  289. package/lib/dependencies/LoaderDependency.js +38 -0
  290. package/lib/dependencies/LoaderImportDependency.js +39 -0
  291. package/lib/dependencies/LoaderPlugin.js +294 -0
  292. package/lib/dependencies/LocalModule.js +60 -0
  293. package/lib/dependencies/LocalModuleDependency.js +84 -0
  294. package/lib/dependencies/LocalModulesHelpers.js +68 -0
  295. package/lib/dependencies/ModuleDecoratorDependency.js +136 -0
  296. package/lib/dependencies/ModuleDependency.js +100 -0
  297. package/lib/dependencies/ModuleDependencyTemplateAsId.js +35 -0
  298. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +39 -0
  299. package/lib/dependencies/ModuleHotAcceptDependency.js +41 -0
  300. package/lib/dependencies/ModuleHotDeclineDependency.js +42 -0
  301. package/lib/dependencies/ModuleInitFragmentDependency.js +87 -0
  302. package/lib/dependencies/NullDependency.js +42 -0
  303. package/lib/dependencies/PrefetchDependency.js +27 -0
  304. package/lib/dependencies/ProvidedDependency.js +156 -0
  305. package/lib/dependencies/PureExpressionDependency.js +161 -0
  306. package/lib/dependencies/RequireContextDependency.js +38 -0
  307. package/lib/dependencies/RequireContextDependencyParserPlugin.js +69 -0
  308. package/lib/dependencies/RequireContextPlugin.js +167 -0
  309. package/lib/dependencies/RequireEnsureDependenciesBlock.js +29 -0
  310. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +145 -0
  311. package/lib/dependencies/RequireEnsureDependency.js +115 -0
  312. package/lib/dependencies/RequireEnsureItemDependency.js +36 -0
  313. package/lib/dependencies/RequireEnsurePlugin.js +86 -0
  314. package/lib/dependencies/RequireHeaderDependency.js +70 -0
  315. package/lib/dependencies/RequireIncludeDependency.js +79 -0
  316. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +100 -0
  317. package/lib/dependencies/RequireIncludePlugin.js +63 -0
  318. package/lib/dependencies/RequireResolveContextDependency.js +67 -0
  319. package/lib/dependencies/RequireResolveDependency.js +58 -0
  320. package/lib/dependencies/RequireResolveHeaderDependency.js +81 -0
  321. package/lib/dependencies/RuntimeRequirementsDependency.js +85 -0
  322. package/lib/dependencies/StaticExportsDependency.js +72 -0
  323. package/lib/dependencies/SystemPlugin.js +168 -0
  324. package/lib/dependencies/SystemRuntimeModule.js +35 -0
  325. package/lib/dependencies/URLContextDependency.js +65 -0
  326. package/lib/dependencies/URLDependency.js +165 -0
  327. package/lib/dependencies/URLPlugin.js +67 -0
  328. package/lib/dependencies/UnsupportedDependency.js +82 -0
  329. package/lib/dependencies/WebAssemblyExportImportedDependency.js +93 -0
  330. package/lib/dependencies/WebAssemblyImportDependency.js +108 -0
  331. package/lib/dependencies/WebpackIsIncludedDependency.js +84 -0
  332. package/lib/dependencies/WorkerDependency.js +141 -0
  333. package/lib/dependencies/WorkerPlugin.js +565 -0
  334. package/lib/dependencies/getFunctionExpression.js +66 -0
  335. package/lib/dependencies/processExportInfo.js +67 -0
  336. package/lib/electron/ElectronTargetPlugin.js +71 -0
  337. package/lib/errors/BuildCycleError.js +30 -0
  338. package/lib/esm/ExportWebpackRequireRuntimeModule.js +30 -0
  339. package/lib/esm/ModuleChunkFormatPlugin.js +273 -0
  340. package/lib/esm/ModuleChunkLoadingPlugin.js +143 -0
  341. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +426 -0
  342. package/lib/formatLocation.js +67 -0
  343. package/lib/hmr/HotModuleReplacement.runtime.js +419 -0
  344. package/lib/hmr/HotModuleReplacementRuntimeModule.js +42 -0
  345. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +471 -0
  346. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  347. package/lib/hmr/LazyCompilationPlugin.js +473 -0
  348. package/lib/hmr/lazyCompilationBackend.js +167 -0
  349. package/lib/ids/ChunkModuleIdRangePlugin.js +94 -0
  350. package/lib/ids/DeterministicChunkIdsPlugin.js +73 -0
  351. package/lib/ids/DeterministicModuleIdsPlugin.js +98 -0
  352. package/lib/ids/HashedModuleIdsPlugin.js +85 -0
  353. package/lib/ids/IdHelpers.js +492 -0
  354. package/lib/ids/NamedChunkIdsPlugin.js +92 -0
  355. package/lib/ids/NamedModuleIdsPlugin.js +68 -0
  356. package/lib/ids/NaturalChunkIdsPlugin.js +35 -0
  357. package/lib/ids/NaturalModuleIdsPlugin.js +40 -0
  358. package/lib/ids/OccurrenceChunkIdsPlugin.js +86 -0
  359. package/lib/ids/OccurrenceModuleIdsPlugin.js +168 -0
  360. package/lib/ids/SyncModuleIdsPlugin.js +161 -0
  361. package/lib/index.js +681 -0
  362. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +153 -0
  363. package/lib/javascript/BasicEvaluatedExpression.js +603 -0
  364. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  365. package/lib/javascript/ChunkHelpers.js +45 -0
  366. package/lib/javascript/CommonJsChunkFormatPlugin.js +148 -0
  367. package/lib/javascript/EnableChunkLoadingPlugin.js +127 -0
  368. package/lib/javascript/JavascriptGenerator.js +277 -0
  369. package/lib/javascript/JavascriptModulesPlugin.js +1905 -0
  370. package/lib/javascript/JavascriptParser.js +5476 -0
  371. package/lib/javascript/JavascriptParserHelpers.js +129 -0
  372. package/lib/javascript/StartupHelpers.js +178 -0
  373. package/lib/json/JsonData.js +74 -0
  374. package/lib/json/JsonGenerator.js +234 -0
  375. package/lib/json/JsonModulesPlugin.js +66 -0
  376. package/lib/json/JsonParser.js +93 -0
  377. package/lib/library/AbstractLibraryPlugin.js +339 -0
  378. package/lib/library/AmdLibraryPlugin.js +181 -0
  379. package/lib/library/AssignLibraryPlugin.js +445 -0
  380. package/lib/library/EnableLibraryPlugin.js +306 -0
  381. package/lib/library/ExportPropertyLibraryPlugin.js +116 -0
  382. package/lib/library/JsonpLibraryPlugin.js +92 -0
  383. package/lib/library/ModuleLibraryPlugin.js +438 -0
  384. package/lib/library/SystemLibraryPlugin.js +256 -0
  385. package/lib/library/UmdLibraryPlugin.js +355 -0
  386. package/lib/logging/Logger.js +223 -0
  387. package/lib/logging/createConsoleLogger.js +217 -0
  388. package/lib/logging/runtime.js +45 -0
  389. package/lib/logging/truncateArgs.js +83 -0
  390. package/lib/node/CommonJsChunkLoadingPlugin.js +120 -0
  391. package/lib/node/NodeEnvironmentPlugin.js +73 -0
  392. package/lib/node/NodeSourcePlugin.js +19 -0
  393. package/lib/node/NodeTargetPlugin.js +102 -0
  394. package/lib/node/NodeTemplatePlugin.js +42 -0
  395. package/lib/node/NodeWatchFileSystem.js +198 -0
  396. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +286 -0
  397. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +123 -0
  398. package/lib/node/ReadFileCompileWasmPlugin.js +127 -0
  399. package/lib/node/RequireChunkLoadingRuntimeModule.js +239 -0
  400. package/lib/node/nodeConsole.js +185 -0
  401. package/lib/optimize/AggressiveMergingPlugin.js +98 -0
  402. package/lib/optimize/AggressiveSplittingPlugin.js +352 -0
  403. package/lib/optimize/ConcatenatedModule.js +2290 -0
  404. package/lib/optimize/EnsureChunkConditionsPlugin.js +88 -0
  405. package/lib/optimize/FlagIncludedChunksPlugin.js +137 -0
  406. package/lib/optimize/InnerGraph.js +368 -0
  407. package/lib/optimize/InnerGraphPlugin.js +455 -0
  408. package/lib/optimize/LimitChunkCountPlugin.js +302 -0
  409. package/lib/optimize/MangleExportsPlugin.js +194 -0
  410. package/lib/optimize/MergeDuplicateChunksPlugin.js +138 -0
  411. package/lib/optimize/MinChunkSizePlugin.js +121 -0
  412. package/lib/optimize/MinMaxSizeWarning.js +35 -0
  413. package/lib/optimize/ModuleConcatenationPlugin.js +971 -0
  414. package/lib/optimize/RealContentHashPlugin.js +488 -0
  415. package/lib/optimize/RemoveEmptyChunksPlugin.js +60 -0
  416. package/lib/optimize/RemoveParentModulesPlugin.js +216 -0
  417. package/lib/optimize/RuntimeChunkPlugin.js +52 -0
  418. package/lib/optimize/SideEffectsFlagPlugin.js +417 -0
  419. package/lib/optimize/SplitChunksPlugin.js +1836 -0
  420. package/lib/performance/AssetsOverSizeLimitWarning.js +37 -0
  421. package/lib/performance/EntrypointsOverSizeLimitWarning.js +40 -0
  422. package/lib/performance/NoAsyncChunksWarning.js +21 -0
  423. package/lib/performance/SizeLimitsPlugin.js +183 -0
  424. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +46 -0
  425. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +95 -0
  426. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +56 -0
  427. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +52 -0
  428. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +46 -0
  429. package/lib/rules/BasicEffectRulePlugin.js +56 -0
  430. package/lib/rules/BasicMatcherRulePlugin.js +68 -0
  431. package/lib/rules/ObjectMatcherRulePlugin.js +79 -0
  432. package/lib/rules/RuleSetCompiler.js +447 -0
  433. package/lib/rules/UseEffectRulePlugin.js +236 -0
  434. package/lib/runtime/AsyncModuleRuntimeModule.js +199 -0
  435. package/lib/runtime/AutoPublicPathRuntimeModule.js +90 -0
  436. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  437. package/lib/runtime/ChunkNameRuntimeModule.js +28 -0
  438. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +40 -0
  439. package/lib/runtime/CompatRuntimeModule.js +83 -0
  440. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +69 -0
  441. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  442. package/lib/runtime/CreateScriptUrlRuntimeModule.js +38 -0
  443. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +42 -0
  444. package/lib/runtime/EnsureChunkRuntimeModule.js +69 -0
  445. package/lib/runtime/GetChunkFilenameRuntimeModule.js +299 -0
  446. package/lib/runtime/GetFullHashRuntimeModule.js +31 -0
  447. package/lib/runtime/GetMainFilenameRuntimeModule.js +49 -0
  448. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +99 -0
  449. package/lib/runtime/GlobalRuntimeModule.js +47 -0
  450. package/lib/runtime/HasOwnPropertyRuntimeModule.js +35 -0
  451. package/lib/runtime/HelperRuntimeModule.js +18 -0
  452. package/lib/runtime/LoadScriptRuntimeModule.js +174 -0
  453. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +232 -0
  454. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +39 -0
  455. package/lib/runtime/NonceRuntimeModule.js +24 -0
  456. package/lib/runtime/OnChunksLoadedRuntimeModule.js +78 -0
  457. package/lib/runtime/PublicPathRuntimeModule.js +38 -0
  458. package/lib/runtime/RelativeUrlRuntimeModule.js +44 -0
  459. package/lib/runtime/RuntimeIdRuntimeModule.js +33 -0
  460. package/lib/runtime/StartupChunkDependenciesPlugin.js +88 -0
  461. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +77 -0
  462. package/lib/runtime/StartupEntrypointRuntimeModule.js +54 -0
  463. package/lib/runtime/SystemContextRuntimeModule.js +23 -0
  464. package/lib/runtime/ToBinaryRuntimeModule.js +72 -0
  465. package/lib/schemes/DataUriPlugin.js +47 -0
  466. package/lib/schemes/FileUriPlugin.js +54 -0
  467. package/lib/schemes/HttpUriPlugin.js +1410 -0
  468. package/lib/schemes/VirtualUrlPlugin.js +248 -0
  469. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  470. package/lib/serialization/ArraySerializer.js +38 -0
  471. package/lib/serialization/BinaryMiddleware.js +1164 -0
  472. package/lib/serialization/DateObjectSerializer.js +28 -0
  473. package/lib/serialization/ErrorObjectSerializer.js +49 -0
  474. package/lib/serialization/FileMiddleware.js +766 -0
  475. package/lib/serialization/MapObjectSerializer.js +48 -0
  476. package/lib/serialization/NullPrototypeObjectSerializer.js +53 -0
  477. package/lib/serialization/ObjectMiddleware.js +877 -0
  478. package/lib/serialization/PlainObjectSerializer.js +119 -0
  479. package/lib/serialization/RegExpObjectSerializer.js +29 -0
  480. package/lib/serialization/Serializer.js +82 -0
  481. package/lib/serialization/SerializerMiddleware.js +226 -0
  482. package/lib/serialization/SetObjectSerializer.js +40 -0
  483. package/lib/serialization/SingleItemMiddleware.js +36 -0
  484. package/lib/serialization/types.js +13 -0
  485. package/lib/sharing/ConsumeSharedFallbackDependency.js +33 -0
  486. package/lib/sharing/ConsumeSharedModule.js +344 -0
  487. package/lib/sharing/ConsumeSharedPlugin.js +380 -0
  488. package/lib/sharing/ConsumeSharedRuntimeModule.js +358 -0
  489. package/lib/sharing/ProvideForSharedDependency.js +33 -0
  490. package/lib/sharing/ProvideSharedDependency.js +80 -0
  491. package/lib/sharing/ProvideSharedModule.js +196 -0
  492. package/lib/sharing/ProvideSharedModuleFactory.js +37 -0
  493. package/lib/sharing/ProvideSharedPlugin.js +248 -0
  494. package/lib/sharing/SharePlugin.js +91 -0
  495. package/lib/sharing/ShareRuntimeModule.js +152 -0
  496. package/lib/sharing/resolveMatchedConfigs.js +106 -0
  497. package/lib/sharing/utils.js +421 -0
  498. package/lib/stats/DefaultStatsFactoryPlugin.js +2791 -0
  499. package/lib/stats/DefaultStatsPresetPlugin.js +417 -0
  500. package/lib/stats/DefaultStatsPrinterPlugin.js +1860 -0
  501. package/lib/stats/StatsFactory.js +406 -0
  502. package/lib/stats/StatsPrinter.js +300 -0
  503. package/lib/url/URLParserPlugin.js +266 -0
  504. package/lib/util/AppendOnlyStackedSet.js +78 -0
  505. package/lib/util/ArrayHelpers.js +46 -0
  506. package/lib/util/ArrayQueue.js +104 -0
  507. package/lib/util/AsyncQueue.js +411 -0
  508. package/lib/util/Hash.js +68 -0
  509. package/lib/util/IterableHelpers.js +46 -0
  510. package/lib/util/LazyBucketSortedSet.js +272 -0
  511. package/lib/util/LazySet.js +236 -0
  512. package/lib/util/MapHelpers.js +34 -0
  513. package/lib/util/ParallelismFactorCalculator.js +70 -0
  514. package/lib/util/Queue.js +52 -0
  515. package/lib/util/Semaphore.js +51 -0
  516. package/lib/util/SetHelpers.js +94 -0
  517. package/lib/util/SortableSet.js +176 -0
  518. package/lib/util/StackedCacheMap.js +140 -0
  519. package/lib/util/StackedMap.js +164 -0
  520. package/lib/util/StringXor.js +103 -0
  521. package/lib/util/TupleQueue.js +70 -0
  522. package/lib/util/TupleSet.js +185 -0
  523. package/lib/util/URLAbsoluteSpecifier.js +86 -0
  524. package/lib/util/WeakTupleMap.js +227 -0
  525. package/lib/util/binarySearchBounds.js +136 -0
  526. package/lib/util/chainedImports.js +99 -0
  527. package/lib/util/cleverMerge.js +676 -0
  528. package/lib/util/comparators.js +645 -0
  529. package/lib/util/compileBooleanMatcher.js +313 -0
  530. package/lib/util/concatenate.js +232 -0
  531. package/lib/util/conventions.js +126 -0
  532. package/lib/util/create-schema-validation.js +41 -0
  533. package/lib/util/createHash.js +91 -0
  534. package/lib/util/dataURL.js +39 -0
  535. package/lib/util/deprecation.js +350 -0
  536. package/lib/util/deterministicGrouping.js +561 -0
  537. package/lib/util/extractSourceMap.js +318 -0
  538. package/lib/util/extractUrlAndGlobal.js +18 -0
  539. package/lib/util/findGraphRoots.js +211 -0
  540. package/lib/util/fs.js +675 -0
  541. package/lib/util/generateDebugId.js +33 -0
  542. package/lib/util/hash/BatchedHash.js +115 -0
  543. package/lib/util/hash/BulkUpdateHash.js +145 -0
  544. package/lib/util/hash/DebugHash.js +75 -0
  545. package/lib/util/hash/hash-digest.js +217 -0
  546. package/lib/util/hash/md4.js +20 -0
  547. package/lib/util/hash/wasm-hash.js +232 -0
  548. package/lib/util/hash/xxhash64.js +20 -0
  549. package/lib/util/identifier.js +471 -0
  550. package/lib/util/internalSerializables.js +222 -0
  551. package/lib/util/magicComment.js +25 -0
  552. package/lib/util/makeSerializable.js +60 -0
  553. package/lib/util/memoize.js +36 -0
  554. package/lib/util/nonNumericOnlyHash.js +22 -0
  555. package/lib/util/numberHash.js +95 -0
  556. package/lib/util/objectToMap.js +15 -0
  557. package/lib/util/processAsyncTree.js +68 -0
  558. package/lib/util/propertyAccess.js +30 -0
  559. package/lib/util/propertyName.js +76 -0
  560. package/lib/util/registerExternalSerializer.js +334 -0
  561. package/lib/util/removeBOM.js +25 -0
  562. package/lib/util/runtime.js +717 -0
  563. package/lib/util/semver.js +604 -0
  564. package/lib/util/serialization.js +153 -0
  565. package/lib/util/smartGrouping.js +221 -0
  566. package/lib/util/source.js +62 -0
  567. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  568. package/lib/validateSchema.js +177 -0
  569. package/lib/wasm/EnableWasmLoadingPlugin.js +146 -0
  570. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +154 -0
  571. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +74 -0
  572. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +212 -0
  573. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +209 -0
  574. package/lib/wasm-async/AsyncWebAssemblyParser.js +80 -0
  575. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +107 -0
  576. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +20 -0
  577. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +422 -0
  578. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +91 -0
  579. package/lib/wasm-sync/WebAssemblyGenerator.js +535 -0
  580. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +111 -0
  581. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +236 -0
  582. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +151 -0
  583. package/lib/wasm-sync/WebAssemblyParser.js +201 -0
  584. package/lib/wasm-sync/WebAssemblyUtils.js +66 -0
  585. package/lib/web/FetchCompileAsyncWasmPlugin.js +70 -0
  586. package/lib/web/FetchCompileWasmPlugin.js +86 -0
  587. package/lib/web/JsonpChunkLoadingPlugin.js +101 -0
  588. package/lib/web/JsonpChunkLoadingRuntimeModule.js +455 -0
  589. package/lib/web/JsonpTemplatePlugin.js +37 -0
  590. package/lib/webpack.js +227 -0
  591. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +110 -0
  592. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +231 -0
  593. package/lib/webworker/WebWorkerTemplatePlugin.js +26 -0
  594. package/module.d.ts +238 -0
  595. package/package.json +258 -0
  596. package/schemas/WebpackOptions.check.d.ts +7 -0
  597. package/schemas/WebpackOptions.check.js +6 -0
  598. package/schemas/WebpackOptions.json +6179 -0
  599. package/schemas/_container.json +155 -0
  600. package/schemas/_sharing.json +118 -0
  601. package/schemas/plugins/BannerPlugin.check.d.ts +7 -0
  602. package/schemas/plugins/BannerPlugin.check.js +6 -0
  603. package/schemas/plugins/BannerPlugin.json +115 -0
  604. package/schemas/plugins/DllPlugin.check.d.ts +7 -0
  605. package/schemas/plugins/DllPlugin.check.js +6 -0
  606. package/schemas/plugins/DllPlugin.json +36 -0
  607. package/schemas/plugins/DllReferencePlugin.check.d.ts +7 -0
  608. package/schemas/plugins/DllReferencePlugin.check.js +6 -0
  609. package/schemas/plugins/DllReferencePlugin.json +206 -0
  610. package/schemas/plugins/IgnorePlugin.check.d.ts +7 -0
  611. package/schemas/plugins/IgnorePlugin.check.js +6 -0
  612. package/schemas/plugins/IgnorePlugin.json +34 -0
  613. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +7 -0
  614. package/schemas/plugins/LoaderOptionsPlugin.check.js +6 -0
  615. package/schemas/plugins/LoaderOptionsPlugin.json +27 -0
  616. package/schemas/plugins/ManifestPlugin.check.d.ts +7 -0
  617. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  618. package/schemas/plugins/ManifestPlugin.json +98 -0
  619. package/schemas/plugins/ProgressPlugin.check.d.ts +7 -0
  620. package/schemas/plugins/ProgressPlugin.check.js +6 -0
  621. package/schemas/plugins/ProgressPlugin.json +65 -0
  622. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +7 -0
  623. package/schemas/plugins/SourceMapDevToolPlugin.check.js +6 -0
  624. package/schemas/plugins/SourceMapDevToolPlugin.json +168 -0
  625. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +7 -0
  626. package/schemas/plugins/WatchIgnorePlugin.check.js +6 -0
  627. package/schemas/plugins/WatchIgnorePlugin.json +25 -0
  628. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +7 -0
  629. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +6 -0
  630. package/schemas/plugins/asset/AssetGeneratorOptions.json +3 -0
  631. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +7 -0
  632. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +6 -0
  633. package/schemas/plugins/asset/AssetInlineGeneratorOptions.json +3 -0
  634. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +7 -0
  635. package/schemas/plugins/asset/AssetParserOptions.check.js +6 -0
  636. package/schemas/plugins/asset/AssetParserOptions.json +3 -0
  637. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +7 -0
  638. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +6 -0
  639. package/schemas/plugins/asset/AssetResourceGeneratorOptions.json +3 -0
  640. package/schemas/plugins/container/ContainerPlugin.check.d.ts +7 -0
  641. package/schemas/plugins/container/ContainerPlugin.check.js +6 -0
  642. package/schemas/plugins/container/ContainerPlugin.json +294 -0
  643. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +7 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +6 -0
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +132 -0
  646. package/schemas/plugins/container/ExternalsType.check.d.ts +7 -0
  647. package/schemas/plugins/container/ExternalsType.check.js +6 -0
  648. package/schemas/plugins/container/ExternalsType.json +3 -0
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +7 -0
  650. package/schemas/plugins/container/ModuleFederationPlugin.check.js +6 -0
  651. package/schemas/plugins/container/ModuleFederationPlugin.json +525 -0
  652. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  653. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  654. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  655. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  656. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  657. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  658. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  659. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  660. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  661. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  662. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  663. package/schemas/plugins/css/CssParserOptions.json +3 -0
  664. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +7 -0
  665. package/schemas/plugins/debug/ProfilingPlugin.check.js +6 -0
  666. package/schemas/plugins/debug/ProfilingPlugin.json +12 -0
  667. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  668. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  669. package/schemas/plugins/ids/HashedModuleIdsPlugin.json +57 -0
  670. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +7 -0
  671. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +6 -0
  672. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.json +11 -0
  673. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +7 -0
  674. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +6 -0
  675. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.json +11 -0
  676. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +7 -0
  677. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  678. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  679. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +7 -0
  680. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  681. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  682. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +7 -0
  683. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +6 -0
  684. package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +23 -0
  685. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +7 -0
  686. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +6 -0
  687. package/schemas/plugins/optimize/LimitChunkCountPlugin.json +21 -0
  688. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +7 -0
  689. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +6 -0
  690. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.json +11 -0
  691. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +7 -0
  692. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +6 -0
  693. package/schemas/plugins/optimize/MinChunkSizePlugin.json +20 -0
  694. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +7 -0
  695. package/schemas/plugins/schemes/HttpUriPlugin.check.js +6 -0
  696. package/schemas/plugins/schemes/HttpUriPlugin.json +74 -0
  697. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  698. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  699. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  700. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +7 -0
  701. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +6 -0
  702. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +120 -0
  703. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +7 -0
  704. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +6 -0
  705. package/schemas/plugins/sharing/ProvideSharedPlugin.json +94 -0
  706. package/schemas/plugins/sharing/SharePlugin.check.d.ts +7 -0
  707. package/schemas/plugins/sharing/SharePlugin.check.js +6 -0
  708. package/schemas/plugins/sharing/SharePlugin.json +133 -0
  709. package/types.d.ts +20217 -0
@@ -0,0 +1,1968 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const util = require("util");
9
+ const Entrypoint = require("./Entrypoint");
10
+ const ModuleGraphConnection = require("./ModuleGraphConnection");
11
+ const { DEFAULTS } = require("./config/defaults");
12
+ const { first } = require("./util/SetHelpers");
13
+ const SortableSet = require("./util/SortableSet");
14
+ const {
15
+ compareIds,
16
+ compareIterables,
17
+ compareModulesById,
18
+ compareModulesByIdentifier,
19
+ compareSelect,
20
+ concatComparators
21
+ } = require("./util/comparators");
22
+ const createHash = require("./util/createHash");
23
+ const findGraphRoots = require("./util/findGraphRoots");
24
+ const {
25
+ RuntimeSpecMap,
26
+ RuntimeSpecSet,
27
+ forEachRuntime,
28
+ mergeRuntime,
29
+ runtimeToString
30
+ } = require("./util/runtime");
31
+
32
+ /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
33
+ /** @typedef {import("./Chunk")} Chunk */
34
+ /** @typedef {import("./Chunk").Chunks} Chunks */
35
+ /** @typedef {import("./Chunk").Entrypoints} Entrypoints */
36
+ /** @typedef {import("./Chunk").ChunkId} ChunkId */
37
+ /** @typedef {import("./ChunkGroup")} ChunkGroup */
38
+ /** @typedef {import("./Module")} Module */
39
+ /** @typedef {import("./Module").SourceType} SourceType */
40
+ /** @typedef {import("./Module").SourceTypes} SourceTypes */
41
+ /** @typedef {import("./Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
42
+ /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
43
+ /** @typedef {import("./ModuleGraph")} ModuleGraph */
44
+ /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
45
+ /** @typedef {import("./RuntimeModule")} RuntimeModule */
46
+ /** @typedef {import("./util/Hash").HashFunction} HashFunction */
47
+ /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
48
+
49
+ /** @type {ReadonlySet<string>} */
50
+ const EMPTY_SET = new Set();
51
+
52
+ const ZERO_BIG_INT = BigInt(0);
53
+
54
+ const compareModuleIterables = compareIterables(compareModulesByIdentifier);
55
+
56
+ /** @typedef {(c: Chunk, chunkGraph: ChunkGraph) => boolean} ChunkFilterPredicate */
57
+ /** @typedef {(m: Module) => boolean} ModuleFilterPredicate */
58
+ /** @typedef {[Module, Entrypoint | undefined]} EntryModuleWithChunkGroup */
59
+
60
+ /**
61
+ * @typedef {object} ChunkSizeOptions
62
+ * @property {number=} chunkOverhead constant overhead for a chunk
63
+ * @property {number=} entryChunkMultiplicator multiplicator for initial chunks
64
+ */
65
+
66
+ class ModuleHashInfo {
67
+ /**
68
+ * @param {string} hash hash
69
+ * @param {string} renderedHash rendered hash
70
+ */
71
+ constructor(hash, renderedHash) {
72
+ /** @type {string} */
73
+ this.hash = hash;
74
+ /** @type {string} */
75
+ this.renderedHash = renderedHash;
76
+ }
77
+ }
78
+
79
+ /**
80
+ * @template T
81
+ * @param {SortableSet<T>} set the set
82
+ * @returns {T[]} set as array
83
+ */
84
+ const getArray = (set) => [...set];
85
+
86
+ /**
87
+ * @param {SortableChunks} chunks the chunks
88
+ * @returns {RuntimeSpecSet} runtimes
89
+ */
90
+ const getModuleRuntimes = (chunks) => {
91
+ const runtimes = new RuntimeSpecSet();
92
+ for (const chunk of chunks) {
93
+ runtimes.add(chunk.runtime);
94
+ }
95
+ return runtimes;
96
+ };
97
+
98
+ /**
99
+ * @param {SourceTypesByModule | undefined} sourceTypesByModule sourceTypesByModule
100
+ * @returns {ModulesBySourceType} modules by source type
101
+ */
102
+ const modulesBySourceType = (sourceTypesByModule) => (set) => {
103
+ /** @typedef {SortableSet<Module>} ModuleSortableSet */
104
+ /** @type {Map<SourceType, ModuleSortableSet>} */
105
+ const map = new Map();
106
+ for (const module of set) {
107
+ const sourceTypes =
108
+ (sourceTypesByModule && sourceTypesByModule.get(module)) ||
109
+ module.getSourceTypes();
110
+ for (const sourceType of sourceTypes) {
111
+ let innerSet = map.get(sourceType);
112
+ if (innerSet === undefined) {
113
+ /** @type {ModuleSortableSet} */
114
+ innerSet = new SortableSet();
115
+ map.set(sourceType, innerSet);
116
+ }
117
+ innerSet.add(module);
118
+ }
119
+ }
120
+ for (const [key, innerSet] of map) {
121
+ // When all modules have the source type, we reuse the original SortableSet
122
+ // to benefit from the shared cache (especially for sorting)
123
+ if (innerSet.size === set.size) {
124
+ map.set(key, set);
125
+ }
126
+ }
127
+ return map;
128
+ };
129
+
130
+ /** @typedef {(set: SortableSet<Module>) => Map<string, SortableSet<Module>>} ModulesBySourceType */
131
+
132
+ /** @type {ModulesBySourceType} */
133
+ const defaultModulesBySourceType = modulesBySourceType(undefined);
134
+
135
+ /**
136
+ * @typedef {(set: SortableSet<Module>) => Module[]} ModuleSetToArrayFunction
137
+ */
138
+
139
+ /**
140
+ * @template T
141
+ * @type {WeakMap<ModuleComparator, ModuleSetToArrayFunction>}
142
+ */
143
+ const createOrderedArrayFunctionMap = new WeakMap();
144
+
145
+ /**
146
+ * @template T
147
+ * @param {ModuleComparator} comparator comparator function
148
+ * @returns {ModuleSetToArrayFunction} set as ordered array
149
+ */
150
+ const createOrderedArrayFunction = (comparator) => {
151
+ let fn = createOrderedArrayFunctionMap.get(comparator);
152
+ if (fn !== undefined) return fn;
153
+ fn = (set) => {
154
+ set.sortWith(comparator);
155
+ return [...set];
156
+ };
157
+ createOrderedArrayFunctionMap.set(comparator, fn);
158
+ return fn;
159
+ };
160
+
161
+ /**
162
+ * @param {Iterable<Module>} modules the modules to get the count/size of
163
+ * @returns {number} the size of the modules
164
+ */
165
+ const getModulesSize = (modules) => {
166
+ let size = 0;
167
+ for (const module of modules) {
168
+ for (const type of module.getSourceTypes()) {
169
+ size += module.size(type);
170
+ }
171
+ }
172
+ return size;
173
+ };
174
+
175
+ /** @typedef {Record<string, number>} SizesOfModules */
176
+
177
+ /**
178
+ * @param {Iterable<Module>} modules the sortable Set to get the size of
179
+ * @returns {SizesOfModules} the sizes of the modules
180
+ */
181
+ const getModulesSizes = (modules) => {
182
+ /** @type {SizesOfModules} */
183
+ const sizes = Object.create(null);
184
+ for (const module of modules) {
185
+ for (const type of module.getSourceTypes()) {
186
+ sizes[type] = (sizes[type] || 0) + module.size(type);
187
+ }
188
+ }
189
+ return sizes;
190
+ };
191
+
192
+ /**
193
+ * @param {Chunk} a chunk
194
+ * @param {Chunk} b chunk
195
+ * @returns {boolean} true, if a is always a parent of b
196
+ */
197
+ const isAvailableChunk = (a, b) => {
198
+ const queue = new Set(b.groupsIterable);
199
+ for (const chunkGroup of queue) {
200
+ if (a.isInGroup(chunkGroup)) continue;
201
+ if (chunkGroup.isInitial()) return false;
202
+ for (const parent of chunkGroup.parentsIterable) {
203
+ queue.add(parent);
204
+ }
205
+ }
206
+ return true;
207
+ };
208
+
209
+ /** @typedef {SortableSet<Chunk>} SortableChunks */
210
+ /** @typedef {Set<Chunk>} EntryInChunks */
211
+ /** @typedef {Set<Chunk>} RuntimeInChunks */
212
+ /** @typedef {string | number} ModuleId */
213
+ /** @typedef {RuntimeSpecMap<Set<string>, RuntimeRequirements>} ChunkGraphRuntimeRequirements */
214
+
215
+ class ChunkGraphModule {
216
+ constructor() {
217
+ /** @type {SortableChunks} */
218
+ this.chunks = new SortableSet();
219
+ /** @type {EntryInChunks | undefined} */
220
+ this.entryInChunks = undefined;
221
+ /** @type {RuntimeInChunks | undefined} */
222
+ this.runtimeInChunks = undefined;
223
+ /** @type {RuntimeSpecMap<ModuleHashInfo> | undefined} */
224
+ this.hashes = undefined;
225
+ /** @type {ModuleId | null} */
226
+ this.id = null;
227
+ /** @type {ChunkGraphRuntimeRequirements | undefined} */
228
+ this.runtimeRequirements = undefined;
229
+ /** @type {RuntimeSpecMap<string, bigint> | undefined} */
230
+ this.graphHashes = undefined;
231
+ /** @type {RuntimeSpecMap<string, string> | undefined} */
232
+ this.graphHashesWithConnections = undefined;
233
+ }
234
+ }
235
+
236
+ /** @typedef {WeakMap<Module, SourceTypes>} SourceTypesByModule */
237
+ /** @typedef {Map<Module, Entrypoint>} EntryModules */
238
+
239
+ class ChunkGraphChunk {
240
+ constructor() {
241
+ /** @type {SortableSet<Module>} */
242
+ this.modules = new SortableSet();
243
+ /** @type {SourceTypesByModule | undefined} */
244
+ this.sourceTypesByModule = undefined;
245
+ /** @type {EntryModules} */
246
+ this.entryModules = new Map();
247
+ /** @type {SortableSet<RuntimeModule>} */
248
+ this.runtimeModules = new SortableSet();
249
+ /** @type {Set<RuntimeModule> | undefined} */
250
+ this.fullHashModules = undefined;
251
+ /** @type {Set<RuntimeModule> | undefined} */
252
+ this.dependentHashModules = undefined;
253
+ /** @type {RuntimeRequirements | undefined} */
254
+ this.runtimeRequirements = undefined;
255
+ /** @type {Set<string>} */
256
+ this.runtimeRequirementsInTree = new Set();
257
+ /** @type {ModulesBySourceType} */
258
+ this._modulesBySourceType = defaultModulesBySourceType;
259
+ }
260
+ }
261
+
262
+ /** @typedef {string | number} RuntimeId */
263
+ /** @typedef {Record<ModuleId, string>} IdToHashMap */
264
+ /** @typedef {Record<ChunkId, IdToHashMap>} ChunkModuleHashMap */
265
+ /** @typedef {Record<ChunkId, ModuleId[]>} ChunkModuleIdMap */
266
+ /** @typedef {Record<ChunkId, boolean>} ChunkConditionMap */
267
+
268
+ /** @typedef {(a: Module, b: Module) => -1 | 0 | 1} ModuleComparator */
269
+
270
+ class ChunkGraph {
271
+ /**
272
+ * @param {ModuleGraph} moduleGraph the module graph
273
+ * @param {HashFunction} hashFunction the hash function to use
274
+ */
275
+ constructor(moduleGraph, hashFunction = DEFAULTS.HASH_FUNCTION) {
276
+ /**
277
+ * @private
278
+ * @type {WeakMap<Module, ChunkGraphModule>}
279
+ */
280
+ this._modules = new WeakMap();
281
+ /**
282
+ * @private
283
+ * @type {WeakMap<Chunk, ChunkGraphChunk>}
284
+ */
285
+ this._chunks = new WeakMap();
286
+ /**
287
+ * @private
288
+ * @type {WeakMap<AsyncDependenciesBlock, ChunkGroup>}
289
+ */
290
+ this._blockChunkGroups = new WeakMap();
291
+ /**
292
+ * @private
293
+ * @type {Map<string, RuntimeId>}
294
+ */
295
+ this._runtimeIds = new Map();
296
+ /** @type {ModuleGraph} */
297
+ this.moduleGraph = moduleGraph;
298
+
299
+ this._hashFunction = hashFunction;
300
+
301
+ this._getGraphRoots = this._getGraphRoots.bind(this);
302
+ }
303
+
304
+ /**
305
+ * @private
306
+ * @param {Module} module the module
307
+ * @returns {ChunkGraphModule} internal module
308
+ */
309
+ _getChunkGraphModule(module) {
310
+ let cgm = this._modules.get(module);
311
+ if (cgm === undefined) {
312
+ cgm = new ChunkGraphModule();
313
+ this._modules.set(module, cgm);
314
+ }
315
+ return cgm;
316
+ }
317
+
318
+ /**
319
+ * @private
320
+ * @param {Chunk} chunk the chunk
321
+ * @returns {ChunkGraphChunk} internal chunk
322
+ */
323
+ _getChunkGraphChunk(chunk) {
324
+ let cgc = this._chunks.get(chunk);
325
+ if (cgc === undefined) {
326
+ cgc = new ChunkGraphChunk();
327
+ this._chunks.set(chunk, cgc);
328
+ }
329
+ return cgc;
330
+ }
331
+
332
+ /**
333
+ * @param {SortableSet<Module>} set the sortable Set to get the roots of
334
+ * @returns {Module[]} the graph roots
335
+ */
336
+ _getGraphRoots(set) {
337
+ const { moduleGraph } = this;
338
+ return [
339
+ ...findGraphRoots(set, (module) => {
340
+ /** @type {Set<Module>} */
341
+ const set = new Set();
342
+ /**
343
+ * @param {Module} module module
344
+ */
345
+ const addDependencies = (module) => {
346
+ for (const connection of moduleGraph.getOutgoingConnections(module)) {
347
+ if (!connection.module) continue;
348
+ const activeState = connection.getActiveState(undefined);
349
+ if (activeState === false) continue;
350
+ if (activeState === ModuleGraphConnection.TRANSITIVE_ONLY) {
351
+ addDependencies(connection.module);
352
+ continue;
353
+ }
354
+ set.add(connection.module);
355
+ }
356
+ };
357
+ addDependencies(module);
358
+ return set;
359
+ })
360
+ ].sort(compareModulesByIdentifier);
361
+ }
362
+
363
+ /**
364
+ * @param {Chunk} chunk the new chunk
365
+ * @param {Module} module the module
366
+ * @returns {void}
367
+ */
368
+ connectChunkAndModule(chunk, module) {
369
+ const cgm = this._getChunkGraphModule(module);
370
+ const cgc = this._getChunkGraphChunk(chunk);
371
+ cgm.chunks.add(chunk);
372
+ cgc.modules.add(module);
373
+ }
374
+
375
+ /**
376
+ * @param {Chunk} chunk the chunk
377
+ * @param {Module} module the module
378
+ * @returns {void}
379
+ */
380
+ disconnectChunkAndModule(chunk, module) {
381
+ const cgm = this._getChunkGraphModule(module);
382
+ const cgc = this._getChunkGraphChunk(chunk);
383
+ cgc.modules.delete(module);
384
+ // No need to invalidate cgc._modulesBySourceType because we modified cgc.modules anyway
385
+ if (cgc.sourceTypesByModule) cgc.sourceTypesByModule.delete(module);
386
+ cgm.chunks.delete(chunk);
387
+ }
388
+
389
+ /**
390
+ * @param {Chunk} chunk the chunk which will be disconnected
391
+ * @returns {void}
392
+ */
393
+ disconnectChunk(chunk) {
394
+ const cgc = this._getChunkGraphChunk(chunk);
395
+ for (const module of cgc.modules) {
396
+ const cgm = this._getChunkGraphModule(module);
397
+ cgm.chunks.delete(chunk);
398
+ }
399
+ cgc.modules.clear();
400
+ chunk.disconnectFromGroups();
401
+ ChunkGraph.clearChunkGraphForChunk(chunk);
402
+ }
403
+
404
+ /**
405
+ * @param {Chunk} chunk the chunk
406
+ * @param {Iterable<Module>} modules the modules
407
+ * @returns {void}
408
+ */
409
+ attachModules(chunk, modules) {
410
+ const cgc = this._getChunkGraphChunk(chunk);
411
+ for (const module of modules) {
412
+ cgc.modules.add(module);
413
+ }
414
+ }
415
+
416
+ /**
417
+ * @param {Chunk} chunk the chunk
418
+ * @param {Iterable<RuntimeModule>} modules the runtime modules
419
+ * @returns {void}
420
+ */
421
+ attachRuntimeModules(chunk, modules) {
422
+ const cgc = this._getChunkGraphChunk(chunk);
423
+ for (const module of modules) {
424
+ cgc.runtimeModules.add(module);
425
+ }
426
+ }
427
+
428
+ /**
429
+ * @param {Chunk} chunk the chunk
430
+ * @param {Iterable<RuntimeModule>} modules the modules that require a full hash
431
+ * @returns {void}
432
+ */
433
+ attachFullHashModules(chunk, modules) {
434
+ const cgc = this._getChunkGraphChunk(chunk);
435
+ if (cgc.fullHashModules === undefined) cgc.fullHashModules = new Set();
436
+ for (const module of modules) {
437
+ cgc.fullHashModules.add(module);
438
+ }
439
+ }
440
+
441
+ /**
442
+ * @param {Chunk} chunk the chunk
443
+ * @param {Iterable<RuntimeModule>} modules the modules that require a full hash
444
+ * @returns {void}
445
+ */
446
+ attachDependentHashModules(chunk, modules) {
447
+ const cgc = this._getChunkGraphChunk(chunk);
448
+ if (cgc.dependentHashModules === undefined) {
449
+ cgc.dependentHashModules = new Set();
450
+ }
451
+ for (const module of modules) {
452
+ cgc.dependentHashModules.add(module);
453
+ }
454
+ }
455
+
456
+ /**
457
+ * @param {Module} oldModule the replaced module
458
+ * @param {Module} newModule the replacing module
459
+ * @returns {void}
460
+ */
461
+ replaceModule(oldModule, newModule) {
462
+ const oldCgm = this._getChunkGraphModule(oldModule);
463
+ const newCgm = this._getChunkGraphModule(newModule);
464
+
465
+ for (const chunk of oldCgm.chunks) {
466
+ const cgc = this._getChunkGraphChunk(chunk);
467
+ cgc.modules.delete(oldModule);
468
+ cgc.modules.add(newModule);
469
+ newCgm.chunks.add(chunk);
470
+ }
471
+ oldCgm.chunks.clear();
472
+
473
+ if (oldCgm.entryInChunks !== undefined) {
474
+ if (newCgm.entryInChunks === undefined) {
475
+ newCgm.entryInChunks = new Set();
476
+ }
477
+ for (const chunk of oldCgm.entryInChunks) {
478
+ const cgc = this._getChunkGraphChunk(chunk);
479
+ const old = /** @type {Entrypoint} */ (cgc.entryModules.get(oldModule));
480
+ /** @type {EntryModules} */
481
+ const newEntryModules = new Map();
482
+ for (const [m, cg] of cgc.entryModules) {
483
+ if (m === oldModule) {
484
+ newEntryModules.set(newModule, old);
485
+ } else {
486
+ newEntryModules.set(m, cg);
487
+ }
488
+ }
489
+ cgc.entryModules = newEntryModules;
490
+ newCgm.entryInChunks.add(chunk);
491
+ }
492
+ oldCgm.entryInChunks = undefined;
493
+ }
494
+
495
+ if (oldCgm.runtimeInChunks !== undefined) {
496
+ if (newCgm.runtimeInChunks === undefined) {
497
+ newCgm.runtimeInChunks = new Set();
498
+ }
499
+ for (const chunk of oldCgm.runtimeInChunks) {
500
+ const cgc = this._getChunkGraphChunk(chunk);
501
+ cgc.runtimeModules.delete(/** @type {RuntimeModule} */ (oldModule));
502
+ cgc.runtimeModules.add(/** @type {RuntimeModule} */ (newModule));
503
+ newCgm.runtimeInChunks.add(chunk);
504
+ if (
505
+ cgc.fullHashModules !== undefined &&
506
+ cgc.fullHashModules.has(/** @type {RuntimeModule} */ (oldModule))
507
+ ) {
508
+ cgc.fullHashModules.delete(/** @type {RuntimeModule} */ (oldModule));
509
+ cgc.fullHashModules.add(/** @type {RuntimeModule} */ (newModule));
510
+ }
511
+ if (
512
+ cgc.dependentHashModules !== undefined &&
513
+ cgc.dependentHashModules.has(/** @type {RuntimeModule} */ (oldModule))
514
+ ) {
515
+ cgc.dependentHashModules.delete(
516
+ /** @type {RuntimeModule} */ (oldModule)
517
+ );
518
+ cgc.dependentHashModules.add(
519
+ /** @type {RuntimeModule} */ (newModule)
520
+ );
521
+ }
522
+ }
523
+ oldCgm.runtimeInChunks = undefined;
524
+ }
525
+ }
526
+
527
+ /**
528
+ * @param {Module} module the checked module
529
+ * @param {Chunk} chunk the checked chunk
530
+ * @returns {boolean} true, if the chunk contains the module
531
+ */
532
+ isModuleInChunk(module, chunk) {
533
+ const cgc = this._getChunkGraphChunk(chunk);
534
+ return cgc.modules.has(module);
535
+ }
536
+
537
+ /**
538
+ * @param {Module} module the checked module
539
+ * @param {ChunkGroup} chunkGroup the checked chunk group
540
+ * @returns {boolean} true, if the chunk contains the module
541
+ */
542
+ isModuleInChunkGroup(module, chunkGroup) {
543
+ for (const chunk of chunkGroup.chunks) {
544
+ if (this.isModuleInChunk(module, chunk)) return true;
545
+ }
546
+ return false;
547
+ }
548
+
549
+ /**
550
+ * @param {Module} module the checked module
551
+ * @returns {boolean} true, if the module is entry of any chunk
552
+ */
553
+ isEntryModule(module) {
554
+ const cgm = this._getChunkGraphModule(module);
555
+ return cgm.entryInChunks !== undefined;
556
+ }
557
+
558
+ /**
559
+ * @param {Module} module the module
560
+ * @returns {Iterable<Chunk>} iterable of chunks (do not modify)
561
+ */
562
+ getModuleChunksIterable(module) {
563
+ const cgm = this._getChunkGraphModule(module);
564
+ return cgm.chunks;
565
+ }
566
+
567
+ /**
568
+ * @param {Module} module the module
569
+ * @param {(a: Chunk, b: Chunk) => -1 | 0 | 1} sortFn sort function
570
+ * @returns {Iterable<Chunk>} iterable of chunks (do not modify)
571
+ */
572
+ getOrderedModuleChunksIterable(module, sortFn) {
573
+ const cgm = this._getChunkGraphModule(module);
574
+ cgm.chunks.sortWith(sortFn);
575
+ return cgm.chunks;
576
+ }
577
+
578
+ /**
579
+ * @param {Module} module the module
580
+ * @returns {Chunk[]} array of chunks (cached, do not modify)
581
+ */
582
+ getModuleChunks(module) {
583
+ const cgm = this._getChunkGraphModule(module);
584
+ return cgm.chunks.getFromCache(getArray);
585
+ }
586
+
587
+ /**
588
+ * @param {Module} module the module
589
+ * @returns {number} the number of chunk which contain the module
590
+ */
591
+ getNumberOfModuleChunks(module) {
592
+ const cgm = this._getChunkGraphModule(module);
593
+ return cgm.chunks.size;
594
+ }
595
+
596
+ /**
597
+ * @param {Module} module the module
598
+ * @returns {RuntimeSpecSet} runtimes
599
+ */
600
+ getModuleRuntimes(module) {
601
+ const cgm = this._getChunkGraphModule(module);
602
+ return cgm.chunks.getFromUnorderedCache(getModuleRuntimes);
603
+ }
604
+
605
+ /**
606
+ * @param {Chunk} chunk the chunk
607
+ * @returns {number} the number of modules which are contained in this chunk
608
+ */
609
+ getNumberOfChunkModules(chunk) {
610
+ const cgc = this._getChunkGraphChunk(chunk);
611
+ return cgc.modules.size;
612
+ }
613
+
614
+ /**
615
+ * @param {Chunk} chunk the chunk
616
+ * @returns {number} the number of full hash modules which are contained in this chunk
617
+ */
618
+ getNumberOfChunkFullHashModules(chunk) {
619
+ const cgc = this._getChunkGraphChunk(chunk);
620
+ return cgc.fullHashModules === undefined ? 0 : cgc.fullHashModules.size;
621
+ }
622
+
623
+ /**
624
+ * @param {Chunk} chunk the chunk
625
+ * @returns {Iterable<Module>} return the modules for this chunk
626
+ */
627
+ getChunkModulesIterable(chunk) {
628
+ const cgc = this._getChunkGraphChunk(chunk);
629
+ return cgc.modules;
630
+ }
631
+
632
+ /**
633
+ * @param {Chunk} chunk the chunk
634
+ * @param {string} sourceType source type
635
+ * @returns {Iterable<Module> | undefined} return the modules for this chunk
636
+ */
637
+ getChunkModulesIterableBySourceType(chunk, sourceType) {
638
+ const cgc = this._getChunkGraphChunk(chunk);
639
+ const modulesWithSourceType = cgc.modules
640
+ .getFromUnorderedCache(cgc._modulesBySourceType)
641
+ .get(sourceType);
642
+ return modulesWithSourceType;
643
+ }
644
+
645
+ /**
646
+ * @param {Chunk} chunk chunk
647
+ * @param {Module} module chunk module
648
+ * @param {SourceTypes} sourceTypes source types
649
+ */
650
+ setChunkModuleSourceTypes(chunk, module, sourceTypes) {
651
+ const cgc = this._getChunkGraphChunk(chunk);
652
+ if (cgc.sourceTypesByModule === undefined) {
653
+ cgc.sourceTypesByModule = new WeakMap();
654
+ }
655
+ cgc.sourceTypesByModule.set(module, sourceTypes);
656
+ // Update cgc._modulesBySourceType to invalidate the cache
657
+ cgc._modulesBySourceType = modulesBySourceType(cgc.sourceTypesByModule);
658
+ }
659
+
660
+ /**
661
+ * @param {Chunk} chunk chunk
662
+ * @param {Module} module chunk module
663
+ * @returns {SourceTypes} source types
664
+ */
665
+ getChunkModuleSourceTypes(chunk, module) {
666
+ const cgc = this._getChunkGraphChunk(chunk);
667
+ if (cgc.sourceTypesByModule === undefined) {
668
+ return module.getSourceTypes();
669
+ }
670
+ return cgc.sourceTypesByModule.get(module) || module.getSourceTypes();
671
+ }
672
+
673
+ /**
674
+ * @param {Module} module module
675
+ * @returns {SourceTypes} source types
676
+ */
677
+ getModuleSourceTypes(module) {
678
+ return (
679
+ this._getOverwrittenModuleSourceTypes(module) || module.getSourceTypes()
680
+ );
681
+ }
682
+
683
+ /**
684
+ * @param {Module} module module
685
+ * @returns {SourceTypes | undefined} source types
686
+ */
687
+ _getOverwrittenModuleSourceTypes(module) {
688
+ let newSet = false;
689
+ /** @type {Set<SourceType> | undefined} */
690
+ let sourceTypes;
691
+ for (const chunk of this.getModuleChunksIterable(module)) {
692
+ const cgc = this._getChunkGraphChunk(chunk);
693
+ if (cgc.sourceTypesByModule === undefined) return;
694
+ const st = cgc.sourceTypesByModule.get(module);
695
+ if (st === undefined) return;
696
+ if (!sourceTypes) {
697
+ sourceTypes = /** @type {Set<SourceType>} */ (st);
698
+ } else if (!newSet) {
699
+ for (const type of st) {
700
+ if (!newSet) {
701
+ if (!sourceTypes.has(type)) {
702
+ newSet = true;
703
+ sourceTypes = new Set(sourceTypes);
704
+ sourceTypes.add(type);
705
+ }
706
+ } else {
707
+ sourceTypes.add(type);
708
+ }
709
+ }
710
+ } else {
711
+ for (const type of st) sourceTypes.add(type);
712
+ }
713
+ }
714
+
715
+ return sourceTypes;
716
+ }
717
+
718
+ /**
719
+ * @param {Chunk} chunk the chunk
720
+ * @param {ModuleComparator} comparator comparator function
721
+ * @returns {Iterable<Module>} return the modules for this chunk
722
+ */
723
+ getOrderedChunkModulesIterable(chunk, comparator) {
724
+ const cgc = this._getChunkGraphChunk(chunk);
725
+ cgc.modules.sortWith(comparator);
726
+ return cgc.modules;
727
+ }
728
+
729
+ /**
730
+ * @param {Chunk} chunk the chunk
731
+ * @param {string} sourceType source type
732
+ * @param {ModuleComparator} comparator comparator function
733
+ * @returns {Iterable<Module> | undefined} return the modules for this chunk
734
+ */
735
+ getOrderedChunkModulesIterableBySourceType(chunk, sourceType, comparator) {
736
+ const cgc = this._getChunkGraphChunk(chunk);
737
+ const modulesWithSourceType = cgc.modules
738
+ .getFromUnorderedCache(cgc._modulesBySourceType)
739
+ .get(sourceType);
740
+ if (modulesWithSourceType === undefined) return;
741
+ modulesWithSourceType.sortWith(comparator);
742
+ return modulesWithSourceType;
743
+ }
744
+
745
+ /**
746
+ * @param {Chunk} chunk the chunk
747
+ * @returns {Module[]} return the modules for this chunk (cached, do not modify)
748
+ */
749
+ getChunkModules(chunk) {
750
+ const cgc = this._getChunkGraphChunk(chunk);
751
+ return cgc.modules.getFromUnorderedCache(getArray);
752
+ }
753
+
754
+ /**
755
+ * @param {Chunk} chunk the chunk
756
+ * @param {ModuleComparator} comparator comparator function
757
+ * @returns {Module[]} return the modules for this chunk (cached, do not modify)
758
+ */
759
+ getOrderedChunkModules(chunk, comparator) {
760
+ const cgc = this._getChunkGraphChunk(chunk);
761
+ const arrayFunction = createOrderedArrayFunction(comparator);
762
+ return cgc.modules.getFromUnorderedCache(arrayFunction);
763
+ }
764
+
765
+ /**
766
+ * @param {Chunk} chunk the chunk
767
+ * @param {ModuleFilterPredicate} filterFn function used to filter modules
768
+ * @param {boolean} includeAllChunks all chunks or only async chunks
769
+ * @returns {ChunkModuleIdMap} chunk to module ids object
770
+ */
771
+ getChunkModuleIdMap(chunk, filterFn, includeAllChunks = false) {
772
+ /** @type {ChunkModuleIdMap} */
773
+ const chunkModuleIdMap = Object.create(null);
774
+
775
+ for (const asyncChunk of includeAllChunks
776
+ ? chunk.getAllReferencedChunks()
777
+ : chunk.getAllAsyncChunks()) {
778
+ /** @type {ModuleId[] | undefined} */
779
+ let array;
780
+ for (const module of this.getOrderedChunkModulesIterable(
781
+ asyncChunk,
782
+ compareModulesById(this)
783
+ )) {
784
+ if (filterFn(module)) {
785
+ if (array === undefined) {
786
+ array = [];
787
+ chunkModuleIdMap[/** @type {ChunkId} */ (asyncChunk.id)] = array;
788
+ }
789
+ const moduleId = /** @type {ModuleId} */ (this.getModuleId(module));
790
+ array.push(moduleId);
791
+ }
792
+ }
793
+ }
794
+
795
+ return chunkModuleIdMap;
796
+ }
797
+
798
+ /**
799
+ * @param {Chunk} chunk the chunk
800
+ * @param {ModuleFilterPredicate} filterFn function used to filter modules
801
+ * @param {number} hashLength length of the hash
802
+ * @param {boolean} includeAllChunks all chunks or only async chunks
803
+ * @returns {ChunkModuleHashMap} chunk to module id to module hash object
804
+ */
805
+ getChunkModuleRenderedHashMap(
806
+ chunk,
807
+ filterFn,
808
+ hashLength = 0,
809
+ includeAllChunks = false
810
+ ) {
811
+ /** @type {ChunkModuleHashMap} */
812
+ const chunkModuleHashMap = Object.create(null);
813
+
814
+ for (const asyncChunk of includeAllChunks
815
+ ? chunk.getAllReferencedChunks()
816
+ : chunk.getAllAsyncChunks()) {
817
+ /** @type {IdToHashMap | undefined} */
818
+ let idToHashMap;
819
+ for (const module of this.getOrderedChunkModulesIterable(
820
+ asyncChunk,
821
+ compareModulesById(this)
822
+ )) {
823
+ if (filterFn(module)) {
824
+ if (idToHashMap === undefined) {
825
+ /** @type {IdToHashMap} */
826
+ idToHashMap = Object.create(null);
827
+ chunkModuleHashMap[/** @type {ChunkId} */ (asyncChunk.id)] =
828
+ /** @type {IdToHashMap} */
829
+ (idToHashMap);
830
+ }
831
+ const moduleId = this.getModuleId(module);
832
+ const hash = this.getRenderedModuleHash(module, asyncChunk.runtime);
833
+ /** @type {IdToHashMap} */
834
+ (idToHashMap)[/** @type {ModuleId} */ (moduleId)] = hashLength
835
+ ? hash.slice(0, hashLength)
836
+ : hash;
837
+ }
838
+ }
839
+ }
840
+
841
+ return chunkModuleHashMap;
842
+ }
843
+
844
+ /**
845
+ * @param {Chunk} chunk the chunk
846
+ * @param {ChunkFilterPredicate} filterFn function used to filter chunks
847
+ * @returns {ChunkConditionMap} chunk condition map
848
+ */
849
+ getChunkConditionMap(chunk, filterFn) {
850
+ /** @type {ChunkConditionMap} */
851
+ const map = Object.create(null);
852
+ for (const c of chunk.getAllReferencedChunks()) {
853
+ map[/** @type {ChunkId} */ (c.id)] = filterFn(c, this);
854
+ }
855
+ return map;
856
+ }
857
+
858
+ /**
859
+ * @param {Chunk} chunk the chunk
860
+ * @param {ModuleFilterPredicate} filterFn predicate function used to filter modules
861
+ * @param {ChunkFilterPredicate=} filterChunkFn predicate function used to filter chunks
862
+ * @returns {boolean} return true if module exists in graph
863
+ */
864
+ hasModuleInGraph(chunk, filterFn, filterChunkFn) {
865
+ const queue = new Set(chunk.groupsIterable);
866
+ /** @type {Set<Chunk>} */
867
+ const chunksProcessed = new Set();
868
+
869
+ for (const chunkGroup of queue) {
870
+ for (const innerChunk of chunkGroup.chunks) {
871
+ if (!chunksProcessed.has(innerChunk)) {
872
+ chunksProcessed.add(innerChunk);
873
+ if (!filterChunkFn || filterChunkFn(innerChunk, this)) {
874
+ for (const module of this.getChunkModulesIterable(innerChunk)) {
875
+ if (filterFn(module)) {
876
+ return true;
877
+ }
878
+ }
879
+ }
880
+ }
881
+ }
882
+ for (const child of chunkGroup.childrenIterable) {
883
+ queue.add(child);
884
+ }
885
+ }
886
+ return false;
887
+ }
888
+
889
+ /**
890
+ * @param {Chunk} chunkA first chunk
891
+ * @param {Chunk} chunkB second chunk
892
+ * @returns {-1 | 0 | 1} this is a comparator function like sort and returns -1, 0, or 1 based on sort order
893
+ */
894
+ compareChunks(chunkA, chunkB) {
895
+ const cgcA = this._getChunkGraphChunk(chunkA);
896
+ const cgcB = this._getChunkGraphChunk(chunkB);
897
+ if (cgcA.modules.size > cgcB.modules.size) return -1;
898
+ if (cgcA.modules.size < cgcB.modules.size) return 1;
899
+ cgcA.modules.sortWith(compareModulesByIdentifier);
900
+ cgcB.modules.sortWith(compareModulesByIdentifier);
901
+ return compareModuleIterables(cgcA.modules, cgcB.modules);
902
+ }
903
+
904
+ /**
905
+ * @param {Chunk} chunk the chunk
906
+ * @returns {number} total size of all modules in the chunk
907
+ */
908
+ getChunkModulesSize(chunk) {
909
+ const cgc = this._getChunkGraphChunk(chunk);
910
+ return cgc.modules.getFromUnorderedCache(getModulesSize);
911
+ }
912
+
913
+ /**
914
+ * @param {Chunk} chunk the chunk
915
+ * @returns {Record<string, number>} total sizes of all modules in the chunk by source type
916
+ */
917
+ getChunkModulesSizes(chunk) {
918
+ const cgc = this._getChunkGraphChunk(chunk);
919
+ return cgc.modules.getFromUnorderedCache(getModulesSizes);
920
+ }
921
+
922
+ /**
923
+ * @param {Chunk} chunk the chunk
924
+ * @returns {Module[]} root modules of the chunks (ordered by identifier)
925
+ */
926
+ getChunkRootModules(chunk) {
927
+ const cgc = this._getChunkGraphChunk(chunk);
928
+ return cgc.modules.getFromUnorderedCache(this._getGraphRoots);
929
+ }
930
+
931
+ /**
932
+ * @param {Chunk} chunk the chunk
933
+ * @param {ChunkSizeOptions} options options object
934
+ * @returns {number} total size of the chunk
935
+ */
936
+ getChunkSize(chunk, options = {}) {
937
+ const cgc = this._getChunkGraphChunk(chunk);
938
+ const modulesSize = cgc.modules.getFromUnorderedCache(getModulesSize);
939
+ const chunkOverhead =
940
+ typeof options.chunkOverhead === "number" ? options.chunkOverhead : 10000;
941
+ const entryChunkMultiplicator =
942
+ typeof options.entryChunkMultiplicator === "number"
943
+ ? options.entryChunkMultiplicator
944
+ : 10;
945
+ return (
946
+ chunkOverhead +
947
+ modulesSize * (chunk.canBeInitial() ? entryChunkMultiplicator : 1)
948
+ );
949
+ }
950
+
951
+ /**
952
+ * @param {Chunk} chunkA chunk
953
+ * @param {Chunk} chunkB chunk
954
+ * @param {ChunkSizeOptions} options options object
955
+ * @returns {number} total size of the chunk or false if chunks can't be integrated
956
+ */
957
+ getIntegratedChunksSize(chunkA, chunkB, options = {}) {
958
+ const cgcA = this._getChunkGraphChunk(chunkA);
959
+ const cgcB = this._getChunkGraphChunk(chunkB);
960
+ const allModules = new Set(cgcA.modules);
961
+ for (const m of cgcB.modules) allModules.add(m);
962
+ const modulesSize = getModulesSize(allModules);
963
+ const chunkOverhead =
964
+ typeof options.chunkOverhead === "number" ? options.chunkOverhead : 10000;
965
+ const entryChunkMultiplicator =
966
+ typeof options.entryChunkMultiplicator === "number"
967
+ ? options.entryChunkMultiplicator
968
+ : 10;
969
+ return (
970
+ chunkOverhead +
971
+ modulesSize *
972
+ (chunkA.canBeInitial() || chunkB.canBeInitial()
973
+ ? entryChunkMultiplicator
974
+ : 1)
975
+ );
976
+ }
977
+
978
+ /**
979
+ * @param {Chunk} chunkA chunk
980
+ * @param {Chunk} chunkB chunk
981
+ * @returns {boolean} true, if chunks could be integrated
982
+ */
983
+ canChunksBeIntegrated(chunkA, chunkB) {
984
+ if (chunkA.preventIntegration || chunkB.preventIntegration) {
985
+ return false;
986
+ }
987
+
988
+ const hasRuntimeA = chunkA.hasRuntime();
989
+ const hasRuntimeB = chunkB.hasRuntime();
990
+
991
+ if (hasRuntimeA !== hasRuntimeB) {
992
+ if (hasRuntimeA) {
993
+ return isAvailableChunk(chunkA, chunkB);
994
+ } else if (hasRuntimeB) {
995
+ return isAvailableChunk(chunkB, chunkA);
996
+ }
997
+
998
+ return false;
999
+ }
1000
+
1001
+ if (
1002
+ this.getNumberOfEntryModules(chunkA) > 0 ||
1003
+ this.getNumberOfEntryModules(chunkB) > 0
1004
+ ) {
1005
+ return false;
1006
+ }
1007
+
1008
+ return true;
1009
+ }
1010
+
1011
+ /**
1012
+ * @param {Chunk} chunkA the target chunk
1013
+ * @param {Chunk} chunkB the chunk to integrate
1014
+ * @returns {void}
1015
+ */
1016
+ integrateChunks(chunkA, chunkB) {
1017
+ // Decide for one name (deterministic)
1018
+ if (chunkA.name && chunkB.name) {
1019
+ if (
1020
+ this.getNumberOfEntryModules(chunkA) > 0 ===
1021
+ this.getNumberOfEntryModules(chunkB) > 0
1022
+ ) {
1023
+ // When both chunks have entry modules or none have one, use
1024
+ // shortest name
1025
+ if (chunkA.name.length !== chunkB.name.length) {
1026
+ chunkA.name =
1027
+ chunkA.name.length < chunkB.name.length ? chunkA.name : chunkB.name;
1028
+ } else {
1029
+ chunkA.name = chunkA.name < chunkB.name ? chunkA.name : chunkB.name;
1030
+ }
1031
+ } else if (this.getNumberOfEntryModules(chunkB) > 0) {
1032
+ // Pick the name of the chunk with the entry module
1033
+ chunkA.name = chunkB.name;
1034
+ }
1035
+ } else if (chunkB.name) {
1036
+ chunkA.name = chunkB.name;
1037
+ }
1038
+
1039
+ // Merge id name hints
1040
+ for (const hint of chunkB.idNameHints) {
1041
+ chunkA.idNameHints.add(hint);
1042
+ }
1043
+
1044
+ // Merge runtime
1045
+ chunkA.runtime = mergeRuntime(chunkA.runtime, chunkB.runtime);
1046
+
1047
+ // getChunkModules is used here to create a clone, because disconnectChunkAndModule modifies
1048
+ for (const module of this.getChunkModules(chunkB)) {
1049
+ this.disconnectChunkAndModule(chunkB, module);
1050
+ this.connectChunkAndModule(chunkA, module);
1051
+ }
1052
+
1053
+ for (const [
1054
+ module,
1055
+ chunkGroup
1056
+ ] of this.getChunkEntryModulesWithChunkGroupIterable(chunkB)) {
1057
+ this.disconnectChunkAndEntryModule(chunkB, module);
1058
+ this.connectChunkAndEntryModule(
1059
+ chunkA,
1060
+ module,
1061
+ /** @type {Entrypoint} */
1062
+ (chunkGroup)
1063
+ );
1064
+ }
1065
+
1066
+ for (const chunkGroup of chunkB.groupsIterable) {
1067
+ chunkGroup.replaceChunk(chunkB, chunkA);
1068
+ chunkA.addGroup(chunkGroup);
1069
+ chunkB.removeGroup(chunkGroup);
1070
+ }
1071
+ ChunkGraph.clearChunkGraphForChunk(chunkB);
1072
+ }
1073
+
1074
+ /**
1075
+ * @param {Chunk} chunk the chunk to upgrade
1076
+ * @returns {void}
1077
+ */
1078
+ upgradeDependentToFullHashModules(chunk) {
1079
+ const cgc = this._getChunkGraphChunk(chunk);
1080
+ if (cgc.dependentHashModules === undefined) return;
1081
+ if (cgc.fullHashModules === undefined) {
1082
+ cgc.fullHashModules = cgc.dependentHashModules;
1083
+ } else {
1084
+ for (const m of cgc.dependentHashModules) {
1085
+ cgc.fullHashModules.add(m);
1086
+ }
1087
+ cgc.dependentHashModules = undefined;
1088
+ }
1089
+ }
1090
+
1091
+ /**
1092
+ * @param {Module} module the checked module
1093
+ * @param {Chunk} chunk the checked chunk
1094
+ * @returns {boolean} true, if the chunk contains the module as entry
1095
+ */
1096
+ isEntryModuleInChunk(module, chunk) {
1097
+ const cgc = this._getChunkGraphChunk(chunk);
1098
+ return cgc.entryModules.has(module);
1099
+ }
1100
+
1101
+ /**
1102
+ * @param {Chunk} chunk the new chunk
1103
+ * @param {Module} module the entry module
1104
+ * @param {Entrypoint} entrypoint the chunk group which must be loaded before the module is executed
1105
+ * @returns {void}
1106
+ */
1107
+ connectChunkAndEntryModule(chunk, module, entrypoint) {
1108
+ const cgm = this._getChunkGraphModule(module);
1109
+ const cgc = this._getChunkGraphChunk(chunk);
1110
+ if (cgm.entryInChunks === undefined) {
1111
+ cgm.entryInChunks = new Set();
1112
+ }
1113
+ cgm.entryInChunks.add(chunk);
1114
+ cgc.entryModules.set(module, entrypoint);
1115
+ }
1116
+
1117
+ /**
1118
+ * @param {Chunk} chunk the new chunk
1119
+ * @param {RuntimeModule} module the runtime module
1120
+ * @returns {void}
1121
+ */
1122
+ connectChunkAndRuntimeModule(chunk, module) {
1123
+ const cgm = this._getChunkGraphModule(module);
1124
+ const cgc = this._getChunkGraphChunk(chunk);
1125
+ if (cgm.runtimeInChunks === undefined) {
1126
+ cgm.runtimeInChunks = new Set();
1127
+ }
1128
+ cgm.runtimeInChunks.add(chunk);
1129
+ cgc.runtimeModules.add(module);
1130
+ }
1131
+
1132
+ /**
1133
+ * @param {Chunk} chunk the new chunk
1134
+ * @param {RuntimeModule} module the module that require a full hash
1135
+ * @returns {void}
1136
+ */
1137
+ addFullHashModuleToChunk(chunk, module) {
1138
+ const cgc = this._getChunkGraphChunk(chunk);
1139
+ if (cgc.fullHashModules === undefined) cgc.fullHashModules = new Set();
1140
+ cgc.fullHashModules.add(module);
1141
+ }
1142
+
1143
+ /**
1144
+ * @param {Chunk} chunk the new chunk
1145
+ * @param {RuntimeModule} module the module that require a full hash
1146
+ * @returns {void}
1147
+ */
1148
+ addDependentHashModuleToChunk(chunk, module) {
1149
+ const cgc = this._getChunkGraphChunk(chunk);
1150
+ if (cgc.dependentHashModules === undefined) {
1151
+ cgc.dependentHashModules = new Set();
1152
+ }
1153
+ cgc.dependentHashModules.add(module);
1154
+ }
1155
+
1156
+ /**
1157
+ * @param {Chunk} chunk the new chunk
1158
+ * @param {Module} module the entry module
1159
+ * @returns {void}
1160
+ */
1161
+ disconnectChunkAndEntryModule(chunk, module) {
1162
+ const cgm = this._getChunkGraphModule(module);
1163
+ const cgc = this._getChunkGraphChunk(chunk);
1164
+ /** @type {EntryInChunks} */
1165
+ (cgm.entryInChunks).delete(chunk);
1166
+ if (/** @type {EntryInChunks} */ (cgm.entryInChunks).size === 0) {
1167
+ cgm.entryInChunks = undefined;
1168
+ }
1169
+ cgc.entryModules.delete(module);
1170
+ }
1171
+
1172
+ /**
1173
+ * @param {Chunk} chunk the new chunk
1174
+ * @param {RuntimeModule} module the runtime module
1175
+ * @returns {void}
1176
+ */
1177
+ disconnectChunkAndRuntimeModule(chunk, module) {
1178
+ const cgm = this._getChunkGraphModule(module);
1179
+ const cgc = this._getChunkGraphChunk(chunk);
1180
+ /** @type {RuntimeInChunks} */
1181
+ (cgm.runtimeInChunks).delete(chunk);
1182
+ if (/** @type {RuntimeInChunks} */ (cgm.runtimeInChunks).size === 0) {
1183
+ cgm.runtimeInChunks = undefined;
1184
+ }
1185
+ cgc.runtimeModules.delete(module);
1186
+ }
1187
+
1188
+ /**
1189
+ * @param {Module} module the entry module, it will no longer be entry
1190
+ * @returns {void}
1191
+ */
1192
+ disconnectEntryModule(module) {
1193
+ const cgm = this._getChunkGraphModule(module);
1194
+ for (const chunk of /** @type {EntryInChunks} */ (cgm.entryInChunks)) {
1195
+ const cgc = this._getChunkGraphChunk(chunk);
1196
+ cgc.entryModules.delete(module);
1197
+ }
1198
+ cgm.entryInChunks = undefined;
1199
+ }
1200
+
1201
+ /**
1202
+ * @param {Chunk} chunk the chunk, for which all entries will be removed
1203
+ * @returns {void}
1204
+ */
1205
+ disconnectEntries(chunk) {
1206
+ const cgc = this._getChunkGraphChunk(chunk);
1207
+ for (const module of cgc.entryModules.keys()) {
1208
+ const cgm = this._getChunkGraphModule(module);
1209
+ /** @type {EntryInChunks} */
1210
+ (cgm.entryInChunks).delete(chunk);
1211
+ if (/** @type {EntryInChunks} */ (cgm.entryInChunks).size === 0) {
1212
+ cgm.entryInChunks = undefined;
1213
+ }
1214
+ }
1215
+ cgc.entryModules.clear();
1216
+ }
1217
+
1218
+ /**
1219
+ * @param {Chunk} chunk the chunk
1220
+ * @returns {number} the amount of entry modules in chunk
1221
+ */
1222
+ getNumberOfEntryModules(chunk) {
1223
+ const cgc = this._getChunkGraphChunk(chunk);
1224
+ return cgc.entryModules.size;
1225
+ }
1226
+
1227
+ /**
1228
+ * @param {Chunk} chunk the chunk
1229
+ * @returns {number} the amount of entry modules in chunk
1230
+ */
1231
+ getNumberOfRuntimeModules(chunk) {
1232
+ const cgc = this._getChunkGraphChunk(chunk);
1233
+ return cgc.runtimeModules.size;
1234
+ }
1235
+
1236
+ /**
1237
+ * @param {Chunk} chunk the chunk
1238
+ * @returns {Iterable<Module>} iterable of modules (do not modify)
1239
+ */
1240
+ getChunkEntryModulesIterable(chunk) {
1241
+ const cgc = this._getChunkGraphChunk(chunk);
1242
+ return cgc.entryModules.keys();
1243
+ }
1244
+
1245
+ /**
1246
+ * @param {Chunk} chunk the chunk
1247
+ * @returns {Iterable<Chunk>} iterable of chunks
1248
+ */
1249
+ getChunkEntryDependentChunksIterable(chunk) {
1250
+ /** @type {Chunks} */
1251
+ const set = new Set();
1252
+ for (const chunkGroup of chunk.groupsIterable) {
1253
+ if (chunkGroup instanceof Entrypoint) {
1254
+ const entrypointChunk = chunkGroup.getEntrypointChunk();
1255
+ const cgc = this._getChunkGraphChunk(entrypointChunk);
1256
+ for (const chunkGroup of cgc.entryModules.values()) {
1257
+ for (const c of chunkGroup.chunks) {
1258
+ if (c !== chunk && c !== entrypointChunk && !c.hasRuntime()) {
1259
+ set.add(c);
1260
+ }
1261
+ }
1262
+ }
1263
+ }
1264
+ }
1265
+
1266
+ return set;
1267
+ }
1268
+
1269
+ /**
1270
+ * @param {Chunk} chunk the chunk
1271
+ * @returns {Iterable<Chunk>} iterable of chunks and include chunks from children entrypoints
1272
+ */
1273
+ getRuntimeChunkDependentChunksIterable(chunk) {
1274
+ /** @type {Chunks} */
1275
+ const set = new Set();
1276
+
1277
+ /** @type {Entrypoints} */
1278
+ const entrypoints = new Set();
1279
+
1280
+ for (const chunkGroup of chunk.groupsIterable) {
1281
+ if (chunkGroup instanceof Entrypoint) {
1282
+ const queue = [chunkGroup];
1283
+ while (queue.length > 0) {
1284
+ const current = queue.shift();
1285
+ if (current) {
1286
+ entrypoints.add(current);
1287
+
1288
+ let hasChildrenEntrypoint = false;
1289
+ for (const child of current.childrenIterable) {
1290
+ if (child instanceof Entrypoint && child.dependOn(current)) {
1291
+ hasChildrenEntrypoint = true;
1292
+ queue.push(/** @type {Entrypoint} */ (child));
1293
+ }
1294
+ }
1295
+ // entryChunkB: hasChildrenEntrypoint = true
1296
+ // entryChunkA: dependOn = entryChunkB
1297
+ if (hasChildrenEntrypoint) {
1298
+ const entrypointChunk = current.getEntrypointChunk();
1299
+ if (entrypointChunk !== chunk && !entrypointChunk.hasRuntime()) {
1300
+ // add entryChunkB to set
1301
+ set.add(entrypointChunk);
1302
+ }
1303
+ }
1304
+ }
1305
+ }
1306
+ }
1307
+ }
1308
+
1309
+ for (const entrypoint of entrypoints) {
1310
+ const entrypointChunk = entrypoint.getEntrypointChunk();
1311
+ const cgc = this._getChunkGraphChunk(entrypointChunk);
1312
+ for (const chunkGroup of cgc.entryModules.values()) {
1313
+ for (const c of chunkGroup.chunks) {
1314
+ if (c !== chunk && c !== entrypointChunk && !c.hasRuntime()) {
1315
+ set.add(c);
1316
+ }
1317
+ }
1318
+ }
1319
+ }
1320
+ return set;
1321
+ }
1322
+
1323
+ /**
1324
+ * @param {Chunk} chunk the chunk
1325
+ * @returns {boolean} true, when it has dependent chunks
1326
+ */
1327
+ hasChunkEntryDependentChunks(chunk) {
1328
+ const cgc = this._getChunkGraphChunk(chunk);
1329
+ for (const chunkGroup of cgc.entryModules.values()) {
1330
+ for (const c of chunkGroup.chunks) {
1331
+ if (c !== chunk) {
1332
+ return true;
1333
+ }
1334
+ }
1335
+ }
1336
+ return false;
1337
+ }
1338
+
1339
+ /**
1340
+ * @param {Chunk} chunk the chunk
1341
+ * @returns {Iterable<RuntimeModule>} iterable of modules (do not modify)
1342
+ */
1343
+ getChunkRuntimeModulesIterable(chunk) {
1344
+ const cgc = this._getChunkGraphChunk(chunk);
1345
+ return cgc.runtimeModules;
1346
+ }
1347
+
1348
+ /**
1349
+ * @param {Chunk} chunk the chunk
1350
+ * @returns {RuntimeModule[]} array of modules in order of execution
1351
+ */
1352
+ getChunkRuntimeModulesInOrder(chunk) {
1353
+ const cgc = this._getChunkGraphChunk(chunk);
1354
+ const array = [...cgc.runtimeModules];
1355
+ array.sort(
1356
+ concatComparators(
1357
+ compareSelect(
1358
+ (r) => /** @type {RuntimeModule} */ (r).stage,
1359
+ compareIds
1360
+ ),
1361
+ compareModulesByIdentifier
1362
+ )
1363
+ );
1364
+ return array;
1365
+ }
1366
+
1367
+ /**
1368
+ * @param {Chunk} chunk the chunk
1369
+ * @returns {Iterable<RuntimeModule> | undefined} iterable of modules (do not modify)
1370
+ */
1371
+ getChunkFullHashModulesIterable(chunk) {
1372
+ const cgc = this._getChunkGraphChunk(chunk);
1373
+ return cgc.fullHashModules;
1374
+ }
1375
+
1376
+ /**
1377
+ * @param {Chunk} chunk the chunk
1378
+ * @returns {ReadonlySet<RuntimeModule> | undefined} set of modules (do not modify)
1379
+ */
1380
+ getChunkFullHashModulesSet(chunk) {
1381
+ const cgc = this._getChunkGraphChunk(chunk);
1382
+ return cgc.fullHashModules;
1383
+ }
1384
+
1385
+ /**
1386
+ * @param {Chunk} chunk the chunk
1387
+ * @returns {Iterable<RuntimeModule> | undefined} iterable of modules (do not modify)
1388
+ */
1389
+ getChunkDependentHashModulesIterable(chunk) {
1390
+ const cgc = this._getChunkGraphChunk(chunk);
1391
+ return cgc.dependentHashModules;
1392
+ }
1393
+
1394
+ /**
1395
+ * @param {Chunk} chunk the chunk
1396
+ * @returns {Iterable<EntryModuleWithChunkGroup>} iterable of modules (do not modify)
1397
+ */
1398
+ getChunkEntryModulesWithChunkGroupIterable(chunk) {
1399
+ const cgc = this._getChunkGraphChunk(chunk);
1400
+ return cgc.entryModules;
1401
+ }
1402
+
1403
+ /**
1404
+ * @param {AsyncDependenciesBlock} depBlock the async block
1405
+ * @returns {ChunkGroup | undefined} the chunk group
1406
+ */
1407
+ getBlockChunkGroup(depBlock) {
1408
+ return this._blockChunkGroups.get(depBlock);
1409
+ }
1410
+
1411
+ /**
1412
+ * @param {AsyncDependenciesBlock} depBlock the async block
1413
+ * @param {ChunkGroup} chunkGroup the chunk group
1414
+ * @returns {void}
1415
+ */
1416
+ connectBlockAndChunkGroup(depBlock, chunkGroup) {
1417
+ this._blockChunkGroups.set(depBlock, chunkGroup);
1418
+ chunkGroup.addBlock(depBlock);
1419
+ }
1420
+
1421
+ /**
1422
+ * @param {ChunkGroup} chunkGroup the chunk group
1423
+ * @returns {void}
1424
+ */
1425
+ disconnectChunkGroup(chunkGroup) {
1426
+ for (const block of chunkGroup.blocksIterable) {
1427
+ this._blockChunkGroups.delete(block);
1428
+ }
1429
+ // TODO refactor by moving blocks list into ChunkGraph
1430
+ chunkGroup._blocks.clear();
1431
+ }
1432
+
1433
+ /**
1434
+ * @param {Module} module the module
1435
+ * @returns {ModuleId | null} the id of the module
1436
+ */
1437
+ getModuleId(module) {
1438
+ const cgm = this._getChunkGraphModule(module);
1439
+ return cgm.id;
1440
+ }
1441
+
1442
+ /**
1443
+ * @param {Module} module the module
1444
+ * @param {ModuleId} id the id of the module
1445
+ * @returns {void}
1446
+ */
1447
+ setModuleId(module, id) {
1448
+ const cgm = this._getChunkGraphModule(module);
1449
+ cgm.id = id;
1450
+ }
1451
+
1452
+ /**
1453
+ * @param {string} runtime runtime
1454
+ * @returns {RuntimeId} the id of the runtime
1455
+ */
1456
+ getRuntimeId(runtime) {
1457
+ return /** @type {RuntimeId} */ (this._runtimeIds.get(runtime));
1458
+ }
1459
+
1460
+ /**
1461
+ * @param {string} runtime runtime
1462
+ * @param {RuntimeId} id the id of the runtime
1463
+ * @returns {void}
1464
+ */
1465
+ setRuntimeId(runtime, id) {
1466
+ this._runtimeIds.set(runtime, id);
1467
+ }
1468
+
1469
+ /**
1470
+ * @template T
1471
+ * @param {Module} module the module
1472
+ * @param {RuntimeSpecMap<T>} hashes hashes data
1473
+ * @param {RuntimeSpec} runtime the runtime
1474
+ * @returns {T} hash
1475
+ */
1476
+ _getModuleHashInfo(module, hashes, runtime) {
1477
+ if (!hashes) {
1478
+ throw new Error(
1479
+ `Module ${module.identifier()} has no hash info for runtime ${runtimeToString(
1480
+ runtime
1481
+ )} (hashes not set at all)`
1482
+ );
1483
+ } else if (runtime === undefined) {
1484
+ const hashInfoItems = new Set(hashes.values());
1485
+ if (hashInfoItems.size !== 1) {
1486
+ throw new Error(
1487
+ `No unique hash info entry for unspecified runtime for ${module.identifier()} (existing runtimes: ${Array.from(
1488
+ hashes.keys(),
1489
+ (r) => runtimeToString(r)
1490
+ ).join(", ")}).
1491
+ Caller might not support runtime-dependent code generation (opt-out via optimization.usedExports: "global").`
1492
+ );
1493
+ }
1494
+ return /** @type {T} */ (first(hashInfoItems));
1495
+ } else {
1496
+ const hashInfo = hashes.get(runtime);
1497
+ if (!hashInfo) {
1498
+ throw new Error(
1499
+ `Module ${module.identifier()} has no hash info for runtime ${runtimeToString(
1500
+ runtime
1501
+ )} (available runtimes ${Array.from(
1502
+ hashes.keys(),
1503
+ runtimeToString
1504
+ ).join(", ")})`
1505
+ );
1506
+ }
1507
+ return hashInfo;
1508
+ }
1509
+ }
1510
+
1511
+ /**
1512
+ * @param {Module} module the module
1513
+ * @param {RuntimeSpec} runtime the runtime
1514
+ * @returns {boolean} true, if the module has hashes for this runtime
1515
+ */
1516
+ hasModuleHashes(module, runtime) {
1517
+ const cgm = this._getChunkGraphModule(module);
1518
+ const hashes = /** @type {RuntimeSpecMap<ModuleHashInfo>} */ (cgm.hashes);
1519
+ return hashes && hashes.has(runtime);
1520
+ }
1521
+
1522
+ /**
1523
+ * @param {Module} module the module
1524
+ * @param {RuntimeSpec} runtime the runtime
1525
+ * @returns {string} hash
1526
+ */
1527
+ getModuleHash(module, runtime) {
1528
+ const cgm = this._getChunkGraphModule(module);
1529
+ const hashes = /** @type {RuntimeSpecMap<ModuleHashInfo>} */ (cgm.hashes);
1530
+ return this._getModuleHashInfo(module, hashes, runtime).hash;
1531
+ }
1532
+
1533
+ /**
1534
+ * @param {Module} module the module
1535
+ * @param {RuntimeSpec} runtime the runtime
1536
+ * @returns {string} hash
1537
+ */
1538
+ getRenderedModuleHash(module, runtime) {
1539
+ const cgm = this._getChunkGraphModule(module);
1540
+ const hashes = /** @type {RuntimeSpecMap<ModuleHashInfo>} */ (cgm.hashes);
1541
+ return this._getModuleHashInfo(module, hashes, runtime).renderedHash;
1542
+ }
1543
+
1544
+ /**
1545
+ * @param {Module} module the module
1546
+ * @param {RuntimeSpec} runtime the runtime
1547
+ * @param {string} hash the full hash
1548
+ * @param {string} renderedHash the shortened hash for rendering
1549
+ * @returns {void}
1550
+ */
1551
+ setModuleHashes(module, runtime, hash, renderedHash) {
1552
+ const cgm = this._getChunkGraphModule(module);
1553
+ if (cgm.hashes === undefined) {
1554
+ cgm.hashes = new RuntimeSpecMap();
1555
+ }
1556
+ cgm.hashes.set(runtime, new ModuleHashInfo(hash, renderedHash));
1557
+ }
1558
+
1559
+ /**
1560
+ * @param {Module} module the module
1561
+ * @param {RuntimeSpec} runtime the runtime
1562
+ * @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph when transferOwnership not false)
1563
+ * @param {boolean} transferOwnership true: transfer ownership of the items object, false: items is immutable and shared and won't be modified
1564
+ * @returns {void}
1565
+ */
1566
+ addModuleRuntimeRequirements(
1567
+ module,
1568
+ runtime,
1569
+ items,
1570
+ transferOwnership = true
1571
+ ) {
1572
+ const cgm = this._getChunkGraphModule(module);
1573
+ const runtimeRequirementsMap = cgm.runtimeRequirements;
1574
+ if (runtimeRequirementsMap === undefined) {
1575
+ /** @type {ChunkGraphRuntimeRequirements} */
1576
+ const map = new RuntimeSpecMap();
1577
+ // TODO avoid cloning item and track ownership instead
1578
+ map.set(runtime, transferOwnership ? items : new Set(items));
1579
+ cgm.runtimeRequirements = map;
1580
+ return;
1581
+ }
1582
+ runtimeRequirementsMap.update(runtime, (runtimeRequirements) => {
1583
+ if (runtimeRequirements === undefined) {
1584
+ return transferOwnership ? items : new Set(items);
1585
+ } else if (!transferOwnership || runtimeRequirements.size >= items.size) {
1586
+ for (const item of items) runtimeRequirements.add(item);
1587
+ return runtimeRequirements;
1588
+ }
1589
+
1590
+ for (const item of runtimeRequirements) items.add(item);
1591
+ return items;
1592
+ });
1593
+ }
1594
+
1595
+ /**
1596
+ * @param {Chunk} chunk the chunk
1597
+ * @param {RuntimeRequirements} items runtime requirements to be added (ownership of this Set is given to ChunkGraph)
1598
+ * @returns {void}
1599
+ */
1600
+ addChunkRuntimeRequirements(chunk, items) {
1601
+ const cgc = this._getChunkGraphChunk(chunk);
1602
+ const runtimeRequirements = cgc.runtimeRequirements;
1603
+ if (runtimeRequirements === undefined) {
1604
+ cgc.runtimeRequirements = items;
1605
+ } else if (runtimeRequirements.size >= items.size) {
1606
+ for (const item of items) runtimeRequirements.add(item);
1607
+ } else {
1608
+ for (const item of runtimeRequirements) items.add(item);
1609
+ cgc.runtimeRequirements = items;
1610
+ }
1611
+ }
1612
+
1613
+ /**
1614
+ * @param {Chunk} chunk the chunk
1615
+ * @param {Iterable<string>} items runtime requirements to be added
1616
+ * @returns {void}
1617
+ */
1618
+ addTreeRuntimeRequirements(chunk, items) {
1619
+ const cgc = this._getChunkGraphChunk(chunk);
1620
+ const runtimeRequirements = cgc.runtimeRequirementsInTree;
1621
+ for (const item of items) runtimeRequirements.add(item);
1622
+ }
1623
+
1624
+ /**
1625
+ * @param {Module} module the module
1626
+ * @param {RuntimeSpec} runtime the runtime
1627
+ * @returns {ReadOnlyRuntimeRequirements} runtime requirements
1628
+ */
1629
+ getModuleRuntimeRequirements(module, runtime) {
1630
+ const cgm = this._getChunkGraphModule(module);
1631
+ const runtimeRequirements =
1632
+ cgm.runtimeRequirements && cgm.runtimeRequirements.get(runtime);
1633
+ return runtimeRequirements === undefined ? EMPTY_SET : runtimeRequirements;
1634
+ }
1635
+
1636
+ /**
1637
+ * @param {Chunk} chunk the chunk
1638
+ * @returns {ReadOnlyRuntimeRequirements} runtime requirements
1639
+ */
1640
+ getChunkRuntimeRequirements(chunk) {
1641
+ const cgc = this._getChunkGraphChunk(chunk);
1642
+ const runtimeRequirements = cgc.runtimeRequirements;
1643
+ return runtimeRequirements === undefined ? EMPTY_SET : runtimeRequirements;
1644
+ }
1645
+
1646
+ /**
1647
+ * @param {Module} module the module
1648
+ * @param {RuntimeSpec} runtime the runtime
1649
+ * @param {boolean} withConnections include connections
1650
+ * @returns {string} hash
1651
+ */
1652
+ getModuleGraphHash(module, runtime, withConnections = true) {
1653
+ const cgm = this._getChunkGraphModule(module);
1654
+ return withConnections
1655
+ ? this._getModuleGraphHashWithConnections(cgm, module, runtime)
1656
+ : this._getModuleGraphHashBigInt(cgm, module, runtime).toString(16);
1657
+ }
1658
+
1659
+ /**
1660
+ * @param {Module} module the module
1661
+ * @param {RuntimeSpec} runtime the runtime
1662
+ * @param {boolean} withConnections include connections
1663
+ * @returns {bigint} hash
1664
+ */
1665
+ getModuleGraphHashBigInt(module, runtime, withConnections = true) {
1666
+ const cgm = this._getChunkGraphModule(module);
1667
+ return withConnections
1668
+ ? BigInt(
1669
+ `0x${this._getModuleGraphHashWithConnections(cgm, module, runtime)}`
1670
+ )
1671
+ : this._getModuleGraphHashBigInt(cgm, module, runtime);
1672
+ }
1673
+
1674
+ /**
1675
+ * @param {ChunkGraphModule} cgm the ChunkGraphModule
1676
+ * @param {Module} module the module
1677
+ * @param {RuntimeSpec} runtime the runtime
1678
+ * @returns {bigint} hash as big int
1679
+ */
1680
+ _getModuleGraphHashBigInt(cgm, module, runtime) {
1681
+ if (cgm.graphHashes === undefined) {
1682
+ cgm.graphHashes = new RuntimeSpecMap();
1683
+ }
1684
+ const graphHash = cgm.graphHashes.provide(runtime, () => {
1685
+ const hash = createHash(this._hashFunction);
1686
+ hash.update(`${cgm.id}${this.moduleGraph.isAsync(module)}`);
1687
+ const sourceTypes = this._getOverwrittenModuleSourceTypes(module);
1688
+ if (sourceTypes !== undefined) {
1689
+ for (const type of sourceTypes) hash.update(type);
1690
+ }
1691
+ this.moduleGraph.getExportsInfo(module).updateHash(hash, runtime);
1692
+ return BigInt(`0x${hash.digest("hex")}`);
1693
+ });
1694
+ return graphHash;
1695
+ }
1696
+
1697
+ /**
1698
+ * @param {ChunkGraphModule} cgm the ChunkGraphModule
1699
+ * @param {Module} module the module
1700
+ * @param {RuntimeSpec} runtime the runtime
1701
+ * @returns {string} hash
1702
+ */
1703
+ _getModuleGraphHashWithConnections(cgm, module, runtime) {
1704
+ if (cgm.graphHashesWithConnections === undefined) {
1705
+ cgm.graphHashesWithConnections = new RuntimeSpecMap();
1706
+ }
1707
+
1708
+ /**
1709
+ * @param {ConnectionState} state state
1710
+ * @returns {"F" | "T" | "O"} result
1711
+ */
1712
+ const activeStateToString = (state) => {
1713
+ if (state === false) return "F";
1714
+ if (state === true) return "T";
1715
+ if (state === ModuleGraphConnection.TRANSITIVE_ONLY) return "O";
1716
+ throw new Error("Not implemented active state");
1717
+ };
1718
+ const strict = module.buildMeta && module.buildMeta.strictHarmonyModule;
1719
+ return cgm.graphHashesWithConnections.provide(runtime, () => {
1720
+ const graphHash = this._getModuleGraphHashBigInt(
1721
+ cgm,
1722
+ module,
1723
+ runtime
1724
+ ).toString(16);
1725
+ const connections = this.moduleGraph.getOutgoingConnections(module);
1726
+ /** @type {Set<Module>} */
1727
+ const activeNamespaceModules = new Set();
1728
+ /** @type {Map<string, Module | Set<Module>>} */
1729
+ const connectedModules = new Map();
1730
+ /**
1731
+ * @param {ModuleGraphConnection} connection connection
1732
+ * @param {string} stateInfo state info
1733
+ */
1734
+ const processConnection = (connection, stateInfo) => {
1735
+ const module = connection.module;
1736
+ stateInfo += module.getExportsType(this.moduleGraph, strict);
1737
+ // cspell:word Tnamespace
1738
+ if (stateInfo === "Tnamespace") {
1739
+ activeNamespaceModules.add(module);
1740
+ } else {
1741
+ const oldModule = connectedModules.get(stateInfo);
1742
+ if (oldModule === undefined) {
1743
+ connectedModules.set(stateInfo, module);
1744
+ } else if (oldModule instanceof Set) {
1745
+ oldModule.add(module);
1746
+ } else if (oldModule !== module) {
1747
+ connectedModules.set(stateInfo, new Set([oldModule, module]));
1748
+ }
1749
+ }
1750
+ };
1751
+ if (runtime === undefined || typeof runtime === "string") {
1752
+ for (const connection of connections) {
1753
+ const state = connection.getActiveState(runtime);
1754
+ if (state === false) continue;
1755
+ processConnection(connection, state === true ? "T" : "O");
1756
+ }
1757
+ } else {
1758
+ // cspell:word Tnamespace
1759
+ for (const connection of connections) {
1760
+ /** @type {Set<ConnectionState>} */
1761
+ const states = new Set();
1762
+ let stateInfo = "";
1763
+ forEachRuntime(
1764
+ runtime,
1765
+ (runtime) => {
1766
+ const state = connection.getActiveState(runtime);
1767
+ states.add(state);
1768
+ stateInfo += activeStateToString(state) + runtime;
1769
+ },
1770
+ true
1771
+ );
1772
+ if (states.size === 1) {
1773
+ const state = first(states);
1774
+ if (state === false) continue;
1775
+ stateInfo = activeStateToString(
1776
+ /** @type {ConnectionState} */
1777
+ (state)
1778
+ );
1779
+ }
1780
+ processConnection(connection, stateInfo);
1781
+ }
1782
+ }
1783
+ // cspell:word Tnamespace
1784
+ if (activeNamespaceModules.size === 0 && connectedModules.size === 0) {
1785
+ return graphHash;
1786
+ }
1787
+ const connectedModulesInOrder =
1788
+ connectedModules.size > 1
1789
+ ? [...connectedModules].sort(([a], [b]) => (a < b ? -1 : 1))
1790
+ : connectedModules;
1791
+ const hash = createHash(this._hashFunction);
1792
+ /**
1793
+ * @param {Module} module module
1794
+ */
1795
+ const addModuleToHash = (module) => {
1796
+ hash.update(
1797
+ this._getModuleGraphHashBigInt(
1798
+ this._getChunkGraphModule(module),
1799
+ module,
1800
+ runtime
1801
+ ).toString(16)
1802
+ );
1803
+ };
1804
+ /**
1805
+ * @param {Set<Module>} modules modules
1806
+ */
1807
+ const addModulesToHash = (modules) => {
1808
+ let xor = ZERO_BIG_INT;
1809
+ for (const m of modules) {
1810
+ xor ^= this._getModuleGraphHashBigInt(
1811
+ this._getChunkGraphModule(m),
1812
+ m,
1813
+ runtime
1814
+ );
1815
+ }
1816
+ hash.update(xor.toString(16));
1817
+ };
1818
+ if (activeNamespaceModules.size === 1) {
1819
+ addModuleToHash(
1820
+ /** @type {Module} */ (activeNamespaceModules.values().next().value)
1821
+ );
1822
+ } else if (activeNamespaceModules.size > 1) {
1823
+ addModulesToHash(activeNamespaceModules);
1824
+ }
1825
+ for (const [stateInfo, modules] of connectedModulesInOrder) {
1826
+ hash.update(stateInfo);
1827
+ if (modules instanceof Set) {
1828
+ addModulesToHash(modules);
1829
+ } else {
1830
+ addModuleToHash(modules);
1831
+ }
1832
+ }
1833
+ hash.update(graphHash);
1834
+ return hash.digest("hex");
1835
+ });
1836
+ }
1837
+
1838
+ /**
1839
+ * @param {Chunk} chunk the chunk
1840
+ * @returns {ReadOnlyRuntimeRequirements} runtime requirements
1841
+ */
1842
+ getTreeRuntimeRequirements(chunk) {
1843
+ const cgc = this._getChunkGraphChunk(chunk);
1844
+ return cgc.runtimeRequirementsInTree;
1845
+ }
1846
+
1847
+ // TODO remove in webpack 6
1848
+ /**
1849
+ * @param {Module} module the module
1850
+ * @param {string} deprecateMessage message for the deprecation message
1851
+ * @param {string} deprecationCode code for the deprecation
1852
+ * @returns {ChunkGraph} the chunk graph
1853
+ */
1854
+ static getChunkGraphForModule(module, deprecateMessage, deprecationCode) {
1855
+ const fn = deprecateGetChunkGraphForModuleMap.get(deprecateMessage);
1856
+ if (fn) return fn(module);
1857
+ const newFn = util.deprecate(
1858
+ /**
1859
+ * @param {Module} module the module
1860
+ * @returns {ChunkGraph} the chunk graph
1861
+ */
1862
+ (module) => {
1863
+ const chunkGraph = chunkGraphForModuleMap.get(module);
1864
+ if (!chunkGraph) {
1865
+ throw new Error(
1866
+ `${
1867
+ deprecateMessage
1868
+ }: There was no ChunkGraph assigned to the Module for backward-compat (Use the new API)`
1869
+ );
1870
+ }
1871
+ return chunkGraph;
1872
+ },
1873
+ `${deprecateMessage}: Use new ChunkGraph API`,
1874
+ deprecationCode
1875
+ );
1876
+ deprecateGetChunkGraphForModuleMap.set(deprecateMessage, newFn);
1877
+ return newFn(module);
1878
+ }
1879
+
1880
+ // TODO remove in webpack 6
1881
+ /**
1882
+ * @param {Module} module the module
1883
+ * @param {ChunkGraph} chunkGraph the chunk graph
1884
+ * @returns {void}
1885
+ */
1886
+ static setChunkGraphForModule(module, chunkGraph) {
1887
+ chunkGraphForModuleMap.set(module, chunkGraph);
1888
+ }
1889
+
1890
+ // TODO remove in webpack 6
1891
+ /**
1892
+ * @param {Module} module the module
1893
+ * @returns {void}
1894
+ */
1895
+ static clearChunkGraphForModule(module) {
1896
+ chunkGraphForModuleMap.delete(module);
1897
+ }
1898
+
1899
+ // TODO remove in webpack 6
1900
+ /**
1901
+ * @param {Chunk} chunk the chunk
1902
+ * @param {string} deprecateMessage message for the deprecation message
1903
+ * @param {string} deprecationCode code for the deprecation
1904
+ * @returns {ChunkGraph} the chunk graph
1905
+ */
1906
+ static getChunkGraphForChunk(chunk, deprecateMessage, deprecationCode) {
1907
+ const fn = deprecateGetChunkGraphForChunkMap.get(deprecateMessage);
1908
+ if (fn) return fn(chunk);
1909
+ const newFn = util.deprecate(
1910
+ /**
1911
+ * @param {Chunk} chunk the chunk
1912
+ * @returns {ChunkGraph} the chunk graph
1913
+ */
1914
+ (chunk) => {
1915
+ const chunkGraph = chunkGraphForChunkMap.get(chunk);
1916
+ if (!chunkGraph) {
1917
+ throw new Error(
1918
+ `${
1919
+ deprecateMessage
1920
+ }There was no ChunkGraph assigned to the Chunk for backward-compat (Use the new API)`
1921
+ );
1922
+ }
1923
+ return chunkGraph;
1924
+ },
1925
+ `${deprecateMessage}: Use new ChunkGraph API`,
1926
+ deprecationCode
1927
+ );
1928
+ deprecateGetChunkGraphForChunkMap.set(deprecateMessage, newFn);
1929
+ return newFn(chunk);
1930
+ }
1931
+
1932
+ // TODO remove in webpack 6
1933
+ /**
1934
+ * @param {Chunk} chunk the chunk
1935
+ * @param {ChunkGraph} chunkGraph the chunk graph
1936
+ * @returns {void}
1937
+ */
1938
+ static setChunkGraphForChunk(chunk, chunkGraph) {
1939
+ chunkGraphForChunkMap.set(chunk, chunkGraph);
1940
+ }
1941
+
1942
+ // TODO remove in webpack 6
1943
+ /**
1944
+ * @param {Chunk} chunk the chunk
1945
+ * @returns {void}
1946
+ */
1947
+ static clearChunkGraphForChunk(chunk) {
1948
+ chunkGraphForChunkMap.delete(chunk);
1949
+ }
1950
+ }
1951
+
1952
+ // TODO remove in webpack 6
1953
+ /** @type {WeakMap<Module, ChunkGraph>} */
1954
+ const chunkGraphForModuleMap = new WeakMap();
1955
+
1956
+ // TODO remove in webpack 6
1957
+ /** @type {WeakMap<Chunk, ChunkGraph>} */
1958
+ const chunkGraphForChunkMap = new WeakMap();
1959
+
1960
+ // TODO remove in webpack 6
1961
+ /** @type {Map<string, (module: Module) => ChunkGraph>} */
1962
+ const deprecateGetChunkGraphForModuleMap = new Map();
1963
+
1964
+ // TODO remove in webpack 6
1965
+ /** @type {Map<string, (chunk: Chunk) => ChunkGraph>} */
1966
+ const deprecateGetChunkGraphForChunkMap = new Map();
1967
+
1968
+ module.exports = ChunkGraph;