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
@@ -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");
@@ -398,10 +381,12 @@ class ModuleConcatenationPlugin {
398
381
  }
399
382
 
400
383
  // Create a new ConcatenatedModule
401
- let newModule = ConcatenatedModule.create(
384
+ ConcatenatedModule.getCompilationHooks(compilation);
385
+ const newModule = ConcatenatedModule.create(
402
386
  rootModule,
403
387
  modules,
404
388
  concatConfiguration.runtime,
389
+ compilation,
405
390
  compiler.root,
406
391
  compilation.outputOptions.hashFunction
407
392
  );
@@ -446,15 +431,12 @@ class ModuleConcatenationPlugin {
446
431
  moduleGraph.copyOutgoingModuleConnections(
447
432
  m,
448
433
  newModule,
449
- c => {
450
- return (
451
- c.originModule === m &&
452
- !(
453
- c.dependency instanceof HarmonyImportDependency &&
454
- modules.has(c.module)
455
- )
456
- );
457
- }
434
+ c =>
435
+ c.originModule === m &&
436
+ !(
437
+ c.dependency instanceof HarmonyImportDependency &&
438
+ modules.has(c.module)
439
+ )
458
440
  );
459
441
  // remove module from chunk
460
442
  for (const chunk of chunkGraph.getModuleChunksIterable(
@@ -637,11 +619,11 @@ class ModuleConcatenationPlugin {
637
619
  incomingConnections.get(null) || incomingConnections.get(undefined);
638
620
  if (incomingConnectionsFromNonModules) {
639
621
  const activeNonModulesConnections =
640
- incomingConnectionsFromNonModules.filter(connection => {
622
+ incomingConnectionsFromNonModules.filter(connection =>
641
623
  // We are not interested in inactive connections
642
624
  // or connections without dependency
643
- return connection.isActive(runtime);
644
- });
625
+ connection.isActive(runtime)
626
+ );
645
627
  if (activeNonModulesConnections.length > 0) {
646
628
  /**
647
629
  * @param {RequestShortener} requestShortener request shortener
@@ -674,7 +656,7 @@ class ModuleConcatenationPlugin {
674
656
  if (chunkGraph.getNumberOfModuleChunks(originModule) === 0) continue;
675
657
 
676
658
  // We don't care for connections from other runtimes
677
- let originRuntime = undefined;
659
+ let originRuntime;
678
660
  for (const r of chunkGraph.getModuleRuntimes(originModule)) {
679
661
  originRuntime = mergeRuntimeOwned(originRuntime, r);
680
662
  }
@@ -741,19 +723,20 @@ class ModuleConcatenationPlugin {
741
723
  */
742
724
  const problem = requestShortener => {
743
725
  const names = Array.from(nonHarmonyConnections)
744
- .map(([originModule, connections]) => {
745
- return `${originModule.readableIdentifier(
746
- requestShortener
747
- )} (referenced with ${Array.from(
748
- new Set(
749
- connections
750
- .map(c => c.dependency && c.dependency.type)
751
- .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
+ )
752
736
  )
753
- )
754
- .sort()
755
- .join(", ")})`;
756
- })
737
+ .sort()
738
+ .join(", ")})`
739
+ )
757
740
  .sort();
758
741
  return `Module ${module.readableIdentifier(
759
742
  requestShortener
@@ -777,19 +760,15 @@ class ModuleConcatenationPlugin {
777
760
  /** @type {false | RuntimeSpec} */
778
761
  let currentRuntimeCondition = false;
779
762
  for (const connection of connections) {
780
- const runtimeCondition = filterRuntime(runtime, runtime => {
781
- return connection.isTargetActive(runtime);
782
- });
763
+ const runtimeCondition = filterRuntime(runtime, runtime =>
764
+ connection.isTargetActive(runtime)
765
+ );
783
766
  if (runtimeCondition === false) continue;
784
767
  if (runtimeCondition === true) continue outer;
785
- if (currentRuntimeCondition !== false) {
786
- currentRuntimeCondition = mergeRuntime(
787
- currentRuntimeCondition,
788
- runtimeCondition
789
- );
790
- } else {
791
- currentRuntimeCondition = runtimeCondition;
792
- }
768
+ currentRuntimeCondition =
769
+ currentRuntimeCondition !== false
770
+ ? mergeRuntime(currentRuntimeCondition, runtimeCondition)
771
+ : runtimeCondition;
793
772
  }
794
773
  if (currentRuntimeCondition !== false) {
795
774
  otherRuntimeConnections.push({
@@ -803,8 +782,8 @@ class ModuleConcatenationPlugin {
803
782
  * @param {RequestShortener} requestShortener request shortener
804
783
  * @returns {string} problem description
805
784
  */
806
- const problem = requestShortener => {
807
- return `Module ${module.readableIdentifier(
785
+ const problem = requestShortener =>
786
+ `Module ${module.readableIdentifier(
808
787
  requestShortener
809
788
  )} is runtime-dependent referenced by these modules: ${Array.from(
810
789
  otherRuntimeConnections,
@@ -817,7 +796,6 @@ class ModuleConcatenationPlugin {
817
796
  /** @type {RuntimeSpec} */ (runtimeCondition)
818
797
  )})`
819
798
  ).join(", ")}`;
820
- };
821
799
  statistics.incorrectRuntimeCondition++;
822
800
  failureCache.set(module, problem); // cache failures for performance
823
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);
@@ -35,6 +35,7 @@ class ChunkPrefetchPreloadPlugin {
35
35
  if (startupChildChunks) {
36
36
  set.add(RuntimeGlobals.prefetchChunk);
37
37
  set.add(RuntimeGlobals.onChunksLoaded);
38
+ set.add(RuntimeGlobals.exports);
38
39
  compilation.addRuntimeModule(
39
40
  chunk,
40
41
  new ChunkPrefetchStartupRuntimeModule(startupChildChunks)
@@ -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(