webpack 5.97.1 → 5.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -6,7 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const asyncLib = require("neo-async");
9
- const { SyncHook, MultiHook } = require("tapable");
9
+ const { MultiHook, SyncHook } = require("tapable");
10
10
 
11
11
  const ConcurrentCompilationError = require("./ConcurrentCompilationError");
12
12
  const MultiStats = require("./MultiStats");
@@ -14,29 +14,36 @@ const MultiWatching = require("./MultiWatching");
14
14
  const WebpackError = require("./WebpackError");
15
15
  const ArrayQueue = require("./util/ArrayQueue");
16
16
 
17
- /** @template T @typedef {import("tapable").AsyncSeriesHook<T>} AsyncSeriesHook<T> */
18
- /** @template T @template R @typedef {import("tapable").SyncBailHook<T, R>} SyncBailHook<T, R> */
17
+ /**
18
+ * @template T
19
+ * @typedef {import("tapable").AsyncSeriesHook<T>} AsyncSeriesHook<T>
20
+ */
21
+ /**
22
+ * @template T
23
+ * @template R
24
+ * @typedef {import("tapable").SyncBailHook<T, R>} SyncBailHook<T, R>
25
+ */
26
+ /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
19
27
  /** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
20
28
  /** @typedef {import("./Compiler")} Compiler */
29
+ /**
30
+ * @template T
31
+ * @template [R=void]
32
+ * @typedef {import("./webpack").Callback<T, R>} Callback
33
+ */
34
+ /** @typedef {import("./webpack").ErrorCallback} ErrorCallback */
21
35
  /** @typedef {import("./Stats")} Stats */
22
- /** @typedef {import("./Watching")} Watching */
23
36
  /** @typedef {import("./logging/Logger").Logger} Logger */
24
37
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
25
38
  /** @typedef {import("./util/fs").IntermediateFileSystem} IntermediateFileSystem */
26
39
  /** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
27
40
  /** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
28
41
 
29
- /**
30
- * @template T
31
- * @callback Callback
32
- * @param {Error | null} err
33
- * @param {T=} result
34
- */
35
-
36
42
  /**
37
43
  * @callback RunWithDependenciesHandler
38
44
  * @param {Compiler} compiler
39
45
  * @param {Callback<MultiStats>} callback
46
+ * @returns {void}
40
47
  */
41
48
 
42
49
  /**
@@ -44,6 +51,10 @@ const ArrayQueue = require("./util/ArrayQueue");
44
51
  * @property {number=} parallelism how many Compilers are allows to run at the same time in parallel
45
52
  */
46
53
 
54
+ /** @typedef {ReadonlyArray<WebpackOptions> & MultiCompilerOptions} MultiWebpackOptions */
55
+
56
+ const CLASS_NAME = "MultiCompiler";
57
+
47
58
  module.exports = class MultiCompiler {
48
59
  /**
49
60
  * @param {Compiler[] | Record<string, Compiler>} compilers child compilers
@@ -52,7 +63,7 @@ module.exports = class MultiCompiler {
52
63
  constructor(compilers, options) {
53
64
  if (!Array.isArray(compilers)) {
54
65
  /** @type {Compiler[]} */
55
- compilers = Object.keys(compilers).map(name => {
66
+ compilers = Object.keys(compilers).map((name) => {
56
67
  /** @type {Record<string, Compiler>} */
57
68
  (compilers)[name].name = name;
58
69
  return /** @type {Record<string, Compiler>} */ (compilers)[name];
@@ -63,16 +74,16 @@ module.exports = class MultiCompiler {
63
74
  /** @type {SyncHook<[MultiStats]>} */
64
75
  done: new SyncHook(["stats"]),
65
76
  /** @type {MultiHook<SyncHook<[string | null, number]>>} */
66
- invalid: new MultiHook(compilers.map(c => c.hooks.invalid)),
77
+ invalid: new MultiHook(compilers.map((c) => c.hooks.invalid)),
67
78
  /** @type {MultiHook<AsyncSeriesHook<[Compiler]>>} */
68
- run: new MultiHook(compilers.map(c => c.hooks.run)),
79
+ run: new MultiHook(compilers.map((c) => c.hooks.run)),
69
80
  /** @type {SyncHook<[]>} */
70
81
  watchClose: new SyncHook([]),
71
82
  /** @type {MultiHook<AsyncSeriesHook<[Compiler]>>} */
72
- watchRun: new MultiHook(compilers.map(c => c.hooks.watchRun)),
73
- /** @type {MultiHook<SyncBailHook<[string, string, any[]], true>>} */
83
+ watchRun: new MultiHook(compilers.map((c) => c.hooks.watchRun)),
84
+ /** @type {MultiHook<SyncBailHook<[string, string, EXPECTED_ANY[] | undefined], true | void>>} */
74
85
  infrastructureLog: new MultiHook(
75
- compilers.map(c => c.hooks.infrastructureLog)
86
+ compilers.map((c) => c.hooks.infrastructureLog)
76
87
  )
77
88
  });
78
89
  this.compilers = compilers;
@@ -92,7 +103,7 @@ module.exports = class MultiCompiler {
92
103
  const compilerIndex = index;
93
104
  let compilerDone = false;
94
105
  // eslint-disable-next-line no-loop-func
95
- compiler.hooks.done.tap("MultiCompiler", stats => {
106
+ compiler.hooks.done.tap(CLASS_NAME, (stats) => {
96
107
  if (!compilerDone) {
97
108
  compilerDone = true;
98
109
  doneCompilers++;
@@ -105,7 +116,7 @@ module.exports = class MultiCompiler {
105
116
  }
106
117
  });
107
118
  // eslint-disable-next-line no-loop-func
108
- compiler.hooks.invalid.tap("MultiCompiler", () => {
119
+ compiler.hooks.invalid.tap(CLASS_NAME, () => {
109
120
  if (compilerDone) {
110
121
  compilerDone = false;
111
122
  doneCompilers--;
@@ -122,7 +133,7 @@ module.exports = class MultiCompiler {
122
133
  * @param {WebpackError} warning warning
123
134
  */
124
135
  const addWarning = (compiler, warning) => {
125
- compiler.hooks.thisCompilation.tap("MultiCompiler", compilation => {
136
+ compiler.hooks.thisCompilation.tap(CLASS_NAME, (compilation) => {
126
137
  compilation.warnings.push(warning);
127
138
  });
128
139
  };
@@ -150,7 +161,7 @@ module.exports = class MultiCompiler {
150
161
 
151
162
  get options() {
152
163
  return Object.assign(
153
- this.compilers.map(c => c.options),
164
+ this.compilers.map((c) => c.options),
154
165
  this._options
155
166
  );
156
167
  }
@@ -223,7 +234,7 @@ module.exports = class MultiCompiler {
223
234
  }
224
235
 
225
236
  /**
226
- * @param {string | (function(): string)} name name of the logger, or function called once to get the logger name
237
+ * @param {string | (() => string)} name name of the logger, or function called once to get the logger name
227
238
  * @returns {Logger} a logger with that name
228
239
  */
229
240
  getInfrastructureLogger(name) {
@@ -252,7 +263,7 @@ module.exports = class MultiCompiler {
252
263
  * @param {Compiler} compiler compiler
253
264
  * @returns {boolean} target was found
254
265
  */
255
- const targetFound = compiler => {
266
+ const targetFound = (compiler) => {
256
267
  for (const edge of edges) {
257
268
  if (edge.target === compiler) {
258
269
  return true;
@@ -274,7 +285,7 @@ module.exports = class MultiCompiler {
274
285
  const dependencies = this.dependencies.get(source);
275
286
  if (dependencies) {
276
287
  for (const dep of dependencies) {
277
- const target = this.compilers.find(c => c.name === dep);
288
+ const target = this.compilers.find((c) => c.name === dep);
278
289
  if (!target) {
279
290
  missing.push(dep);
280
291
  } else {
@@ -287,8 +298,10 @@ module.exports = class MultiCompiler {
287
298
  }
288
299
  }
289
300
  /** @type {string[]} */
290
- const errors = missing.map(m => `Compiler dependency \`${m}\` not found.`);
291
- const stack = this.compilers.filter(c => !targetFound(c));
301
+ const errors = missing.map(
302
+ (m) => `Compiler dependency \`${m}\` not found.`
303
+ );
304
+ const stack = this.compilers.filter((c) => !targetFound(c));
292
305
  while (stack.length > 0) {
293
306
  const current = stack.pop();
294
307
  for (const edge of edges) {
@@ -303,9 +316,9 @@ module.exports = class MultiCompiler {
303
316
  }
304
317
  if (edges.size > 0) {
305
318
  /** @type {string[]} */
306
- const lines = Array.from(edges)
319
+ const lines = [...edges]
307
320
  .sort(sortEdges)
308
- .map(edge => `${edge.source.name} -> ${edge.target.name}`);
321
+ .map((edge) => `${edge.source.name} -> ${edge.target.name}`);
309
322
  lines.unshift("Circular dependency found in compiler dependencies.");
310
323
  errors.unshift(lines.join("\n"));
311
324
  }
@@ -322,7 +335,7 @@ module.exports = class MultiCompiler {
322
335
  * @deprecated This method should have been private
323
336
  * @param {Compiler[]} compilers the child compilers
324
337
  * @param {RunWithDependenciesHandler} fn a handler to run for each compiler
325
- * @param {Callback<MultiStats>} callback the compiler's handler
338
+ * @param {Callback<Stats[]>} callback the compiler's handler
326
339
  * @returns {void}
327
340
  */
328
341
  runWithDependencies(compilers, fn, callback) {
@@ -332,7 +345,7 @@ module.exports = class MultiCompiler {
332
345
  * @param {string} d dependency
333
346
  * @returns {boolean} when dependency was fulfilled
334
347
  */
335
- const isDependencyFulfilled = d => fulfilledNames.has(d);
348
+ const isDependencyFulfilled = (d) => fulfilledNames.has(d);
336
349
  /**
337
350
  * @returns {Compiler[]} compilers
338
351
  */
@@ -353,22 +366,22 @@ module.exports = class MultiCompiler {
353
366
  return readyCompilers;
354
367
  };
355
368
  /**
356
- * @param {Callback<MultiStats>} callback callback
369
+ * @param {Callback<Stats[]>} callback callback
357
370
  * @returns {void}
358
371
  */
359
- const runCompilers = callback => {
372
+ const runCompilers = (callback) => {
360
373
  if (remainingCompilers.length === 0) return callback(null);
361
374
  asyncLib.map(
362
375
  getReadyCompilers(),
363
376
  (compiler, callback) => {
364
- fn(compiler, err => {
377
+ fn(compiler, (err) => {
365
378
  if (err) return callback(err);
366
379
  fulfilledNames.add(compiler.name);
367
380
  runCompilers(callback);
368
381
  });
369
382
  },
370
383
  (err, results) => {
371
- callback(err, /** @type {TODO} */ (results));
384
+ callback(err, results);
372
385
  }
373
386
  );
374
387
  };
@@ -377,8 +390,8 @@ module.exports = class MultiCompiler {
377
390
 
378
391
  /**
379
392
  * @template SetupResult
380
- * @param {function(Compiler, number, Callback<Stats>, function(): boolean, function(): void, function(): void): SetupResult} setup setup a single compiler
381
- * @param {function(Compiler, SetupResult, Callback<Stats>): void} run run/continue a single compiler
393
+ * @param {(compiler: Compiler, index: number, doneCallback: Callback<Stats>, isBlocked: () => boolean, setChanged: () => void, setInvalid: () => void) => SetupResult} setup setup a single compiler
394
+ * @param {(compiler: Compiler, setupResult: SetupResult, callback: Callback<Stats>) => void} run run/continue a single compiler
382
395
  * @param {Callback<MultiStats>} callback callback when all compilers are done, result includes Stats of all changed compilers
383
396
  * @returns {SetupResult[]} result of setup
384
397
  */
@@ -398,7 +411,7 @@ module.exports = class MultiCompiler {
398
411
  // running-outdated -> blocked [running--] (when compilation is done)
399
412
 
400
413
  /** @type {Node[]} */
401
- const nodes = this.compilers.map(compiler => ({
414
+ const nodes = this.compilers.map((compiler) => ({
402
415
  compiler,
403
416
  setupResult: undefined,
404
417
  result: undefined,
@@ -470,7 +483,7 @@ module.exports = class MultiCompiler {
470
483
  * @param {Node} node node
471
484
  * @returns {void}
472
485
  */
473
- const nodeInvalidFromParent = node => {
486
+ const nodeInvalidFromParent = (node) => {
474
487
  if (node.state === "done") {
475
488
  node.state = "blocked";
476
489
  } else if (node.state === "running") {
@@ -484,7 +497,7 @@ module.exports = class MultiCompiler {
484
497
  * @param {Node} node node
485
498
  * @returns {void}
486
499
  */
487
- const nodeInvalid = node => {
500
+ const nodeInvalid = (node) => {
488
501
  if (node.state === "done") {
489
502
  node.state = "pending";
490
503
  } else if (node.state === "running") {
@@ -498,7 +511,7 @@ module.exports = class MultiCompiler {
498
511
  * @param {Node} node node
499
512
  * @returns {void}
500
513
  */
501
- const nodeChange = node => {
514
+ const nodeChange = (node) => {
502
515
  nodeInvalid(node);
503
516
  if (node.state === "pending") {
504
517
  node.state = "blocked";
@@ -536,7 +549,7 @@ module.exports = class MultiCompiler {
536
549
  if (
537
550
  node.state === "queued" ||
538
551
  (node.state === "blocked" &&
539
- node.parents.every(p => p.state === "done"))
552
+ node.parents.every((p) => p.state === "done"))
540
553
  ) {
541
554
  running++;
542
555
  node.state = "starting";
@@ -552,7 +565,7 @@ module.exports = class MultiCompiler {
552
565
  if (
553
566
  !errored &&
554
567
  running === 0 &&
555
- nodes.every(node => node.state === "done")
568
+ nodes.every((node) => node.state === "done")
556
569
  ) {
557
570
  const stats = [];
558
571
  for (const node of nodes) {
@@ -572,13 +585,14 @@ module.exports = class MultiCompiler {
572
585
  }
573
586
 
574
587
  /**
575
- * @param {WatchOptions|WatchOptions[]} watchOptions the watcher's options
588
+ * @param {WatchOptions | WatchOptions[]} watchOptions the watcher's options
576
589
  * @param {Callback<MultiStats>} handler signals when the call finishes
577
- * @returns {MultiWatching} a compiler watcher
590
+ * @returns {MultiWatching | undefined} a compiler watcher
578
591
  */
579
592
  watch(watchOptions, handler) {
580
593
  if (this.running) {
581
- return handler(new ConcurrentCompilationError());
594
+ handler(new ConcurrentCompilationError());
595
+ return;
582
596
  }
583
597
  this.running = true;
584
598
 
@@ -596,7 +610,7 @@ module.exports = class MultiCompiler {
596
610
  }
597
611
  return watching;
598
612
  },
599
- (compiler, watching, callback) => {
613
+ (compiler, watching, _callback) => {
600
614
  if (compiler.watching !== watching) return;
601
615
  if (!watching.running) watching.invalidate();
602
616
  },
@@ -614,7 +628,8 @@ module.exports = class MultiCompiler {
614
628
  */
615
629
  run(callback) {
616
630
  if (this.running) {
617
- return callback(new ConcurrentCompilationError());
631
+ callback(new ConcurrentCompilationError());
632
+ return;
618
633
  }
619
634
  this.running = true;
620
635
 
@@ -642,7 +657,7 @@ module.exports = class MultiCompiler {
642
657
  }
643
658
 
644
659
  /**
645
- * @param {Callback<void>} callback signals when the compiler closes
660
+ * @param {ErrorCallback} callback signals when the compiler closes
646
661
  * @returns {void}
647
662
  */
648
663
  close(callback) {
@@ -651,7 +666,7 @@ module.exports = class MultiCompiler {
651
666
  (compiler, callback) => {
652
667
  compiler.close(callback);
653
668
  },
654
- error => {
669
+ (error) => {
655
670
  callback(error);
656
671
  }
657
672
  );
package/lib/MultiStats.js CHANGED
@@ -25,6 +25,8 @@ const indent = (str, prefix) => {
25
25
  return prefix + rem;
26
26
  };
27
27
 
28
+ /** @typedef {undefined | string | boolean | StatsOptions} ChildrenStatsOptions */
29
+ /** @typedef {Omit<StatsOptions, "children"> & { children?: ChildrenStatsOptions | ChildrenStatsOptions[] }} MultiStatsOptions */
28
30
  /** @typedef {{ version: boolean, hash: boolean, errorsCount: boolean, warningsCount: boolean, errors: boolean, warnings: boolean, children: NormalizedStatsOptions[] }} ChildOptions */
29
31
 
30
32
  class MultiStats {
@@ -36,25 +38,25 @@ class MultiStats {
36
38
  }
37
39
 
38
40
  get hash() {
39
- return this.stats.map(stat => stat.hash).join("");
41
+ return this.stats.map((stat) => stat.hash).join("");
40
42
  }
41
43
 
42
44
  /**
43
45
  * @returns {boolean} true if a child compilation encountered an error
44
46
  */
45
47
  hasErrors() {
46
- return this.stats.some(stat => stat.hasErrors());
48
+ return this.stats.some((stat) => stat.hasErrors());
47
49
  }
48
50
 
49
51
  /**
50
52
  * @returns {boolean} true if a child compilation had a warning
51
53
  */
52
54
  hasWarnings() {
53
- return this.stats.some(stat => stat.hasWarnings());
55
+ return this.stats.some((stat) => stat.hasWarnings());
54
56
  }
55
57
 
56
58
  /**
57
- * @param {string | boolean | StatsOptions | undefined} options stats options
59
+ * @param {undefined | string | boolean | MultiStatsOptions} options stats options
58
60
  * @param {CreateStatsOptionsContext} context context
59
61
  * @returns {ChildOptions} context context
60
62
  */
@@ -80,6 +82,9 @@ class MultiStats {
80
82
  const childOptions = Array.isArray(childrenOptions)
81
83
  ? childrenOptions[idx]
82
84
  : childrenOptions;
85
+ if (typeof childOptions === "boolean") {
86
+ return stat.compilation.createStatsOptions(childOptions, context);
87
+ }
83
88
  return stat.compilation.createStatsOptions(
84
89
  {
85
90
  ...baseOptions,
@@ -93,18 +98,18 @@ class MultiStats {
93
98
  );
94
99
  });
95
100
  return {
96
- version: children.every(o => o.version),
97
- hash: children.every(o => o.hash),
98
- errorsCount: children.every(o => o.errorsCount),
99
- warningsCount: children.every(o => o.warningsCount),
100
- errors: children.every(o => o.errors),
101
- warnings: children.every(o => o.warnings),
101
+ version: children.every((o) => o.version),
102
+ hash: children.every((o) => o.hash),
103
+ errorsCount: children.every((o) => o.errorsCount),
104
+ warningsCount: children.every((o) => o.warningsCount),
105
+ errors: children.every((o) => o.errors),
106
+ warnings: children.every((o) => o.warnings),
102
107
  children
103
108
  };
104
109
  }
105
110
 
106
111
  /**
107
- * @param {(string | boolean | StatsOptions)=} options stats options
112
+ * @param {(string | boolean | MultiStatsOptions)=} options stats options
108
113
  * @returns {StatsCompilation} json output
109
114
  */
110
115
  toJson(options) {
@@ -130,12 +135,12 @@ class MultiStats {
130
135
  obj.version = obj.children[0].version;
131
136
  }
132
137
  if (childOptions.hash) {
133
- obj.hash = obj.children.map(j => j.hash).join("");
138
+ obj.hash = obj.children.map((j) => j.hash).join("");
134
139
  }
135
140
  /**
136
141
  * @param {StatsCompilation} j stats error
137
142
  * @param {StatsError} obj Stats error
138
- * @returns {TODO} result
143
+ * @returns {StatsError} result
139
144
  */
140
145
  const mapError = (j, obj) => ({
141
146
  ...obj,
@@ -179,7 +184,7 @@ class MultiStats {
179
184
  }
180
185
 
181
186
  /**
182
- * @param {(string | boolean | StatsOptions)=} options stats options
187
+ * @param {(string | boolean | MultiStatsOptions)=} options stats options
183
188
  * @returns {string} string output
184
189
  */
185
190
  toString(options) {
@@ -9,13 +9,7 @@ const asyncLib = require("neo-async");
9
9
 
10
10
  /** @typedef {import("./MultiCompiler")} MultiCompiler */
11
11
  /** @typedef {import("./Watching")} Watching */
12
-
13
- /**
14
- * @template T
15
- * @callback Callback
16
- * @param {(Error | null)=} err
17
- * @param {T=} result
18
- */
12
+ /** @typedef {import("./webpack").ErrorCallback} ErrorCallback */
19
13
 
20
14
  class MultiWatching {
21
15
  /**
@@ -28,7 +22,7 @@ class MultiWatching {
28
22
  }
29
23
 
30
24
  /**
31
- * @param {Callback<void>=} callback signals when the build has completed again
25
+ * @param {ErrorCallback=} callback signals when the build has completed again
32
26
  * @returns {void}
33
27
  */
34
28
  invalidate(callback) {
@@ -36,7 +30,9 @@ class MultiWatching {
36
30
  asyncLib.each(
37
31
  this.watchings,
38
32
  (watching, callback) => watching.invalidate(callback),
39
- callback
33
+ (err) => {
34
+ callback(err);
35
+ }
40
36
  );
41
37
  } else {
42
38
  for (const watching of this.watchings) {
@@ -58,7 +54,7 @@ class MultiWatching {
58
54
  }
59
55
 
60
56
  /**
61
- * @param {Callback<void>} callback signals when the watcher is closed
57
+ * @param {ErrorCallback} callback signals when the watcher is closed
62
58
  * @returns {void}
63
59
  */
64
60
  close(callback) {
@@ -67,7 +63,7 @@ class MultiWatching {
67
63
  (watching, finishedCallback) => {
68
64
  watching.close(finishedCallback);
69
65
  },
70
- err => {
66
+ (err) => {
71
67
  this.compiler.hooks.watchClose.call();
72
68
  if (typeof callback === "function") {
73
69
  this.compiler.running = false;
@@ -7,6 +7,8 @@
7
7
 
8
8
  /** @typedef {import("./Compiler")} Compiler */
9
9
 
10
+ const PLUGIN_NAME = "NoEmitOnErrorsPlugin";
11
+
10
12
  class NoEmitOnErrorsPlugin {
11
13
  /**
12
14
  * Apply the plugin
@@ -14,11 +16,11 @@ class NoEmitOnErrorsPlugin {
14
16
  * @returns {void}
15
17
  */
16
18
  apply(compiler) {
17
- compiler.hooks.shouldEmit.tap("NoEmitOnErrorsPlugin", compilation => {
19
+ compiler.hooks.shouldEmit.tap(PLUGIN_NAME, (compilation) => {
18
20
  if (compilation.getStats().hasErrors()) return false;
19
21
  });
20
- compiler.hooks.compilation.tap("NoEmitOnErrorsPlugin", compilation => {
21
- compilation.hooks.shouldRecord.tap("NoEmitOnErrorsPlugin", () => {
22
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
23
+ compilation.hooks.shouldRecord.tap(PLUGIN_NAME, () => {
22
24
  if (compilation.getStats().hasErrors()) return false;
23
25
  });
24
26
  });