@depup/webpack 5.109.2-depup.0 → 5.110.3-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 (647) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +46 -35
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +107 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +91 -26
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +111 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +40 -49
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +152 -103
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +12 -6
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5334 -0
  160. package/lib/css/syntax.js +9647 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +170 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +49 -31
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +73 -49
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +50 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  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/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. 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
  /**
@@ -1110,6 +1150,27 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1110
1150
  /** @type {SyncWaterfallHook<[RenderManifestEntry[], RenderManifestOptions]>} */
1111
1151
  renderManifest: new SyncWaterfallHook(["result", "options"]),
1112
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
+
1113
1174
  /** @type {SyncHook<[Hash]>} */
1114
1175
  fullHash: new SyncHook(["hash"]),
1115
1176
  /** @type {SyncHook<[Chunk, Hash, ChunkHashContext]>} */
@@ -1240,6 +1301,27 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1240
1301
  );
1241
1302
  /** @type {CodeGenerationResults | undefined} */
1242
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;
1243
1325
 
1244
1326
  /** @type {AsyncQueue<Module, Module, Module>} */
1245
1327
  this.processDependenciesQueue = new AsyncQueue({
@@ -1332,6 +1414,10 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1332
1414
  this.errors = [];
1333
1415
  /** @type {Error[]} */
1334
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 = [];
1335
1421
  /** @type {Compilation[]} */
1336
1422
  this.children = [];
1337
1423
  /** @type {Map<string, LogEntry[]>} */
@@ -1396,6 +1482,8 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1396
1482
  this._assetsCache = this.getCache("Compilation/assets");
1397
1483
  /** @type {CacheFacade} */
1398
1484
  this._codeGenerationCache = this.getCache("Compilation/codeGeneration");
1485
+ /** @type {PendingRuntimeModule[] | undefined} */
1486
+ this._pendingRuntimeModules = undefined;
1399
1487
 
1400
1488
  const unsafeCache = options.module.unsafeCache;
1401
1489
  /** @type {boolean} */
@@ -1638,7 +1726,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1638
1726
  }
1639
1727
 
1640
1728
  this._modulesCache.get(identifier, null, (err, cacheModule) => {
1641
- if (err) return callback(new ModuleRestoreError(module, err));
1729
+ if (err) return callback(new (getModuleRestoreError())(module, err));
1642
1730
 
1643
1731
  if (currentProfile !== undefined) {
1644
1732
  currentProfile.markRestoringEnd();
@@ -1754,7 +1842,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
1754
1842
  module,
1755
1843
  /** @type {WebpackError} */ (err)
1756
1844
  );
1757
- return callback(new ModuleStoreError(module, err));
1845
+ return callback(new (getModuleStoreError())(module, err));
1758
1846
  }
1759
1847
  this.hooks.succeedModule.call(module);
1760
1848
  return callback();
@@ -2258,7 +2346,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2258
2346
  }
2259
2347
  }
2260
2348
  if (err) {
2261
- const notFoundError = new ModuleNotFoundError(
2349
+ const notFoundError = new (getModuleNotFoundError())(
2262
2350
  originModule,
2263
2351
  err,
2264
2352
  /** @type {DependencyLocation} */
@@ -2517,7 +2605,7 @@ BREAKING CHANGE: Asset processing hooks in Compilation has been merged into a si
2517
2605
  if (blockReasons !== undefined) {
2518
2606
  for (const m of blockReasons) {
2519
2607
  if (m === module) {
2520
- return callback(new BuildCycleError(module));
2608
+ return callback(new (getBuildCycleError())(module));
2521
2609
  }
2522
2610
  set.add(m);
2523
2611
  }
@@ -3788,100 +3876,105 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3788
3876
  this.logger.time("runtime requirements");
3789
3877
  this.hooks.beforeRuntimeRequirements.call();
3790
3878
  this.processRuntimeRequirements();
3791
- this.hooks.afterRuntimeRequirements.call();
3792
- this.logger.timeEnd("runtime requirements");
3793
-
3794
- this.logger.time("hashing");
3795
- this.hooks.beforeHash.call();
3796
- const codeGenerationJobs = this.createHash();
3797
- this.hooks.afterHash.call();
3798
- this.logger.timeEnd("hashing");
3799
-
3800
- this._runCodeGenerationJobs(codeGenerationJobs, (err) => {
3879
+ this._attachPendingRuntimeModules((err) => {
3801
3880
  if (err) {
3802
3881
  return finalCallback(err);
3803
3882
  }
3883
+ this.hooks.afterRuntimeRequirements.call();
3884
+ this.logger.timeEnd("runtime requirements");
3804
3885
 
3805
- if (shouldRecord) {
3806
- this.logger.time("record hash");
3807
- this.hooks.recordHash.call(
3808
- /** @type {Records} */
3809
- (this.records)
3810
- );
3811
- this.logger.timeEnd("record hash");
3812
- }
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");
3813
3891
 
3814
- this.logger.time("module assets");
3815
- this.clearAssets();
3892
+ this._runCodeGenerationJobs(codeGenerationJobs, (err) => {
3893
+ if (err) {
3894
+ return finalCallback(err);
3895
+ }
3816
3896
 
3817
- this.hooks.beforeModuleAssets.call();
3818
- this.createModuleAssets();
3819
- 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
+ }
3820
3905
 
3821
- const cont = () => {
3822
- this.logger.time("process assets");
3823
- this.hooks.processAssets.callAsync(this.assets, (err) => {
3824
- if (err) {
3825
- return finalCallback(
3826
- makeWebpackError(err, "Compilation.hooks.processAssets")
3827
- );
3828
- }
3829
- this.hooks.afterProcessAssets.call(this.assets);
3830
- this.logger.timeEnd("process assets");
3831
- this.assets =
3832
- /** @type {CompilationAssets} */
3833
- (
3834
- this._backCompat
3835
- ? soonFrozenObjectDeprecation(
3836
- this.assets,
3837
- "Compilation.assets",
3838
- "DEP_WEBPACK_COMPILATION_ASSETS",
3839
- `BREAKING CHANGE: No more changes should happen to Compilation.assets after sealing the Compilation.
3840
- Do changes to assets earlier, e. g. in Compilation.hooks.processAssets.
3841
- Make sure to select an appropriate stage from Compilation.PROCESS_ASSETS_STAGE_*.`
3842
- )
3843
- : Object.freeze(this.assets)
3844
- );
3906
+ this.logger.time("module assets");
3907
+ this.clearAssets();
3845
3908
 
3846
- this.summarizeDependencies();
3847
- if (shouldRecord) {
3848
- this.hooks.record.call(
3849
- this,
3850
- /** @type {Records} */
3851
- (this.records)
3852
- );
3853
- }
3909
+ this.hooks.beforeModuleAssets.call();
3910
+ this.createModuleAssets();
3911
+ this.logger.timeEnd("module assets");
3854
3912
 
3855
- if (this.hooks.needAdditionalSeal.call()) {
3856
- this.unseal();
3857
- return this.seal(callback);
3858
- }
3859
- return this.hooks.afterSeal.callAsync((err) => {
3913
+ const cont = () => {
3914
+ this.logger.time("process assets");
3915
+ this.hooks.processAssets.callAsync(this.assets, (err) => {
3860
3916
  if (err) {
3861
3917
  return finalCallback(
3862
- 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)
3863
3944
  );
3864
3945
  }
3865
- this.fileSystemInfo.logStatistics();
3866
- 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
+ });
3867
3960
  });
3868
- });
3869
- };
3961
+ };
3870
3962
 
3871
- this.logger.time("create chunk assets");
3872
- if (this.hooks.shouldGenerateChunkAssets.call() !== false) {
3873
- this.hooks.beforeChunkAssets.call();
3874
- 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 {
3875
3974
  this.logger.timeEnd("create chunk assets");
3876
- if (err) {
3877
- return finalCallback(err);
3878
- }
3879
3975
  cont();
3880
- });
3881
- } else {
3882
- this.logger.timeEnd("create chunk assets");
3883
- cont();
3884
- }
3976
+ }
3977
+ });
3885
3978
  });
3886
3979
  });
3887
3980
  }
@@ -3907,7 +4000,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3907
4000
  // A consolidated dependency (e.g. CssIcssExportDependency) carries
3908
4001
  // per-item locations on the error itself; fall back to the
3909
4002
  // dependency loc for the usual one-loc-per-dependency case.
3910
- const warning = new ModuleDependencyWarning(
4003
+ const warning = new (getModuleDependencyWarning())(
3911
4004
  module,
3912
4005
  w,
3913
4006
  /** @type {EXPECTED_ANY} */ (w).loc || d.loc
@@ -3919,7 +4012,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3919
4012
  const errors = d.getErrors(this.moduleGraph);
3920
4013
  if (errors) {
3921
4014
  for (const e of errors) {
3922
- const error = new ModuleDependencyError(
4015
+ const error = new (getModuleDependencyError())(
3923
4016
  module,
3924
4017
  e,
3925
4018
  /** @type {EXPECTED_ANY} */ (e).loc || d.loc
@@ -3975,6 +4068,120 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3975
4068
  this._runCodeGenerationJobs(jobs, callback);
3976
4069
  }
3977
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}\0${info.hostType}\0${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
+
3978
4185
  /**
3979
4186
  * Run code generation jobs.
3980
4187
  * @private
@@ -3986,6 +4193,10 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
3986
4193
  if (jobs.length === 0) {
3987
4194
  return callback();
3988
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;
3989
4200
  let statModulesFromCache = 0;
3990
4201
  let statModulesGenerated = 0;
3991
4202
  const { chunkGraph, moduleGraph, dependencyTemplates, runtimeTemplate } =
@@ -4078,7 +4289,11 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4078
4289
  (statModulesGenerated + statModulesFromCache)
4079
4290
  )}% code generated (${statModulesGenerated} generated, ${statModulesFromCache} from cache)`
4080
4291
  );
4081
- callback();
4292
+ this._resolveEmbeddedSources(allJobs || jobs, (err) => {
4293
+ this._embeddedSources.clear();
4294
+ this._pendingEmbeddedSources.clear();
4295
+ callback(err);
4296
+ });
4082
4297
  }
4083
4298
  );
4084
4299
  };
@@ -4122,6 +4337,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4122
4337
  try {
4123
4338
  codeGenerated = true;
4124
4339
  this.codeGeneratedModules.add(module);
4340
+ this._generatingModule = module;
4125
4341
  result = module.codeGeneration({
4126
4342
  chunkGraph,
4127
4343
  moduleGraph,
@@ -4134,13 +4350,15 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4134
4350
  });
4135
4351
  } catch (err) {
4136
4352
  errors.push(
4137
- new CodeGenerationError(module, /** @type {Error} */ (err))
4353
+ new (getCodeGenerationError())(module, /** @type {Error} */ (err))
4138
4354
  );
4139
4355
  result = {
4140
4356
  sources: new Map(),
4141
4357
  runtimeRequirements: null,
4142
4358
  data: undefined
4143
4359
  };
4360
+ } finally {
4361
+ this._generatingModule = undefined;
4144
4362
  }
4145
4363
  for (const runtime of runtimes) {
4146
4364
  results.add(module, runtime, result);
@@ -4163,6 +4381,7 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4163
4381
  try {
4164
4382
  codeGenerated = true;
4165
4383
  this.codeGeneratedModules.add(module);
4384
+ this._generatingModule = module;
4166
4385
  result = module.codeGeneration({
4167
4386
  chunkGraph,
4168
4387
  moduleGraph,
@@ -4175,13 +4394,15 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4175
4394
  });
4176
4395
  } catch (err) {
4177
4396
  errors.push(
4178
- new CodeGenerationError(module, /** @type {Error} */ (err))
4397
+ new (getCodeGenerationError())(module, /** @type {Error} */ (err))
4179
4398
  );
4180
4399
  result = cachedResult = {
4181
4400
  sources: new Map(),
4182
4401
  runtimeRequirements: null,
4183
4402
  data: undefined
4184
4403
  };
4404
+ } finally {
4405
+ this._generatingModule = undefined;
4185
4406
  }
4186
4407
  } else {
4187
4408
  result = cachedResult;
@@ -4356,6 +4577,46 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4356
4577
  this.logger.timeEnd("runtime requirements.entries");
4357
4578
  }
4358
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
+
4359
4620
  // TODO webpack 6 make chunkGraph argument non-optional
4360
4621
  /**
4361
4622
  * Adds runtime module.
@@ -4736,6 +4997,8 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4736
4997
 
4737
4998
  this.errors.sort(compareErrors);
4738
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.
4739
5002
  this.children.sort(byNameOrHash);
4740
5003
  }
4741
5004
 
@@ -4852,7 +5115,9 @@ Or do you want to use the entrypoints '${name}' and '${runtime}' independently o
4852
5115
  });
4853
5116
  moduleHashDigest = moduleHash.digest(hashDigest);
4854
5117
  } catch (err) {
4855
- errors.push(new ModuleHashingError(module, /** @type {Error} */ (err)));
5118
+ errors.push(
5119
+ new (getModuleHashingError())(module, /** @type {Error} */ (err))
5120
+ );
4856
5121
  moduleHashDigest = "XXXXXX";
4857
5122
  }
4858
5123
  chunkGraph.setModuleHashes(
@@ -5103,7 +5368,7 @@ This prevents using hashes of each other and should be avoided.`);
5103
5368
  }
5104
5369
  } catch (err) {
5105
5370
  this.errors.push(
5106
- new ChunkRenderError(chunk, "", /** @type {Error} */ (err))
5371
+ new (getChunkRenderError())(chunk, "", /** @type {Error} */ (err))
5107
5372
  );
5108
5373
  }
5109
5374
  this.logger.timeAggregate("hashing: hash chunks");
@@ -5619,7 +5884,7 @@ This prevents using hashes of each other and should be avoided.`);
5619
5884
  });
5620
5885
  } catch (err) {
5621
5886
  this.errors.push(
5622
- new ChunkRenderError(chunk, "", /** @type {Error} */ (err))
5887
+ new (getChunkRenderError())(chunk, "", /** @type {Error} */ (err))
5623
5888
  );
5624
5889
  return callback();
5625
5890
  }
@@ -5657,7 +5922,9 @@ This prevents using hashes of each other and should be avoided.`);
5657
5922
  ? filenameTemplate
5658
5923
  : "");
5659
5924
 
5660
- this.errors.push(new ChunkRenderError(chunk, filename, err));
5925
+ this.errors.push(
5926
+ new (getChunkRenderError())(chunk, filename, err)
5927
+ );
5661
5928
  inTry = false;
5662
5929
  return callback();
5663
5930
  };
@@ -5883,6 +6150,7 @@ This prevents using hashes of each other and should be avoided.`);
5883
6150
  this.moduleGraph,
5884
6151
  this.outputOptions.hashFunction
5885
6152
  );
6153
+ chunkGraph.buildTimeExecution = true;
5886
6154
  const runtime = "build time";
5887
6155
  const { hashFunction, hashDigest, hashDigestLength } =
5888
6156
  this.outputOptions;
@@ -5992,265 +6260,276 @@ This prevents using hashes of each other and should be avoided.`);
5992
6260
  codeGenerationResults,
5993
6261
  chunkGraphEntries: chunks
5994
6262
  });
6263
+ // restored before the deferred attach so no concurrent `make`
6264
+ // task observes the build-time graph
5995
6265
  this.chunkGraph = old;
6266
+ this._attachPendingRuntimeModules((err) => {
6267
+ if (err) return callback(err);
5996
6268
 
5997
- const runtimeModules =
5998
- chunkGraph.getChunkRuntimeModulesIterable(chunk);
6269
+ const runtimeModules =
6270
+ chunkGraph.getChunkRuntimeModulesIterable(chunk);
5999
6271
 
6000
- // Hash runtime modules
6001
- for (const module of runtimeModules) {
6002
- modules.add(module);
6003
- this._createModuleHash(
6004
- module,
6005
- chunkGraph,
6006
- runtime,
6007
- hashFunction,
6008
- runtimeTemplate,
6009
- hashDigest,
6010
- hashDigestLength,
6011
- errors
6012
- );
6013
- }
6014
-
6015
- // Generate code for all runtime modules
6016
- asyncLib.eachLimit(
6017
- /** @type {import("neo-async").IterableCollection<RuntimeModule>} */ (
6018
- runtimeModules
6019
- ),
6020
- 10,
6021
- codeGen,
6022
- (err) => {
6023
- if (err) return callback(err);
6024
- reportErrors();
6025
-
6026
- /** @type {Map<Module, ExecuteModuleArgument>} */
6027
- const moduleArgumentsMap = new Map();
6028
- /** @type {Map<string, ExecuteModuleArgument>} */
6029
- const moduleArgumentsById = new Map();
6030
-
6031
- /** @type {ExecuteModuleResult["fileDependencies"]} */
6032
- const fileDependencies = new LazySet();
6033
- /** @type {ExecuteModuleResult["contextDependencies"]} */
6034
- const contextDependencies = new LazySet();
6035
- /** @type {ExecuteModuleResult["missingDependencies"]} */
6036
- const missingDependencies = new LazySet();
6037
- /** @type {ExecuteModuleResult["buildDependencies"]} */
6038
- const buildDependencies = new LazySet();
6039
-
6040
- /** @type {ExecuteModuleResult["assets"]} */
6041
- const assets = new Map();
6042
-
6043
- let cacheable = true;
6044
- /** @type {ExecuteModuleResult["notCacheableReasons"]} */
6045
- const notCacheableReasons = [];
6046
-
6047
- /** @type {ExecuteModuleContext} */
6048
- const context = {
6049
- assets,
6050
- __webpack_require__: undefined,
6051
- chunk,
6052
- chunkGraph
6053
- };
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
+ }
6054
6286
 
6055
- // Prepare execution
6056
- asyncLib.eachLimit(
6057
- modules,
6058
- 10,
6059
- (module, callback) => {
6060
- const codeGenerationResult = codeGenerationResults.get(
6061
- module,
6062
- runtime
6063
- );
6064
- /** @type {ExecuteModuleArgument} */
6065
- const moduleArgument = {
6066
- module,
6067
- codeGenerationResult,
6068
- moduleObject: undefined
6069
- };
6070
- moduleArgumentsMap.set(module, moduleArgument);
6071
- moduleArgumentsById.set(
6072
- module.identifier(),
6073
- moduleArgument
6074
- );
6075
- module.addCacheDependencies(
6076
- fileDependencies,
6077
- contextDependencies,
6078
- missingDependencies,
6079
- buildDependencies
6080
- );
6081
- const buildInfo = /** @type {BuildInfo} */ (
6082
- module.buildInfo
6083
- );
6084
- if (buildInfo.cacheable === false) {
6085
- cacheable = false;
6086
- if (buildInfo.notCacheableReasons) {
6087
- for (const reason of buildInfo.notCacheableReasons) {
6088
- if (!notCacheableReasons.includes(reason)) {
6089
- 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
+ }
6090
6363
  }
6091
6364
  }
6092
6365
  }
6093
- }
6094
- if (module.buildInfo && module.buildInfo.assets) {
6095
- const { assets: moduleAssets, assetsInfo } =
6096
- module.buildInfo;
6097
- for (const assetName of Object.keys(moduleAssets)) {
6098
- assets.set(assetName, {
6099
- source: moduleAssets[assetName],
6100
- info: assetsInfo
6101
- ? assetsInfo.get(assetName)
6102
- : undefined
6103
- });
6104
- }
6105
- }
6106
- this.hooks.prepareModuleExecution.callAsync(
6107
- moduleArgument,
6108
- context,
6109
- callback
6110
- );
6111
- },
6112
- (err) => {
6113
- if (err) return callback(/** @type {WebpackError} */ (err));
6114
-
6115
- /** @type {ExecuteModuleExports | undefined} */
6116
- let exports;
6117
- try {
6118
- const {
6119
- strictModuleErrorHandling,
6120
- strictModuleExceptionHandling
6121
- } = this.outputOptions;
6122
-
6123
- /** @type {WebpackRequire} */
6124
- const __webpack_require__ = (id) => {
6125
- const cached = moduleCache[id];
6126
- if (cached !== undefined) {
6127
- if (cached.error) throw cached.error;
6128
- 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
+ });
6129
6376
  }
6130
- const moduleArgument = moduleArgumentsById.get(id);
6131
- return __webpack_require_module__(
6132
- /** @type {ExecuteModuleArgument} */
6133
- (moduleArgument),
6134
- id
6135
- );
6136
- };
6137
- const interceptModuleExecution = (__webpack_require__[
6138
- /** @type {"i"} */
6139
- (
6140
- RuntimeGlobals.interceptModuleExecution.replace(
6141
- `${RuntimeGlobals.require}.`,
6142
- ""
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
+ )
6143
6418
  )
6144
- )
6145
- ] = /** @type {NonNullable<WebpackRequire["i"]>} */ ([]));
6146
- const moduleCache = (__webpack_require__[
6147
- /** @type {"c"} */ (
6148
- RuntimeGlobals.moduleCache.replace(
6149
- `${RuntimeGlobals.require}.`,
6150
- ""
6419
+ ] =
6420
+ /** @type {NonNullable<WebpackRequire["i"]>} */ ([]));
6421
+ const moduleCache = (__webpack_require__[
6422
+ /** @type {"c"} */ (
6423
+ RuntimeGlobals.moduleCache.replace(
6424
+ `${RuntimeGlobals.require}.`,
6425
+ ""
6426
+ )
6151
6427
  )
6152
- )
6153
- ] = /** @type {NonNullable<WebpackRequire["c"]>} */ ({}));
6154
-
6155
- context.__webpack_require__ = __webpack_require__;
6156
-
6157
- /**
6158
- * Webpack require module.
6159
- * @param {ExecuteModuleArgument} moduleArgument the module argument
6160
- * @param {string=} id id
6161
- * @returns {ExecuteModuleExports} exports
6162
- */
6163
- const __webpack_require_module__ = (
6164
- moduleArgument,
6165
- id
6166
- ) => {
6167
- /** @type {ExecuteOptions} */
6168
- const execOptions = {
6169
- id,
6170
- 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 = {
6171
6445
  id,
6172
- exports: {},
6173
- loaded: false,
6174
- error: undefined
6175
- },
6176
- require: __webpack_require__
6177
- };
6178
- for (const handler of interceptModuleExecution) {
6179
- handler(execOptions);
6180
- }
6181
- const module = moduleArgument.module;
6182
- this.buildTimeExecutedModules.add(module);
6183
- const moduleObject = execOptions.module;
6184
- moduleArgument.moduleObject = moduleObject;
6185
- try {
6186
- if (id) moduleCache[id] = moduleObject;
6187
-
6188
- tryRunOrWebpackError(
6189
- () =>
6190
- this.hooks.executeModule.call(
6191
- moduleArgument,
6192
- context
6193
- ),
6194
- "Compilation.hooks.executeModule"
6195
- );
6196
- moduleObject.loaded = true;
6197
- return moduleObject.exports;
6198
- } catch (execErr) {
6199
- if (strictModuleExceptionHandling) {
6200
- if (id) delete moduleCache[id];
6201
- } else if (strictModuleErrorHandling) {
6202
- moduleObject.error =
6203
- /** @type {WebpackError} */
6204
- (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);
6205
6456
  }
6206
- if (!(/** @type {WebpackError} */ (execErr).module)) {
6207
- /** @type {WebpackError} */
6208
- (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;
6209
6489
  }
6210
- 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
+ );
6211
6499
  }
6212
- };
6213
6500
 
6214
- for (const runtimeModule of chunkGraph.getChunkRuntimeModulesInOrder(
6215
- chunk
6216
- )) {
6217
- __webpack_require_module__(
6218
- /** @type {ExecuteModuleArgument} */
6219
- (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 }
6220
6512
  );
6513
+ err.stack = stack;
6514
+ err.module = module;
6515
+ return callback(err);
6221
6516
  }
6222
6517
 
6223
- exports = __webpack_require__(module.identifier());
6224
- } catch (execErr) {
6225
- const { message, stack, module } =
6226
- /** @type {WebpackError} */
6227
- (execErr);
6228
- const err = new WebpackError(
6229
- `Execution of module code from module graph (${
6230
- /** @type {Module} */
6231
- (module).readableIdentifier(this.requestShortener)
6232
- }) failed: ${message}`,
6233
- { cause: execErr }
6234
- );
6235
- err.stack = stack;
6236
- err.module = module;
6237
- return callback(err);
6518
+ callback(null, {
6519
+ exports,
6520
+ assets,
6521
+ cacheable,
6522
+ notCacheableReasons,
6523
+ fileDependencies,
6524
+ contextDependencies,
6525
+ missingDependencies,
6526
+ buildDependencies
6527
+ });
6238
6528
  }
6239
-
6240
- callback(null, {
6241
- exports,
6242
- assets,
6243
- cacheable,
6244
- notCacheableReasons,
6245
- fileDependencies,
6246
- contextDependencies,
6247
- missingDependencies,
6248
- buildDependencies
6249
- });
6250
- }
6251
- );
6252
- }
6253
- );
6529
+ );
6530
+ }
6531
+ );
6532
+ });
6254
6533
  }
6255
6534
  );
6256
6535
  }