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
package/lib/Compiler.js CHANGED
@@ -8,13 +8,12 @@
8
8
  const parseJson = require("json-parse-even-better-errors");
9
9
  const asyncLib = require("neo-async");
10
10
  const {
11
- SyncHook,
12
- SyncBailHook,
13
11
  AsyncParallelHook,
14
- AsyncSeriesHook
12
+ AsyncSeriesHook,
13
+ SyncBailHook,
14
+ SyncHook
15
15
  } = require("tapable");
16
16
  const { SizeOnlySource } = require("webpack-sources");
17
- const webpack = require(".");
18
17
  const Cache = require("./Cache");
19
18
  const CacheFacade = require("./CacheFacade");
20
19
  const ChunkGraph = require("./ChunkGraph");
@@ -29,36 +28,40 @@ const Stats = require("./Stats");
29
28
  const Watching = require("./Watching");
30
29
  const WebpackError = require("./WebpackError");
31
30
  const { Logger } = require("./logging/Logger");
32
- const { join, dirname, mkdirp } = require("./util/fs");
31
+ const { dirname, join, mkdirp } = require("./util/fs");
33
32
  const { makePathsRelative } = require("./util/identifier");
34
33
  const { isSourceEqual } = require("./util/source");
34
+ const webpack = require(".");
35
35
 
36
36
  /** @typedef {import("webpack-sources").Source} Source */
37
37
  /** @typedef {import("../declarations/WebpackOptions").EntryNormalized} Entry */
38
38
  /** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputOptions */
39
39
  /** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
40
40
  /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
41
- /** @typedef {import("../declarations/WebpackOptions").WebpackPluginInstance} WebpackPluginInstance */
41
+ /** @typedef {import("../declarations/WebpackOptions").Plugins} Plugins */
42
+ /** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
42
43
  /** @typedef {import("./Chunk")} Chunk */
43
- /** @typedef {import("./Compilation").References} References */
44
44
  /** @typedef {import("./Dependency")} Dependency */
45
- /** @typedef {import("./FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
45
+ /** @typedef {import("./HotModuleReplacementPlugin").ChunkHashes} ChunkHashes */
46
+ /** @typedef {import("./HotModuleReplacementPlugin").ChunkModuleHashes} ChunkModuleHashes */
47
+ /** @typedef {import("./HotModuleReplacementPlugin").ChunkModuleIds} ChunkModuleIds */
48
+ /** @typedef {import("./HotModuleReplacementPlugin").ChunkRuntime} ChunkRuntime */
49
+ /** @typedef {import("./HotModuleReplacementPlugin").FullHashChunkModuleHashes} FullHashChunkModuleHashes */
50
+ /** @typedef {import("./HotModuleReplacementPlugin").HotIndex} HotIndex */
46
51
  /** @typedef {import("./Module")} Module */
47
52
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
53
+ /** @typedef {import("./RecordIdsPlugin").RecordsChunks} RecordsChunks */
54
+ /** @typedef {import("./RecordIdsPlugin").RecordsModules} RecordsModules */
48
55
  /** @typedef {import("./config/target").PlatformTargetProperties} PlatformTargetProperties */
49
56
  /** @typedef {import("./logging/createConsoleLogger").LoggingFunction} LoggingFunction */
57
+ /** @typedef {import("./optimize/AggressiveSplittingPlugin").SplitData} SplitData */
50
58
  /** @typedef {import("./util/fs").IStats} IStats */
51
59
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
52
60
  /** @typedef {import("./util/fs").IntermediateFileSystem} IntermediateFileSystem */
53
61
  /** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
62
+ /** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
54
63
  /** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
55
64
 
56
- /**
57
- * @template {any[]} T
58
- * @template V
59
- * @typedef {import("./util/WeakTupleMap")<T, V>} WeakTupleMap
60
- */
61
-
62
65
  /**
63
66
  * @typedef {object} CompilationParams
64
67
  * @property {NormalModuleFactory} normalModuleFactory
@@ -67,25 +70,36 @@ const { isSourceEqual } = require("./util/source");
67
70
 
68
71
  /**
69
72
  * @template T
70
- * @callback RunCallback
71
- * @param {Error | null} err
72
- * @param {T=} result
73
+ * @template [R=void]
74
+ * @typedef {import("./webpack").Callback<T, R>} Callback
73
75
  */
74
76
 
75
- /**
76
- * @template T
77
- * @callback Callback
78
- * @param {(Error | null)=} err
79
- * @param {T=} result
80
- */
77
+ /** @typedef {import("./webpack").ErrorCallback} ErrorCallback */
81
78
 
82
79
  /**
83
80
  * @callback RunAsChildCallback
84
81
  * @param {Error | null} err
85
82
  * @param {Chunk[]=} entries
86
83
  * @param {Compilation=} compilation
84
+ * @returns {void}
87
85
  */
88
86
 
87
+ /**
88
+ * @typedef {object} KnownRecords
89
+ * @property {SplitData[]=} aggressiveSplits
90
+ * @property {RecordsChunks=} chunks
91
+ * @property {RecordsModules=} modules
92
+ * @property {string=} hash
93
+ * @property {HotIndex=} hotIndex
94
+ * @property {FullHashChunkModuleHashes=} fullHashChunkModuleHashes
95
+ * @property {ChunkModuleHashes=} chunkModuleHashes
96
+ * @property {ChunkHashes=} chunkHashes
97
+ * @property {ChunkRuntime=} chunkRuntime
98
+ * @property {ChunkModuleIds=} chunkModuleIds
99
+ */
100
+
101
+ /** @typedef {KnownRecords & Record<string, KnownRecords[]> & Record<string, EXPECTED_ANY>} Records */
102
+
89
103
  /**
90
104
  * @typedef {object} AssetEmittedInfo
91
105
  * @property {Buffer} content
@@ -96,15 +110,18 @@ const { isSourceEqual } = require("./util/source");
96
110
  */
97
111
 
98
112
  /** @typedef {{ sizeOnlySource: SizeOnlySource | undefined, writtenTo: Map<string, number> }} CacheEntry */
99
- /** @typedef {{ path: string, source: Source, size: number | undefined, waiting: ({ cacheEntry: any, file: string }[] | undefined) }} SimilarEntry */
113
+ /** @typedef {{ path: string, source: Source, size: number | undefined, waiting: ({ cacheEntry: CacheEntry, file: string }[] | undefined) }} SimilarEntry */
100
114
 
101
- /** @typedef {{ buildInfo: BuildInfo, references: References | undefined, memCache: WeakTupleMap<any, any> }} ModuleMemCachesItem */
115
+ /** @typedef {WeakMap<Dependency, Module>} WeakReferences */
116
+ /** @typedef {import("./util/WeakTupleMap")<EXPECTED_ANY[], EXPECTED_ANY>} MemCache */
117
+ /** @typedef {{ buildInfo: BuildInfo, references: WeakReferences | undefined, memCache: MemCache }} ModuleMemCachesItem */
102
118
 
103
119
  /**
104
- * @param {string[]} array an array
120
+ * @template T
121
+ * @param {T[]} array an array
105
122
  * @returns {boolean} true, if the array is sorted
106
123
  */
107
- const isSorted = array => {
124
+ const isSorted = (array) => {
108
125
  for (let i = 1; i < array.length; i++) {
109
126
  if (array[i - 1] > array[i]) return false;
110
127
  }
@@ -112,13 +129,13 @@ const isSorted = array => {
112
129
  };
113
130
 
114
131
  /**
115
- * @param {{[key: string]: any}} obj an object
116
- * @param {string[]} keys the keys of the object
117
- * @returns {{[key: string]: any}} the object with properties sorted by property name
132
+ * @template {object} T
133
+ * @param {T} obj an object
134
+ * @param {(keyof T)[]} keys the keys of the object
135
+ * @returns {T} the object with properties sorted by property name
118
136
  */
119
137
  const sortObject = (obj, keys) => {
120
- /** @type {{[key: string]: any}} */
121
- const o = {};
138
+ const o = /** @type {T} */ ({});
122
139
  for (const k of keys.sort()) {
123
140
  o[k] = obj[k];
124
141
  }
@@ -133,7 +150,7 @@ const sortObject = (obj, keys) => {
133
150
  const includesHash = (filename, hashes) => {
134
151
  if (!hashes) return false;
135
152
  if (Array.isArray(hashes)) {
136
- return hashes.some(hash => filename.includes(hash));
153
+ return hashes.some((hash) => filename.includes(hash));
137
154
  }
138
155
  return filename.includes(hashes);
139
156
  };
@@ -203,7 +220,7 @@ class Compiler {
203
220
  /** @type {AsyncSeriesHook<[]>} */
204
221
  shutdown: new AsyncSeriesHook([]),
205
222
 
206
- /** @type {SyncBailHook<[string, string, any[] | undefined], true | void>} */
223
+ /** @type {SyncBailHook<[string, string, EXPECTED_ANY[] | undefined], true | void>} */
207
224
  infrastructureLog: new SyncBailHook(["origin", "type", "args"]),
208
225
 
209
226
  // TODO the following hooks are weirdly located here
@@ -242,11 +259,11 @@ class Compiler {
242
259
  /** @type {WatchFileSystem | null} */
243
260
  this.watchFileSystem = null;
244
261
 
245
- /** @type {string|null} */
262
+ /** @type {string | null} */
246
263
  this.recordsInputPath = null;
247
- /** @type {string|null} */
264
+ /** @type {string | null} */
248
265
  this.recordsOutputPath = null;
249
- /** @type {Record<string, TODO>} */
266
+ /** @type {Records} */
250
267
  this.records = {};
251
268
  /** @type {Set<string | RegExp>} */
252
269
  this.managedPaths = new Set();
@@ -259,9 +276,9 @@ class Compiler {
259
276
  this.modifiedFiles = undefined;
260
277
  /** @type {ReadonlySet<string> | undefined} */
261
278
  this.removedFiles = undefined;
262
- /** @type {ReadonlyMap<string, FileSystemInfoEntry | "ignore" | null> | undefined} */
279
+ /** @type {TimeInfoEntries | undefined} */
263
280
  this.fileTimestamps = undefined;
264
- /** @type {ReadonlyMap<string, FileSystemInfoEntry | "ignore" | null> | undefined} */
281
+ /** @type {TimeInfoEntries | undefined} */
265
282
  this.contextTimestamps = undefined;
266
283
  /** @type {number | undefined} */
267
284
  this.fsStartTime = undefined;
@@ -341,7 +358,7 @@ class Compiler {
341
358
  }
342
359
 
343
360
  /**
344
- * @param {string | (function(): string)} name name of the logger, or function called once to get the logger name
361
+ * @param {string | (() => string)} name name of the logger, or function called once to get the logger name
345
362
  * @returns {Logger} a logger with that name
346
363
  */
347
364
  getInfrastructureLogger(name) {
@@ -367,7 +384,7 @@ class Compiler {
367
384
  this.infrastructureLogger(name, type, args);
368
385
  }
369
386
  },
370
- childName => {
387
+ (childName) => {
371
388
  if (typeof name === "function") {
372
389
  if (typeof childName === "function") {
373
390
  return this.getInfrastructureLogger(() => {
@@ -457,12 +474,13 @@ class Compiler {
457
474
 
458
475
  /**
459
476
  * @param {WatchOptions} watchOptions the watcher's options
460
- * @param {RunCallback<Stats>} handler signals when the call finishes
461
- * @returns {Watching} a compiler watcher
477
+ * @param {Callback<Stats>} handler signals when the call finishes
478
+ * @returns {Watching | undefined} a compiler watcher
462
479
  */
463
480
  watch(watchOptions, handler) {
464
481
  if (this.running) {
465
- return handler(new ConcurrentCompilationError());
482
+ handler(new ConcurrentCompilationError());
483
+ return;
466
484
  }
467
485
 
468
486
  this.running = true;
@@ -472,12 +490,13 @@ class Compiler {
472
490
  }
473
491
 
474
492
  /**
475
- * @param {RunCallback<Stats>} callback signals when the call finishes
493
+ * @param {Callback<Stats>} callback signals when the call finishes
476
494
  * @returns {void}
477
495
  */
478
496
  run(callback) {
479
497
  if (this.running) {
480
- return callback(new ConcurrentCompilationError());
498
+ callback(new ConcurrentCompilationError());
499
+ return;
481
500
  }
482
501
 
483
502
  /** @type {Logger | undefined} */
@@ -519,7 +538,7 @@ class Compiler {
519
538
  compilation.startTime = startTime;
520
539
  compilation.endTime = Date.now();
521
540
  const stats = new Stats(compilation);
522
- this.hooks.done.callAsync(stats, err => {
541
+ this.hooks.done.callAsync(stats, (err) => {
523
542
  if (err) return finalCallback(err);
524
543
  return finalCallback(null, stats);
525
544
  });
@@ -529,7 +548,7 @@ class Compiler {
529
548
  process.nextTick(() => {
530
549
  logger = compilation.getLogger("webpack.Compiler");
531
550
  logger.time("emitAssets");
532
- this.emitAssets(compilation, err => {
551
+ this.emitAssets(compilation, (err) => {
533
552
  /** @type {Logger} */
534
553
  (logger).timeEnd("emitAssets");
535
554
  if (err) return finalCallback(err);
@@ -542,12 +561,12 @@ class Compiler {
542
561
  /** @type {Logger} */
543
562
  (logger).time("done hook");
544
563
  const stats = new Stats(compilation);
545
- this.hooks.done.callAsync(stats, err => {
564
+ this.hooks.done.callAsync(stats, (err) => {
546
565
  /** @type {Logger} */
547
566
  (logger).timeEnd("done hook");
548
567
  if (err) return finalCallback(err);
549
568
 
550
- this.hooks.additionalPass.callAsync(err => {
569
+ this.hooks.additionalPass.callAsync((err) => {
551
570
  if (err) return finalCallback(err);
552
571
  this.compile(onCompiled);
553
572
  });
@@ -557,7 +576,7 @@ class Compiler {
557
576
 
558
577
  /** @type {Logger} */
559
578
  (logger).time("emitRecords");
560
- this.emitRecords(err => {
579
+ this.emitRecords((err) => {
561
580
  /** @type {Logger} */
562
581
  (logger).timeEnd("emitRecords");
563
582
  if (err) return finalCallback(err);
@@ -567,13 +586,13 @@ class Compiler {
567
586
  /** @type {Logger} */
568
587
  (logger).time("done hook");
569
588
  const stats = new Stats(compilation);
570
- this.hooks.done.callAsync(stats, err => {
589
+ this.hooks.done.callAsync(stats, (err) => {
571
590
  /** @type {Logger} */
572
591
  (logger).timeEnd("done hook");
573
592
  if (err) return finalCallback(err);
574
593
  this.cache.storeBuildDependencies(
575
594
  compilation.buildDependencies,
576
- err => {
595
+ (err) => {
577
596
  if (err) return finalCallback(err);
578
597
  return finalCallback(null, stats);
579
598
  }
@@ -585,13 +604,13 @@ class Compiler {
585
604
  };
586
605
 
587
606
  const run = () => {
588
- this.hooks.beforeRun.callAsync(this, err => {
607
+ this.hooks.beforeRun.callAsync(this, (err) => {
589
608
  if (err) return finalCallback(err);
590
609
 
591
- this.hooks.run.callAsync(this, err => {
610
+ this.hooks.run.callAsync(this, (err) => {
592
611
  if (err) return finalCallback(err);
593
612
 
594
- this.readRecords(err => {
613
+ this.readRecords((err) => {
595
614
  if (err) return finalCallback(err);
596
615
 
597
616
  this.compile(onCompiled);
@@ -601,7 +620,7 @@ class Compiler {
601
620
  };
602
621
 
603
622
  if (this.idle) {
604
- this.cache.endIdle(err => {
623
+ this.cache.endIdle((err) => {
605
624
  if (err) return finalCallback(err);
606
625
 
607
626
  this.idle = false;
@@ -629,7 +648,8 @@ class Compiler {
629
648
  callback(err, entries, compilation);
630
649
  } catch (runAsChildErr) {
631
650
  const err = new WebpackError(
632
- `compiler.runAsChild callback error: ${runAsChildErr}`
651
+ `compiler.runAsChild callback error: ${runAsChildErr}`,
652
+ { cause: runAsChildErr }
633
653
  );
634
654
  err.details = /** @type {Error} */ (runAsChildErr).stack;
635
655
  /** @type {Compilation} */
@@ -673,7 +693,7 @@ class Compiler {
673
693
 
674
694
  /**
675
695
  * @param {Compilation} compilation the compilation
676
- * @param {Callback<void>} callback signals when the assets are emitted
696
+ * @param {ErrorCallback} callback signals when the assets are emitted
677
697
  * @returns {void}
678
698
  */
679
699
  emitAssets(compilation, callback) {
@@ -684,7 +704,7 @@ class Compiler {
684
704
  * @param {Error=} err error
685
705
  * @returns {void}
686
706
  */
687
- const emitFiles = err => {
707
+ const emitFiles = (err) => {
688
708
  if (err) return callback(err);
689
709
 
690
710
  const assets = compilation.getAssets();
@@ -699,9 +719,9 @@ class Compiler {
699
719
  ({ name: file, source, info }, callback) => {
700
720
  let targetFile = file;
701
721
  let immutable = info.immutable;
702
- const queryStringIdx = targetFile.indexOf("?");
703
- if (queryStringIdx >= 0) {
704
- targetFile = targetFile.slice(0, queryStringIdx);
722
+ const queryOrHashStringIdx = targetFile.search(/[?#]/);
723
+ if (queryOrHashStringIdx >= 0) {
724
+ targetFile = targetFile.slice(0, queryOrHashStringIdx);
705
725
  // We may remove the hash, which is in the query string
706
726
  // So we recheck if the file is immutable
707
727
  // This doesn't cover all cases, but immutable is only a performance optimization anyway
@@ -717,7 +737,7 @@ class Compiler {
717
737
  * @param {Error=} err error
718
738
  * @returns {void}
719
739
  */
720
- const writeOut = err => {
740
+ const writeOut = (err) => {
721
741
  if (err) return callback(err);
722
742
  const targetPath = join(
723
743
  /** @type {OutputFileSystem} */
@@ -816,9 +836,9 @@ ${other}`);
816
836
  * @param {Buffer} content content to be written
817
837
  * @returns {void}
818
838
  */
819
- const doWrite = content => {
839
+ const doWrite = (content) => {
820
840
  /** @type {OutputFileSystem} */
821
- (this.outputFileSystem).writeFile(targetPath, content, err => {
841
+ (this.outputFileSystem).writeFile(targetPath, content, (err) => {
822
842
  if (err) return callback(err);
823
843
 
824
844
  // information marker that the asset has been emitted
@@ -849,7 +869,7 @@ ${other}`);
849
869
  /**
850
870
  * @param {number} size size
851
871
  */
852
- const updateWithReplacementSource = size => {
872
+ const updateWithReplacementSource = (size) => {
853
873
  updateFileWithReplacementSource(
854
874
  file,
855
875
  /** @type {CacheEntry} */ (cacheEntry),
@@ -893,7 +913,7 @@ ${other}`);
893
913
  * @param {IStats} stats stats
894
914
  * @returns {void}
895
915
  */
896
- const processExistingFile = stats => {
916
+ const processExistingFile = (stats) => {
897
917
  // skip emitting if it's already there and an immutable file
898
918
  if (immutable) {
899
919
  updateWithReplacementSource(/** @type {number} */ (stats.size));
@@ -993,7 +1013,7 @@ ${other}`);
993
1013
  writeOut();
994
1014
  }
995
1015
  },
996
- err => {
1016
+ (err) => {
997
1017
  // Clear map to free up memory
998
1018
  caseInsensitiveMap.clear();
999
1019
  if (err) {
@@ -1003,16 +1023,16 @@ ${other}`);
1003
1023
 
1004
1024
  this._assetEmittingPreviousFiles = allTargetPaths;
1005
1025
 
1006
- this.hooks.afterEmit.callAsync(compilation, err => {
1026
+ this.hooks.afterEmit.callAsync(compilation, (err) => {
1007
1027
  if (err) return callback(err);
1008
1028
 
1009
- return callback();
1029
+ return callback(null);
1010
1030
  });
1011
1031
  }
1012
1032
  );
1013
1033
  };
1014
1034
 
1015
- this.hooks.emit.callAsync(compilation, err => {
1035
+ this.hooks.emit.callAsync(compilation, (err) => {
1016
1036
  if (err) return callback(err);
1017
1037
  outputPath = compilation.getPath(this.outputPath, {});
1018
1038
  mkdirp(
@@ -1024,7 +1044,7 @@ ${other}`);
1024
1044
  }
1025
1045
 
1026
1046
  /**
1027
- * @param {Callback<void>} callback signals when the call finishes
1047
+ * @param {ErrorCallback} callback signals when the call finishes
1028
1048
  * @returns {void}
1029
1049
  */
1030
1050
  emitRecords(callback) {
@@ -1032,10 +1052,10 @@ ${other}`);
1032
1052
  if (this.recordsOutputPath) {
1033
1053
  asyncLib.parallel(
1034
1054
  [
1035
- cb => this.hooks.emitRecords.callAsync(cb),
1055
+ (cb) => this.hooks.emitRecords.callAsync(cb),
1036
1056
  this._emitRecords.bind(this)
1037
1057
  ],
1038
- err => callback(err)
1058
+ (err) => callback(err)
1039
1059
  );
1040
1060
  } else {
1041
1061
  this.hooks.emitRecords.callAsync(callback);
@@ -1043,12 +1063,12 @@ ${other}`);
1043
1063
  } else if (this.recordsOutputPath) {
1044
1064
  this._emitRecords(callback);
1045
1065
  } else {
1046
- callback();
1066
+ callback(null);
1047
1067
  }
1048
1068
  }
1049
1069
 
1050
1070
  /**
1051
- * @param {Callback<void>} callback signals when the call finishes
1071
+ * @param {ErrorCallback} callback signals when the call finishes
1052
1072
  * @returns {void}
1053
1073
  */
1054
1074
  _emitRecords(callback) {
@@ -1078,8 +1098,10 @@ ${other}`);
1078
1098
  };
1079
1099
 
1080
1100
  const recordsOutputPathDirectory = dirname(
1081
- /** @type {OutputFileSystem} */ (this.outputFileSystem),
1082
- /** @type {string} */ (this.recordsOutputPath)
1101
+ /** @type {OutputFileSystem} */
1102
+ (this.outputFileSystem),
1103
+ /** @type {string} */
1104
+ (this.recordsOutputPath)
1083
1105
  );
1084
1106
  if (!recordsOutputPathDirectory) {
1085
1107
  return writeFile();
@@ -1087,7 +1109,7 @@ ${other}`);
1087
1109
  mkdirp(
1088
1110
  /** @type {OutputFileSystem} */ (this.outputFileSystem),
1089
1111
  recordsOutputPathDirectory,
1090
- err => {
1112
+ (err) => {
1091
1113
  if (err) return callback(err);
1092
1114
  writeFile();
1093
1115
  }
@@ -1095,7 +1117,7 @@ ${other}`);
1095
1117
  }
1096
1118
 
1097
1119
  /**
1098
- * @param {Callback<void>} callback signals when the call finishes
1120
+ * @param {ErrorCallback} callback signals when the call finishes
1099
1121
  * @returns {void}
1100
1122
  */
1101
1123
  readRecords(callback) {
@@ -1103,10 +1125,10 @@ ${other}`);
1103
1125
  if (this.recordsInputPath) {
1104
1126
  asyncLib.parallel(
1105
1127
  [
1106
- cb => this.hooks.readRecords.callAsync(cb),
1128
+ (cb) => this.hooks.readRecords.callAsync(cb),
1107
1129
  this._readRecords.bind(this)
1108
1130
  ],
1109
- err => callback(err)
1131
+ (err) => callback(err)
1110
1132
  );
1111
1133
  } else {
1112
1134
  this.records = {};
@@ -1116,34 +1138,35 @@ ${other}`);
1116
1138
  this._readRecords(callback);
1117
1139
  } else {
1118
1140
  this.records = {};
1119
- callback();
1141
+ callback(null);
1120
1142
  }
1121
1143
  }
1122
1144
 
1123
1145
  /**
1124
- * @param {Callback<void>} callback signals when the call finishes
1146
+ * @param {ErrorCallback} callback signals when the call finishes
1125
1147
  * @returns {void}
1126
1148
  */
1127
1149
  _readRecords(callback) {
1128
1150
  if (!this.recordsInputPath) {
1129
1151
  this.records = {};
1130
- return callback();
1152
+ return callback(null);
1131
1153
  }
1132
1154
  /** @type {InputFileSystem} */
1133
- (this.inputFileSystem).stat(this.recordsInputPath, err => {
1155
+ (this.inputFileSystem).stat(this.recordsInputPath, (err) => {
1134
1156
  // It doesn't exist
1135
1157
  // We can ignore this.
1136
- if (err) return callback();
1158
+ if (err) return callback(null);
1137
1159
 
1138
1160
  /** @type {InputFileSystem} */
1139
1161
  (this.inputFileSystem).readFile(
1140
- /** @type {string} */ (this.recordsInputPath),
1162
+ /** @type {string} */
1163
+ (this.recordsInputPath),
1141
1164
  (err, content) => {
1142
1165
  if (err) return callback(err);
1143
1166
 
1144
1167
  try {
1145
1168
  this.records = parseJson(
1146
- /** @type {Buffer} */ (content).toString("utf-8")
1169
+ /** @type {Buffer} */ (content).toString("utf8")
1147
1170
  );
1148
1171
  } catch (parseErr) {
1149
1172
  return callback(
@@ -1153,7 +1176,7 @@ ${other}`);
1153
1176
  );
1154
1177
  }
1155
1178
 
1156
- return callback();
1179
+ return callback(null);
1157
1180
  }
1158
1181
  );
1159
1182
  });
@@ -1164,7 +1187,7 @@ ${other}`);
1164
1187
  * @param {string} compilerName the compiler's name
1165
1188
  * @param {number} compilerIndex the compiler's index
1166
1189
  * @param {Partial<OutputOptions>=} outputOptions the output options
1167
- * @param {WebpackPluginInstance[]=} plugins the plugins to apply
1190
+ * @param {Plugins=} plugins the plugins to apply
1168
1191
  * @returns {Compiler} a child compiler
1169
1192
  */
1170
1193
  createChildCompiler(
@@ -1204,7 +1227,9 @@ ${other}`);
1204
1227
  this.records[relativeCompilerName] = [];
1205
1228
  }
1206
1229
  if (this.records[relativeCompilerName][compilerIndex]) {
1207
- childCompiler.records = this.records[relativeCompilerName][compilerIndex];
1230
+ childCompiler.records =
1231
+ /** @type {Records} */
1232
+ (this.records[relativeCompilerName][compilerIndex]);
1208
1233
  } else {
1209
1234
  this.records[relativeCompilerName].push((childCompiler.records = {}));
1210
1235
  }
@@ -1213,7 +1238,10 @@ ${other}`);
1213
1238
  childCompiler.root = this.root;
1214
1239
  if (Array.isArray(plugins)) {
1215
1240
  for (const plugin of plugins) {
1216
- if (plugin) {
1241
+ if (typeof plugin === "function") {
1242
+ /** @type {WebpackPluginFunction} */
1243
+ (plugin).call(childCompiler, childCompiler);
1244
+ } else if (plugin) {
1217
1245
  plugin.apply(childCompiler);
1218
1246
  }
1219
1247
  }
@@ -1234,11 +1262,12 @@ ${other}`);
1234
1262
  childCompiler.hooks[
1235
1263
  /** @type {keyof Compiler["hooks"]} */
1236
1264
  (name)
1237
- ].taps =
1238
- this.hooks[
1265
+ ].taps = [
1266
+ ...this.hooks[
1239
1267
  /** @type {keyof Compiler["hooks"]} */
1240
1268
  (name)
1241
- ].taps.slice();
1269
+ ].taps
1270
+ ];
1242
1271
  }
1243
1272
  }
1244
1273
 
@@ -1284,8 +1313,7 @@ ${other}`);
1284
1313
  fs: /** @type {InputFileSystem} */ (this.inputFileSystem),
1285
1314
  resolverFactory: this.resolverFactory,
1286
1315
  options: this.options.module,
1287
- associatedObjectForCache: this.root,
1288
- layers: this.options.experiments.layers
1316
+ associatedObjectForCache: this.root
1289
1317
  });
1290
1318
  this._lastNormalModuleFactory = normalModuleFactory;
1291
1319
  this.hooks.normalModuleFactory.call(normalModuleFactory);
@@ -1307,12 +1335,12 @@ ${other}`);
1307
1335
  }
1308
1336
 
1309
1337
  /**
1310
- * @param {RunCallback<Compilation>} callback signals when the compilation finishes
1338
+ * @param {Callback<Compilation>} callback signals when the compilation finishes
1311
1339
  * @returns {void}
1312
1340
  */
1313
1341
  compile(callback) {
1314
1342
  const params = this.newCompilationParams();
1315
- this.hooks.beforeCompile.callAsync(params, err => {
1343
+ this.hooks.beforeCompile.callAsync(params, (err) => {
1316
1344
  if (err) return callback(err);
1317
1345
 
1318
1346
  this.hooks.compile.call(params);
@@ -1322,28 +1350,28 @@ ${other}`);
1322
1350
  const logger = compilation.getLogger("webpack.Compiler");
1323
1351
 
1324
1352
  logger.time("make hook");
1325
- this.hooks.make.callAsync(compilation, err => {
1353
+ this.hooks.make.callAsync(compilation, (err) => {
1326
1354
  logger.timeEnd("make hook");
1327
1355
  if (err) return callback(err);
1328
1356
 
1329
1357
  logger.time("finish make hook");
1330
- this.hooks.finishMake.callAsync(compilation, err => {
1358
+ this.hooks.finishMake.callAsync(compilation, (err) => {
1331
1359
  logger.timeEnd("finish make hook");
1332
1360
  if (err) return callback(err);
1333
1361
 
1334
1362
  process.nextTick(() => {
1335
1363
  logger.time("finish compilation");
1336
- compilation.finish(err => {
1364
+ compilation.finish((err) => {
1337
1365
  logger.timeEnd("finish compilation");
1338
1366
  if (err) return callback(err);
1339
1367
 
1340
1368
  logger.time("seal compilation");
1341
- compilation.seal(err => {
1369
+ compilation.seal((err) => {
1342
1370
  logger.timeEnd("seal compilation");
1343
1371
  if (err) return callback(err);
1344
1372
 
1345
1373
  logger.time("afterCompile hook");
1346
- this.hooks.afterCompile.callAsync(compilation, err => {
1374
+ this.hooks.afterCompile.callAsync(compilation, (err) => {
1347
1375
  logger.timeEnd("afterCompile hook");
1348
1376
  if (err) return callback(err);
1349
1377
 
@@ -1358,18 +1386,18 @@ ${other}`);
1358
1386
  }
1359
1387
 
1360
1388
  /**
1361
- * @param {RunCallback<void>} callback signals when the compiler closes
1389
+ * @param {ErrorCallback} callback signals when the compiler closes
1362
1390
  * @returns {void}
1363
1391
  */
1364
1392
  close(callback) {
1365
1393
  if (this.watching) {
1366
1394
  // When there is still an active watching, close this first
1367
- this.watching.close(err => {
1395
+ this.watching.close((_err) => {
1368
1396
  this.close(callback);
1369
1397
  });
1370
1398
  return;
1371
1399
  }
1372
- this.hooks.shutdown.callAsync(err => {
1400
+ this.hooks.shutdown.callAsync((err) => {
1373
1401
  if (err) return callback(err);
1374
1402
  // Get rid of reference to last compilation to avoid leaking memory
1375
1403
  // We can't run this._cleanupLastCompilation() as the Stats to this compilation