webpack 5.99.8 → 5.100.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 (314) hide show
  1. package/README.md +0 -3
  2. package/bin/webpack.js +8 -2
  3. package/hot/log.js +15 -15
  4. package/hot/poll.js +1 -0
  5. package/lib/APIPlugin.js +3 -3
  6. package/lib/AbstractMethodError.js +1 -0
  7. package/lib/AutomaticPrefetchPlugin.js +1 -0
  8. package/lib/BannerPlugin.js +1 -1
  9. package/lib/CacheFacade.js +2 -1
  10. package/lib/CaseSensitiveModulesWarning.js +4 -4
  11. package/lib/Chunk.js +6 -6
  12. package/lib/ChunkGraph.js +37 -32
  13. package/lib/ChunkGroup.js +17 -10
  14. package/lib/ChunkTemplate.js +1 -1
  15. package/lib/CleanPlugin.js +94 -17
  16. package/lib/CodeGenerationResults.js +1 -1
  17. package/lib/CompatibilityPlugin.js +5 -2
  18. package/lib/Compilation.js +77 -71
  19. package/lib/Compiler.js +46 -16
  20. package/lib/ConcatenationScope.js +15 -6
  21. package/lib/ConstPlugin.js +65 -45
  22. package/lib/ContextModule.js +16 -12
  23. package/lib/ContextModuleFactory.js +4 -3
  24. package/lib/ContextReplacementPlugin.js +4 -2
  25. package/lib/CssModule.js +2 -3
  26. package/lib/DefinePlugin.js +111 -3
  27. package/lib/DelegatedModuleFactoryPlugin.js +18 -18
  28. package/lib/Dependency.js +16 -12
  29. package/lib/DependencyTemplate.js +1 -0
  30. package/lib/DllEntryPlugin.js +3 -1
  31. package/lib/DllPlugin.js +4 -3
  32. package/lib/DllReferencePlugin.js +2 -2
  33. package/lib/DynamicEntryPlugin.js +1 -1
  34. package/lib/EntryOptionPlugin.js +5 -0
  35. package/lib/ErrorHelpers.js +4 -4
  36. package/lib/EvalDevToolModulePlugin.js +3 -3
  37. package/lib/EvalSourceMapDevToolPlugin.js +7 -7
  38. package/lib/ExportsInfo.js +48 -39
  39. package/lib/ExternalModule.js +15 -11
  40. package/lib/ExternalModuleFactoryPlugin.js +5 -2
  41. package/lib/FileSystemInfo.js +51 -38
  42. package/lib/FlagDependencyExportsPlugin.js +14 -7
  43. package/lib/FlagDependencyUsagePlugin.js +1 -1
  44. package/lib/Generator.js +14 -1
  45. package/lib/HookWebpackError.js +1 -0
  46. package/lib/HotModuleReplacementPlugin.js +77 -50
  47. package/lib/IgnorePlugin.js +1 -1
  48. package/lib/InvalidDependenciesModuleWarning.js +1 -1
  49. package/lib/JavascriptMetaInfoPlugin.js +0 -1
  50. package/lib/LibManifestPlugin.js +4 -2
  51. package/lib/LoaderOptionsPlugin.js +6 -4
  52. package/lib/MainTemplate.js +2 -2
  53. package/lib/Module.js +21 -6
  54. package/lib/ModuleFactory.js +1 -0
  55. package/lib/ModuleGraph.js +24 -2
  56. package/lib/ModuleGraphConnection.js +5 -5
  57. package/lib/ModuleInfoHeaderPlugin.js +2 -1
  58. package/lib/ModuleParseError.js +1 -0
  59. package/lib/ModuleSourceTypesConstants.js +12 -12
  60. package/lib/ModuleTemplate.js +1 -1
  61. package/lib/ModuleTypeConstants.js +21 -21
  62. package/lib/MultiCompiler.js +6 -6
  63. package/lib/NormalModule.js +61 -56
  64. package/lib/NormalModuleFactory.js +52 -37
  65. package/lib/NormalModuleReplacementPlugin.js +1 -1
  66. package/lib/NullFactory.js +1 -0
  67. package/lib/OptimizationStages.js +1 -1
  68. package/lib/Parser.js +1 -0
  69. package/lib/ProgressPlugin.js +12 -5
  70. package/lib/ProvidePlugin.js +5 -1
  71. package/lib/RecordIdsPlugin.js +3 -3
  72. package/lib/RuntimeGlobals.js +175 -155
  73. package/lib/RuntimeModule.js +1 -0
  74. package/lib/RuntimePlugin.js +34 -8
  75. package/lib/RuntimeTemplate.js +111 -11
  76. package/lib/SourceMapDevToolModuleOptionsPlugin.js +15 -25
  77. package/lib/SourceMapDevToolPlugin.js +19 -17
  78. package/lib/Template.js +2 -2
  79. package/lib/TemplatedPathPlugin.js +1 -1
  80. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  81. package/lib/WatchIgnorePlugin.js +4 -3
  82. package/lib/WebpackIsIncludedPlugin.js +2 -1
  83. package/lib/WebpackOptionsApply.js +115 -27
  84. package/lib/asset/AssetGenerator.js +26 -21
  85. package/lib/asset/AssetModulesPlugin.js +19 -17
  86. package/lib/asset/AssetSourceGenerator.js +11 -9
  87. package/lib/asset/RawDataUrlModule.js +4 -2
  88. package/lib/async-modules/AwaitDependenciesInitFragment.js +1 -1
  89. package/lib/buildChunkGraph.js +6 -3
  90. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  91. package/lib/cache/IdleFileCachePlugin.js +7 -4
  92. package/lib/cache/MemoryCachePlugin.js +1 -0
  93. package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
  94. package/lib/cache/PackFileCacheStrategy.js +26 -20
  95. package/lib/cache/ResolverCachePlugin.js +16 -8
  96. package/lib/cli.js +15 -10
  97. package/lib/config/browserslistTargetHandler.js +3 -3
  98. package/lib/config/defaults.js +25 -17
  99. package/lib/config/normalization.js +2 -1
  100. package/lib/config/target.js +6 -5
  101. package/lib/container/ContainerPlugin.js +1 -1
  102. package/lib/container/ContainerReferencePlugin.js +1 -1
  103. package/lib/container/FallbackModule.js +2 -1
  104. package/lib/container/HoistContainerReferencesPlugin.js +1 -1
  105. package/lib/container/ModuleFederationPlugin.js +2 -2
  106. package/lib/container/RemoteModule.js +1 -1
  107. package/lib/css/CssGenerator.js +9 -6
  108. package/lib/css/CssModulesPlugin.js +44 -31
  109. package/lib/css/CssParser.js +6 -4
  110. package/lib/css/walkCssTokens.js +33 -37
  111. package/lib/debug/ProfilingPlugin.js +6 -6
  112. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +8 -8
  113. package/lib/dependencies/AMDPlugin.js +12 -8
  114. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -26
  115. package/lib/dependencies/CachedConstDependency.js +1 -5
  116. package/lib/dependencies/CommonJsExportRequireDependency.js +6 -4
  117. package/lib/dependencies/CommonJsExportsParserPlugin.js +22 -25
  118. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -9
  119. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -114
  120. package/lib/dependencies/CommonJsPlugin.js +15 -16
  121. package/lib/dependencies/ContextDependencyHelpers.js +2 -1
  122. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  123. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  124. package/lib/dependencies/CssIcssExportDependency.js +1 -1
  125. package/lib/dependencies/CssLocalIdentifierDependency.js +2 -2
  126. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  127. package/lib/dependencies/CssUrlDependency.js +1 -1
  128. package/lib/dependencies/DynamicExports.js +9 -9
  129. package/lib/dependencies/ExportsInfoDependency.js +1 -1
  130. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +122 -101
  131. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  132. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +95 -19
  133. package/lib/dependencies/HarmonyExportInitFragment.js +1 -1
  134. package/lib/dependencies/HarmonyImportDependency.js +11 -5
  135. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +238 -162
  136. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -1
  137. package/lib/dependencies/HarmonyImportSpecifierDependency.js +20 -9
  138. package/lib/dependencies/HarmonyModulesPlugin.js +23 -12
  139. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -0
  140. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  141. package/lib/dependencies/ImportMetaPlugin.js +2 -2
  142. package/lib/dependencies/ImportParserPlugin.js +40 -9
  143. package/lib/dependencies/ImportPlugin.js +3 -1
  144. package/lib/dependencies/LoaderPlugin.js +1 -0
  145. package/lib/dependencies/ModuleDependency.js +1 -1
  146. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  147. package/lib/dependencies/RequireContextPlugin.js +3 -1
  148. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +3 -0
  149. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  150. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  151. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  152. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  153. package/lib/dependencies/SystemPlugin.js +1 -1
  154. package/lib/dependencies/URLContextDependency.js +65 -0
  155. package/lib/dependencies/URLDependency.js +1 -1
  156. package/lib/dependencies/URLPlugin.js +17 -157
  157. package/lib/dependencies/WorkerPlugin.js +23 -10
  158. package/lib/dependencies/processExportInfo.js +2 -1
  159. package/lib/esm/ModuleChunkFormatPlugin.js +269 -185
  160. package/lib/esm/ModuleChunkLoadingPlugin.js +39 -1
  161. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +73 -6
  162. package/lib/hmr/HotModuleReplacement.runtime.js +0 -1
  163. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  164. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  165. package/lib/hmr/LazyCompilationPlugin.js +4 -2
  166. package/lib/hmr/lazyCompilationBackend.js +4 -2
  167. package/lib/ids/ChunkModuleIdRangePlugin.js +6 -3
  168. package/lib/ids/DeterministicChunkIdsPlugin.js +30 -35
  169. package/lib/ids/DeterministicModuleIdsPlugin.js +4 -3
  170. package/lib/ids/HashedModuleIdsPlugin.js +5 -4
  171. package/lib/ids/IdHelpers.js +21 -17
  172. package/lib/ids/NamedChunkIdsPlugin.js +5 -5
  173. package/lib/ids/NamedModuleIdsPlugin.js +4 -4
  174. package/lib/ids/NaturalChunkIdsPlugin.js +2 -1
  175. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  176. package/lib/ids/OccurrenceChunkIdsPlugin.js +3 -2
  177. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  178. package/lib/ids/SyncModuleIdsPlugin.js +1 -1
  179. package/lib/index.js +13 -3
  180. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +113 -119
  181. package/lib/javascript/BasicEvaluatedExpression.js +2 -1
  182. package/lib/javascript/ChunkHelpers.js +1 -0
  183. package/lib/javascript/CommonJsChunkFormatPlugin.js +121 -136
  184. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -3
  185. package/lib/javascript/JavascriptGenerator.js +14 -2
  186. package/lib/javascript/JavascriptModulesPlugin.js +68 -27
  187. package/lib/javascript/JavascriptParser.js +136 -81
  188. package/lib/javascript/JavascriptParserHelpers.js +41 -41
  189. package/lib/javascript/StartupHelpers.js +17 -17
  190. package/lib/json/JsonGenerator.js +4 -2
  191. package/lib/json/JsonModulesPlugin.js +2 -2
  192. package/lib/json/JsonParser.js +1 -1
  193. package/lib/library/AbstractLibraryPlugin.js +6 -2
  194. package/lib/library/AssignLibraryPlugin.js +21 -6
  195. package/lib/library/EnableLibraryPlugin.js +23 -3
  196. package/lib/library/ModuleLibraryPlugin.js +4 -1
  197. package/lib/library/UmdLibraryPlugin.js +15 -6
  198. package/lib/logging/createConsoleLogger.js +3 -3
  199. package/lib/logging/runtime.js +9 -9
  200. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +4 -22
  201. package/lib/node/RequireChunkLoadingRuntimeModule.js +4 -22
  202. package/lib/node/nodeConsole.js +4 -2
  203. package/lib/optimize/AggressiveMergingPlugin.js +45 -46
  204. package/lib/optimize/AggressiveSplittingPlugin.js +13 -12
  205. package/lib/optimize/ConcatenatedModule.js +227 -57
  206. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  207. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -1
  208. package/lib/optimize/InnerGraph.js +115 -112
  209. package/lib/optimize/InnerGraphPlugin.js +2 -2
  210. package/lib/optimize/LimitChunkCountPlugin.js +4 -2
  211. package/lib/optimize/MangleExportsPlugin.js +4 -3
  212. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  213. package/lib/optimize/MinChunkSizePlugin.js +6 -3
  214. package/lib/optimize/ModuleConcatenationPlugin.js +31 -22
  215. package/lib/optimize/RealContentHashPlugin.js +26 -20
  216. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  217. package/lib/optimize/RemoveParentModulesPlugin.js +1 -0
  218. package/lib/optimize/SideEffectsFlagPlugin.js +6 -3
  219. package/lib/optimize/SplitChunksPlugin.js +16 -13
  220. package/lib/rules/BasicEffectRulePlugin.js +4 -2
  221. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  222. package/lib/rules/ObjectMatcherRulePlugin.js +3 -1
  223. package/lib/rules/RuleSetCompiler.js +7 -4
  224. package/lib/rules/UseEffectRulePlugin.js +3 -1
  225. package/lib/runtime/AsyncModuleRuntimeModule.js +64 -9
  226. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  227. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +214 -0
  228. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  229. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +8 -7
  230. package/lib/schemes/DataUriPlugin.js +3 -1
  231. package/lib/schemes/FileUriPlugin.js +1 -1
  232. package/lib/schemes/HttpUriPlugin.js +27 -19
  233. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  234. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  235. package/lib/serialization/BinaryMiddleware.js +5 -4
  236. package/lib/serialization/FileMiddleware.js +7 -4
  237. package/lib/serialization/ObjectMiddleware.js +14 -8
  238. package/lib/serialization/Serializer.js +5 -3
  239. package/lib/serialization/SerializerMiddleware.js +2 -0
  240. package/lib/sharing/ConsumeSharedModule.js +1 -1
  241. package/lib/sharing/ConsumeSharedPlugin.js +3 -3
  242. package/lib/sharing/ConsumeSharedRuntimeModule.js +2 -2
  243. package/lib/sharing/ProvideSharedModule.js +1 -1
  244. package/lib/sharing/ProvideSharedPlugin.js +6 -3
  245. package/lib/sharing/SharePlugin.js +2 -1
  246. package/lib/sharing/ShareRuntimeModule.js +3 -5
  247. package/lib/sharing/utils.js +34 -34
  248. package/lib/stats/DefaultStatsFactoryPlugin.js +49 -46
  249. package/lib/stats/DefaultStatsPresetPlugin.js +4 -2
  250. package/lib/stats/DefaultStatsPrinterPlugin.js +28 -22
  251. package/lib/stats/StatsFactory.js +4 -2
  252. package/lib/stats/StatsPrinter.js +3 -2
  253. package/lib/url/URLParserPlugin.js +266 -0
  254. package/lib/util/ArrayQueue.js +1 -1
  255. package/lib/util/AsyncQueue.js +1 -1
  256. package/lib/util/Hash.js +2 -0
  257. package/lib/util/IterableHelpers.js +1 -1
  258. package/lib/util/LazyBucketSortedSet.js +2 -1
  259. package/lib/util/LazySet.js +11 -6
  260. package/lib/util/ParallelismFactorCalculator.js +1 -1
  261. package/lib/util/SetHelpers.js +3 -3
  262. package/lib/util/SortableSet.js +2 -2
  263. package/lib/util/StackedCacheMap.js +3 -1
  264. package/lib/util/StackedMap.js +2 -2
  265. package/lib/util/StringXor.js +1 -0
  266. package/lib/util/TupleSet.js +1 -0
  267. package/lib/util/URLAbsoluteSpecifier.js +1 -1
  268. package/lib/util/cleverMerge.js +12 -8
  269. package/lib/util/comparators.js +154 -127
  270. package/lib/util/compileBooleanMatcher.js +8 -3
  271. package/lib/util/concatenate.js +8 -7
  272. package/lib/util/conventions.js +72 -73
  273. package/lib/util/create-schema-validation.js +2 -1
  274. package/lib/util/createHash.js +10 -4
  275. package/lib/util/deprecation.js +69 -66
  276. package/lib/util/deterministicGrouping.js +4 -2
  277. package/lib/util/extractUrlAndGlobal.js +1 -1
  278. package/lib/util/findGraphRoots.js +2 -2
  279. package/lib/util/fs.js +30 -23
  280. package/lib/util/hash/md4.js +2 -2
  281. package/lib/util/hash/wasm-hash.js +4 -2
  282. package/lib/util/identifier.js +13 -12
  283. package/lib/util/internalSerializables.js +2 -0
  284. package/lib/util/magicComment.js +5 -5
  285. package/lib/util/processAsyncTree.js +1 -1
  286. package/lib/util/propertyAccess.js +1 -1
  287. package/lib/util/propertyName.js +1 -1
  288. package/lib/util/registerExternalSerializer.js +1 -2
  289. package/lib/util/removeBOM.js +1 -1
  290. package/lib/util/runtime.js +29 -21
  291. package/lib/util/semver.js +1 -1
  292. package/lib/util/serialization.js +3 -0
  293. package/lib/util/source.js +3 -2
  294. package/lib/validateSchema.js +1 -0
  295. package/lib/wasm/EnableWasmLoadingPlugin.js +6 -3
  296. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +4 -1
  297. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +46 -49
  298. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +2 -2
  299. package/lib/wasm-sync/WebAssemblyGenerator.js +2 -3
  300. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +3 -2
  301. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +3 -0
  302. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  303. package/lib/web/JsonpChunkLoadingRuntimeModule.js +4 -22
  304. package/lib/webpack.js +4 -5
  305. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +1 -0
  306. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -24
  307. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  308. package/package.json +121 -114
  309. package/schemas/WebpackOptions.check.js +1 -1
  310. package/schemas/WebpackOptions.json +17 -0
  311. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  312. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  313. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  314. package/types.d.ts +1261 -366
@@ -5,20 +5,20 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const mimeTypes = require("mime-types");
9
8
  const path = require("path");
9
+ const mimeTypes = require("mime-types");
10
10
  const { RawSource } = require("webpack-sources");
11
11
  const ConcatenationScope = require("../ConcatenationScope");
12
12
  const Generator = require("../Generator");
13
13
  const {
14
- NO_TYPES,
15
- ASSET_TYPES,
16
- ASSET_AND_JS_TYPES,
17
- ASSET_AND_JS_AND_CSS_URL_TYPES,
18
14
  ASSET_AND_CSS_URL_TYPES,
19
- JS_TYPES,
15
+ ASSET_AND_JS_AND_CSS_URL_TYPES,
16
+ ASSET_AND_JS_TYPES,
17
+ ASSET_TYPES,
18
+ CSS_URL_TYPES,
20
19
  JS_AND_CSS_URL_TYPES,
21
- CSS_URL_TYPES
20
+ JS_TYPES,
21
+ NO_TYPES
22
22
  } = require("../ModuleSourceTypesConstants");
23
23
  const { ASSET_MODULE_TYPE } = require("../ModuleTypeConstants");
24
24
  const RuntimeGlobals = require("../RuntimeGlobals");
@@ -67,7 +67,7 @@ const mergeMaybeArrays = (a, b) => {
67
67
  else set.add(a);
68
68
  if (Array.isArray(b)) for (const item of b) set.add(item);
69
69
  else set.add(b);
70
- return Array.from(set);
70
+ return [...set];
71
71
  };
72
72
 
73
73
  /**
@@ -144,7 +144,7 @@ const encodeDataUri = (encoding, source) => {
144
144
  const content = source.source();
145
145
 
146
146
  if (typeof content !== "string") {
147
- encodedContent = content.toString("utf-8");
147
+ encodedContent = content.toString("utf8");
148
148
  }
149
149
 
150
150
  encodedContent = encodeURIComponent(
@@ -165,7 +165,7 @@ const encodeDataUri = (encoding, source) => {
165
165
  };
166
166
 
167
167
  /**
168
- * @param {string} encoding encoding
168
+ * @param {"base64" | false} encoding encoding
169
169
  * @param {string} content content
170
170
  * @returns {Buffer} decoded content
171
171
  */
@@ -475,7 +475,6 @@ class AssetGenerator extends Generator {
475
475
  module
476
476
  });
477
477
  } else {
478
- /** @type {"base64" | false | undefined} */
479
478
  let encoding =
480
479
  /** @type {AssetGeneratorDataUrlOptions} */
481
480
  (this.dataUrlOptions).encoding;
@@ -498,12 +497,15 @@ class AssetGenerator extends Generator {
498
497
  module.resourceResolveData.encoding === encoding &&
499
498
  decodeDataUriContent(
500
499
  module.resourceResolveData.encoding,
501
- module.resourceResolveData.encodedContent
500
+ /** @type {string} */ (module.resourceResolveData.encodedContent)
502
501
  ).equals(source.buffer())
503
502
  ) {
504
503
  encodedContent = module.resourceResolveData.encodedContent;
505
504
  } else {
506
- encodedContent = encodeDataUri(encoding, source);
505
+ encodedContent = encodeDataUri(
506
+ /** @type {"base64" | false} */ (encoding),
507
+ source
508
+ );
507
509
  }
508
510
 
509
511
  encodedSource = `data:${mimeType}${
@@ -586,8 +588,12 @@ class AssetGenerator extends Generator {
586
588
  data.set("url", { [type]: assetPath, ...data.get("url") });
587
589
  }
588
590
 
589
- if (data && data.get("assetInfo")) {
590
- newAssetInfo = mergeAssetInfo(data.get("assetInfo"), newAssetInfo);
591
+ if (data) {
592
+ const oldAssetInfo = data.get("assetInfo");
593
+
594
+ if (oldAssetInfo) {
595
+ newAssetInfo = mergeAssetInfo(oldAssetInfo, newAssetInfo);
596
+ }
591
597
  }
592
598
 
593
599
  if (data) {
@@ -655,6 +661,7 @@ class AssetGenerator extends Generator {
655
661
  * @returns {SourceTypes} available types (do not mutate)
656
662
  */
657
663
  getTypes(module) {
664
+ /** @type {Set<string>} */
658
665
  const sourceTypes = new Set();
659
666
  const connections = this._moduleGraph.getIncomingConnections(module);
660
667
 
@@ -667,27 +674,25 @@ class AssetGenerator extends Generator {
667
674
  }
668
675
 
669
676
  if ((module.buildInfo && module.buildInfo.dataUrl) || this.emit === false) {
670
- if (sourceTypes) {
677
+ if (sourceTypes.size > 0) {
671
678
  if (sourceTypes.has("javascript") && sourceTypes.has("css")) {
672
679
  return JS_AND_CSS_URL_TYPES;
673
- } else if (sourceTypes.has("javascript")) {
674
- return JS_TYPES;
675
680
  } else if (sourceTypes.has("css")) {
676
681
  return CSS_URL_TYPES;
677
682
  }
683
+ return JS_TYPES;
678
684
  }
679
685
 
680
686
  return NO_TYPES;
681
687
  }
682
688
 
683
- if (sourceTypes) {
689
+ if (sourceTypes.size > 0) {
684
690
  if (sourceTypes.has("javascript") && sourceTypes.has("css")) {
685
691
  return ASSET_AND_JS_AND_CSS_URL_TYPES;
686
- } else if (sourceTypes.has("javascript")) {
687
- return ASSET_AND_JS_TYPES;
688
692
  } else if (sourceTypes.has("css")) {
689
693
  return ASSET_AND_CSS_URL_TYPES;
690
694
  }
695
+ return ASSET_AND_JS_TYPES;
691
696
  }
692
697
 
693
698
  return ASSET_TYPES;
@@ -6,9 +6,9 @@
6
6
  "use strict";
7
7
 
8
8
  const {
9
- ASSET_MODULE_TYPE_RESOURCE,
10
- ASSET_MODULE_TYPE_INLINE,
11
9
  ASSET_MODULE_TYPE,
10
+ ASSET_MODULE_TYPE_INLINE,
11
+ ASSET_MODULE_TYPE_RESOURCE,
12
12
  ASSET_MODULE_TYPE_SOURCE
13
13
  } = require("../ModuleTypeConstants");
14
14
  const { cleverMerge } = require("../util/cleverMerge");
@@ -18,6 +18,7 @@ const memoize = require("../util/memoize");
18
18
 
19
19
  /** @typedef {import("webpack-sources").Source} Source */
20
20
  /** @typedef {import("../../declarations/WebpackOptions").AssetParserOptions} AssetParserOptions */
21
+ /** @typedef {import("schema-utils").Schema} Schema */
21
22
  /** @typedef {import("../Chunk")} Chunk */
22
23
  /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
23
24
  /** @typedef {import("../Compiler")} Compiler */
@@ -28,10 +29,11 @@ const memoize = require("../util/memoize");
28
29
 
29
30
  /**
30
31
  * @param {string} name name of definitions
31
- * @returns {TODO} definition
32
+ * @returns {Schema} definition
32
33
  */
33
34
  const getSchema = name => {
34
35
  const { definitions } = require("../../schemas/WebpackOptions.json");
36
+
35
37
  return {
36
38
  definitions,
37
39
  oneOf: [{ $ref: `#/definitions/${name}` }]
@@ -44,24 +46,24 @@ const generatorValidationOptions = {
44
46
  };
45
47
  const validateGeneratorOptions = {
46
48
  asset: createSchemaValidation(
47
- require("../../schemas/plugins/asset/AssetGeneratorOptions.check.js"),
49
+ require("../../schemas/plugins/asset/AssetGeneratorOptions.check"),
48
50
  () => getSchema("AssetGeneratorOptions"),
49
51
  generatorValidationOptions
50
52
  ),
51
53
  "asset/resource": createSchemaValidation(
52
- require("../../schemas/plugins/asset/AssetResourceGeneratorOptions.check.js"),
54
+ require("../../schemas/plugins/asset/AssetResourceGeneratorOptions.check"),
53
55
  () => getSchema("AssetResourceGeneratorOptions"),
54
56
  generatorValidationOptions
55
57
  ),
56
58
  "asset/inline": createSchemaValidation(
57
- require("../../schemas/plugins/asset/AssetInlineGeneratorOptions.check.js"),
59
+ require("../../schemas/plugins/asset/AssetInlineGeneratorOptions.check"),
58
60
  () => getSchema("AssetInlineGeneratorOptions"),
59
61
  generatorValidationOptions
60
62
  )
61
63
  };
62
64
 
63
65
  const validateParserOptions = createSchemaValidation(
64
- require("../../schemas/plugins/asset/AssetParserOptions.check.js"),
66
+ require("../../schemas/plugins/asset/AssetParserOptions.check"),
65
67
  () => getSchema("AssetParserOptions"),
66
68
  {
67
69
  name: "Asset Modules Plugin",
@@ -77,7 +79,7 @@ const getAssetSourceGenerator = memoize(() =>
77
79
  );
78
80
 
79
81
  const type = ASSET_MODULE_TYPE;
80
- const plugin = "AssetModulesPlugin";
82
+ const PLUGIN_NAME = "AssetModulesPlugin";
81
83
 
82
84
  class AssetModulesPlugin {
83
85
  /**
@@ -87,11 +89,11 @@ class AssetModulesPlugin {
87
89
  */
88
90
  apply(compiler) {
89
91
  compiler.hooks.compilation.tap(
90
- plugin,
92
+ PLUGIN_NAME,
91
93
  (compilation, { normalModuleFactory }) => {
92
94
  normalModuleFactory.hooks.createParser
93
95
  .for(ASSET_MODULE_TYPE)
94
- .tap(plugin, parserOptions => {
96
+ .tap(PLUGIN_NAME, parserOptions => {
95
97
  validateParserOptions(parserOptions);
96
98
  parserOptions = cleverMerge(
97
99
  /** @type {AssetParserOptions} */
@@ -113,21 +115,21 @@ class AssetModulesPlugin {
113
115
  });
114
116
  normalModuleFactory.hooks.createParser
115
117
  .for(ASSET_MODULE_TYPE_INLINE)
116
- .tap(plugin, _parserOptions => {
118
+ .tap(PLUGIN_NAME, _parserOptions => {
117
119
  const AssetParser = getAssetParser();
118
120
 
119
121
  return new AssetParser(true);
120
122
  });
121
123
  normalModuleFactory.hooks.createParser
122
124
  .for(ASSET_MODULE_TYPE_RESOURCE)
123
- .tap(plugin, _parserOptions => {
125
+ .tap(PLUGIN_NAME, _parserOptions => {
124
126
  const AssetParser = getAssetParser();
125
127
 
126
128
  return new AssetParser(false);
127
129
  });
128
130
  normalModuleFactory.hooks.createParser
129
131
  .for(ASSET_MODULE_TYPE_SOURCE)
130
- .tap(plugin, _parserOptions => {
132
+ .tap(PLUGIN_NAME, _parserOptions => {
131
133
  const AssetSourceParser = getAssetSourceParser();
132
134
 
133
135
  return new AssetSourceParser();
@@ -140,7 +142,7 @@ class AssetModulesPlugin {
140
142
  ]) {
141
143
  normalModuleFactory.hooks.createGenerator
142
144
  .for(type)
143
- .tap(plugin, generatorOptions => {
145
+ .tap(PLUGIN_NAME, generatorOptions => {
144
146
  validateGeneratorOptions[type](generatorOptions);
145
147
 
146
148
  let dataUrl;
@@ -178,13 +180,13 @@ class AssetModulesPlugin {
178
180
  }
179
181
  normalModuleFactory.hooks.createGenerator
180
182
  .for(ASSET_MODULE_TYPE_SOURCE)
181
- .tap(plugin, () => {
183
+ .tap(PLUGIN_NAME, () => {
182
184
  const AssetSourceGenerator = getAssetSourceGenerator();
183
185
 
184
186
  return new AssetSourceGenerator(compilation.moduleGraph);
185
187
  });
186
188
 
187
- compilation.hooks.renderManifest.tap(plugin, (result, options) => {
189
+ compilation.hooks.renderManifest.tap(PLUGIN_NAME, (result, options) => {
188
190
  const { chunkGraph } = compilation;
189
191
  const { chunk, codeGenerationResults, runtimeTemplate } = options;
190
192
 
@@ -270,7 +272,7 @@ class AssetModulesPlugin {
270
272
  });
271
273
 
272
274
  compilation.hooks.prepareModuleExecution.tap(
273
- "AssetModulesPlugin",
275
+ PLUGIN_NAME,
274
276
  (options, context) => {
275
277
  const { codeGenerationResult } = options;
276
278
  const source = codeGenerationResult.sources.get(ASSET_MODULE_TYPE);
@@ -9,10 +9,10 @@ const { RawSource } = require("webpack-sources");
9
9
  const ConcatenationScope = require("../ConcatenationScope");
10
10
  const Generator = require("../Generator");
11
11
  const {
12
- NO_TYPES,
13
12
  CSS_URL_TYPES,
13
+ JS_AND_CSS_URL_TYPES,
14
14
  JS_TYPES,
15
- JS_AND_CSS_URL_TYPES
15
+ NO_TYPES
16
16
  } = require("../ModuleSourceTypesConstants");
17
17
  const RuntimeGlobals = require("../RuntimeGlobals");
18
18
 
@@ -53,7 +53,7 @@ class AssetSourceGenerator extends Generator {
53
53
 
54
54
  const content = originalSource.source();
55
55
  const encodedSource =
56
- typeof content === "string" ? content : content.toString("utf-8");
56
+ typeof content === "string" ? content : content.toString("utf8");
57
57
 
58
58
  let sourceContent;
59
59
  if (concatenationScope) {
@@ -78,7 +78,7 @@ class AssetSourceGenerator extends Generator {
78
78
 
79
79
  const content = originalSource.source();
80
80
  const encodedSource =
81
- typeof content === "string" ? content : content.toString("utf-8");
81
+ typeof content === "string" ? content : content.toString("utf8");
82
82
 
83
83
  if (data) {
84
84
  data.set("url", { [type]: encodedSource });
@@ -122,6 +122,7 @@ class AssetSourceGenerator extends Generator {
122
122
  * @returns {SourceTypes} available types (do not mutate)
123
123
  */
124
124
  getTypes(module) {
125
+ /** @type {Set<string>} */
125
126
  const sourceTypes = new Set();
126
127
  const connections = this._moduleGraph.getIncomingConnections(module);
127
128
 
@@ -133,12 +134,13 @@ class AssetSourceGenerator extends Generator {
133
134
  sourceTypes.add(connection.originModule.type.split("/")[0]);
134
135
  }
135
136
 
136
- if (sourceTypes.has("javascript") && sourceTypes.has("css")) {
137
- return JS_AND_CSS_URL_TYPES;
138
- } else if (sourceTypes.has("javascript")) {
137
+ if (sourceTypes.size > 0) {
138
+ if (sourceTypes.has("javascript") && sourceTypes.has("css")) {
139
+ return JS_AND_CSS_URL_TYPES;
140
+ } else if (sourceTypes.has("css")) {
141
+ return CSS_URL_TYPES;
142
+ }
139
143
  return JS_TYPES;
140
- } else if (sourceTypes.has("css")) {
141
- return CSS_URL_TYPES;
142
144
  }
143
145
 
144
146
  return NO_TYPES;
@@ -62,8 +62,9 @@ class RawDataUrlModule extends Module {
62
62
  * @returns {number} the estimated size of the module (must be non-zero)
63
63
  */
64
64
  size(type) {
65
- if (this.url === undefined)
65
+ if (this.url === undefined) {
66
66
  this.url = /** @type {Buffer} */ (this.urlBuffer).toString();
67
+ }
67
68
  return Math.max(1, this.url.length);
68
69
  }
69
70
 
@@ -107,8 +108,9 @@ class RawDataUrlModule extends Module {
107
108
  * @returns {CodeGenerationResult} result
108
109
  */
109
110
  codeGeneration(context) {
110
- if (this.url === undefined)
111
+ if (this.url === undefined) {
111
112
  this.url = /** @type {Buffer} */ (this.urlBuffer).toString();
113
+ }
112
114
  const sources = new Map();
113
115
  sources.set(
114
116
  "javascript",
@@ -59,7 +59,7 @@ class AwaitDependenciesInitFragment extends InitFragment {
59
59
  ""
60
60
  ]);
61
61
  }
62
- const sepPromises = Array.from(promises).join(", ");
62
+ const sepPromises = [...promises].join(", ");
63
63
  // TODO check if destructuring is supported
64
64
  return Template.asString([
65
65
  `var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([${sepPromises}]);`,
@@ -315,8 +315,9 @@ const visitModules = (
315
315
  return map;
316
316
  }
317
317
  );
318
- for (const [block, blockModules] of map)
318
+ for (const [block, blockModules] of map) {
319
319
  blockModulesMap.set(block, blockModules);
320
+ }
320
321
  return map.get(block);
321
322
  }
322
323
  logger.time("visitModules: prepare");
@@ -892,8 +893,9 @@ const visitModules = (
892
893
  * @returns {bigint} The mask of available modules after the chunk group
893
894
  */
894
895
  const calculateResultingAvailableModules = chunkGroupInfo => {
895
- if (chunkGroupInfo.resultingAvailableModules !== undefined)
896
+ if (chunkGroupInfo.resultingAvailableModules !== undefined) {
896
897
  return chunkGroupInfo.resultingAvailableModules;
898
+ }
897
899
 
898
900
  let resultingAvailableModules = /** @type {bigint} */ (
899
901
  chunkGroupInfo.minAvailableModules
@@ -1345,8 +1347,9 @@ const buildChunkGraph = (compilation, inputEntrypointsAndModules) => {
1345
1347
  logger.timeEnd("connectChunkGroups");
1346
1348
 
1347
1349
  for (const [chunkGroup, chunkGroupInfo] of chunkGroupInfoMap) {
1348
- for (const chunk of chunkGroup.chunks)
1350
+ for (const chunk of chunkGroup.chunks) {
1349
1351
  chunk.runtime = mergeRuntime(chunk.runtime, chunkGroupInfo.runtime);
1352
+ }
1350
1353
  }
1351
1354
 
1352
1355
  // Cleanup work
@@ -7,6 +7,8 @@
7
7
 
8
8
  /** @typedef {import("../Compiler")} Compiler */
9
9
 
10
+ const PLUGIN_NAME = "AddBuildDependenciesPlugin";
11
+
10
12
  class AddBuildDependenciesPlugin {
11
13
  /**
12
14
  * @param {Iterable<string>} buildDependencies list of build dependencies
@@ -21,12 +23,9 @@ class AddBuildDependenciesPlugin {
21
23
  * @returns {void}
22
24
  */
23
25
  apply(compiler) {
24
- compiler.hooks.compilation.tap(
25
- "AddBuildDependenciesPlugin",
26
- compilation => {
27
- compilation.buildDependencies.addAll(this.buildDependencies);
28
- }
29
- );
26
+ compiler.hooks.compilation.tap(PLUGIN_NAME, compilation => {
27
+ compilation.buildDependencies.addAll(this.buildDependencies);
28
+ });
30
29
  }
31
30
  }
32
31
 
@@ -52,7 +52,7 @@ class IdleFileCachePlugin {
52
52
  let timeSpendInStore = 0;
53
53
  let avgTimeSpendInStore = 0;
54
54
 
55
- /** @type {Map<string | typeof BUILD_DEPENDENCIES_KEY, () => Promise<void>>} */
55
+ /** @type {Map<string | typeof BUILD_DEPENDENCIES_KEY, () => Promise<void | void[]>>} */
56
56
  const pendingIdleTasks = new Map();
57
57
 
58
58
  compiler.cache.hooks.store.tap(
@@ -111,7 +111,7 @@ class IdleFileCachePlugin {
111
111
  }
112
112
  isIdle = false;
113
113
  const reportProgress = ProgressPlugin.getReporter(compiler);
114
- const jobs = Array.from(pendingIdleTasks.values());
114
+ const jobs = [...pendingIdleTasks.values()];
115
115
  if (reportProgress) reportProgress(0, "process pending cache items");
116
116
  const promises = jobs.map(fn => fn());
117
117
  pendingIdleTasks.clear();
@@ -130,7 +130,7 @@ class IdleFileCachePlugin {
130
130
  }
131
131
  );
132
132
 
133
- /** @type {Promise<TODO>} */
133
+ /** @type {Promise<void | void[]>} */
134
134
  let currentIdlePromise = resolvedPromise;
135
135
  let isIdle = false;
136
136
  let isInitialStore = true;
@@ -146,7 +146,10 @@ class IdleFileCachePlugin {
146
146
  promises.push(factory());
147
147
  if (maxCount-- <= 0 || Date.now() > maxTime) break;
148
148
  }
149
- currentIdlePromise = Promise.all(promises);
149
+ currentIdlePromise = Promise.all(
150
+ /** @type {Promise<void>[]} */
151
+ (promises)
152
+ );
150
153
  currentIdlePromise.then(() => {
151
154
  timeSpendInStore += Date.now() - startTime;
152
155
  // Allow to exit the process between
@@ -55,4 +55,5 @@ class MemoryCachePlugin {
55
55
  );
56
56
  }
57
57
  }
58
+
58
59
  module.exports = MemoryCachePlugin;
@@ -139,4 +139,5 @@ class MemoryWithGcCachePlugin {
139
139
  );
140
140
  }
141
141
  }
142
+
142
143
  module.exports = MemoryWithGcCachePlugin;
@@ -13,8 +13,8 @@ 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 */
@@ -292,8 +292,9 @@ class Pack {
292
292
  return pack;
293
293
  };
294
294
  let pack = createNextPack();
295
- if (this.requestsTimeout !== undefined)
295
+ if (this.requestsTimeout !== undefined) {
296
296
  clearTimeout(this.requestsTimeout);
297
+ }
297
298
  for (const identifier of this.requests) {
298
299
  if (identifier === undefined) {
299
300
  if (ignoreNextTimeTick) {
@@ -379,7 +380,9 @@ class Pack {
379
380
  smallUnusedContentSize > MIN_CONTENT_SIZE
380
381
  ) {
381
382
  mergedIndices = smallUnusedContents;
382
- } else return;
383
+ } else {
384
+ return;
385
+ }
383
386
 
384
387
  /** @type {PackContent[] } */
385
388
  const mergedContent = [];
@@ -690,15 +693,17 @@ class PackContentItems {
690
693
  const durationHr = process.hrtime(start);
691
694
  const duration = durationHr[0] * 1000 + durationHr[1] / 1e6;
692
695
  if (duration > 1) {
693
- if (duration > 500)
696
+ if (duration > 500) {
694
697
  logger.error(`Serialization of '${key}': ${duration} ms`);
695
- else if (duration > 50)
698
+ } else if (duration > 50) {
696
699
  logger.warn(`Serialization of '${key}': ${duration} ms`);
697
- else if (duration > 10)
700
+ } else if (duration > 10) {
698
701
  logger.info(`Serialization of '${key}': ${duration} ms`);
699
- else if (duration > 5)
702
+ } else if (duration > 5) {
700
703
  logger.log(`Serialization of '${key}': ${duration} ms`);
701
- else logger.debug(`Serialization of '${key}': ${duration} ms`);
704
+ } else {
705
+ logger.debug(`Serialization of '${key}': ${duration} ms`);
706
+ }
702
707
  }
703
708
  } catch (err) {
704
709
  rollback(s);
@@ -765,15 +770,17 @@ class PackContentItems {
765
770
  const durationHr = process.hrtime(start);
766
771
  const duration = durationHr[0] * 1000 + durationHr[1] / 1e6;
767
772
  if (duration > 1) {
768
- if (duration > 100)
773
+ if (duration > 100) {
769
774
  logger.error(`Deserialization of '${key}': ${duration} ms`);
770
- else if (duration > 20)
775
+ } else if (duration > 20) {
771
776
  logger.warn(`Deserialization of '${key}': ${duration} ms`);
772
- else if (duration > 5)
777
+ } else if (duration > 5) {
773
778
  logger.info(`Deserialization of '${key}': ${duration} ms`);
774
- else if (duration > 2)
779
+ } else if (duration > 2) {
775
780
  logger.log(`Deserialization of '${key}': ${duration} ms`);
776
- else logger.debug(`Deserialization of '${key}': ${duration} ms`);
781
+ } else {
782
+ logger.debug(`Deserialization of '${key}': ${duration} ms`);
783
+ }
777
784
  }
778
785
  map.set(key, value);
779
786
  key = read();
@@ -1202,7 +1209,7 @@ class PackFileCacheStrategy {
1202
1209
  }
1203
1210
  logger.time("check build dependencies");
1204
1211
  return Promise.all([
1205
- new Promise((resolve, reject) => {
1212
+ new Promise((resolve, _reject) => {
1206
1213
  this.fileSystemInfo.checkSnapshotValid(
1207
1214
  packContainer.buildSnapshot,
1208
1215
  (err, valid) => {
@@ -1224,7 +1231,7 @@ class PackFileCacheStrategy {
1224
1231
  }
1225
1232
  );
1226
1233
  }),
1227
- new Promise((resolve, reject) => {
1234
+ new Promise((resolve, _reject) => {
1228
1235
  this.fileSystemInfo.checkSnapshotValid(
1229
1236
  packContainer.resolveBuildDependenciesSnapshot,
1230
1237
  (err, valid) => {
@@ -1290,8 +1297,9 @@ class PackFileCacheStrategy {
1290
1297
  pack.maxAge = this.maxAge;
1291
1298
  this.buildSnapshot = buildSnapshot;
1292
1299
  if (buildDependencies) this.buildDependencies = buildDependencies;
1293
- if (newBuildDependencies)
1300
+ if (newBuildDependencies) {
1294
1301
  this.newBuildDependencies.addAll(newBuildDependencies);
1302
+ }
1295
1303
  this.resolveResults = resolveResults;
1296
1304
  this.resolveBuildDependenciesSnapshot =
1297
1305
  resolveBuildDependenciesSnapshot;
@@ -1370,9 +1378,7 @@ class PackFileCacheStrategy {
1370
1378
  if (newBuildDependencies.size > 0 || !this.buildSnapshot) {
1371
1379
  if (reportProgress) reportProgress(0.5, "resolve build dependencies");
1372
1380
  this.logger.debug(
1373
- `Capturing build dependencies... (${Array.from(
1374
- newBuildDependencies
1375
- ).join(", ")})`
1381
+ `Capturing build dependencies... (${[...newBuildDependencies].join(", ")})`
1376
1382
  );
1377
1383
  promise = new Promise(
1378
1384
  /**
@@ -219,15 +219,18 @@ class ResolverCachePlugin {
219
219
  const resolveResult = withYield ? yieldResult : result;
220
220
  // since we intercept resolve hook
221
221
  // we still can get result in callback
222
- if (withYield && result)
223
- /** @type {ResolveRequest[]} */ (yieldResult).push(result);
222
+ if (withYield && result) {
223
+ /** @type {ResolveRequest[]} */
224
+ (yieldResult).push(result);
225
+ }
224
226
  if (!snapshot) {
225
- if (resolveResult)
227
+ if (resolveResult) {
226
228
  return callback(
227
229
  null,
228
230
  /** @type {ResolveRequest} */
229
231
  (resolveResult)
230
232
  );
233
+ }
231
234
  return callback();
232
235
  }
233
236
  itemCache.store(
@@ -238,12 +241,13 @@ class ResolverCachePlugin {
238
241
  ),
239
242
  storeErr => {
240
243
  if (storeErr) return callback(storeErr);
241
- if (resolveResult)
244
+ if (resolveResult) {
242
245
  return callback(
243
246
  null,
244
247
  /** @type {ResolveRequest} */
245
248
  (resolveResult)
246
249
  );
250
+ }
247
251
  callback();
248
252
  }
249
253
  );
@@ -266,8 +270,9 @@ class ResolverCachePlugin {
266
270
  if (
267
271
  /** @type {ResolveOptions & { cache: boolean }} */
268
272
  (options).cache !== true
269
- )
273
+ ) {
270
274
  return;
275
+ }
271
276
  const optionsIdent = objectToString(userOptions, false);
272
277
  const cacheWithContext =
273
278
  options.cacheWithContext !== undefined
@@ -323,13 +328,14 @@ class ResolverCachePlugin {
323
328
  if (err) {
324
329
  callback(err);
325
330
  } else {
326
- if (result)
331
+ if (result) {
327
332
  for (const r of /** @type {ResolveRequest[]} */ (
328
333
  result
329
334
  )) {
330
335
  /** @type {Yield} */
331
336
  (resolveContext.yield)(r);
332
337
  }
338
+ }
333
339
  callback(null, null);
334
340
  }
335
341
  yields = undefined;
@@ -345,11 +351,13 @@ class ResolverCachePlugin {
345
351
  for (let i = 0; i < definedCallbacks.length; i++) {
346
352
  const cb = definedCallbacks[i];
347
353
  const yield_ = /** @type {Yield[]} */ (yields)[i];
348
- if (result)
354
+ if (result) {
349
355
  for (const r of /** @type {ResolveRequest[]} */ (
350
356
  result
351
- ))
357
+ )) {
352
358
  yield_(r);
359
+ }
360
+ }
353
361
  cb(null, null);
354
362
  }
355
363
  }