webpack 5.93.0 → 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 (343) 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 +33 -20
  28. package/lib/ContextModuleFactory.js +89 -44
  29. package/lib/ContextReplacementPlugin.js +10 -9
  30. package/lib/DefinePlugin.js +75 -68
  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 +126 -69
  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/WarnDeprecatedOptionPlugin.js +0 -1
  95. package/lib/WatchIgnorePlugin.js +26 -9
  96. package/lib/Watching.js +10 -5
  97. package/lib/WebpackOptionsApply.js +84 -62
  98. package/lib/asset/AssetGenerator.js +107 -42
  99. package/lib/asset/AssetModulesPlugin.js +29 -23
  100. package/lib/asset/AssetSourceGenerator.js +2 -7
  101. package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
  102. package/lib/buildChunkGraph.js +14 -19
  103. package/lib/cache/IdleFileCachePlugin.js +4 -4
  104. package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
  105. package/lib/cache/PackFileCacheStrategy.js +51 -50
  106. package/lib/cache/ResolverCachePlugin.js +6 -6
  107. package/lib/cache/mergeEtags.js +16 -21
  108. package/lib/cli.js +148 -104
  109. package/lib/config/browserslistTargetHandler.js +16 -13
  110. package/lib/config/defaults.js +31 -28
  111. package/lib/config/normalization.js +335 -344
  112. package/lib/config/target.js +42 -52
  113. package/lib/container/ContainerEntryModule.js +2 -2
  114. package/lib/container/ContainerPlugin.js +1 -1
  115. package/lib/container/RemoteRuntimeModule.js +11 -8
  116. package/lib/container/options.js +18 -4
  117. package/lib/css/CssExportsGenerator.js +26 -24
  118. package/lib/css/CssGenerator.js +9 -4
  119. package/lib/css/CssLoadingRuntimeModule.js +10 -10
  120. package/lib/css/CssModulesPlugin.js +127 -47
  121. package/lib/css/CssParser.js +20 -18
  122. package/lib/css/walkCssTokens.js +80 -95
  123. package/lib/debug/ProfilingPlugin.js +19 -20
  124. package/lib/dependencies/AMDDefineDependency.js +1 -1
  125. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
  126. package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
  127. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
  128. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  129. package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
  130. package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
  131. package/lib/dependencies/CommonJsExportsDependency.js +0 -1
  132. package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
  133. package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
  134. package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
  135. package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
  136. package/lib/dependencies/ConstDependency.js +1 -1
  137. package/lib/dependencies/ContextDependency.js +1 -1
  138. package/lib/dependencies/ContextDependencyHelpers.js +31 -34
  139. package/lib/dependencies/ContextElementDependency.js +2 -2
  140. package/lib/dependencies/CriticalDependencyWarning.js +1 -1
  141. package/lib/dependencies/CssExportDependency.js +7 -7
  142. package/lib/dependencies/CssImportDependency.js +0 -2
  143. package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
  144. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
  145. package/lib/dependencies/CssUrlDependency.js +4 -5
  146. package/lib/dependencies/DynamicExports.js +5 -5
  147. package/lib/dependencies/ExportsInfoDependency.js +1 -2
  148. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
  149. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
  150. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
  151. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  152. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
  153. package/lib/dependencies/HarmonyExports.js +2 -2
  154. package/lib/dependencies/HarmonyImportDependency.js +2 -4
  155. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
  156. package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
  157. package/lib/dependencies/ImportDependency.js +1 -1
  158. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
  159. package/lib/dependencies/ImportMetaPlugin.js +11 -13
  160. package/lib/dependencies/ImportParserPlugin.js +39 -44
  161. package/lib/dependencies/JsonExportsDependency.js +22 -18
  162. package/lib/dependencies/LoaderPlugin.js +47 -36
  163. package/lib/dependencies/LocalModule.js +1 -1
  164. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  165. package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
  166. package/lib/dependencies/ProvidedDependency.js +1 -1
  167. package/lib/dependencies/PureExpressionDependency.js +6 -6
  168. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  169. package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
  170. package/lib/dependencies/SystemPlugin.js +1 -1
  171. package/lib/dependencies/URLDependency.js +3 -3
  172. package/lib/dependencies/URLPlugin.js +66 -12
  173. package/lib/dependencies/WorkerPlugin.js +25 -24
  174. package/lib/dependencies/processExportInfo.js +3 -1
  175. package/lib/electron/ElectronTargetPlugin.js +1 -0
  176. package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
  177. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
  178. package/lib/formatLocation.js +1 -2
  179. package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
  180. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  181. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
  182. package/lib/hmr/LazyCompilationPlugin.js +27 -12
  183. package/lib/hmr/lazyCompilationBackend.js +64 -40
  184. package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
  185. package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
  186. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  187. package/lib/ids/HashedModuleIdsPlugin.js +5 -1
  188. package/lib/ids/IdHelpers.js +29 -39
  189. package/lib/ids/SyncModuleIdsPlugin.js +7 -2
  190. package/lib/index.js +1 -5
  191. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
  192. package/lib/javascript/BasicEvaluatedExpression.js +4 -19
  193. package/lib/javascript/ChunkHelpers.js +1 -1
  194. package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
  195. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
  196. package/lib/javascript/JavascriptGenerator.js +23 -7
  197. package/lib/javascript/JavascriptModulesPlugin.js +91 -69
  198. package/lib/javascript/JavascriptParser.js +179 -200
  199. package/lib/javascript/JavascriptParserHelpers.js +20 -21
  200. package/lib/javascript/StartupHelpers.js +41 -13
  201. package/lib/json/JsonGenerator.js +7 -13
  202. package/lib/json/JsonModulesPlugin.js +1 -4
  203. package/lib/json/JsonParser.js +5 -3
  204. package/lib/library/AmdLibraryPlugin.js +12 -16
  205. package/lib/library/AssignLibraryPlugin.js +8 -10
  206. package/lib/library/EnableLibraryPlugin.js +15 -14
  207. package/lib/library/JsonpLibraryPlugin.js +2 -1
  208. package/lib/library/ModernModuleLibraryPlugin.js +8 -6
  209. package/lib/library/ModuleLibraryPlugin.js +2 -1
  210. package/lib/library/SystemLibraryPlugin.js +2 -1
  211. package/lib/library/UmdLibraryPlugin.js +66 -92
  212. package/lib/logging/Logger.js +32 -4
  213. package/lib/logging/createConsoleLogger.js +12 -13
  214. package/lib/logging/runtime.js +7 -8
  215. package/lib/logging/truncateArgs.js +5 -8
  216. package/lib/node/NodeWatchFileSystem.js +3 -18
  217. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  218. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
  219. package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
  220. package/lib/node/nodeConsole.js +22 -22
  221. package/lib/optimize/AggressiveMergingPlugin.js +2 -4
  222. package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
  223. package/lib/optimize/ConcatenatedModule.js +80 -48
  224. package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
  225. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
  226. package/lib/optimize/InnerGraph.js +17 -17
  227. package/lib/optimize/InnerGraphPlugin.js +8 -7
  228. package/lib/optimize/LimitChunkCountPlugin.js +2 -3
  229. package/lib/optimize/MangleExportsPlugin.js +1 -0
  230. package/lib/optimize/MinMaxSizeWarning.js +1 -1
  231. package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
  232. package/lib/optimize/RealContentHashPlugin.js +7 -10
  233. package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
  234. package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
  235. package/lib/optimize/SplitChunksPlugin.js +34 -30
  236. package/lib/performance/SizeLimitsPlugin.js +2 -2
  237. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
  238. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
  239. package/lib/rules/BasicEffectRulePlugin.js +3 -1
  240. package/lib/rules/BasicMatcherRulePlugin.js +3 -1
  241. package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
  242. package/lib/rules/RuleSetCompiler.js +41 -22
  243. package/lib/rules/UseEffectRulePlugin.js +36 -32
  244. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  245. package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
  246. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  247. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
  248. package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
  249. package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
  250. package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
  251. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
  252. package/lib/schemes/DataUriPlugin.js +1 -1
  253. package/lib/schemes/HttpUriPlugin.js +241 -126
  254. package/lib/serialization/BinaryMiddleware.js +44 -28
  255. package/lib/serialization/DateObjectSerializer.js +1 -0
  256. package/lib/serialization/ErrorObjectSerializer.js +2 -0
  257. package/lib/serialization/FileMiddleware.js +154 -106
  258. package/lib/serialization/MapObjectSerializer.js +2 -1
  259. package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
  260. package/lib/serialization/ObjectMiddleware.js +52 -56
  261. package/lib/serialization/PlainObjectSerializer.js +32 -6
  262. package/lib/serialization/RegExpObjectSerializer.js +1 -0
  263. package/lib/serialization/Serializer.js +4 -5
  264. package/lib/serialization/SerializerMiddleware.js +6 -6
  265. package/lib/serialization/SetObjectSerializer.js +2 -1
  266. package/lib/sharing/ConsumeSharedPlugin.js +116 -97
  267. package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
  268. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  269. package/lib/sharing/ProvideSharedPlugin.js +2 -2
  270. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  271. package/lib/sharing/utils.js +15 -27
  272. package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
  273. package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
  274. package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
  275. package/lib/stats/StatsFactory.js +127 -56
  276. package/lib/stats/StatsPrinter.js +75 -44
  277. package/lib/util/ArrayHelpers.js +8 -4
  278. package/lib/util/ArrayQueue.js +1 -1
  279. package/lib/util/AsyncQueue.js +31 -12
  280. package/lib/util/IterableHelpers.js +3 -4
  281. package/lib/util/LazyBucketSortedSet.js +60 -44
  282. package/lib/util/LazySet.js +1 -0
  283. package/lib/util/MapHelpers.js +1 -3
  284. package/lib/util/ParallelismFactorCalculator.js +1 -1
  285. package/lib/util/Queue.js +1 -1
  286. package/lib/util/Semaphore.js +4 -7
  287. package/lib/util/SetHelpers.js +5 -5
  288. package/lib/util/SortableSet.js +4 -3
  289. package/lib/util/StackedCacheMap.js +4 -6
  290. package/lib/util/StackedMap.js +1 -3
  291. package/lib/util/StringXor.js +0 -5
  292. package/lib/util/TupleQueue.js +1 -1
  293. package/lib/util/TupleSet.js +15 -5
  294. package/lib/util/URLAbsoluteSpecifier.js +7 -7
  295. package/lib/util/WeakTupleMap.js +19 -21
  296. package/lib/util/binarySearchBounds.js +5 -12
  297. package/lib/util/chainedImports.js +1 -1
  298. package/lib/util/cleverMerge.js +21 -19
  299. package/lib/util/comparators.js +57 -52
  300. package/lib/util/compileBooleanMatcher.js +3 -6
  301. package/lib/util/conventions.js +8 -11
  302. package/lib/util/createHash.js +9 -6
  303. package/lib/util/deprecation.js +22 -12
  304. package/lib/util/deterministicGrouping.js +19 -26
  305. package/lib/util/findGraphRoots.js +2 -2
  306. package/lib/util/fs.js +31 -31
  307. package/lib/util/hash/md4.js +2 -2
  308. package/lib/util/hash/wasm-hash.js +7 -7
  309. package/lib/util/hash/xxhash64.js +2 -2
  310. package/lib/util/identifier.js +81 -59
  311. package/lib/util/memoize.js +8 -10
  312. package/lib/util/mergeScope.js +6 -9
  313. package/lib/util/nonNumericOnlyHash.js +2 -2
  314. package/lib/util/numberHash.js +1 -6
  315. package/lib/util/objectToMap.js +0 -1
  316. package/lib/util/propertyAccess.js +2 -5
  317. package/lib/util/propertyName.js +1 -3
  318. package/lib/util/registerExternalSerializer.js +1 -1
  319. package/lib/util/runtime.js +103 -113
  320. package/lib/util/semver.js +29 -27
  321. package/lib/util/serialization.js +16 -1
  322. package/lib/util/smartGrouping.js +5 -5
  323. package/lib/util/source.js +1 -1
  324. package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
  325. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
  326. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
  327. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
  328. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
  329. package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
  330. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  331. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  332. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
  333. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
  334. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  335. package/package.json +15 -14
  336. package/schemas/WebpackOptions.check.js +1 -1
  337. package/schemas/WebpackOptions.json +1 -0
  338. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  339. package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
  340. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  341. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  342. package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
  343. package/types.d.ts +667 -347
@@ -119,7 +119,7 @@ class LimitChunkCountPlugin {
119
119
  /** @type {Map<Chunk, Set<ChunkCombination>>} */
120
120
  const combinationsByChunk = new Map();
121
121
 
122
- orderedChunks.forEach((b, bIdx) => {
122
+ for (const [bIdx, b] of orderedChunks.entries()) {
123
123
  // create combination pairs with size and integrated size
124
124
  for (let aIdx = 0; aIdx < bIdx; aIdx++) {
125
125
  const a = orderedChunks[aIdx];
@@ -149,8 +149,7 @@ class LimitChunkCountPlugin {
149
149
  addToSetMap(combinationsByChunk, a, c);
150
150
  addToSetMap(combinationsByChunk, b, c);
151
151
  }
152
- return combinations;
153
- });
152
+ }
154
153
 
155
154
  // list of modified chunks during this run
156
155
  // combinations affected by this change are skipped to allow
@@ -149,6 +149,7 @@ class MangleExportsPlugin {
149
149
  constructor(deterministic) {
150
150
  this._deterministic = deterministic;
151
151
  }
152
+
152
153
  /**
153
154
  * Apply the plugin
154
155
  * @param {Compiler} compiler the compiler instance
@@ -23,7 +23,7 @@ class MinMaxSizeWarning extends WebpackError {
23
23
  : `Cache group ${keys[0]}`;
24
24
  }
25
25
  super(
26
- `SplitChunksPlugin\n` +
26
+ "SplitChunksPlugin\n" +
27
27
  `${keysMessage}\n` +
28
28
  `Configured minSize (${SizeFormatHelpers.formatSize(minSize)}) is ` +
29
29
  `bigger than maxSize (${SizeFormatHelpers.formatSize(maxSize)}).\n` +
@@ -45,19 +45,9 @@ const ConcatenatedModule = require("./ConcatenatedModule");
45
45
  * @param {string} msg message
46
46
  * @returns {string} formatted message
47
47
  */
48
- const formatBailoutReason = msg => {
49
- return "ModuleConcatenation bailout: " + msg;
50
- };
48
+ const formatBailoutReason = msg => `ModuleConcatenation bailout: ${msg}`;
51
49
 
52
50
  class ModuleConcatenationPlugin {
53
- /**
54
- * @param {TODO} options options
55
- */
56
- constructor(options) {
57
- if (typeof options !== "object") options = {};
58
- this.options = options;
59
- }
60
-
61
51
  /**
62
52
  * Apply the plugin
63
53
  * @param {Compiler} compiler the compiler instance
@@ -130,15 +120,14 @@ class ModuleConcatenationPlugin {
130
120
  requestShortener
131
121
  )}${reasonWithPrefix}`
132
122
  );
133
- } else {
134
- return formatBailoutReason(
135
- `Cannot concat with ${module.readableIdentifier(
136
- requestShortener
137
- )} because of ${problem.readableIdentifier(
138
- requestShortener
139
- )}${reasonWithPrefix}`
140
- );
141
123
  }
124
+ return formatBailoutReason(
125
+ `Cannot concat with ${module.readableIdentifier(
126
+ requestShortener
127
+ )} because of ${problem.readableIdentifier(
128
+ requestShortener
129
+ )}${reasonWithPrefix}`
130
+ );
142
131
  };
143
132
 
144
133
  compilation.hooks.optimizeChunkModules.tapAsync(
@@ -170,13 +159,13 @@ class ModuleConcatenationPlugin {
170
159
 
171
160
  // Must not be an async module
172
161
  if (moduleGraph.isAsync(module)) {
173
- setBailoutReason(module, `Module is async`);
162
+ setBailoutReason(module, "Module is async");
174
163
  continue;
175
164
  }
176
165
 
177
166
  // Must be in strict mode
178
167
  if (!(/** @type {BuildInfo} */ (module.buildInfo).strict)) {
179
- setBailoutReason(module, `Module is not in strict mode`);
168
+ setBailoutReason(module, "Module is not in strict mode");
180
169
  continue;
181
170
  }
182
171
 
@@ -189,11 +178,10 @@ class ModuleConcatenationPlugin {
189
178
  // Exports must be known (and not dynamic)
190
179
  const exportsInfo = moduleGraph.getExportsInfo(module);
191
180
  const relevantExports = exportsInfo.getRelevantExports(undefined);
192
- const unknownReexports = relevantExports.filter(exportInfo => {
193
- return (
181
+ const unknownReexports = relevantExports.filter(
182
+ exportInfo =>
194
183
  exportInfo.isReexport() && !exportInfo.getTarget(moduleGraph)
195
- );
196
- });
184
+ );
197
185
  if (unknownReexports.length > 0) {
198
186
  setBailoutReason(
199
187
  module,
@@ -210,9 +198,7 @@ class ModuleConcatenationPlugin {
210
198
 
211
199
  // Root modules must have a static list of exports
212
200
  const unknownProvidedExports = relevantExports.filter(
213
- exportInfo => {
214
- return exportInfo.provided !== true;
215
- }
201
+ exportInfo => exportInfo.provided !== true
216
202
  );
217
203
  if (unknownProvidedExports.length > 0) {
218
204
  setBailoutReason(
@@ -245,12 +231,11 @@ class ModuleConcatenationPlugin {
245
231
  // modules with lower depth are more likely suited as roots
246
232
  // this improves performance, because modules already selected as inner are skipped
247
233
  logger.time("sort relevant modules");
248
- relevantModules.sort((a, b) => {
249
- return (
234
+ relevantModules.sort(
235
+ (a, b) =>
250
236
  /** @type {number} */ (moduleGraph.getDepth(a)) -
251
237
  /** @type {number} */ (moduleGraph.getDepth(b))
252
- );
253
- });
238
+ );
254
239
  logger.timeEnd("sort relevant modules");
255
240
 
256
241
  /** @type {Statistics} */
@@ -279,7 +264,7 @@ class ModuleConcatenationPlugin {
279
264
  // TODO reconsider that when it's only used in a different runtime
280
265
  if (usedAsInner.has(currentRoot)) continue;
281
266
 
282
- let chunkRuntime = undefined;
267
+ let chunkRuntime;
283
268
  for (const r of chunkGraph.getModuleRuntimes(currentRoot)) {
284
269
  chunkRuntime = mergeRuntimeOwned(chunkRuntime, r);
285
270
  }
@@ -376,11 +361,9 @@ class ModuleConcatenationPlugin {
376
361
  // to get the biggest groups possible. Used modules are marked with usedModules
377
362
  // TODO: Allow to reuse existing configuration while trying to add dependencies.
378
363
  // This would improve performance. O(n^2) -> O(n)
379
- logger.time(`sort concat configurations`);
380
- concatConfigurations.sort((a, b) => {
381
- return b.modules.size - a.modules.size;
382
- });
383
- logger.timeEnd(`sort concat configurations`);
364
+ logger.time("sort concat configurations");
365
+ concatConfigurations.sort((a, b) => b.modules.size - a.modules.size);
366
+ logger.timeEnd("sort concat configurations");
384
367
  const usedModules = new Set();
385
368
 
386
369
  logger.time("create concatenated modules");
@@ -399,7 +382,7 @@ class ModuleConcatenationPlugin {
399
382
 
400
383
  // Create a new ConcatenatedModule
401
384
  ConcatenatedModule.getCompilationHooks(compilation);
402
- let newModule = ConcatenatedModule.create(
385
+ const newModule = ConcatenatedModule.create(
403
386
  rootModule,
404
387
  modules,
405
388
  concatConfiguration.runtime,
@@ -448,15 +431,12 @@ class ModuleConcatenationPlugin {
448
431
  moduleGraph.copyOutgoingModuleConnections(
449
432
  m,
450
433
  newModule,
451
- c => {
452
- return (
453
- c.originModule === m &&
454
- !(
455
- c.dependency instanceof HarmonyImportDependency &&
456
- modules.has(c.module)
457
- )
458
- );
459
- }
434
+ c =>
435
+ c.originModule === m &&
436
+ !(
437
+ c.dependency instanceof HarmonyImportDependency &&
438
+ modules.has(c.module)
439
+ )
460
440
  );
461
441
  // remove module from chunk
462
442
  for (const chunk of chunkGraph.getModuleChunksIterable(
@@ -639,11 +619,11 @@ class ModuleConcatenationPlugin {
639
619
  incomingConnections.get(null) || incomingConnections.get(undefined);
640
620
  if (incomingConnectionsFromNonModules) {
641
621
  const activeNonModulesConnections =
642
- incomingConnectionsFromNonModules.filter(connection => {
622
+ incomingConnectionsFromNonModules.filter(connection =>
643
623
  // We are not interested in inactive connections
644
624
  // or connections without dependency
645
- return connection.isActive(runtime);
646
- });
625
+ connection.isActive(runtime)
626
+ );
647
627
  if (activeNonModulesConnections.length > 0) {
648
628
  /**
649
629
  * @param {RequestShortener} requestShortener request shortener
@@ -676,7 +656,7 @@ class ModuleConcatenationPlugin {
676
656
  if (chunkGraph.getNumberOfModuleChunks(originModule) === 0) continue;
677
657
 
678
658
  // We don't care for connections from other runtimes
679
- let originRuntime = undefined;
659
+ let originRuntime;
680
660
  for (const r of chunkGraph.getModuleRuntimes(originModule)) {
681
661
  originRuntime = mergeRuntimeOwned(originRuntime, r);
682
662
  }
@@ -743,19 +723,20 @@ class ModuleConcatenationPlugin {
743
723
  */
744
724
  const problem = requestShortener => {
745
725
  const names = Array.from(nonHarmonyConnections)
746
- .map(([originModule, connections]) => {
747
- return `${originModule.readableIdentifier(
748
- requestShortener
749
- )} (referenced with ${Array.from(
750
- new Set(
751
- connections
752
- .map(c => c.dependency && c.dependency.type)
753
- .filter(Boolean)
726
+ .map(
727
+ ([originModule, connections]) =>
728
+ `${originModule.readableIdentifier(
729
+ requestShortener
730
+ )} (referenced with ${Array.from(
731
+ new Set(
732
+ connections
733
+ .map(c => c.dependency && c.dependency.type)
734
+ .filter(Boolean)
735
+ )
754
736
  )
755
- )
756
- .sort()
757
- .join(", ")})`;
758
- })
737
+ .sort()
738
+ .join(", ")})`
739
+ )
759
740
  .sort();
760
741
  return `Module ${module.readableIdentifier(
761
742
  requestShortener
@@ -779,19 +760,15 @@ class ModuleConcatenationPlugin {
779
760
  /** @type {false | RuntimeSpec} */
780
761
  let currentRuntimeCondition = false;
781
762
  for (const connection of connections) {
782
- const runtimeCondition = filterRuntime(runtime, runtime => {
783
- return connection.isTargetActive(runtime);
784
- });
763
+ const runtimeCondition = filterRuntime(runtime, runtime =>
764
+ connection.isTargetActive(runtime)
765
+ );
785
766
  if (runtimeCondition === false) continue;
786
767
  if (runtimeCondition === true) continue outer;
787
- if (currentRuntimeCondition !== false) {
788
- currentRuntimeCondition = mergeRuntime(
789
- currentRuntimeCondition,
790
- runtimeCondition
791
- );
792
- } else {
793
- currentRuntimeCondition = runtimeCondition;
794
- }
768
+ currentRuntimeCondition =
769
+ currentRuntimeCondition !== false
770
+ ? mergeRuntime(currentRuntimeCondition, runtimeCondition)
771
+ : runtimeCondition;
795
772
  }
796
773
  if (currentRuntimeCondition !== false) {
797
774
  otherRuntimeConnections.push({
@@ -805,8 +782,8 @@ class ModuleConcatenationPlugin {
805
782
  * @param {RequestShortener} requestShortener request shortener
806
783
  * @returns {string} problem description
807
784
  */
808
- const problem = requestShortener => {
809
- return `Module ${module.readableIdentifier(
785
+ const problem = requestShortener =>
786
+ `Module ${module.readableIdentifier(
810
787
  requestShortener
811
788
  )} is runtime-dependent referenced by these modules: ${Array.from(
812
789
  otherRuntimeConnections,
@@ -819,7 +796,6 @@ class ModuleConcatenationPlugin {
819
796
  /** @type {RuntimeSpec} */ (runtimeCondition)
820
797
  )})`
821
798
  ).join(", ")}`;
822
- };
823
799
  statistics.incorrectRuntimeCondition++;
824
800
  failureCache.set(module, problem); // cache failures for performance
825
801
  return problem;
@@ -61,9 +61,7 @@ const mapAndDeduplicateBuffers = (input, fn) => {
61
61
  * @param {string} str String to quote
62
62
  * @returns {string} Escaped string
63
63
  */
64
- const quoteMeta = str => {
65
- return str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
66
- };
64
+ const quoteMeta = str => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
67
65
 
68
66
  const cachedSourceMap = new WeakMap();
69
67
 
@@ -215,7 +213,7 @@ class RealContentHashPlugin {
215
213
  [asset.referencedHashes, asset.ownHashes] =
216
214
  await cacheAnalyse.providePromise(name, etag, () => {
217
215
  const referencedHashes = new Set();
218
- let ownHashes = new Set();
216
+ const ownHashes = new Set();
219
217
  const inContent = content.match(hashRegExp);
220
218
  if (inContent) {
221
219
  for (const hash of inContent) {
@@ -256,7 +254,7 @@ ${referencingAssets
256
254
  })
257
255
  .join("\n")}`);
258
256
  compilation.errors.push(err);
259
- return undefined;
257
+ return;
260
258
  }
261
259
  const hashes = new Set();
262
260
  for (const { referencedHashes, ownHashes } of assets) {
@@ -369,7 +367,7 @@ ${referencingAssets
369
367
  (asset.referencedHashes)
370
368
  ).some(hash => hashToNewHash.get(hash) !== hash)
371
369
  ) {
372
- const identifier = asset.name + "|without-own";
370
+ const identifier = `${asset.name}|without-own`;
373
371
  const etag = getEtag(asset);
374
372
  asset.newSourceWithoutOwn = await cacheGenerate.providePromise(
375
373
  identifier,
@@ -410,11 +408,10 @@ ${referencingAssets
410
408
  return asset.newSourceWithoutOwn
411
409
  ? asset.newSourceWithoutOwn.buffer()
412
410
  : asset.source.buffer();
413
- } else {
414
- return asset.newSource
415
- ? asset.newSource.buffer()
416
- : asset.source.buffer();
417
411
  }
412
+ return asset.newSource
413
+ ? asset.newSource.buffer()
414
+ : asset.source.buffer();
418
415
  });
419
416
  let newHash = hooks.updateHash.call(assetsContent, oldHash);
420
417
  if (!newHash) {
@@ -41,7 +41,7 @@ function* getModulesFromMask(mask, ordinalModules) {
41
41
  // Consider the last 32 bits, since that's what Math.clz32 can handle
42
42
  let last32 = Number(BigInt.asUintN(32, mask));
43
43
  while (last32 > 0) {
44
- let last = Math.clz32(last32);
44
+ const last = Math.clz32(last32);
45
45
  // The number of trailing zeros is the number trimmed off the input mask + 31 - the number of leading zeros
46
46
  // The 32 is baked into the initial value of offset
47
47
  const moduleIndex = offset - last;
@@ -148,7 +148,7 @@ class RemoveParentModulesPlugin {
148
148
  availableModulesMask = parentMask;
149
149
  changed = true;
150
150
  } else {
151
- let newMask = availableModulesMask & parentMask;
151
+ const newMask = availableModulesMask & parentMask;
152
152
  if (newMask !== availableModulesMask) {
153
153
  changed = true;
154
154
  availableModulesMask = newMask;
@@ -177,7 +177,7 @@ class RemoveParentModulesPlugin {
177
177
  chunk.groupsIterable,
178
178
  chunkGroup => availableModulesMap.get(chunkGroup)
179
179
  );
180
- if (availableModulesSets.some(s => s === undefined)) continue; // No info about this chunk group
180
+ if (availableModulesSets.includes(undefined)) continue; // No info about this chunk group
181
181
 
182
182
  const availableModulesMask = intersectMasks(availableModulesSets);
183
183
  const toRemoveMask = chunkMask & availableModulesMask;
@@ -23,6 +23,7 @@ const formatLocation = require("../formatLocation");
23
23
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
24
24
  /** @typedef {import("../Module")} Module */
25
25
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
26
+ /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
26
27
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
27
28
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
28
29
 
@@ -57,7 +58,7 @@ const globToRegexp = (glob, cache) => {
57
58
  }
58
59
  const baseRegexp = glob2regexp(glob, { globstar: true, extended: true });
59
60
  const regexpSource = baseRegexp.source;
60
- const regexp = new RegExp("^(\\./)?" + regexpSource.slice(1));
61
+ const regexp = new RegExp(`^(\\./)?${regexpSource.slice(1)}`);
61
62
  cache.set(glob, regexp);
62
63
  return regexp;
63
64
  };
@@ -71,6 +72,7 @@ class SideEffectsFlagPlugin {
71
72
  constructor(analyseSource = true) {
72
73
  this._analyseSource = analyseSource;
73
74
  }
75
+
74
76
  /**
75
77
  * Apply the plugin
76
78
  * @param {Compiler} compiler the compiler instance
@@ -321,7 +323,9 @@ class SideEffectsFlagPlugin {
321
323
  ? [...exportName, ...ids.slice(1)]
322
324
  : ids.slice(1)
323
325
  );
324
- return moduleGraph.getConnection(dep);
326
+ return /** @type {ModuleGraphConnection} */ (
327
+ moduleGraph.getConnection(dep)
328
+ );
325
329
  }
326
330
  );
327
331
  continue;
@@ -28,11 +28,10 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
28
28
  /** @typedef {import("../../declarations/WebpackOptions").Output} OutputOptions */
29
29
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
30
30
  /** @typedef {import("../ChunkGroup")} ChunkGroup */
31
- /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
32
- /** @typedef {import("../Compilation").PathData} PathData */
33
31
  /** @typedef {import("../Compiler")} Compiler */
34
32
  /** @typedef {import("../Module")} Module */
35
33
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
34
+ /** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
36
35
  /** @typedef {import("../util/deterministicGrouping").GroupedItems<Module>} DeterministicGroupingGroupedItemsForModule */
37
36
  /** @typedef {import("../util/deterministicGrouping").Options<Module>} DeterministicGroupingOptionsForModule */
38
37
 
@@ -67,7 +66,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
67
66
  * @property {number=} minChunks
68
67
  * @property {number=} maxAsyncRequests
69
68
  * @property {number=} maxInitialRequests
70
- * @property {(string | function(PathData, AssetInfo=): string)=} filename
69
+ * @property {TemplatePath=} filename
71
70
  * @property {string=} idHint
72
71
  * @property {string=} automaticNameDelimiter
73
72
  * @property {boolean=} reuseExistingChunk
@@ -89,7 +88,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
89
88
  * @property {number=} minChunks
90
89
  * @property {number=} maxAsyncRequests
91
90
  * @property {number=} maxInitialRequests
92
- * @property {(string | function(PathData, AssetInfo=): string)=} filename
91
+ * @property {TemplatePath=} filename
93
92
  * @property {string=} idHint
94
93
  * @property {string} automaticNameDelimiter
95
94
  * @property {boolean} reuseExistingChunk
@@ -144,7 +143,7 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
144
143
  * @property {number} maxAsyncRequests
145
144
  * @property {number} maxInitialRequests
146
145
  * @property {boolean} hidePathInfo
147
- * @property {string | function(PathData, AssetInfo=): string} filename
146
+ * @property {TemplatePath} filename
148
147
  * @property {string} automaticNameDelimiter
149
148
  * @property {GetCacheGroups} getCacheGroups
150
149
  * @property {GetName} getName
@@ -167,9 +166,8 @@ const MinMaxSizeWarning = require("./MinMaxSizeWarning");
167
166
  const defaultGetName = /** @type {GetName} */ (() => {});
168
167
 
169
168
  const deterministicGroupingForModules =
170
- /** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */ (
171
- deterministicGrouping
172
- );
169
+ /** @type {function(DeterministicGroupingOptionsForModule): DeterministicGroupingGroupedItemsForModule[]} */
170
+ (deterministicGrouping);
173
171
 
174
172
  /** @type {WeakMap<Module, string>} */
175
173
  const getKeyCache = new WeakMap();
@@ -180,11 +178,13 @@ const getKeyCache = new WeakMap();
180
178
  * @returns {string} hashed filename
181
179
  */
182
180
  const hashFilename = (name, outputOptions) => {
183
- const digest = /** @type {string} */ (
184
- createHash(outputOptions.hashFunction)
185
- .update(name)
186
- .digest(outputOptions.hashDigest)
187
- );
181
+ const digest =
182
+ /** @type {string} */
183
+ (
184
+ createHash(outputOptions.hashFunction)
185
+ .update(name)
186
+ .digest(outputOptions.hashDigest)
187
+ );
188
188
  return digest.slice(0, 8);
189
189
  };
190
190
 
@@ -200,10 +200,21 @@ const getRequests = chunk => {
200
200
  return requests;
201
201
  };
202
202
 
203
+ /**
204
+ * @template {object} T
205
+ * @template {object} R
206
+ * @param {T} obj obj an object
207
+ * @param {function(T[keyof T], keyof T): T[keyof T]} fn fn
208
+ * @returns {T} result
209
+ */
203
210
  const mapObject = (obj, fn) => {
204
211
  const newObj = Object.create(null);
205
212
  for (const key of Object.keys(obj)) {
206
- newObj[key] = fn(obj[key], key);
213
+ newObj[key] = fn(
214
+ obj[/** @type {keyof T} */ (key)],
215
+ /** @type {keyof T} */
216
+ (key)
217
+ );
207
218
  }
208
219
  return newObj;
209
220
  };
@@ -283,13 +294,12 @@ const normalizeSizes = (value, defaultSizeTypes) => {
283
294
  return o;
284
295
  } else if (typeof value === "object" && value !== null) {
285
296
  return { ...value };
286
- } else {
287
- return {};
288
297
  }
298
+ return {};
289
299
  };
290
300
 
291
301
  /**
292
- * @param {...SplitChunksSizes} sizes the sizes
302
+ * @param {...(SplitChunksSizes | undefined)} sizes the sizes
293
303
  * @returns {SplitChunksSizes} the merged sizes
294
304
  */
295
305
  const mergeSizes = (...sizes) => {
@@ -324,11 +334,7 @@ const combineSizes = (a, b, combine) => {
324
334
  /** @type {SplitChunksSizes} */
325
335
  const result = {};
326
336
  for (const key of aKeys) {
327
- if (bKeys.has(key)) {
328
- result[key] = combine(a[key], b[key]);
329
- } else {
330
- result[key] = a[key];
331
- }
337
+ result[key] = bKeys.has(key) ? combine(a[key], b[key]) : a[key];
332
338
  }
333
339
  for (const key of bKeys) {
334
340
  if (!aKeys.has(key)) {
@@ -425,9 +431,7 @@ const normalizeChunksFilter = chunks => {
425
431
  return ALL_CHUNK_FILTER;
426
432
  }
427
433
  if (chunks instanceof RegExp) {
428
- return chunk => {
429
- return chunk.name ? chunks.test(chunk.name) : false;
430
- };
434
+ return chunk => (chunk.name ? chunks.test(chunk.name) : false);
431
435
  }
432
436
  if (typeof chunks === "function") {
433
437
  return chunks;
@@ -500,7 +504,7 @@ const normalizeCacheGroups = (cacheGroups, defaultSizeTypes) => {
500
504
  */
501
505
  const fn = (module, context) => {
502
506
  /** @type {CacheGroupSource[]} */
503
- let results = [];
507
+ const results = [];
504
508
  for (const fn of handlers) {
505
509
  fn(module, context, results);
506
510
  }
@@ -1210,7 +1214,7 @@ module.exports = class SplitChunksPlugin {
1210
1214
  // Walk through all modules
1211
1215
  for (const module of compilation.modules) {
1212
1216
  // Get cache group
1213
- let cacheGroups = this.options.getCacheGroups(module, context);
1217
+ const cacheGroups = this.options.getCacheGroups(module, context);
1214
1218
  if (!Array.isArray(cacheGroups) || cacheGroups.length === 0) {
1215
1219
  continue;
1216
1220
  }
@@ -1437,7 +1441,7 @@ module.exports = class SplitChunksPlugin {
1437
1441
  : item.cacheGroup.maxAsyncRequests
1438
1442
  );
1439
1443
  if (
1440
- isFinite(maxRequests) &&
1444
+ Number.isFinite(maxRequests) &&
1441
1445
  getRequests(chunk) >= maxRequests
1442
1446
  ) {
1443
1447
  usedChunks.delete(chunk);
@@ -1482,7 +1486,7 @@ module.exports = class SplitChunksPlugin {
1482
1486
  usedChunks.size === 1
1483
1487
  ) {
1484
1488
  const [chunk] = usedChunks;
1485
- let chunkSizes = Object.create(null);
1489
+ const chunkSizes = Object.create(null);
1486
1490
  for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
1487
1491
  if (!item.modules.has(module)) {
1488
1492
  for (const type of module.getSourceTypes()) {
@@ -1522,7 +1526,7 @@ module.exports = class SplitChunksPlugin {
1522
1526
 
1523
1527
  // Add a note to the chunk
1524
1528
  newChunk.chunkReason =
1525
- (newChunk.chunkReason ? newChunk.chunkReason + ", " : "") +
1529
+ (newChunk.chunkReason ? `${newChunk.chunkReason}, ` : "") +
1526
1530
  (isReusedWithAllModules
1527
1531
  ? "reused as split chunk"
1528
1532
  : "split chunk");
@@ -127,8 +127,8 @@ module.exports = class SizeLimitsPlugin {
127
127
 
128
128
  if (size > /** @type {number} */ (entrypointSizeLimit)) {
129
129
  entrypointsOverLimit.push({
130
- name: name,
131
- size: size,
130
+ name,
131
+ size,
132
132
  files: entry.getFiles().filter(fileFilter)
133
133
  });
134
134
  isOverSizeLimitSet.add(entry);
@@ -16,7 +16,7 @@ class ChunkPrefetchTriggerRuntimeModule extends RuntimeModule {
16
16
  * @param {Record<string|number, (string|number)[]>} chunkMap map from chunk to
17
17
  */
18
18
  constructor(chunkMap) {
19
- super(`chunk prefetch trigger`, RuntimeModule.STAGE_TRIGGER);
19
+ super("chunk prefetch trigger", RuntimeModule.STAGE_TRIGGER);
20
20
  this.chunkMap = chunkMap;
21
21
  }
22
22
 
@@ -16,7 +16,7 @@ class ChunkPreloadTriggerRuntimeModule extends RuntimeModule {
16
16
  * @param {Record<string|number, (string|number)[]>} chunkMap map from chunk to chunks
17
17
  */
18
18
  constructor(chunkMap) {
19
- super(`chunk preload trigger`, RuntimeModule.STAGE_TRIGGER);
19
+ super("chunk preload trigger", RuntimeModule.STAGE_TRIGGER);
20
20
  this.chunkMap = chunkMap;
21
21
  }
22
22
 
@@ -5,6 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
8
9
  /** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
9
10
 
10
11
  class BasicEffectRulePlugin {
@@ -28,7 +29,8 @@ class BasicEffectRulePlugin {
28
29
  if (unhandledProperties.has(this.ruleProperty)) {
29
30
  unhandledProperties.delete(this.ruleProperty);
30
31
 
31
- const value = rule[this.ruleProperty];
32
+ const value =
33
+ rule[/** @type {keyof RuleSetRule} */ (this.ruleProperty)];
32
34
 
33
35
  result.effects.push({
34
36
  type: this.effectType,
@@ -5,6 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
8
9
  /** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
9
10
  /** @typedef {import("./RuleSetCompiler").RuleCondition} RuleCondition */
10
11
 
@@ -30,7 +31,8 @@ class BasicMatcherRulePlugin {
30
31
  (path, rule, unhandledProperties, result) => {
31
32
  if (unhandledProperties.has(this.ruleProperty)) {
32
33
  unhandledProperties.delete(this.ruleProperty);
33
- const value = rule[this.ruleProperty];
34
+ const value =
35
+ rule[/** @type {keyof RuleSetRule} */ (this.ruleProperty)];
34
36
  const condition = ruleSetCompiler.compileCondition(
35
37
  `${path}.${this.ruleProperty}`,
36
38
  value
@@ -5,6 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
8
9
  /** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
9
10
  /** @typedef {import("./RuleSetCompiler").RuleCondition} RuleCondition */
10
11
  /** @typedef {import("./RuleSetCompiler").RuleConditionFunction} RuleConditionFunction */
@@ -32,7 +33,9 @@ class ObjectMatcherRulePlugin {
32
33
  (path, rule, unhandledProperties, result) => {
33
34
  if (unhandledProperties.has(ruleProperty)) {
34
35
  unhandledProperties.delete(ruleProperty);
35
- const value = rule[ruleProperty];
36
+ const value =
37
+ /** @type {Record<string, any>} */
38
+ (rule[/** @type {keyof RuleSetRule} */ (ruleProperty)]);
36
39
  for (const property of Object.keys(value)) {
37
40
  const nestedDataProperties = property.split(".");
38
41
  const condition = ruleSetCompiler.compileCondition(