@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -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,16 +26,19 @@ 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
  */
37
40
  constructor(item, callback) {
41
+ /** @type {T} */
38
42
  this.item = item;
39
43
  /** @type {typeof QUEUED_STATE | typeof PROCESSING_STATE | typeof DONE_STATE} */
40
44
  this.state = QUEUED_STATE;
@@ -50,22 +54,26 @@ class AsyncQueueEntry {
50
54
  }
51
55
 
52
56
  /**
57
+ * Defines the get key type used by this module.
53
58
  * @template T, K
54
59
  * @typedef {(item: T) => K} getKey
55
60
  */
56
61
 
57
62
  /**
63
+ * Defines the processor type used by this module.
58
64
  * @template T, R
59
65
  * @typedef {(item: T, callback: Callback<R>) => void} Processor
60
66
  */
61
67
 
62
68
  /**
69
+ * Represents AsyncQueue.
63
70
  * @template T
64
71
  * @template K
65
72
  * @template R
66
73
  */
67
74
  class AsyncQueue {
68
75
  /**
76
+ * Creates an instance of AsyncQueue.
69
77
  * @param {object} options options object
70
78
  * @param {string=} options.name name of the queue
71
79
  * @param {number=} options.parallelism how many items should be processed at once
@@ -75,10 +83,15 @@ class AsyncQueue {
75
83
  * @param {Processor<T, R>} options.processor async function to process items
76
84
  */
77
85
  constructor({ name, context, parallelism, parent, processor, getKey }) {
86
+ /** @type {string | undefined} */
78
87
  this._name = name;
88
+ /** @type {string} */
79
89
  this._context = context || "normal";
90
+ /** @type {number} */
80
91
  this._parallelism = parallelism || 1;
92
+ /** @type {Processor<T, R>} */
81
93
  this._processor = processor;
94
+ /** @type {getKey<T, K>} */
82
95
  this._getKey =
83
96
  getKey ||
84
97
  /** @type {getKey<T, K>} */ ((item) => /** @type {T & K} */ (item));
@@ -88,9 +101,13 @@ class AsyncQueue {
88
101
  this._queued = new ArrayQueue();
89
102
  /** @type {AsyncQueue<T, K, R>[] | undefined} */
90
103
  this._children = undefined;
104
+ /** @type {number} */
91
105
  this._activeTasks = 0;
106
+ /** @type {boolean} */
92
107
  this._willEnsureProcessing = false;
108
+ /** @type {boolean} */
93
109
  this._needProcessing = false;
110
+ /** @type {boolean} */
94
111
  this._stopped = false;
95
112
  /** @type {AsyncQueue<T, K, R>} */
96
113
  this._root = parent ? parent._root : this;
@@ -119,6 +136,7 @@ class AsyncQueue {
119
136
  }
120
137
 
121
138
  /**
139
+ * Returns context of execution.
122
140
  * @returns {string} context of execution
123
141
  */
124
142
  getContext() {
@@ -126,6 +144,7 @@ class AsyncQueue {
126
144
  }
127
145
 
128
146
  /**
147
+ * Updates context using the provided value.
129
148
  * @param {string} value context of execution
130
149
  */
131
150
  setContext(value) {
@@ -133,12 +152,18 @@ class AsyncQueue {
133
152
  }
134
153
 
135
154
  /**
155
+ * Processes the provided item.
136
156
  * @param {T} item an item
137
157
  * @param {Callback<R>} callback callback function
138
158
  * @returns {void}
139
159
  */
140
160
  add(item, callback) {
141
161
  if (this._stopped) return callback(new WebpackError("Queue was stopped"));
162
+ // skip async hook dispatch when unused — this runs per module × queue
163
+ if (!this.hooks.beforeAdd.isUsed()) {
164
+ this._add(item, callback);
165
+ return;
166
+ }
142
167
  this.hooks.beforeAdd.callAsync(item, (err) => {
143
168
  if (err) {
144
169
  callback(
@@ -146,45 +171,56 @@ class AsyncQueue {
146
171
  );
147
172
  return;
148
173
  }
149
- const key = this._getKey(item);
150
- const entry = this._entries.get(key);
151
- if (entry !== undefined) {
152
- if (entry.state === DONE_STATE) {
153
- if (inHandleResult++ > 3) {
154
- process.nextTick(() => callback(entry.error, entry.result));
155
- } else {
156
- callback(entry.error, entry.result);
157
- }
158
- inHandleResult--;
159
- } else if (entry.callbacks === undefined) {
160
- entry.callbacks = [callback];
174
+ this._add(item, callback);
175
+ });
176
+ }
177
+
178
+ /**
179
+ * Processes the provided item, after the beforeAdd hook.
180
+ * @param {T} item an item
181
+ * @param {Callback<R>} callback callback function
182
+ * @returns {void}
183
+ */
184
+ _add(item, callback) {
185
+ const key = this._getKey(item);
186
+ const entry = this._entries.get(key);
187
+ if (entry !== undefined) {
188
+ if (entry.state === DONE_STATE) {
189
+ if (inHandleResult++ > 3) {
190
+ process.nextTick(() => callback(entry.error, entry.result));
161
191
  } else {
162
- entry.callbacks.push(callback);
192
+ callback(entry.error, entry.result);
163
193
  }
164
- return;
165
- }
166
- const newEntry = new AsyncQueueEntry(item, callback);
167
- if (this._stopped) {
168
- this.hooks.added.call(item);
169
- this._root._activeTasks++;
170
- process.nextTick(() =>
171
- this._handleResult(newEntry, new WebpackError("Queue was stopped"))
172
- );
194
+ inHandleResult--;
195
+ } else if (entry.callbacks === undefined) {
196
+ entry.callbacks = [callback];
173
197
  } else {
174
- this._entries.set(key, newEntry);
175
- this._queued.enqueue(newEntry);
176
- const root = this._root;
177
- root._needProcessing = true;
178
- if (root._willEnsureProcessing === false) {
179
- root._willEnsureProcessing = true;
180
- setImmediate(root._ensureProcessing);
181
- }
182
- this.hooks.added.call(item);
198
+ entry.callbacks.push(callback);
183
199
  }
184
- });
200
+ return;
201
+ }
202
+ const newEntry = new AsyncQueueEntry(item, callback);
203
+ if (this._stopped) {
204
+ this.hooks.added.call(item);
205
+ this._root._activeTasks++;
206
+ process.nextTick(() =>
207
+ this._handleResult(newEntry, new WebpackError("Queue was stopped"))
208
+ );
209
+ } else {
210
+ this._entries.set(key, newEntry);
211
+ this._queued.enqueue(newEntry);
212
+ const root = this._root;
213
+ root._needProcessing = true;
214
+ if (root._willEnsureProcessing === false) {
215
+ root._willEnsureProcessing = true;
216
+ setImmediate(root._ensureProcessing);
217
+ }
218
+ this.hooks.added.call(item);
219
+ }
185
220
  }
186
221
 
187
222
  /**
223
+ * Processes the provided item.
188
224
  * @param {T} item an item
189
225
  * @returns {void}
190
226
  */
@@ -225,6 +261,7 @@ class AsyncQueue {
225
261
  }
226
262
 
227
263
  /**
264
+ * Describes how this stop operation behaves.
228
265
  * @returns {void}
229
266
  */
230
267
  stop() {
@@ -245,6 +282,7 @@ class AsyncQueue {
245
282
  }
246
283
 
247
284
  /**
285
+ * Increase parallelism.
248
286
  * @returns {void}
249
287
  */
250
288
  increaseParallelism() {
@@ -258,6 +296,7 @@ class AsyncQueue {
258
296
  }
259
297
 
260
298
  /**
299
+ * Decrease parallelism.
261
300
  * @returns {void}
262
301
  */
263
302
  decreaseParallelism() {
@@ -266,6 +305,7 @@ class AsyncQueue {
266
305
  }
267
306
 
268
307
  /**
308
+ * Checks whether this async queue is processing.
269
309
  * @param {T} item an item
270
310
  * @returns {boolean} true, if the item is currently being processed
271
311
  */
@@ -276,6 +316,7 @@ class AsyncQueue {
276
316
  }
277
317
 
278
318
  /**
319
+ * Checks whether this async queue is queued.
279
320
  * @param {T} item an item
280
321
  * @returns {boolean} true, if the item is currently queued
281
322
  */
@@ -286,6 +327,7 @@ class AsyncQueue {
286
327
  }
287
328
 
288
329
  /**
330
+ * Checks whether this async queue is done.
289
331
  * @param {T} item an item
290
332
  * @returns {boolean} true, if the item is currently queued
291
333
  */
@@ -296,6 +338,7 @@ class AsyncQueue {
296
338
  }
297
339
 
298
340
  /**
341
+ * Describes how this ensure processing operation behaves.
299
342
  * @returns {void}
300
343
  */
301
344
  _ensureProcessing() {
@@ -324,10 +367,16 @@ class AsyncQueue {
324
367
  }
325
368
 
326
369
  /**
370
+ * Processes the provided entry.
327
371
  * @param {AsyncQueueEntry<T, K, R>} entry the entry
328
372
  * @returns {void}
329
373
  */
330
374
  _startProcessing(entry) {
375
+ // skip async hook dispatch when unused — this runs per module × queue
376
+ if (!this.hooks.beforeStart.isUsed()) {
377
+ this._startProcessing2(entry);
378
+ return;
379
+ }
331
380
  this.hooks.beforeStart.callAsync(entry.item, (err) => {
332
381
  if (err) {
333
382
  this._handleResult(
@@ -336,66 +385,97 @@ class AsyncQueue {
336
385
  );
337
386
  return;
338
387
  }
339
- let inCallback = false;
340
- try {
341
- this._processor(entry.item, (e, r) => {
342
- inCallback = true;
343
- this._handleResult(entry, e, r);
344
- });
345
- } catch (err) {
346
- if (inCallback) throw err;
347
- this._handleResult(entry, /** @type {WebpackError} */ (err), null);
348
- }
349
- this.hooks.started.call(entry.item);
388
+ this._startProcessing2(entry);
350
389
  });
351
390
  }
352
391
 
353
392
  /**
393
+ * Processes the provided entry, after the beforeStart hook.
394
+ * @param {AsyncQueueEntry<T, K, R>} entry the entry
395
+ * @returns {void}
396
+ */
397
+ _startProcessing2(entry) {
398
+ let inCallback = false;
399
+ try {
400
+ this._processor(entry.item, (e, r) => {
401
+ inCallback = true;
402
+ this._handleResult(entry, e, r);
403
+ });
404
+ } catch (err) {
405
+ if (inCallback) throw err;
406
+ this._handleResult(entry, /** @type {WebpackError} */ (err), null);
407
+ }
408
+ this.hooks.started.call(entry.item);
409
+ }
410
+
411
+ /**
412
+ * Processes the provided entry.
354
413
  * @param {AsyncQueueEntry<T, K, R>} entry the entry
355
414
  * @param {(WebpackError | null)=} err error, if any
356
415
  * @param {(R | null)=} result result, if any
357
416
  * @returns {void}
358
417
  */
359
418
  _handleResult(entry, err, result) {
419
+ // skip async hook dispatch when unused — this runs per module × queue
420
+ if (!this.hooks.result.isUsed()) {
421
+ this._handleResult2(entry, err, result);
422
+ return;
423
+ }
360
424
  this.hooks.result.callAsync(entry.item, err, result, (hookError) => {
361
- const error = hookError
362
- ? makeWebpackError(hookError, `AsyncQueue(${this._name}).hooks.result`)
363
- : err;
364
-
365
- const callback = /** @type {Callback<R>} */ (entry.callback);
366
- const callbacks = entry.callbacks;
367
- entry.state = DONE_STATE;
368
- entry.callback = undefined;
369
- entry.callbacks = undefined;
370
- entry.result = result;
371
- entry.error = error;
425
+ this._handleResult2(
426
+ entry,
427
+ hookError
428
+ ? makeWebpackError(
429
+ hookError,
430
+ `AsyncQueue(${this._name}).hooks.result`
431
+ )
432
+ : err,
433
+ result
434
+ );
435
+ });
436
+ }
372
437
 
373
- const root = this._root;
374
- root._activeTasks--;
375
- if (root._willEnsureProcessing === false && root._needProcessing) {
376
- root._willEnsureProcessing = true;
377
- setImmediate(root._ensureProcessing);
378
- }
438
+ /**
439
+ * Finalizes the provided entry, after the result hook.
440
+ * @param {AsyncQueueEntry<T, K, R>} entry the entry
441
+ * @param {(WebpackError | null)=} error error, if any
442
+ * @param {(R | null)=} result result, if any
443
+ * @returns {void}
444
+ */
445
+ _handleResult2(entry, error, result) {
446
+ const callback = /** @type {Callback<R>} */ (entry.callback);
447
+ const callbacks = entry.callbacks;
448
+ entry.state = DONE_STATE;
449
+ entry.callback = undefined;
450
+ entry.callbacks = undefined;
451
+ entry.result = result;
452
+ entry.error = error;
379
453
 
380
- if (inHandleResult++ > 3) {
381
- process.nextTick(() => {
382
- callback(error, result);
383
- if (callbacks !== undefined) {
384
- for (const callback of callbacks) {
385
- callback(error, result);
386
- }
387
- }
388
- });
389
- } else {
454
+ const root = this._root;
455
+ root._activeTasks--;
456
+ if (root._willEnsureProcessing === false && root._needProcessing) {
457
+ root._willEnsureProcessing = true;
458
+ setImmediate(root._ensureProcessing);
459
+ }
460
+
461
+ if (inHandleResult++ > 3) {
462
+ process.nextTick(() => {
390
463
  callback(error, result);
391
464
  if (callbacks !== undefined) {
392
465
  for (const callback of callbacks) {
393
466
  callback(error, result);
394
467
  }
395
468
  }
469
+ });
470
+ } else {
471
+ callback(error, result);
472
+ if (callbacks !== undefined) {
473
+ for (const callback of callbacks) {
474
+ callback(error, result);
475
+ }
396
476
  }
397
- inHandleResult--;
398
- });
477
+ }
478
+ inHandleResult--;
399
479
  }
400
480
 
401
481
  clear() {
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,23 +50,32 @@ 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
51
58
  */
52
59
  constructor(getKey, comparator, ...args) {
60
+ /** @type {GetKey<T, K>} */
53
61
  this._getKey = getKey;
62
+ /** @type {Arg<T, K>[]} */
54
63
  this._innerArgs = args;
64
+ /** @type {boolean} */
55
65
  this._leaf = args.length <= 1;
66
+ /** @type {SortableSet<K>} */
56
67
  this._keys = new SortableSet(undefined, comparator);
57
68
  /** @type {Map<K, Entry<T, K>>} */
58
69
  this._map = new Map();
59
70
  /** @type {Set<T>} */
60
71
  this._unsortedItems = new Set();
72
+ /** @type {number} */
61
73
  this.size = 0;
62
74
  }
63
75
 
64
76
  /**
77
+ * Adds an item to the unsorted staging area so sorting can be deferred until
78
+ * an ordered pop is requested.
65
79
  * @param {T} item an item
66
80
  * @returns {void}
67
81
  */
@@ -71,6 +85,8 @@ class LazyBucketSortedSet {
71
85
  }
72
86
 
73
87
  /**
88
+ * Inserts an item into the correct nested bucket, creating intermediate
89
+ * bucket structures on demand.
74
90
  * @param {K} key key of item
75
91
  * @param {T} item the item
76
92
  * @returns {void}
@@ -95,6 +111,8 @@ class LazyBucketSortedSet {
95
111
  }
96
112
 
97
113
  /**
114
+ * Removes an item from either the unsorted staging area or its resolved
115
+ * bucket and prunes empty buckets as needed.
98
116
  * @param {T} item an item
99
117
  * @returns {void}
100
118
  */
@@ -113,6 +131,7 @@ class LazyBucketSortedSet {
113
131
  }
114
132
 
115
133
  /**
134
+ * Removes an empty bucket key and its corresponding nested entry.
116
135
  * @param {K} key key to be removed
117
136
  * @returns {void}
118
137
  */
@@ -122,6 +141,8 @@ class LazyBucketSortedSet {
122
141
  }
123
142
 
124
143
  /**
144
+ * Removes and returns the smallest item according to the configured bucket
145
+ * order, sorting only the portions of the structure that are needed.
125
146
  * @returns {T | undefined} an item
126
147
  */
127
148
  popFirst() {
@@ -158,6 +179,8 @@ class LazyBucketSortedSet {
158
179
  }
159
180
 
160
181
  /**
182
+ * Begins an in-place update for an item and returns a completion callback
183
+ * that can either reinsert it under a new key or remove it entirely.
161
184
  * @param {T} item to be updated item
162
185
  * @returns {(remove?: true) => void} finish update
163
186
  */
@@ -222,6 +245,8 @@ class LazyBucketSortedSet {
222
245
  }
223
246
 
224
247
  /**
248
+ * Appends iterators for every stored bucket and leaf to support unordered
249
+ * traversal across the entire structure.
225
250
  * @param {Iterator<T>[]} iterators list of iterators to append to
226
251
  * @returns {void}
227
252
  */
@@ -245,6 +270,7 @@ class LazyBucketSortedSet {
245
270
  }
246
271
 
247
272
  /**
273
+ * Iterates over all stored items without imposing bucket sort order.
248
274
  * @returns {Iterator<T>} the iterator
249
275
  */
250
276
  [Symbol.iterator]() {