@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
@@ -11,6 +11,7 @@ const {
11
11
  AsyncParallelHook,
12
12
  AsyncSeriesBailHook,
13
13
  AsyncSeriesHook,
14
+ AsyncSeriesWaterfallHook,
14
15
  HookMap,
15
16
  SyncBailHook,
16
17
  SyncHook,
@@ -39,19 +40,10 @@ const RuntimeGlobals = require("./RuntimeGlobals");
39
40
  const RuntimeTemplate = require("./RuntimeTemplate");
40
41
  const Stats = require("./Stats");
41
42
  const buildChunkGraph = require("./buildChunkGraph");
42
- const BuildCycleError = require("./errors/BuildCycleError");
43
- const ChunkRenderError = require("./errors/ChunkRenderError");
44
- const CodeGenerationError = require("./errors/CodeGenerationError");
45
43
  const {
46
44
  makeWebpackError,
47
45
  tryRunOrWebpackError
48
46
  } = require("./errors/HookWebpackError");
49
- const ModuleDependencyError = require("./errors/ModuleDependencyError");
50
- const ModuleDependencyWarning = require("./errors/ModuleDependencyWarning");
51
- const ModuleHashingError = require("./errors/ModuleHashingError");
52
- const ModuleNotFoundError = require("./errors/ModuleNotFoundError");
53
- const ModuleRestoreError = require("./errors/ModuleRestoreError");
54
- const ModuleStoreError = require("./errors/ModuleStoreError");
55
47
  const WebpackError = require("./errors/WebpackError");
56
48
  const { LogType, Logger } = require("./logging/Logger");
57
49
  const StatsFactory = require("./stats/StatsFactory");
@@ -63,11 +55,10 @@ const { getOrInsert } = require("./util/MapHelpers");
63
55
  const WeakTupleMap = require("./util/WeakTupleMap");
64
56
  const { cachedCleverMerge } = require("./util/cleverMerge");
65
57
  const {
58
+ compareErrors,
66
59
  compareIds,
67
- compareLocations,
68
60
  compareModulesByIdentifier,
69
61
  compareSelect,
70
- compareStringsNumeric,
71
62
  concatComparators
72
63
  } = require("./util/comparators");
73
64
  const createHash = require("./util/createHash");
@@ -76,62 +67,124 @@ const {
76
67
  createFakeHook,
77
68
  soonFrozenObjectDeprecation
78
69
  } = require("./util/deprecation");
70
+ const memoize = require("./util/memoize");
79
71
  const processAsyncTree = require("./util/processAsyncTree");
80
72
  const { getRuntimeKey } = require("./util/runtime");
81
73
  const { isSourceEqual } = require("./util/source");
82
74
 
83
- /** @typedef {import("webpack-sources").Source} Source */
84
- /** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputOptions */
85
- /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
86
- /** @typedef {import("../declarations/WebpackOptions").HashDigest} HashDigest */
87
- /** @typedef {import("../declarations/WebpackOptions").HashDigestLength} HashDigestLength */
88
- /** @typedef {import("../declarations/WebpackOptions").StatsOptions} StatsOptions */
89
- /** @typedef {import("../declarations/WebpackOptions").Plugins} Plugins */
90
- /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
91
- /** @typedef {import("./config/defaults").OutputNormalizedWithDefaults} OutputOptionsWithDefaults */
92
- /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
93
- /** @typedef {import("./Cache")} Cache */
94
- /** @typedef {import("./CacheFacade")} CacheFacade */
95
- /** @typedef {import("./Chunk").ChunkName} ChunkName */
96
- /** @typedef {import("./Chunk").ChunkId} ChunkId */
97
- /** @typedef {import("./ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
98
- /** @typedef {import("./Compiler")} Compiler */
99
- /** @typedef {import("./Compiler").CompilationParams} CompilationParams */
100
- /** @typedef {import("./Compiler").MemCache} MemCache */
101
- /** @typedef {import("./Compiler").WeakReferences} WeakReferences */
102
- /** @typedef {import("./Compiler").ModuleMemCachesItem} ModuleMemCachesItem */
103
- /** @typedef {import("./Compiler").Records} Records */
104
- /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
105
- /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
106
- /** @typedef {import("./Dependency").ReferencedExports} ReferencedExports */
75
+ const getModuleStoreError = memoize(() => require("./errors/ModuleStoreError"));
76
+
77
+ const getModuleRestoreError = memoize(() =>
78
+ require("./errors/ModuleRestoreError")
79
+ );
80
+
81
+ const getModuleNotFoundError = memoize(() =>
82
+ require("./errors/ModuleNotFoundError")
83
+ );
84
+
85
+ const getModuleHashingError = memoize(() =>
86
+ require("./errors/ModuleHashingError")
87
+ );
88
+
89
+ const getModuleDependencyWarning = memoize(() =>
90
+ require("./errors/ModuleDependencyWarning")
91
+ );
92
+
93
+ const getModuleDependencyError = memoize(() =>
94
+ require("./errors/ModuleDependencyError")
95
+ );
96
+
97
+ const getCodeGenerationError = memoize(() =>
98
+ require("./errors/CodeGenerationError")
99
+ );
100
+
101
+ const getChunkRenderError = memoize(() => require("./errors/ChunkRenderError"));
102
+
103
+ const getBuildCycleError = memoize(() => require("./errors/BuildCycleError"));
104
+
105
+ /** @import { Source } from "webpack-sources" */
106
+ /**
107
+ * @import {
108
+ * OutputNormalized as OutputOptions,
109
+ * HashFunction,
110
+ * HashDigest,
111
+ * HashDigestLength,
112
+ * StatsOptions,
113
+ * Plugins,
114
+ * ResolveOptions
115
+ * } from "../declarations/WebpackOptions"
116
+ */
117
+ /**
118
+ * @import {
119
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions,
120
+ * OutputNormalizedWithDefaults as OutputOptionsWithDefaults
121
+ * } from "./config/defaults"
122
+ */
123
+ /** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
124
+ /** @import Cache from "./Cache" */
125
+ /** @import CacheFacade from "./CacheFacade" */
126
+ /** @import { ChunkName, ChunkId } from "./Chunk" */
127
+ /** @import { ChunkGroupOptions } from "./ChunkGroup" */
128
+ /**
129
+ * @import Compiler, {
130
+ * CompilationParams,
131
+ * MemCache,
132
+ * WeakReferences,
133
+ * ModuleMemCachesItem,
134
+ * Records
135
+ * } from "./Compiler"
136
+ */
137
+ /** @import DependenciesBlock from "./DependenciesBlock" */
138
+ /** @import { DependencyLocation, ReferencedExports } from "./Dependency" */
107
139
  /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
108
- /** @typedef {import("./Module").NameForCondition} NameForCondition */
109
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
110
- /** @typedef {import("./Module").ValueCacheVersions} ValueCacheVersions */
111
- /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
112
- /** @typedef {import("./Module").SourceTypes} SourceTypes */
113
- /** @typedef {import("./NormalModule").NormalModuleCompilationHooks} NormalModuleCompilationHooks */
114
- /** @typedef {import("./Module").FactoryMeta} FactoryMeta */
115
- /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
116
- /** @typedef {import("./ModuleFactory")} ModuleFactory */
117
- /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
118
- /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
119
- /** @typedef {import("./ModuleGraphConnection")} ModuleGraphConnection */
120
- /** @typedef {import("./ModuleFactory").ModuleFactoryCreateDataContextInfo} ModuleFactoryCreateDataContextInfo */
121
- /** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
122
- /** @typedef {import("./NormalModule")} NormalModule */
123
- /** @typedef {import("./NormalModule").AnyLoaderContext} AnyLoaderContext */
124
- /** @typedef {import("./NormalModule").ParserOptions} ParserOptions */
125
- /** @typedef {import("./NormalModule").GeneratorOptions} GeneratorOptions */
126
- /** @typedef {import("./RequestShortener")} RequestShortener */
127
- /** @typedef {import("./RuntimeModule")} RuntimeModule */
128
- /** @typedef {import("./Template").RenderManifestEntry} RenderManifestEntry */
129
- /** @typedef {import("./Template").RenderManifestOptions} RenderManifestOptions */
130
- /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsAsset} StatsAsset */
131
- /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsError} StatsError */
132
- /** @typedef {import("./stats/DefaultStatsFactoryPlugin").StatsModule} StatsModule */
133
- /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
134
- /** @typedef {import("./util/Hash")} Hash */
140
+ /**
141
+ * @import {
142
+ * NameForCondition,
143
+ * BuildInfo,
144
+ * ValueCacheVersions,
145
+ * RuntimeRequirements,
146
+ * SourceTypes,
147
+ * SourceType,
148
+ * FactoryMeta,
149
+ * CodeGenerationResult
150
+ * } from "./Module"
151
+ */
152
+ /**
153
+ * @import NormalModule, {
154
+ * NormalModuleCompilationHooks,
155
+ * AnyLoaderContext,
156
+ * ParserOptions,
157
+ * GeneratorOptions
158
+ * } from "./NormalModule"
159
+ */
160
+ /**
161
+ * @import ModuleFactory, {
162
+ * ModuleFactoryCreateDataContextInfo,
163
+ * ModuleFactoryResult
164
+ * } from "./ModuleFactory"
165
+ */
166
+ /** @import { ModuleId } from "./ChunkGraph" */
167
+ /** @import ModuleGraphConnection from "./ModuleGraphConnection" */
168
+ /** @import RequestShortener from "./RequestShortener" */
169
+ /** @import RuntimeModule from "./RuntimeModule" */
170
+ /** @import { RenderManifestEntry, RenderManifestOptions } from "./Template" */
171
+
172
+ /**
173
+ * One language's source embedded in another's output.
174
+ * @typedef {object} EmbeddedSourceInfo
175
+ * @property {SourceType} type the embedded source's type, e.g. `"css"` / `"html"`
176
+ * @property {SourceType} hostType the type of the source it is embedded in, e.g. `"javascript"`
177
+ * @property {Module} module the module being generated
178
+ * @property {string=} as which of that language's productions this is, where more than one can be embedded — a `style=""` holds `"block-contents"`, an inline `<style>` a whole `"stylesheet"`. Absent where the language has only one
179
+ */
180
+ /**
181
+ * @import {
182
+ * StatsAsset,
183
+ * StatsError,
184
+ * StatsModule
185
+ * } from "./stats/DefaultStatsFactoryPlugin"
186
+ */
187
+ /** @import Hash from "./util/Hash" */
135
188
 
136
189
  /**
137
190
  * Defines the shared type used by this module.
@@ -144,8 +197,8 @@ const { isSourceEqual } = require("./util/source");
144
197
  * @template T
145
198
  * @typedef {import("./util/deprecation").FakeHook<T>} FakeHook<T>
146
199
  */
147
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
148
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
200
+ /** @import { RuntimeSpec } from "./util/runtime" */
201
+ /** @import { InputFileSystem } from "./util/fs" */
149
202
 
150
203
  /**
151
204
  * Defines the callback callback.
@@ -276,7 +329,7 @@ const { isSourceEqual } = require("./util/source");
276
329
  * @property {CodeGenerationResult} codeGenerationResult
277
330
  */
278
331
 
279
- /** @typedef {((id: string) => ExecuteModuleExports) & { i?: ((options: ExecuteOptions) => void)[], c?: Record<string, ExecuteModuleObject> }} WebpackRequire */
332
+ /** @typedef {((id: string) => ExecuteModuleExports) & { i?: ((options: ExecuteOptions) => void)[], c?: Record<string, ExecuteModuleObject>, p?: string }} WebpackRequire */
280
333
 
281
334
  /**
282
335
  * Defines the execute options type used by this module.
@@ -523,20 +576,6 @@ const byNameOrHash = concatComparators(
523
576
  compareSelect((c) => c.fullHash, compareIds)
524
577
  );
525
578
 
526
- const byMessage = compareSelect(
527
- (err) => `${err.message}`,
528
- compareStringsNumeric
529
- );
530
-
531
- const byModule = compareSelect(
532
- (err) => (err.module && err.module.identifier()) || "",
533
- compareStringsNumeric
534
- );
535
-
536
- const byLocation = compareSelect((err) => err.loc, compareLocations);
537
-
538
- const compareErrors = concatComparators(byModule, byLocation, byMessage);
539
-
540
579
  /**
541
580
  * Defines the known unsafe cache data type used by this module.
542
581
  * @typedef {object} KnownUnsafeCacheData
@@ -594,6 +633,7 @@ const reduceAffectType = (connections) => {
594
633
 
595
634
  /** @typedef {{ id: ModuleId, modules?: Map<Module, ModuleId>, blocks?: (ChunkId | null)[], sourceTypes?: SourceTypes }} References */
596
635
  /** @typedef {Map<Module, WeakTupleMap<EXPECTED_ANY[], EXPECTED_ANY>>} ModuleMemCaches */
636
+ /** @typedef {{ chunk: Chunk, load: () => Promise<EXPECTED_ANY>, create: (loaded: EXPECTED_ANY) => RuntimeModule, chunkGraph: ChunkGraph }} PendingRuntimeModule */
597
637
 
598
638
  class Compilation {
599
639
  /**
@@ -884,9 +924,15 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
884
924
  "runtime"
885
925
  ]),
886
926
 
887
- /** @type {SyncHook<[ExecuteModuleArgument, ExecuteModuleContext]>} */
927
+ /**
928
+ * @type {SyncHook<[ExecuteModuleArgument, ExecuteModuleContext]>}
929
+ * @since 5.32.0
930
+ */
888
931
  executeModule: new SyncHook(["options", "context"]),
889
- /** @type {AsyncParallelHook<[ExecuteModuleArgument, ExecuteModuleContext]>} */
932
+ /**
933
+ * @type {AsyncParallelHook<[ExecuteModuleArgument, ExecuteModuleContext]>}
934
+ * @since 5.33.0
935
+ */
890
936
  prepareModuleExecution: new AsyncParallelHook(["options", "context"]),
891
937
 
892
938
  /** @type {AsyncSeriesHook<[Iterable<Module>]>} */
@@ -1090,7 +1136,10 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1090
1136
 
1091
1137
  processAssets: processAssetsHook,
1092
1138
  afterProcessAssets: afterProcessAssetsHook,
1093
- /** @type {AsyncSeriesHook<[CompilationAssets]>} */
1139
+ /**
1140
+ * @type {AsyncSeriesHook<[CompilationAssets]>}
1141
+ * @since 5.8.0
1142
+ */
1094
1143
  processAdditionalAssets: new AsyncSeriesHook(["assets"]),
1095
1144
 
1096
1145
  /** @type {SyncBailHook<[], boolean | void>} */
@@ -1101,6 +1150,27 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1101
1150
  /** @type {SyncWaterfallHook<[RenderManifestEntry[], RenderManifestOptions]>} */
1102
1151
  renderManifest: new SyncWaterfallHook(["result", "options"]),
1103
1152
 
1153
+ /**
1154
+ * Called with source written in one language that a module emits inside
1155
+ * another — CSS or HTML reaching the bundle as a JavaScript string
1156
+ * literal today — before it is embedded; return the (possibly
1157
+ * transformed) source, e.g. a minified one. `info.type` says which
1158
+ * language it is, so one tap serves every pair; no asset carries this
1159
+ * source, so an asset-level minimizer cannot reach it.
1160
+ * @type {AsyncSeriesWaterfallHook<[Source, EmbeddedSourceInfo]>}
1161
+ * @since 5.110.0
1162
+ */
1163
+ renderEmbeddedSource: new AsyncSeriesWaterfallHook(["source", "info"]),
1164
+ /**
1165
+ * Called while hashing a module that embeds such a source. Module hashes
1166
+ * are taken before code generation, so a `renderEmbeddedSource` tap must
1167
+ * write whatever it varies on into the hash, or the codegen cache
1168
+ * replays output from before its options changed.
1169
+ * @type {SyncHook<[Module, Hash]>}
1170
+ * @since 5.110.0
1171
+ */
1172
+ embeddedSourceHash: new SyncHook(["module", "hash"]),
1173
+
1104
1174
  /** @type {SyncHook<[Hash]>} */
1105
1175
  fullHash: new SyncHook(["hash"]),
1106
1176
  /** @type {SyncHook<[Chunk, Hash, ChunkHashContext]>} */
@@ -1231,6 +1301,27 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1231
1301
  );
1232
1302
  /** @type {CodeGenerationResults | undefined} */
1233
1303
  this.codeGenerationResults = undefined;
1304
+ /**
1305
+ * What `renderEmbeddedSource` returned, by module and by language pair and
1306
+ * text. Never shared between modules: a returned source may carry a map,
1307
+ * which names the module it came from.
1308
+ * @type {Map<Module, Map<string, Source>>}
1309
+ * @private
1310
+ */
1311
+ this._embeddedSources = new Map();
1312
+ /**
1313
+ * Embedded source seen this pass that the hook has not been run over yet.
1314
+ * @type {Map<Module, Map<string, { source: Source, info: EmbeddedSourceInfo, jobModule: Module }>>}
1315
+ * @private
1316
+ */
1317
+ this._pendingEmbeddedSources = new Map();
1318
+ /**
1319
+ * The module whose code generation is currently running — the outer one
1320
+ * when a generator runs nested, as `ConcatenatedModule` does.
1321
+ * @type {Module | undefined}
1322
+ * @private
1323
+ */
1324
+ this._generatingModule = undefined;
1234
1325
 
1235
1326
  /** @type {AsyncQueue<Module, Module, Module>} */
1236
1327
  this.processDependenciesQueue = new AsyncQueue({
@@ -1323,6 +1414,10 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1323
1414
  this.errors = [];
1324
1415
  /** @type {Error[]} */
1325
1416
  this.warnings = [];
1417
+ // Hints reported with `performance.hints: "stats"` — surfaced in stats
1418
+ // only, so they neither fail the build nor count as warnings.
1419
+ /** @type {Error[]} */
1420
+ this.hints = [];
1326
1421
  /** @type {Compilation[]} */
1327
1422
  this.children = [];
1328
1423
  /** @type {Map<string, LogEntry[]>} */
@@ -1387,6 +1482,8 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1387
1482
  this._assetsCache = this.getCache("Compilation/assets");
1388
1483
  /** @type {CacheFacade} */
1389
1484
  this._codeGenerationCache = this.getCache("Compilation/codeGeneration");
1485
+ /** @type {PendingRuntimeModule[] | undefined} */
1486
+ this._pendingRuntimeModules = undefined;
1390
1487
 
1391
1488
  const unsafeCache = options.module.unsafeCache;
1392
1489
  /** @type {boolean} */
@@ -1629,7 +1726,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1629
1726
  }
1630
1727
 
1631
1728
  this._modulesCache.get(identifier, null, (err, cacheModule) => {
1632
- if (err) return callback(new ModuleRestoreError(module, err));
1729
+ if (err) return callback(new (getModuleRestoreError())(module, err));
1633
1730
 
1634
1731
  if (currentProfile !== undefined) {
1635
1732
  currentProfile.markRestoringEnd();
@@ -1745,7 +1842,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1745
1842
  module,
1746
1843
  /** @type {WebpackError} */ (err)
1747
1844
  );
1748
- return callback(new ModuleStoreError(module, err));
1845
+ return callback(new (getModuleStoreError())(module, err));
1749
1846
  }
1750
1847
  this.hooks.succeedModule.call(module);
1751
1848
  return callback();
@@ -2249,7 +2346,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2249
2346
  }
2250
2347
  }
2251
2348
  if (err) {
2252
- const notFoundError = new ModuleNotFoundError(
2349
+ const notFoundError = new (getModuleNotFoundError())(
2253
2350
  originModule,
2254
2351
  err,
2255
2352
  /** @type {DependencyLocation} */
@@ -2508,7 +2605,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2508
2605
  if (blockReasons !== undefined) {
2509
2606
  for (const m of blockReasons) {
2510
2607
  if (m === module) {
2511
- return callback(new BuildCycleError(module));
2608
+ return callback(new (getBuildCycleError())(module));
2512
2609
  }
2513
2610
  set.add(m);
2514
2611
  }
@@ -3504,6 +3601,10 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
3504
3601
  this.addModuleQueue.clear();
3505
3602
  // lazy barrel only acts during make; release its bookkeeping now
3506
3603
  this._lazyBarrelController.clear();
3604
+ // unsafe-cache restore tables are only read during make; release them
3605
+ // so they stop pinning restored modules for the rest of the compilation
3606
+ this._restoredUnsafeCacheModuleEntries.clear();
3607
+ this._restoredUnsafeCacheEntries.clear();
3507
3608
  return callback(err);
3508
3609
  };
3509
3610
 
@@ -3775,100 +3876,105 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3775
3876
  this.logger.time("runtime requirements");
3776
3877
  this.hooks.beforeRuntimeRequirements.call();
3777
3878
  this.processRuntimeRequirements();
3778
- this.hooks.afterRuntimeRequirements.call();
3779
- this.logger.timeEnd("runtime requirements");
3780
-
3781
- this.logger.time("hashing");
3782
- this.hooks.beforeHash.call();
3783
- const codeGenerationJobs = this.createHash();
3784
- this.hooks.afterHash.call();
3785
- this.logger.timeEnd("hashing");
3786
-
3787
- this._runCodeGenerationJobs(codeGenerationJobs, (err) => {
3879
+ this._attachPendingRuntimeModules((err) => {
3788
3880
  if (err) {
3789
3881
  return finalCallback(err);
3790
3882
  }
3883
+ this.hooks.afterRuntimeRequirements.call();
3884
+ this.logger.timeEnd("runtime requirements");
3791
3885
 
3792
- if (shouldRecord) {
3793
- this.logger.time("record hash");
3794
- this.hooks.recordHash.call(
3795
- /** @type {Records} */
3796
- (this.records)
3797
- );
3798
- this.logger.timeEnd("record hash");
3799
- }
3886
+ this.logger.time("hashing");
3887
+ this.hooks.beforeHash.call();
3888
+ const codeGenerationJobs = this.createHash();
3889
+ this.hooks.afterHash.call();
3890
+ this.logger.timeEnd("hashing");
3800
3891
 
3801
- this.logger.time("module assets");
3802
- this.clearAssets();
3892
+ this._runCodeGenerationJobs(codeGenerationJobs, (err) => {
3893
+ if (err) {
3894
+ return finalCallback(err);
3895
+ }
3803
3896
 
3804
- this.hooks.beforeModuleAssets.call();
3805
- this.createModuleAssets();
3806
- this.logger.timeEnd("module assets");
3897
+ if (shouldRecord) {
3898
+ this.logger.time("record hash");
3899
+ this.hooks.recordHash.call(
3900
+ /** @type {Records} */
3901
+ (this.records)
3902
+ );
3903
+ this.logger.timeEnd("record hash");
3904
+ }
3807
3905
 
3808
- const cont = () => {
3809
- this.logger.time("process assets");
3810
- this.hooks.processAssets.callAsync(this.assets, (err) => {
3811
- if (err) {
3812
- return finalCallback(
3813
- makeWebpackError(err, "Compilation.hooks.processAssets")
3814
- );
3815
- }
3816
- this.hooks.afterProcessAssets.call(this.assets);
3817
- this.logger.timeEnd("process assets");
3818
- this.assets =
3819
- /** @type {CompilationAssets} */
3820
- (
3821
- this._backCompat
3822
- ? soonFrozenObjectDeprecation(
3823
- this.assets,
3824
- "Compilation.assets",
3825
- "DEP_WEBPACK_COMPILATION_ASSETS",
3826
- `BREAKING CHANGE: No more changes should happen to Compilation.assets after sealing the Compilation.
3827
- Do changes to assets earlier, e. g. in Compilation.hooks.processAssets.
3828
- Make sure to select an appropriate stage from Compilation.PROCESS_ASSETS_STAGE_*.`
3829
- )
3830
- : Object.freeze(this.assets)
3831
- );
3906
+ this.logger.time("module assets");
3907
+ this.clearAssets();
3832
3908
 
3833
- this.summarizeDependencies();
3834
- if (shouldRecord) {
3835
- this.hooks.record.call(
3836
- this,
3837
- /** @type {Records} */
3838
- (this.records)
3839
- );
3840
- }
3909
+ this.hooks.beforeModuleAssets.call();
3910
+ this.createModuleAssets();
3911
+ this.logger.timeEnd("module assets");
3841
3912
 
3842
- if (this.hooks.needAdditionalSeal.call()) {
3843
- this.unseal();
3844
- return this.seal(callback);
3845
- }
3846
- return this.hooks.afterSeal.callAsync((err) => {
3913
+ const cont = () => {
3914
+ this.logger.time("process assets");
3915
+ this.hooks.processAssets.callAsync(this.assets, (err) => {
3847
3916
  if (err) {
3848
3917
  return finalCallback(
3849
- makeWebpackError(err, "Compilation.hooks.afterSeal")
3918
+ makeWebpackError(err, "Compilation.hooks.processAssets")
3919
+ );
3920
+ }
3921
+ this.hooks.afterProcessAssets.call(this.assets);
3922
+ this.logger.timeEnd("process assets");
3923
+ this.assets =
3924
+ /** @type {CompilationAssets} */
3925
+ (
3926
+ this._backCompat
3927
+ ? soonFrozenObjectDeprecation(
3928
+ this.assets,
3929
+ "Compilation.assets",
3930
+ "DEP_WEBPACK_COMPILATION_ASSETS",
3931
+ `BREAKING CHANGE: No more changes should happen to Compilation.assets after sealing the Compilation.
3932
+ Do changes to assets earlier, e. g. in Compilation.hooks.processAssets.
3933
+ Make sure to select an appropriate stage from Compilation.PROCESS_ASSETS_STAGE_*.`
3934
+ )
3935
+ : Object.freeze(this.assets)
3936
+ );
3937
+
3938
+ this.summarizeDependencies();
3939
+ if (shouldRecord) {
3940
+ this.hooks.record.call(
3941
+ this,
3942
+ /** @type {Records} */
3943
+ (this.records)
3850
3944
  );
3851
3945
  }
3852
- this.fileSystemInfo.logStatistics();
3853
- finalCallback();
3946
+
3947
+ if (this.hooks.needAdditionalSeal.call()) {
3948
+ this.unseal();
3949
+ return this.seal(callback);
3950
+ }
3951
+ return this.hooks.afterSeal.callAsync((err) => {
3952
+ if (err) {
3953
+ return finalCallback(
3954
+ makeWebpackError(err, "Compilation.hooks.afterSeal")
3955
+ );
3956
+ }
3957
+ this.fileSystemInfo.logStatistics();
3958
+ finalCallback();
3959
+ });
3854
3960
  });
3855
- });
3856
- };
3961
+ };
3857
3962
 
3858
- this.logger.time("create chunk assets");
3859
- if (this.hooks.shouldGenerateChunkAssets.call() !== false) {
3860
- this.hooks.beforeChunkAssets.call();
3861
- this.createChunkAssets((err) => {
3963
+ this.logger.time("create chunk assets");
3964
+ if (this.hooks.shouldGenerateChunkAssets.call() !== false) {
3965
+ this.hooks.beforeChunkAssets.call();
3966
+ this.createChunkAssets((err) => {
3967
+ this.logger.timeEnd("create chunk assets");
3968
+ if (err) {
3969
+ return finalCallback(err);
3970
+ }
3971
+ cont();
3972
+ });
3973
+ } else {
3862
3974
  this.logger.timeEnd("create chunk assets");
3863
- if (err) {
3864
- return finalCallback(err);
3865
- }
3866
3975
  cont();
3867
- });
3868
- } else {
3869
- this.logger.timeEnd("create chunk assets");
3870
- cont();
3871
- }
3976
+ }
3977
+ });
3872
3978
  });
3873
3979
  });
3874
3980
  }
@@ -3894,7 +4000,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3894
4000
  // A consolidated dependency (e.g. CssIcssExportDependency) carries
3895
4001
  // per-item locations on the error itself; fall back to the
3896
4002
  // dependency loc for the usual one-loc-per-dependency case.
3897
- const warning = new ModuleDependencyWarning(
4003
+ const warning = new (getModuleDependencyWarning())(
3898
4004
  module,
3899
4005
  w,
3900
4006
  /** @type {EXPECTED_ANY} */ (w).loc || d.loc
@@ -3906,7 +4012,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3906
4012
  const errors = d.getErrors(this.moduleGraph);
3907
4013
  if (errors) {
3908
4014
  for (const e of errors) {
3909
- const error = new ModuleDependencyError(
4015
+ const error = new (getModuleDependencyError())(
3910
4016
  module,
3911
4017
  e,
3912
4018
  /** @type {EXPECTED_ANY} */ (e).loc || d.loc
@@ -3962,6 +4068,120 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3962
4068
  this._runCodeGenerationJobs(jobs, callback);
3963
4069
  }
3964
4070
 
4071
+ /**
4072
+ * Offer source one language embeds in another to `renderEmbeddedSource`. The
4073
+ * hook is async and generation is not, so the first pass returns the source
4074
+ * untouched and records it; `_resolveEmbeddedSources` awaits the hook and
4075
+ * generates those modules again, when the resolved source is waiting here.
4076
+ * @param {Source} source the embedded source
4077
+ * @param {EmbeddedSourceInfo} info what it is and where it is going
4078
+ * @returns {Source} the resolved source, or `source` until it is resolved
4079
+ */
4080
+ _resolveEmbeddedSource(source, info) {
4081
+ // Untapped, nothing can change: skip reading the text and the second pass.
4082
+ if (this.hooks.renderEmbeddedSource.taps.length === 0) return source;
4083
+ const text = /** @type {string} */ (source.source());
4084
+ // Everything the hook is handed is in the key: a tap answers per language
4085
+ // pair, so identical text offered as two of them is two questions.
4086
+ const key = `${info.type}${info.hostType}${text}`;
4087
+ const resolved = this._embeddedSources.get(info.module);
4088
+ if (resolved !== undefined) {
4089
+ const hit = resolved.get(key);
4090
+ if (hit !== undefined) return hit;
4091
+ }
4092
+ getOrInsert(this._pendingEmbeddedSources, info.module, () => new Map()).set(
4093
+ key,
4094
+ { source, info, jobModule: this._generatingModule || info.module }
4095
+ );
4096
+ return source;
4097
+ }
4098
+
4099
+ /**
4100
+ * Run `renderEmbeddedSource` over everything the last pass recorded, then
4101
+ * generate those modules again so the resolved source is the one embedded.
4102
+ * @private
4103
+ * @param {CodeGenerationJobs} jobs the jobs the last pass ran
4104
+ * @param {Callback} callback callback
4105
+ * @returns {void}
4106
+ */
4107
+ _resolveEmbeddedSources(jobs, callback) {
4108
+ if (this._pendingEmbeddedSources.size === 0) return callback();
4109
+ /** @type {{ key: string, source: Source, info: EmbeddedSourceInfo, jobModule: Module }[]} */
4110
+ const pending = [];
4111
+ for (const byKey of this._pendingEmbeddedSources.values()) {
4112
+ for (const [key, entry] of byKey) {
4113
+ pending.push({ key, ...entry });
4114
+ }
4115
+ }
4116
+ this._pendingEmbeddedSources.clear();
4117
+ asyncLib.each(
4118
+ pending,
4119
+ ({ key, source, info }, cb) => {
4120
+ this.hooks.renderEmbeddedSource.callAsync(
4121
+ source,
4122
+ info,
4123
+ /**
4124
+ * @param {(Error | null)=} err error
4125
+ * @param {Source=} result the resolved source
4126
+ * @returns {void}
4127
+ */
4128
+ (err, result) => {
4129
+ if (err) return cb(err);
4130
+ getOrInsert(
4131
+ this._embeddedSources,
4132
+ info.module,
4133
+ () => new Map()
4134
+ ).set(key, result || source);
4135
+ cb();
4136
+ }
4137
+ );
4138
+ },
4139
+ (err) => {
4140
+ if (err) return callback(/** @type {WebpackError} */ (err));
4141
+ const affected = new Set(pending.map(({ jobModule }) => jobModule));
4142
+ const redo = jobs.filter(({ module }) => affected.has(module));
4143
+ // Generated directly rather than through the codegen cache: the module
4144
+ // hash is unchanged, so the cache would hand back the first pass again.
4145
+ const results =
4146
+ /** @type {CodeGenerationResults} */
4147
+ (this.codeGenerationResults);
4148
+ for (const { module, runtime, runtimes } of redo) {
4149
+ /** @type {CodeGenerationResult} */
4150
+ let result;
4151
+ try {
4152
+ this._generatingModule = module;
4153
+ result = module.codeGeneration({
4154
+ chunkGraph: this.chunkGraph,
4155
+ moduleGraph: this.moduleGraph,
4156
+ dependencyTemplates: this.dependencyTemplates,
4157
+ runtimeTemplate: this.runtimeTemplate,
4158
+ runtime,
4159
+ runtimes,
4160
+ codeGenerationResults: results,
4161
+ compilation: this
4162
+ });
4163
+ } catch (err) {
4164
+ // Reported and carried on with, as the first pass does: a throw
4165
+ // here would leave the build with no error to show for it.
4166
+ this.errors.push(
4167
+ new (getCodeGenerationError())(module, /** @type {Error} */ (err))
4168
+ );
4169
+ result = {
4170
+ sources: new Map(),
4171
+ runtimeRequirements: null,
4172
+ data: undefined
4173
+ };
4174
+ } finally {
4175
+ this._generatingModule = undefined;
4176
+ }
4177
+ for (const r of runtimes) results.add(module, r, result);
4178
+ }
4179
+ // A tap that changed the source again is resolved on the next round.
4180
+ this._resolveEmbeddedSources(redo, callback);
4181
+ }
4182
+ );
4183
+ }
4184
+
3965
4185
  /**
3966
4186
  * Run code generation jobs.
3967
4187
  * @private
@@ -3973,6 +4193,10 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3973
4193
  if (jobs.length === 0) {
3974
4194
  return callback();
3975
4195
  }
4196
+ // `jobs` is reassigned per iteration; embedded source is resolved over all.
4197
+ // Untapped nothing is recorded, so the array is not held past its iteration.
4198
+ const allJobs =
4199
+ this.hooks.renderEmbeddedSource.taps.length === 0 ? undefined : jobs;
3976
4200
  let statModulesFromCache = 0;
3977
4201
  let statModulesGenerated = 0;
3978
4202
  const { chunkGraph, moduleGraph, dependencyTemplates, runtimeTemplate } =
@@ -4065,7 +4289,11 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4065
4289
  (statModulesGenerated + statModulesFromCache)
4066
4290
  )}% code generated (${statModulesGenerated} generated, ${statModulesFromCache} from cache)`
4067
4291
  );
4068
- callback();
4292
+ this._resolveEmbeddedSources(allJobs || jobs, (err) => {
4293
+ this._embeddedSources.clear();
4294
+ this._pendingEmbeddedSources.clear();
4295
+ callback(err);
4296
+ });
4069
4297
  }
4070
4298
  );
4071
4299
  };
@@ -4109,6 +4337,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4109
4337
  try {
4110
4338
  codeGenerated = true;
4111
4339
  this.codeGeneratedModules.add(module);
4340
+ this._generatingModule = module;
4112
4341
  result = module.codeGeneration({
4113
4342
  chunkGraph,
4114
4343
  moduleGraph,
@@ -4121,13 +4350,15 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4121
4350
  });
4122
4351
  } catch (err) {
4123
4352
  errors.push(
4124
- new CodeGenerationError(module, /** @type {Error} */ (err))
4353
+ new (getCodeGenerationError())(module, /** @type {Error} */ (err))
4125
4354
  );
4126
4355
  result = {
4127
4356
  sources: new Map(),
4128
4357
  runtimeRequirements: null,
4129
4358
  data: undefined
4130
4359
  };
4360
+ } finally {
4361
+ this._generatingModule = undefined;
4131
4362
  }
4132
4363
  for (const runtime of runtimes) {
4133
4364
  results.add(module, runtime, result);
@@ -4150,6 +4381,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4150
4381
  try {
4151
4382
  codeGenerated = true;
4152
4383
  this.codeGeneratedModules.add(module);
4384
+ this._generatingModule = module;
4153
4385
  result = module.codeGeneration({
4154
4386
  chunkGraph,
4155
4387
  moduleGraph,
@@ -4162,13 +4394,15 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4162
4394
  });
4163
4395
  } catch (err) {
4164
4396
  errors.push(
4165
- new CodeGenerationError(module, /** @type {Error} */ (err))
4397
+ new (getCodeGenerationError())(module, /** @type {Error} */ (err))
4166
4398
  );
4167
4399
  result = cachedResult = {
4168
4400
  sources: new Map(),
4169
4401
  runtimeRequirements: null,
4170
4402
  data: undefined
4171
4403
  };
4404
+ } finally {
4405
+ this._generatingModule = undefined;
4172
4406
  }
4173
4407
  } else {
4174
4408
  result = cachedResult;
@@ -4343,6 +4577,46 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4343
4577
  this.logger.timeEnd("runtime requirements.entries");
4344
4578
  }
4345
4579
 
4580
+ /**
4581
+ * Queues a runtime module whose implementation is loaded on demand, for
4582
+ * `_attachPendingRuntimeModules` to await and build once the requirement pass
4583
+ * is over. `runtimeRequirementInTree` is a sync hook, so a tap cannot await
4584
+ * the load itself; anything the tap reads off the requirement set must be
4585
+ * captured before queueing, since `create` runs later.
4586
+ * @param {Chunk} chunk target chunk
4587
+ * @param {() => Promise<EXPECTED_ANY>} load resolves the runtime module implementation
4588
+ * @param {(loaded: EXPECTED_ANY) => RuntimeModule} create builds the runtime module from it
4589
+ * @param {ChunkGraph} chunkGraph the chunk graph
4590
+ * @returns {void}
4591
+ */
4592
+ addLazyRuntimeModule(chunk, load, create, chunkGraph = this.chunkGraph) {
4593
+ if (this._pendingRuntimeModules === undefined) {
4594
+ this._pendingRuntimeModules = [];
4595
+ }
4596
+ this._pendingRuntimeModules.push({ chunk, load, create, chunkGraph });
4597
+ }
4598
+
4599
+ /**
4600
+ * Awaits and attaches everything `addLazyRuntimeModule` queued. The only
4601
+ * place a deferred runtime module implementation is loaded.
4602
+ * @param {Callback} callback signals when the call finishes
4603
+ * @returns {void}
4604
+ */
4605
+ _attachPendingRuntimeModules(callback) {
4606
+ const pending = this._pendingRuntimeModules;
4607
+ if (pending === undefined) return callback(null);
4608
+ this._pendingRuntimeModules = undefined;
4609
+ Promise.all(pending.map(({ load }) => load()))
4610
+ .then((loaded) => {
4611
+ for (let i = 0; i < pending.length; i++) {
4612
+ const { chunk, create, chunkGraph } = pending[i];
4613
+ this.addRuntimeModule(chunk, create(loaded[i]), chunkGraph);
4614
+ }
4615
+ })
4616
+ // a `runtimeModule` tap may have queued more
4617
+ .then(() => this._attachPendingRuntimeModules(callback), callback);
4618
+ }
4619
+
4346
4620
  // TODO webpack 6 make chunkGraph argument non-optional
4347
4621
  /**
4348
4622
  * Adds runtime module.
@@ -4723,6 +4997,8 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4723
4997
 
4724
4998
  this.errors.sort(compareErrors);
4725
4999
  this.warnings.sort(compareErrors);
5000
+ // `hints` is sorted where stats read it — producers tap `afterSeal` and
5001
+ // `afterEmit`, so they append after this point.
4726
5002
  this.children.sort(byNameOrHash);
4727
5003
  }
4728
5004
 
@@ -4754,10 +5030,13 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4754
5030
  for (const module of this.modules) {
4755
5031
  const memCache = moduleMemCaches2 && moduleMemCaches2.get(module);
4756
5032
  for (const runtime of chunkGraph.getModuleRuntimes(module)) {
5033
+ const cacheKey = memCache
5034
+ ? `moduleHash-${getRuntimeKey(runtime)}`
5035
+ : undefined;
4757
5036
  if (memCache) {
4758
5037
  const digest =
4759
5038
  /** @type {string} */
4760
- (memCache.get(`moduleHash-${getRuntimeKey(runtime)}`));
5039
+ (memCache.get(/** @type {string} */ (cacheKey)));
4761
5040
  if (digest !== undefined) {
4762
5041
  chunkGraph.setModuleHashes(
4763
5042
  module,
@@ -4781,7 +5060,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4781
5060
  errors
4782
5061
  );
4783
5062
  if (memCache) {
4784
- memCache.set(`moduleHash-${getRuntimeKey(runtime)}`, digest);
5063
+ memCache.set(/** @type {string} */ (cacheKey), digest);
4785
5064
  }
4786
5065
  }
4787
5066
  }
@@ -4836,7 +5115,9 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4836
5115
  });
4837
5116
  moduleHashDigest = moduleHash.digest(hashDigest);
4838
5117
  } catch (err) {
4839
- errors.push(new ModuleHashingError(module, /** @type {Error} */ (err)));
5118
+ errors.push(
5119
+ new (getModuleHashingError())(module, /** @type {Error} */ (err))
5120
+ );
4840
5121
  moduleHashDigest = "XXXXXX";
4841
5122
  }
4842
5123
  chunkGraph.setModuleHashes(
@@ -5087,7 +5368,7 @@ This prevents using hashes of each other and should be avoided.`);
5087
5368
  }
5088
5369
  } catch (err) {
5089
5370
  this.errors.push(
5090
- new ChunkRenderError(chunk, "", /** @type {Error} */ (err))
5371
+ new (getChunkRenderError())(chunk, "", /** @type {Error} */ (err))
5091
5372
  );
5092
5373
  }
5093
5374
  this.logger.timeAggregate("hashing: hash chunks");
@@ -5603,7 +5884,7 @@ This prevents using hashes of each other and should be avoided.`);
5603
5884
  });
5604
5885
  } catch (err) {
5605
5886
  this.errors.push(
5606
- new ChunkRenderError(chunk, "", /** @type {Error} */ (err))
5887
+ new (getChunkRenderError())(chunk, "", /** @type {Error} */ (err))
5607
5888
  );
5608
5889
  return callback();
5609
5890
  }
@@ -5641,7 +5922,9 @@ This prevents using hashes of each other and should be avoided.`);
5641
5922
  ? filenameTemplate
5642
5923
  : "");
5643
5924
 
5644
- this.errors.push(new ChunkRenderError(chunk, filename, err));
5925
+ this.errors.push(
5926
+ new (getChunkRenderError())(chunk, filename, err)
5927
+ );
5645
5928
  inTry = false;
5646
5929
  return callback();
5647
5930
  };
@@ -5867,6 +6150,7 @@ This prevents using hashes of each other and should be avoided.`);
5867
6150
  this.moduleGraph,
5868
6151
  this.outputOptions.hashFunction
5869
6152
  );
6153
+ chunkGraph.buildTimeExecution = true;
5870
6154
  const runtime = "build time";
5871
6155
  const { hashFunction, hashDigest, hashDigestLength } =
5872
6156
  this.outputOptions;
@@ -5976,265 +6260,276 @@ This prevents using hashes of each other and should be avoided.`);
5976
6260
  codeGenerationResults,
5977
6261
  chunkGraphEntries: chunks
5978
6262
  });
6263
+ // restored before the deferred attach so no concurrent `make`
6264
+ // task observes the build-time graph
5979
6265
  this.chunkGraph = old;
6266
+ this._attachPendingRuntimeModules((err) => {
6267
+ if (err) return callback(err);
5980
6268
 
5981
- const runtimeModules =
5982
- chunkGraph.getChunkRuntimeModulesIterable(chunk);
6269
+ const runtimeModules =
6270
+ chunkGraph.getChunkRuntimeModulesIterable(chunk);
5983
6271
 
5984
- // Hash runtime modules
5985
- for (const module of runtimeModules) {
5986
- modules.add(module);
5987
- this._createModuleHash(
5988
- module,
5989
- chunkGraph,
5990
- runtime,
5991
- hashFunction,
5992
- runtimeTemplate,
5993
- hashDigest,
5994
- hashDigestLength,
5995
- errors
5996
- );
5997
- }
5998
-
5999
- // Generate code for all runtime modules
6000
- asyncLib.eachLimit(
6001
- /** @type {import("neo-async").IterableCollection<RuntimeModule>} */ (
6002
- runtimeModules
6003
- ),
6004
- 10,
6005
- codeGen,
6006
- (err) => {
6007
- if (err) return callback(err);
6008
- reportErrors();
6009
-
6010
- /** @type {Map<Module, ExecuteModuleArgument>} */
6011
- const moduleArgumentsMap = new Map();
6012
- /** @type {Map<string, ExecuteModuleArgument>} */
6013
- const moduleArgumentsById = new Map();
6014
-
6015
- /** @type {ExecuteModuleResult["fileDependencies"]} */
6016
- const fileDependencies = new LazySet();
6017
- /** @type {ExecuteModuleResult["contextDependencies"]} */
6018
- const contextDependencies = new LazySet();
6019
- /** @type {ExecuteModuleResult["missingDependencies"]} */
6020
- const missingDependencies = new LazySet();
6021
- /** @type {ExecuteModuleResult["buildDependencies"]} */
6022
- const buildDependencies = new LazySet();
6023
-
6024
- /** @type {ExecuteModuleResult["assets"]} */
6025
- const assets = new Map();
6026
-
6027
- let cacheable = true;
6028
- /** @type {ExecuteModuleResult["notCacheableReasons"]} */
6029
- const notCacheableReasons = [];
6030
-
6031
- /** @type {ExecuteModuleContext} */
6032
- const context = {
6033
- assets,
6034
- __webpack_require__: undefined,
6035
- chunk,
6036
- chunkGraph
6037
- };
6272
+ // Hash runtime modules
6273
+ for (const module of runtimeModules) {
6274
+ modules.add(module);
6275
+ this._createModuleHash(
6276
+ module,
6277
+ chunkGraph,
6278
+ runtime,
6279
+ hashFunction,
6280
+ runtimeTemplate,
6281
+ hashDigest,
6282
+ hashDigestLength,
6283
+ errors
6284
+ );
6285
+ }
6038
6286
 
6039
- // Prepare execution
6040
- asyncLib.eachLimit(
6041
- modules,
6042
- 10,
6043
- (module, callback) => {
6044
- const codeGenerationResult = codeGenerationResults.get(
6045
- module,
6046
- runtime
6047
- );
6048
- /** @type {ExecuteModuleArgument} */
6049
- const moduleArgument = {
6050
- module,
6051
- codeGenerationResult,
6052
- moduleObject: undefined
6053
- };
6054
- moduleArgumentsMap.set(module, moduleArgument);
6055
- moduleArgumentsById.set(
6056
- module.identifier(),
6057
- moduleArgument
6058
- );
6059
- module.addCacheDependencies(
6060
- fileDependencies,
6061
- contextDependencies,
6062
- missingDependencies,
6063
- buildDependencies
6064
- );
6065
- const buildInfo = /** @type {BuildInfo} */ (
6066
- module.buildInfo
6067
- );
6068
- if (buildInfo.cacheable === false) {
6069
- cacheable = false;
6070
- if (buildInfo.notCacheableReasons) {
6071
- for (const reason of buildInfo.notCacheableReasons) {
6072
- if (!notCacheableReasons.includes(reason)) {
6073
- notCacheableReasons.push(reason);
6287
+ // Generate code for all runtime modules
6288
+ asyncLib.eachLimit(
6289
+ /** @type {import("neo-async").IterableCollection<RuntimeModule>} */ (
6290
+ runtimeModules
6291
+ ),
6292
+ 10,
6293
+ codeGen,
6294
+ (err) => {
6295
+ if (err) return callback(err);
6296
+ reportErrors();
6297
+
6298
+ /** @type {Map<Module, ExecuteModuleArgument>} */
6299
+ const moduleArgumentsMap = new Map();
6300
+ /** @type {Map<string, ExecuteModuleArgument>} */
6301
+ const moduleArgumentsById = new Map();
6302
+
6303
+ /** @type {ExecuteModuleResult["fileDependencies"]} */
6304
+ const fileDependencies = new LazySet();
6305
+ /** @type {ExecuteModuleResult["contextDependencies"]} */
6306
+ const contextDependencies = new LazySet();
6307
+ /** @type {ExecuteModuleResult["missingDependencies"]} */
6308
+ const missingDependencies = new LazySet();
6309
+ /** @type {ExecuteModuleResult["buildDependencies"]} */
6310
+ const buildDependencies = new LazySet();
6311
+
6312
+ /** @type {ExecuteModuleResult["assets"]} */
6313
+ const assets = new Map();
6314
+
6315
+ let cacheable = true;
6316
+ /** @type {ExecuteModuleResult["notCacheableReasons"]} */
6317
+ const notCacheableReasons = [];
6318
+
6319
+ /** @type {ExecuteModuleContext} */
6320
+ const context = {
6321
+ assets,
6322
+ __webpack_require__: undefined,
6323
+ chunk,
6324
+ chunkGraph
6325
+ };
6326
+
6327
+ // Prepare execution
6328
+ asyncLib.eachLimit(
6329
+ modules,
6330
+ 10,
6331
+ (module, callback) => {
6332
+ const codeGenerationResult = codeGenerationResults.get(
6333
+ module,
6334
+ runtime
6335
+ );
6336
+ /** @type {ExecuteModuleArgument} */
6337
+ const moduleArgument = {
6338
+ module,
6339
+ codeGenerationResult,
6340
+ moduleObject: undefined
6341
+ };
6342
+ moduleArgumentsMap.set(module, moduleArgument);
6343
+ moduleArgumentsById.set(
6344
+ module.identifier(),
6345
+ moduleArgument
6346
+ );
6347
+ module.addCacheDependencies(
6348
+ fileDependencies,
6349
+ contextDependencies,
6350
+ missingDependencies,
6351
+ buildDependencies
6352
+ );
6353
+ const buildInfo = /** @type {BuildInfo} */ (
6354
+ module.buildInfo
6355
+ );
6356
+ if (buildInfo.cacheable === false) {
6357
+ cacheable = false;
6358
+ if (buildInfo.notCacheableReasons) {
6359
+ for (const reason of buildInfo.notCacheableReasons) {
6360
+ if (!notCacheableReasons.includes(reason)) {
6361
+ notCacheableReasons.push(reason);
6362
+ }
6074
6363
  }
6075
6364
  }
6076
6365
  }
6077
- }
6078
- if (module.buildInfo && module.buildInfo.assets) {
6079
- const { assets: moduleAssets, assetsInfo } =
6080
- module.buildInfo;
6081
- for (const assetName of Object.keys(moduleAssets)) {
6082
- assets.set(assetName, {
6083
- source: moduleAssets[assetName],
6084
- info: assetsInfo
6085
- ? assetsInfo.get(assetName)
6086
- : undefined
6087
- });
6088
- }
6089
- }
6090
- this.hooks.prepareModuleExecution.callAsync(
6091
- moduleArgument,
6092
- context,
6093
- callback
6094
- );
6095
- },
6096
- (err) => {
6097
- if (err) return callback(/** @type {WebpackError} */ (err));
6098
-
6099
- /** @type {ExecuteModuleExports | undefined} */
6100
- let exports;
6101
- try {
6102
- const {
6103
- strictModuleErrorHandling,
6104
- strictModuleExceptionHandling
6105
- } = this.outputOptions;
6106
-
6107
- /** @type {WebpackRequire} */
6108
- const __webpack_require__ = (id) => {
6109
- const cached = moduleCache[id];
6110
- if (cached !== undefined) {
6111
- if (cached.error) throw cached.error;
6112
- return cached.exports;
6366
+ if (module.buildInfo && module.buildInfo.assets) {
6367
+ const { assets: moduleAssets, assetsInfo } =
6368
+ module.buildInfo;
6369
+ for (const assetName of Object.keys(moduleAssets)) {
6370
+ assets.set(assetName, {
6371
+ source: moduleAssets[assetName],
6372
+ info: assetsInfo
6373
+ ? assetsInfo.get(assetName)
6374
+ : undefined
6375
+ });
6113
6376
  }
6114
- const moduleArgument = moduleArgumentsById.get(id);
6115
- return __webpack_require_module__(
6116
- /** @type {ExecuteModuleArgument} */
6117
- (moduleArgument),
6118
- id
6119
- );
6120
- };
6121
- const interceptModuleExecution = (__webpack_require__[
6122
- /** @type {"i"} */
6123
- (
6124
- RuntimeGlobals.interceptModuleExecution.replace(
6125
- `${RuntimeGlobals.require}.`,
6126
- ""
6377
+ }
6378
+ this.hooks.prepareModuleExecution.callAsync(
6379
+ moduleArgument,
6380
+ context,
6381
+ callback
6382
+ );
6383
+ },
6384
+ (err) => {
6385
+ if (err) {
6386
+ return callback(/** @type {WebpackError} */ (err));
6387
+ }
6388
+
6389
+ /** @type {ExecuteModuleExports | undefined} */
6390
+ let exports;
6391
+ try {
6392
+ const {
6393
+ strictModuleErrorHandling,
6394
+ strictModuleExceptionHandling
6395
+ } = this.outputOptions;
6396
+
6397
+ /** @type {WebpackRequire} */
6398
+ const __webpack_require__ = (id) => {
6399
+ const cached = moduleCache[id];
6400
+ if (cached !== undefined) {
6401
+ if (cached.error) throw cached.error;
6402
+ return cached.exports;
6403
+ }
6404
+ const moduleArgument = moduleArgumentsById.get(id);
6405
+ return __webpack_require_module__(
6406
+ /** @type {ExecuteModuleArgument} */
6407
+ (moduleArgument),
6408
+ id
6409
+ );
6410
+ };
6411
+ const interceptModuleExecution = (__webpack_require__[
6412
+ /** @type {"i"} */
6413
+ (
6414
+ RuntimeGlobals.interceptModuleExecution.replace(
6415
+ `${RuntimeGlobals.require}.`,
6416
+ ""
6417
+ )
6127
6418
  )
6128
- )
6129
- ] = /** @type {NonNullable<WebpackRequire["i"]>} */ ([]));
6130
- const moduleCache = (__webpack_require__[
6131
- /** @type {"c"} */ (
6132
- RuntimeGlobals.moduleCache.replace(
6133
- `${RuntimeGlobals.require}.`,
6134
- ""
6419
+ ] =
6420
+ /** @type {NonNullable<WebpackRequire["i"]>} */ ([]));
6421
+ const moduleCache = (__webpack_require__[
6422
+ /** @type {"c"} */ (
6423
+ RuntimeGlobals.moduleCache.replace(
6424
+ `${RuntimeGlobals.require}.`,
6425
+ ""
6426
+ )
6135
6427
  )
6136
- )
6137
- ] = /** @type {NonNullable<WebpackRequire["c"]>} */ ({}));
6138
-
6139
- context.__webpack_require__ = __webpack_require__;
6140
-
6141
- /**
6142
- * Webpack require module.
6143
- * @param {ExecuteModuleArgument} moduleArgument the module argument
6144
- * @param {string=} id id
6145
- * @returns {ExecuteModuleExports} exports
6146
- */
6147
- const __webpack_require_module__ = (
6148
- moduleArgument,
6149
- id
6150
- ) => {
6151
- /** @type {ExecuteOptions} */
6152
- const execOptions = {
6153
- id,
6154
- module: {
6428
+ ] =
6429
+ /** @type {NonNullable<WebpackRequire["c"]>} */ ({}));
6430
+
6431
+ context.__webpack_require__ = __webpack_require__;
6432
+
6433
+ /**
6434
+ * Webpack require module.
6435
+ * @param {ExecuteModuleArgument} moduleArgument the module argument
6436
+ * @param {string=} id id
6437
+ * @returns {ExecuteModuleExports} exports
6438
+ */
6439
+ const __webpack_require_module__ = (
6440
+ moduleArgument,
6441
+ id
6442
+ ) => {
6443
+ /** @type {ExecuteOptions} */
6444
+ const execOptions = {
6155
6445
  id,
6156
- exports: {},
6157
- loaded: false,
6158
- error: undefined
6159
- },
6160
- require: __webpack_require__
6161
- };
6162
- for (const handler of interceptModuleExecution) {
6163
- handler(execOptions);
6164
- }
6165
- const module = moduleArgument.module;
6166
- this.buildTimeExecutedModules.add(module);
6167
- const moduleObject = execOptions.module;
6168
- moduleArgument.moduleObject = moduleObject;
6169
- try {
6170
- if (id) moduleCache[id] = moduleObject;
6171
-
6172
- tryRunOrWebpackError(
6173
- () =>
6174
- this.hooks.executeModule.call(
6175
- moduleArgument,
6176
- context
6177
- ),
6178
- "Compilation.hooks.executeModule"
6179
- );
6180
- moduleObject.loaded = true;
6181
- return moduleObject.exports;
6182
- } catch (execErr) {
6183
- if (strictModuleExceptionHandling) {
6184
- if (id) delete moduleCache[id];
6185
- } else if (strictModuleErrorHandling) {
6186
- moduleObject.error =
6187
- /** @type {WebpackError} */
6188
- (execErr);
6446
+ module: {
6447
+ id,
6448
+ exports: {},
6449
+ loaded: false,
6450
+ error: undefined
6451
+ },
6452
+ require: __webpack_require__
6453
+ };
6454
+ for (const handler of interceptModuleExecution) {
6455
+ handler(execOptions);
6189
6456
  }
6190
- if (!(/** @type {WebpackError} */ (execErr).module)) {
6191
- /** @type {WebpackError} */
6192
- (execErr).module = module;
6457
+ const module = moduleArgument.module;
6458
+ this.buildTimeExecutedModules.add(module);
6459
+ const moduleObject = execOptions.module;
6460
+ moduleArgument.moduleObject = moduleObject;
6461
+ try {
6462
+ if (id) moduleCache[id] = moduleObject;
6463
+
6464
+ tryRunOrWebpackError(
6465
+ () =>
6466
+ this.hooks.executeModule.call(
6467
+ moduleArgument,
6468
+ context
6469
+ ),
6470
+ "Compilation.hooks.executeModule"
6471
+ );
6472
+ moduleObject.loaded = true;
6473
+ return moduleObject.exports;
6474
+ } catch (execErr) {
6475
+ if (strictModuleExceptionHandling) {
6476
+ if (id) delete moduleCache[id];
6477
+ } else if (strictModuleErrorHandling) {
6478
+ moduleObject.error =
6479
+ /** @type {WebpackError} */
6480
+ (execErr);
6481
+ }
6482
+ if (
6483
+ !(/** @type {WebpackError} */ (execErr).module)
6484
+ ) {
6485
+ /** @type {WebpackError} */
6486
+ (execErr).module = module;
6487
+ }
6488
+ throw execErr;
6193
6489
  }
6194
- throw execErr;
6490
+ };
6491
+
6492
+ for (const runtimeModule of chunkGraph.getChunkRuntimeModulesInOrder(
6493
+ chunk
6494
+ )) {
6495
+ __webpack_require_module__(
6496
+ /** @type {ExecuteModuleArgument} */
6497
+ (moduleArgumentsMap.get(runtimeModule))
6498
+ );
6195
6499
  }
6196
- };
6197
6500
 
6198
- for (const runtimeModule of chunkGraph.getChunkRuntimeModulesInOrder(
6199
- chunk
6200
- )) {
6201
- __webpack_require_module__(
6202
- /** @type {ExecuteModuleArgument} */
6203
- (moduleArgumentsMap.get(runtimeModule))
6501
+ exports = __webpack_require__(module.identifier());
6502
+ } catch (execErr) {
6503
+ const { message, stack, module } =
6504
+ /** @type {WebpackError} */
6505
+ (execErr);
6506
+ const err = new WebpackError(
6507
+ `Execution of module code from module graph (${
6508
+ /** @type {Module} */
6509
+ (module).readableIdentifier(this.requestShortener)
6510
+ }) failed: ${message}`,
6511
+ { cause: execErr }
6204
6512
  );
6513
+ err.stack = stack;
6514
+ err.module = module;
6515
+ return callback(err);
6205
6516
  }
6206
6517
 
6207
- exports = __webpack_require__(module.identifier());
6208
- } catch (execErr) {
6209
- const { message, stack, module } =
6210
- /** @type {WebpackError} */
6211
- (execErr);
6212
- const err = new WebpackError(
6213
- `Execution of module code from module graph (${
6214
- /** @type {Module} */
6215
- (module).readableIdentifier(this.requestShortener)
6216
- }) failed: ${message}`,
6217
- { cause: execErr }
6218
- );
6219
- err.stack = stack;
6220
- err.module = module;
6221
- return callback(err);
6518
+ callback(null, {
6519
+ exports,
6520
+ assets,
6521
+ cacheable,
6522
+ notCacheableReasons,
6523
+ fileDependencies,
6524
+ contextDependencies,
6525
+ missingDependencies,
6526
+ buildDependencies
6527
+ });
6222
6528
  }
6223
-
6224
- callback(null, {
6225
- exports,
6226
- assets,
6227
- cacheable,
6228
- notCacheableReasons,
6229
- fileDependencies,
6230
- contextDependencies,
6231
- missingDependencies,
6232
- buildDependencies
6233
- });
6234
- }
6235
- );
6236
- }
6237
- );
6529
+ );
6530
+ }
6531
+ );
6532
+ });
6238
6533
  }
6239
6534
  );
6240
6535
  }