webpack 5.76.1 → 5.88.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.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (436) hide show
  1. package/README.md +10 -4
  2. package/bin/webpack.js +26 -2
  3. package/hot/dev-server.js +2 -1
  4. package/hot/lazy-compilation-node.js +10 -0
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +22 -0
  8. package/hot/only-dev-server.js +2 -1
  9. package/hot/poll.js +3 -0
  10. package/hot/signal.js +4 -0
  11. package/lib/APIPlugin.js +174 -116
  12. package/lib/AsyncDependenciesBlock.js +13 -5
  13. package/lib/AutomaticPrefetchPlugin.js +1 -0
  14. package/lib/BannerPlugin.js +4 -0
  15. package/lib/CacheFacade.js +4 -0
  16. package/lib/CaseSensitiveModulesWarning.js +3 -1
  17. package/lib/Chunk.js +36 -18
  18. package/lib/ChunkGraph.js +4 -4
  19. package/lib/ChunkGroup.js +25 -10
  20. package/lib/CleanPlugin.js +30 -7
  21. package/lib/CodeGenerationResults.js +2 -2
  22. package/lib/CompatibilityPlugin.js +85 -46
  23. package/lib/Compilation.js +17 -8
  24. package/lib/Compiler.js +12 -8
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +79 -44
  28. package/lib/ContextModule.js +20 -6
  29. package/lib/ContextModuleFactory.js +2 -1
  30. package/lib/ContextReplacementPlugin.js +13 -0
  31. package/lib/CssModule.js +169 -0
  32. package/lib/DefinePlugin.js +152 -86
  33. package/lib/DelegatedModule.js +22 -4
  34. package/lib/DelegatedModuleFactoryPlugin.js +6 -0
  35. package/lib/DependenciesBlock.js +17 -1
  36. package/lib/Dependency.js +19 -5
  37. package/lib/DllEntryPlugin.js +16 -1
  38. package/lib/DllModule.js +17 -2
  39. package/lib/DllModuleFactory.js +1 -1
  40. package/lib/DllReferencePlugin.js +13 -1
  41. package/lib/Entrypoint.js +1 -1
  42. package/lib/ErrorHelpers.js +62 -22
  43. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  44. package/lib/ExportsInfo.js +20 -3
  45. package/lib/ExportsInfoApiPlugin.js +30 -14
  46. package/lib/ExternalModule.js +30 -9
  47. package/lib/FileSystemInfo.js +9 -1
  48. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  49. package/lib/FlagDependencyExportsPlugin.js +336 -348
  50. package/lib/FlagDependencyUsagePlugin.js +9 -9
  51. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  52. package/lib/HookWebpackError.js +1 -1
  53. package/lib/HotModuleReplacementPlugin.js +60 -46
  54. package/lib/IgnoreErrorModuleFactory.js +1 -1
  55. package/lib/InitFragment.js +28 -5
  56. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  57. package/lib/LibManifestPlugin.js +22 -5
  58. package/lib/LoaderOptionsPlugin.js +12 -2
  59. package/lib/MainTemplate.js +2 -2
  60. package/lib/Module.js +44 -12
  61. package/lib/ModuleBuildError.js +9 -0
  62. package/lib/ModuleDependencyError.js +4 -2
  63. package/lib/ModuleDependencyWarning.js +4 -2
  64. package/lib/ModuleError.js +9 -0
  65. package/lib/ModuleFactory.js +1 -1
  66. package/lib/ModuleFilenameHelpers.js +114 -4
  67. package/lib/ModuleGraph.js +33 -23
  68. package/lib/ModuleGraphConnection.js +19 -6
  69. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  70. package/lib/ModuleNotFoundError.js +5 -2
  71. package/lib/ModuleParseError.js +9 -0
  72. package/lib/ModuleProfile.js +1 -0
  73. package/lib/ModuleRestoreError.js +2 -0
  74. package/lib/ModuleStoreError.js +2 -1
  75. package/lib/ModuleTypeConstants.js +169 -0
  76. package/lib/ModuleWarning.js +9 -0
  77. package/lib/MultiWatching.js +4 -0
  78. package/lib/NodeStuffPlugin.js +65 -35
  79. package/lib/NormalModule.js +12 -2
  80. package/lib/NormalModuleFactory.js +56 -8
  81. package/lib/NormalModuleReplacementPlugin.js +5 -3
  82. package/lib/NullFactory.js +1 -1
  83. package/lib/PrefetchPlugin.js +4 -0
  84. package/lib/ProgressPlugin.js +71 -15
  85. package/lib/ProvidePlugin.js +30 -14
  86. package/lib/RawModule.js +13 -2
  87. package/lib/RecordIdsPlugin.js +4 -4
  88. package/lib/RequireJsStuffPlugin.js +22 -15
  89. package/lib/RuntimeGlobals.js +5 -0
  90. package/lib/RuntimeModule.js +12 -11
  91. package/lib/RuntimePlugin.js +10 -3
  92. package/lib/RuntimeTemplate.js +29 -11
  93. package/lib/SelfModuleFactory.js +12 -0
  94. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  95. package/lib/SourceMapDevToolPlugin.js +47 -11
  96. package/lib/Template.js +5 -3
  97. package/lib/UseStrictPlugin.js +29 -11
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  99. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  100. package/lib/WatchIgnorePlugin.js +4 -0
  101. package/lib/WebpackError.js +14 -5
  102. package/lib/WebpackIsIncludedPlugin.js +22 -13
  103. package/lib/WebpackOptionsApply.js +41 -44
  104. package/lib/WebpackOptionsDefaulter.js +10 -3
  105. package/lib/asset/AssetGenerator.js +24 -9
  106. package/lib/asset/AssetModulesPlugin.js +28 -12
  107. package/lib/asset/AssetParser.js +15 -7
  108. package/lib/asset/AssetSourceParser.js +8 -3
  109. package/lib/asset/RawDataUrlModule.js +15 -4
  110. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  111. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  112. package/lib/cache/IdleFileCachePlugin.js +2 -1
  113. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  114. package/lib/cache/PackFileCacheStrategy.js +42 -15
  115. package/lib/cache/ResolverCachePlugin.js +3 -0
  116. package/lib/config/browserslistTargetHandler.js +10 -10
  117. package/lib/config/defaults.js +306 -105
  118. package/lib/config/normalization.js +110 -71
  119. package/lib/config/target.js +37 -10
  120. package/lib/container/ContainerEntryModule.js +11 -1
  121. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  122. package/lib/container/ContainerExposedDependency.js +9 -0
  123. package/lib/container/ContainerPlugin.js +3 -1
  124. package/lib/container/FallbackDependency.js +13 -0
  125. package/lib/container/FallbackItemDependency.js +3 -0
  126. package/lib/container/FallbackModule.js +12 -2
  127. package/lib/container/FallbackModuleFactory.js +1 -1
  128. package/lib/container/RemoteModule.js +11 -1
  129. package/lib/container/RemoteRuntimeModule.js +3 -2
  130. package/lib/container/RemoteToExternalDependency.js +3 -0
  131. package/lib/css/CssExportsGenerator.js +9 -0
  132. package/lib/css/CssGenerator.js +5 -1
  133. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  134. package/lib/css/CssModulesPlugin.js +253 -74
  135. package/lib/css/CssParser.js +697 -282
  136. package/lib/css/walkCssTokens.js +269 -138
  137. package/lib/debug/ProfilingPlugin.js +33 -12
  138. package/lib/dependencies/AMDDefineDependency.js +54 -10
  139. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  140. package/lib/dependencies/AMDPlugin.js +33 -20
  141. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  142. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  143. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  144. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  145. package/lib/dependencies/AMDRequireDependency.js +16 -1
  146. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  147. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  148. package/lib/dependencies/CachedConstDependency.js +14 -0
  149. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  150. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  151. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  152. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  153. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  154. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  155. package/lib/dependencies/CommonJsPlugin.js +51 -26
  156. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  157. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  158. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  159. package/lib/dependencies/ConstDependency.js +11 -2
  160. package/lib/dependencies/ContextDependency.js +15 -2
  161. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  162. package/lib/dependencies/ContextElementDependency.js +8 -0
  163. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  164. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  165. package/lib/dependencies/CssExportDependency.js +8 -0
  166. package/lib/dependencies/CssImportDependency.js +55 -3
  167. package/lib/dependencies/CssLocalIdentifierDependency.js +15 -1
  168. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  169. package/lib/dependencies/CssUrlDependency.js +46 -16
  170. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  171. package/lib/dependencies/DllEntryDependency.js +14 -0
  172. package/lib/dependencies/DynamicExports.js +10 -6
  173. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  174. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  175. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  176. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  177. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  178. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  179. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  180. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  181. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  182. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  183. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  184. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  185. package/lib/dependencies/HarmonyExports.js +11 -5
  186. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  187. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  188. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  189. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  190. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  191. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  192. package/lib/dependencies/ImportContextDependency.js +15 -0
  193. package/lib/dependencies/ImportDependency.js +15 -4
  194. package/lib/dependencies/ImportEagerDependency.js +7 -4
  195. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  196. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  197. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  198. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  199. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  200. package/lib/dependencies/ImportParserPlugin.js +83 -25
  201. package/lib/dependencies/ImportPlugin.js +21 -7
  202. package/lib/dependencies/ImportWeakDependency.js +7 -4
  203. package/lib/dependencies/JsonExportsDependency.js +9 -1
  204. package/lib/dependencies/LocalModule.js +16 -0
  205. package/lib/dependencies/LocalModuleDependency.js +15 -0
  206. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  207. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  208. package/lib/dependencies/ModuleDependency.js +9 -1
  209. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  210. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  211. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  212. package/lib/dependencies/PrefetchDependency.js +3 -0
  213. package/lib/dependencies/ProvidedDependency.js +14 -2
  214. package/lib/dependencies/PureExpressionDependency.js +10 -1
  215. package/lib/dependencies/RequireContextDependency.js +6 -0
  216. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  217. package/lib/dependencies/RequireContextPlugin.js +19 -6
  218. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  219. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  220. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  221. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  222. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  223. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  224. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  225. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  226. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  227. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  228. package/lib/dependencies/RequireResolveDependency.js +6 -0
  229. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  230. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  231. package/lib/dependencies/StaticExportsDependency.js +8 -0
  232. package/lib/dependencies/SystemPlugin.js +48 -21
  233. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  234. package/lib/dependencies/URLDependency.js +13 -4
  235. package/lib/dependencies/URLPlugin.js +31 -18
  236. package/lib/dependencies/UnsupportedDependency.js +13 -0
  237. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  238. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  239. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  240. package/lib/dependencies/WorkerDependency.js +47 -3
  241. package/lib/dependencies/WorkerPlugin.js +105 -32
  242. package/lib/dependencies/getFunctionExpression.js +7 -0
  243. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  244. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  245. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  246. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  247. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  248. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  249. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  250. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  251. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  252. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  253. package/lib/ids/IdHelpers.js +6 -0
  254. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  255. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  256. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  257. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  258. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  259. package/lib/index.js +8 -0
  260. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  261. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  262. package/lib/javascript/ChunkHelpers.js +2 -2
  263. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  264. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  265. package/lib/javascript/JavascriptModulesPlugin.js +194 -194
  266. package/lib/javascript/JavascriptParser.js +941 -256
  267. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  268. package/lib/javascript/StartupHelpers.js +2 -2
  269. package/lib/json/JsonData.js +26 -1
  270. package/lib/json/JsonGenerator.js +21 -7
  271. package/lib/json/JsonModulesPlugin.js +14 -5
  272. package/lib/json/JsonParser.js +27 -13
  273. package/lib/library/AbstractLibraryPlugin.js +4 -0
  274. package/lib/library/AmdLibraryPlugin.js +22 -6
  275. package/lib/library/AssignLibraryPlugin.js +6 -4
  276. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  277. package/lib/library/ModuleLibraryPlugin.js +8 -4
  278. package/lib/library/SystemLibraryPlugin.js +1 -0
  279. package/lib/library/UmdLibraryPlugin.js +4 -0
  280. package/lib/logging/runtime.js +1 -1
  281. package/lib/logging/truncateArgs.js +4 -0
  282. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  283. package/lib/node/NodeTargetPlugin.js +3 -0
  284. package/lib/node/NodeTemplatePlugin.js +10 -2
  285. package/lib/node/NodeWatchFileSystem.js +1 -1
  286. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  287. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  288. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  289. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  290. package/lib/node/nodeConsole.js +2 -4
  291. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  292. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  293. package/lib/optimize/ConcatenatedModule.js +8 -6
  294. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  295. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  296. package/lib/optimize/InnerGraph.js +5 -5
  297. package/lib/optimize/InnerGraphPlugin.js +57 -48
  298. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  299. package/lib/optimize/MangleExportsPlugin.js +1 -1
  300. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  301. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  302. package/lib/optimize/RealContentHashPlugin.js +86 -30
  303. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  304. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  305. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  306. package/lib/optimize/SplitChunksPlugin.js +71 -31
  307. package/lib/performance/SizeLimitsPlugin.js +7 -4
  308. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  309. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  310. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  311. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  312. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  313. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  314. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  315. package/lib/rules/RuleSetCompiler.js +3 -3
  316. package/lib/rules/UseEffectRulePlugin.js +6 -4
  317. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  318. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  319. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  320. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  321. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  322. package/lib/runtime/CompatRuntimeModule.js +7 -2
  323. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  324. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  325. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  326. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  327. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  328. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  329. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  330. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  331. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  332. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  333. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  334. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  335. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  336. package/lib/runtime/NonceRuntimeModule.js +1 -1
  337. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  338. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  339. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  340. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  341. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  342. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  343. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  344. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  345. package/lib/schemes/DataUriPlugin.js +16 -3
  346. package/lib/schemes/HttpUriPlugin.js +38 -0
  347. package/lib/serialization/ArraySerializer.js +22 -6
  348. package/lib/serialization/BinaryMiddleware.js +164 -1
  349. package/lib/serialization/DateObjectSerializer.js +15 -4
  350. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  351. package/lib/serialization/FileMiddleware.js +17 -0
  352. package/lib/serialization/MapObjectSerializer.js +24 -8
  353. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  354. package/lib/serialization/ObjectMiddleware.js +33 -2
  355. package/lib/serialization/PlainObjectSerializer.js +23 -12
  356. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  357. package/lib/serialization/SetObjectSerializer.js +21 -6
  358. package/lib/serialization/types.js +1 -1
  359. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  360. package/lib/sharing/ConsumeSharedModule.js +13 -2
  361. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  362. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  363. package/lib/sharing/ProvideSharedDependency.js +17 -0
  364. package/lib/sharing/ProvideSharedModule.js +11 -1
  365. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  366. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  367. package/lib/sharing/ShareRuntimeModule.js +19 -9
  368. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  369. package/lib/sharing/utils.js +320 -7
  370. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  371. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  372. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  373. package/lib/util/AsyncQueue.js +4 -2
  374. package/lib/util/LazySet.js +10 -2
  375. package/lib/util/MapHelpers.js +19 -5
  376. package/lib/util/ParallelismFactorCalculator.js +10 -0
  377. package/lib/util/Semaphore.js +1 -1
  378. package/lib/util/StackedCacheMap.js +6 -0
  379. package/lib/util/StringXor.js +51 -0
  380. package/lib/util/binarySearchBounds.js +49 -0
  381. package/lib/util/compileBooleanMatcher.js +31 -0
  382. package/lib/util/createHash.js +35 -13
  383. package/lib/util/deprecation.js +18 -3
  384. package/lib/util/deterministicGrouping.js +50 -11
  385. package/lib/util/findGraphRoots.js +4 -2
  386. package/lib/util/hash/md4.js +2 -2
  387. package/lib/util/hash/xxhash64.js +1 -1
  388. package/lib/util/identifier.js +4 -0
  389. package/lib/util/internalSerializables.js +1 -0
  390. package/lib/util/makeSerializable.js +7 -0
  391. package/lib/util/memoize.js +3 -3
  392. package/lib/util/numberHash.js +75 -21
  393. package/lib/util/processAsyncTree.js +7 -1
  394. package/lib/util/propertyAccess.js +9 -54
  395. package/lib/util/propertyName.js +79 -0
  396. package/lib/util/registerExternalSerializer.js +1 -1
  397. package/lib/util/runtime.js +14 -1
  398. package/lib/util/semver.js +1 -1
  399. package/lib/util/serialization.js +10 -0
  400. package/lib/util/smartGrouping.js +1 -1
  401. package/lib/validateSchema.js +6 -2
  402. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  403. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  404. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  405. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  406. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  407. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  408. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  409. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  410. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  411. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  412. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  413. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  414. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  415. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  416. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  417. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  418. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  419. package/lib/webpack.js +12 -3
  420. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  421. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  422. package/module.d.ts +55 -37
  423. package/package.json +59 -56
  424. package/schemas/WebpackOptions.check.js +1 -1
  425. package/schemas/WebpackOptions.json +132 -5
  426. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  427. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  428. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  429. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  430. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  431. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  432. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  433. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  434. package/schemas/plugins/css/CssParserOptions.json +1 -1
  435. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  436. package/types.d.ts +1608 -667
@@ -5,6 +5,10 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const {
9
+ JAVASCRIPT_MODULE_TYPE_AUTO,
10
+ JAVASCRIPT_MODULE_TYPE_ESM
11
+ } = require("../ModuleTypeConstants");
8
12
  const PureExpressionDependency = require("../dependencies/PureExpressionDependency");
9
13
  const InnerGraph = require("./InnerGraph");
10
14
 
@@ -12,6 +16,7 @@ const InnerGraph = require("./InnerGraph");
12
16
  /** @typedef {import("estree").ClassExpression} ClassExpressionNode */
13
17
  /** @typedef {import("estree").Node} Node */
14
18
  /** @typedef {import("estree").VariableDeclarator} VariableDeclaratorNode */
19
+ /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
15
20
  /** @typedef {import("../Compiler")} Compiler */
16
21
  /** @typedef {import("../Dependency")} Dependency */
17
22
  /** @typedef {import("../dependencies/HarmonyImportSpecifierDependency")} HarmonyImportSpecifierDependency */
@@ -21,6 +26,8 @@ const InnerGraph = require("./InnerGraph");
21
26
 
22
27
  const { topLevelSymbolTag } = InnerGraph;
23
28
 
29
+ const PLUGIN_NAME = "InnerGraphPlugin";
30
+
24
31
  class InnerGraphPlugin {
25
32
  /**
26
33
  * Apply the plugin
@@ -29,7 +36,7 @@ class InnerGraphPlugin {
29
36
  */
30
37
  apply(compiler) {
31
38
  compiler.hooks.compilation.tap(
32
- "InnerGraphPlugin",
39
+ PLUGIN_NAME,
33
40
  (compilation, { normalModuleFactory }) => {
34
41
  const logger = compilation.getLogger("webpack.InnerGraphPlugin");
35
42
 
@@ -40,7 +47,7 @@ class InnerGraphPlugin {
40
47
 
41
48
  /**
42
49
  * @param {JavascriptParser} parser the parser
43
- * @param {Object} parserOptions options
50
+ * @param {JavascriptParserOptions} parserOptions options
44
51
  * @returns {void}
45
52
  */
46
53
  const handler = (parser, parserOptions) => {
@@ -61,11 +68,11 @@ class InnerGraphPlugin {
61
68
  });
62
69
  };
63
70
 
64
- parser.hooks.program.tap("InnerGraphPlugin", () => {
71
+ parser.hooks.program.tap(PLUGIN_NAME, () => {
65
72
  InnerGraph.enable(parser.state);
66
73
  });
67
74
 
68
- parser.hooks.finish.tap("InnerGraphPlugin", () => {
75
+ parser.hooks.finish.tap(PLUGIN_NAME, () => {
69
76
  if (!InnerGraph.isEnabled(parser.state)) return;
70
77
 
71
78
  logger.time("infer dependency usage");
@@ -97,7 +104,7 @@ class InnerGraphPlugin {
97
104
 
98
105
  // The following hooks are used during prewalking:
99
106
 
100
- parser.hooks.preStatement.tap("InnerGraphPlugin", statement => {
107
+ parser.hooks.preStatement.tap(PLUGIN_NAME, statement => {
101
108
  if (!InnerGraph.isEnabled(parser.state)) return;
102
109
 
103
110
  if (parser.scope.topLevelScope === true) {
@@ -110,11 +117,14 @@ class InnerGraphPlugin {
110
117
  }
111
118
  });
112
119
 
113
- parser.hooks.blockPreStatement.tap("InnerGraphPlugin", statement => {
120
+ parser.hooks.blockPreStatement.tap(PLUGIN_NAME, statement => {
114
121
  if (!InnerGraph.isEnabled(parser.state)) return;
115
122
 
116
123
  if (parser.scope.topLevelScope === true) {
117
- if (statement.type === "ClassDeclaration") {
124
+ if (
125
+ statement.type === "ClassDeclaration" &&
126
+ parser.isPure(statement, statement.range[0])
127
+ ) {
118
128
  const name = statement.id ? statement.id.name : "*default*";
119
129
  const fn = InnerGraph.tagTopLevelSymbol(parser, name);
120
130
  classWithTopLevelSymbol.set(statement, fn);
@@ -125,8 +135,9 @@ class InnerGraphPlugin {
125
135
  const fn = InnerGraph.tagTopLevelSymbol(parser, name);
126
136
  const decl = statement.declaration;
127
137
  if (
128
- decl.type === "ClassExpression" ||
129
- decl.type === "ClassDeclaration"
138
+ (decl.type === "ClassExpression" ||
139
+ decl.type === "ClassDeclaration") &&
140
+ parser.isPure(decl, decl.range[0])
130
141
  ) {
131
142
  classWithTopLevelSymbol.set(decl, fn);
132
143
  } else if (parser.isPure(decl, statement.range[0])) {
@@ -143,33 +154,33 @@ class InnerGraphPlugin {
143
154
  }
144
155
  });
145
156
 
146
- parser.hooks.preDeclarator.tap(
147
- "InnerGraphPlugin",
148
- (decl, statement) => {
149
- if (!InnerGraph.isEnabled(parser.state)) return;
157
+ parser.hooks.preDeclarator.tap(PLUGIN_NAME, (decl, statement) => {
158
+ if (!InnerGraph.isEnabled(parser.state)) return;
159
+ if (
160
+ parser.scope.topLevelScope === true &&
161
+ decl.init &&
162
+ decl.id.type === "Identifier"
163
+ ) {
164
+ const name = decl.id.name;
150
165
  if (
151
- parser.scope.topLevelScope === true &&
152
- decl.init &&
153
- decl.id.type === "Identifier"
166
+ decl.init.type === "ClassExpression" &&
167
+ parser.isPure(decl.init, decl.id.range[1])
154
168
  ) {
155
- const name = decl.id.name;
156
- if (decl.init.type === "ClassExpression") {
157
- const fn = InnerGraph.tagTopLevelSymbol(parser, name);
158
- classWithTopLevelSymbol.set(decl.init, fn);
159
- } else if (parser.isPure(decl.init, decl.id.range[1])) {
160
- const fn = InnerGraph.tagTopLevelSymbol(parser, name);
161
- declWithTopLevelSymbol.set(decl, fn);
162
- if (
163
- !decl.init.type.endsWith("FunctionExpression") &&
164
- decl.init.type !== "Literal"
165
- ) {
166
- pureDeclarators.add(decl);
167
- }
168
- return true;
169
+ const fn = InnerGraph.tagTopLevelSymbol(parser, name);
170
+ classWithTopLevelSymbol.set(decl.init, fn);
171
+ } else if (parser.isPure(decl.init, decl.id.range[1])) {
172
+ const fn = InnerGraph.tagTopLevelSymbol(parser, name);
173
+ declWithTopLevelSymbol.set(decl, fn);
174
+ if (
175
+ !decl.init.type.endsWith("FunctionExpression") &&
176
+ decl.init.type !== "Literal"
177
+ ) {
178
+ pureDeclarators.add(decl);
169
179
  }
180
+ return true;
170
181
  }
171
182
  }
172
- );
183
+ });
173
184
 
174
185
  // During real walking we set the TopLevelSymbol state to the assigned
175
186
  // TopLevelSymbol by using the fill datastructures.
@@ -187,7 +198,7 @@ class InnerGraphPlugin {
187
198
 
188
199
  // The following hooks are called during walking:
189
200
 
190
- parser.hooks.statement.tap("InnerGraphPlugin", statement => {
201
+ parser.hooks.statement.tap(PLUGIN_NAME, statement => {
191
202
  if (!InnerGraph.isEnabled(parser.state)) return;
192
203
  if (parser.scope.topLevelScope === true) {
193
204
  InnerGraph.setTopLevelSymbol(parser.state, undefined);
@@ -219,7 +230,7 @@ class InnerGraphPlugin {
219
230
  });
220
231
 
221
232
  parser.hooks.classExtendsExpression.tap(
222
- "InnerGraphPlugin",
233
+ PLUGIN_NAME,
223
234
  (expr, statement) => {
224
235
  if (!InnerGraph.isEnabled(parser.state)) return;
225
236
  if (parser.scope.topLevelScope === true) {
@@ -239,7 +250,7 @@ class InnerGraphPlugin {
239
250
  );
240
251
 
241
252
  parser.hooks.classBodyElement.tap(
242
- "InnerGraphPlugin",
253
+ PLUGIN_NAME,
243
254
  (element, classDefinition) => {
244
255
  if (!InnerGraph.isEnabled(parser.state)) return;
245
256
  if (parser.scope.topLevelScope === true) {
@@ -252,7 +263,7 @@ class InnerGraphPlugin {
252
263
  );
253
264
 
254
265
  parser.hooks.classBodyValue.tap(
255
- "InnerGraphPlugin",
266
+ PLUGIN_NAME,
256
267
  (expression, element, classDefinition) => {
257
268
  if (!InnerGraph.isEnabled(parser.state)) return;
258
269
  if (parser.scope.topLevelScope === true) {
@@ -292,7 +303,7 @@ class InnerGraphPlugin {
292
303
  }
293
304
  );
294
305
 
295
- parser.hooks.declarator.tap("InnerGraphPlugin", (decl, statement) => {
306
+ parser.hooks.declarator.tap(PLUGIN_NAME, (decl, statement) => {
296
307
  if (!InnerGraph.isEnabled(parser.state)) return;
297
308
  const fn = declWithTopLevelSymbol.get(decl);
298
309
 
@@ -330,7 +341,7 @@ class InnerGraphPlugin {
330
341
 
331
342
  parser.hooks.expression
332
343
  .for(topLevelSymbolTag)
333
- .tap("InnerGraphPlugin", () => {
344
+ .tap(PLUGIN_NAME, () => {
334
345
  const topLevelSymbol = /** @type {TopLevelSymbol} */ (
335
346
  parser.currentTagData
336
347
  );
@@ -343,21 +354,19 @@ class InnerGraphPlugin {
343
354
  currentTopLevelSymbol || true
344
355
  );
345
356
  });
346
- parser.hooks.assign
347
- .for(topLevelSymbolTag)
348
- .tap("InnerGraphPlugin", expr => {
349
- if (!InnerGraph.isEnabled(parser.state)) return;
350
- if (expr.operator === "=") return true;
351
- });
357
+ parser.hooks.assign.for(topLevelSymbolTag).tap(PLUGIN_NAME, expr => {
358
+ if (!InnerGraph.isEnabled(parser.state)) return;
359
+ if (expr.operator === "=") return true;
360
+ });
352
361
  };
353
362
  normalModuleFactory.hooks.parser
354
- .for("javascript/auto")
355
- .tap("InnerGraphPlugin", handler);
363
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
364
+ .tap(PLUGIN_NAME, handler);
356
365
  normalModuleFactory.hooks.parser
357
- .for("javascript/esm")
358
- .tap("InnerGraphPlugin", handler);
366
+ .for(JAVASCRIPT_MODULE_TYPE_ESM)
367
+ .tap(PLUGIN_NAME, handler);
359
368
 
360
- compilation.hooks.finishModules.tap("InnerGraphPlugin", () => {
369
+ compilation.hooks.finishModules.tap(PLUGIN_NAME, () => {
361
370
  logger.timeAggregateEnd("infer dependency usage");
362
371
  });
363
372
  }
@@ -36,6 +36,12 @@ const validate = createSchemaValidation(
36
36
  * @property {number} bSize
37
37
  */
38
38
 
39
+ /**
40
+ * @template K, V
41
+ * @param {Map<K, Set<V>>} map map
42
+ * @param {K} key key
43
+ * @param {V} value value
44
+ */
39
45
  const addToSetMap = (map, key, value) => {
40
46
  const set = map.get(key);
41
47
  if (set === undefined) {
@@ -68,7 +74,9 @@ class LimitChunkCountPlugin {
68
74
  },
69
75
  chunks => {
70
76
  const chunkGraph = compilation.chunkGraph;
71
- const maxChunks = options.maxChunks;
77
+ const maxChunks =
78
+ /** @type {LimitChunkCountPluginOptions} */
79
+ (options).maxChunks;
72
80
  if (!maxChunks) return;
73
81
  if (maxChunks < 1) return;
74
82
  if (compilation.chunks.size <= maxChunks) return;
@@ -88,9 +96,17 @@ class LimitChunkCountPlugin {
88
96
  c => c.sizeDiff,
89
97
  (a, b) => b - a,
90
98
  // Layer 2: ordered by smallest combined size
99
+ /**
100
+ * @param {ChunkCombination} c combination
101
+ * @returns {number} integrated size
102
+ */
91
103
  c => c.integratedSize,
92
104
  (a, b) => a - b,
93
105
  // Layer 3: ordered by position difference in orderedChunk (-> to be deterministic)
106
+ /**
107
+ * @param {ChunkCombination} c combination
108
+ * @returns {number} position difference
109
+ */
94
110
  c => c.bIdx - c.aIdx,
95
111
  (a, b) => a - b,
96
112
  // Layer 4: ordered by position in orderedChunk (-> to be deterministic)
@@ -193,14 +209,18 @@ class LimitChunkCountPlugin {
193
209
  // Update all affected combinations
194
210
  // delete all combination with the removed chunk
195
211
  // we will use combinations with the kept chunk instead
196
- for (const combination of combinationsByChunk.get(a)) {
212
+ for (const combination of /** @type {Set<ChunkCombination>} */ (
213
+ combinationsByChunk.get(a)
214
+ )) {
197
215
  if (combination.deleted) continue;
198
216
  combination.deleted = true;
199
217
  combinations.delete(combination);
200
218
  }
201
219
 
202
220
  // Update combinations with the kept chunk with new sizes
203
- for (const combination of combinationsByChunk.get(b)) {
221
+ for (const combination of /** @type {Set<ChunkCombination>} */ (
222
+ combinationsByChunk.get(b)
223
+ )) {
204
224
  if (combination.deleted) continue;
205
225
  if (combination.a === b) {
206
226
  if (!chunkGraph.canChunksBeIntegrated(a, combination.b)) {
@@ -243,7 +263,12 @@ class LimitChunkCountPlugin {
243
263
  finishUpdate();
244
264
  }
245
265
  }
246
- combinationsByChunk.set(a, combinationsByChunk.get(b));
266
+ combinationsByChunk.set(
267
+ a,
268
+ /** @type {Set<ChunkCombination>} */ (
269
+ combinationsByChunk.get(b)
270
+ )
271
+ );
247
272
  combinationsByChunk.delete(b);
248
273
  }
249
274
  }
@@ -39,7 +39,7 @@ const comparator = compareSelect(e => e.name, compareStringsNumeric);
39
39
  /**
40
40
  * @param {boolean} deterministic use deterministic names
41
41
  * @param {ExportsInfo} exportsInfo exports info
42
- * @param {boolean} isNamespace is namespace object
42
+ * @param {boolean | undefined} isNamespace is namespace object
43
43
  * @returns {void}
44
44
  */
45
45
  const mangleExportsInfo = (deterministic, exportsInfo, isNamespace) => {
@@ -9,6 +9,11 @@ const SizeFormatHelpers = require("../SizeFormatHelpers");
9
9
  const WebpackError = require("../WebpackError");
10
10
 
11
11
  class MinMaxSizeWarning extends WebpackError {
12
+ /**
13
+ * @param {string[] | undefined} keys keys
14
+ * @param {number} minSize minimum size
15
+ * @param {number} maxSize maximum size
16
+ */
12
17
  constructor(keys, minSize, maxSize) {
13
18
  let keysMessage = "Fallback cache group";
14
19
  if (keys) {
@@ -40,6 +40,10 @@ const ConcatenatedModule = require("./ConcatenatedModule");
40
40
  * @property {number} added
41
41
  */
42
42
 
43
+ /**
44
+ * @param {string} msg message
45
+ * @returns {string} formatted message
46
+ */
43
47
  const formatBailoutReason = msg => {
44
48
  return "ModuleConcatenation bailout: " + msg;
45
49
  };
@@ -64,8 +68,13 @@ class ModuleConcatenationPlugin {
64
68
  );
65
69
  }
66
70
  const moduleGraph = compilation.moduleGraph;
71
+ /** @type {Map<Module, string | ((requestShortener: RequestShortener) => string)>} */
67
72
  const bailoutReasonMap = new Map();
68
73
 
74
+ /**
75
+ * @param {Module} module the module
76
+ * @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
77
+ */
69
78
  const setBailoutReason = (module, reason) => {
70
79
  setInnerBailoutReason(module, reason);
71
80
  moduleGraph
@@ -77,16 +86,30 @@ class ModuleConcatenationPlugin {
77
86
  );
78
87
  };
79
88
 
89
+ /**
90
+ * @param {Module} module the module
91
+ * @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
92
+ */
80
93
  const setInnerBailoutReason = (module, reason) => {
81
94
  bailoutReasonMap.set(module, reason);
82
95
  };
83
96
 
97
+ /**
98
+ * @param {Module} module the module
99
+ * @param {RequestShortener} requestShortener the request shortener
100
+ * @returns {string | ((requestShortener: RequestShortener) => string) | undefined} the reason
101
+ */
84
102
  const getInnerBailoutReason = (module, requestShortener) => {
85
103
  const reason = bailoutReasonMap.get(module);
86
104
  if (typeof reason === "function") return reason(requestShortener);
87
105
  return reason;
88
106
  };
89
107
 
108
+ /**
109
+ * @param {Module} module the module
110
+ * @param {Module | function(RequestShortener): string} problem the problem
111
+ * @returns {(requestShortener: RequestShortener) => string} the reason
112
+ */
90
113
  const formatBailoutWarning = (module, problem) => requestShortener => {
91
114
  if (typeof problem === "function") {
92
115
  return formatBailoutReason(
@@ -460,7 +483,7 @@ class ModuleConcatenationPlugin {
460
483
  c.module === rootModule ? c.originModule : c.module;
461
484
  const innerConnection =
462
485
  c.dependency instanceof HarmonyImportDependency &&
463
- modules.has(otherModule);
486
+ modules.has(/** @type {Module} */ (otherModule));
464
487
  return !innerConnection;
465
488
  });
466
489
  // add concatenated module to the compilation
@@ -533,7 +556,7 @@ class ModuleConcatenationPlugin {
533
556
  * @param {ChunkGraph} chunkGraph the chunk graph
534
557
  * @param {boolean} avoidMutateOnFailure avoid mutating the config when adding fails
535
558
  * @param {Statistics} statistics gathering metrics
536
- * @returns {Module | function(RequestShortener): string} the problematic module
559
+ * @returns {null | Module | function(RequestShortener): string} the problematic module
537
560
  */
538
561
  _tryToAdd(
539
562
  compilation,
@@ -572,6 +595,10 @@ class ModuleConcatenationPlugin {
572
595
  chunkGraph.getModuleChunksIterable(config.rootModule)
573
596
  ).filter(chunk => !chunkGraph.isModuleInChunk(module, chunk));
574
597
  if (missingChunks.length > 0) {
598
+ /**
599
+ * @param {RequestShortener} requestShortener request shortener
600
+ * @returns {string} problem description
601
+ */
575
602
  const problem = requestShortener => {
576
603
  const missingChunksList = Array.from(
577
604
  new Set(missingChunks.map(chunk => chunk.name || "unnamed chunk(s)"))
@@ -609,6 +636,10 @@ class ModuleConcatenationPlugin {
609
636
  return connection.isActive(runtime);
610
637
  });
611
638
  if (activeNonModulesConnections.length > 0) {
639
+ /**
640
+ * @param {RequestShortener} requestShortener request shortener
641
+ * @returns {string} problem description
642
+ */
612
643
  const problem = requestShortener => {
613
644
  const importingExplanations = new Set(
614
645
  activeNonModulesConnections.map(c => c.explanation).filter(Boolean)
@@ -666,6 +697,10 @@ class ModuleConcatenationPlugin {
666
697
  return false;
667
698
  });
668
699
  if (otherChunkModules.length > 0) {
700
+ /**
701
+ * @param {RequestShortener} requestShortener request shortener
702
+ * @returns {string} problem description
703
+ */
669
704
  const problem = requestShortener => {
670
705
  const names = otherChunkModules
671
706
  .map(m => m.readableIdentifier(requestShortener))
@@ -693,6 +728,10 @@ class ModuleConcatenationPlugin {
693
728
  nonHarmonyConnections.set(originModule, connections);
694
729
  }
695
730
  if (nonHarmonyConnections.size > 0) {
731
+ /**
732
+ * @param {RequestShortener} requestShortener request shortener
733
+ * @returns {string} problem description
734
+ */
696
735
  const problem = requestShortener => {
697
736
  const names = Array.from(nonHarmonyConnections)
698
737
  .map(([originModule, connections]) => {
@@ -753,6 +792,10 @@ class ModuleConcatenationPlugin {
753
792
  }
754
793
  }
755
794
  if (otherRuntimeConnections.length > 0) {
795
+ /**
796
+ * @param {RequestShortener} requestShortener request shortener
797
+ * @returns {string} problem description
798
+ */
756
799
  const problem = requestShortener => {
757
800
  return `Module ${module.readableIdentifier(
758
801
  requestShortener
@@ -831,10 +874,17 @@ class ConcatConfiguration {
831
874
  this.warnings = new Map();
832
875
  }
833
876
 
877
+ /**
878
+ * @param {Module} module the module
879
+ */
834
880
  add(module) {
835
881
  this.modules.add(module);
836
882
  }
837
883
 
884
+ /**
885
+ * @param {Module} module the module
886
+ * @returns {boolean} true, when the module is in the module set
887
+ */
838
888
  has(module) {
839
889
  return this.modules.has(module);
840
890
  }
@@ -843,10 +893,17 @@ class ConcatConfiguration {
843
893
  return this.modules.size === 1;
844
894
  }
845
895
 
896
+ /**
897
+ * @param {Module} module the module
898
+ * @param {Module | function(RequestShortener): string} problem the problem
899
+ */
846
900
  addWarning(module, problem) {
847
901
  this.warnings.set(module, problem);
848
902
  }
849
903
 
904
+ /**
905
+ * @returns {Map<Module, Module | function(RequestShortener): string>} warnings
906
+ */
850
907
  getWarningsSorted() {
851
908
  return new Map(
852
909
  Array.from(this.warnings).sort((a, b) => {