webpack 5.106.1 → 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 -1
  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 +59 -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 +10 -2
  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 +5 -0
  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
@@ -9,16 +9,22 @@ const TOMBSTONE = Symbol("tombstone");
9
9
  const UNDEFINED_MARKER = Symbol("undefined");
10
10
 
11
11
  /**
12
+ * Public cell value exposed by `StackedMap`, where `undefined` is preserved as
13
+ * a valid stored result.
12
14
  * @template T
13
15
  * @typedef {T | undefined} Cell<T>
14
16
  */
15
17
 
16
18
  /**
19
+ * Internal cell value used to distinguish deleted entries and explicit
20
+ * `undefined` assignments while traversing stacked scopes.
17
21
  * @template T
18
22
  * @typedef {T | typeof TOMBSTONE | typeof UNDEFINED_MARKER} InternalCell<T>
19
23
  */
20
24
 
21
25
  /**
26
+ * Converts an internal key/value pair into the external representation returned
27
+ * by iteration helpers.
22
28
  * @template K
23
29
  * @template V
24
30
  * @param {[K, InternalCell<V>]} pair the internal cell
@@ -34,11 +40,14 @@ const extractPair = (pair) => {
34
40
  };
35
41
 
36
42
  /**
43
+ * Layered map that supports child scopes while memoizing lookups from parent
44
+ * scopes into the current layer.
37
45
  * @template K
38
46
  * @template V
39
47
  */
40
48
  class StackedMap {
41
49
  /**
50
+ * Creates a new map layer on top of an optional parent stack.
42
51
  * @param {Map<K, InternalCell<V>>[]=} parentStack an optional parent
43
52
  */
44
53
  constructor(parentStack) {
@@ -50,6 +59,8 @@ class StackedMap {
50
59
  }
51
60
 
52
61
  /**
62
+ * Stores a value in the current layer, preserving explicit `undefined`
63
+ * values with an internal marker.
53
64
  * @param {K} item the key of the element to add
54
65
  * @param {V} value the value of the element to add
55
66
  * @returns {void}
@@ -59,6 +70,8 @@ class StackedMap {
59
70
  }
60
71
 
61
72
  /**
73
+ * Deletes a key from the current view, either by removing it outright in the
74
+ * root layer or by recording a tombstone in child layers.
62
75
  * @param {K} item the item to delete
63
76
  * @returns {void}
64
77
  */
@@ -71,6 +84,8 @@ class StackedMap {
71
84
  }
72
85
 
73
86
  /**
87
+ * Checks whether a key exists in the current scope chain, caching any parent
88
+ * lookup result in the current layer.
74
89
  * @param {K} item the item to test
75
90
  * @returns {boolean} true if the item exists in this set
76
91
  */
@@ -93,6 +108,8 @@ class StackedMap {
93
108
  }
94
109
 
95
110
  /**
111
+ * Returns the visible value for a key, caching parent hits and misses in the
112
+ * current layer.
96
113
  * @param {K} item the key of the element to return
97
114
  * @returns {Cell<V>} the value of the element
98
115
  */
@@ -117,6 +134,9 @@ class StackedMap {
117
134
  }
118
135
  }
119
136
 
137
+ /**
138
+ * Collapses the stacked layers into a single concrete map.
139
+ */
120
140
  _compress() {
121
141
  if (this.stack.length === 1) return;
122
142
  this.map = new Map();
@@ -132,30 +152,55 @@ class StackedMap {
132
152
  this.stack = [this.map];
133
153
  }
134
154
 
155
+ /**
156
+ * Returns the visible keys as an array after collapsing the stack.
157
+ * @returns {K[]} array of keys
158
+ */
135
159
  asArray() {
136
160
  this._compress();
137
161
  return [...this.map.keys()];
138
162
  }
139
163
 
164
+ /**
165
+ * Returns the visible keys as a `Set` after collapsing the stack.
166
+ * @returns {Set<K>} set of keys
167
+ */
140
168
  asSet() {
141
169
  this._compress();
142
170
  return new Set(this.map.keys());
143
171
  }
144
172
 
173
+ /**
174
+ * Returns visible key/value pairs using the external representation.
175
+ * @returns {[K, Cell<V>][]} array of key/value pairs
176
+ */
145
177
  asPairArray() {
146
178
  this._compress();
147
179
  return Array.from(this.map.entries(), extractPair);
148
180
  }
149
181
 
182
+ /**
183
+ * Returns the visible contents as a plain `Map`.
184
+ * @returns {Map<K, Cell<V>>} materialized map
185
+ */
150
186
  asMap() {
151
187
  return new Map(this.asPairArray());
152
188
  }
153
189
 
190
+ /**
191
+ * Returns the number of visible keys after collapsing the stack.
192
+ * @returns {number} number of keys
193
+ */
154
194
  get size() {
155
195
  this._compress();
156
196
  return this.map.size;
157
197
  }
158
198
 
199
+ /**
200
+ * Creates a child `StackedMap` that sees the current layers as its parent
201
+ * scope.
202
+ * @returns {StackedMap<K, V>} child map
203
+ */
159
204
  createChild() {
160
205
  return new StackedMap(this.stack);
161
206
  }
@@ -41,7 +41,7 @@ class StringXor {
41
41
  }
42
42
 
43
43
  /**
44
- * Adds a string to the current StringXor object.
44
+ * Processes the provided str.
45
45
  * @param {string} str string
46
46
  * @returns {void}
47
47
  */
@@ -8,11 +8,14 @@
8
8
  const TupleSet = require("./TupleSet");
9
9
 
10
10
  /**
11
+ * FIFO queue for tuples that preserves uniqueness by delegating membership
12
+ * tracking to `TupleSet`.
11
13
  * @template T
12
14
  * @template V
13
15
  */
14
16
  class TupleQueue {
15
17
  /**
18
+ * Seeds the queue with an optional iterable of tuples to visit.
16
19
  * @param {Iterable<[T, V, ...EXPECTED_ANY]>=} items The initial elements.
17
20
  */
18
21
  constructor(items) {
@@ -29,7 +32,7 @@ class TupleQueue {
29
32
  }
30
33
 
31
34
  /**
32
- * Returns the number of elements in this queue.
35
+ * Returns the number of distinct tuples currently queued.
33
36
  * @returns {number} The number of elements in this queue.
34
37
  */
35
38
  get length() {
@@ -37,7 +40,7 @@ class TupleQueue {
37
40
  }
38
41
 
39
42
  /**
40
- * Appends the specified element to this queue.
43
+ * Enqueues a tuple if it is not already present in the underlying set.
41
44
  * @param {[T, V, ...EXPECTED_ANY]} item The element to add.
42
45
  * @returns {void}
43
46
  */
@@ -46,7 +49,8 @@ class TupleQueue {
46
49
  }
47
50
 
48
51
  /**
49
- * Retrieves and removes the head of this queue.
52
+ * Removes and returns the next queued tuple, rebuilding the iterator when
53
+ * the underlying tuple set has changed since the last full pass.
50
54
  * @returns {[T, V, ...EXPECTED_ANY] | undefined} The head of the queue of `undefined` if this queue is empty.
51
55
  */
52
56
  dequeue() {
@@ -6,17 +6,22 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Nested map structure used to index tuple prefixes until the final tuple
10
+ * element can be stored in a `Set`.
9
11
  * @template K
10
12
  * @template V
11
13
  * @typedef {Map<K, InnerMap<K, V> | Set<V>>} InnerMap
12
14
  */
13
15
 
14
16
  /**
17
+ * Stores tuples of arbitrary length while preserving efficient prefix lookups
18
+ * through a tree of maps that ends in a set of final values.
15
19
  * @template T
16
20
  * @template V
17
21
  */
18
22
  class TupleSet {
19
23
  /**
24
+ * Seeds the tuple set with an optional iterable of tuples.
20
25
  * @param {Iterable<[T, V, ...EXPECTED_ANY]>=} init init
21
26
  */
22
27
  constructor(init) {
@@ -31,6 +36,7 @@ class TupleSet {
31
36
  }
32
37
 
33
38
  /**
39
+ * Adds a tuple to the set, creating any missing prefix maps along the way.
34
40
  * @param {[T, V, ...EXPECTED_ANY]} args tuple
35
41
  * @returns {void}
36
42
  */
@@ -59,6 +65,7 @@ class TupleSet {
59
65
  }
60
66
 
61
67
  /**
68
+ * Checks whether the exact tuple is already present in the set.
62
69
  * @param {[T, V, ...EXPECTED_ANY]} args tuple
63
70
  * @returns {boolean} true, if the tuple is in the Set
64
71
  */
@@ -83,6 +90,7 @@ class TupleSet {
83
90
  }
84
91
 
85
92
  /**
93
+ * Removes a tuple from the set when it is present.
86
94
  * @param {[T, V, ...EXPECTED_ANY]} args tuple
87
95
  * @returns {void}
88
96
  */
@@ -109,10 +117,13 @@ class TupleSet {
109
117
  }
110
118
 
111
119
  /**
120
+ * Iterates over every stored tuple by walking the nested map structure and
121
+ * yielding each complete prefix plus its terminal set value.
112
122
  * @returns {Iterator<[T, V, ...EXPECTED_ANY]>} iterator
113
123
  */
114
124
  [Symbol.iterator]() {
115
125
  /**
126
+ * Iterator type used while traversing nested tuple-prefix maps.
116
127
  * @template T, V
117
128
  * @typedef {MapIterator<[T, InnerMap<T, V> | Set<V>]>} IteratorStack
118
129
  */
@@ -127,6 +138,8 @@ class TupleSet {
127
138
  let currentSetIterator;
128
139
 
129
140
  /**
141
+ * Advances through nested maps until a terminal value set is reached or
142
+ * every remaining branch has been exhausted.
130
143
  * @param {IteratorStack<T, V>} it iterator
131
144
  * @returns {boolean} result
132
145
  */
@@ -74,6 +74,7 @@ function getScheme(specifier) {
74
74
  }
75
75
 
76
76
  /**
77
+ * Returns protocol if absolute URL specifier provided.
77
78
  * @param {string} specifier specifier
78
79
  * @returns {string | null | undefined} protocol if absolute URL specifier provided
79
80
  */
@@ -6,33 +6,44 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Strong-key child map used for tuple elements that cannot be stored in a
10
+ * `WeakMap`.
9
11
  * @template {EXPECTED_ANY[]} T
10
12
  * @template V
11
13
  * @typedef {Map<EXPECTED_ANY, WeakTupleMap<T, V>>} M
12
14
  */
13
15
 
14
16
  /**
17
+ * Weak-key child map used for tuple elements that are objects and can be held
18
+ * without preventing garbage collection.
15
19
  * @template {EXPECTED_ANY[]} T
16
20
  * @template V
17
21
  * @typedef {WeakMap<EXPECTED_OBJECT, WeakTupleMap<T, V>>} W
18
22
  */
19
23
 
20
24
  /**
25
+ * Reports whether a tuple element can be stored in a `WeakMap`.
21
26
  * @param {EXPECTED_ANY} thing thing
22
27
  * @returns {boolean} true if is weak
23
28
  */
24
29
  const isWeakKey = (thing) => typeof thing === "object" && thing !== null;
25
30
 
26
31
  /**
32
+ * Extracts the element type from a tuple-like array.
27
33
  * @template {unknown[]} T
28
34
  * @typedef {T extends ReadonlyArray<infer ElementType> ? ElementType : never} ArrayElement
29
35
  */
30
36
 
31
37
  /**
38
+ * Stores values by tuple keys while using `WeakMap` for object elements so the
39
+ * cache can release entries when those objects are collected.
32
40
  * @template {EXPECTED_ANY[]} K
33
41
  * @template V
34
42
  */
35
43
  class WeakTupleMap {
44
+ /**
45
+ * Initializes an empty tuple trie node with optional value and child maps.
46
+ */
36
47
  constructor() {
37
48
  /** @private */
38
49
  this.f = 0;
@@ -54,6 +65,7 @@ class WeakTupleMap {
54
65
  }
55
66
 
56
67
  /**
68
+ * Stores a value at the node identified by the provided tuple key.
57
69
  * @param {[...K, V]} args tuple
58
70
  * @returns {void}
59
71
  */
@@ -67,6 +79,7 @@ class WeakTupleMap {
67
79
  }
68
80
 
69
81
  /**
82
+ * Checks whether the exact tuple key has a stored value.
70
83
  * @param {K} args tuple
71
84
  * @returns {boolean} true, if the tuple is in the Set
72
85
  */
@@ -81,6 +94,7 @@ class WeakTupleMap {
81
94
  }
82
95
 
83
96
  /**
97
+ * Returns the value stored for the exact tuple key, if any.
84
98
  * @param {K} args tuple
85
99
  * @returns {V | undefined} the value
86
100
  */
@@ -95,6 +109,8 @@ class WeakTupleMap {
95
109
  }
96
110
 
97
111
  /**
112
+ * Returns an existing value for the tuple or computes, stores, and returns a
113
+ * new one when the tuple is missing.
98
114
  * @param {[...K, (...args: K) => V]} args tuple
99
115
  * @returns {V} the value
100
116
  */
@@ -112,6 +128,7 @@ class WeakTupleMap {
112
128
  }
113
129
 
114
130
  /**
131
+ * Removes the value stored for the tuple key without pruning the trie.
115
132
  * @param {K} args tuple
116
133
  * @returns {void}
117
134
  */
@@ -126,6 +143,7 @@ class WeakTupleMap {
126
143
  }
127
144
 
128
145
  /**
146
+ * Clears the stored value and all strong and weak child maps from this node.
129
147
  * @returns {void}
130
148
  */
131
149
  clear() {
@@ -135,15 +153,24 @@ class WeakTupleMap {
135
153
  this.m = undefined;
136
154
  }
137
155
 
156
+ /**
157
+ * Returns the value stored directly on this trie node.
158
+ * @returns {V | undefined} stored value
159
+ */
138
160
  _getValue() {
139
161
  return this.v;
140
162
  }
141
163
 
164
+ /**
165
+ * Reports whether this trie node currently stores a value.
166
+ * @returns {boolean} true when a value is present
167
+ */
142
168
  _hasValue() {
143
169
  return (this.f & 1) === 1;
144
170
  }
145
171
 
146
172
  /**
173
+ * Stores a value directly on this trie node.
147
174
  * @param {V} v value
148
175
  * @private
149
176
  */
@@ -152,12 +179,16 @@ class WeakTupleMap {
152
179
  this.v = v;
153
180
  }
154
181
 
182
+ /**
183
+ * Removes the value stored directly on this trie node.
184
+ */
155
185
  _deleteValue() {
156
186
  this.f &= 6;
157
187
  this.v = undefined;
158
188
  }
159
189
 
160
190
  /**
191
+ * Returns the child node for a tuple element without creating one.
161
192
  * @param {ArrayElement<K>} thing thing
162
193
  * @returns {WeakTupleMap<K, V> | undefined} thing
163
194
  * @private
@@ -176,6 +207,8 @@ class WeakTupleMap {
176
207
  }
177
208
 
178
209
  /**
210
+ * Returns the child node for a tuple element, creating and storing it when
211
+ * necessary.
179
212
  * @private
180
213
  * @param {ArrayElement<K>} thing thing
181
214
  * @returns {WeakTupleMap<K, V>} value
@@ -65,6 +65,7 @@ const compileSearch = (funcName, predicate, reversed, extraArgs, earlyOut) => {
65
65
  };
66
66
 
67
67
  /**
68
+ * Defines the search type used by this module.
68
69
  * @template T
69
70
  * @typedef {(items: T[], start: number, compareFn?: number | ((item: T, needle: number) => number), l?: number, h?: number) => number} Search
70
71
  */
@@ -51,6 +51,7 @@ const cachedCleverMerge = (first, second) => {
51
51
  };
52
52
 
53
53
  /**
54
+ * Caches d set property.
54
55
  * @template T
55
56
  * @param {Partial<T>} obj object
56
57
  * @param {string} property property
@@ -86,10 +87,12 @@ const cachedSetProperty = (obj, property, value) => {
86
87
  };
87
88
 
88
89
  /**
90
+ * Defines the by values type used by this module.
89
91
  * @typedef {Map<string, EXPECTED_ANY>} ByValues
90
92
  */
91
93
 
92
94
  /**
95
+ * Defines the object parsed property entry type used by this module.
93
96
  * @template T
94
97
  * @typedef {object} ObjectParsedPropertyEntry
95
98
  * @property {T[keyof T] | undefined} base base value
@@ -100,16 +103,19 @@ const cachedSetProperty = (obj, property, value) => {
100
103
  /** @typedef {(function(...EXPECTED_ANY): object) & { [DYNAMIC_INFO]: [DynamicFunction, object] }} DynamicFunction */
101
104
 
102
105
  /**
106
+ * Defines the parsed object static type used by this module.
103
107
  * @template {object} T
104
108
  * @typedef {Map<keyof T, ObjectParsedPropertyEntry<T>>} ParsedObjectStatic
105
109
  */
106
110
 
107
111
  /**
112
+ * Defines the parsed object dynamic type used by this module.
108
113
  * @template {object} T
109
114
  * @typedef {{ byProperty: `by${string}`, fn: DynamicFunction }} ParsedObjectDynamic
110
115
  */
111
116
 
112
117
  /**
118
+ * Defines the parsed object type used by this module.
113
119
  * @template {object} T
114
120
  * @typedef {object} ParsedObject
115
121
  * @property {ParsedObjectStatic<T>} static static properties (key is property name)
@@ -120,6 +126,7 @@ const cachedSetProperty = (obj, property, value) => {
120
126
  const parseCache = new WeakMap();
121
127
 
122
128
  /**
129
+ * Caches d parse object.
123
130
  * @template {object} T
124
131
  * @param {T} obj the object
125
132
  * @returns {ParsedObject<T>} parsed object
@@ -135,6 +142,7 @@ const cachedParseObject = (obj) => {
135
142
  /** @typedef {{ [p: string]: { [p: string]: EXPECTED_ANY } } | DynamicFunction} ByObject */
136
143
 
137
144
  /**
145
+ * Returns parsed object.
138
146
  * @template {object} T
139
147
  * @param {T} obj the object
140
148
  * @returns {ParsedObject<T>} parsed object
@@ -145,6 +153,7 @@ const parseObject = (obj) => {
145
153
  /** @type {ParsedObjectDynamic<T> | undefined} */
146
154
  let dynamicInfo;
147
155
  /**
156
+ * Returns object parsed property entry.
148
157
  * @param {keyof T} p path
149
158
  * @returns {Partial<ObjectParsedPropertyEntry<T>>} object parsed property entry
150
159
  */
@@ -221,6 +230,7 @@ const parseObject = (obj) => {
221
230
  };
222
231
 
223
232
  /**
233
+ * Returns the object.
224
234
  * @template {object} T
225
235
  * @param {ParsedObjectStatic<T>} info static properties (key is property name)
226
236
  * @param {{ byProperty: `by${string}`, fn: DynamicFunction } | undefined} dynamicInfo dynamic part
@@ -269,6 +279,7 @@ const VALUE_TYPE_OBJECT = 3;
269
279
  const VALUE_TYPE_DELETE = 4;
270
280
 
271
281
  /**
282
+ * Returns value type.
272
283
  * @template T
273
284
  * @param {T} value a single value
274
285
  * @returns {VALUE_TYPE_UNDEFINED | VALUE_TYPE_ATOM | VALUE_TYPE_ARRAY_EXTEND | VALUE_TYPE_OBJECT | VALUE_TYPE_DELETE} value type
@@ -311,6 +322,7 @@ const cleverMerge = (first, second) => {
311
322
  };
312
323
 
313
324
  /**
325
+ * Returns merged object of first and second object.
314
326
  * @template {object} T
315
327
  * @template {object} O
316
328
  * Merges two objects. Objects are deeply clever merged.
@@ -378,6 +390,7 @@ const _cleverMerge = (first, second, internalCaching = false) => {
378
390
  };
379
391
 
380
392
  /**
393
+ * Merges the provided values into a single result.
381
394
  * @template T, O
382
395
  * @param {ObjectParsedPropertyEntry<T>} firstEntry a
383
396
  * @param {ObjectParsedPropertyEntry<O>} secondEntry b
@@ -510,6 +523,7 @@ const mergeEntries = (firstEntry, secondEntry, internalCaching) => {
510
523
  };
511
524
 
512
525
  /**
526
+ * Gets from by values.
513
527
  * @template V
514
528
  * @param {ByValues} byValues all values
515
529
  * @param {string} key value of the selector
@@ -523,6 +537,7 @@ const getFromByValues = (byValues, key) => {
523
537
  };
524
538
 
525
539
  /**
540
+ * Merges single value.
526
541
  * @template A
527
542
  * @template B
528
543
  * @param {A | A[]} a value
@@ -585,6 +600,7 @@ const mergeSingleValue = (a, b, internalCaching) => {
585
600
  };
586
601
 
587
602
  /**
603
+ * Removes operations.
588
604
  * @template {object} T
589
605
  * @param {T} obj the object
590
606
  * @param {(keyof T)[]=} keysToKeepOriginalValue keys to keep original value
@@ -632,6 +648,7 @@ const removeOperations = (obj, keysToKeepOriginalValue = []) => {
632
648
  };
633
649
 
634
650
  /**
651
+ * Resolves by property.
635
652
  * @template T
636
653
  * @template {keyof T} P
637
654
  * @template V