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
@@ -13,28 +13,31 @@ const LazySet = require("../util/LazySet");
13
13
  const makeSerializable = require("../util/makeSerializable");
14
14
  const memoize = require("../util/memoize");
15
15
  const {
16
- createFileSerializer,
17
- NOT_SERIALIZABLE
16
+ NOT_SERIALIZABLE,
17
+ createFileSerializer
18
18
  } = require("../util/serialization");
19
19
 
20
20
  /** @typedef {import("../../declarations/WebpackOptions").SnapshotOptions} SnapshotOptions */
21
+ /** @typedef {import("../Compilation").FileSystemDependencies} FileSystemDependencies */
22
+ /** @typedef {import("../Cache").Data} Data */
21
23
  /** @typedef {import("../Cache").Etag} Etag */
22
24
  /** @typedef {import("../Compiler")} Compiler */
23
25
  /** @typedef {import("../FileSystemInfo").ResolveBuildDependenciesResult} ResolveBuildDependenciesResult */
26
+ /** @typedef {import("../FileSystemInfo").ResolveResults} ResolveResults */
24
27
  /** @typedef {import("../FileSystemInfo").Snapshot} Snapshot */
25
28
  /** @typedef {import("../logging/Logger").Logger} Logger */
26
29
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
27
30
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
31
+ /** @typedef {typeof import("../util/Hash")} Hash */
28
32
  /** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
29
33
 
30
- /** @typedef {Map<string, string | false>} ResolveResults */
31
34
  /** @typedef {Set<string>} Items */
32
35
  /** @typedef {Set<string>} BuildDependencies */
33
36
  /** @typedef {Map<string, PackItemInfo>} ItemInfo */
34
37
 
35
38
  class PackContainer {
36
39
  /**
37
- * @param {object} data stored data
40
+ * @param {Pack} data stored data
38
41
  * @param {string} version version identifier
39
42
  * @param {Snapshot} buildSnapshot snapshot of all build dependencies
40
43
  * @param {BuildDependencies} buildDependencies list of all unresolved build dependencies captured
@@ -49,11 +52,17 @@ class PackContainer {
49
52
  resolveResults,
50
53
  resolveBuildDependenciesSnapshot
51
54
  ) {
55
+ /** @type {Pack | (() => Pack)} */
52
56
  this.data = data;
57
+ /** @type {string} */
53
58
  this.version = version;
59
+ /** @type {Snapshot} */
54
60
  this.buildSnapshot = buildSnapshot;
61
+ /** @type {BuildDependencies} */
55
62
  this.buildDependencies = buildDependencies;
63
+ /** @type {ResolveResults} */
56
64
  this.resolveResults = resolveResults;
65
+ /** @type {Snapshot} */
57
66
  this.resolveBuildDependenciesSnapshot = resolveBuildDependenciesSnapshot;
58
67
  }
59
68
 
@@ -99,13 +108,18 @@ class PackItemInfo {
99
108
  /**
100
109
  * @param {string} identifier identifier of item
101
110
  * @param {string | null | undefined} etag etag of item
102
- * @param {any} value fresh value of item
111
+ * @param {Data} value fresh value of item
103
112
  */
104
113
  constructor(identifier, etag, value) {
114
+ /** @type {string} */
105
115
  this.identifier = identifier;
116
+ /** @type {string | null | undefined} */
106
117
  this.etag = etag;
118
+ /** @type {number} */
107
119
  this.location = -1;
120
+ /** @type {number} */
108
121
  this.lastAccess = Date.now();
122
+ /** @type {Data} */
109
123
  this.freshValue = value;
110
124
  }
111
125
  }
@@ -154,7 +168,7 @@ class Pack {
154
168
  /**
155
169
  * @param {string} identifier unique name for the resource
156
170
  * @param {string | null} etag etag of the resource
157
- * @returns {any} cached content
171
+ * @returns {Data} cached content
158
172
  */
159
173
  get(identifier, etag) {
160
174
  const info = this.itemInfo.get(identifier);
@@ -177,7 +191,7 @@ class Pack {
177
191
  /**
178
192
  * @param {string} identifier unique name for the resource
179
193
  * @param {string | null} etag etag of the resource
180
- * @param {any} data cached content
194
+ * @param {Data} data cached content
181
195
  * @returns {void}
182
196
  */
183
197
  set(identifier, etag, data) {
@@ -268,7 +282,7 @@ class Pack {
268
282
  }
269
283
 
270
284
  _persistFreshContent() {
271
- /** @typedef {{ items: Items, map: Map<string, any>, loc: number }} PackItem */
285
+ /** @typedef {{ items: Items, map: Content, loc: number }} PackItem */
272
286
  const itemsCount = this.freshContent.size;
273
287
  if (itemsCount > 0) {
274
288
  const packCount = Math.ceil(itemsCount / MAX_ITEMS_IN_FRESH_PACK);
@@ -290,8 +304,9 @@ class Pack {
290
304
  return pack;
291
305
  };
292
306
  let pack = createNextPack();
293
- if (this.requestsTimeout !== undefined)
307
+ if (this.requestsTimeout !== undefined) {
294
308
  clearTimeout(this.requestsTimeout);
309
+ }
295
310
  for (const identifier of this.requests) {
296
311
  if (identifier === undefined) {
297
312
  if (ignoreNextTimeTick) {
@@ -327,7 +342,7 @@ class Pack {
327
342
  `${itemsCount} fresh items in cache put into pack ${
328
343
  packs.length > 1
329
344
  ? packs
330
- .map(pack => `${pack.loc} (${pack.items.size} items)`)
345
+ .map((pack) => `${pack.loc} (${pack.items.size} items)`)
331
346
  .join(", ")
332
347
  : packs[0].loc
333
348
  }`
@@ -377,9 +392,11 @@ class Pack {
377
392
  smallUnusedContentSize > MIN_CONTENT_SIZE
378
393
  ) {
379
394
  mergedIndices = smallUnusedContents;
380
- } else return;
395
+ } else {
396
+ return;
397
+ }
381
398
 
382
- /** @type {PackContent[] } */
399
+ /** @type {PackContent[]} */
383
400
  const mergedContent = [];
384
401
 
385
402
  // 3. Remove old content entries
@@ -393,7 +410,7 @@ class Pack {
393
410
  const mergedItems = new Set();
394
411
  /** @type {Items} */
395
412
  const mergedUsedItems = new Set();
396
- /** @type {(function(Map<string, any>): Promise<void>)[]} */
413
+ /** @type {((map: Content) => Promise<void>)[]} */
397
414
  const addToMergedMap = [];
398
415
  for (const content of mergedContent) {
399
416
  for (const identifier of content.items) {
@@ -402,7 +419,7 @@ class Pack {
402
419
  for (const identifier of content.used) {
403
420
  mergedUsedItems.add(identifier);
404
421
  }
405
- addToMergedMap.push(async map => {
422
+ addToMergedMap.push(async (map) => {
406
423
  // unpack existing content
407
424
  // after that values are accessible in .content
408
425
  await content.unpack(
@@ -428,7 +445,7 @@ class Pack {
428
445
  memoize(async () => {
429
446
  /** @type {Content} */
430
447
  const map = new Map();
431
- await Promise.all(addToMergedMap.map(fn => fn(map)));
448
+ await Promise.all(addToMergedMap.map((fn) => fn(map)));
432
449
  return new PackContentItems(map);
433
450
  })
434
451
  );
@@ -472,6 +489,7 @@ class Pack {
472
489
  await content.unpack(
473
490
  "it should be splitted into used and unused items"
474
491
  );
492
+ /** @type {Content} */
475
493
  const map = new Map();
476
494
  for (const identifier of usedItems) {
477
495
  map.set(
@@ -597,7 +615,10 @@ class Pack {
597
615
  const content = this.content[i];
598
616
  if (content !== undefined) {
599
617
  write(content.items);
600
- content.writeLazy(lazy => writeSeparate(lazy, { name: `${i}` }));
618
+ content.writeLazy((lazy) =>
619
+ /** @type {NonNullable<ObjectSerializerContext["writeSeparate"]>} */
620
+ (writeSeparate)(lazy, { name: `${i}` })
621
+ );
601
622
  } else {
602
623
  write(undefined); // undefined marks an empty content slot
603
624
  }
@@ -618,7 +639,7 @@ class Pack {
618
639
  item = read();
619
640
  }
620
641
  this.itemInfo.clear();
621
- const infoItems = items.map(identifier => {
642
+ const infoItems = items.map((identifier) => {
622
643
  const info = new PackItemInfo(identifier, undefined, undefined);
623
644
  this.itemInfo.set(identifier, info);
624
645
  return info;
@@ -659,7 +680,7 @@ class Pack {
659
680
 
660
681
  makeSerializable(Pack, "webpack/lib/cache/PackFileCacheStrategy", "Pack");
661
682
 
662
- /** @typedef {Map<string, any>} Content */
683
+ /** @typedef {Map<string, Data>} Content */
663
684
 
664
685
  class PackContentItems {
665
686
  /**
@@ -670,7 +691,7 @@ class PackContentItems {
670
691
  }
671
692
 
672
693
  /**
673
- * @param {ObjectSerializerContext & { snapshot: TODO, rollback: TODO, logger: Logger, profile: boolean | undefined }} context context
694
+ * @param {ObjectSerializerContext & { logger: Logger, profile: boolean | undefined }} context context
674
695
  */
675
696
  serialize({ write, snapshot, rollback, logger, profile }) {
676
697
  if (profile) {
@@ -684,15 +705,17 @@ class PackContentItems {
684
705
  const durationHr = process.hrtime(start);
685
706
  const duration = durationHr[0] * 1000 + durationHr[1] / 1e6;
686
707
  if (duration > 1) {
687
- if (duration > 500)
708
+ if (duration > 500) {
688
709
  logger.error(`Serialization of '${key}': ${duration} ms`);
689
- else if (duration > 50)
710
+ } else if (duration > 50) {
690
711
  logger.warn(`Serialization of '${key}': ${duration} ms`);
691
- else if (duration > 10)
712
+ } else if (duration > 10) {
692
713
  logger.info(`Serialization of '${key}': ${duration} ms`);
693
- else if (duration > 5)
714
+ } else if (duration > 5) {
694
715
  logger.log(`Serialization of '${key}': ${duration} ms`);
695
- else logger.debug(`Serialization of '${key}': ${duration} ms`);
716
+ } else {
717
+ logger.debug(`Serialization of '${key}': ${duration} ms`);
718
+ }
696
719
  }
697
720
  } catch (err) {
698
721
  rollback(s);
@@ -759,15 +782,17 @@ class PackContentItems {
759
782
  const durationHr = process.hrtime(start);
760
783
  const duration = durationHr[0] * 1000 + durationHr[1] / 1e6;
761
784
  if (duration > 1) {
762
- if (duration > 100)
785
+ if (duration > 100) {
763
786
  logger.error(`Deserialization of '${key}': ${duration} ms`);
764
- else if (duration > 20)
787
+ } else if (duration > 20) {
765
788
  logger.warn(`Deserialization of '${key}': ${duration} ms`);
766
- else if (duration > 5)
789
+ } else if (duration > 5) {
767
790
  logger.info(`Deserialization of '${key}': ${duration} ms`);
768
- else if (duration > 2)
791
+ } else if (duration > 2) {
769
792
  logger.log(`Deserialization of '${key}': ${duration} ms`);
770
- else logger.debug(`Deserialization of '${key}': ${duration} ms`);
793
+ } else {
794
+ logger.debug(`Deserialization of '${key}': ${duration} ms`);
795
+ }
771
796
  }
772
797
  map.set(key, value);
773
798
  key = read();
@@ -791,7 +816,7 @@ makeSerializable(
791
816
  "PackContentItems"
792
817
  );
793
818
 
794
- /** @typedef {(function(): Promise<PackContentItems> | PackContentItems)} LazyFn */
819
+ /** @typedef {(() => Promise<PackContentItems> | PackContentItems) & Partial<{ options: { size?: number }}>} LazyFunction */
795
820
 
796
821
  class PackContent {
797
822
  /*
@@ -816,13 +841,13 @@ class PackContent {
816
841
  /**
817
842
  * @param {Items} items keys
818
843
  * @param {Items} usedItems used keys
819
- * @param {PackContentItems | function(): Promise<PackContentItems>} dataOrFn sync or async content
844
+ * @param {PackContentItems | (() => Promise<PackContentItems>)} dataOrFn sync or async content
820
845
  * @param {Logger=} logger logger for logging
821
846
  * @param {string=} lazyName name of dataOrFn for logging
822
847
  */
823
848
  constructor(items, usedItems, dataOrFn, logger, lazyName) {
824
849
  this.items = items;
825
- /** @type {LazyFn | undefined} */
850
+ /** @type {LazyFunction | undefined} */
826
851
  this.lazy = typeof dataOrFn === "function" ? dataOrFn : undefined;
827
852
  /** @type {Content | undefined} */
828
853
  this.content = typeof dataOrFn === "function" ? undefined : dataOrFn.map;
@@ -860,19 +885,16 @@ class PackContent {
860
885
  );
861
886
  logger.time(timeMessage);
862
887
  }
863
- const value = /** @type {LazyFn} */ (this.lazy)();
888
+ const value = /** @type {LazyFunction} */ (this.lazy)();
864
889
  if ("then" in value) {
865
- return value.then(data => {
890
+ return value.then((data) => {
866
891
  const map = data.map;
867
892
  if (timeMessage) {
868
893
  logger.timeEnd(timeMessage);
869
894
  }
870
895
  // Move to state C
871
896
  this.content = map;
872
- this.lazy = SerializerMiddleware.unMemoizeLazy(
873
- /** @type {LazyFn} */
874
- (this.lazy)
875
- );
897
+ this.lazy = SerializerMiddleware.unMemoizeLazy(this.lazy);
876
898
  return map.get(identifier);
877
899
  });
878
900
  }
@@ -883,10 +905,7 @@ class PackContent {
883
905
  }
884
906
  // Move to state C
885
907
  this.content = map;
886
- this.lazy = SerializerMiddleware.unMemoizeLazy(
887
- /** @type {LazyFn} */
888
- (this.lazy)
889
- );
908
+ this.lazy = SerializerMiddleware.unMemoizeLazy(this.lazy);
890
909
  return map.get(identifier);
891
910
  }
892
911
 
@@ -916,9 +935,11 @@ class PackContent {
916
935
  );
917
936
  logger.time(timeMessage);
918
937
  }
919
- const value = this.lazy();
938
+ const value =
939
+ /** @type {PackContentItems | Promise<PackContentItems>} */
940
+ (this.lazy());
920
941
  if ("then" in value) {
921
- return value.then(data => {
942
+ return value.then((data) => {
922
943
  if (timeMessage) {
923
944
  logger.timeEnd(timeMessage);
924
945
  }
@@ -937,7 +958,9 @@ class PackContent {
937
958
  */
938
959
  getSize() {
939
960
  if (!this.lazy) return -1;
940
- const options = /** @type {any} */ (this.lazy).options;
961
+ const options =
962
+ /** @type {{ options: { size?: number } }} */
963
+ (this.lazy).options;
941
964
  if (!options) return -1;
942
965
  const size = options.size;
943
966
  if (typeof size !== "number") return -1;
@@ -954,8 +977,7 @@ class PackContent {
954
977
  }
955
978
 
956
979
  /**
957
- * @template T
958
- * @param {function(any): function(): Promise<PackContentItems> | PackContentItems} write write function
980
+ * @param {(lazy: LazyFunction) => (() => PackContentItems | Promise<PackContentItems>)} write write function
959
981
  * @returns {void}
960
982
  */
961
983
  writeLazy(write) {
@@ -1007,12 +1029,12 @@ class PackContent {
1007
1029
  );
1008
1030
  logger.time(timeMessage);
1009
1031
  }
1010
- const value = /** @type {LazyFn} */ (this.lazy)();
1032
+ const value = /** @type {LazyFunction} */ (this.lazy)();
1011
1033
  this.outdated = false;
1012
1034
  if ("then" in value) {
1013
1035
  // Move to state B1
1014
1036
  this.lazy = write(() =>
1015
- value.then(data => {
1037
+ value.then((data) => {
1016
1038
  if (timeMessage) {
1017
1039
  logger.timeEnd(timeMessage);
1018
1040
  }
@@ -1024,10 +1046,7 @@ class PackContent {
1024
1046
  }
1025
1047
  // Move to state C1 (or maybe C2)
1026
1048
  this.content = map;
1027
- this.lazy = SerializerMiddleware.unMemoizeLazy(
1028
- /** @type {LazyFn} */
1029
- (this.lazy)
1030
- );
1049
+ this.lazy = SerializerMiddleware.unMemoizeLazy(this.lazy);
1031
1050
 
1032
1051
  return new PackContentItems(map);
1033
1052
  })
@@ -1053,7 +1072,7 @@ class PackContent {
1053
1072
  * @param {Buffer} buf buffer
1054
1073
  * @returns {Buffer} buffer that can be collected
1055
1074
  */
1056
- const allowCollectingMemory = buf => {
1075
+ const allowCollectingMemory = (buf) => {
1057
1076
  const wasted = buf.buffer.byteLength - buf.byteLength;
1058
1077
  if (wasted > 8192 && (wasted > 1048576 || wasted > buf.byteLength)) {
1059
1078
  return Buffer.from(buf);
@@ -1091,9 +1110,11 @@ class PackFileCacheStrategy {
1091
1110
  compression,
1092
1111
  readonly
1093
1112
  }) {
1113
+ /** @type {import("../serialization/Serializer")<PackContainer, null, EXPECTED_OBJECT>} */
1094
1114
  this.fileSerializer = createFileSerializer(
1095
1115
  fs,
1096
- compiler.options.output.hashFunction
1116
+ /** @type {string | Hash} */
1117
+ (compiler.options.output.hashFunction)
1097
1118
  );
1098
1119
  this.fileSystemInfo = new FileSystemInfo(fs, {
1099
1120
  managedPaths: snapshot.managedPaths,
@@ -1120,7 +1141,7 @@ class PackFileCacheStrategy {
1120
1141
  this.snapshot = snapshot;
1121
1142
  /** @type {BuildDependencies} */
1122
1143
  this.buildDependencies = new Set();
1123
- /** @type {LazySet<string>} */
1144
+ /** @type {FileSystemDependencies} */
1124
1145
  this.newBuildDependencies = new LazySet();
1125
1146
  /** @type {Snapshot | undefined} */
1126
1147
  this.resolveBuildDependenciesSnapshot = undefined;
@@ -1169,7 +1190,7 @@ class PackFileCacheStrategy {
1169
1190
  ? allowCollectingMemory
1170
1191
  : undefined
1171
1192
  })
1172
- .catch(err => {
1193
+ .catch((err) => {
1173
1194
  if (err.code !== "ENOENT") {
1174
1195
  logger.warn(
1175
1196
  `Restoring pack failed from ${cacheLocation}${this._extension}: ${err}`
@@ -1182,7 +1203,7 @@ class PackFileCacheStrategy {
1182
1203
  }
1183
1204
  return undefined;
1184
1205
  })
1185
- .then(packContainer => {
1206
+ .then((packContainer) => {
1186
1207
  logger.timeEnd("restore cache container");
1187
1208
  if (!packContainer) return;
1188
1209
  if (!(packContainer instanceof PackContainer)) {
@@ -1200,7 +1221,7 @@ class PackFileCacheStrategy {
1200
1221
  }
1201
1222
  logger.time("check build dependencies");
1202
1223
  return Promise.all([
1203
- new Promise((resolve, reject) => {
1224
+ new Promise((resolve, _reject) => {
1204
1225
  this.fileSystemInfo.checkSnapshotValid(
1205
1226
  packContainer.buildSnapshot,
1206
1227
  (err, valid) => {
@@ -1222,7 +1243,7 @@ class PackFileCacheStrategy {
1222
1243
  }
1223
1244
  );
1224
1245
  }),
1225
- new Promise((resolve, reject) => {
1246
+ new Promise((resolve, _reject) => {
1226
1247
  this.fileSystemInfo.checkSnapshotValid(
1227
1248
  packContainer.resolveBuildDependenciesSnapshot,
1228
1249
  (err, valid) => {
@@ -1268,7 +1289,7 @@ class PackFileCacheStrategy {
1268
1289
  );
1269
1290
  })
1270
1291
  ])
1271
- .catch(err => {
1292
+ .catch((err) => {
1272
1293
  logger.timeEnd("check build dependencies");
1273
1294
  throw err;
1274
1295
  })
@@ -1276,20 +1297,23 @@ class PackFileCacheStrategy {
1276
1297
  logger.timeEnd("check build dependencies");
1277
1298
  if (buildSnapshotValid && resolveValid) {
1278
1299
  logger.time("restore cache content metadata");
1279
- const d = packContainer.data();
1300
+ const d =
1301
+ /** @type {() => Pack} */
1302
+ (packContainer.data)();
1280
1303
  logger.timeEnd("restore cache content metadata");
1281
1304
  return d;
1282
1305
  }
1283
1306
  return undefined;
1284
1307
  });
1285
1308
  })
1286
- .then(pack => {
1309
+ .then((pack) => {
1287
1310
  if (pack) {
1288
1311
  pack.maxAge = this.maxAge;
1289
1312
  this.buildSnapshot = buildSnapshot;
1290
1313
  if (buildDependencies) this.buildDependencies = buildDependencies;
1291
- if (newBuildDependencies)
1314
+ if (newBuildDependencies) {
1292
1315
  this.newBuildDependencies.addAll(newBuildDependencies);
1316
+ }
1293
1317
  this.resolveResults = resolveResults;
1294
1318
  this.resolveBuildDependenciesSnapshot =
1295
1319
  resolveBuildDependenciesSnapshot;
@@ -1297,7 +1321,7 @@ class PackFileCacheStrategy {
1297
1321
  }
1298
1322
  return new Pack(logger, this.maxAge);
1299
1323
  })
1300
- .catch(err => {
1324
+ .catch((err) => {
1301
1325
  this.logger.warn(
1302
1326
  `Restoring pack from ${cacheLocation}${this._extension} failed: ${err}`
1303
1327
  );
@@ -1309,13 +1333,13 @@ class PackFileCacheStrategy {
1309
1333
  /**
1310
1334
  * @param {string} identifier unique name for the resource
1311
1335
  * @param {Etag | null} etag etag of the resource
1312
- * @param {any} data cached content
1336
+ * @param {Data} data cached content
1313
1337
  * @returns {Promise<void>} promise
1314
1338
  */
1315
1339
  store(identifier, etag, data) {
1316
1340
  if (this.readonly) return Promise.resolve();
1317
1341
 
1318
- return this._getPack().then(pack => {
1342
+ return this._getPack().then((pack) => {
1319
1343
  pack.set(identifier, etag === null ? null : etag.toString(), data);
1320
1344
  });
1321
1345
  }
@@ -1323,14 +1347,14 @@ class PackFileCacheStrategy {
1323
1347
  /**
1324
1348
  * @param {string} identifier unique name for the resource
1325
1349
  * @param {Etag | null} etag etag of the resource
1326
- * @returns {Promise<any>} promise to the cached content
1350
+ * @returns {Promise<Data>} promise to the cached content
1327
1351
  */
1328
1352
  restore(identifier, etag) {
1329
1353
  return this._getPack()
1330
- .then(pack =>
1354
+ .then((pack) =>
1331
1355
  pack.get(identifier, etag === null ? null : etag.toString())
1332
1356
  )
1333
- .catch(err => {
1357
+ .catch((err) => {
1334
1358
  if (err && err.code !== "ENOENT") {
1335
1359
  this.logger.warn(
1336
1360
  `Restoring failed for ${identifier} from pack: ${err}`
@@ -1341,7 +1365,7 @@ class PackFileCacheStrategy {
1341
1365
  }
1342
1366
 
1343
1367
  /**
1344
- * @param {LazySet<string> | Iterable<string>} dependencies dependencies to store
1368
+ * @param {FileSystemDependencies | Iterable<string>} dependencies dependencies to store
1345
1369
  */
1346
1370
  storeBuildDependencies(dependencies) {
1347
1371
  if (this.readonly) return;
@@ -1353,7 +1377,7 @@ class PackFileCacheStrategy {
1353
1377
  if (packPromise === undefined) return Promise.resolve();
1354
1378
  const reportProgress = ProgressPlugin.getReporter(this.compiler);
1355
1379
  return (this.storePromise = packPromise
1356
- .then(pack => {
1380
+ .then((pack) => {
1357
1381
  pack.stopCapturingRequests();
1358
1382
  if (!pack.invalid) return;
1359
1383
  this.packPromise = undefined;
@@ -1368,108 +1392,112 @@ class PackFileCacheStrategy {
1368
1392
  if (newBuildDependencies.size > 0 || !this.buildSnapshot) {
1369
1393
  if (reportProgress) reportProgress(0.5, "resolve build dependencies");
1370
1394
  this.logger.debug(
1371
- `Capturing build dependencies... (${Array.from(
1372
- newBuildDependencies
1373
- ).join(", ")})`
1395
+ `Capturing build dependencies... (${[...newBuildDependencies].join(", ")})`
1374
1396
  );
1375
- promise = new Promise((resolve, reject) => {
1376
- this.logger.time("resolve build dependencies");
1377
- this.fileSystemInfo.resolveBuildDependencies(
1378
- this.context,
1379
- newBuildDependencies,
1380
- (err, result) => {
1381
- this.logger.timeEnd("resolve build dependencies");
1382
- if (err) return reject(err);
1383
-
1384
- this.logger.time("snapshot build dependencies");
1385
- const {
1386
- files,
1387
- directories,
1388
- missing,
1389
- resolveResults,
1390
- resolveDependencies
1391
- } = /** @type {ResolveBuildDependenciesResult} */ (result);
1392
- if (this.resolveResults) {
1393
- for (const [key, value] of resolveResults) {
1394
- this.resolveResults.set(key, value);
1395
- }
1396
- } else {
1397
- this.resolveResults = resolveResults;
1398
- }
1399
- if (reportProgress) {
1400
- reportProgress(
1401
- 0.6,
1402
- "snapshot build dependencies",
1403
- "resolving"
1404
- );
1405
- }
1406
- this.fileSystemInfo.createSnapshot(
1407
- undefined,
1408
- resolveDependencies.files,
1409
- resolveDependencies.directories,
1410
- resolveDependencies.missing,
1411
- this.snapshot.resolveBuildDependencies,
1412
- (err, snapshot) => {
1413
- if (err) {
1414
- this.logger.timeEnd("snapshot build dependencies");
1415
- return reject(err);
1416
- }
1417
- if (!snapshot) {
1418
- this.logger.timeEnd("snapshot build dependencies");
1419
- return reject(
1420
- new Error("Unable to snapshot resolve dependencies")
1421
- );
1422
- }
1423
- if (this.resolveBuildDependenciesSnapshot) {
1424
- this.resolveBuildDependenciesSnapshot =
1425
- this.fileSystemInfo.mergeSnapshots(
1426
- this.resolveBuildDependenciesSnapshot,
1427
- snapshot
1428
- );
1429
- } else {
1430
- this.resolveBuildDependenciesSnapshot = snapshot;
1431
- }
1432
- if (reportProgress) {
1433
- reportProgress(
1434
- 0.7,
1435
- "snapshot build dependencies",
1436
- "modules"
1437
- );
1397
+ promise = new Promise(
1398
+ /**
1399
+ * @param {(value?: undefined) => void} resolve resolve
1400
+ * @param {(reason?: Error) => void} reject reject
1401
+ */
1402
+ (resolve, reject) => {
1403
+ this.logger.time("resolve build dependencies");
1404
+ this.fileSystemInfo.resolveBuildDependencies(
1405
+ this.context,
1406
+ newBuildDependencies,
1407
+ (err, result) => {
1408
+ this.logger.timeEnd("resolve build dependencies");
1409
+ if (err) return reject(err);
1410
+
1411
+ this.logger.time("snapshot build dependencies");
1412
+ const {
1413
+ files,
1414
+ directories,
1415
+ missing,
1416
+ resolveResults,
1417
+ resolveDependencies
1418
+ } = /** @type {ResolveBuildDependenciesResult} */ (result);
1419
+ if (this.resolveResults) {
1420
+ for (const [key, value] of resolveResults) {
1421
+ this.resolveResults.set(key, value);
1438
1422
  }
1439
- this.fileSystemInfo.createSnapshot(
1440
- undefined,
1441
- files,
1442
- directories,
1443
- missing,
1444
- this.snapshot.buildDependencies,
1445
- (err, snapshot) => {
1423
+ } else {
1424
+ this.resolveResults = resolveResults;
1425
+ }
1426
+ if (reportProgress) {
1427
+ reportProgress(
1428
+ 0.6,
1429
+ "snapshot build dependencies",
1430
+ "resolving"
1431
+ );
1432
+ }
1433
+ this.fileSystemInfo.createSnapshot(
1434
+ undefined,
1435
+ resolveDependencies.files,
1436
+ resolveDependencies.directories,
1437
+ resolveDependencies.missing,
1438
+ this.snapshot.resolveBuildDependencies,
1439
+ (err, snapshot) => {
1440
+ if (err) {
1446
1441
  this.logger.timeEnd("snapshot build dependencies");
1447
- if (err) return reject(err);
1448
- if (!snapshot) {
1449
- return reject(
1450
- new Error("Unable to snapshot build dependencies")
1442
+ return reject(err);
1443
+ }
1444
+ if (!snapshot) {
1445
+ this.logger.timeEnd("snapshot build dependencies");
1446
+ return reject(
1447
+ new Error("Unable to snapshot resolve dependencies")
1448
+ );
1449
+ }
1450
+ if (this.resolveBuildDependenciesSnapshot) {
1451
+ this.resolveBuildDependenciesSnapshot =
1452
+ this.fileSystemInfo.mergeSnapshots(
1453
+ this.resolveBuildDependenciesSnapshot,
1454
+ snapshot
1451
1455
  );
1452
- }
1453
- this.logger.debug("Captured build dependencies");
1454
-
1455
- if (this.buildSnapshot) {
1456
- this.buildSnapshot =
1457
- this.fileSystemInfo.mergeSnapshots(
1458
- this.buildSnapshot,
1459
- snapshot
1456
+ } else {
1457
+ this.resolveBuildDependenciesSnapshot = snapshot;
1458
+ }
1459
+ if (reportProgress) {
1460
+ reportProgress(
1461
+ 0.7,
1462
+ "snapshot build dependencies",
1463
+ "modules"
1464
+ );
1465
+ }
1466
+ this.fileSystemInfo.createSnapshot(
1467
+ undefined,
1468
+ files,
1469
+ directories,
1470
+ missing,
1471
+ this.snapshot.buildDependencies,
1472
+ (err, snapshot) => {
1473
+ this.logger.timeEnd("snapshot build dependencies");
1474
+ if (err) return reject(err);
1475
+ if (!snapshot) {
1476
+ return reject(
1477
+ new Error("Unable to snapshot build dependencies")
1460
1478
  );
1461
- } else {
1462
- this.buildSnapshot = snapshot;
1479
+ }
1480
+ this.logger.debug("Captured build dependencies");
1481
+
1482
+ if (this.buildSnapshot) {
1483
+ this.buildSnapshot =
1484
+ this.fileSystemInfo.mergeSnapshots(
1485
+ this.buildSnapshot,
1486
+ snapshot
1487
+ );
1488
+ } else {
1489
+ this.buildSnapshot = snapshot;
1490
+ }
1491
+
1492
+ resolve();
1463
1493
  }
1464
-
1465
- resolve();
1466
- }
1467
- );
1468
- }
1469
- );
1470
- }
1471
- );
1472
- });
1494
+ );
1495
+ }
1496
+ );
1497
+ }
1498
+ );
1499
+ }
1500
+ );
1473
1501
  } else {
1474
1502
  promise = Promise.resolve();
1475
1503
  }
@@ -1512,14 +1540,14 @@ class PackFileCacheStrategy {
1512
1540
  Math.round(stats.size / 1024 / 1024)
1513
1541
  );
1514
1542
  })
1515
- .catch(err => {
1543
+ .catch((err) => {
1516
1544
  this.logger.timeEnd("store pack");
1517
1545
  this.logger.warn(`Caching failed for pack: ${err}`);
1518
1546
  this.logger.debug(err.stack);
1519
1547
  });
1520
1548
  });
1521
1549
  })
1522
- .catch(err => {
1550
+ .catch((err) => {
1523
1551
  this.logger.warn(`Caching failed for pack: ${err}`);
1524
1552
  this.logger.debug(err.stack);
1525
1553
  }));