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
@@ -6,13 +6,13 @@
6
6
  "use strict";
7
7
 
8
8
  const { pathToFileURL } = require("url");
9
- const CommentCompilationWarning = require("../CommentCompilationWarning");
10
9
  const RuntimeGlobals = require("../RuntimeGlobals");
11
- const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
12
10
  const ConstDependency = require("../dependencies/ConstDependency");
13
11
  const ContextDependencyHelpers = require("../dependencies/ContextDependencyHelpers");
14
12
  const URLContextDependency = require("../dependencies/URLContextDependency");
15
13
  const URLDependency = require("../dependencies/URLDependency");
14
+ const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
15
+ const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
16
16
  const BasicEvaluatedExpression = require("../javascript/BasicEvaluatedExpression");
17
17
  const { approve } = require("../javascript/JavascriptParserHelpers");
18
18
  const InnerGraph = require("../optimize/InnerGraph");
@@ -28,12 +28,14 @@ const InnerGraph = require("../optimize/InnerGraph");
28
28
  const PLUGIN_NAME = "URLParserPlugin";
29
29
 
30
30
  /**
31
+ * Returns file url.
31
32
  * @param {NormalModule} module module
32
33
  * @returns {URL} file url
33
34
  */
34
35
  const getUrl = (module) => pathToFileURL(module.resource);
35
36
 
36
37
  /**
38
+ * Checks whether this object is meta url.
37
39
  * @param {JavascriptParser} parser parser parser
38
40
  * @param {MemberExpression} arg arg
39
41
  * @returns {boolean} true when it is `meta.url`, otherwise false
@@ -58,6 +60,7 @@ const isMetaUrl = (parser, arg) => {
58
60
  const getEvaluatedExprCache = new WeakMap();
59
61
 
60
62
  /**
63
+ * Gets evaluated expr.
61
64
  * @param {NewExpressionNode} expr expression
62
65
  * @param {JavascriptParser} parser parser parser
63
66
  * @returns {BasicEvaluatedExpression | undefined} basic evaluated expression
@@ -67,6 +70,7 @@ const getEvaluatedExpr = (expr, parser) => {
67
70
  if (result !== undefined) return result;
68
71
 
69
72
  /**
73
+ * Returns basic evaluated expression.
70
74
  * @returns {BasicEvaluatedExpression | undefined} basic evaluated expression
71
75
  */
72
76
  const evaluate = () => {
@@ -90,6 +94,7 @@ const getEvaluatedExpr = (expr, parser) => {
90
94
 
91
95
  class URLParserPlugin {
92
96
  /**
97
+ * Creates an instance of URLParserPlugin.
93
98
  * @param {JavascriptParserOptions} options options
94
99
  */
95
100
  constructor(options) {
@@ -98,6 +103,7 @@ class URLParserPlugin {
98
103
  }
99
104
 
100
105
  /**
106
+ * Applies the plugin by registering its hooks on the compiler.
101
107
  * @param {JavascriptParser} parser the parser
102
108
  * @returns {void}
103
109
  */
@@ -6,10 +6,14 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Tracks values across a stack of nested sets where child scopes can add new
10
+ * values without mutating the sets created by their parents.
9
11
  * @template T
10
12
  */
11
13
  class AppendOnlyStackedSet {
12
14
  /**
15
+ * Seeds the stacked set with an optional chain of previously created scope
16
+ * layers.
13
17
  * @param {Set<T>[]} sets an optional array of sets
14
18
  */
15
19
  constructor(sets = []) {
@@ -20,6 +24,8 @@ class AppendOnlyStackedSet {
20
24
  }
21
25
 
22
26
  /**
27
+ * Adds a value to the current scope layer, creating that layer lazily when
28
+ * the first write occurs.
23
29
  * @param {T} el element
24
30
  */
25
31
  add(el) {
@@ -31,6 +37,8 @@ class AppendOnlyStackedSet {
31
37
  }
32
38
 
33
39
  /**
40
+ * Checks whether a value is present in any scope layer currently visible to
41
+ * this stacked set.
34
42
  * @param {T} el element
35
43
  * @returns {boolean} result
36
44
  */
@@ -41,6 +49,9 @@ class AppendOnlyStackedSet {
41
49
  return false;
42
50
  }
43
51
 
52
+ /**
53
+ * Removes every scope layer and any values accumulated in them.
54
+ */
44
55
  clear() {
45
56
  this._sets = [];
46
57
  if (this._current) {
@@ -49,6 +60,8 @@ class AppendOnlyStackedSet {
49
60
  }
50
61
 
51
62
  /**
63
+ * Creates a child stacked set that shares the existing scope history while
64
+ * allowing subsequent additions to be recorded in its own new layer.
52
65
  * @returns {AppendOnlyStackedSet<T>} child
53
66
  */
54
67
  createChild() {
@@ -56,6 +69,8 @@ class AppendOnlyStackedSet {
56
69
  }
57
70
 
58
71
  /**
72
+ * Iterates over the stacked sets from newest to oldest so consumers can
73
+ * inspect recently added values first.
59
74
  * @returns {Iterator<T>} iterable iterator
60
75
  */
61
76
  [Symbol.iterator]() {
@@ -34,6 +34,7 @@ module.exports.groupBy = (
34
34
  ) =>
35
35
  arr.reduce(
36
36
  /**
37
+ * Handles the callback logic for this hook.
37
38
  * @param {[T[], T[]]} groups An accumulator storing already partitioned values returned from previous call.
38
39
  * @param {T} value The value of the current element
39
40
  * @returns {[T[], T[]]} returns an array of partitioned groups accumulator resulting from calling a predicate on the current value.
@@ -6,10 +6,13 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * FIFO queue backed by arrays with a reversed dequeue buffer to avoid the cost
10
+ * of repeated `Array#shift` operations.
9
11
  * @template T
10
12
  */
11
13
  class ArrayQueue {
12
14
  /**
15
+ * Seeds the queue with an optional iterable of items in dequeue order.
13
16
  * @param {Iterable<T>=} items The initial elements.
14
17
  */
15
18
  constructor(items) {
@@ -26,7 +29,7 @@ class ArrayQueue {
26
29
  }
27
30
 
28
31
  /**
29
- * Returns the number of elements in this queue.
32
+ * Returns the current number of items waiting in either internal buffer.
30
33
  * @returns {number} The number of elements in this queue.
31
34
  */
32
35
  get length() {
@@ -34,7 +37,7 @@ class ArrayQueue {
34
37
  }
35
38
 
36
39
  /**
37
- * Empties the queue.
40
+ * Removes all pending items from both internal buffers.
38
41
  */
39
42
  clear() {
40
43
  this._list.length = 0;
@@ -42,7 +45,7 @@ class ArrayQueue {
42
45
  }
43
46
 
44
47
  /**
45
- * Appends the specified element to this queue.
48
+ * Appends an item to the tail of the queue.
46
49
  * @param {T} item The element to add.
47
50
  * @returns {void}
48
51
  */
@@ -51,7 +54,8 @@ class ArrayQueue {
51
54
  }
52
55
 
53
56
  /**
54
- * Retrieves and removes the head of this queue.
57
+ * Removes and returns the next item in FIFO order, switching to a reversed
58
+ * buffer when that is cheaper than shifting from the front of the array.
55
59
  * @returns {T | undefined} The head of the queue of `undefined` if this queue is empty.
56
60
  */
57
61
  dequeue() {
@@ -68,7 +72,8 @@ class ArrayQueue {
68
72
  }
69
73
 
70
74
  /**
71
- * Finds and removes an item
75
+ * Removes the first matching item from whichever internal buffer currently
76
+ * contains it.
72
77
  * @param {T} item the item
73
78
  * @returns {void}
74
79
  */
@@ -6,8 +6,8 @@
6
6
  "use strict";
7
7
 
8
8
  const { AsyncSeriesHook, SyncHook } = require("tapable");
9
- const { makeWebpackError } = require("../HookWebpackError");
10
- const WebpackError = require("../WebpackError");
9
+ const { makeWebpackError } = require("../errors/HookWebpackError");
10
+ const WebpackError = require("../errors/WebpackError");
11
11
  const ArrayQueue = require("./ArrayQueue");
12
12
 
13
13
  const QUEUED_STATE = 0;
@@ -17,6 +17,7 @@ const DONE_STATE = 2;
17
17
  let inHandleResult = 0;
18
18
 
19
19
  /**
20
+ * Defines the callback callback.
20
21
  * @template T
21
22
  * @callback Callback
22
23
  * @param {(WebpackError | null)=} err
@@ -25,12 +26,14 @@ let inHandleResult = 0;
25
26
  */
26
27
 
27
28
  /**
29
+ * Represents AsyncQueueEntry.
28
30
  * @template T
29
31
  * @template K
30
32
  * @template R
31
33
  */
32
34
  class AsyncQueueEntry {
33
35
  /**
36
+ * Creates an instance of AsyncQueueEntry.
34
37
  * @param {T} item the item
35
38
  * @param {Callback<R>} callback the callback
36
39
  */
@@ -50,22 +53,26 @@ class AsyncQueueEntry {
50
53
  }
51
54
 
52
55
  /**
56
+ * Defines the get key type used by this module.
53
57
  * @template T, K
54
58
  * @typedef {(item: T) => K} getKey
55
59
  */
56
60
 
57
61
  /**
62
+ * Defines the processor type used by this module.
58
63
  * @template T, R
59
64
  * @typedef {(item: T, callback: Callback<R>) => void} Processor
60
65
  */
61
66
 
62
67
  /**
68
+ * Represents AsyncQueue.
63
69
  * @template T
64
70
  * @template K
65
71
  * @template R
66
72
  */
67
73
  class AsyncQueue {
68
74
  /**
75
+ * Creates an instance of AsyncQueue.
69
76
  * @param {object} options options object
70
77
  * @param {string=} options.name name of the queue
71
78
  * @param {number=} options.parallelism how many items should be processed at once
@@ -119,6 +126,7 @@ class AsyncQueue {
119
126
  }
120
127
 
121
128
  /**
129
+ * Returns context of execution.
122
130
  * @returns {string} context of execution
123
131
  */
124
132
  getContext() {
@@ -126,6 +134,7 @@ class AsyncQueue {
126
134
  }
127
135
 
128
136
  /**
137
+ * Updates context using the provided value.
129
138
  * @param {string} value context of execution
130
139
  */
131
140
  setContext(value) {
@@ -133,6 +142,7 @@ class AsyncQueue {
133
142
  }
134
143
 
135
144
  /**
145
+ * Processes the provided item.
136
146
  * @param {T} item an item
137
147
  * @param {Callback<R>} callback callback function
138
148
  * @returns {void}
@@ -185,6 +195,7 @@ class AsyncQueue {
185
195
  }
186
196
 
187
197
  /**
198
+ * Processes the provided item.
188
199
  * @param {T} item an item
189
200
  * @returns {void}
190
201
  */
@@ -225,6 +236,7 @@ class AsyncQueue {
225
236
  }
226
237
 
227
238
  /**
239
+ * Describes how this stop operation behaves.
228
240
  * @returns {void}
229
241
  */
230
242
  stop() {
@@ -245,6 +257,7 @@ class AsyncQueue {
245
257
  }
246
258
 
247
259
  /**
260
+ * Increase parallelism.
248
261
  * @returns {void}
249
262
  */
250
263
  increaseParallelism() {
@@ -258,6 +271,7 @@ class AsyncQueue {
258
271
  }
259
272
 
260
273
  /**
274
+ * Decrease parallelism.
261
275
  * @returns {void}
262
276
  */
263
277
  decreaseParallelism() {
@@ -266,6 +280,7 @@ class AsyncQueue {
266
280
  }
267
281
 
268
282
  /**
283
+ * Checks whether this async queue is processing.
269
284
  * @param {T} item an item
270
285
  * @returns {boolean} true, if the item is currently being processed
271
286
  */
@@ -276,6 +291,7 @@ class AsyncQueue {
276
291
  }
277
292
 
278
293
  /**
294
+ * Checks whether this async queue is queued.
279
295
  * @param {T} item an item
280
296
  * @returns {boolean} true, if the item is currently queued
281
297
  */
@@ -286,6 +302,7 @@ class AsyncQueue {
286
302
  }
287
303
 
288
304
  /**
305
+ * Checks whether this async queue is done.
289
306
  * @param {T} item an item
290
307
  * @returns {boolean} true, if the item is currently queued
291
308
  */
@@ -296,6 +313,7 @@ class AsyncQueue {
296
313
  }
297
314
 
298
315
  /**
316
+ * Describes how this ensure processing operation behaves.
299
317
  * @returns {void}
300
318
  */
301
319
  _ensureProcessing() {
@@ -324,6 +342,7 @@ class AsyncQueue {
324
342
  }
325
343
 
326
344
  /**
345
+ * Processes the provided entry.
327
346
  * @param {AsyncQueueEntry<T, K, R>} entry the entry
328
347
  * @returns {void}
329
348
  */
@@ -351,6 +370,7 @@ class AsyncQueue {
351
370
  }
352
371
 
353
372
  /**
373
+ * Processes the provided entry.
354
374
  * @param {AsyncQueueEntry<T, K, R>} entry the entry
355
375
  * @param {(WebpackError | null)=} err error, if any
356
376
  * @param {(R | null)=} result result, if any
package/lib/util/Hash.js CHANGED
@@ -33,7 +33,7 @@ class Hash {
33
33
  * @returns {Hash} updated hash
34
34
  */
35
35
  update(data, inputEncoding) {
36
- const AbstractMethodError = require("../AbstractMethodError");
36
+ const AbstractMethodError = require("../errors/AbstractMethodError");
37
37
 
38
38
  throw new AbstractMethodError();
39
39
  }
@@ -59,7 +59,7 @@ class Hash {
59
59
  * @returns {string | Buffer} digest
60
60
  */
61
61
  digest(encoding) {
62
- const AbstractMethodError = require("../AbstractMethodError");
62
+ const AbstractMethodError = require("../errors/AbstractMethodError");
63
63
 
64
64
  throw new AbstractMethodError();
65
65
  }
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Returns last item.
9
10
  * @template T
10
11
  * @param {Iterable<T>} set a set
11
12
  * @returns {T | undefined} last item
@@ -18,6 +19,7 @@ const last = (set) => {
18
19
  };
19
20
 
20
21
  /**
22
+ * Returns true, if some items match the filter predicate.
21
23
  * @template T
22
24
  * @param {Iterable<T>} iterable iterable
23
25
  * @param {(value: T) => boolean | null | undefined} filter predicate
@@ -31,6 +33,7 @@ const someInIterable = (iterable, filter) => {
31
33
  };
32
34
 
33
35
  /**
36
+ * Returns count of items.
34
37
  * @template T
35
38
  * @param {Iterable<T>} iterable an iterable
36
39
  * @returns {number} count of items
@@ -9,23 +9,28 @@ const { first } = require("./SetHelpers");
9
9
  const SortableSet = require("./SortableSet");
10
10
 
11
11
  /**
12
+ * Callback that extracts the grouping key for an item at one bucket layer.
12
13
  * @template T
13
14
  * @template K
14
15
  * @typedef {(item: T) => K} GetKey
15
16
  */
16
17
 
17
18
  /**
19
+ * Comparison function used to order keys or leaf items.
18
20
  * @template T
19
21
  * @typedef {(a: T, n: T) => number} Comparator
20
22
  */
21
23
 
22
24
  /**
25
+ * Internal bucket entry, either another nested bucket set or a sorted leaf set.
23
26
  * @template T
24
27
  * @template K
25
28
  * @typedef {LazyBucketSortedSet<T, K> | SortableSet<T>} Entry
26
29
  */
27
30
 
28
31
  /**
32
+ * Constructor argument accepted for nested bucket layers or the final leaf
33
+ * comparator.
29
34
  * @template T
30
35
  * @template K
31
36
  * @typedef {GetKey<T, K> | Comparator<K> | Comparator<T>} Arg
@@ -45,6 +50,8 @@ const SortableSet = require("./SortableSet");
45
50
  */
46
51
  class LazyBucketSortedSet {
47
52
  /**
53
+ * Creates a lazily sorted, potentially multi-level bucket structure whose
54
+ * order is only fully resolved when items are popped.
48
55
  * @param {GetKey<T, K>} getKey function to get key from item
49
56
  * @param {Comparator<K>=} comparator comparator to sort keys
50
57
  * @param {...Arg<T, K>} args more pairs of getKey and comparator plus optional final comparator for the last layer
@@ -62,6 +69,8 @@ class LazyBucketSortedSet {
62
69
  }
63
70
 
64
71
  /**
72
+ * Adds an item to the unsorted staging area so sorting can be deferred until
73
+ * an ordered pop is requested.
65
74
  * @param {T} item an item
66
75
  * @returns {void}
67
76
  */
@@ -71,6 +80,8 @@ class LazyBucketSortedSet {
71
80
  }
72
81
 
73
82
  /**
83
+ * Inserts an item into the correct nested bucket, creating intermediate
84
+ * bucket structures on demand.
74
85
  * @param {K} key key of item
75
86
  * @param {T} item the item
76
87
  * @returns {void}
@@ -95,6 +106,8 @@ class LazyBucketSortedSet {
95
106
  }
96
107
 
97
108
  /**
109
+ * Removes an item from either the unsorted staging area or its resolved
110
+ * bucket and prunes empty buckets as needed.
98
111
  * @param {T} item an item
99
112
  * @returns {void}
100
113
  */
@@ -113,6 +126,7 @@ class LazyBucketSortedSet {
113
126
  }
114
127
 
115
128
  /**
129
+ * Removes an empty bucket key and its corresponding nested entry.
116
130
  * @param {K} key key to be removed
117
131
  * @returns {void}
118
132
  */
@@ -122,6 +136,8 @@ class LazyBucketSortedSet {
122
136
  }
123
137
 
124
138
  /**
139
+ * Removes and returns the smallest item according to the configured bucket
140
+ * order, sorting only the portions of the structure that are needed.
125
141
  * @returns {T | undefined} an item
126
142
  */
127
143
  popFirst() {
@@ -158,6 +174,8 @@ class LazyBucketSortedSet {
158
174
  }
159
175
 
160
176
  /**
177
+ * Begins an in-place update for an item and returns a completion callback
178
+ * that can either reinsert it under a new key or remove it entirely.
161
179
  * @param {T} item to be updated item
162
180
  * @returns {(remove?: true) => void} finish update
163
181
  */
@@ -222,6 +240,8 @@ class LazyBucketSortedSet {
222
240
  }
223
241
 
224
242
  /**
243
+ * Appends iterators for every stored bucket and leaf to support unordered
244
+ * traversal across the entire structure.
225
245
  * @param {Iterator<T>[]} iterators list of iterators to append to
226
246
  * @returns {void}
227
247
  */
@@ -245,6 +265,7 @@ class LazyBucketSortedSet {
245
265
  }
246
266
 
247
267
  /**
268
+ * Iterates over all stored items without imposing bucket sort order.
248
269
  * @returns {Iterator<T>} the iterator
249
270
  */
250
271
  [Symbol.iterator]() {
@@ -8,6 +8,7 @@
8
8
  const makeSerializable = require("./makeSerializable");
9
9
 
10
10
  /**
11
+ * Merges every queued iterable directly into the concrete backing set.
11
12
  * @template T
12
13
  * @param {Set<T>} targetSet set where items should be added
13
14
  * @param {Set<Iterable<T>>} toMerge iterables to be merged
@@ -22,6 +23,8 @@ const merge = (targetSet, toMerge) => {
22
23
  };
23
24
 
24
25
  /**
26
+ * Flattens nested `LazySet` instances into a single collection of iterables
27
+ * that can later be merged into the backing set.
25
28
  * @template T
26
29
  * @param {Set<Iterable<T>>} targetSet set where iterables should be added
27
30
  * @param {LazySet<T>[]} toDeepMerge lazy sets to be flattened
@@ -40,6 +43,7 @@ const flatten = (targetSet, toDeepMerge) => {
40
43
  };
41
44
 
42
45
  /**
46
+ * Defines the set iterator type used by this module.
43
47
  * @template T
44
48
  * @typedef {import("typescript-iterable").SetIterator<T>} SetIterator
45
49
  */
@@ -52,6 +56,8 @@ const flatten = (targetSet, toDeepMerge) => {
52
56
  */
53
57
  class LazySet {
54
58
  /**
59
+ * Seeds the set with an optional iterable while preparing internal queues for
60
+ * deferred merges.
55
61
  * @param {Iterable<T>=} iterable init iterable
56
62
  */
57
63
  constructor(iterable) {
@@ -65,11 +71,17 @@ class LazySet {
65
71
  this._deopt = false;
66
72
  }
67
73
 
74
+ /**
75
+ * Flattens any nested lazy sets that were queued for merging.
76
+ */
68
77
  _flatten() {
69
78
  flatten(this._toMerge, this._toDeepMerge);
70
79
  this._toDeepMerge.length = 0;
71
80
  }
72
81
 
82
+ /**
83
+ * Materializes all deferred additions into the backing set.
84
+ */
73
85
  _merge() {
74
86
  this._flatten();
75
87
  merge(this._set, this._toMerge);
@@ -77,6 +89,10 @@ class LazySet {
77
89
  this._needMerge = false;
78
90
  }
79
91
 
92
+ /**
93
+ * Reports whether the set is empty without forcing a full merge.
94
+ * @returns {boolean} true when no items have been stored or queued
95
+ */
80
96
  _isEmpty() {
81
97
  return (
82
98
  this._set.size === 0 &&
@@ -85,12 +101,17 @@ class LazySet {
85
101
  );
86
102
  }
87
103
 
104
+ /**
105
+ * Returns the number of items after applying any deferred merges.
106
+ * @returns {number} number of items in the set
107
+ */
88
108
  get size() {
89
109
  if (this._needMerge) this._merge();
90
110
  return this._set.size;
91
111
  }
92
112
 
93
113
  /**
114
+ * Adds a single item immediately to the concrete backing set.
94
115
  * @param {T} item an item
95
116
  * @returns {LazySet<T>} itself
96
117
  */
@@ -100,6 +121,8 @@ class LazySet {
100
121
  }
101
122
 
102
123
  /**
124
+ * Queues another iterable or lazy set for later merging so large bulk adds
125
+ * can stay cheap until the set is read.
103
126
  * @param {Iterable<T> | LazySet<T>} iterable a immutable iterable or another immutable LazySet which will eventually be merged into the Set
104
127
  * @returns {LazySet<T>} itself
105
128
  */
@@ -126,6 +149,9 @@ class LazySet {
126
149
  return this;
127
150
  }
128
151
 
152
+ /**
153
+ * Removes all items and clears every deferred merge queue.
154
+ */
129
155
  clear() {
130
156
  this._set.clear();
131
157
  this._toMerge.clear();
@@ -135,6 +161,8 @@ class LazySet {
135
161
  }
136
162
 
137
163
  /**
164
+ * Deletes an item after first materializing any deferred additions that may
165
+ * contain it.
138
166
  * @param {T} value an item
139
167
  * @returns {boolean} true, if the value was in the Set before
140
168
  */
@@ -144,6 +172,8 @@ class LazySet {
144
172
  }
145
173
 
146
174
  /**
175
+ * Returns the set's entry iterator and permanently switches future
176
+ * operations to eager merge mode to preserve iterator correctness.
147
177
  * @returns {SetIterator<[T, T]>} entries
148
178
  */
149
179
  entries() {
@@ -153,6 +183,8 @@ class LazySet {
153
183
  }
154
184
 
155
185
  /**
186
+ * Iterates over every item after forcing pending merges and switching to
187
+ * eager mode for correctness during iteration.
156
188
  * @template K
157
189
  * @param {(value: T, value2: T, set: Set<T>) => void} callbackFn function called for each entry
158
190
  * @param {K} thisArg this argument for the callbackFn
@@ -166,6 +198,7 @@ class LazySet {
166
198
  }
167
199
 
168
200
  /**
201
+ * Checks whether an item is present after applying any deferred merges.
169
202
  * @param {T} item an item
170
203
  * @returns {boolean} true, when the item is in the Set
171
204
  */
@@ -175,6 +208,7 @@ class LazySet {
175
208
  }
176
209
 
177
210
  /**
211
+ * Returns the key iterator, eagerly materializing pending merges first.
178
212
  * @returns {SetIterator<T>} keys
179
213
  */
180
214
  keys() {
@@ -184,6 +218,7 @@ class LazySet {
184
218
  }
185
219
 
186
220
  /**
221
+ * Returns the value iterator, eagerly materializing pending merges first.
187
222
  * @returns {SetIterator<T>} values
188
223
  */
189
224
  values() {
@@ -193,6 +228,7 @@ class LazySet {
193
228
  }
194
229
 
195
230
  /**
231
+ * Returns the default iterator over values after forcing pending merges.
196
232
  * @returns {SetIterator<T>} iterable iterator
197
233
  */
198
234
  [Symbol.iterator]() {
@@ -207,6 +243,8 @@ class LazySet {
207
243
  }
208
244
 
209
245
  /**
246
+ * Serializes the fully materialized set contents into webpack's object
247
+ * serialization stream.
210
248
  * @param {import("../serialization/ObjectMiddleware").ObjectSerializerContext} context context
211
249
  */
212
250
  serialize({ write }) {
@@ -216,6 +254,7 @@ class LazySet {
216
254
  }
217
255
 
218
256
  /**
257
+ * Restores a `LazySet` from serialized item data.
219
258
  * @template T
220
259
  * @param {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} context context
221
260
  * @returns {LazySet<T>} lazy set