@depup/webpack 5.109.2-depup.0 → 5.110.1-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 (640) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +26 -17
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +117 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +50 -13
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +101 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +32 -47
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +141 -85
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +332 -169
  89. package/lib/RuntimeTemplate.js +2792 -352
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +261 -79
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +36 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +57 -24
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +168 -88
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5324 -0
  160. package/lib/css/syntax.js +9579 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +27 -19
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +2 -2
  230. package/lib/dependencies/ImportDependency.js +24 -20
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +49 -35
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  290. package/lib/dependencies/WorkerDependency.js +28 -22
  291. package/lib/dependencies/WorkletDependency.js +15 -14
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/processExportInfo.js +5 -5
  294. package/lib/dll/DelegatedModule.js +34 -22
  295. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  296. package/lib/dll/DelegatedPlugin.js +2 -2
  297. package/lib/dll/DllEntryPlugin.js +2 -2
  298. package/lib/dll/DllModule.js +22 -15
  299. package/lib/dll/DllModuleFactory.js +7 -3
  300. package/lib/dll/DllPlugin.js +7 -5
  301. package/lib/dll/DllReferencePlugin.js +10 -7
  302. package/lib/dll/LibManifestPlugin.js +5 -5
  303. package/lib/electron/ElectronTargetPlugin.js +53 -49
  304. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  305. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  306. package/lib/errors/BroadContextsWarning.js +43 -0
  307. package/lib/errors/BuildCycleError.js +1 -1
  308. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  309. package/lib/errors/ChunkRenderError.js +1 -1
  310. package/lib/errors/CircularDependenciesWarning.js +38 -0
  311. package/lib/errors/CodeGenerationError.js +1 -1
  312. package/lib/errors/CommentCompilationWarning.js +1 -1
  313. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  314. package/lib/errors/DuplicateModulesWarning.js +45 -0
  315. package/lib/errors/DynamicExportsWarning.js +30 -0
  316. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  317. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  318. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  319. package/lib/errors/EvalUsageWarning.js +28 -0
  320. package/lib/errors/HookWebpackError.js +5 -5
  321. package/lib/errors/HotspotsWarning.js +57 -0
  322. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  323. package/lib/errors/InlinedAssetsWarning.js +36 -0
  324. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  325. package/lib/errors/LargeModulesWarning.js +45 -0
  326. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  327. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  328. package/lib/errors/MixedExportsWarning.js +41 -0
  329. package/lib/errors/ModuleDependencyError.js +13 -16
  330. package/lib/errors/ModuleDependencyWarning.js +5 -15
  331. package/lib/errors/ModuleHashingError.js +1 -1
  332. package/lib/errors/ModuleNotFoundError.js +2 -2
  333. package/lib/errors/ModuleParseError.js +1 -2
  334. package/lib/errors/ModuleRestoreError.js +1 -1
  335. package/lib/errors/ModuleStoreError.js +1 -1
  336. package/lib/errors/NodeStuffInWebError.js +1 -1
  337. package/lib/errors/OsDependentRuleWarning.js +31 -0
  338. package/lib/errors/PureAnnotationsWarning.js +36 -0
  339. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  340. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  341. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  342. package/lib/errors/TinyChunksWarning.js +40 -0
  343. package/lib/errors/TopLevelThisWarning.js +34 -0
  344. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  345. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  346. package/lib/errors/UnusedAliasesWarning.js +29 -0
  347. package/lib/errors/UnusedDefinesWarning.js +29 -0
  348. package/lib/errors/UnusedExternalsWarning.js +29 -0
  349. package/lib/errors/UnusedReexportsWarning.js +42 -0
  350. package/lib/errors/UnusedRuleWarning.js +29 -0
  351. package/lib/errors/WebpackError.js +9 -5
  352. package/lib/errors/deriveStackFromNestedError.js +90 -0
  353. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  354. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  355. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  356. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
  357. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  358. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  359. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  360. package/lib/hmr/lazyCompilationBackend.js +9 -6
  361. package/lib/hmr/parserHooks.js +56 -0
  362. package/lib/html/HtmlGenerator.js +277 -77
  363. package/lib/html/HtmlModule.js +7 -3
  364. package/lib/html/HtmlModulesPlugin.js +282 -162
  365. package/lib/html/HtmlParser.js +31 -86
  366. package/lib/html/data.js +1928 -0
  367. package/lib/html/htmlMinify.js +288 -0
  368. package/lib/html/syntax.js +5557 -1155
  369. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  370. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  371. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  372. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  373. package/lib/ids/IdHelpers.js +7 -8
  374. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  375. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  376. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  377. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  378. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  379. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  380. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  381. package/lib/index.js +10 -0
  382. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  383. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  384. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  385. package/lib/javascript/ChunkHelpers.js +1 -1
  386. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  387. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  388. package/lib/javascript/JavascriptGenerator.js +65 -165
  389. package/lib/javascript/JavascriptModule.js +9 -3
  390. package/lib/javascript/JavascriptModulesPlugin.js +98 -113
  391. package/lib/javascript/JavascriptParser.js +242 -99
  392. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  393. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  394. package/lib/javascript/StartupHelpers.js +55 -9
  395. package/lib/javascript/syntax.js +2678 -232
  396. package/lib/json/JsonData.js +8 -4
  397. package/lib/json/JsonGenerator.js +38 -16
  398. package/lib/json/JsonModule.js +7 -3
  399. package/lib/json/JsonModulesPlugin.js +1 -1
  400. package/lib/json/JsonParser.js +5 -6
  401. package/lib/library/AbstractLibraryPlugin.js +20 -14
  402. package/lib/library/AmdLibraryPlugin.js +11 -7
  403. package/lib/library/AssignLibraryPlugin.js +19 -13
  404. package/lib/library/EnableLibraryPlugin.js +2 -2
  405. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  406. package/lib/library/JsonpLibraryPlugin.js +11 -7
  407. package/lib/library/ModuleLibraryPlugin.js +256 -64
  408. package/lib/library/SystemLibraryPlugin.js +12 -8
  409. package/lib/library/UmdLibraryPlugin.js +62 -25
  410. package/lib/loaders/LoaderRunner.js +14 -1
  411. package/lib/loaders/loadLoader.js +8 -4
  412. package/lib/logging/createConsoleLogger.js +7 -4
  413. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  414. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  415. package/lib/node/NodeSourcePlugin.js +1 -1
  416. package/lib/node/NodeTargetPlugin.js +4 -3
  417. package/lib/node/NodeTemplatePlugin.js +1 -1
  418. package/lib/node/NodeWatchFileSystem.js +70 -9
  419. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  420. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  421. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  422. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/nodeConsole.js +7 -3
  424. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  425. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  426. package/lib/optimize/ConcatenatedModule.js +985 -470
  427. package/lib/optimize/ConstExportsPlugin.js +11 -7
  428. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  429. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  430. package/lib/optimize/InlineExports.js +9 -5
  431. package/lib/optimize/InnerGraph.js +28 -12
  432. package/lib/optimize/InnerGraphPlugin.js +23 -18
  433. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  434. package/lib/optimize/MangleExportsPlugin.js +7 -8
  435. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  436. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  437. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  438. package/lib/optimize/RealContentHashPlugin.js +10 -6
  439. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  440. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  441. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  442. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  443. package/lib/optimize/SplitChunksPlugin.js +86 -24
  444. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  445. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  446. package/lib/performance/BroadContextsPlugin.js +142 -0
  447. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  448. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  449. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  450. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  451. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  452. package/lib/performance/DynamicExportsPlugin.js +120 -0
  453. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  454. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  455. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  456. package/lib/performance/EvalUsagePlugin.js +115 -0
  457. package/lib/performance/HotspotsPlugin.js +296 -0
  458. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  459. package/lib/performance/LargeModulesPlugin.js +126 -0
  460. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  461. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  462. package/lib/performance/MixedExportsPlugin.js +136 -0
  463. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  464. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  465. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  466. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  467. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  468. package/lib/performance/SizeLimitsPlugin.js +139 -7
  469. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  470. package/lib/performance/TinyChunksPlugin.js +128 -0
  471. package/lib/performance/TopLevelThisPlugin.js +208 -0
  472. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  473. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  474. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  475. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  476. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  477. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  478. package/lib/performance/getModuleSize.js +22 -0
  479. package/lib/performance/getSourceModules.js +22 -0
  480. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  481. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  482. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  483. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  484. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  487. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  488. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  489. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  490. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  491. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  492. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  493. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  494. package/lib/rules/RuleSetCompiler.js +146 -12
  495. package/lib/rules/UseEffectRulePlugin.js +18 -11
  496. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  497. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  498. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  499. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  500. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  501. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  502. package/lib/runtime/CompatRuntimeModule.js +5 -3
  503. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  504. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  505. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  506. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  507. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  508. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  509. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  510. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  511. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  512. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  513. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  514. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  515. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  516. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  517. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  518. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  519. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  520. package/lib/runtime/NonceRuntimeModule.js +10 -0
  521. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  522. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  523. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  524. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  525. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  526. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  527. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  528. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  529. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  530. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  531. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  532. package/lib/runtime/baseUri.js +63 -0
  533. package/lib/schemes/DataUriPlugin.js +1 -1
  534. package/lib/schemes/FileUriPlugin.js +1 -1
  535. package/lib/schemes/HttpUriPlugin.js +24 -15
  536. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  537. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  538. package/lib/serialization/BinaryMiddleware.js +4 -4
  539. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  540. package/lib/serialization/FileMiddleware.js +7 -7
  541. package/lib/serialization/ObjectMiddleware.js +139 -114
  542. package/lib/serialization/PlainObjectSerializer.js +19 -16
  543. package/lib/sharing/ConsumeSharedModule.js +30 -21
  544. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  545. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  546. package/lib/sharing/ProvideSharedModule.js +25 -16
  547. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  548. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  549. package/lib/sharing/SharePlugin.js +17 -5
  550. package/lib/sharing/ShareRuntimeModule.js +4 -4
  551. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  552. package/lib/sharing/utils.js +1 -3
  553. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  554. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  555. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  556. package/lib/stats/StatsFactory.js +25 -26
  557. package/lib/stats/StatsPrinter.js +16 -12
  558. package/lib/typescript/TypeScriptPlugin.js +12 -14
  559. package/lib/url/URLParserPlugin.js +26 -13
  560. package/lib/util/AsyncQueue.js +4 -3
  561. package/lib/util/Hash.js +5 -1
  562. package/lib/util/LazySet.js +35 -22
  563. package/lib/util/LocConverter.js +36 -13
  564. package/lib/util/SourceProcessor.js +1050 -24
  565. package/lib/util/StringXor.js +1 -1
  566. package/lib/util/chainedImports.js +9 -5
  567. package/lib/util/cleverMerge.js +1 -1
  568. package/lib/util/comparators.js +45 -14
  569. package/lib/util/concatenate.js +203 -77
  570. package/lib/util/conventions.js +5 -1
  571. package/lib/util/createHash.js +2 -2
  572. package/lib/util/createHooksRegistry.js +8 -10
  573. package/lib/util/dataURL.js +225 -1
  574. package/lib/util/extractSourceMap.js +4 -3
  575. package/lib/util/findCaseMismatch.js +139 -0
  576. package/lib/util/formatLocation.js +1 -2
  577. package/lib/util/fs.js +22 -5
  578. package/lib/util/globUtils.js +298 -24
  579. package/lib/util/hash/BatchedHash.js +5 -1
  580. package/lib/util/hash/BulkUpdateHash.js +5 -1
  581. package/lib/util/hash/DebugHash.js +5 -1
  582. package/lib/util/hash/hash-digest.js +6 -2
  583. package/lib/util/identifier.js +4 -0
  584. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  585. package/lib/util/internalSerializables.js +6 -0
  586. package/lib/util/lazyModule.js +56 -0
  587. package/lib/util/makeSerializable.js +7 -3
  588. package/lib/util/matchAlias.js +25 -0
  589. package/lib/util/mimeTypes.js +11 -5
  590. package/lib/util/nonNumericOnlyHash.js +4 -3
  591. package/lib/util/parseJson.js +5 -3
  592. package/lib/util/preloadModuleType.js +32 -0
  593. package/lib/util/registerExternalSerializer.js +7 -5
  594. package/lib/util/runtime.js +2 -2
  595. package/lib/util/semver.js +1 -1
  596. package/lib/util/serialization.js +28 -28
  597. package/lib/util/source.js +2 -2
  598. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  599. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  600. package/lib/wasm/wasmModuleFilename.js +54 -0
  601. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  602. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  603. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  604. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  605. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  606. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  607. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  608. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  609. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  610. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  611. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  612. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  613. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  614. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  615. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  616. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  617. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  618. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  619. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  620. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  621. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  622. package/lib/web/JsonpTemplatePlugin.js +2 -2
  623. package/lib/webpack.js +22 -11
  624. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  625. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  626. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  627. package/module.d.ts +1 -0
  628. package/package.json +32 -25
  629. package/schemas/WebpackOptions.check.js +1 -1
  630. package/schemas/WebpackOptions.json +670 -36
  631. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  634. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  635. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  636. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  639. package/types.d.ts +3144 -454
  640. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -18,12 +18,15 @@ const {
18
18
  toInlinedValue
19
19
  } = require("./InlineExports");
20
20
 
21
- /** @typedef {import("./InlineExports").InlinedValue} InlinedValue */
22
- /** @typedef {import("../Compiler")} Compiler */
23
- /** @typedef {import("../ExportsInfo")} ExportsInfo */
24
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
25
- /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
26
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
21
+ /** @import { InlinedValue } from "./InlineExports" */
22
+ /** @import Compiler from "../Compiler" */
23
+ /** @import ExportsInfo from "../ExportsInfo" */
24
+ /** @import JavascriptParser from "../javascript/JavascriptParser" */
25
+ /**
26
+ * @import {
27
+ * JavascriptModuleBuildInfo
28
+ * } from "../javascript/JavascriptModule"
29
+ */
27
30
 
28
31
  /** @typedef {{ inlineExports: boolean }} ConstValueParserPluginOptions */
29
32
 
@@ -207,5 +210,6 @@ class ConstExportsPlugin {
207
210
  }
208
211
  }
209
212
 
213
+ ConstExportsPlugin.CONST_BINDING_TAG = CONST_BINDING_TAG;
214
+
210
215
  module.exports = ConstExportsPlugin;
211
- module.exports.CONST_BINDING_TAG = CONST_BINDING_TAG;
@@ -7,9 +7,9 @@
7
7
 
8
8
  const { STAGE_BASIC } = require("../OptimizationStages");
9
9
 
10
- /** @typedef {import("../Chunk")} Chunk */
11
- /** @typedef {import("../ChunkGroup")} ChunkGroup */
12
- /** @typedef {import("../Compiler")} Compiler */
10
+ /** @import Chunk from "../Chunk" */
11
+ /** @import ChunkGroup from "../ChunkGroup" */
12
+ /** @import Compiler from "../Compiler" */
13
13
 
14
14
  const PLUGIN_NAME = "EnsureChunkConditionsPlugin";
15
15
 
@@ -7,10 +7,9 @@
7
7
 
8
8
  const { compareIds } = require("../util/comparators");
9
9
 
10
- /** @typedef {import("../Chunk")} Chunk */
11
- /** @typedef {import("../Chunk").ChunkId} ChunkId */
12
- /** @typedef {import("../Compiler")} Compiler */
13
- /** @typedef {import("../Module")} Module */
10
+ /** @import Chunk, { ChunkId } from "../Chunk" */
11
+ /** @import Compiler from "../Compiler" */
12
+ /** @import Module from "../Module" */
14
13
 
15
14
  const PLUGIN_NAME = "FlagIncludedChunksPlugin";
16
15
 
@@ -8,11 +8,15 @@
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
  const { propertyAccess } = require("../util/property");
10
10
 
11
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
12
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
13
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
14
- /** @typedef {import("../Module")} Module */
15
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
11
+ /**
12
+ * @import {
13
+ * ObjectDeserializerContext,
14
+ * ObjectSerializerContext
15
+ * } from "../serialization/ObjectMiddleware"
16
+ */
17
+ /** @import ModuleGraph from "../ModuleGraph" */
18
+ /** @import Module from "../Module" */
19
+ /** @import { RuntimeSpec } from "../util/runtime" */
16
20
 
17
21
  const MAX_INLINE_BYTES = 6;
18
22
 
@@ -8,13 +8,12 @@
8
8
  const { UsageState } = require("../ExportsInfo");
9
9
  const JavascriptParser = require("../javascript/JavascriptParser");
10
10
 
11
- /** @typedef {import("../Compilation")} Compilation */
12
- /** @typedef {import("../Dependency")} Dependency */
13
- /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
14
- /** @typedef {import("../Module")} Module */
15
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
- /** @typedef {import("../Parser").ParserState} ParserState */
17
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
11
+ /** @import Compilation from "../Compilation" */
12
+ /** @import Dependency, { GetConditionFn } from "../Dependency" */
13
+ /** @import Module from "../Module" */
14
+ /** @import ModuleGraph from "../ModuleGraph" */
15
+ /** @import { ParserState } from "../Parser" */
16
+ /** @import { RuntimeSpec } from "../util/runtime" */
18
17
 
19
18
  /** @typedef {boolean | ((compilation: Compilation, module: Module) => boolean)} PureCondition */
20
19
  /** @typedef {Set<string | TopLevelSymbol>} InnerGraphValueSet */
@@ -135,6 +134,15 @@ function isDependencyUsedByExports(
135
134
  return true;
136
135
  }
137
136
 
137
+ /**
138
+ * One condition per module graph rather than per dependency. The dependency the
139
+ * condition was built for is always the one on the connection it is called with
140
+ * (`ModuleGraph#setResolvedModule` is the only caller of `getCondition`, and it
141
+ * pairs the two), so it can be read off the connection instead of captured.
142
+ * @type {WeakMap<ModuleGraph, GetConditionFn>}
143
+ */
144
+ const usedByExportsConditions = new WeakMap();
145
+
138
146
  /**
139
147
  * Returns dependency condition
140
148
  * @param {Dependency} dependency the dependency
@@ -152,14 +160,22 @@ module.exports.getDependencyUsedByExportsCondition = (
152
160
  return false;
153
161
  case true:
154
162
  return null;
155
- default:
156
- return (_connections, runtime) =>
157
- isDependencyUsedByExports(
158
- dependency,
159
- /** @type {DependencyWithUsedByExports} */ (dependency).usedByExports,
163
+ default: {
164
+ const existing = usedByExportsConditions.get(moduleGraph);
165
+ if (existing !== undefined) return existing;
166
+ /** @type {GetConditionFn} */
167
+ const condition = (connection, runtime) => {
168
+ const dep = /** @type {Dependency} */ (connection.dependency);
169
+ return isDependencyUsedByExports(
170
+ dep,
171
+ /** @type {DependencyWithUsedByExports} */ (dep).usedByExports,
160
172
  moduleGraph,
161
173
  runtime
162
174
  );
175
+ };
176
+ usedByExportsConditions.set(moduleGraph, condition);
177
+ return condition;
178
+ }
163
179
  }
164
180
  };
165
181
 
@@ -17,24 +17,29 @@ const HarmonyImportSideEffectDependency = require("../dependencies/HarmonyImport
17
17
  const PureExpressionDependency = require("../dependencies/PureExpressionDependency");
18
18
  const { getInnerGraphUtils, topLevelSymbolTag } = require("./InnerGraph");
19
19
 
20
- /** @typedef {import("estree").CallExpression} CallExpression */
21
- /** @typedef {import("estree").ClassDeclaration} ClassDeclaration */
22
- /** @typedef {import("estree").ClassExpression} ClassExpression */
23
- /** @typedef {import("estree").Expression} Expression */
24
- /** @typedef {import("estree").MaybeNamedClassDeclaration} MaybeNamedClassDeclaration */
25
- /** @typedef {import("estree").MaybeNamedFunctionDeclaration} MaybeNamedFunctionDeclaration */
26
- /** @typedef {import("estree").Node} Node */
27
- /** @typedef {import("estree").VariableDeclarator} VariableDeclarator */
28
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
29
- /** @typedef {import("../Compilation")} Compilation */
30
- /** @typedef {import("../Compiler")} Compiler */
31
- /** @typedef {import("../Dependency")} Dependency */
32
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
33
- /** @typedef {import("../Module")} Module */
34
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
35
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
36
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
37
- /** @typedef {import("./InnerGraph").TopLevelSymbol} TopLevelSymbol */
20
+ /**
21
+ * @import {
22
+ * CallExpression,
23
+ * ClassDeclaration,
24
+ * ClassExpression,
25
+ * Expression,
26
+ * MaybeNamedClassDeclaration,
27
+ * MaybeNamedFunctionDeclaration,
28
+ * Node,
29
+ * VariableDeclarator
30
+ * } from "estree"
31
+ */
32
+ /**
33
+ * @import {
34
+ * JavascriptParserOptions
35
+ * } from "../../declarations/WebpackOptions"
36
+ */
37
+ /** @import Compilation from "../Compilation" */
38
+ /** @import Compiler from "../Compiler" */
39
+ /** @import Dependency from "../Dependency" */
40
+ /** @import Module from "../Module" */
41
+ /** @import JavascriptParser, { Range } from "../javascript/JavascriptParser" */
42
+ /** @import { TopLevelSymbol } from "./InnerGraph" */
38
43
 
39
44
  const PLUGIN_NAME = "InnerGraphPlugin";
40
45
  const impureVariableDeclarationKinds = new Set(["using", "await using"]);
@@ -9,9 +9,13 @@ const { STAGE_ADVANCED } = require("../OptimizationStages");
9
9
  const LazyBucketSortedSet = require("../util/LazyBucketSortedSet");
10
10
  const { compareChunks } = require("../util/comparators");
11
11
 
12
- /** @typedef {import("../../declarations/plugins/optimize/LimitChunkCountPlugin").LimitChunkCountPluginOptions} LimitChunkCountPluginOptions */
13
- /** @typedef {import("../Chunk")} Chunk */
14
- /** @typedef {import("../Compiler")} Compiler */
12
+ /**
13
+ * @import {
14
+ * LimitChunkCountPluginOptions
15
+ * } from "../../declarations/plugins/optimize/LimitChunkCountPlugin"
16
+ */
17
+ /** @import Chunk from "../Chunk" */
18
+ /** @import Compiler from "../Compiler" */
15
19
 
16
20
  /**
17
21
  * Defines the chunk combination type used by this module.
@@ -14,10 +14,9 @@ const {
14
14
  const { assignDeterministicIds } = require("../ids/IdHelpers");
15
15
  const { compareSelect, compareStringsNumeric } = require("../util/comparators");
16
16
 
17
- /** @typedef {import("../Compiler")} Compiler */
18
- /** @typedef {import("../ExportsInfo")} ExportsInfo */
19
- /** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
20
- /** @typedef {import("../util/concatenate").UsedNames} UsedNames */
17
+ /** @import Compiler from "../Compiler" */
18
+ /** @import ExportsInfo, { ExportInfo } from "../ExportsInfo" */
19
+ /** @import { UsedNames } from "../util/concatenate" */
21
20
 
22
21
  /**
23
22
  * Defines the comparator type used by this module.
@@ -44,7 +43,7 @@ const canMangle = (exportsInfo) => {
44
43
  };
45
44
 
46
45
  // Sort by name
47
- /** @type {Comparator<ExportInfo>} */
46
+ /** @type {Comparator<InstanceType<ExportInfo>>} */
48
47
  const comparator = compareSelect((e) => e.name, compareStringsNumeric);
49
48
  /**
50
49
  * Mangle exports info.
@@ -57,7 +56,7 @@ const mangleExportsInfo = (deterministic, exportsInfo, isNamespace) => {
57
56
  if (!canMangle(exportsInfo)) return;
58
57
  /** @type {UsedNames} */
59
58
  const usedNames = new Set();
60
- /** @type {ExportInfo[]} */
59
+ /** @type {InstanceType<ExportInfo>[]} */
61
60
  const mangleableExports = [];
62
61
 
63
62
  // Avoid to renamed exports that are not provided when
@@ -130,9 +129,9 @@ const mangleExportsInfo = (deterministic, exportsInfo, isNamespace) => {
130
129
  usedNames.size
131
130
  );
132
131
  } else {
133
- /** @type {ExportInfo[]} */
132
+ /** @type {InstanceType<ExportInfo>[]} */
134
133
  const usedExports = [];
135
- /** @type {ExportInfo[]} */
134
+ /** @type {InstanceType<ExportInfo>[]} */
136
135
  const unusedExports = [];
137
136
  for (const exportInfo of mangleableExports) {
138
137
  if (exportInfo.getUsed(undefined) === UsageState.Unused) {
@@ -8,9 +8,13 @@
8
8
  const { STAGE_BASIC } = require("../OptimizationStages");
9
9
  const { runtimeEqual } = require("../util/runtime");
10
10
 
11
- /** @typedef {import("../../declarations/plugins/optimize/MergeDuplicateChunksPlugin").MergeDuplicateChunksPluginOptions} MergeDuplicateChunksPluginOptions */
12
- /** @typedef {import("../Compiler")} Compiler */
13
- /** @typedef {import("../Chunk")} Chunk */
11
+ /**
12
+ * @import {
13
+ * MergeDuplicateChunksPluginOptions
14
+ * } from "../../declarations/plugins/optimize/MergeDuplicateChunksPlugin"
15
+ */
16
+ /** @import Compiler from "../Compiler" */
17
+ /** @import Chunk from "../Chunk" */
14
18
 
15
19
  const PLUGIN_NAME = "MergeDuplicateChunksPlugin";
16
20
 
@@ -7,9 +7,13 @@
7
7
 
8
8
  const { STAGE_ADVANCED } = require("../OptimizationStages");
9
9
 
10
- /** @typedef {import("../../declarations/plugins/optimize/MinChunkSizePlugin").MinChunkSizePluginOptions} MinChunkSizePluginOptions */
11
- /** @typedef {import("../Chunk")} Chunk */
12
- /** @typedef {import("../Compiler")} Compiler */
10
+ /**
11
+ * @import {
12
+ * MinChunkSizePluginOptions
13
+ * } from "../../declarations/plugins/optimize/MinChunkSizePlugin"
14
+ */
15
+ /** @import Chunk from "../Chunk" */
16
+ /** @import Compiler from "../Compiler" */
13
17
 
14
18
  const PLUGIN_NAME = "MinChunkSizePlugin";
15
19
 
@@ -12,10 +12,10 @@ const Module = require("../Module");
12
12
  const ModuleGraph = require("../ModuleGraph");
13
13
  const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
14
14
  const { STAGE_DEFAULT } = require("../OptimizationStages");
15
- const CommonJsSelfReferenceDependency = require("../dependencies/CommonJsSelfReferenceDependency");
16
15
  const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
17
16
  const { ImportPhaseUtils } = require("../dependencies/ImportPhase");
18
17
  const { compareModulesByIdentifier } = require("../util/comparators");
18
+ const { isCommonJsConcatenationEnabled } = require("../util/concatenate");
19
19
  const {
20
20
  filterRuntime,
21
21
  intersectRuntime,
@@ -25,13 +25,12 @@ const {
25
25
  } = require("../util/runtime");
26
26
  const ConcatenatedModule = require("./ConcatenatedModule");
27
27
 
28
- /** @typedef {import("../Chunk")} Chunk */
29
- /** @typedef {import("../Compilation")} Compilation */
30
- /** @typedef {import("../Compiler")} Compiler */
31
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
32
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
33
- /** @typedef {import("../RequestShortener")} RequestShortener */
34
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
28
+ /** @import Chunk from "../Chunk" */
29
+ /** @import Compilation from "../Compilation" */
30
+ /** @import Compiler from "../Compiler" */
31
+ /** @import { BuildInfo, BuildMeta } from "../Module" */
32
+ /** @import RequestShortener from "../RequestShortener" */
33
+ /** @import { RuntimeSpec } from "../util/runtime" */
35
34
 
36
35
  /** @typedef {Module | ((requestShortener: RequestShortener) => string)} Problem */
37
36
 
@@ -87,12 +86,19 @@ const cacheFailure = (failureCache, statistics, statKey, module, problem) => {
87
86
  return problem;
88
87
  };
89
88
 
89
+ // Read back by `performance.scopeHoistingBailouts` to tell these reasons apart
90
+ // from the other kinds `getOptimizationBailout` collects.
91
+ const BAILOUT_PREFIX = "ModuleConcatenation bailout: ";
92
+
93
+ // A root's reason for rejecting another module, rather than the module's own.
94
+ const REJECTED_PREFIX = "Cannot concat with ";
95
+
90
96
  /**
91
97
  * Format bailout reason.
92
98
  * @param {string} msg message
93
99
  * @returns {string} formatted message
94
100
  */
95
- const formatBailoutReason = (msg) => `ModuleConcatenation bailout: ${msg}`;
101
+ const formatBailoutReason = (msg) => `${BAILOUT_PREFIX}${msg}`;
96
102
 
97
103
  const PLUGIN_NAME = "ModuleConcatenationPlugin";
98
104
 
@@ -160,7 +166,7 @@ class ModuleConcatenationPlugin {
160
166
  const formatBailoutWarning = (module, problem) => (requestShortener) => {
161
167
  if (typeof problem === "function") {
162
168
  return formatBailoutReason(
163
- `Cannot concat with ${module.readableIdentifier(
169
+ `${REJECTED_PREFIX}${module.readableIdentifier(
164
170
  requestShortener
165
171
  )}: ${problem(requestShortener)}`
166
172
  );
@@ -169,13 +175,13 @@ class ModuleConcatenationPlugin {
169
175
  const reasonWithPrefix = reason ? `: ${reason}` : "";
170
176
  if (module === problem) {
171
177
  return formatBailoutReason(
172
- `Cannot concat with ${module.readableIdentifier(
178
+ `${REJECTED_PREFIX}${module.readableIdentifier(
173
179
  requestShortener
174
180
  )}${reasonWithPrefix}`
175
181
  );
176
182
  }
177
183
  return formatBailoutReason(
178
- `Cannot concat with ${module.readableIdentifier(
184
+ `${REJECTED_PREFIX}${module.readableIdentifier(
179
185
  requestShortener
180
186
  )} because of ${problem.readableIdentifier(
181
187
  requestShortener
@@ -197,16 +203,14 @@ class ModuleConcatenationPlugin {
197
203
  const relevantModules = [];
198
204
  /** @type {Set<Module>} */
199
205
  const possibleInners = new Set();
200
- const concatenateModules =
201
- compilation.options.optimization.concatenateModules;
206
+ // commonjs concatenation defaults to on; { commonjs: false } opts out
207
+ const concatenateCommonJsModules = isCommonJsConcatenationEnabled(
208
+ compilation.options.optimization.concatenateModules
209
+ );
202
210
  const context = {
203
211
  chunkGraph,
204
212
  moduleGraph,
205
- // commonjs concatenation defaults to on; { commonjs: false } opts out
206
- concatenateCommonJsModules:
207
- typeof concatenateModules === "object"
208
- ? concatenateModules.commonjs !== false
209
- : concatenateModules === true
213
+ concatenateCommonJsModules
210
214
  };
211
215
  const deferEnabled = compilation.options.experiments.deferImport;
212
216
  logger.time("select relevant modules");
@@ -531,7 +535,10 @@ class ModuleConcatenationPlugin {
531
535
  c.originModule === m &&
532
536
  !(
533
537
  c.dependency &&
534
- Dependency.canConcatenate(c.dependency) &&
538
+ Dependency.canConcatenate(
539
+ c.dependency,
540
+ concatenateCommonJsModules
541
+ ) &&
535
542
  modules.has(c.module)
536
543
  )
537
544
  );
@@ -575,7 +582,10 @@ class ModuleConcatenationPlugin {
575
582
  c.module === rootModule ? c.originModule : c.module;
576
583
  const innerConnection =
577
584
  c.dependency &&
578
- Dependency.canConcatenate(c.dependency) &&
585
+ Dependency.canConcatenate(
586
+ c.dependency,
587
+ concatenateCommonJsModules
588
+ ) &&
579
589
  modules.has(/** @type {Module} */ (otherModule));
580
590
  return !innerConnection;
581
591
  }
@@ -627,11 +637,14 @@ class ModuleConcatenationPlugin {
627
637
  */
628
638
  _getImports(compilation, module, runtime) {
629
639
  const moduleGraph = compilation.moduleGraph;
640
+ const concatenateCommonJsModules = isCommonJsConcatenationEnabled(
641
+ compilation.options.optimization.concatenateModules
642
+ );
630
643
  /** @type {Set<Module>} */
631
644
  const set = new Set();
632
645
  for (const dep of module.dependencies) {
633
646
  // Get reference info only for dependencies that support concatenation
634
- if (!Dependency.canConcatenate(dep)) continue;
647
+ if (!Dependency.canConcatenate(dep, concatenateCommonJsModules)) continue;
635
648
 
636
649
  const connection = moduleGraph.getConnection(dep);
637
650
  // Reference is valid and has a module
@@ -821,7 +834,7 @@ class ModuleConcatenationPlugin {
821
834
  }
822
835
  }
823
836
 
824
- /** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
837
+ /** @type {Map<Module, ReadonlyArray<InstanceType<ModuleGraph.ModuleGraphConnection>>>} */
825
838
  const incomingConnectionsFromModules = new Map();
826
839
  for (const [originModule, connections] of incomingConnections) {
827
840
  if (originModule) {
@@ -883,32 +896,32 @@ class ModuleConcatenationPlugin {
883
896
  );
884
897
  }
885
898
 
886
- /** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
887
- const nonHarmonyConnections = new Map();
899
+ const concatenateCommonJsModules = isCommonJsConcatenationEnabled(
900
+ compilation.options.optimization.concatenateModules
901
+ );
902
+ /** @type {Map<Module, ReadonlyArray<InstanceType<ModuleGraph.ModuleGraphConnection>>>} */
903
+ const nonTargetConnections = new Map();
888
904
  for (const [originModule, connections] of incomingConnectionsFromModules) {
889
905
  const selected = connections.filter(
890
906
  (connection) =>
891
907
  !connection.dependency ||
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
- ))
908
+ !Dependency.canConcatenate(
909
+ connection.dependency,
910
+ concatenateCommonJsModules
911
+ )
899
912
  );
900
913
  if (selected.length > 0) {
901
- nonHarmonyConnections.set(originModule, connections);
914
+ nonTargetConnections.set(originModule, selected);
902
915
  }
903
916
  }
904
- if (nonHarmonyConnections.size > 0) {
917
+ if (nonTargetConnections.size > 0) {
905
918
  /**
906
919
  * Returns problem description.
907
920
  * @param {RequestShortener} requestShortener request shortener
908
921
  * @returns {string} problem description
909
922
  */
910
923
  const problem = (requestShortener) => {
911
- const names = [...nonHarmonyConnections]
924
+ const names = [...nonTargetConnections]
912
925
  .map(
913
926
  ([originModule, connections]) =>
914
927
  `${originModule.readableIdentifier(
@@ -1142,4 +1155,7 @@ class ConcatConfiguration {
1142
1155
  }
1143
1156
  }
1144
1157
 
1158
+ ModuleConcatenationPlugin.BAILOUT_PREFIX = BAILOUT_PREFIX;
1159
+ ModuleConcatenationPlugin.REJECTED_PREFIX = REJECTED_PREFIX;
1160
+
1145
1161
  module.exports = ModuleConcatenationPlugin;
@@ -13,12 +13,16 @@ const { compareSelect, compareStrings } = require("../util/comparators");
13
13
  const createHash = require("../util/createHash");
14
14
  const createHooksRegistry = require("../util/createHooksRegistry");
15
15
 
16
- /** @typedef {import("../../declarations/WebpackOptions").HashFunction} HashFunction */
17
- /** @typedef {import("../../declarations/WebpackOptions").HashDigest} HashDigest */
18
- /** @typedef {import("webpack-sources").Source} Source */
19
- /** @typedef {import("../Cache").Etag} Etag */
20
- /** @typedef {import("../Compilation").AssetInfo} AssetInfo */
21
- /** @typedef {import("../Compiler")} Compiler */
16
+ /**
17
+ * @import {
18
+ * HashFunction,
19
+ * HashDigest
20
+ * } from "../../declarations/WebpackOptions"
21
+ */
22
+ /** @import { Source } from "webpack-sources" */
23
+ /** @import { Etag } from "../Cache" */
24
+ /** @import { AssetInfo } from "../Compilation" */
25
+ /** @import Compiler from "../Compiler" */
22
26
  /** @typedef {typeof import("../util/Hash")} Hash */
23
27
 
24
28
  /**
@@ -7,8 +7,8 @@
7
7
 
8
8
  const { STAGE_ADVANCED, STAGE_BASIC } = require("../OptimizationStages");
9
9
 
10
- /** @typedef {import("../Chunk")} Chunk */
11
- /** @typedef {import("../Compiler")} Compiler */
10
+ /** @import Chunk from "../Chunk" */
11
+ /** @import Compiler from "../Compiler" */
12
12
 
13
13
  const PLUGIN_NAME = "RemoveEmptyChunksPlugin";
14
14
 
@@ -7,10 +7,10 @@
7
7
 
8
8
  const { STAGE_BASIC } = require("../OptimizationStages");
9
9
 
10
- /** @typedef {import("../Chunk")} Chunk */
11
- /** @typedef {import("../ChunkGroup")} ChunkGroup */
12
- /** @typedef {import("../Compiler")} Compiler */
13
- /** @typedef {import("../Module")} Module */
10
+ /** @import Chunk from "../Chunk" */
11
+ /** @import ChunkGroup from "../ChunkGroup" */
12
+ /** @import Compiler from "../Compiler" */
13
+ /** @import Module from "../Module" */
14
14
 
15
15
  /**
16
16
  * Intersects multiple masks represented as bigints
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../Compilation").EntryData} EntryData */
9
- /** @typedef {import("../Compiler")} Compiler */
8
+ /** @import { EntryData } from "../Compilation" */
9
+ /** @import Compiler from "../Compiler" */
10
10
 
11
11
  const PLUGIN_NAME = "RuntimeChunkPlugin";
12
12