webpack 5.92.1 → 5.94.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +8 -5
  2. package/bin/webpack.js +6 -7
  3. package/hot/log.js +1 -2
  4. package/hot/only-dev-server.js +1 -1
  5. package/hot/poll.js +1 -1
  6. package/hot/signal.js +1 -1
  7. package/lib/APIPlugin.js +4 -3
  8. package/lib/AbstractMethodError.js +10 -5
  9. package/lib/AutomaticPrefetchPlugin.js +1 -1
  10. package/lib/BannerPlugin.js +12 -6
  11. package/lib/Cache.js +8 -10
  12. package/lib/CacheFacade.js +3 -3
  13. package/lib/CaseSensitiveModulesWarning.js +5 -7
  14. package/lib/Chunk.js +14 -11
  15. package/lib/ChunkGraph.js +58 -36
  16. package/lib/ChunkGroup.js +2 -3
  17. package/lib/ChunkTemplate.js +43 -0
  18. package/lib/CleanPlugin.js +10 -11
  19. package/lib/CodeGenerationResults.js +6 -5
  20. package/lib/CommentCompilationWarning.js +0 -1
  21. package/lib/Compilation.js +223 -191
  22. package/lib/Compiler.js +81 -82
  23. package/lib/ConcatenationScope.js +3 -6
  24. package/lib/ConditionalInitFragment.js +6 -7
  25. package/lib/ConstPlugin.js +7 -15
  26. package/lib/ContextExclusionPlugin.js +3 -3
  27. package/lib/ContextModule.js +36 -21
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +76 -69
  31. package/lib/DelegatedModule.js +7 -3
  32. package/lib/DelegatedModuleFactoryPlugin.js +36 -22
  33. package/lib/DelegatedPlugin.js +4 -0
  34. package/lib/DependenciesBlock.js +0 -1
  35. package/lib/Dependency.js +10 -14
  36. package/lib/DllEntryPlugin.js +4 -2
  37. package/lib/DllModuleFactory.js +1 -0
  38. package/lib/DllPlugin.js +9 -7
  39. package/lib/DllReferencePlugin.js +30 -15
  40. package/lib/EntryPlugin.js +1 -3
  41. package/lib/EnvironmentPlugin.js +5 -2
  42. package/lib/ErrorHelpers.js +11 -12
  43. package/lib/EvalDevToolModulePlugin.js +10 -12
  44. package/lib/EvalSourceMapDevToolPlugin.js +15 -13
  45. package/lib/ExportsInfo.js +185 -120
  46. package/lib/ExternalModule.js +104 -64
  47. package/lib/ExternalModuleFactoryPlugin.js +23 -10
  48. package/lib/FileSystemInfo.js +791 -422
  49. package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
  50. package/lib/FlagDependencyExportsPlugin.js +12 -11
  51. package/lib/FlagDependencyUsagePlugin.js +1 -1
  52. package/lib/Generator.js +2 -5
  53. package/lib/GraphHelpers.js +3 -2
  54. package/lib/HookWebpackError.js +8 -10
  55. package/lib/HotModuleReplacementPlugin.js +78 -64
  56. package/lib/IgnoreErrorModuleFactory.js +3 -3
  57. package/lib/IgnorePlugin.js +1 -3
  58. package/lib/IgnoreWarningsPlugin.js +6 -9
  59. package/lib/InitFragment.js +2 -3
  60. package/lib/LibManifestPlugin.js +4 -3
  61. package/lib/MainTemplate.js +72 -19
  62. package/lib/Module.js +25 -9
  63. package/lib/ModuleBuildError.js +4 -11
  64. package/lib/ModuleDependencyError.js +5 -5
  65. package/lib/ModuleDependencyWarning.js +5 -5
  66. package/lib/ModuleError.js +1 -5
  67. package/lib/ModuleFilenameHelpers.js +29 -46
  68. package/lib/ModuleGraph.js +7 -6
  69. package/lib/ModuleGraphConnection.js +6 -6
  70. package/lib/ModuleInfoHeaderPlugin.js +82 -30
  71. package/lib/ModuleParseError.js +8 -9
  72. package/lib/ModuleRestoreError.js +1 -1
  73. package/lib/ModuleStoreError.js +1 -1
  74. package/lib/ModuleTemplate.js +33 -1
  75. package/lib/ModuleTypeConstants.js +21 -22
  76. package/lib/ModuleWarning.js +1 -5
  77. package/lib/MultiCompiler.js +24 -26
  78. package/lib/MultiStats.js +73 -31
  79. package/lib/MultiWatching.js +1 -1
  80. package/lib/NormalModule.js +132 -70
  81. package/lib/NormalModuleFactory.js +53 -49
  82. package/lib/OptimizationStages.js +3 -3
  83. package/lib/ProgressPlugin.js +9 -9
  84. package/lib/ProvidePlugin.js +4 -4
  85. package/lib/RuntimeGlobals.js +71 -70
  86. package/lib/RuntimeModule.js +1 -1
  87. package/lib/RuntimePlugin.js +24 -12
  88. package/lib/RuntimeTemplate.js +40 -44
  89. package/lib/SizeFormatHelpers.js +2 -4
  90. package/lib/SourceMapDevToolPlugin.js +42 -34
  91. package/lib/Stats.js +5 -11
  92. package/lib/Template.js +18 -24
  93. package/lib/TemplatedPathPlugin.js +12 -10
  94. package/lib/UseStrictPlugin.js +8 -1
  95. package/lib/WarnDeprecatedOptionPlugin.js +0 -1
  96. package/lib/WatchIgnorePlugin.js +26 -9
  97. package/lib/Watching.js +10 -5
  98. package/lib/WebpackOptionsApply.js +89 -62
  99. package/lib/asset/AssetGenerator.js +107 -42
  100. package/lib/asset/AssetModulesPlugin.js +29 -23
  101. package/lib/asset/AssetSourceGenerator.js +2 -7
  102. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  103. package/lib/buildChunkGraph.js +14 -19
  104. package/lib/cache/IdleFileCachePlugin.js +4 -4
  105. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  106. package/lib/cache/PackFileCacheStrategy.js +51 -50
  107. package/lib/cache/ResolverCachePlugin.js +6 -6
  108. package/lib/cache/mergeEtags.js +16 -21
  109. package/lib/cli.js +148 -104
  110. package/lib/config/browserslistTargetHandler.js +16 -13
  111. package/lib/config/defaults.js +31 -28
  112. package/lib/config/normalization.js +335 -344
  113. package/lib/config/target.js +42 -52
  114. package/lib/container/ContainerEntryModule.js +2 -2
  115. package/lib/container/ContainerPlugin.js +1 -1
  116. package/lib/container/RemoteRuntimeModule.js +11 -8
  117. package/lib/container/options.js +18 -4
  118. package/lib/css/CssExportsGenerator.js +39 -40
  119. package/lib/css/CssGenerator.js +11 -14
  120. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  121. package/lib/css/CssModulesPlugin.js +127 -47
  122. package/lib/css/CssParser.js +20 -18
  123. package/lib/css/walkCssTokens.js +80 -95
  124. package/lib/debug/ProfilingPlugin.js +19 -20
  125. package/lib/dependencies/AMDDefineDependency.js +1 -1
  126. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  127. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  128. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  129. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  130. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  131. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  132. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  133. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  134. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  135. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  136. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  137. package/lib/dependencies/ConstDependency.js +1 -1
  138. package/lib/dependencies/ContextDependency.js +1 -1
  139. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  140. package/lib/dependencies/ContextElementDependency.js +2 -2
  141. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  142. package/lib/dependencies/CssExportDependency.js +72 -9
  143. package/lib/dependencies/CssImportDependency.js +0 -2
  144. package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
  145. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  146. package/lib/dependencies/CssUrlDependency.js +4 -5
  147. package/lib/dependencies/DynamicExports.js +5 -5
  148. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  149. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  150. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  151. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  152. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  153. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  154. package/lib/dependencies/HarmonyExports.js +2 -2
  155. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  156. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  157. package/lib/dependencies/HarmonyImportSpecifierDependency.js +41 -16
  158. package/lib/dependencies/ImportDependency.js +1 -1
  159. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  160. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  161. package/lib/dependencies/ImportParserPlugin.js +39 -44
  162. package/lib/dependencies/JsonExportsDependency.js +22 -18
  163. package/lib/dependencies/LoaderPlugin.js +47 -36
  164. package/lib/dependencies/LocalModule.js +1 -1
  165. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  166. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  167. package/lib/dependencies/ProvidedDependency.js +1 -1
  168. package/lib/dependencies/PureExpressionDependency.js +6 -6
  169. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  170. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  171. package/lib/dependencies/SystemPlugin.js +1 -1
  172. package/lib/dependencies/URLDependency.js +3 -3
  173. package/lib/dependencies/URLPlugin.js +66 -12
  174. package/lib/dependencies/WorkerPlugin.js +25 -24
  175. package/lib/dependencies/processExportInfo.js +3 -1
  176. package/lib/electron/ElectronTargetPlugin.js +1 -0
  177. package/lib/esm/ModuleChunkFormatPlugin.js +11 -12
  178. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  179. package/lib/formatLocation.js +1 -2
  180. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  181. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  182. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  183. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  184. package/lib/hmr/lazyCompilationBackend.js +64 -40
  185. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  186. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  187. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  188. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  189. package/lib/ids/IdHelpers.js +29 -39
  190. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  191. package/lib/index.js +1 -5
  192. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +6 -4
  193. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  194. package/lib/javascript/ChunkHelpers.js +1 -1
  195. package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
  196. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  197. package/lib/javascript/JavascriptGenerator.js +23 -7
  198. package/lib/javascript/JavascriptModulesPlugin.js +97 -70
  199. package/lib/javascript/JavascriptParser.js +179 -200
  200. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  201. package/lib/javascript/StartupHelpers.js +41 -13
  202. package/lib/json/JsonGenerator.js +7 -13
  203. package/lib/json/JsonModulesPlugin.js +1 -4
  204. package/lib/json/JsonParser.js +5 -3
  205. package/lib/library/AmdLibraryPlugin.js +12 -16
  206. package/lib/library/AssignLibraryPlugin.js +9 -11
  207. package/lib/library/EnableLibraryPlugin.js +25 -15
  208. package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
  209. package/lib/library/JsonpLibraryPlugin.js +2 -1
  210. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  211. package/lib/library/ModuleLibraryPlugin.js +2 -1
  212. package/lib/library/SystemLibraryPlugin.js +2 -1
  213. package/lib/library/UmdLibraryPlugin.js +66 -92
  214. package/lib/logging/Logger.js +32 -4
  215. package/lib/logging/createConsoleLogger.js +12 -13
  216. package/lib/logging/runtime.js +7 -8
  217. package/lib/logging/truncateArgs.js +5 -8
  218. package/lib/node/NodeWatchFileSystem.js +3 -18
  219. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  221. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  222. package/lib/node/nodeConsole.js +22 -22
  223. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  224. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  225. package/lib/optimize/ConcatenatedModule.js +144 -61
  226. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  227. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  228. package/lib/optimize/InnerGraph.js +17 -17
  229. package/lib/optimize/InnerGraphPlugin.js +8 -7
  230. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  231. package/lib/optimize/MangleExportsPlugin.js +1 -0
  232. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  233. package/lib/optimize/ModuleConcatenationPlugin.js +56 -78
  234. package/lib/optimize/RealContentHashPlugin.js +7 -10
  235. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  236. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  237. package/lib/optimize/SplitChunksPlugin.js +34 -30
  238. package/lib/performance/SizeLimitsPlugin.js +2 -2
  239. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -0
  240. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  241. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  242. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  243. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  244. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  245. package/lib/rules/RuleSetCompiler.js +41 -22
  246. package/lib/rules/UseEffectRulePlugin.js +36 -32
  247. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  248. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  249. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  250. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  251. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  252. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  253. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  254. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  255. package/lib/schemes/DataUriPlugin.js +1 -1
  256. package/lib/schemes/HttpUriPlugin.js +241 -126
  257. package/lib/serialization/BinaryMiddleware.js +44 -28
  258. package/lib/serialization/DateObjectSerializer.js +1 -0
  259. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  260. package/lib/serialization/FileMiddleware.js +154 -106
  261. package/lib/serialization/MapObjectSerializer.js +2 -1
  262. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  263. package/lib/serialization/ObjectMiddleware.js +52 -56
  264. package/lib/serialization/PlainObjectSerializer.js +32 -6
  265. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  266. package/lib/serialization/Serializer.js +4 -5
  267. package/lib/serialization/SerializerMiddleware.js +6 -6
  268. package/lib/serialization/SetObjectSerializer.js +2 -1
  269. package/lib/sharing/ConsumeSharedModule.js +19 -14
  270. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  271. package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
  272. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  273. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  274. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  275. package/lib/sharing/utils.js +15 -27
  276. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  277. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  278. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  279. package/lib/stats/StatsFactory.js +127 -56
  280. package/lib/stats/StatsPrinter.js +75 -44
  281. package/lib/util/ArrayHelpers.js +8 -4
  282. package/lib/util/ArrayQueue.js +1 -1
  283. package/lib/util/AsyncQueue.js +31 -12
  284. package/lib/util/IterableHelpers.js +3 -4
  285. package/lib/util/LazyBucketSortedSet.js +60 -44
  286. package/lib/util/LazySet.js +1 -0
  287. package/lib/util/MapHelpers.js +1 -3
  288. package/lib/util/ParallelismFactorCalculator.js +1 -1
  289. package/lib/util/Queue.js +1 -1
  290. package/lib/util/Semaphore.js +4 -7
  291. package/lib/util/SetHelpers.js +5 -5
  292. package/lib/util/SortableSet.js +4 -3
  293. package/lib/util/StackedCacheMap.js +4 -6
  294. package/lib/util/StackedMap.js +1 -3
  295. package/lib/util/StringXor.js +0 -5
  296. package/lib/util/TupleQueue.js +1 -1
  297. package/lib/util/TupleSet.js +15 -5
  298. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  299. package/lib/util/WeakTupleMap.js +19 -21
  300. package/lib/util/binarySearchBounds.js +5 -12
  301. package/lib/util/chainedImports.js +1 -1
  302. package/lib/util/cleverMerge.js +21 -19
  303. package/lib/util/comparators.js +57 -52
  304. package/lib/util/compileBooleanMatcher.js +3 -6
  305. package/lib/util/conventions.js +10 -13
  306. package/lib/util/createHash.js +9 -6
  307. package/lib/util/deprecation.js +22 -12
  308. package/lib/util/deterministicGrouping.js +19 -26
  309. package/lib/util/findGraphRoots.js +2 -2
  310. package/lib/util/fs.js +31 -31
  311. package/lib/util/hash/md4.js +2 -2
  312. package/lib/util/hash/wasm-hash.js +7 -7
  313. package/lib/util/hash/xxhash64.js +2 -2
  314. package/lib/util/identifier.js +81 -59
  315. package/lib/util/memoize.js +8 -10
  316. package/lib/util/mergeScope.js +6 -9
  317. package/lib/util/nonNumericOnlyHash.js +2 -2
  318. package/lib/util/numberHash.js +1 -6
  319. package/lib/util/objectToMap.js +0 -1
  320. package/lib/util/propertyAccess.js +2 -5
  321. package/lib/util/propertyName.js +1 -3
  322. package/lib/util/registerExternalSerializer.js +1 -1
  323. package/lib/util/runtime.js +103 -113
  324. package/lib/util/semver.js +29 -27
  325. package/lib/util/serialization.js +16 -1
  326. package/lib/util/smartGrouping.js +5 -5
  327. package/lib/util/source.js +1 -1
  328. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  329. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  330. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  331. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  332. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  333. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  334. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  335. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  336. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  337. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  338. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  339. package/package.json +17 -16
  340. package/schemas/WebpackOptions.check.js +1 -1
  341. package/schemas/WebpackOptions.json +17 -0
  342. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  343. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  344. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  345. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  346. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  347. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  348. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  349. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  350. package/types.d.ts +682 -347
@@ -18,7 +18,9 @@ const { makePathsRelative } = require("../util/identifier");
18
18
  const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
19
19
 
20
20
  /** @typedef {import("webpack-sources").Source} Source */
21
+ /** @typedef {import("../../declarations/WebpackOptions").AssetGeneratorDataUrlOptions} AssetGeneratorDataUrlOptions */
21
22
  /** @typedef {import("../../declarations/WebpackOptions").AssetGeneratorOptions} AssetGeneratorOptions */
23
+ /** @typedef {import("../../declarations/WebpackOptions").AssetModuleFilename} AssetModuleFilename */
22
24
  /** @typedef {import("../../declarations/WebpackOptions").AssetModuleOutputPath} AssetModuleOutputPath */
23
25
  /** @typedef {import("../../declarations/WebpackOptions").RawPublicPath} RawPublicPath */
24
26
  /** @typedef {import("../Compilation")} Compilation */
@@ -26,11 +28,21 @@ const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
26
28
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
27
29
  /** @typedef {import("../Generator").UpdateHashContext} UpdateHashContext */
28
30
  /** @typedef {import("../Module")} Module */
31
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
29
32
  /** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
30
33
  /** @typedef {import("../NormalModule")} NormalModule */
31
34
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
35
+ /** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
32
36
  /** @typedef {import("../util/Hash")} Hash */
37
+ /** @typedef {import("../util/createHash").Algorithm} Algorithm */
33
38
 
39
+ /**
40
+ * @template T
41
+ * @template U
42
+ * @param {Array<T> | Set<T>} a a
43
+ * @param {Array<U> | Set<U>} b b
44
+ * @returns {Array<T> & Array<U>} array
45
+ */
34
46
  const mergeMaybeArrays = (a, b) => {
35
47
  const set = new Set();
36
48
  if (Array.isArray(a)) for (const item of a) set.add(item);
@@ -40,6 +52,13 @@ const mergeMaybeArrays = (a, b) => {
40
52
  return Array.from(set);
41
53
  };
42
54
 
55
+ /**
56
+ * @template {object} T
57
+ * @template {object} U
58
+ * @param {TODO} a a
59
+ * @param {TODO} b b
60
+ * @returns {T & U} object
61
+ */
43
62
  const mergeAssetInfo = (a, b) => {
44
63
  const result = { ...a, ...b };
45
64
  for (const key of Object.keys(a)) {
@@ -69,6 +88,13 @@ const mergeAssetInfo = (a, b) => {
69
88
  return result;
70
89
  };
71
90
 
91
+ /**
92
+ * @template {object} T
93
+ * @template {object} U
94
+ * @param {TODO} a a
95
+ * @param {TODO} b b
96
+ * @returns {T & U} object
97
+ */
72
98
  const mergeRelatedInfo = (a, b) => {
73
99
  const result = { ...a, ...b };
74
100
  for (const key of Object.keys(a)) {
@@ -80,7 +106,13 @@ const mergeRelatedInfo = (a, b) => {
80
106
  return result;
81
107
  };
82
108
 
109
+ /**
110
+ * @param {"base64" | false} encoding encoding
111
+ * @param {Source} source source
112
+ * @returns {string} encoded data
113
+ */
83
114
  const encodeDataUri = (encoding, source) => {
115
+ /** @type {string | undefined} */
84
116
  let encodedContent;
85
117
 
86
118
  switch (encoding) {
@@ -95,9 +127,13 @@ const encodeDataUri = (encoding, source) => {
95
127
  encodedContent = content.toString("utf-8");
96
128
  }
97
129
 
98
- encodedContent = encodeURIComponent(encodedContent).replace(
130
+ encodedContent = encodeURIComponent(
131
+ /** @type {string} */
132
+ (encodedContent)
133
+ ).replace(
99
134
  /[!'()*]/g,
100
- character => "%" + character.codePointAt(0).toString(16)
135
+ character =>
136
+ `%${/** @type {number} */ (character.codePointAt(0)).toString(16)}`
101
137
  );
102
138
  break;
103
139
  }
@@ -135,7 +171,7 @@ const DEFAULT_ENCODING = "base64";
135
171
  class AssetGenerator extends Generator {
136
172
  /**
137
173
  * @param {AssetGeneratorOptions["dataUrl"]=} dataUrlOptions the options for the data url
138
- * @param {string=} filename override for output.assetModuleFilename
174
+ * @param {AssetModuleFilename=} filename override for output.assetModuleFilename
139
175
  * @param {RawPublicPath=} publicPath override for output.assetModulePublicPath
140
176
  * @param {AssetModuleOutputPath=} outputPath the output path for the emitted file which is not included in the runtime import
141
177
  * @param {boolean=} emit generate output asset
@@ -183,9 +219,14 @@ class AssetGenerator extends Generator {
183
219
  }
184
220
 
185
221
  /** @type {string | boolean | undefined} */
186
- let mimeType = this.dataUrlOptions.mimetype;
222
+ let mimeType =
223
+ /** @type {AssetGeneratorDataUrlOptions} */
224
+ (this.dataUrlOptions).mimetype;
187
225
  if (mimeType === undefined) {
188
- const ext = path.extname(module.nameForCondition());
226
+ const ext = path.extname(
227
+ /** @type {string} */
228
+ (module.nameForCondition())
229
+ );
189
230
  if (
190
231
  module.resourceResolveData &&
191
232
  module.resourceResolveData.mimetype !== undefined
@@ -241,7 +282,10 @@ class AssetGenerator extends Generator {
241
282
  default: {
242
283
  let content;
243
284
  const originalSource = /** @type {Source} */ (module.originalSource());
244
- if (module.buildInfo.dataUrl) {
285
+ if (
286
+ /** @type {BuildInfo} */
287
+ (module.buildInfo).dataUrl
288
+ ) {
245
289
  let encodedSource;
246
290
  if (typeof this.dataUrlOptions === "function") {
247
291
  encodedSource = this.dataUrlOptions.call(
@@ -253,15 +297,16 @@ class AssetGenerator extends Generator {
253
297
  }
254
298
  );
255
299
  } else {
256
- /** @type {string | false | undefined} */
257
- let encoding = this.dataUrlOptions.encoding;
258
- if (encoding === undefined) {
259
- if (
260
- module.resourceResolveData &&
261
- module.resourceResolveData.encoding !== undefined
262
- ) {
263
- encoding = module.resourceResolveData.encoding;
264
- }
300
+ /** @type {"base64" | false | undefined} */
301
+ let encoding =
302
+ /** @type {AssetGeneratorDataUrlOptions} */
303
+ (this.dataUrlOptions).encoding;
304
+ if (
305
+ encoding === undefined &&
306
+ module.resourceResolveData &&
307
+ module.resourceResolveData.encoding !== undefined
308
+ ) {
309
+ encoding = module.resourceResolveData.encoding;
265
310
  }
266
311
  if (encoding === undefined) {
267
312
  encoding = DEFAULT_ENCODING;
@@ -287,13 +332,20 @@ class AssetGenerator extends Generator {
287
332
  encoding ? `;${encoding}` : ""
288
333
  },${encodedContent}`;
289
334
  }
290
- const data = getData();
335
+ const data =
336
+ /** @type {NonNullable<GenerateContext["getData"]>} */
337
+ (getData)();
291
338
  data.set("url", Buffer.from(encodedSource));
292
339
  content = JSON.stringify(encodedSource);
293
340
  } else {
294
341
  const assetModuleFilename =
295
- this.filename || runtimeTemplate.outputOptions.assetModuleFilename;
296
- const hash = createHash(runtimeTemplate.outputOptions.hashFunction);
342
+ this.filename ||
343
+ /** @type {AssetModuleFilename} */
344
+ (runtimeTemplate.outputOptions.assetModuleFilename);
345
+ const hash = createHash(
346
+ /** @type {Algorithm} */
347
+ (runtimeTemplate.outputOptions.hashFunction)
348
+ );
297
349
  if (runtimeTemplate.outputOptions.hashSalt) {
298
350
  hash.update(runtimeTemplate.outputOptions.hashSalt);
299
351
  }
@@ -303,9 +355,11 @@ class AssetGenerator extends Generator {
303
355
  );
304
356
  const contentHash = nonNumericOnlyHash(
305
357
  fullHash,
306
- runtimeTemplate.outputOptions.hashDigestLength
358
+ /** @type {number} */
359
+ (runtimeTemplate.outputOptions.hashDigestLength)
307
360
  );
308
- module.buildInfo.fullContentHash = fullHash;
361
+ /** @type {BuildInfo} */
362
+ (module.buildInfo).fullContentHash = fullHash;
309
363
  const sourceFilename = this.getSourceFileName(
310
364
  module,
311
365
  runtimeTemplate
@@ -349,7 +403,8 @@ class AssetGenerator extends Generator {
349
403
  compilation.outputOptions.publicPath === "auto"
350
404
  ? CssUrlDependency.PUBLIC_PATH_AUTO
351
405
  : compilation.getAssetPath(
352
- compilation.outputOptions.publicPath,
406
+ /** @type {TemplatePath} */
407
+ (compilation.outputOptions.publicPath),
353
408
  {
354
409
  hash: compilation.hash
355
410
  }
@@ -375,8 +430,10 @@ class AssetGenerator extends Generator {
375
430
  assetInfo = mergeAssetInfo(assetInfo, info);
376
431
  filename = path.posix.join(outputPath, filename);
377
432
  }
378
- module.buildInfo.filename = filename;
379
- module.buildInfo.assetInfo = assetInfo;
433
+ /** @type {BuildInfo} */
434
+ (module.buildInfo).filename = filename;
435
+ /** @type {BuildInfo} */
436
+ (module.buildInfo).assetInfo = assetInfo;
380
437
  if (getData) {
381
438
  // Due to code generation caching module.buildInfo.XXX can't used to store such information
382
439
  // It need to be stored in the code generation results instead, where it's cached too
@@ -399,12 +456,9 @@ class AssetGenerator extends Generator {
399
456
  ConcatenationScope.NAMESPACE_OBJECT_EXPORT
400
457
  } = ${content};`
401
458
  );
402
- } else {
403
- runtimeRequirements.add(RuntimeGlobals.module);
404
- return new RawSource(
405
- `${RuntimeGlobals.module}.exports = ${content};`
406
- );
407
459
  }
460
+ runtimeRequirements.add(RuntimeGlobals.module);
461
+ return new RawSource(`${RuntimeGlobals.module}.exports = ${content};`);
408
462
  }
409
463
  }
410
464
  }
@@ -416,9 +470,8 @@ class AssetGenerator extends Generator {
416
470
  getTypes(module) {
417
471
  if ((module.buildInfo && module.buildInfo.dataUrl) || this.emit === false) {
418
472
  return JS_TYPES;
419
- } else {
420
- return JS_AND_ASSET_TYPES;
421
473
  }
474
+ return JS_AND_ASSET_TYPES;
422
475
  }
423
476
 
424
477
  /**
@@ -450,11 +503,10 @@ class AssetGenerator extends Generator {
450
503
  // 4/3 = base64 encoding
451
504
  // 34 = ~ data url header + footer + rounding
452
505
  return originalSource.size() * 1.34 + 36;
453
- } else {
454
- // it's only estimated so this number is probably fine
455
- // Example: m.exports=r.p+"0123456789012345678901.ext"
456
- return 42;
457
506
  }
507
+ // it's only estimated so this number is probably fine
508
+ // Example: m.exports=r.p+"0123456789012345678901.ext"
509
+ return 42;
458
510
  }
459
511
  }
460
512
 
@@ -462,8 +514,12 @@ class AssetGenerator extends Generator {
462
514
  * @param {Hash} hash hash that will be modified
463
515
  * @param {UpdateHashContext} updateHashContext context for updating hash
464
516
  */
465
- updateHash(hash, { module, runtime, runtimeTemplate, chunkGraph }) {
466
- if (module.buildInfo.dataUrl) {
517
+ updateHash(hash, updateHashContext) {
518
+ const { module } = updateHashContext;
519
+ if (
520
+ /** @type {BuildInfo} */
521
+ (module.buildInfo).dataUrl
522
+ ) {
467
523
  hash.update("data-url");
468
524
  // this.dataUrlOptions as function should be pure and only depend on input source and filename
469
525
  // therefore it doesn't need to be hashed
@@ -472,19 +528,26 @@ class AssetGenerator extends Generator {
472
528
  .ident;
473
529
  if (ident) hash.update(ident);
474
530
  } else {
531
+ const dataUrlOptions =
532
+ /** @type {AssetGeneratorDataUrlOptions} */
533
+ (this.dataUrlOptions);
475
534
  if (
476
- this.dataUrlOptions.encoding &&
477
- this.dataUrlOptions.encoding !== DEFAULT_ENCODING
535
+ dataUrlOptions.encoding &&
536
+ dataUrlOptions.encoding !== DEFAULT_ENCODING
478
537
  ) {
479
- hash.update(this.dataUrlOptions.encoding);
538
+ hash.update(dataUrlOptions.encoding);
480
539
  }
481
- if (this.dataUrlOptions.mimetype)
482
- hash.update(this.dataUrlOptions.mimetype);
540
+ if (dataUrlOptions.mimetype) hash.update(dataUrlOptions.mimetype);
483
541
  // computed mimetype depends only on module filename which is already part of the hash
484
542
  }
485
543
  } else {
486
544
  hash.update("resource");
487
545
 
546
+ const { module, chunkGraph, runtime } = updateHashContext;
547
+ const runtimeTemplate =
548
+ /** @type {NonNullable<UpdateHashContext["runtimeTemplate"]>} */
549
+ (updateHashContext.runtimeTemplate);
550
+
488
551
  const pathData = {
489
552
  module,
490
553
  runtime,
@@ -506,7 +569,9 @@ class AssetGenerator extends Generator {
506
569
  }
507
570
 
508
571
  const assetModuleFilename =
509
- this.filename || runtimeTemplate.outputOptions.assetModuleFilename;
572
+ this.filename ||
573
+ /** @type {AssetModuleFilename} */
574
+ (runtimeTemplate.outputOptions.assetModuleFilename);
510
575
  const { path: filename, info } =
511
576
  runtimeTemplate.compilation.getAssetPathWithInfo(
512
577
  assetModuleFilename,
@@ -17,9 +17,12 @@ const createSchemaValidation = require("../util/create-schema-validation");
17
17
  const memoize = require("../util/memoize");
18
18
 
19
19
  /** @typedef {import("webpack-sources").Source} Source */
20
+ /** @typedef {import("../../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
20
21
  /** @typedef {import("../Chunk")} Chunk */
21
22
  /** @typedef {import("../Compiler")} Compiler */
22
23
  /** @typedef {import("../Module")} Module */
24
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
25
+ /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
23
26
 
24
27
  /**
25
28
  * @param {string} name name of definitions
@@ -89,7 +92,8 @@ class AssetModulesPlugin {
89
92
  .tap(plugin, parserOptions => {
90
93
  validateParserOptions(parserOptions);
91
94
  parserOptions = cleverMerge(
92
- compiler.options.module.parser.asset,
95
+ /** @type {AssetParserOptions} */
96
+ (compiler.options.module.parser.asset),
93
97
  parserOptions
94
98
  );
95
99
 
@@ -107,21 +111,21 @@ class AssetModulesPlugin {
107
111
  });
108
112
  normalModuleFactory.hooks.createParser
109
113
  .for(ASSET_MODULE_TYPE_INLINE)
110
- .tap(plugin, parserOptions => {
114
+ .tap(plugin, _parserOptions => {
111
115
  const AssetParser = getAssetParser();
112
116
 
113
117
  return new AssetParser(true);
114
118
  });
115
119
  normalModuleFactory.hooks.createParser
116
120
  .for(ASSET_MODULE_TYPE_RESOURCE)
117
- .tap(plugin, parserOptions => {
121
+ .tap(plugin, _parserOptions => {
118
122
  const AssetParser = getAssetParser();
119
123
 
120
124
  return new AssetParser(false);
121
125
  });
122
126
  normalModuleFactory.hooks.createParser
123
127
  .for(ASSET_MODULE_TYPE_SOURCE)
124
- .tap(plugin, parserOptions => {
128
+ .tap(plugin, _parserOptions => {
125
129
  const AssetSourceParser = getAssetSourceParser();
126
130
 
127
131
  return new AssetSourceParser();
@@ -137,7 +141,7 @@ class AssetModulesPlugin {
137
141
  .tap(plugin, generatorOptions => {
138
142
  validateGeneratorOptions[type](generatorOptions);
139
143
 
140
- let dataUrl = undefined;
144
+ let dataUrl;
141
145
  if (type !== ASSET_MODULE_TYPE_RESOURCE) {
142
146
  dataUrl = generatorOptions.dataUrl;
143
147
  if (!dataUrl || typeof dataUrl === "object") {
@@ -149,9 +153,9 @@ class AssetModulesPlugin {
149
153
  }
150
154
  }
151
155
 
152
- let filename = undefined;
153
- let publicPath = undefined;
154
- let outputPath = undefined;
156
+ let filename;
157
+ let publicPath;
158
+ let outputPath;
155
159
  if (type !== ASSET_MODULE_TYPE_INLINE) {
156
160
  filename = generatorOptions.filename;
157
161
  publicPath = generatorOptions.publicPath;
@@ -193,24 +197,23 @@ class AssetModulesPlugin {
193
197
  module,
194
198
  chunk.runtime
195
199
  );
200
+ const buildInfo = /** @type {BuildInfo} */ (module.buildInfo);
201
+ const data =
202
+ /** @type {NonNullable<CodeGenerationResult["data"]>} */
203
+ (codeGenResult.data);
196
204
  result.push({
197
- render: () => codeGenResult.sources.get(type),
198
- filename:
199
- module.buildInfo.filename ||
200
- codeGenResult.data.get("filename"),
201
- info:
202
- module.buildInfo.assetInfo ||
203
- codeGenResult.data.get("assetInfo"),
205
+ render: () =>
206
+ /** @type {Source} */ (codeGenResult.sources.get(type)),
207
+ filename: buildInfo.filename || data.get("filename"),
208
+ info: buildInfo.assetInfo || data.get("assetInfo"),
204
209
  auxiliary: true,
205
210
  identifier: `assetModule${chunkGraph.getModuleId(module)}`,
206
- hash:
207
- module.buildInfo.fullContentHash ||
208
- codeGenResult.data.get("fullContentHash")
211
+ hash: buildInfo.fullContentHash || data.get("fullContentHash")
209
212
  });
210
- } catch (e) {
211
- /** @type {Error} */ (e).message +=
213
+ } catch (err) {
214
+ /** @type {Error} */ (err).message +=
212
215
  `\nduring rendering of asset ${module.identifier()}`;
213
- throw e;
216
+ throw err;
214
217
  }
215
218
  }
216
219
  }
@@ -224,9 +227,12 @@ class AssetModulesPlugin {
224
227
  const { codeGenerationResult } = options;
225
228
  const source = codeGenerationResult.sources.get(ASSET_MODULE_TYPE);
226
229
  if (source === undefined) return;
227
- context.assets.set(codeGenerationResult.data.get("filename"), {
230
+ const data =
231
+ /** @type {NonNullable<CodeGenerationResult["data"]>} */
232
+ (codeGenerationResult.data);
233
+ context.assets.set(data.get("filename"), {
228
234
  source,
229
- info: codeGenerationResult.data.get("assetInfo")
235
+ info: data.get("assetInfo")
230
236
  });
231
237
  }
232
238
  );
@@ -34,13 +34,8 @@ class AssetSourceGenerator extends Generator {
34
34
  }
35
35
 
36
36
  const content = originalSource.source();
37
-
38
- let encodedSource;
39
- if (typeof content === "string") {
40
- encodedSource = content;
41
- } else {
42
- encodedSource = content.toString("utf-8");
43
- }
37
+ const encodedSource =
38
+ typeof content === "string" ? content : content.toString("utf-8");
44
39
 
45
40
  let sourceContent;
46
41
  if (concatenationScope) {
@@ -52,13 +52,12 @@ class AwaitDependenciesInitFragment extends InitFragment {
52
52
  return "";
53
53
  }
54
54
  if (promises.size === 1) {
55
- for (const p of promises) {
56
- return Template.asString([
57
- `var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([${p}]);`,
58
- `${p} = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];`,
59
- ""
60
- ]);
61
- }
55
+ const [p] = promises;
56
+ return Template.asString([
57
+ `var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([${p}]);`,
58
+ `${p} = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];`,
59
+ ""
60
+ ]);
62
61
  }
63
62
  const sepPromises = Array.from(promises).join(", ");
64
63
  // TODO check if destructuring is supported
@@ -209,7 +209,7 @@ const extractBlockModules = (module, moduleGraph, runtime, blockModulesMap) => {
209
209
  const merged = /** @type {ConnectionState} */ (modules[idx]);
210
210
  /** @type {ModuleGraphConnection[]} */
211
211
  (/** @type {unknown} */ (modules[idx + 1])).push(connection);
212
- if (merged === true) continue outer;
212
+ if (merged === true) continue;
213
213
  modules[idx] = ModuleGraphConnection.addConnectionStates(
214
214
  merged,
215
215
  state
@@ -234,7 +234,6 @@ const extractBlockModules = (module, moduleGraph, runtime, blockModulesMap) => {
234
234
  };
235
235
 
236
236
  /**
237
- *
238
237
  * @param {Logger} logger a logger
239
238
  * @param {Compilation} compilation the compilation
240
239
  * @param {InputEntrypointsAndModules} inputEntrypointsAndModules chunk groups which are processed with the modules
@@ -286,7 +285,6 @@ const visitModules = (
286
285
  }
287
286
 
288
287
  /**
289
- *
290
288
  * @param {DependenciesBlock} block block
291
289
  * @param {RuntimeSpec} runtime runtime
292
290
  * @returns {BlockModulesInFlattenTuples} block modules in flatten tuples
@@ -316,15 +314,14 @@ const visitModules = (
316
314
  for (const [block, blockModules] of map)
317
315
  blockModulesMap.set(block, blockModules);
318
316
  return map.get(block);
319
- } else {
320
- logger.time("visitModules: prepare");
321
- extractBlockModules(module, moduleGraph, runtime, blockModulesMap);
322
- blockModules =
323
- /** @type {BlockModulesInFlattenTuples} */
324
- (blockModulesMap.get(block));
325
- logger.timeAggregate("visitModules: prepare");
326
- return blockModules;
327
317
  }
318
+ logger.time("visitModules: prepare");
319
+ extractBlockModules(module, moduleGraph, runtime, blockModulesMap);
320
+ blockModules =
321
+ /** @type {BlockModulesInFlattenTuples} */
322
+ (blockModulesMap.get(block));
323
+ logger.timeAggregate("visitModules: prepare");
324
+ return blockModules;
328
325
  };
329
326
 
330
327
  let statProcessedQueueItems = 0;
@@ -332,12 +329,12 @@ const visitModules = (
332
329
  let statConnectedChunkGroups = 0;
333
330
  let statProcessedChunkGroupsForMerging = 0;
334
331
  let statMergedAvailableModuleSets = 0;
335
- let statForkedAvailableModules = 0;
336
- let statForkedAvailableModulesCount = 0;
337
- let statForkedAvailableModulesCountPlus = 0;
338
- let statForkedMergedModulesCount = 0;
339
- let statForkedMergedModulesCountPlus = 0;
340
- let statForkedResultModulesCount = 0;
332
+ const statForkedAvailableModules = 0;
333
+ const statForkedAvailableModulesCount = 0;
334
+ const statForkedAvailableModulesCountPlus = 0;
335
+ const statForkedMergedModulesCount = 0;
336
+ const statForkedMergedModulesCountPlus = 0;
337
+ const statForkedResultModulesCount = 0;
341
338
  let statChunkGroupInfoUpdated = 0;
342
339
  let statChildChunkGroupsReconnected = 0;
343
340
 
@@ -1179,7 +1176,6 @@ const visitModules = (
1179
1176
  };
1180
1177
 
1181
1178
  /**
1182
- *
1183
1179
  * @param {Compilation} compilation the compilation
1184
1180
  * @param {BlocksWithNestedBlocks} blocksWithNestedBlocks flag for blocks that have nested blocks
1185
1181
  * @param {BlockConnections} blockConnections connection for blocks
@@ -1195,7 +1191,6 @@ const connectChunkGroups = (
1195
1191
 
1196
1192
  /**
1197
1193
  * Helper function to check if all modules of a chunk are available
1198
- *
1199
1194
  * @param {ChunkGroup} chunkGroup the chunkGroup to scan
1200
1195
  * @param {bigint} availableModules the comparator set
1201
1196
  * @returns {boolean} return true if all modules of a chunk are available
@@ -11,7 +11,7 @@ const ProgressPlugin = require("../ProgressPlugin");
11
11
  /** @typedef {import("../Compiler")} Compiler */
12
12
  /** @typedef {import("./PackFileCacheStrategy")} PackFileCacheStrategy */
13
13
 
14
- const BUILD_DEPENDENCIES_KEY = Symbol();
14
+ const BUILD_DEPENDENCIES_KEY = Symbol("build dependencies key");
15
15
 
16
16
  class IdleFileCachePlugin {
17
17
  /**
@@ -38,7 +38,7 @@ class IdleFileCachePlugin {
38
38
  * @returns {void}
39
39
  */
40
40
  apply(compiler) {
41
- let strategy = this.strategy;
41
+ const strategy = this.strategy;
42
42
  const idleTimeout = this.idleTimeout;
43
43
  const idleTimeoutForInitialStore = Math.min(
44
44
  idleTimeout,
@@ -119,7 +119,7 @@ class IdleFileCachePlugin {
119
119
  currentIdlePromise = promise.then(() => strategy.afterAllStored());
120
120
  if (reportProgress) {
121
121
  currentIdlePromise = currentIdlePromise.then(() => {
122
- reportProgress(1, `stored`);
122
+ reportProgress(1, "stored");
123
123
  });
124
124
  }
125
125
  return currentIdlePromise.then(() => {
@@ -175,7 +175,7 @@ class IdleFileCachePlugin {
175
175
  }
176
176
  };
177
177
  /** @type {ReturnType<typeof setTimeout> | undefined} */
178
- let idleTimer = undefined;
178
+ let idleTimer;
179
179
  compiler.cache.hooks.beginIdle.tap(
180
180
  { name: "IdleFileCachePlugin", stage: Cache.STAGE_DISK },
181
181
  () => {
@@ -20,6 +20,7 @@ class MemoryWithGcCachePlugin {
20
20
  constructor({ maxGenerations }) {
21
21
  this._maxGenerations = maxGenerations;
22
22
  }
23
+
23
24
  /**
24
25
  * Apply the plugin
25
26
  * @param {Compiler} compiler the compiler instance
@@ -106,12 +107,11 @@ class MemoryWithGcCachePlugin {
106
107
  oldCache.delete(identifier);
107
108
  cache.set(identifier, cacheEntry);
108
109
  return null;
109
- } else {
110
- if (cacheEntry.etag !== etag) return null;
111
- oldCache.delete(identifier);
112
- cache.set(identifier, cacheEntry);
113
- return cacheEntry.data;
114
110
  }
111
+ if (cacheEntry.etag !== etag) return null;
112
+ oldCache.delete(identifier);
113
+ cache.set(identifier, cacheEntry);
114
+ return cacheEntry.data;
115
115
  }
116
116
  gotHandlers.push((result, callback) => {
117
117
  if (result === undefined) {