webpack 5.106.1 → 5.107.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -0,0 +1,53 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ class LocConverter {
9
+ /**
10
+ * Creates an instance of LocConverter.
11
+ * @param {string} input input
12
+ */
13
+ constructor(input) {
14
+ this._input = input;
15
+ this.line = 1;
16
+ this.column = 0;
17
+ this.pos = 0;
18
+ }
19
+
20
+ /**
21
+ * Returns location converter.
22
+ * @param {number} pos position
23
+ * @returns {LocConverter} location converter
24
+ */
25
+ get(pos) {
26
+ if (this.pos !== pos) {
27
+ if (this.pos < pos) {
28
+ const str = this._input.slice(this.pos, pos);
29
+ let i = str.lastIndexOf("\n");
30
+ if (i === -1) {
31
+ this.column += str.length;
32
+ } else {
33
+ this.column = str.length - i - 1;
34
+ this.line++;
35
+ while (i > 0 && (i = str.lastIndexOf("\n", i - 1)) !== -1) {
36
+ this.line++;
37
+ }
38
+ }
39
+ } else {
40
+ let i = this._input.lastIndexOf("\n", this.pos);
41
+ while (i >= pos) {
42
+ this.line--;
43
+ i = i > 0 ? this._input.lastIndexOf("\n", i - 1) : -1;
44
+ }
45
+ this.column = i === -1 ? pos : pos - i - 1;
46
+ }
47
+ this.pos = pos;
48
+ }
49
+ return this;
50
+ }
51
+ }
52
+
53
+ module.exports = LocConverter;
@@ -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() {
@@ -105,7 +108,7 @@ class SortableSet extends Set {
105
108
 
106
109
  /**
107
110
  * Get data from cache
108
- * @template {EXPECTED_ANY} R
111
+ * @template R
109
112
  * @param {(set: SortableSet<T>) => R} fn function to calculate value
110
113
  * @returns {R} returns result of fn(this), cached until set changes
111
114
  */
@@ -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]() {
@@ -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
  */