@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -7,10 +7,14 @@
7
7
 
8
8
  const asyncLib = require("neo-async");
9
9
  const ChunkGraph = require("../ChunkGraph");
10
+ const Dependency = require("../Dependency");
11
+ const Module = require("../Module");
10
12
  const ModuleGraph = require("../ModuleGraph");
11
13
  const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
12
14
  const { STAGE_DEFAULT } = require("../OptimizationStages");
15
+ const CommonJsSelfReferenceDependency = require("../dependencies/CommonJsSelfReferenceDependency");
13
16
  const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
17
+ const { ImportPhaseUtils } = require("../dependencies/ImportPhase");
14
18
  const { compareModulesByIdentifier } = require("../util/comparators");
15
19
  const {
16
20
  filterRuntime,
@@ -21,16 +25,38 @@ const {
21
25
  } = require("../util/runtime");
22
26
  const ConcatenatedModule = require("./ConcatenatedModule");
23
27
 
28
+ /** @typedef {import("../Chunk")} Chunk */
24
29
  /** @typedef {import("../Compilation")} Compilation */
25
30
  /** @typedef {import("../Compiler")} Compiler */
26
- /** @typedef {import("../Module")} Module */
27
31
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
32
+ /** @typedef {import("../Module").BuildMeta} BuildMeta */
28
33
  /** @typedef {import("../RequestShortener")} RequestShortener */
29
34
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
30
35
 
31
36
  /** @typedef {Module | ((requestShortener: RequestShortener) => string)} Problem */
32
37
 
33
38
  /**
39
+ * Merged runtime of all chunks a module is in, memoized for the whole pass.
40
+ * Safe: the chunk graph is not mutated while configurations are built.
41
+ * @param {ChunkGraph} chunkGraph the chunk graph
42
+ * @param {Map<Module, RuntimeSpec>} cache memoization cache
43
+ * @param {Module} module the module
44
+ * @returns {RuntimeSpec} the merged runtime
45
+ */
46
+ const getMergedModuleRuntime = (chunkGraph, cache, module) => {
47
+ const cached = cache.get(module);
48
+ if (cached !== undefined || cache.has(module)) return cached;
49
+ /** @type {RuntimeSpec} */
50
+ let runtime;
51
+ for (const r of chunkGraph.getModuleRuntimes(module)) {
52
+ runtime = mergeRuntimeOwned(runtime, r);
53
+ }
54
+ cache.set(module, runtime);
55
+ return runtime;
56
+ };
57
+
58
+ /**
59
+ * Defines the statistics type used by this module.
34
60
  * @typedef {object} Statistics
35
61
  * @property {number} cached
36
62
  * @property {number} alreadyInConfig
@@ -45,6 +71,24 @@ const ConcatenatedModule = require("./ConcatenatedModule");
45
71
  */
46
72
 
47
73
  /**
74
+ * Record why `module` can't be added (so retried lookups hit the cache), bump
75
+ * the matching statistic, and return the problem to bubble up the recursion.
76
+ * Only reached on failure, so it stays off the hot success path.
77
+ * @param {Map<Module, Problem>} failureCache per-module failure cache
78
+ * @param {Statistics} statistics running statistics
79
+ * @param {keyof Statistics} statKey statistic to increment
80
+ * @param {Module} module the module that couldn't be added
81
+ * @param {Problem} problem the failure to cache and return
82
+ * @returns {Problem} the same problem
83
+ */
84
+ const cacheFailure = (failureCache, statistics, statKey, module, problem) => {
85
+ statistics[statKey]++;
86
+ failureCache.set(module, problem);
87
+ return problem;
88
+ };
89
+
90
+ /**
91
+ * Format bailout reason.
48
92
  * @param {string} msg message
49
93
  * @returns {string} formatted message
50
94
  */
@@ -54,7 +98,7 @@ const PLUGIN_NAME = "ModuleConcatenationPlugin";
54
98
 
55
99
  class ModuleConcatenationPlugin {
56
100
  /**
57
- * Apply the plugin
101
+ * Applies the plugin by registering its hooks on the compiler.
58
102
  * @param {Compiler} compiler the compiler instance
59
103
  * @returns {void}
60
104
  */
@@ -71,6 +115,7 @@ class ModuleConcatenationPlugin {
71
115
  const bailoutReasonMap = new Map();
72
116
 
73
117
  /**
118
+ * Sets bailout reason.
74
119
  * @param {Module} module the module
75
120
  * @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
76
121
  */
@@ -86,6 +131,7 @@ class ModuleConcatenationPlugin {
86
131
  };
87
132
 
88
133
  /**
134
+ * Sets inner bailout reason.
89
135
  * @param {Module} module the module
90
136
  * @param {string | ((requestShortener: RequestShortener) => string)} reason the reason
91
137
  */
@@ -94,6 +140,7 @@ class ModuleConcatenationPlugin {
94
140
  };
95
141
 
96
142
  /**
143
+ * Gets inner bailout reason.
97
144
  * @param {Module} module the module
98
145
  * @param {RequestShortener} requestShortener the request shortener
99
146
  * @returns {string | ((requestShortener: RequestShortener) => string) | undefined} the reason
@@ -105,6 +152,7 @@ class ModuleConcatenationPlugin {
105
152
  };
106
153
 
107
154
  /**
155
+ * Format bailout warning.
108
156
  * @param {Module} module the module
109
157
  * @param {Problem} problem the problem
110
158
  * @returns {(requestShortener: RequestShortener) => string} the reason
@@ -149,9 +197,16 @@ class ModuleConcatenationPlugin {
149
197
  const relevantModules = [];
150
198
  /** @type {Set<Module>} */
151
199
  const possibleInners = new Set();
200
+ const concatenateModules =
201
+ compilation.options.optimization.concatenateModules;
152
202
  const context = {
153
203
  chunkGraph,
154
- moduleGraph
204
+ moduleGraph,
205
+ // commonjs concatenation defaults to on; { commonjs: false } opts out
206
+ concatenateCommonJsModules:
207
+ typeof concatenateModules === "object"
208
+ ? concatenateModules.commonjs !== false
209
+ : concatenateModules === true
155
210
  };
156
211
  const deferEnabled = compilation.options.experiments.deferImport;
157
212
  logger.time("select relevant modules");
@@ -170,7 +225,6 @@ class ModuleConcatenationPlugin {
170
225
  setBailoutReason(module, "Module is async");
171
226
  continue;
172
227
  }
173
-
174
228
  // Must be in strict mode
175
229
  if (!(/** @type {BuildInfo} */ (module.buildInfo).strict)) {
176
230
  setBailoutReason(module, "Module is not in strict mode");
@@ -222,6 +276,22 @@ class ModuleConcatenationPlugin {
222
276
  canBeRoot = false;
223
277
  }
224
278
 
279
+ // TODO: ConcatenatedModule.getSourceTypes only javascript now
280
+ const basicTypes = Module.getSourceBasicTypes(module);
281
+ if (basicTypes.size !== 1 || !basicTypes.has(JAVASCRIPT_TYPE)) {
282
+ canBeRoot = false;
283
+ }
284
+
285
+ // A concatenated CommonJS module relies on the root's ESM export
286
+ // rendering, so it can only be an inner module
287
+ if (
288
+ module.type.startsWith("javascript/") &&
289
+ /** @type {BuildMeta} */
290
+ (module.buildMeta).exportsType !== "namespace"
291
+ ) {
292
+ canBeRoot = false;
293
+ }
294
+
225
295
  // Module must not be an entry point
226
296
  if (chunkGraph.isEntryModule(module)) {
227
297
  setInnerBailoutReason(module, "Module is an entry point");
@@ -273,17 +343,20 @@ class ModuleConcatenationPlugin {
273
343
  const concatConfigurations = [];
274
344
  /** @type {Set<Module>} */
275
345
  const usedAsInner = new Set();
346
+ // module -> merged runtime of its chunks, shared across all roots
347
+ /** @type {Map<Module, RuntimeSpec>} */
348
+ const moduleRuntimeCache = new Map();
276
349
  for (const currentRoot of relevantModules) {
277
350
  // when used by another configuration as inner:
278
351
  // the other configuration is better and we can skip this one
279
352
  // TODO reconsider that when it's only used in a different runtime
280
353
  if (usedAsInner.has(currentRoot)) continue;
281
354
 
282
- /** @type {RuntimeSpec} */
283
- let chunkRuntime;
284
- for (const r of chunkGraph.getModuleRuntimes(currentRoot)) {
285
- chunkRuntime = mergeRuntimeOwned(chunkRuntime, r);
286
- }
355
+ const chunkRuntime = getMergedModuleRuntime(
356
+ chunkGraph,
357
+ moduleRuntimeCache,
358
+ currentRoot
359
+ );
287
360
  const exportsInfo = moduleGraph.getExportsInfo(currentRoot);
288
361
  const filteredRuntime = filterRuntime(chunkRuntime, (r) =>
289
362
  exportsInfo.isModuleUsed(r)
@@ -295,10 +368,12 @@ class ModuleConcatenationPlugin {
295
368
  ? undefined
296
369
  : filteredRuntime;
297
370
 
298
- // create a configuration with the root
371
+ // create a configuration with the root; cache the root's chunks once
372
+ // so every candidate check reuses them instead of re-materializing
299
373
  const currentConfiguration = new ConcatConfiguration(
300
374
  currentRoot,
301
- activeRuntime
375
+ activeRuntime,
376
+ [...chunkGraph.getModuleChunksIterable(currentRoot)]
302
377
  );
303
378
 
304
379
  // cache failures to add modules
@@ -330,6 +405,7 @@ class ModuleConcatenationPlugin {
330
405
  possibleInners,
331
406
  impCandidates,
332
407
  failureCache,
408
+ moduleRuntimeCache,
333
409
  chunkGraph,
334
410
  true,
335
411
  stats
@@ -375,10 +451,10 @@ class ModuleConcatenationPlugin {
375
451
  logger.debug(
376
452
  `${statsCandidates} candidates were considered for adding (${stats.cached} cached failure, ${stats.alreadyInConfig} already in config, ${stats.invalidModule} invalid module, ${stats.incorrectChunks} incorrect chunks, ${stats.incorrectDependency} incorrect dependency, ${stats.incorrectChunksOfImporter} incorrect chunks of importer, ${stats.incorrectModuleDependency} incorrect module dependency, ${stats.incorrectRuntimeCondition} incorrect runtime condition, ${stats.importerFailed} importer failed, ${stats.added} added)`
377
453
  );
378
- // HACK: Sort configurations by length and start with the longest one
379
- // to get the biggest groups possible. Used modules are marked with usedModules
380
- // TODO: Allow to reuse existing configuration while trying to add dependencies.
381
- // This would improve performance. O(n^2) -> O(n)
454
+ // Create the largest configurations first: if a root also ended up inside
455
+ // a bigger configuration, the bigger one wins (smaller skipped below).
456
+ // Configurations can't be reused across roots: a module shared by several
457
+ // chunks is concatenated into each consumer (module duplication).
382
458
  logger.time("sort concat configurations");
383
459
  concatConfigurations.sort((a, b) => b.modules.size - a.modules.size);
384
460
  logger.timeEnd("sort concat configurations");
@@ -391,8 +467,8 @@ class ModuleConcatenationPlugin {
391
467
  (concatConfiguration, callback) => {
392
468
  const rootModule = concatConfiguration.rootModule;
393
469
 
394
- // Avoid overlapping configurations
395
- // TODO: remove this when todo above is fixed
470
+ // Root already concatenated into a larger configuration: skip.
471
+ // (Inner modules may still be shared, e.g. duplicated across entries.)
396
472
  if (usedModules.has(rootModule)) return callback();
397
473
  const modules = concatConfiguration.getModules();
398
474
  for (const m of modules) {
@@ -454,7 +530,8 @@ class ModuleConcatenationPlugin {
454
530
  (c) =>
455
531
  c.originModule === m &&
456
532
  !(
457
- c.dependency instanceof HarmonyImportDependency &&
533
+ c.dependency &&
534
+ Dependency.canConcatenate(c.dependency) &&
458
535
  modules.has(c.module)
459
536
  )
460
537
  );
@@ -497,7 +574,8 @@ class ModuleConcatenationPlugin {
497
574
  const otherModule =
498
575
  c.module === rootModule ? c.originModule : c.module;
499
576
  const innerConnection =
500
- c.dependency instanceof HarmonyImportDependency &&
577
+ c.dependency &&
578
+ Dependency.canConcatenate(c.dependency) &&
501
579
  modules.has(/** @type {Module} */ (otherModule));
502
580
  return !innerConnection;
503
581
  }
@@ -521,6 +599,27 @@ class ModuleConcatenationPlugin {
521
599
  }
522
600
 
523
601
  /**
602
+ * Checks whether the module `import defer`s a module already in the config.
603
+ * @param {ModuleGraph} moduleGraph the module graph
604
+ * @param {Module} module the candidate module
605
+ * @param {ConcatConfiguration} config the concat configuration
606
+ * @returns {boolean} true when a deferred import targets a module in the config
607
+ */
608
+ _defersModuleIn(moduleGraph, module, config) {
609
+ for (const dep of module.dependencies) {
610
+ if (
611
+ dep instanceof HarmonyImportDependency &&
612
+ ImportPhaseUtils.isDefer(dep.phase)
613
+ ) {
614
+ const target = moduleGraph.getModule(dep);
615
+ if (target && config.has(target)) return true;
616
+ }
617
+ }
618
+ return false;
619
+ }
620
+
621
+ /**
622
+ * Returns the imported modules.
524
623
  * @param {Compilation} compilation the compilation
525
624
  * @param {Module} module the module to be added
526
625
  * @param {RuntimeSpec} runtime the runtime scope
@@ -531,8 +630,8 @@ class ModuleConcatenationPlugin {
531
630
  /** @type {Set<Module>} */
532
631
  const set = new Set();
533
632
  for (const dep of module.dependencies) {
534
- // Get reference info only for harmony Dependencies
535
- if (!(dep instanceof HarmonyImportDependency)) continue;
633
+ // Get reference info only for dependencies that support concatenation
634
+ if (!Dependency.canConcatenate(dep)) continue;
536
635
 
537
636
  const connection = moduleGraph.getConnection(dep);
538
637
  // Reference is valid and has a module
@@ -562,6 +661,7 @@ class ModuleConcatenationPlugin {
562
661
  }
563
662
 
564
663
  /**
664
+ * Returns the problematic module.
565
665
  * @param {Compilation} compilation webpack compilation
566
666
  * @param {ConcatConfiguration} config concat configuration (will be modified when added)
567
667
  * @param {Module} module the module to be added
@@ -570,6 +670,7 @@ class ModuleConcatenationPlugin {
570
670
  * @param {Set<Module>} possibleModules modules that are candidates
571
671
  * @param {Set<Module>} candidates list of potential candidates (will be added to)
572
672
  * @param {Map<Module, Problem>} failureCache cache for problematic modules to be more performant
673
+ * @param {Map<Module, RuntimeSpec>} moduleRuntimeCache memoized merged runtime per module, shared across roots
573
674
  * @param {ChunkGraph} chunkGraph the chunk graph
574
675
  * @param {boolean} avoidMutateOnFailure avoid mutating the config when adding fails
575
676
  * @param {Statistics} statistics gathering metrics
@@ -584,6 +685,7 @@ class ModuleConcatenationPlugin {
584
685
  possibleModules,
585
686
  candidates,
586
687
  failureCache,
688
+ moduleRuntimeCache,
587
689
  chunkGraph,
588
690
  avoidMutateOnFailure,
589
691
  statistics
@@ -602,17 +704,46 @@ class ModuleConcatenationPlugin {
602
704
 
603
705
  // Not possible to add?
604
706
  if (!possibleModules.has(module)) {
605
- statistics.invalidModule++;
606
- failureCache.set(module, module); // cache failures for performance
607
- return module;
707
+ return cacheFailure(
708
+ failureCache,
709
+ statistics,
710
+ "invalidModule",
711
+ module,
712
+ module
713
+ );
714
+ }
715
+
716
+ // A deferred import must stay a concatenation boundary: concatenating a
717
+ // module with a module it `import defer`s (a cycle) would erase the
718
+ // deferred namespace's lazy-evaluation and exotic-object semantics.
719
+ if (
720
+ compilation.options.experiments.deferImport &&
721
+ this._defersModuleIn(compilation.moduleGraph, module, config)
722
+ ) {
723
+ /**
724
+ * @param {RequestShortener} requestShortener request shortener
725
+ * @returns {string} problem description
726
+ */
727
+ const problem = (requestShortener) =>
728
+ `Module ${module.readableIdentifier(
729
+ requestShortener
730
+ )} imports a module in this configuration via import defer`;
731
+ return cacheFailure(
732
+ failureCache,
733
+ statistics,
734
+ "incorrectDependency",
735
+ module,
736
+ problem
737
+ );
608
738
  }
609
739
 
610
740
  // Module must be in the correct chunks
611
- const missingChunks = [
612
- ...chunkGraph.getModuleChunksIterable(config.rootModule)
613
- ].filter((chunk) => !chunkGraph.isModuleInChunk(module, chunk));
741
+ const missingChunks = config.rootChunks.filter(
742
+ (chunk) => !chunkGraph.isModuleInChunk(module, chunk)
743
+ );
614
744
  if (missingChunks.length > 0) {
615
745
  /**
746
+ * Returns problem description.
616
747
  * @param {RequestShortener} requestShortener request shortener
617
748
  * @returns {string} problem description
618
749
  */
@@ -635,9 +766,13 @@ class ModuleConcatenationPlugin {
635
766
  ", "
636
767
  )}, module is in chunk(s) ${chunks.join(", ")})`;
637
768
  };
638
- statistics.incorrectChunks++;
639
- failureCache.set(module, problem); // cache failures for performance
640
- return problem;
769
+ return cacheFailure(
770
+ failureCache,
771
+ statistics,
772
+ "incorrectChunks",
773
+ module,
774
+ problem
775
+ );
641
776
  }
642
777
 
643
778
  const moduleGraph = compilation.moduleGraph;
@@ -656,6 +791,7 @@ class ModuleConcatenationPlugin {
656
791
  );
657
792
  if (activeNonModulesConnections.length > 0) {
658
793
  /**
794
+ * Returns problem description.
659
795
  * @param {RequestShortener} requestShortener request shortener
660
796
  * @returns {string} problem description
661
797
  */
@@ -675,9 +811,13 @@ class ModuleConcatenationPlugin {
675
811
  : "in an unsupported way"
676
812
  }`;
677
813
  };
678
- statistics.incorrectDependency++;
679
- failureCache.set(module, problem); // cache failures for performance
680
- return problem;
814
+ return cacheFailure(
815
+ failureCache,
816
+ statistics,
817
+ "incorrectDependency",
818
+ module,
819
+ problem
820
+ );
681
821
  }
682
822
  }
683
823
 
@@ -689,11 +829,11 @@ class ModuleConcatenationPlugin {
689
829
  if (chunkGraph.getNumberOfModuleChunks(originModule) === 0) continue;
690
830
 
691
831
  // We don't care for connections from other runtimes
692
- /** @type {RuntimeSpec} */
693
- let originRuntime;
694
- for (const r of chunkGraph.getModuleRuntimes(originModule)) {
695
- originRuntime = mergeRuntimeOwned(originRuntime, r);
696
- }
832
+ const originRuntime = getMergedModuleRuntime(
833
+ chunkGraph,
834
+ moduleRuntimeCache,
835
+ originModule
836
+ );
697
837
 
698
838
  if (!intersectRuntime(runtime, originRuntime)) continue;
699
839
 
@@ -711,9 +851,7 @@ class ModuleConcatenationPlugin {
711
851
 
712
852
  // Module must be in the same chunks like the referencing module
713
853
  const otherChunkModules = incomingModules.filter((originModule) => {
714
- for (const chunk of chunkGraph.getModuleChunksIterable(
715
- config.rootModule
716
- )) {
854
+ for (const chunk of config.rootChunks) {
717
855
  if (!chunkGraph.isModuleInChunk(originModule, chunk)) {
718
856
  return true;
719
857
  }
@@ -722,6 +860,7 @@ class ModuleConcatenationPlugin {
722
860
  });
723
861
  if (otherChunkModules.length > 0) {
724
862
  /**
863
+ * Returns problem description.
725
864
  * @param {RequestShortener} requestShortener request shortener
726
865
  * @returns {string} problem description
727
866
  */
@@ -735,9 +874,13 @@ class ModuleConcatenationPlugin {
735
874
  ", "
736
875
  )}`;
737
876
  };
738
- statistics.incorrectChunksOfImporter++;
739
- failureCache.set(module, problem); // cache failures for performance
740
- return problem;
877
+ return cacheFailure(
878
+ failureCache,
879
+ statistics,
880
+ "incorrectChunksOfImporter",
881
+ module,
882
+ problem
883
+ );
741
884
  }
742
885
 
743
886
  /** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
@@ -746,7 +889,13 @@ class ModuleConcatenationPlugin {
746
889
  const selected = connections.filter(
747
890
  (connection) =>
748
891
  !connection.dependency ||
749
- !(connection.dependency instanceof HarmonyImportDependency)
892
+ (!Dependency.canConcatenate(connection.dependency) &&
893
+ // exports self-references of a concatenated CommonJS module
894
+ // are rewritten in place, so they don't block concatenation
895
+ !(
896
+ originModule === module &&
897
+ connection.dependency instanceof CommonJsSelfReferenceDependency
898
+ ))
750
899
  );
751
900
  if (selected.length > 0) {
752
901
  nonHarmonyConnections.set(originModule, connections);
@@ -754,6 +903,7 @@ class ModuleConcatenationPlugin {
754
903
  }
755
904
  if (nonHarmonyConnections.size > 0) {
756
905
  /**
906
+ * Returns problem description.
757
907
  * @param {RequestShortener} requestShortener request shortener
758
908
  * @returns {string} problem description
759
909
  */
@@ -780,9 +930,13 @@ class ModuleConcatenationPlugin {
780
930
  ", "
781
931
  )}`;
782
932
  };
783
- statistics.incorrectModuleDependency++;
784
- failureCache.set(module, problem); // cache failures for performance
785
- return problem;
933
+ return cacheFailure(
934
+ failureCache,
935
+ statistics,
936
+ "incorrectModuleDependency",
937
+ module,
938
+ problem
939
+ );
786
940
  }
787
941
 
788
942
  if (runtime !== undefined && typeof runtime !== "string") {
@@ -815,6 +969,7 @@ class ModuleConcatenationPlugin {
815
969
  }
816
970
  if (otherRuntimeConnections.length > 0) {
817
971
  /**
972
+ * Returns problem description.
818
973
  * @param {RequestShortener} requestShortener request shortener
819
974
  * @returns {string} problem description
820
975
  */
@@ -832,9 +987,13 @@ class ModuleConcatenationPlugin {
832
987
  /** @type {RuntimeSpec} */ (runtimeCondition)
833
988
  )})`
834
989
  ).join(", ")}`;
835
- statistics.incorrectRuntimeCondition++;
836
- failureCache.set(module, problem); // cache failures for performance
837
- return problem;
990
+ return cacheFailure(
991
+ failureCache,
992
+ statistics,
993
+ "incorrectRuntimeCondition",
994
+ module,
995
+ problem
996
+ );
838
997
  }
839
998
  }
840
999
 
@@ -860,15 +1019,20 @@ class ModuleConcatenationPlugin {
860
1019
  possibleModules,
861
1020
  candidates,
862
1021
  failureCache,
1022
+ moduleRuntimeCache,
863
1023
  chunkGraph,
864
1024
  false,
865
1025
  statistics
866
1026
  );
867
1027
  if (problem) {
868
1028
  if (backup !== undefined) config.rollback(backup);
869
- statistics.importerFailed++;
870
- failureCache.set(module, problem); // cache failures for performance
871
- return problem;
1029
+ return cacheFailure(
1030
+ failureCache,
1031
+ statistics,
1032
+ "importerFailed",
1033
+ module,
1034
+ problem
1035
+ );
872
1036
  }
873
1037
  }
874
1038
 
@@ -885,14 +1049,18 @@ class ModuleConcatenationPlugin {
885
1049
 
886
1050
  class ConcatConfiguration {
887
1051
  /**
1052
+ * Creates an instance of ConcatConfiguration.
888
1053
  * @param {Module} rootModule the root module
889
1054
  * @param {RuntimeSpec} runtime the runtime
1055
+ * @param {Chunk[]} rootChunks the chunks the root module is in
890
1056
  */
891
- constructor(rootModule, runtime) {
1057
+ constructor(rootModule, runtime, rootChunks) {
892
1058
  /** @type {Module} */
893
1059
  this.rootModule = rootModule;
894
1060
  /** @type {RuntimeSpec} */
895
1061
  this.runtime = runtime;
1062
+ /** @type {Chunk[]} the root's chunks, reused for every candidate's chunk check */
1063
+ this.rootChunks = rootChunks;
896
1064
  /** @type {Set<Module>} */
897
1065
  this.modules = new Set();
898
1066
  this.modules.add(rootModule);
@@ -901,6 +1069,7 @@ class ConcatConfiguration {
901
1069
  }
902
1070
 
903
1071
  /**
1072
+ * Processes the provided module.
904
1073
  * @param {Module} module the module
905
1074
  */
906
1075
  add(module) {
@@ -908,6 +1077,7 @@ class ConcatConfiguration {
908
1077
  }
909
1078
 
910
1079
  /**
1080
+ * Returns true, when the module is in the module set.
911
1081
  * @param {Module} module the module
912
1082
  * @returns {boolean} true, when the module is in the module set
913
1083
  */
@@ -920,6 +1090,7 @@ class ConcatConfiguration {
920
1090
  }
921
1091
 
922
1092
  /**
1093
+ * Adds the provided module to the concat configuration.
923
1094
  * @param {Module} module the module
924
1095
  * @param {Problem} problem the problem
925
1096
  */
@@ -928,6 +1099,7 @@ class ConcatConfiguration {
928
1099
  }
929
1100
 
930
1101
  /**
1102
+ * Gets warnings sorted.
931
1103
  * @returns {Warnings} warnings
932
1104
  */
933
1105
  getWarningsSorted() {
@@ -943,6 +1115,7 @@ class ConcatConfiguration {
943
1115
  }
944
1116
 
945
1117
  /**
1118
+ * Returns modules as set.
946
1119
  * @returns {Set<Module>} modules as set
947
1120
  */
948
1121
  getModules() {
@@ -954,6 +1127,7 @@ class ConcatConfiguration {
954
1127
  }
955
1128
 
956
1129
  /**
1130
+ * Processes the provided snapshot.
957
1131
  * @param {number} snapshot snapshot
958
1132
  */
959
1133
  rollback(snapshot) {