webpack 5.97.1 → 5.104.1

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 (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const makeSerializable = require("./makeSerializable.js");
8
+ const makeSerializable = require("./makeSerializable");
9
9
 
10
10
  /**
11
11
  * @template T
@@ -24,7 +24,7 @@ const merge = (targetSet, toMerge) => {
24
24
  /**
25
25
  * @template T
26
26
  * @param {Set<Iterable<T>>} targetSet set where iterables should be added
27
- * @param {Array<LazySet<T>>} toDeepMerge lazy sets to be flattened
27
+ * @param {LazySet<T>[]} toDeepMerge lazy sets to be flattened
28
28
  * @returns {void}
29
29
  */
30
30
  const flatten = (targetSet, toDeepMerge) => {
@@ -39,6 +39,11 @@ const flatten = (targetSet, toDeepMerge) => {
39
39
  }
40
40
  };
41
41
 
42
+ /**
43
+ * @template T
44
+ * @typedef {import("typescript-iterable").SetIterator<T>} SetIterator
45
+ */
46
+
42
47
  /**
43
48
  * Like Set but with an addAll method to eventually add items from another iterable.
44
49
  * Access methods make sure that all delayed operations are executed.
@@ -54,7 +59,7 @@ class LazySet {
54
59
  this._set = new Set(iterable);
55
60
  /** @type {Set<Iterable<T>>} */
56
61
  this._toMerge = new Set();
57
- /** @type {Array<LazySet<T>>} */
62
+ /** @type {LazySet<T>[]} */
58
63
  this._toDeepMerge = [];
59
64
  this._needMerge = false;
60
65
  this._deopt = false;
@@ -139,7 +144,7 @@ class LazySet {
139
144
  }
140
145
 
141
146
  /**
142
- * @returns {IterableIterator<[T, T]>} entries
147
+ * @returns {SetIterator<[T, T]>} entries
143
148
  */
144
149
  entries() {
145
150
  this._deopt = true;
@@ -148,14 +153,15 @@ class LazySet {
148
153
  }
149
154
 
150
155
  /**
151
- * @param {function(T, T, Set<T>): void} callbackFn function called for each entry
152
- * @param {any} thisArg this argument for the callbackFn
156
+ * @template K
157
+ * @param {(value: T, value2: T, set: Set<T>) => void} callbackFn function called for each entry
158
+ * @param {K} thisArg this argument for the callbackFn
153
159
  * @returns {void}
154
160
  */
155
161
  forEach(callbackFn, thisArg) {
156
162
  this._deopt = true;
157
163
  if (this._needMerge) this._merge();
158
- // eslint-disable-next-line unicorn/no-array-for-each
164
+ // eslint-disable-next-line unicorn/no-array-for-each, unicorn/no-array-method-this-argument
159
165
  this._set.forEach(callbackFn, thisArg);
160
166
  }
161
167
 
@@ -169,7 +175,7 @@ class LazySet {
169
175
  }
170
176
 
171
177
  /**
172
- * @returns {IterableIterator<T>} keys
178
+ * @returns {SetIterator<T>} keys
173
179
  */
174
180
  keys() {
175
181
  this._deopt = true;
@@ -178,7 +184,7 @@ class LazySet {
178
184
  }
179
185
 
180
186
  /**
181
- * @returns {IterableIterator<T>} values
187
+ * @returns {SetIterator<T>} values
182
188
  */
183
189
  values() {
184
190
  this._deopt = true;
@@ -187,7 +193,7 @@ class LazySet {
187
193
  }
188
194
 
189
195
  /**
190
- * @returns {IterableIterator<T>} iterable iterator
196
+ * @returns {SetIterator<T>} iterable iterator
191
197
  */
192
198
  [Symbol.iterator]() {
193
199
  this._deopt = true;
@@ -13,7 +13,7 @@
13
13
  * @template V
14
14
  * @param {Map<K, V>} map The map object to check
15
15
  * @param {K} key The key to check
16
- * @param {function(): V} computer function which will compute the value if it doesn't exist
16
+ * @param {() => V} computer function which will compute the value if it doesn't exist
17
17
  * @returns {V} The value from the map, or the computed value
18
18
  * @example
19
19
  * ```js
@@ -7,7 +7,7 @@
7
7
 
8
8
  const binarySearchBounds = require("./binarySearchBounds");
9
9
 
10
- /** @typedef {function(number): void} Callback */
10
+ /** @typedef {(value: number) => void} Callback */
11
11
 
12
12
  class ParallelismFactorCalculator {
13
13
  constructor() {
@@ -31,7 +31,7 @@ class ParallelismFactorCalculator {
31
31
  }
32
32
 
33
33
  calculate() {
34
- const segments = Array.from(new Set(this._rangePoints)).sort((a, b) =>
34
+ const segments = [...new Set(this._rangePoints)].sort((a, b) =>
35
35
  a < b ? -1 : 1
36
36
  );
37
37
  const parallelism = segments.map(() => 0);
@@ -13,14 +13,14 @@ class Semaphore {
13
13
  */
14
14
  constructor(available) {
15
15
  this.available = available;
16
- /** @type {(function(): void)[]} */
16
+ /** @type {(() => void)[]} */
17
17
  this.waiters = [];
18
18
  /** @private */
19
19
  this._continue = this._continue.bind(this);
20
20
  }
21
21
 
22
22
  /**
23
- * @param {function(): void} callback function block to capture and run
23
+ * @param {() => void} callback function block to capture and run
24
24
  * @returns {void}
25
25
  */
26
26
  acquire(callback) {
@@ -42,7 +42,7 @@ class Semaphore {
42
42
  _continue() {
43
43
  if (this.available > 0 && this.waiters.length > 0) {
44
44
  this.available--;
45
- const callback = /** @type {(function(): void)} */ (this.waiters.pop());
45
+ const callback = /** @type {(() => void)} */ (this.waiters.pop());
46
46
  callback();
47
47
  }
48
48
  }
@@ -11,7 +11,7 @@
11
11
  * @param {Set<T>[]} sets an array of sets being checked for shared elements
12
12
  * @returns {Set<T>} returns a new Set containing the intersecting items
13
13
  */
14
- const intersect = sets => {
14
+ const intersect = (sets) => {
15
15
  if (sets.length === 0) return new Set();
16
16
  if (sets.length === 1) return new Set(sets[0]);
17
17
  let minSize = Infinity;
@@ -54,7 +54,7 @@ const isSubset = (bigSet, smallSet) => {
54
54
  /**
55
55
  * @template T
56
56
  * @param {Set<T>} set a set
57
- * @param {function(T): boolean} fn selector function
57
+ * @param {(set: T) => boolean} fn selector function
58
58
  * @returns {T | undefined} found item
59
59
  */
60
60
  const find = (set, fn) => {
@@ -68,7 +68,7 @@ const find = (set, fn) => {
68
68
  * @param {Set<T> | ReadonlySet<T>} set a set
69
69
  * @returns {T | undefined} first item
70
70
  */
71
- const first = set => {
71
+ const first = (set) => {
72
72
  const entry = set.values().next();
73
73
  return entry.done ? undefined : entry.value;
74
74
  };
@@ -87,8 +87,8 @@ const combine = (a, b) => {
87
87
  return set;
88
88
  };
89
89
 
90
- module.exports.intersect = intersect;
91
- module.exports.isSubset = isSubset;
90
+ module.exports.combine = combine;
92
91
  module.exports.find = find;
93
92
  module.exports.first = first;
94
- module.exports.combine = combine;
93
+ module.exports.intersect = intersect;
94
+ module.exports.isSubset = isSubset;
@@ -16,8 +16,8 @@ class SortableSet extends Set {
16
16
  /**
17
17
  * Create a new sortable set
18
18
  * @template T
19
+ * @typedef {(a: T, b: T) => number} SortFunction
19
20
  * @param {Iterable<T>=} initialIterable The initial iterable value
20
- * @typedef {function(T, T): number} SortFunction
21
21
  * @param {SortFunction<T>=} defaultSort Default sorting function
22
22
  */
23
23
  constructor(initialIterable, defaultSort) {
@@ -29,17 +29,19 @@ class SortableSet extends Set {
29
29
  this._sortFn = defaultSort;
30
30
  /**
31
31
  * @private
32
- * @type {typeof NONE | undefined | function(T, T): number}}
32
+ * @type {typeof NONE | undefined | ((a: T, b: T) => number)}}
33
33
  */
34
34
  this._lastActiveSortFn = NONE;
35
35
  /**
36
36
  * @private
37
- * @type {Map<Function, any> | undefined}
37
+ * @template R
38
+ * @type {Map<(set: SortableSet<T>) => EXPECTED_ANY, EXPECTED_ANY> | undefined}
38
39
  */
39
40
  this._cache = undefined;
40
41
  /**
41
42
  * @private
42
- * @type {Map<Function, any> | undefined}
43
+ * @template R
44
+ * @type {Map<(set: SortableSet<T>) => EXPECTED_ANY, EXPECTED_ANY> | undefined}
43
45
  */
44
46
  this._cacheOrderIndependent = undefined;
45
47
  }
@@ -86,7 +88,7 @@ class SortableSet extends Set {
86
88
  return;
87
89
  }
88
90
 
89
- const sortedArray = Array.from(this).sort(sortFn);
91
+ const sortedArray = [...this].sort(sortFn);
90
92
  super.clear();
91
93
  for (let i = 0; i < sortedArray.length; i += 1) {
92
94
  super.add(sortedArray[i]);
@@ -102,8 +104,8 @@ class SortableSet extends Set {
102
104
 
103
105
  /**
104
106
  * Get data from cache
105
- * @template R
106
- * @param {function(SortableSet<T>): R} fn function to calculate value
107
+ * @template {EXPECTED_ANY} R
108
+ * @param {(set: SortableSet<T>) => R} fn function to calculate value
107
109
  * @returns {R} returns result of fn(this), cached until set changes
108
110
  */
109
111
  getFromCache(fn) {
@@ -124,7 +126,7 @@ class SortableSet extends Set {
124
126
  /**
125
127
  * Get data from cache (ignoring sorting)
126
128
  * @template R
127
- * @param {function(SortableSet<T>): R} fn function to calculate value
129
+ * @param {(set: SortableSet<T>) => R} fn function to calculate value
128
130
  * @returns {R} returns result of fn(this), cached until set changes
129
131
  */
130
132
  getFromUnorderedCache(fn) {
@@ -166,7 +168,7 @@ class SortableSet extends Set {
166
168
  * @returns {T[]} the raw array
167
169
  */
168
170
  toJSON() {
169
- return Array.from(this);
171
+ return [...this];
170
172
  }
171
173
  }
172
174
 
@@ -122,13 +122,13 @@ class StackedCacheMap {
122
122
  * @returns {Iterator<[K, V]>} iterator
123
123
  */
124
124
  [Symbol.iterator]() {
125
- const iterators = this.stack.map(map => map[Symbol.iterator]());
125
+ const iterators = this.stack.map((map) => map[Symbol.iterator]());
126
126
  let current = this.map[Symbol.iterator]();
127
127
  return {
128
128
  next() {
129
129
  let result = current.next();
130
130
  while (result.done && iterators.length > 0) {
131
- current = /** @type {IterableIterator<[K, V]>} */ (iterators.pop());
131
+ current = /** @type {MapIterator<[K, V]>} */ (iterators.pop());
132
132
  result = current.next();
133
133
  }
134
134
  return result;
@@ -24,7 +24,7 @@ const UNDEFINED_MARKER = Symbol("undefined");
24
24
  * @param {[K, InternalCell<V>]} pair the internal cell
25
25
  * @returns {[K, Cell<V>]} its “safe” representation
26
26
  */
27
- const extractPair = pair => {
27
+ const extractPair = (pair) => {
28
28
  const key = pair[0];
29
29
  const val = pair[1];
30
30
  if (val === UNDEFINED_MARKER || val === TOMBSTONE) {
@@ -45,7 +45,7 @@ class StackedMap {
45
45
  /** @type {Map<K, InternalCell<V>>} */
46
46
  this.map = new Map();
47
47
  /** @type {Map<K, InternalCell<V>>[]} */
48
- this.stack = parentStack === undefined ? [] : parentStack.slice();
48
+ this.stack = parentStack === undefined ? [] : [...parentStack];
49
49
  this.stack.push(this.map);
50
50
  }
51
51
 
@@ -134,7 +134,7 @@ class StackedMap {
134
134
 
135
135
  asArray() {
136
136
  this._compress();
137
- return Array.from(this.map.keys());
137
+ return [...this.map.keys()];
138
138
  }
139
139
 
140
140
  asSet() {
@@ -36,7 +36,7 @@
36
36
  */
37
37
  class StringXor {
38
38
  constructor() {
39
- /** @type {Buffer|undefined} */
39
+ /** @type {Buffer | undefined} */
40
40
  this._value = undefined;
41
41
  }
42
42
 
@@ -71,6 +71,7 @@ class StringXor {
71
71
  }
72
72
  } else {
73
73
  for (let i = 0; i < len; i++) {
74
+ // eslint-disable-next-line operator-assignment
74
75
  value[i] = value[i] ^ str.charCodeAt(i);
75
76
  }
76
77
  }
@@ -8,21 +8,22 @@
8
8
  const TupleSet = require("./TupleSet");
9
9
 
10
10
  /**
11
- * @template {any[]} T
11
+ * @template T
12
+ * @template V
12
13
  */
13
14
  class TupleQueue {
14
15
  /**
15
- * @param {Iterable<T>=} items The initial elements.
16
+ * @param {Iterable<[T, V, ...EXPECTED_ANY]>=} items The initial elements.
16
17
  */
17
18
  constructor(items) {
18
19
  /**
19
20
  * @private
20
- * @type {TupleSet<T>}
21
+ * @type {TupleSet<T, V>}
21
22
  */
22
23
  this._set = new TupleSet(items);
23
24
  /**
24
25
  * @private
25
- * @type {Iterator<T>}
26
+ * @type {Iterator<[T, V, ...EXPECTED_ANY]>}
26
27
  */
27
28
  this._iterator = this._set[Symbol.iterator]();
28
29
  }
@@ -37,7 +38,7 @@ class TupleQueue {
37
38
 
38
39
  /**
39
40
  * Appends the specified element to this queue.
40
- * @param {T} item The element to add.
41
+ * @param {[T, V, ...EXPECTED_ANY]} item The element to add.
41
42
  * @returns {void}
42
43
  */
43
44
  enqueue(...item) {
@@ -46,20 +47,22 @@ class TupleQueue {
46
47
 
47
48
  /**
48
49
  * Retrieves and removes the head of this queue.
49
- * @returns {T | undefined} The head of the queue of `undefined` if this queue is empty.
50
+ * @returns {[T, V, ...EXPECTED_ANY] | undefined} The head of the queue of `undefined` if this queue is empty.
50
51
  */
51
52
  dequeue() {
52
53
  const result = this._iterator.next();
53
54
  if (result.done) {
54
55
  if (this._set.size > 0) {
55
56
  this._iterator = this._set[Symbol.iterator]();
56
- const value = this._iterator.next().value;
57
+ const value =
58
+ /** @type {[T, V, ...EXPECTED_ANY]} */
59
+ (this._iterator.next().value);
57
60
  this._set.delete(...value);
58
61
  return value;
59
62
  }
60
63
  return;
61
64
  }
62
- this._set.delete(...result.value);
65
+ this._set.delete(.../** @type {[T, V, ...EXPECTED_ANY]} */ (result.value));
63
66
  return result.value;
64
67
  }
65
68
  }
@@ -6,14 +6,21 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
- * @template {any[]} T
9
+ * @template K
10
+ * @template V
11
+ * @typedef {Map<K, InnerMap<K, V> | Set<V>>} InnerMap
12
+ */
13
+
14
+ /**
15
+ * @template T
16
+ * @template V
10
17
  */
11
18
  class TupleSet {
12
19
  /**
13
- * @param {Iterable<T>=} init init
20
+ * @param {Iterable<[T, V, ...EXPECTED_ANY]>=} init init
14
21
  */
15
22
  constructor(init) {
16
- /** @type {Map<T, TODO>} */
23
+ /** @type {InnerMap<T, V>} */
17
24
  this._map = new Map();
18
25
  this.size = 0;
19
26
  if (init) {
@@ -24,7 +31,7 @@ class TupleSet {
24
31
  }
25
32
 
26
33
  /**
27
- * @param {T} args tuple
34
+ * @param {[T, V, ...EXPECTED_ANY]} args tuple
28
35
  * @returns {void}
29
36
  */
30
37
  add(...args) {
@@ -35,12 +42,12 @@ class TupleSet {
35
42
  if (innerMap === undefined) {
36
43
  map.set(arg, (map = new Map()));
37
44
  } else {
38
- map = innerMap;
45
+ map = /** @type {InnerMap<T, V>} */ (innerMap);
39
46
  }
40
47
  }
41
48
 
42
49
  const beforeLast = args[args.length - 2];
43
- let set = map.get(beforeLast);
50
+ let set = /** @type {Set<V>} */ (map.get(beforeLast));
44
51
  if (set === undefined) {
45
52
  map.set(beforeLast, (set = new Set()));
46
53
  }
@@ -52,14 +59,14 @@ class TupleSet {
52
59
  }
53
60
 
54
61
  /**
55
- * @param {T} args tuple
62
+ * @param {[T, V, ...EXPECTED_ANY]} args tuple
56
63
  * @returns {boolean} true, if the tuple is in the Set
57
64
  */
58
65
  has(...args) {
59
66
  let map = this._map;
60
67
  for (let i = 0; i < args.length - 2; i++) {
61
68
  const arg = args[i];
62
- map = map.get(arg);
69
+ map = /** @type {InnerMap<T, V>} */ (map.get(arg));
63
70
  if (map === undefined) {
64
71
  return false;
65
72
  }
@@ -76,14 +83,14 @@ class TupleSet {
76
83
  }
77
84
 
78
85
  /**
79
- * @param {T} args tuple
86
+ * @param {[T, V, ...EXPECTED_ANY]} args tuple
80
87
  * @returns {void}
81
88
  */
82
89
  delete(...args) {
83
90
  let map = this._map;
84
91
  for (let i = 0; i < args.length - 2; i++) {
85
92
  const arg = args[i];
86
- map = map.get(arg);
93
+ map = /** @type {InnerMap<T, V>} */ (map.get(arg));
87
94
  if (map === undefined) {
88
95
  return;
89
96
  }
@@ -102,26 +109,36 @@ class TupleSet {
102
109
  }
103
110
 
104
111
  /**
105
- * @returns {Iterator<T>} iterator
112
+ * @returns {Iterator<[T, V, ...EXPECTED_ANY]>} iterator
106
113
  */
107
114
  [Symbol.iterator]() {
108
- /** @type {TODO[]} */
115
+ /**
116
+ * @template T, V
117
+ * @typedef {MapIterator<[T, InnerMap<T, V> | Set<V>]>} IteratorStack
118
+ */
119
+
120
+ // This is difficult to type because we can have a map inside a map inside a map, etc. where the end is a set (each key is an argument)
121
+ // But in basic use we only have 2 arguments in our methods, so we have `Map<K, Set<V>>`
122
+ /** @type {IteratorStack<T, V>[]} */
109
123
  const iteratorStack = [];
110
- /** @type {T[]} */
124
+ /** @type {[T?, V?, ...EXPECTED_ANY]} */
111
125
  const tuple = [];
112
- /** @type {Iterator<T> | undefined} */
126
+ /** @type {SetIterator<V> | undefined} */
113
127
  let currentSetIterator;
114
128
 
115
129
  /**
116
- * @param {TODO} it iterator
130
+ * @param {IteratorStack<T, V>} it iterator
117
131
  * @returns {boolean} result
118
132
  */
119
- const next = it => {
133
+ const next = (it) => {
120
134
  const result = it.next();
121
135
  if (result.done) {
122
136
  if (iteratorStack.length === 0) return false;
123
137
  tuple.pop();
124
- return next(iteratorStack.pop());
138
+ return next(
139
+ /** @type {IteratorStack<T, V>} */
140
+ (iteratorStack.pop())
141
+ );
125
142
  }
126
143
  const [key, value] = result.value;
127
144
  iteratorStack.push(it);
@@ -141,13 +158,21 @@ class TupleSet {
141
158
  const result = currentSetIterator.next();
142
159
  if (result.done) {
143
160
  tuple.pop();
144
- if (!next(iteratorStack.pop())) {
161
+ if (
162
+ !next(
163
+ /** @type {IteratorStack<T, V>} */
164
+ (iteratorStack.pop())
165
+ )
166
+ ) {
145
167
  currentSetIterator = undefined;
146
168
  }
147
169
  } else {
148
170
  return {
149
171
  done: false,
150
- value: /** @type {T} */ (tuple.concat(result.value))
172
+ value:
173
+ /* eslint-disable unicorn/prefer-spread */
174
+ /** @type {[T, V, ...EXPECTED_ANY]} */
175
+ (tuple.concat(result.value))
151
176
  };
152
177
  }
153
178
  }
@@ -5,8 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("./fs").InputFileSystem} InputFileSystem */
9
- /** @typedef {(error: Error|null, result?: Buffer) => void} ErrorFirstCallback */
8
+ /** @typedef {(error: Error | null, result?: Buffer) => void} ErrorFirstCallback */
10
9
 
11
10
  const backSlashCharCode = "\\".charCodeAt(0);
12
11
  const slashCharCode = "/".charCodeAt(0);
@@ -26,7 +25,7 @@ const queryCharCode = "?".charCodeAt(0);
26
25
  * e.g. Absolute specifiers like 'file:///user/webpack/index.js'
27
26
  * https://tools.ietf.org/html/rfc3986#section-3.1
28
27
  * @param {string} specifier specifier
29
- * @returns {string|undefined} scheme if absolute URL specifier provided
28
+ * @returns {string | undefined} scheme if absolute URL specifier provided
30
29
  */
31
30
  function getScheme(specifier) {
32
31
  const start = specifier.charCodeAt(0);
@@ -83,5 +82,5 @@ function getProtocol(specifier) {
83
82
  return scheme === undefined ? undefined : `${scheme}:`;
84
83
  }
85
84
 
86
- module.exports.getScheme = getScheme;
87
85
  module.exports.getProtocol = getProtocol;
86
+ module.exports.getScheme = getScheme;