webpack 5.106.0 → 5.106.2

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 (553) hide show
  1. package/lib/APIPlugin.js +3 -1
  2. package/lib/AbstractMethodError.js +10 -1
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AsyncDependencyToInitialChunkError.js +6 -1
  5. package/lib/AutomaticPrefetchPlugin.js +6 -1
  6. package/lib/BannerPlugin.js +10 -1
  7. package/lib/Cache.js +26 -1
  8. package/lib/CacheFacade.js +26 -0
  9. package/lib/CaseSensitiveModulesWarning.js +9 -1
  10. package/lib/Chunk.js +46 -0
  11. package/lib/ChunkGraph.js +111 -0
  12. package/lib/ChunkGroup.js +57 -13
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CleanPlugin.js +14 -1
  15. package/lib/CodeGenerationResults.js +19 -0
  16. package/lib/CommentCompilationWarning.js +6 -0
  17. package/lib/CompatibilityPlugin.js +15 -1
  18. package/lib/Compilation.js +127 -1
  19. package/lib/Compiler.js +37 -4
  20. package/lib/ConcatenationScope.js +24 -1
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +4 -1
  23. package/lib/ContextExclusionPlugin.js +2 -1
  24. package/lib/ContextModule.js +12 -0
  25. package/lib/ContextModuleFactory.js +10 -0
  26. package/lib/ContextReplacementPlugin.js +4 -1
  27. package/lib/CssModule.js +6 -0
  28. package/lib/DefinePlugin.js +20 -7
  29. package/lib/DelegatedModule.js +13 -0
  30. package/lib/DelegatedModuleFactoryPlugin.js +3 -0
  31. package/lib/DelegatedPlugin.js +2 -1
  32. package/lib/DependenciesBlock.js +6 -1
  33. package/lib/Dependency.js +26 -3
  34. package/lib/DependencyTemplate.js +5 -0
  35. package/lib/DependencyTemplates.js +4 -0
  36. package/lib/DllEntryPlugin.js +2 -1
  37. package/lib/DllModule.js +11 -0
  38. package/lib/DllModuleFactory.js +1 -0
  39. package/lib/DllPlugin.js +2 -1
  40. package/lib/DllReferencePlugin.js +11 -6
  41. package/lib/DotenvPlugin.js +3 -0
  42. package/lib/DynamicEntryPlugin.js +3 -1
  43. package/lib/EntryOptionPlugin.js +3 -0
  44. package/lib/EntryPlugin.js +2 -1
  45. package/lib/Entrypoint.js +4 -0
  46. package/lib/EnvironmentPlugin.js +2 -1
  47. package/lib/ErrorHelpers.js +7 -0
  48. package/lib/EvalDevToolModulePlugin.js +3 -1
  49. package/lib/EvalSourceMapDevToolPlugin.js +3 -1
  50. package/lib/ExportsInfo.js +56 -2
  51. package/lib/ExportsInfoApiPlugin.js +2 -1
  52. package/lib/ExternalModule.js +38 -0
  53. package/lib/ExternalModuleFactoryPlugin.js +10 -0
  54. package/lib/ExternalsPlugin.js +2 -1
  55. package/lib/FileSystemInfo.js +105 -0
  56. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  57. package/lib/FlagDependencyExportsPlugin.js +4 -1
  58. package/lib/FlagDependencyUsagePlugin.js +5 -1
  59. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  60. package/lib/Generator.js +13 -0
  61. package/lib/GraphHelpers.js +3 -0
  62. package/lib/HookWebpackError.js +6 -0
  63. package/lib/HotModuleReplacementPlugin.js +9 -1
  64. package/lib/IgnoreErrorModuleFactory.js +2 -0
  65. package/lib/IgnorePlugin.js +2 -1
  66. package/lib/IgnoreWarningsPlugin.js +2 -1
  67. package/lib/InitFragment.js +10 -0
  68. package/lib/InvalidDependenciesModuleWarning.js +1 -0
  69. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  70. package/lib/LibManifestPlugin.js +4 -1
  71. package/lib/LibraryTemplatePlugin.js +2 -1
  72. package/lib/LoaderOptionsPlugin.js +3 -1
  73. package/lib/LoaderTargetPlugin.js +2 -1
  74. package/lib/MainTemplate.js +15 -0
  75. package/lib/ManifestPlugin.js +9 -2
  76. package/lib/Module.js +82 -4
  77. package/lib/ModuleBuildError.js +3 -0
  78. package/lib/ModuleDependencyWarning.js +1 -0
  79. package/lib/ModuleError.js +2 -0
  80. package/lib/ModuleFactory.js +5 -0
  81. package/lib/ModuleFilenameHelpers.js +3 -0
  82. package/lib/ModuleGraph.js +66 -0
  83. package/lib/ModuleGraphConnection.js +9 -0
  84. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  85. package/lib/ModuleNotFoundError.js +1 -0
  86. package/lib/ModuleParseError.js +3 -0
  87. package/lib/ModuleRestoreError.js +1 -0
  88. package/lib/ModuleSourceTypeConstants.js +1 -0
  89. package/lib/ModuleStoreError.js +1 -0
  90. package/lib/ModuleTemplate.js +8 -0
  91. package/lib/ModuleWarning.js +3 -0
  92. package/lib/MultiCompiler.js +28 -0
  93. package/lib/MultiStats.js +8 -0
  94. package/lib/MultiWatching.js +3 -0
  95. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  96. package/lib/NodeStuffInWebError.js +1 -0
  97. package/lib/NodeStuffPlugin.js +10 -1
  98. package/lib/NormalModule.js +30 -2
  99. package/lib/NormalModuleFactory.js +25 -0
  100. package/lib/NormalModuleReplacementPlugin.js +1 -1
  101. package/lib/NullFactory.js +1 -0
  102. package/lib/OptionsApply.js +1 -0
  103. package/lib/Parser.js +2 -0
  104. package/lib/PlatformPlugin.js +2 -1
  105. package/lib/PrefetchPlugin.js +2 -1
  106. package/lib/ProgressPlugin.js +29 -12
  107. package/lib/ProvidePlugin.js +3 -1
  108. package/lib/RawModule.js +12 -0
  109. package/lib/RecordIdsPlugin.js +8 -0
  110. package/lib/RequestShortener.js +8 -0
  111. package/lib/RequireJsStuffPlugin.js +2 -1
  112. package/lib/ResolverFactory.js +5 -0
  113. package/lib/RuntimeGlobals.js +1 -0
  114. package/lib/RuntimeModule.js +13 -0
  115. package/lib/RuntimePlugin.js +2 -0
  116. package/lib/RuntimeTemplate.js +35 -1
  117. package/lib/SelfModuleFactory.js +2 -0
  118. package/lib/SizeFormatHelpers.js +1 -0
  119. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  120. package/lib/SourceMapDevToolPlugin.js +3 -1
  121. package/lib/Stats.js +5 -0
  122. package/lib/Template.js +20 -0
  123. package/lib/TemplatedPathPlugin.js +10 -3
  124. package/lib/UnhandledSchemeError.js +6 -0
  125. package/lib/UnsupportedFeatureWarning.js +1 -0
  126. package/lib/UseStrictPlugin.js +2 -1
  127. package/lib/WarnCaseSensitiveModulesPlugin.js +1 -1
  128. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  129. package/lib/WarnNoModeSetPlugin.js +1 -1
  130. package/lib/WatchIgnorePlugin.js +4 -1
  131. package/lib/Watching.js +14 -0
  132. package/lib/WebpackError.js +3 -0
  133. package/lib/WebpackIsIncludedPlugin.js +2 -0
  134. package/lib/WebpackOptionsApply.js +1 -0
  135. package/lib/WebpackOptionsDefaulter.js +1 -0
  136. package/lib/asset/AssetBytesGenerator.js +6 -0
  137. package/lib/asset/AssetBytesParser.js +1 -0
  138. package/lib/asset/AssetGenerator.js +20 -2
  139. package/lib/asset/AssetModulesPlugin.js +4 -1
  140. package/lib/asset/AssetParser.js +2 -0
  141. package/lib/asset/AssetSourceGenerator.js +6 -0
  142. package/lib/asset/AssetSourceParser.js +1 -0
  143. package/lib/asset/RawDataUrlModule.js +11 -0
  144. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  145. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  146. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  147. package/lib/buildChunkGraph.js +15 -0
  148. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  149. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  150. package/lib/cache/IdleFileCachePlugin.js +2 -1
  151. package/lib/cache/MemoryCachePlugin.js +1 -1
  152. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  153. package/lib/cache/PackFileCacheStrategy.js +29 -0
  154. package/lib/cache/ResolverCachePlugin.js +10 -1
  155. package/lib/cache/getLazyHashedEtag.js +4 -0
  156. package/lib/cache/mergeEtags.js +2 -0
  157. package/lib/cli.js +30 -0
  158. package/lib/config/browserslistTargetHandler.js +2 -0
  159. package/lib/config/defaults.js +35 -2
  160. package/lib/config/normalization.js +12 -0
  161. package/lib/config/target.js +11 -0
  162. package/lib/container/ContainerEntryDependency.js +2 -0
  163. package/lib/container/ContainerEntryModule.js +12 -0
  164. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  165. package/lib/container/ContainerExposedDependency.js +4 -0
  166. package/lib/container/ContainerPlugin.js +2 -1
  167. package/lib/container/ContainerReferencePlugin.js +2 -1
  168. package/lib/container/FallbackDependency.js +4 -0
  169. package/lib/container/FallbackItemDependency.js +1 -0
  170. package/lib/container/FallbackModule.js +12 -0
  171. package/lib/container/FallbackModuleFactory.js +1 -0
  172. package/lib/container/ModuleFederationPlugin.js +3 -1
  173. package/lib/container/RemoteModule.js +13 -0
  174. package/lib/container/RemoteRuntimeModule.js +1 -0
  175. package/lib/container/RemoteToExternalDependency.js +1 -0
  176. package/lib/container/options.js +7 -0
  177. package/lib/css/CssGenerator.js +35 -14
  178. package/lib/css/CssInjectStyleRuntimeModule.js +1 -0
  179. package/lib/css/CssLoadingRuntimeModule.js +1 -0
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +1 -0
  181. package/lib/css/CssModulesPlugin.js +69 -3
  182. package/lib/css/CssParser.js +71 -1
  183. package/lib/css/walkCssTokens.js +31 -0
  184. package/lib/debug/ProfilingPlugin.js +19 -1
  185. package/lib/dependencies/AMDDefineDependency.js +7 -0
  186. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  187. package/lib/dependencies/AMDPlugin.js +4 -1
  188. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  189. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  190. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  191. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +13 -0
  192. package/lib/dependencies/AMDRequireDependency.js +4 -0
  193. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  194. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  195. package/lib/dependencies/CachedConstDependency.js +6 -1
  196. package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
  197. package/lib/dependencies/CommonJsExportRequireDependency.js +8 -0
  198. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  199. package/lib/dependencies/CommonJsExportsParserPlugin.js +8 -0
  200. package/lib/dependencies/CommonJsFullRequireDependency.js +4 -0
  201. package/lib/dependencies/CommonJsImportsParserPlugin.js +20 -0
  202. package/lib/dependencies/CommonJsPlugin.js +4 -1
  203. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  204. package/lib/dependencies/CommonJsRequireDependency.js +3 -0
  205. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  206. package/lib/dependencies/ConstDependency.js +6 -1
  207. package/lib/dependencies/ContextDependency.js +8 -1
  208. package/lib/dependencies/ContextDependencyHelpers.js +3 -0
  209. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  210. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  211. package/lib/dependencies/ContextElementDependency.js +4 -0
  212. package/lib/dependencies/CreateRequireParserPlugin.js +6 -0
  213. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  214. package/lib/dependencies/CriticalDependencyWarning.js +1 -0
  215. package/lib/dependencies/CssIcssExportDependency.js +11 -3
  216. package/lib/dependencies/CssIcssImportDependency.js +4 -1
  217. package/lib/dependencies/CssIcssSymbolDependency.js +5 -1
  218. package/lib/dependencies/CssImportDependency.js +4 -0
  219. package/lib/dependencies/CssUrlDependency.js +7 -0
  220. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  221. package/lib/dependencies/DllEntryDependency.js +3 -0
  222. package/lib/dependencies/DynamicExports.js +5 -0
  223. package/lib/dependencies/EntryDependency.js +1 -0
  224. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  225. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  226. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  227. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  228. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  229. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  230. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  231. package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -0
  232. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  233. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +2 -0
  234. package/lib/dependencies/HarmonyExportExpressionDependency.js +14 -5
  235. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  236. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +33 -2
  237. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  238. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  239. package/lib/dependencies/HarmonyExports.js +2 -0
  240. package/lib/dependencies/HarmonyImportDependency.js +11 -0
  241. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +9 -0
  242. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  243. package/lib/dependencies/HarmonyImportSpecifierDependency.js +17 -2
  244. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  245. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  246. package/lib/dependencies/ImportContextDependency.js +4 -0
  247. package/lib/dependencies/ImportDependency.js +5 -0
  248. package/lib/dependencies/ImportEagerDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  250. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +3 -0
  251. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  252. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  253. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  254. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  255. package/lib/dependencies/ImportParserPlugin.js +7 -0
  256. package/lib/dependencies/ImportPhase.js +6 -2
  257. package/lib/dependencies/ImportPlugin.js +2 -1
  258. package/lib/dependencies/ImportWeakDependency.js +2 -0
  259. package/lib/dependencies/JsonExportsDependency.js +6 -1
  260. package/lib/dependencies/LoaderDependency.js +2 -0
  261. package/lib/dependencies/LoaderImportDependency.js +2 -0
  262. package/lib/dependencies/LoaderPlugin.js +4 -1
  263. package/lib/dependencies/LocalModule.js +4 -0
  264. package/lib/dependencies/LocalModuleDependency.js +4 -0
  265. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  266. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  267. package/lib/dependencies/ModuleDependency.js +7 -0
  268. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  269. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  270. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  271. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  272. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  273. package/lib/dependencies/NullDependency.js +2 -0
  274. package/lib/dependencies/PrefetchDependency.js +1 -0
  275. package/lib/dependencies/ProvidedDependency.js +6 -1
  276. package/lib/dependencies/PureExpressionDependency.js +7 -1
  277. package/lib/dependencies/RequireContextDependency.js +1 -0
  278. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  279. package/lib/dependencies/RequireContextPlugin.js +2 -1
  280. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  281. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  282. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  283. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  284. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  285. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  286. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  287. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  288. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  289. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  290. package/lib/dependencies/RequireResolveDependency.js +1 -0
  291. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  292. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  293. package/lib/dependencies/StaticExportsDependency.js +3 -0
  294. package/lib/dependencies/SystemPlugin.js +4 -1
  295. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  296. package/lib/dependencies/URLContextDependency.js +3 -0
  297. package/lib/dependencies/URLDependency.js +6 -0
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +4 -0
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  301. package/lib/dependencies/WebAssemblyImportDependency.js +4 -1
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  303. package/lib/dependencies/WorkerDependency.js +6 -1
  304. package/lib/dependencies/WorkerPlugin.js +9 -1
  305. package/lib/dependencies/getFunctionExpression.js +1 -0
  306. package/lib/dependencies/processExportInfo.js +1 -0
  307. package/lib/electron/ElectronTargetPlugin.js +2 -1
  308. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  309. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  310. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  311. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  312. package/lib/formatLocation.js +2 -0
  313. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  314. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  315. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  316. package/lib/hmr/lazyCompilationBackend.js +2 -0
  317. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  318. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  319. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  320. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  321. package/lib/ids/IdHelpers.js +20 -0
  322. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  323. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  324. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  325. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  326. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  327. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  328. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  329. package/lib/index.js +5 -0
  330. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  331. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  332. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  333. package/lib/javascript/ChunkHelpers.js +1 -0
  334. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  335. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  336. package/lib/javascript/JavascriptGenerator.js +10 -0
  337. package/lib/javascript/JavascriptModulesPlugin.js +23 -1
  338. package/lib/javascript/JavascriptParser.js +163 -0
  339. package/lib/javascript/JavascriptParserHelpers.js +6 -0
  340. package/lib/javascript/StartupHelpers.js +5 -0
  341. package/lib/json/JsonData.js +5 -0
  342. package/lib/json/JsonGenerator.js +21 -0
  343. package/lib/json/JsonModulesPlugin.js +1 -1
  344. package/lib/json/JsonParser.js +8 -10
  345. package/lib/library/AbstractLibraryPlugin.js +16 -1
  346. package/lib/library/AmdLibraryPlugin.js +8 -0
  347. package/lib/library/AssignLibraryPlugin.js +16 -0
  348. package/lib/library/EnableLibraryPlugin.js +7 -1
  349. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  350. package/lib/library/JsonpLibraryPlugin.js +8 -0
  351. package/lib/library/ModuleLibraryPlugin.js +12 -1
  352. package/lib/library/SystemLibraryPlugin.js +8 -0
  353. package/lib/library/UmdLibraryPlugin.js +16 -0
  354. package/lib/logging/Logger.js +17 -0
  355. package/lib/logging/createConsoleLogger.js +7 -0
  356. package/lib/logging/runtime.js +2 -0
  357. package/lib/logging/truncateArgs.js +2 -0
  358. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  359. package/lib/node/NodeEnvironmentPlugin.js +3 -1
  360. package/lib/node/NodeSourcePlugin.js +1 -1
  361. package/lib/node/NodeTargetPlugin.js +2 -1
  362. package/lib/node/NodeTemplatePlugin.js +3 -1
  363. package/lib/node/NodeWatchFileSystem.js +2 -0
  364. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  365. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  366. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  367. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  368. package/lib/node/nodeConsole.js +3 -0
  369. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  370. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  371. package/lib/optimize/ConcatenatedModule.js +11 -0
  372. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  373. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  374. package/lib/optimize/InnerGraph.js +15 -0
  375. package/lib/optimize/InnerGraphPlugin.js +3 -1
  376. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  377. package/lib/optimize/MangleExportsPlugin.js +5 -1
  378. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  379. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  380. package/lib/optimize/MinMaxSizeWarning.js +1 -0
  381. package/lib/optimize/ModuleConcatenationPlugin.js +21 -1
  382. package/lib/optimize/RealContentHashPlugin.js +16 -1
  383. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  384. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  385. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  386. package/lib/optimize/SideEffectsFlagPlugin.js +7 -1
  387. package/lib/optimize/SplitChunksPlugin.js +49 -1
  388. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -0
  389. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -0
  390. package/lib/performance/SizeLimitsPlugin.js +7 -1
  391. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  392. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  393. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  394. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -0
  395. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  396. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  397. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  398. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  399. package/lib/rules/RuleSetCompiler.js +18 -0
  400. package/lib/rules/UseEffectRulePlugin.js +6 -0
  401. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  402. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  403. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  404. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  405. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  406. package/lib/runtime/CompatRuntimeModule.js +2 -0
  407. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  408. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  409. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  410. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  411. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  412. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  413. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  414. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  415. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  416. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  417. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  418. package/lib/runtime/HelperRuntimeModule.js +5 -0
  419. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  420. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +2 -0
  421. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  422. package/lib/runtime/NonceRuntimeModule.js +1 -0
  423. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  424. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  425. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  426. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  427. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  428. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  429. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  430. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  431. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  432. package/lib/schemes/DataUriPlugin.js +1 -1
  433. package/lib/schemes/FileUriPlugin.js +1 -1
  434. package/lib/schemes/HttpUriPlugin.js +43 -1
  435. package/lib/schemes/VirtualUrlPlugin.js +6 -1
  436. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  437. package/lib/serialization/ArraySerializer.js +2 -0
  438. package/lib/serialization/BinaryMiddleware.js +20 -1
  439. package/lib/serialization/DateObjectSerializer.js +2 -0
  440. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  441. package/lib/serialization/FileMiddleware.js +21 -0
  442. package/lib/serialization/MapObjectSerializer.js +2 -0
  443. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  444. package/lib/serialization/ObjectMiddleware.js +23 -0
  445. package/lib/serialization/PlainObjectSerializer.js +7 -0
  446. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  447. package/lib/serialization/Serializer.js +5 -0
  448. package/lib/serialization/SerializerMiddleware.js +12 -0
  449. package/lib/serialization/SetObjectSerializer.js +2 -0
  450. package/lib/serialization/SingleItemMiddleware.js +3 -0
  451. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  452. package/lib/sharing/ConsumeSharedModule.js +15 -0
  453. package/lib/sharing/ConsumeSharedPlugin.js +6 -1
  454. package/lib/sharing/ConsumeSharedRuntimeModule.js +1 -0
  455. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  456. package/lib/sharing/ProvideSharedDependency.js +4 -0
  457. package/lib/sharing/ProvideSharedModule.js +11 -0
  458. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  459. package/lib/sharing/ProvideSharedPlugin.js +4 -1
  460. package/lib/sharing/SharePlugin.js +2 -1
  461. package/lib/sharing/ShareRuntimeModule.js +1 -0
  462. package/lib/sharing/resolveMatchedConfigs.js +3 -0
  463. package/lib/sharing/utils.js +8 -0
  464. package/lib/stats/DefaultStatsFactoryPlugin.js +56 -1
  465. package/lib/stats/DefaultStatsPresetPlugin.js +11 -1
  466. package/lib/stats/DefaultStatsPrinterPlugin.js +37 -1
  467. package/lib/stats/StatsFactory.js +12 -0
  468. package/lib/stats/StatsPrinter.js +7 -0
  469. package/lib/url/URLParserPlugin.js +6 -0
  470. package/lib/util/AppendOnlyStackedSet.js +15 -0
  471. package/lib/util/ArrayHelpers.js +1 -0
  472. package/lib/util/ArrayQueue.js +10 -5
  473. package/lib/util/AsyncQueue.js +20 -0
  474. package/lib/util/IterableHelpers.js +3 -0
  475. package/lib/util/LazyBucketSortedSet.js +21 -0
  476. package/lib/util/LazySet.js +39 -0
  477. package/lib/util/ParallelismFactorCalculator.js +1 -0
  478. package/lib/util/Queue.js +6 -3
  479. package/lib/util/Semaphore.js +14 -1
  480. package/lib/util/SetHelpers.js +3 -0
  481. package/lib/util/SortableSet.js +6 -0
  482. package/lib/util/StackedCacheMap.js +20 -3
  483. package/lib/util/StackedMap.js +45 -0
  484. package/lib/util/StringXor.js +1 -1
  485. package/lib/util/TupleQueue.js +7 -3
  486. package/lib/util/TupleSet.js +13 -0
  487. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  488. package/lib/util/WeakTupleMap.js +33 -0
  489. package/lib/util/binarySearchBounds.js +1 -0
  490. package/lib/util/cleverMerge.js +17 -0
  491. package/lib/util/comparators.js +31 -0
  492. package/lib/util/compileBooleanMatcher.js +9 -0
  493. package/lib/util/concatenate.js +6 -0
  494. package/lib/util/conventions.js +4 -0
  495. package/lib/util/dataURL.js +1 -0
  496. package/lib/util/deprecation.js +19 -0
  497. package/lib/util/deterministicGrouping.js +20 -0
  498. package/lib/util/extractSourceMap.js +1 -0
  499. package/lib/util/extractUrlAndGlobal.js +1 -0
  500. package/lib/util/findGraphRoots.js +5 -0
  501. package/lib/util/fs.js +63 -0
  502. package/lib/util/generateDebugId.js +1 -0
  503. package/lib/util/hash/BatchedHash.js +1 -0
  504. package/lib/util/hash/BulkUpdateHash.js +1 -0
  505. package/lib/util/hash/hash-digest.js +8 -0
  506. package/lib/util/hash/wasm-hash.js +5 -0
  507. package/lib/util/identifier.js +19 -0
  508. package/lib/util/magicComment.js +1 -0
  509. package/lib/util/makeSerializable.js +6 -0
  510. package/lib/util/memoize.js +2 -0
  511. package/lib/util/mimeTypes.js +176 -0
  512. package/lib/util/nonNumericOnlyHash.js +1 -0
  513. package/lib/util/parseJson.js +112 -0
  514. package/lib/util/processAsyncTree.js +8 -0
  515. package/lib/util/property.js +1 -0
  516. package/lib/util/registerExternalSerializer.js +20 -0
  517. package/lib/util/removeBOM.js +1 -0
  518. package/lib/util/runtime.js +32 -0
  519. package/lib/util/semver.js +15 -0
  520. package/lib/util/serialization.js +2 -0
  521. package/lib/util/smartGrouping.js +8 -0
  522. package/lib/util/source.js +2 -0
  523. package/lib/validateSchema.js +1 -0
  524. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  525. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  526. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  527. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  528. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  529. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +10 -1
  530. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -0
  531. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  532. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
  533. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  534. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +1 -1
  535. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  536. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
  537. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  538. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  539. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  540. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  541. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  542. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  543. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  544. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  545. package/lib/web/JsonpTemplatePlugin.js +2 -1
  546. package/lib/webpack.js +10 -0
  547. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  548. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  549. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  550. package/package.json +12 -14
  551. package/schemas/WebpackOptions.check.js +1 -1
  552. package/schemas/WebpackOptions.json +44 -55
  553. package/types.d.ts +4594 -331
@@ -17,6 +17,7 @@ const DONE_STATE = 2;
17
17
  let inHandleResult = 0;
18
18
 
19
19
  /**
20
+ * Defines the callback callback.
20
21
  * @template T
21
22
  * @callback Callback
22
23
  * @param {(WebpackError | null)=} err
@@ -25,12 +26,14 @@ let inHandleResult = 0;
25
26
  */
26
27
 
27
28
  /**
29
+ * Represents AsyncQueueEntry.
28
30
  * @template T
29
31
  * @template K
30
32
  * @template R
31
33
  */
32
34
  class AsyncQueueEntry {
33
35
  /**
36
+ * Creates an instance of AsyncQueueEntry.
34
37
  * @param {T} item the item
35
38
  * @param {Callback<R>} callback the callback
36
39
  */
@@ -50,22 +53,26 @@ class AsyncQueueEntry {
50
53
  }
51
54
 
52
55
  /**
56
+ * Defines the get key type used by this module.
53
57
  * @template T, K
54
58
  * @typedef {(item: T) => K} getKey
55
59
  */
56
60
 
57
61
  /**
62
+ * Defines the processor type used by this module.
58
63
  * @template T, R
59
64
  * @typedef {(item: T, callback: Callback<R>) => void} Processor
60
65
  */
61
66
 
62
67
  /**
68
+ * Represents AsyncQueue.
63
69
  * @template T
64
70
  * @template K
65
71
  * @template R
66
72
  */
67
73
  class AsyncQueue {
68
74
  /**
75
+ * Creates an instance of AsyncQueue.
69
76
  * @param {object} options options object
70
77
  * @param {string=} options.name name of the queue
71
78
  * @param {number=} options.parallelism how many items should be processed at once
@@ -119,6 +126,7 @@ class AsyncQueue {
119
126
  }
120
127
 
121
128
  /**
129
+ * Returns context of execution.
122
130
  * @returns {string} context of execution
123
131
  */
124
132
  getContext() {
@@ -126,6 +134,7 @@ class AsyncQueue {
126
134
  }
127
135
 
128
136
  /**
137
+ * Updates context using the provided value.
129
138
  * @param {string} value context of execution
130
139
  */
131
140
  setContext(value) {
@@ -133,6 +142,7 @@ class AsyncQueue {
133
142
  }
134
143
 
135
144
  /**
145
+ * Processes the provided item.
136
146
  * @param {T} item an item
137
147
  * @param {Callback<R>} callback callback function
138
148
  * @returns {void}
@@ -185,6 +195,7 @@ class AsyncQueue {
185
195
  }
186
196
 
187
197
  /**
198
+ * Processes the provided item.
188
199
  * @param {T} item an item
189
200
  * @returns {void}
190
201
  */
@@ -225,6 +236,7 @@ class AsyncQueue {
225
236
  }
226
237
 
227
238
  /**
239
+ * Describes how this stop operation behaves.
228
240
  * @returns {void}
229
241
  */
230
242
  stop() {
@@ -245,6 +257,7 @@ class AsyncQueue {
245
257
  }
246
258
 
247
259
  /**
260
+ * Increase parallelism.
248
261
  * @returns {void}
249
262
  */
250
263
  increaseParallelism() {
@@ -258,6 +271,7 @@ class AsyncQueue {
258
271
  }
259
272
 
260
273
  /**
274
+ * Decrease parallelism.
261
275
  * @returns {void}
262
276
  */
263
277
  decreaseParallelism() {
@@ -266,6 +280,7 @@ class AsyncQueue {
266
280
  }
267
281
 
268
282
  /**
283
+ * Checks whether this async queue is processing.
269
284
  * @param {T} item an item
270
285
  * @returns {boolean} true, if the item is currently being processed
271
286
  */
@@ -276,6 +291,7 @@ class AsyncQueue {
276
291
  }
277
292
 
278
293
  /**
294
+ * Checks whether this async queue is queued.
279
295
  * @param {T} item an item
280
296
  * @returns {boolean} true, if the item is currently queued
281
297
  */
@@ -286,6 +302,7 @@ class AsyncQueue {
286
302
  }
287
303
 
288
304
  /**
305
+ * Checks whether this async queue is done.
289
306
  * @param {T} item an item
290
307
  * @returns {boolean} true, if the item is currently queued
291
308
  */
@@ -296,6 +313,7 @@ class AsyncQueue {
296
313
  }
297
314
 
298
315
  /**
316
+ * Describes how this ensure processing operation behaves.
299
317
  * @returns {void}
300
318
  */
301
319
  _ensureProcessing() {
@@ -324,6 +342,7 @@ class AsyncQueue {
324
342
  }
325
343
 
326
344
  /**
345
+ * Processes the provided entry.
327
346
  * @param {AsyncQueueEntry<T, K, R>} entry the entry
328
347
  * @returns {void}
329
348
  */
@@ -351,6 +370,7 @@ class AsyncQueue {
351
370
  }
352
371
 
353
372
  /**
373
+ * Processes the provided entry.
354
374
  * @param {AsyncQueueEntry<T, K, R>} entry the entry
355
375
  * @param {(WebpackError | null)=} err error, if any
356
376
  * @param {(R | null)=} result result, if any
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Returns last item.
9
10
  * @template T
10
11
  * @param {Iterable<T>} set a set
11
12
  * @returns {T | undefined} last item
@@ -18,6 +19,7 @@ const last = (set) => {
18
19
  };
19
20
 
20
21
  /**
22
+ * Returns true, if some items match the filter predicate.
21
23
  * @template T
22
24
  * @param {Iterable<T>} iterable iterable
23
25
  * @param {(value: T) => boolean | null | undefined} filter predicate
@@ -31,6 +33,7 @@ const someInIterable = (iterable, filter) => {
31
33
  };
32
34
 
33
35
  /**
36
+ * Returns count of items.
34
37
  * @template T
35
38
  * @param {Iterable<T>} iterable an iterable
36
39
  * @returns {number} count of items
@@ -9,23 +9,28 @@ const { first } = require("./SetHelpers");
9
9
  const SortableSet = require("./SortableSet");
10
10
 
11
11
  /**
12
+ * Callback that extracts the grouping key for an item at one bucket layer.
12
13
  * @template T
13
14
  * @template K
14
15
  * @typedef {(item: T) => K} GetKey
15
16
  */
16
17
 
17
18
  /**
19
+ * Comparison function used to order keys or leaf items.
18
20
  * @template T
19
21
  * @typedef {(a: T, n: T) => number} Comparator
20
22
  */
21
23
 
22
24
  /**
25
+ * Internal bucket entry, either another nested bucket set or a sorted leaf set.
23
26
  * @template T
24
27
  * @template K
25
28
  * @typedef {LazyBucketSortedSet<T, K> | SortableSet<T>} Entry
26
29
  */
27
30
 
28
31
  /**
32
+ * Constructor argument accepted for nested bucket layers or the final leaf
33
+ * comparator.
29
34
  * @template T
30
35
  * @template K
31
36
  * @typedef {GetKey<T, K> | Comparator<K> | Comparator<T>} Arg
@@ -45,6 +50,8 @@ const SortableSet = require("./SortableSet");
45
50
  */
46
51
  class LazyBucketSortedSet {
47
52
  /**
53
+ * Creates a lazily sorted, potentially multi-level bucket structure whose
54
+ * order is only fully resolved when items are popped.
48
55
  * @param {GetKey<T, K>} getKey function to get key from item
49
56
  * @param {Comparator<K>=} comparator comparator to sort keys
50
57
  * @param {...Arg<T, K>} args more pairs of getKey and comparator plus optional final comparator for the last layer
@@ -62,6 +69,8 @@ class LazyBucketSortedSet {
62
69
  }
63
70
 
64
71
  /**
72
+ * Adds an item to the unsorted staging area so sorting can be deferred until
73
+ * an ordered pop is requested.
65
74
  * @param {T} item an item
66
75
  * @returns {void}
67
76
  */
@@ -71,6 +80,8 @@ class LazyBucketSortedSet {
71
80
  }
72
81
 
73
82
  /**
83
+ * Inserts an item into the correct nested bucket, creating intermediate
84
+ * bucket structures on demand.
74
85
  * @param {K} key key of item
75
86
  * @param {T} item the item
76
87
  * @returns {void}
@@ -95,6 +106,8 @@ class LazyBucketSortedSet {
95
106
  }
96
107
 
97
108
  /**
109
+ * Removes an item from either the unsorted staging area or its resolved
110
+ * bucket and prunes empty buckets as needed.
98
111
  * @param {T} item an item
99
112
  * @returns {void}
100
113
  */
@@ -113,6 +126,7 @@ class LazyBucketSortedSet {
113
126
  }
114
127
 
115
128
  /**
129
+ * Removes an empty bucket key and its corresponding nested entry.
116
130
  * @param {K} key key to be removed
117
131
  * @returns {void}
118
132
  */
@@ -122,6 +136,8 @@ class LazyBucketSortedSet {
122
136
  }
123
137
 
124
138
  /**
139
+ * Removes and returns the smallest item according to the configured bucket
140
+ * order, sorting only the portions of the structure that are needed.
125
141
  * @returns {T | undefined} an item
126
142
  */
127
143
  popFirst() {
@@ -158,6 +174,8 @@ class LazyBucketSortedSet {
158
174
  }
159
175
 
160
176
  /**
177
+ * Begins an in-place update for an item and returns a completion callback
178
+ * that can either reinsert it under a new key or remove it entirely.
161
179
  * @param {T} item to be updated item
162
180
  * @returns {(remove?: true) => void} finish update
163
181
  */
@@ -222,6 +240,8 @@ class LazyBucketSortedSet {
222
240
  }
223
241
 
224
242
  /**
243
+ * Appends iterators for every stored bucket and leaf to support unordered
244
+ * traversal across the entire structure.
225
245
  * @param {Iterator<T>[]} iterators list of iterators to append to
226
246
  * @returns {void}
227
247
  */
@@ -245,6 +265,7 @@ class LazyBucketSortedSet {
245
265
  }
246
266
 
247
267
  /**
268
+ * Iterates over all stored items without imposing bucket sort order.
248
269
  * @returns {Iterator<T>} the iterator
249
270
  */
250
271
  [Symbol.iterator]() {
@@ -8,6 +8,7 @@
8
8
  const makeSerializable = require("./makeSerializable");
9
9
 
10
10
  /**
11
+ * Merges every queued iterable directly into the concrete backing set.
11
12
  * @template T
12
13
  * @param {Set<T>} targetSet set where items should be added
13
14
  * @param {Set<Iterable<T>>} toMerge iterables to be merged
@@ -22,6 +23,8 @@ const merge = (targetSet, toMerge) => {
22
23
  };
23
24
 
24
25
  /**
26
+ * Flattens nested `LazySet` instances into a single collection of iterables
27
+ * that can later be merged into the backing set.
25
28
  * @template T
26
29
  * @param {Set<Iterable<T>>} targetSet set where iterables should be added
27
30
  * @param {LazySet<T>[]} toDeepMerge lazy sets to be flattened
@@ -40,6 +43,7 @@ const flatten = (targetSet, toDeepMerge) => {
40
43
  };
41
44
 
42
45
  /**
46
+ * Defines the set iterator type used by this module.
43
47
  * @template T
44
48
  * @typedef {import("typescript-iterable").SetIterator<T>} SetIterator
45
49
  */
@@ -52,6 +56,8 @@ const flatten = (targetSet, toDeepMerge) => {
52
56
  */
53
57
  class LazySet {
54
58
  /**
59
+ * Seeds the set with an optional iterable while preparing internal queues for
60
+ * deferred merges.
55
61
  * @param {Iterable<T>=} iterable init iterable
56
62
  */
57
63
  constructor(iterable) {
@@ -65,11 +71,17 @@ class LazySet {
65
71
  this._deopt = false;
66
72
  }
67
73
 
74
+ /**
75
+ * Flattens any nested lazy sets that were queued for merging.
76
+ */
68
77
  _flatten() {
69
78
  flatten(this._toMerge, this._toDeepMerge);
70
79
  this._toDeepMerge.length = 0;
71
80
  }
72
81
 
82
+ /**
83
+ * Materializes all deferred additions into the backing set.
84
+ */
73
85
  _merge() {
74
86
  this._flatten();
75
87
  merge(this._set, this._toMerge);
@@ -77,6 +89,10 @@ class LazySet {
77
89
  this._needMerge = false;
78
90
  }
79
91
 
92
+ /**
93
+ * Reports whether the set is empty without forcing a full merge.
94
+ * @returns {boolean} true when no items have been stored or queued
95
+ */
80
96
  _isEmpty() {
81
97
  return (
82
98
  this._set.size === 0 &&
@@ -85,12 +101,17 @@ class LazySet {
85
101
  );
86
102
  }
87
103
 
104
+ /**
105
+ * Returns the number of items after applying any deferred merges.
106
+ * @returns {number} number of items in the set
107
+ */
88
108
  get size() {
89
109
  if (this._needMerge) this._merge();
90
110
  return this._set.size;
91
111
  }
92
112
 
93
113
  /**
114
+ * Adds a single item immediately to the concrete backing set.
94
115
  * @param {T} item an item
95
116
  * @returns {LazySet<T>} itself
96
117
  */
@@ -100,6 +121,8 @@ class LazySet {
100
121
  }
101
122
 
102
123
  /**
124
+ * Queues another iterable or lazy set for later merging so large bulk adds
125
+ * can stay cheap until the set is read.
103
126
  * @param {Iterable<T> | LazySet<T>} iterable a immutable iterable or another immutable LazySet which will eventually be merged into the Set
104
127
  * @returns {LazySet<T>} itself
105
128
  */
@@ -126,6 +149,9 @@ class LazySet {
126
149
  return this;
127
150
  }
128
151
 
152
+ /**
153
+ * Removes all items and clears every deferred merge queue.
154
+ */
129
155
  clear() {
130
156
  this._set.clear();
131
157
  this._toMerge.clear();
@@ -135,6 +161,8 @@ class LazySet {
135
161
  }
136
162
 
137
163
  /**
164
+ * Deletes an item after first materializing any deferred additions that may
165
+ * contain it.
138
166
  * @param {T} value an item
139
167
  * @returns {boolean} true, if the value was in the Set before
140
168
  */
@@ -144,6 +172,8 @@ class LazySet {
144
172
  }
145
173
 
146
174
  /**
175
+ * Returns the set's entry iterator and permanently switches future
176
+ * operations to eager merge mode to preserve iterator correctness.
147
177
  * @returns {SetIterator<[T, T]>} entries
148
178
  */
149
179
  entries() {
@@ -153,6 +183,8 @@ class LazySet {
153
183
  }
154
184
 
155
185
  /**
186
+ * Iterates over every item after forcing pending merges and switching to
187
+ * eager mode for correctness during iteration.
156
188
  * @template K
157
189
  * @param {(value: T, value2: T, set: Set<T>) => void} callbackFn function called for each entry
158
190
  * @param {K} thisArg this argument for the callbackFn
@@ -166,6 +198,7 @@ class LazySet {
166
198
  }
167
199
 
168
200
  /**
201
+ * Checks whether an item is present after applying any deferred merges.
169
202
  * @param {T} item an item
170
203
  * @returns {boolean} true, when the item is in the Set
171
204
  */
@@ -175,6 +208,7 @@ class LazySet {
175
208
  }
176
209
 
177
210
  /**
211
+ * Returns the key iterator, eagerly materializing pending merges first.
178
212
  * @returns {SetIterator<T>} keys
179
213
  */
180
214
  keys() {
@@ -184,6 +218,7 @@ class LazySet {
184
218
  }
185
219
 
186
220
  /**
221
+ * Returns the value iterator, eagerly materializing pending merges first.
187
222
  * @returns {SetIterator<T>} values
188
223
  */
189
224
  values() {
@@ -193,6 +228,7 @@ class LazySet {
193
228
  }
194
229
 
195
230
  /**
231
+ * Returns the default iterator over values after forcing pending merges.
196
232
  * @returns {SetIterator<T>} iterable iterator
197
233
  */
198
234
  [Symbol.iterator]() {
@@ -207,6 +243,8 @@ class LazySet {
207
243
  }
208
244
 
209
245
  /**
246
+ * Serializes the fully materialized set contents into webpack's object
247
+ * serialization stream.
210
248
  * @param {import("../serialization/ObjectMiddleware").ObjectSerializerContext} context context
211
249
  */
212
250
  serialize({ write }) {
@@ -216,6 +254,7 @@ class LazySet {
216
254
  }
217
255
 
218
256
  /**
257
+ * Restores a `LazySet` from serialized item data.
219
258
  * @template T
220
259
  * @param {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} context context
221
260
  * @returns {LazySet<T>} lazy set
@@ -18,6 +18,7 @@ class ParallelismFactorCalculator {
18
18
  }
19
19
 
20
20
  /**
21
+ * Processes the provided start.
21
22
  * @param {number} start range start
22
23
  * @param {number} end range end
23
24
  * @param {Callback} callback callback
package/lib/util/Queue.js CHANGED
@@ -6,10 +6,13 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * FIFO queue that keeps items unique by storing them in insertion order inside
10
+ * a `Set`.
9
11
  * @template T
10
12
  */
11
13
  class Queue {
12
14
  /**
15
+ * Seeds the queue with an optional iterable of initial unique items.
13
16
  * @param {Iterable<T>=} items The initial elements.
14
17
  */
15
18
  constructor(items) {
@@ -21,7 +24,7 @@ class Queue {
21
24
  }
22
25
 
23
26
  /**
24
- * Returns the number of elements in this queue.
27
+ * Returns the number of unique items currently waiting in the queue.
25
28
  * @returns {number} The number of elements in this queue.
26
29
  */
27
30
  get length() {
@@ -29,7 +32,7 @@ class Queue {
29
32
  }
30
33
 
31
34
  /**
32
- * Appends the specified element to this queue.
35
+ * Enqueues an item, moving nothing if that value is already present.
33
36
  * @param {T} item The element to add.
34
37
  * @returns {void}
35
38
  */
@@ -38,7 +41,7 @@ class Queue {
38
41
  }
39
42
 
40
43
  /**
41
- * Retrieves and removes the head of this queue.
44
+ * Removes and returns the oldest enqueued item.
42
45
  * @returns {T | undefined} The head of the queue of `undefined` if this queue is empty.
43
46
  */
44
47
  dequeue() {
@@ -5,9 +5,14 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /**
9
+ * Simple counting semaphore used to limit how many asynchronous tasks may run
10
+ * concurrently.
11
+ */
8
12
  class Semaphore {
9
13
  /**
10
- * Creates an instance of Semaphore.
14
+ * Initializes the semaphore with the number of permits that may be held at
15
+ * the same time.
11
16
  * @param {number} available the amount available number of "tasks"
12
17
  * in the Semaphore
13
18
  */
@@ -20,6 +25,8 @@ class Semaphore {
20
25
  }
21
26
 
22
27
  /**
28
+ * Acquires a permit for the callback immediately when one is available or
29
+ * queues the callback until another task releases its permit.
23
30
  * @param {() => void} callback function block to capture and run
24
31
  * @returns {void}
25
32
  */
@@ -32,6 +39,9 @@ class Semaphore {
32
39
  }
33
40
  }
34
41
 
42
+ /**
43
+ * Releases a permit and schedules the next waiting callback, if any.
44
+ */
35
45
  release() {
36
46
  this.available++;
37
47
  if (this.waiters.length > 0) {
@@ -39,6 +49,9 @@ class Semaphore {
39
49
  }
40
50
  }
41
51
 
52
+ /**
53
+ * Drains the next waiting callback after a permit becomes available.
54
+ */
42
55
  _continue() {
43
56
  if (this.available > 0 && this.waiters.length > 0) {
44
57
  this.available--;
@@ -52,6 +52,7 @@ const isSubset = (bigSet, smallSet) => {
52
52
  };
53
53
 
54
54
  /**
55
+ * Returns found item.
55
56
  * @template T
56
57
  * @param {Set<T>} set a set
57
58
  * @param {(set: T) => boolean} fn selector function
@@ -64,6 +65,7 @@ const find = (set, fn) => {
64
65
  };
65
66
 
66
67
  /**
68
+ * Returns first item.
67
69
  * @template T
68
70
  * @param {Set<T> | ReadonlySet<T>} set a set
69
71
  * @returns {T | undefined} first item
@@ -74,6 +76,7 @@ const first = (set) => {
74
76
  };
75
77
 
76
78
  /**
79
+ * Returns combined set, may be identical to a or b.
77
80
  * @template T
78
81
  * @param {Set<T>} a first
79
82
  * @param {Set<T>} b second
@@ -47,6 +47,7 @@ class SortableSet extends Set {
47
47
  }
48
48
 
49
49
  /**
50
+ * Returns itself.
50
51
  * @param {T} value value to add to set
51
52
  * @returns {this} returns itself
52
53
  */
@@ -59,6 +60,7 @@ class SortableSet extends Set {
59
60
  }
60
61
 
61
62
  /**
63
+ * Returns true if value existed in set, false otherwise.
62
64
  * @param {T} value value to delete
63
65
  * @returns {boolean} true if value existed in set, false otherwise
64
66
  */
@@ -69,6 +71,7 @@ class SortableSet extends Set {
69
71
  }
70
72
 
71
73
  /**
74
+ * Describes how this clear operation behaves.
72
75
  * @returns {void}
73
76
  */
74
77
  clear() {
@@ -146,6 +149,7 @@ class SortableSet extends Set {
146
149
  }
147
150
 
148
151
  /**
152
+ * Invalidates the cached state associated with this value.
149
153
  * @private
150
154
  * @returns {void}
151
155
  */
@@ -156,6 +160,7 @@ class SortableSet extends Set {
156
160
  }
157
161
 
158
162
  /**
163
+ * Invalidate ordered cache.
159
164
  * @private
160
165
  * @returns {void}
161
166
  */
@@ -166,6 +171,7 @@ class SortableSet extends Set {
166
171
  }
167
172
 
168
173
  /**
174
+ * Returns the raw array.
169
175
  * @returns {T[]} the raw array
170
176
  */
171
177
  toJSON() {
@@ -31,6 +31,10 @@
31
31
  * @template V
32
32
  */
33
33
  class StackedCacheMap {
34
+ /**
35
+ * Initializes the mutable fallback map and the stack of immutable cache
36
+ * layers.
37
+ */
34
38
  constructor() {
35
39
  /** @type {Map<K, V>} */
36
40
  this.map = new Map();
@@ -39,9 +43,9 @@ class StackedCacheMap {
39
43
  }
40
44
 
41
45
  /**
42
- * If `immutable` is true, the map can be referenced by the StackedCacheMap
43
- * and should not be changed afterwards. If the map is mutable, all items
44
- * are copied into a fallback Map.
46
+ * Adds another cache layer. Immutable maps are retained by reference and
47
+ * reordered so larger layers are checked first, while mutable maps are
48
+ * copied into the fallback map.
45
49
  * @param {ReadonlyMap<K, V>} map map to add
46
50
  * @param {boolean=} immutable if 'map' is immutable and StackedCacheMap can keep referencing it
47
51
  */
@@ -64,6 +68,7 @@ class StackedCacheMap {
64
68
  }
65
69
 
66
70
  /**
71
+ * Stores or overrides a value in the mutable fallback map.
67
72
  * @param {K} item the key of the element to add
68
73
  * @param {V} value the value of the element to add
69
74
  * @returns {void}
@@ -73,6 +78,8 @@ class StackedCacheMap {
73
78
  }
74
79
 
75
80
  /**
81
+ * Rejects deletions because this data structure is optimized for append-only
82
+ * cache layers.
76
83
  * @param {K} item the item to delete
77
84
  * @returns {void}
78
85
  */
@@ -81,6 +88,8 @@ class StackedCacheMap {
81
88
  }
82
89
 
83
90
  /**
91
+ * Rejects `has` checks because they would force the same layered lookup work
92
+ * as `get` without returning the cached value.
84
93
  * @param {K} item the item to test
85
94
  * @returns {boolean} true if the item exists in this set
86
95
  */
@@ -91,6 +100,8 @@ class StackedCacheMap {
91
100
  }
92
101
 
93
102
  /**
103
+ * Looks up a key by scanning immutable cache layers first and then the
104
+ * mutable fallback map.
94
105
  * @param {K} item the key of the element to return
95
106
  * @returns {V | undefined} the value of the element
96
107
  */
@@ -102,12 +113,17 @@ class StackedCacheMap {
102
113
  return this.map.get(item);
103
114
  }
104
115
 
116
+ /**
117
+ * Removes every cache layer and clears the mutable fallback map.
118
+ */
105
119
  clear() {
106
120
  this.stack.length = 0;
107
121
  this.map.clear();
108
122
  }
109
123
 
110
124
  /**
125
+ * Returns the total number of entries across the fallback map and all stacked
126
+ * cache layers.
111
127
  * @returns {number} size of the map
112
128
  */
113
129
  get size() {
@@ -119,6 +135,7 @@ class StackedCacheMap {
119
135
  }
120
136
 
121
137
  /**
138
+ * Iterates over the fallback map first and then each stacked cache layer.
122
139
  * @returns {Iterator<[K, V]>} iterator
123
140
  */
124
141
  [Symbol.iterator]() {