@depup/webpack 5.109.0-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 (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. 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
 
@@ -70,12 +69,36 @@ const getMergedModuleRuntime = (chunkGraph, cache, module) => {
70
69
  * @property {number} added
71
70
  */
72
71
 
72
+ /**
73
+ * Record why `module` can't be added (so retried lookups hit the cache), bump
74
+ * the matching statistic, and return the problem to bubble up the recursion.
75
+ * Only reached on failure, so it stays off the hot success path.
76
+ * @param {Map<Module, Problem>} failureCache per-module failure cache
77
+ * @param {Statistics} statistics running statistics
78
+ * @param {keyof Statistics} statKey statistic to increment
79
+ * @param {Module} module the module that couldn't be added
80
+ * @param {Problem} problem the failure to cache and return
81
+ * @returns {Problem} the same problem
82
+ */
83
+ const cacheFailure = (failureCache, statistics, statKey, module, problem) => {
84
+ statistics[statKey]++;
85
+ failureCache.set(module, problem);
86
+ return problem;
87
+ };
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
+
73
96
  /**
74
97
  * Format bailout reason.
75
98
  * @param {string} msg message
76
99
  * @returns {string} formatted message
77
100
  */
78
- const formatBailoutReason = (msg) => `ModuleConcatenation bailout: ${msg}`;
101
+ const formatBailoutReason = (msg) => `${BAILOUT_PREFIX}${msg}`;
79
102
 
80
103
  const PLUGIN_NAME = "ModuleConcatenationPlugin";
81
104
 
@@ -143,7 +166,7 @@ class ModuleConcatenationPlugin {
143
166
  const formatBailoutWarning = (module, problem) => (requestShortener) => {
144
167
  if (typeof problem === "function") {
145
168
  return formatBailoutReason(
146
- `Cannot concat with ${module.readableIdentifier(
169
+ `${REJECTED_PREFIX}${module.readableIdentifier(
147
170
  requestShortener
148
171
  )}: ${problem(requestShortener)}`
149
172
  );
@@ -152,13 +175,13 @@ class ModuleConcatenationPlugin {
152
175
  const reasonWithPrefix = reason ? `: ${reason}` : "";
153
176
  if (module === problem) {
154
177
  return formatBailoutReason(
155
- `Cannot concat with ${module.readableIdentifier(
178
+ `${REJECTED_PREFIX}${module.readableIdentifier(
156
179
  requestShortener
157
180
  )}${reasonWithPrefix}`
158
181
  );
159
182
  }
160
183
  return formatBailoutReason(
161
- `Cannot concat with ${module.readableIdentifier(
184
+ `${REJECTED_PREFIX}${module.readableIdentifier(
162
185
  requestShortener
163
186
  )} because of ${problem.readableIdentifier(
164
187
  requestShortener
@@ -180,16 +203,14 @@ class ModuleConcatenationPlugin {
180
203
  const relevantModules = [];
181
204
  /** @type {Set<Module>} */
182
205
  const possibleInners = new Set();
183
- const concatenateModules =
184
- compilation.options.optimization.concatenateModules;
206
+ // commonjs concatenation defaults to on; { commonjs: false } opts out
207
+ const concatenateCommonJsModules = isCommonJsConcatenationEnabled(
208
+ compilation.options.optimization.concatenateModules
209
+ );
185
210
  const context = {
186
211
  chunkGraph,
187
212
  moduleGraph,
188
- // commonjs concatenation defaults to on; { commonjs: false } opts out
189
- concatenateCommonJsModules:
190
- typeof concatenateModules === "object"
191
- ? concatenateModules.commonjs !== false
192
- : concatenateModules === true
213
+ concatenateCommonJsModules
193
214
  };
194
215
  const deferEnabled = compilation.options.experiments.deferImport;
195
216
  logger.time("select relevant modules");
@@ -514,7 +535,10 @@ class ModuleConcatenationPlugin {
514
535
  c.originModule === m &&
515
536
  !(
516
537
  c.dependency &&
517
- Dependency.canConcatenate(c.dependency) &&
538
+ Dependency.canConcatenate(
539
+ c.dependency,
540
+ concatenateCommonJsModules
541
+ ) &&
518
542
  modules.has(c.module)
519
543
  )
520
544
  );
@@ -558,7 +582,10 @@ class ModuleConcatenationPlugin {
558
582
  c.module === rootModule ? c.originModule : c.module;
559
583
  const innerConnection =
560
584
  c.dependency &&
561
- Dependency.canConcatenate(c.dependency) &&
585
+ Dependency.canConcatenate(
586
+ c.dependency,
587
+ concatenateCommonJsModules
588
+ ) &&
562
589
  modules.has(/** @type {Module} */ (otherModule));
563
590
  return !innerConnection;
564
591
  }
@@ -610,11 +637,14 @@ class ModuleConcatenationPlugin {
610
637
  */
611
638
  _getImports(compilation, module, runtime) {
612
639
  const moduleGraph = compilation.moduleGraph;
640
+ const concatenateCommonJsModules = isCommonJsConcatenationEnabled(
641
+ compilation.options.optimization.concatenateModules
642
+ );
613
643
  /** @type {Set<Module>} */
614
644
  const set = new Set();
615
645
  for (const dep of module.dependencies) {
616
646
  // Get reference info only for dependencies that support concatenation
617
- if (!Dependency.canConcatenate(dep)) continue;
647
+ if (!Dependency.canConcatenate(dep, concatenateCommonJsModules)) continue;
618
648
 
619
649
  const connection = moduleGraph.getConnection(dep);
620
650
  // Reference is valid and has a module
@@ -687,9 +717,13 @@ class ModuleConcatenationPlugin {
687
717
 
688
718
  // Not possible to add?
689
719
  if (!possibleModules.has(module)) {
690
- statistics.invalidModule++;
691
- failureCache.set(module, module); // cache failures for performance
692
- return module;
720
+ return cacheFailure(
721
+ failureCache,
722
+ statistics,
723
+ "invalidModule",
724
+ module,
725
+ module
726
+ );
693
727
  }
694
728
 
695
729
  // A deferred import must stay a concatenation boundary: concatenating a
@@ -707,9 +741,13 @@ class ModuleConcatenationPlugin {
707
741
  `Module ${module.readableIdentifier(
708
742
  requestShortener
709
743
  )} imports a module in this configuration via import defer`;
710
- statistics.incorrectDependency++;
711
- failureCache.set(module, problem); // cache failures for performance
712
- return problem;
744
+ return cacheFailure(
745
+ failureCache,
746
+ statistics,
747
+ "incorrectDependency",
748
+ module,
749
+ problem
750
+ );
713
751
  }
714
752
 
715
753
  // Module must be in the correct chunks
@@ -741,9 +779,13 @@ class ModuleConcatenationPlugin {
741
779
  ", "
742
780
  )}, module is in chunk(s) ${chunks.join(", ")})`;
743
781
  };
744
- statistics.incorrectChunks++;
745
- failureCache.set(module, problem); // cache failures for performance
746
- return problem;
782
+ return cacheFailure(
783
+ failureCache,
784
+ statistics,
785
+ "incorrectChunks",
786
+ module,
787
+ problem
788
+ );
747
789
  }
748
790
 
749
791
  const moduleGraph = compilation.moduleGraph;
@@ -782,13 +824,17 @@ class ModuleConcatenationPlugin {
782
824
  : "in an unsupported way"
783
825
  }`;
784
826
  };
785
- statistics.incorrectDependency++;
786
- failureCache.set(module, problem); // cache failures for performance
787
- return problem;
827
+ return cacheFailure(
828
+ failureCache,
829
+ statistics,
830
+ "incorrectDependency",
831
+ module,
832
+ problem
833
+ );
788
834
  }
789
835
  }
790
836
 
791
- /** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
837
+ /** @type {Map<Module, ReadonlyArray<InstanceType<ModuleGraph.ModuleGraphConnection>>>} */
792
838
  const incomingConnectionsFromModules = new Map();
793
839
  for (const [originModule, connections] of incomingConnections) {
794
840
  if (originModule) {
@@ -841,37 +887,41 @@ class ModuleConcatenationPlugin {
841
887
  ", "
842
888
  )}`;
843
889
  };
844
- statistics.incorrectChunksOfImporter++;
845
- failureCache.set(module, problem); // cache failures for performance
846
- return problem;
890
+ return cacheFailure(
891
+ failureCache,
892
+ statistics,
893
+ "incorrectChunksOfImporter",
894
+ module,
895
+ problem
896
+ );
847
897
  }
848
898
 
849
- /** @type {Map<Module, ReadonlyArray<ModuleGraph.ModuleGraphConnection>>} */
850
- 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();
851
904
  for (const [originModule, connections] of incomingConnectionsFromModules) {
852
905
  const selected = connections.filter(
853
906
  (connection) =>
854
907
  !connection.dependency ||
855
- (!Dependency.canConcatenate(connection.dependency) &&
856
- // exports self-references of a concatenated CommonJS module
857
- // are rewritten in place, so they don't block concatenation
858
- !(
859
- originModule === module &&
860
- connection.dependency instanceof CommonJsSelfReferenceDependency
861
- ))
908
+ !Dependency.canConcatenate(
909
+ connection.dependency,
910
+ concatenateCommonJsModules
911
+ )
862
912
  );
863
913
  if (selected.length > 0) {
864
- nonHarmonyConnections.set(originModule, connections);
914
+ nonTargetConnections.set(originModule, selected);
865
915
  }
866
916
  }
867
- if (nonHarmonyConnections.size > 0) {
917
+ if (nonTargetConnections.size > 0) {
868
918
  /**
869
919
  * Returns problem description.
870
920
  * @param {RequestShortener} requestShortener request shortener
871
921
  * @returns {string} problem description
872
922
  */
873
923
  const problem = (requestShortener) => {
874
- const names = [...nonHarmonyConnections]
924
+ const names = [...nonTargetConnections]
875
925
  .map(
876
926
  ([originModule, connections]) =>
877
927
  `${originModule.readableIdentifier(
@@ -893,9 +943,13 @@ class ModuleConcatenationPlugin {
893
943
  ", "
894
944
  )}`;
895
945
  };
896
- statistics.incorrectModuleDependency++;
897
- failureCache.set(module, problem); // cache failures for performance
898
- return problem;
946
+ return cacheFailure(
947
+ failureCache,
948
+ statistics,
949
+ "incorrectModuleDependency",
950
+ module,
951
+ problem
952
+ );
899
953
  }
900
954
 
901
955
  if (runtime !== undefined && typeof runtime !== "string") {
@@ -946,9 +1000,13 @@ class ModuleConcatenationPlugin {
946
1000
  /** @type {RuntimeSpec} */ (runtimeCondition)
947
1001
  )})`
948
1002
  ).join(", ")}`;
949
- statistics.incorrectRuntimeCondition++;
950
- failureCache.set(module, problem); // cache failures for performance
951
- return problem;
1003
+ return cacheFailure(
1004
+ failureCache,
1005
+ statistics,
1006
+ "incorrectRuntimeCondition",
1007
+ module,
1008
+ problem
1009
+ );
952
1010
  }
953
1011
  }
954
1012
 
@@ -981,9 +1039,13 @@ class ModuleConcatenationPlugin {
981
1039
  );
982
1040
  if (problem) {
983
1041
  if (backup !== undefined) config.rollback(backup);
984
- statistics.importerFailed++;
985
- failureCache.set(module, problem); // cache failures for performance
986
- return problem;
1042
+ return cacheFailure(
1043
+ failureCache,
1044
+ statistics,
1045
+ "importerFailed",
1046
+ module,
1047
+ problem
1048
+ );
987
1049
  }
988
1050
  }
989
1051
 
@@ -1093,4 +1155,7 @@ class ConcatConfiguration {
1093
1155
  }
1094
1156
  }
1095
1157
 
1158
+ ModuleConcatenationPlugin.BAILOUT_PREFIX = BAILOUT_PREFIX;
1159
+ ModuleConcatenationPlugin.REJECTED_PREFIX = REJECTED_PREFIX;
1160
+
1096
1161
  module.exports = ModuleConcatenationPlugin;