webpack 5.106.1 → 5.107.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 (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -14,6 +14,7 @@ const {
14
14
  ReplaceSource
15
15
  } = require("webpack-sources");
16
16
  const ConcatenationScope = require("../ConcatenationScope");
17
+ const Dependency = require("../Dependency");
17
18
  const { UsageState } = require("../ExportsInfo");
18
19
  const Module = require("../Module");
19
20
  const {
@@ -24,7 +25,6 @@ const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
24
25
  const RuntimeGlobals = require("../RuntimeGlobals");
25
26
  const Template = require("../Template");
26
27
  const { DEFAULTS } = require("../config/defaults");
27
- const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
28
28
  const { ImportPhaseUtils } = require("../dependencies/ImportPhase");
29
29
  const JavascriptParser = require("../javascript/JavascriptParser");
30
30
  const {
@@ -55,15 +55,14 @@ const {
55
55
  subtractRuntimeCondition
56
56
  } = require("../util/runtime");
57
57
 
58
- /** @typedef {import("eslint-scope").Reference} Reference */
59
- /** @typedef {import("eslint-scope").Scope} Scope */
60
- /** @typedef {import("eslint-scope").Variable} Variable */
61
58
  /** @typedef {import("webpack-sources").Source} Source */
62
59
  /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
63
60
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
64
61
  /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
65
62
  /** @typedef {import("../Compilation")} Compilation */
66
63
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
64
+ /** @typedef {import("../dependencies/ModuleDependency")} ModuleDependency */
65
+ /** @typedef {import("../dependencies/HarmonyImportDependency")} HarmonyImportDependency */
67
66
  /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
68
67
  /** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
69
68
  /** @typedef {import("../Module").BuildCallback} BuildCallback */
@@ -86,6 +85,9 @@ const {
86
85
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
87
86
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
88
87
  /** @typedef {import("../javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
88
+ /** @typedef {import("../javascript/JavascriptModulesPlugin").Scope} Scope */
89
+ /** @typedef {import("../javascript/JavascriptModulesPlugin").Reference} Reference */
90
+ /** @typedef {import("../javascript/JavascriptModulesPlugin").Variable} Variable */
89
91
  /** @typedef {import("../javascript/JavascriptParser").Program} Program */
90
92
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
91
93
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
@@ -362,6 +364,20 @@ const getFinalBinding = (
362
364
  switch (exportName[0]) {
363
365
  case "default":
364
366
  exportName = exportName.slice(1);
367
+ if (deferred) {
368
+ // `ns.default` for a deferred default-with-named external
369
+ // module must read through the optimized `.a` getter
370
+ // (which lazily evaluates the module and returns its
371
+ // exports), not the proxy namespace itself — otherwise
372
+ // `typeof ns.default` / `ns.default instanceof X`
373
+ // observe the proxy instead of the actual default.
374
+ return {
375
+ info,
376
+ rawName: `${info.deferredName}.a`,
377
+ ids: exportName,
378
+ exportName
379
+ };
380
+ }
365
381
  break;
366
382
  case "__esModule":
367
383
  return {
@@ -392,6 +408,18 @@ const getFinalBinding = (
392
408
  exportName
393
409
  };
394
410
  }
411
+ if (deferred) {
412
+ // As with default-with-named above, `ns.default` for a
413
+ // deferred default-only external must read through the
414
+ // optimized `.a` getter so that `typeof` / `instanceof`
415
+ // observe the actual default value rather than the proxy.
416
+ return {
417
+ info,
418
+ rawName: `${info.deferredName}.a`,
419
+ ids: exportName,
420
+ exportName
421
+ };
422
+ }
395
423
  break;
396
424
  }
397
425
  case "dynamic":
@@ -795,6 +823,7 @@ class ConcatenatedModule extends Module {
795
823
  }
796
824
 
797
825
  /**
826
+ * Returns the source types this module can generate.
798
827
  * @returns {SourceTypes} types available (do not mutate)
799
828
  */
800
829
  getSourceTypes() {
@@ -806,6 +835,7 @@ class ConcatenatedModule extends Module {
806
835
  }
807
836
 
808
837
  /**
838
+ * Returns the unique identifier used to reference this module.
809
839
  * @returns {string} a unique identifier of the module
810
840
  */
811
841
  identifier() {
@@ -813,6 +843,7 @@ class ConcatenatedModule extends Module {
813
843
  }
814
844
 
815
845
  /**
846
+ * Returns a human-readable identifier for this module.
816
847
  * @param {RequestShortener} requestShortener the request shortener
817
848
  * @returns {string} a user readable identifier of the module
818
849
  */
@@ -823,6 +854,7 @@ class ConcatenatedModule extends Module {
823
854
  }
824
855
 
825
856
  /**
857
+ * Gets the library identifier.
826
858
  * @param {LibIdentOptions} options options
827
859
  * @returns {LibIdent | null} an identifier for library inclusion
828
860
  */
@@ -831,6 +863,7 @@ class ConcatenatedModule extends Module {
831
863
  }
832
864
 
833
865
  /**
866
+ * Returns the path used when matching this module against rule conditions.
834
867
  * @returns {NameForCondition | null} absolute path which should be used for condition matching (usually the resource path)
835
868
  */
836
869
  nameForCondition() {
@@ -838,6 +871,7 @@ class ConcatenatedModule extends Module {
838
871
  }
839
872
 
840
873
  /**
874
+ * Gets side effects connection state.
841
875
  * @param {ModuleGraph} moduleGraph the module graph
842
876
  * @returns {ConnectionState} how this module should be connected to referencing modules when consumed for side-effects only
843
877
  */
@@ -846,6 +880,7 @@ class ConcatenatedModule extends Module {
846
880
  }
847
881
 
848
882
  /**
883
+ * Builds the module using the provided compilation context.
849
884
  * @param {WebpackOptions} options webpack options
850
885
  * @param {Compilation} compilation the compilation
851
886
  * @param {ResolverWithOptions} resolver the resolver
@@ -883,7 +918,7 @@ class ConcatenatedModule extends Module {
883
918
  // populate dependencies
884
919
  for (const d of m.dependencies.filter(
885
920
  (dep) =>
886
- !(dep instanceof HarmonyImportDependency) ||
921
+ !Dependency.canConcatenate(dep) ||
887
922
  !this._modules.has(
888
923
  /** @type {Module} */
889
924
  (compilation.moduleGraph.getModule(dep))
@@ -891,6 +926,20 @@ class ConcatenatedModule extends Module {
891
926
  )) {
892
927
  this.dependencies.push(d);
893
928
  }
929
+ // populate codeGenerationDependencies — the inner modules'
930
+ // templates are applied during ConcatenatedModule.codeGeneration,
931
+ // so the referenced modules must have been code-generated by then.
932
+ // Skip references that point back into the concat set itself.
933
+ if (m.codeGenerationDependencies !== undefined) {
934
+ for (const d of m.codeGenerationDependencies) {
935
+ const referenced =
936
+ /** @type {Module} */
937
+ (compilation.moduleGraph.getModule(d));
938
+ if (!this._modules.has(referenced)) {
939
+ this.addCodeGenerationDependency(d);
940
+ }
941
+ }
942
+ }
894
943
  // populate blocks
895
944
  for (const d of m.blocks) {
896
945
  this.blocks.push(d);
@@ -958,6 +1007,7 @@ class ConcatenatedModule extends Module {
958
1007
  }
959
1008
 
960
1009
  /**
1010
+ * Returns the estimated size for the requested source type.
961
1011
  * @param {string=} type the source type for which the size should be estimated
962
1012
  * @returns {number} the estimated size of the module (must be non-zero)
963
1013
  */
@@ -1000,7 +1050,10 @@ class ConcatenatedModule extends Module {
1000
1050
  */
1001
1051
  const references = connections
1002
1052
  .filter((connection) => {
1003
- if (!(connection.dependency instanceof HarmonyImportDependency)) {
1053
+ if (
1054
+ !connection.dependency ||
1055
+ !Dependency.canConcatenate(connection.dependency)
1056
+ ) {
1004
1057
  return false;
1005
1058
  }
1006
1059
  if (
@@ -1243,6 +1296,7 @@ class ConcatenatedModule extends Module {
1243
1296
  }
1244
1297
 
1245
1298
  /**
1299
+ * Adds the provided file dependencies to the module.
1246
1300
  * @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
1247
1301
  * @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
1248
1302
  * @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
@@ -1265,6 +1319,7 @@ class ConcatenatedModule extends Module {
1265
1319
  }
1266
1320
 
1267
1321
  /**
1322
+ * Generates code and runtime requirements for this module.
1268
1323
  * @param {CodeGenerationContext} context context for code generation
1269
1324
  * @returns {CodeGenerationResult} result
1270
1325
  */
@@ -2244,6 +2299,7 @@ ${defineGetters}`
2244
2299
  }
2245
2300
 
2246
2301
  /**
2302
+ * Updates the hash with the data contributed by this instance.
2247
2303
  * @param {Hash} hash the hash used to track dependencies
2248
2304
  * @param {UpdateHashContext} context context
2249
2305
  * @returns {void}
@@ -15,13 +15,14 @@ const PLUGIN_NAME = "EnsureChunkConditionsPlugin";
15
15
 
16
16
  class EnsureChunkConditionsPlugin {
17
17
  /**
18
- * Apply the plugin
18
+ * Applies the plugin by registering its hooks on the compiler.
19
19
  * @param {Compiler} compiler the compiler instance
20
20
  * @returns {void}
21
21
  */
22
22
  apply(compiler) {
23
23
  compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
24
24
  /**
25
+ * Handles the hook callback for this code path.
25
26
  * @param {Iterable<Chunk>} chunks the chunks
26
27
  */
27
28
  const handler = (chunks) => {
@@ -16,7 +16,7 @@ const PLUGIN_NAME = "FlagIncludedChunksPlugin";
16
16
 
17
17
  class FlagIncludedChunksPlugin {
18
18
  /**
19
- * Apply the plugin
19
+ * Applies the plugin by registering its hooks on the compiler.
20
20
  * @param {Compiler} compiler the compiler instance
21
21
  * @returns {void}
22
22
  */
@@ -46,6 +46,7 @@ class FlagIncludedChunksPlugin {
46
46
  const modulos = Array.from(
47
47
  { length: 31 },
48
48
  /**
49
+ * Handles the callback logic for this hook.
49
50
  * @param {number} x x
50
51
  * @param {number} i i
51
52
  * @returns {number} result
@@ -22,6 +22,7 @@ const JavascriptParser = require("../javascript/JavascriptParser");
22
22
  /** @typedef {(value: boolean | Set<string> | undefined) => void} UsageCallback */
23
23
 
24
24
  /**
25
+ * Defines the state object type used by this module.
25
26
  * @typedef {object} StateObject
26
27
  * @property {InnerGraph} innerGraph
27
28
  * @property {TopLevelSymbol=} currentTopLevelSymbol
@@ -32,6 +33,7 @@ const JavascriptParser = require("../javascript/JavascriptParser");
32
33
 
33
34
  class TopLevelSymbol {
34
35
  /**
36
+ * Creates an instance of TopLevelSymbol.
35
37
  * @param {string} name name of the variable
36
38
  */
37
39
  constructor(name) {
@@ -47,6 +49,7 @@ const parserStateMap = new WeakMap();
47
49
  const topLevelSymbolTag = Symbol("top level symbol");
48
50
 
49
51
  /**
52
+ * Returns state.
50
53
  * @param {ParserState} parserState parser state
51
54
  * @returns {State | undefined} state
52
55
  */
@@ -55,6 +58,7 @@ function getState(parserState) {
55
58
  }
56
59
 
57
60
  /**
61
+ * Processes the provided state.
58
62
  * @param {ParserState} state parser state
59
63
  * @param {TopLevelSymbol | null} symbol the symbol, or null for all symbols
60
64
  * @param {Usage} usage usage data
@@ -79,6 +83,7 @@ module.exports.addUsage = (state, symbol, usage) => {
79
83
  /** @typedef {string | TopLevelSymbol | true} Usage */
80
84
 
81
85
  /**
86
+ * Processes the provided parser.
82
87
  * @param {JavascriptParser} parser the parser
83
88
  * @param {string} name name of variable
84
89
  * @param {Usage} usage usage data
@@ -95,6 +100,7 @@ module.exports.addVariableUsage = (parser, name, usage) => {
95
100
  };
96
101
 
97
102
  /**
103
+ * Processes the provided parser state.
98
104
  * @param {ParserState} parserState parser state
99
105
  * @returns {void}
100
106
  */
@@ -103,6 +109,7 @@ module.exports.bailout = (parserState) => {
103
109
  };
104
110
 
105
111
  /**
112
+ * Processes the provided parser state.
106
113
  * @param {ParserState} parserState parser state
107
114
  * @returns {void}
108
115
  */
@@ -121,6 +128,7 @@ module.exports.enable = (parserState) => {
121
128
  /** @typedef {Set<string> | boolean} UsedByExports */
122
129
 
123
130
  /**
131
+ * Usage callback map.
124
132
  * @param {Dependency} dependency the dependency
125
133
  * @param {UsedByExports | undefined} usedByExports usedByExports info
126
134
  * @param {ModuleGraph} moduleGraph moduleGraph
@@ -137,7 +145,7 @@ module.exports.getDependencyUsedByExportsCondition = (
137
145
  /** @type {Module} */
138
146
  (moduleGraph.getParentModule(dependency));
139
147
  const exportsInfo = moduleGraph.getExportsInfo(selfModule);
140
- return (connections, runtime) => {
148
+ return (_connections, runtime) => {
141
149
  for (const exportName of usedByExports) {
142
150
  if (exportsInfo.getUsed(exportName, runtime) !== UsageState.Unused) {
143
151
  return true;
@@ -150,6 +158,7 @@ module.exports.getDependencyUsedByExportsCondition = (
150
158
  };
151
159
 
152
160
  /**
161
+ * Returns usage data.
153
162
  * @param {ParserState} state parser state
154
163
  * @returns {TopLevelSymbol | void} usage data
155
164
  */
@@ -162,6 +171,7 @@ module.exports.getTopLevelSymbol = (state) => {
162
171
  };
163
172
 
164
173
  /**
174
+ * Processes the provided state.
165
175
  * @param {ParserState} state parser state
166
176
  * @returns {void}
167
177
  */
@@ -260,6 +270,7 @@ module.exports.inferDependencyUsage = (state) => {
260
270
  };
261
271
 
262
272
  /**
273
+ * Returns false, when unused. Otherwise true.
263
274
  * @param {Dependency} dependency the dependency
264
275
  * @param {UsedByExports | undefined} usedByExports usedByExports info
265
276
  * @param {ModuleGraph} moduleGraph moduleGraph
@@ -290,6 +301,7 @@ module.exports.isDependencyUsedByExports = (
290
301
  };
291
302
 
292
303
  /**
304
+ * Returns true, when enabled.
293
305
  * @param {ParserState} parserState parser state
294
306
  * @returns {boolean} true, when enabled
295
307
  */
@@ -299,6 +311,7 @@ module.exports.isEnabled = (parserState) => {
299
311
  };
300
312
 
301
313
  /**
314
+ * Processes the provided state.
302
315
  * @param {ParserState} state parser state
303
316
  * @param {UsageCallback} onUsageCallback on usage callback
304
317
  */
@@ -326,6 +339,7 @@ module.exports.onUsage = (state, onUsageCallback) => {
326
339
  };
327
340
 
328
341
  /**
342
+ * Processes the provided state.
329
343
  * @param {ParserState} state parser state
330
344
  * @param {TopLevelSymbol | undefined} symbol the symbol
331
345
  */
@@ -338,6 +352,7 @@ module.exports.setTopLevelSymbol = (state, symbol) => {
338
352
  };
339
353
 
340
354
  /**
355
+ * Returns symbol.
341
356
  * @param {JavascriptParser} parser parser
342
357
  * @param {string} name name of variable
343
358
  * @returns {TopLevelSymbol | undefined} symbol
@@ -9,6 +9,7 @@ const {
9
9
  JAVASCRIPT_MODULE_TYPE_AUTO,
10
10
  JAVASCRIPT_MODULE_TYPE_ESM
11
11
  } = require("../ModuleTypeConstants");
12
+ const RuntimeGlobals = require("../RuntimeGlobals");
12
13
  const PureExpressionDependency = require("../dependencies/PureExpressionDependency");
13
14
  const InnerGraph = require("./InnerGraph");
14
15
 
@@ -29,10 +30,11 @@ const InnerGraph = require("./InnerGraph");
29
30
  const { topLevelSymbolTag } = InnerGraph;
30
31
 
31
32
  const PLUGIN_NAME = "InnerGraphPlugin";
33
+ const impureVariableDeclarationKinds = new Set(["using", "await using"]);
32
34
 
33
35
  class InnerGraphPlugin {
34
36
  /**
35
- * Apply the plugin
37
+ * Applies the plugin by registering its hooks on the compiler.
36
38
  * @param {Compiler} compiler the compiler instance
37
39
  * @returns {void}
38
40
  */
@@ -48,12 +50,14 @@ class InnerGraphPlugin {
48
50
  );
49
51
 
50
52
  /**
53
+ * Handles the hook callback for this code path.
51
54
  * @param {JavascriptParser} parser the parser
52
55
  * @param {JavascriptParserOptions} parserOptions options
53
56
  * @returns {void}
54
57
  */
55
58
  const handler = (parser, parserOptions) => {
56
59
  /**
60
+ * Processes the provided sup.
57
61
  * @param {Expression} sup sup
58
62
  */
59
63
  const onUsageSuper = (sup) => {
@@ -198,14 +202,22 @@ class InnerGraphPlugin {
198
202
  }
199
203
  });
200
204
 
201
- parser.hooks.preDeclarator.tap(PLUGIN_NAME, (decl, _statement) => {
205
+ parser.hooks.preDeclarator.tap(PLUGIN_NAME, (decl, statement) => {
202
206
  if (!InnerGraph.isEnabled(parser.state)) return;
207
+ if (impureVariableDeclarationKinds.has(statement.kind)) return;
203
208
  if (
204
209
  parser.scope.topLevelScope === true &&
205
210
  decl.init &&
206
211
  decl.id.type === "Identifier"
207
212
  ) {
208
213
  const name = decl.id.name;
214
+ // Skip webpack runtime variables handled by CompatibilityPlugin
215
+ if (
216
+ name === RuntimeGlobals.require ||
217
+ name === RuntimeGlobals.exports
218
+ ) {
219
+ return;
220
+ }
209
221
  if (
210
222
  decl.init.type === "ClassExpression" &&
211
223
  parser.isPure(
@@ -14,6 +14,7 @@ const { compareChunks } = require("../util/comparators");
14
14
  /** @typedef {import("../Compiler")} Compiler */
15
15
 
16
16
  /**
17
+ * Defines the chunk combination type used by this module.
17
18
  * @typedef {object} ChunkCombination
18
19
  * @property {boolean} deleted this is set to true when combination was removed
19
20
  * @property {number} sizeDiff
@@ -27,6 +28,7 @@ const { compareChunks } = require("../util/comparators");
27
28
  */
28
29
 
29
30
  /**
31
+ * Adds the provided map to this object.
30
32
  * @template K, V
31
33
  * @param {Map<K, Set<V>>} map map
32
34
  * @param {K} key key
@@ -45,6 +47,7 @@ const PLUGIN_NAME = "LimitChunkCountPlugin";
45
47
 
46
48
  class LimitChunkCountPlugin {
47
49
  /**
50
+ * Creates an instance of LimitChunkCountPlugin.
48
51
  * @param {LimitChunkCountPluginOptions=} options options object
49
52
  */
50
53
  constructor(options = { maxChunks: 1 }) {
@@ -53,6 +56,7 @@ class LimitChunkCountPlugin {
53
56
  }
54
57
 
55
58
  /**
59
+ * Applies the plugin by registering its hooks on the compiler.
56
60
  * @param {Compiler} compiler the webpack compiler
57
61
  * @returns {void}
58
62
  */
@@ -105,11 +109,13 @@ class LimitChunkCountPlugin {
105
109
 
106
110
  // Layer 2: ordered by smallest combined size
107
111
  /**
112
+ * Handles the stage callback for this hook.
108
113
  * @param {ChunkCombination} c combination
109
114
  * @returns {number} integrated size
110
115
  */
111
116
  (c) => c.integratedSize,
112
117
  /**
118
+ * Handles the callback logic for this hook.
113
119
  * @param {number} a a
114
120
  * @param {number} b b
115
121
  * @returns {number} result
@@ -118,11 +124,13 @@ class LimitChunkCountPlugin {
118
124
 
119
125
  // Layer 3: ordered by position difference in orderedChunk (-> to be deterministic)
120
126
  /**
127
+ * Handles the callback logic for this hook.
121
128
  * @param {ChunkCombination} c combination
122
129
  * @returns {number} position difference
123
130
  */
124
131
  (c) => c.bIdx - c.aIdx,
125
132
  /**
133
+ * Handles the callback logic for this hook.
126
134
  * @param {number} a a
127
135
  * @param {number} b b
128
136
  * @returns {number} result
@@ -131,6 +139,7 @@ class LimitChunkCountPlugin {
131
139
 
132
140
  // Layer 4: ordered by position in orderedChunk (-> to be deterministic)
133
141
  /**
142
+ * Handles the callback logic for this hook.
134
143
  * @param {ChunkCombination} a a
135
144
  * @param {ChunkCombination} b b
136
145
  * @returns {number} result
@@ -20,11 +20,13 @@ const { compareSelect, compareStringsNumeric } = require("../util/comparators");
20
20
  /** @typedef {import("../util/concatenate").UsedNames} UsedNames */
21
21
 
22
22
  /**
23
+ * Defines the comparator type used by this module.
23
24
  * @template T
24
25
  * @typedef {import("../util/comparators").Comparator<T>} Comparator
25
26
  */
26
27
 
27
28
  /**
29
+ * Checks whether it can mangle.
28
30
  * @param {ExportsInfo} exportsInfo exports info
29
31
  * @returns {boolean} mangle is possible
30
32
  */
@@ -45,6 +47,7 @@ const canMangle = (exportsInfo) => {
45
47
  /** @type {Comparator<ExportInfo>} */
46
48
  const comparator = compareSelect((e) => e.name, compareStringsNumeric);
47
49
  /**
50
+ * Mangle exports info.
48
51
  * @param {boolean} deterministic use deterministic names
49
52
  * @param {ExportsInfo} exportsInfo exports info
50
53
  * @param {boolean | undefined} isNamespace is namespace object
@@ -158,6 +161,7 @@ const PLUGIN_NAME = "MangleExportsPlugin";
158
161
 
159
162
  class MangleExportsPlugin {
160
163
  /**
164
+ * Creates an instance of MangleExportsPlugin.
161
165
  * @param {boolean} deterministic use deterministic names
162
166
  */
163
167
  constructor(deterministic) {
@@ -166,7 +170,7 @@ class MangleExportsPlugin {
166
170
  }
167
171
 
168
172
  /**
169
- * Apply the plugin
173
+ * Applies the plugin by registering its hooks on the compiler.
170
174
  * @param {Compiler} compiler the compiler instance
171
175
  * @returns {void}
172
176
  */
@@ -16,6 +16,7 @@ const PLUGIN_NAME = "MergeDuplicateChunksPlugin";
16
16
 
17
17
  class MergeDuplicateChunksPlugin {
18
18
  /**
19
+ * Creates an instance of MergeDuplicateChunksPlugin.
19
20
  * @param {MergeDuplicateChunksPluginOptions=} options options object
20
21
  */
21
22
  constructor(options = { stage: STAGE_BASIC }) {
@@ -24,6 +25,7 @@ class MergeDuplicateChunksPlugin {
24
25
  }
25
26
 
26
27
  /**
28
+ * Applies the plugin by registering its hooks on the compiler.
27
29
  * @param {Compiler} compiler the compiler
28
30
  * @returns {void}
29
31
  */
@@ -15,6 +15,7 @@ const PLUGIN_NAME = "MinChunkSizePlugin";
15
15
 
16
16
  class MinChunkSizePlugin {
17
17
  /**
18
+ * Creates an instance of MinChunkSizePlugin.
18
19
  * @param {MinChunkSizePluginOptions} options options object
19
20
  */
20
21
  constructor(options) {
@@ -23,7 +24,7 @@ class MinChunkSizePlugin {
23
24
  }
24
25
 
25
26
  /**
26
- * Apply the plugin
27
+ * Applies the plugin by registering its hooks on the compiler.
27
28
  * @param {Compiler} compiler the compiler instance
28
29
  * @returns {void}
29
30
  */
@@ -5,11 +5,12 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const SizeFormatHelpers = require("../SizeFormatHelpers");
9
- const WebpackError = require("../WebpackError");
8
+ const WebpackError = require("../errors/WebpackError");
9
+ const formatSize = require("../util/formatSize");
10
10
 
11
11
  class MinMaxSizeWarning extends WebpackError {
12
12
  /**
13
+ * Creates an instance of MinMaxSizeWarning.
13
14
  * @param {string[] | undefined} keys keys
14
15
  * @param {number} minSize minimum size
15
16
  * @param {number} maxSize maximum size
@@ -25,8 +26,8 @@ class MinMaxSizeWarning extends WebpackError {
25
26
  super(
26
27
  "SplitChunksPlugin\n" +
27
28
  `${keysMessage}\n` +
28
- `Configured minSize (${SizeFormatHelpers.formatSize(minSize)}) is ` +
29
- `bigger than maxSize (${SizeFormatHelpers.formatSize(maxSize)}).\n` +
29
+ `Configured minSize (${formatSize(minSize)}) is ` +
30
+ `bigger than maxSize (${formatSize(maxSize)}).\n` +
30
31
  "This seem to be a invalid optimization.splitChunks configuration."
31
32
  );
32
33
  }