@depup/webpack 5.106.1-depup.0 → 5.109.2-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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -18,18 +18,20 @@ const {
18
18
  } = require("./ModuleTypeConstants");
19
19
  const NormalModule = require("./NormalModule");
20
20
  const RuntimeGlobals = require("./RuntimeGlobals");
21
- const WebpackError = require("./WebpackError");
22
21
  const { chunkHasCss } = require("./css/CssModulesPlugin");
23
22
  const ConstDependency = require("./dependencies/ConstDependency");
24
23
  const ImportMetaHotAcceptDependency = require("./dependencies/ImportMetaHotAcceptDependency");
25
24
  const ImportMetaHotDeclineDependency = require("./dependencies/ImportMetaHotDeclineDependency");
25
+ const { isImportMetaFieldEnabled } = require("./dependencies/ImportMetaPlugin");
26
26
  const ModuleHotAcceptDependency = require("./dependencies/ModuleHotAcceptDependency");
27
27
  const ModuleHotDeclineDependency = require("./dependencies/ModuleHotDeclineDependency");
28
+ const WebpackError = require("./errors/WebpackError");
28
29
  const HotModuleReplacementRuntimeModule = require("./hmr/HotModuleReplacementRuntimeModule");
29
30
  const JavascriptParser = require("./javascript/JavascriptParser");
30
31
  const {
31
32
  evaluateToIdentifier
32
33
  } = require("./javascript/JavascriptParserHelpers");
34
+ const ConcatenatedModule = require("./optimize/ConcatenatedModule");
33
35
  const { find, isSubset } = require("./util/SetHelpers");
34
36
  const TupleSet = require("./util/TupleSet");
35
37
  const { compareModulesById } = require("./util/comparators");
@@ -55,6 +57,7 @@ const {
55
57
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
56
58
  /** @typedef {import("./Module")} Module */
57
59
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
60
+ /** @typedef {import("./css/CssModule").CssModuleBuildMeta} CssModuleBuildMeta */
58
61
  /** @typedef {import("./RuntimeModule")} RuntimeModule */
59
62
  /** @typedef {import("./javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
60
63
  /** @typedef {import("./javascript/JavascriptParserHelpers").Range} Range */
@@ -63,6 +66,7 @@ const {
63
66
  /** @typedef {string[]} Requests */
64
67
 
65
68
  /**
69
+ * Defines the hmr javascript parser hooks type used by this module.
66
70
  * @typedef {object} HMRJavascriptParserHooks
67
71
  * @property {SyncBailHook<[Expression | SpreadElement, Requests], void>} hotAcceptCallback
68
72
  * @property {SyncBailHook<[CallExpression, Requests], void>} hotAcceptWithoutCallback
@@ -78,7 +82,7 @@ const {
78
82
  /** @typedef {Set<ChunkId>} ChunkIds */
79
83
  /** @typedef {Set<Module>} ModuleSet */
80
84
 
81
- /** @typedef {{ updatedChunkIds: ChunkIds, removedChunkIds: ChunkIds, removedModules: ModuleSet, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
85
+ /** @typedef {{ updatedChunkIds: ChunkIds, removedChunkIds: ChunkIds, removedModules: ModuleSet, forceLoadChunkIds: ChunkIds, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
82
86
  /** @typedef {Map<string, HotUpdateMainContentByRuntimeItem>} HotUpdateMainContentByRuntime */
83
87
 
84
88
  /** @type {WeakMap<JavascriptParser, HMRJavascriptParserHooks>} */
@@ -88,6 +92,7 @@ const PLUGIN_NAME = "HotModuleReplacementPlugin";
88
92
 
89
93
  class HotModuleReplacementPlugin {
90
94
  /**
95
+ * Returns the attached hooks.
91
96
  * @param {JavascriptParser} parser the parser
92
97
  * @returns {HMRJavascriptParserHooks} the attached hooks
93
98
  */
@@ -109,7 +114,7 @@ class HotModuleReplacementPlugin {
109
114
  }
110
115
 
111
116
  /**
112
- * Apply the plugin
117
+ * Applies the plugin by registering its hooks on the compiler.
113
118
  * @param {Compiler} compiler the compiler instance
114
119
  * @returns {void}
115
120
  */
@@ -121,6 +126,7 @@ class HotModuleReplacementPlugin {
121
126
  const runtimeRequirements = [RuntimeGlobals.module];
122
127
 
123
128
  /**
129
+ * Creates an accept handler.
124
130
  * @param {JavascriptParser} parser the parser
125
131
  * @param {typeof ModuleHotAcceptDependency} ParamDependency dependency
126
132
  * @returns {(expr: CallExpression) => boolean | undefined} callback
@@ -136,7 +142,7 @@ class HotModuleReplacementPlugin {
136
142
  /** @type {Range} */ (expr.callee.range),
137
143
  runtimeRequirements
138
144
  );
139
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
145
+ dep.loc = parser.getLocation(expr);
140
146
  module.addPresentationalDependency(dep);
141
147
  /** @type {BuildInfo} */
142
148
  (module.buildInfo).moduleConcatenationBailout =
@@ -163,10 +169,7 @@ class HotModuleReplacementPlugin {
163
169
  /** @type {Range} */ (param.range)
164
170
  );
165
171
  dep.optional = true;
166
- dep.loc = Object.create(
167
- /** @type {DependencyLocation} */ (expr.loc)
168
- );
169
- dep.loc.index = idx;
172
+ dep.setLocWithIndex(parser.getLocation(expr), idx);
170
173
  module.addDependency(dep);
171
174
  requests.push(request);
172
175
  }
@@ -187,6 +190,7 @@ class HotModuleReplacementPlugin {
187
190
  };
188
191
 
189
192
  /**
193
+ * Creates a decline handler.
190
194
  * @param {JavascriptParser} parser the parser
191
195
  * @param {typeof ModuleHotDeclineDependency} ParamDependency dependency
192
196
  * @returns {(expr: CallExpression) => boolean | undefined} callback
@@ -198,7 +202,7 @@ class HotModuleReplacementPlugin {
198
202
  /** @type {Range} */ (expr.callee.range),
199
203
  runtimeRequirements
200
204
  );
201
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
205
+ dep.loc = parser.getLocation(expr);
202
206
  module.addPresentationalDependency(dep);
203
207
  /** @type {BuildInfo} */
204
208
  (module.buildInfo).moduleConcatenationBailout = "Hot Module Replacement";
@@ -219,8 +223,7 @@ class HotModuleReplacementPlugin {
219
223
  /** @type {Range} */ (param.range)
220
224
  );
221
225
  dep.optional = true;
222
- dep.loc = Object.create(/** @type {DependencyLocation} */ (expr.loc));
223
- dep.loc.index = idx;
226
+ dep.setLocWithIndex(parser.getLocation(expr), idx);
224
227
  module.addDependency(dep);
225
228
  }
226
229
  }
@@ -228,6 +231,7 @@ class HotModuleReplacementPlugin {
228
231
  };
229
232
 
230
233
  /**
234
+ * Creates a hmr expression handler.
231
235
  * @param {JavascriptParser} parser the parser
232
236
  * @returns {(expr: Expression) => boolean | undefined} callback
233
237
  */
@@ -238,7 +242,7 @@ class HotModuleReplacementPlugin {
238
242
  /** @type {Range} */ (expr.range),
239
243
  runtimeRequirements
240
244
  );
241
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
245
+ dep.loc = parser.getLocation(expr);
242
246
  module.addPresentationalDependency(dep);
243
247
  /** @type {BuildInfo} */
244
248
  (module.buildInfo).moduleConcatenationBailout = "Hot Module Replacement";
@@ -246,6 +250,7 @@ class HotModuleReplacementPlugin {
246
250
  };
247
251
 
248
252
  /**
253
+ * Processes the provided parser.
249
254
  * @param {JavascriptParser} parser the parser
250
255
  * @returns {void}
251
256
  */
@@ -281,6 +286,7 @@ class HotModuleReplacementPlugin {
281
286
  };
282
287
 
283
288
  /**
289
+ * Apply import meta hot.
284
290
  * @param {JavascriptParser} parser the parser
285
291
  * @returns {void}
286
292
  */
@@ -382,13 +388,31 @@ class HotModuleReplacementPlugin {
382
388
  for (const chunk of compilation.chunks) {
383
389
  const chunkId = /** @type {ChunkId} */ (chunk.id);
384
390
 
385
- records.chunkModuleIds[chunkId] = Array.from(
386
- chunkGraph.getOrderedChunkModulesIterable(
387
- chunk,
388
- compareModulesById(chunkGraph)
389
- ),
390
- (m) => /** @type {ModuleId} */ (chunkGraph.getModuleId(m))
391
- );
391
+ /** @type {ModuleId[]} */
392
+ const moduleIds = [];
393
+ for (const m of chunkGraph.getOrderedChunkModulesIterable(
394
+ chunk,
395
+ compareModulesById(chunkGraph)
396
+ )) {
397
+ moduleIds.push(
398
+ /** @type {ModuleId} */ (chunkGraph.getModuleId(m))
399
+ );
400
+ if (m instanceof ConcatenatedModule && m.modules) {
401
+ for (const innerModule of m.modules) {
402
+ if (
403
+ innerModule.buildMeta &&
404
+ /** @type {CssModuleBuildMeta} */ (innerModule.buildMeta)
405
+ .needIdInConcatenation
406
+ ) {
407
+ const innerId = chunkGraph.getModuleId(innerModule);
408
+ if (innerId !== null) {
409
+ moduleIds.push(innerId);
410
+ }
411
+ }
412
+ }
413
+ }
414
+ }
415
+ records.chunkModuleIds[chunkId] = moduleIds;
392
416
  }
393
417
  });
394
418
  /** @type {TupleSet<Module, Chunk>} */
@@ -402,6 +426,7 @@ class HotModuleReplacementPlugin {
402
426
  const records = /** @type {Records} */ (compilation.records);
403
427
  for (const chunk of compilation.chunks) {
404
428
  /**
429
+ * Returns module hash.
405
430
  * @param {Module} module module
406
431
  * @returns {string} module hash
407
432
  */
@@ -547,6 +572,8 @@ class HotModuleReplacementPlugin {
547
572
  removedChunkIds: new Set(),
548
573
  /** @type {ModuleSet} */
549
574
  removedModules: new Set(),
575
+ /** @type {ChunkIds} */
576
+ forceLoadChunkIds: new Set(),
550
577
  filename,
551
578
  assetInfo
552
579
  }
@@ -673,30 +700,43 @@ class HotModuleReplacementPlugin {
673
700
  }
674
701
  } else {
675
702
  // module is no longer in this runtime combination
676
- // We (incorrectly) assume that it's not in an overlapping runtime combination
677
- // and dispose it from the main runtimes the chunk was removed from
678
703
  forEachRuntime(removedFromRuntime, (runtime) => {
679
- // If the module is still used in this runtime, do not dispose it
680
- // This could create a bad runtime state where the module is still loaded,
681
- // but no chunk which contains it. This means we don't receive further HMR updates
682
- // to this module and that's bad.
683
- // TODO force load one of the chunks which contains the module
684
- for (const moduleRuntime of runtimes) {
685
- if (typeof moduleRuntime === "string") {
686
- if (moduleRuntime === runtime) return;
687
- } else if (
688
- moduleRuntime !== undefined &&
689
- moduleRuntime.has(/** @type {string} */ (runtime))
690
- ) {
691
- return;
692
- }
693
- }
694
704
  const item =
695
705
  /** @type {HotUpdateMainContentByRuntimeItem} */ (
696
706
  hotUpdateMainContentByRuntime.get(
697
707
  /** @type {string} */ (runtime)
698
708
  )
699
709
  );
710
+ // Module still in this runtime via another chunk: force-load one so
711
+ // it keeps an installed owner instead of being disposed (lost updates).
712
+ const stillInRuntime = [...runtimes].some(
713
+ (moduleRuntime) =>
714
+ typeof moduleRuntime === "string"
715
+ ? moduleRuntime === runtime
716
+ : moduleRuntime !== undefined &&
717
+ moduleRuntime.has(/** @type {string} */ (runtime))
718
+ );
719
+ if (stillInRuntime) {
720
+ for (const moduleChunk of chunkGraph.getModuleChunksIterable(
721
+ module
722
+ )) {
723
+ const chunkRuntime = moduleChunk.runtime;
724
+ const inRuntime =
725
+ typeof chunkRuntime === "string"
726
+ ? chunkRuntime === runtime
727
+ : chunkRuntime !== undefined &&
728
+ chunkRuntime.has(
729
+ /** @type {string} */ (runtime)
730
+ );
731
+ if (inRuntime) {
732
+ item.forceLoadChunkIds.add(
733
+ /** @type {ChunkId} */ (moduleChunk.id)
734
+ );
735
+ break;
736
+ }
737
+ }
738
+ return;
739
+ }
700
740
  item.removedModules.add(module);
701
741
  });
702
742
  }
@@ -794,6 +834,7 @@ class HotModuleReplacementPlugin {
794
834
  removedChunkIds,
795
835
  removedModules,
796
836
  updatedChunkIds,
837
+ forceLoadChunkIds,
797
838
  filename,
798
839
  assetInfo
799
840
  } of hotUpdateMainContentByRuntime.values()) {
@@ -802,7 +843,8 @@ class HotModuleReplacementPlugin {
802
843
  old &&
803
844
  (!isSubset(old.removedChunkIds, removedChunkIds) ||
804
845
  !isSubset(old.removedModules, removedModules) ||
805
- !isSubset(old.updatedChunkIds, updatedChunkIds))
846
+ !isSubset(old.updatedChunkIds, updatedChunkIds) ||
847
+ !isSubset(old.forceLoadChunkIds, forceLoadChunkIds))
806
848
  ) {
807
849
  compilation.warnings.push(
808
850
  new WebpackError(`HotModuleReplacementPlugin
@@ -819,20 +861,30 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
819
861
  for (const chunkId of updatedChunkIds) {
820
862
  old.updatedChunkIds.add(chunkId);
821
863
  }
864
+ for (const chunkId of forceLoadChunkIds) {
865
+ old.forceLoadChunkIds.add(chunkId);
866
+ }
822
867
  continue;
823
868
  }
824
869
  hotUpdateMainContentByFilename.set(filename, {
825
870
  removedChunkIds,
826
871
  removedModules,
827
872
  updatedChunkIds,
873
+ forceLoadChunkIds,
828
874
  assetInfo
829
875
  });
830
876
  }
831
877
  for (const [
832
878
  filename,
833
- { removedChunkIds, removedModules, updatedChunkIds, assetInfo }
879
+ {
880
+ removedChunkIds,
881
+ removedModules,
882
+ updatedChunkIds,
883
+ forceLoadChunkIds,
884
+ assetInfo
885
+ }
834
886
  ] of hotUpdateMainContentByFilename) {
835
- /** @type {{ c: ChunkId[], r: ChunkId[], m: ModuleId[], css?: { r: ChunkId[] } }} */
887
+ /** @type {{ c: ChunkId[], r: ChunkId[], m: ModuleId[], f?: ChunkId[], css?: { r: ChunkId[] } }} */
836
888
  const hotUpdateMainJson = {
837
889
  c: [...updatedChunkIds],
838
890
  r: [...removedChunkIds],
@@ -849,6 +901,12 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
849
901
  ]
850
902
  };
851
903
 
904
+ // Chunks the client must load so a module whose only loaded chunk
905
+ // left a runtime keeps an installed owner (see force-load branch).
906
+ if (forceLoadChunkIds.size > 0) {
907
+ hotUpdateMainJson.f = [...forceLoadChunkIds];
908
+ }
909
+
852
910
  // Build CSS removed chunks list (chunks in updatedChunkIds that no longer have CSS)
853
911
  /** @type {ChunkId[]} */
854
912
  const cssRemovedChunkIds = [];
@@ -897,9 +955,13 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
897
955
 
898
956
  normalModuleFactory.hooks.parser
899
957
  .for(JAVASCRIPT_MODULE_TYPE_AUTO)
900
- .tap(PLUGIN_NAME, (parser) => {
958
+ .tap(PLUGIN_NAME, (parser, parserOptions) => {
901
959
  applyModuleHot(parser);
902
- applyImportMetaHot(parser);
960
+ if (
961
+ isImportMetaFieldEnabled(parserOptions.importMeta, "webpackHot")
962
+ ) {
963
+ applyImportMetaHot(parser);
964
+ }
903
965
  });
904
966
  normalModuleFactory.hooks.parser
905
967
  .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
@@ -908,11 +970,15 @@ To fix this, make sure to include [runtime] in the output.hotUpdateMainFilename
908
970
  });
909
971
  normalModuleFactory.hooks.parser
910
972
  .for(JAVASCRIPT_MODULE_TYPE_ESM)
911
- .tap(PLUGIN_NAME, (parser) => {
912
- applyImportMetaHot(parser);
973
+ .tap(PLUGIN_NAME, (parser, parserOptions) => {
974
+ if (
975
+ isImportMetaFieldEnabled(parserOptions.importMeta, "webpackHot")
976
+ ) {
977
+ applyImportMetaHot(parser);
978
+ }
913
979
  });
914
980
  normalModuleFactory.hooks.module.tap(PLUGIN_NAME, (module) => {
915
- module.hot = true;
981
+ if (module instanceof NormalModule) module.hot = true;
916
982
  return module;
917
983
  });
918
984
 
@@ -19,9 +19,11 @@ const PLUGIN_NAME = "IgnorePlugin";
19
19
 
20
20
  class IgnorePlugin {
21
21
  /**
22
+ * Creates an instance of IgnorePlugin.
22
23
  * @param {IgnorePluginOptions} options IgnorePlugin options
23
24
  */
24
25
  constructor(options) {
26
+ /** @type {IgnorePluginOptions} */
25
27
  this.options = options;
26
28
  this.checkIgnore = this.checkIgnore.bind(this);
27
29
  }
@@ -58,14 +60,15 @@ class IgnorePlugin {
58
60
  }
59
61
 
60
62
  /**
61
- * Apply the plugin
63
+ * Applies the plugin by registering its hooks on the compiler.
62
64
  * @param {Compiler} compiler the compiler instance
63
65
  * @returns {void}
64
66
  */
65
67
  apply(compiler) {
66
68
  compiler.hooks.validate.tap(PLUGIN_NAME, () => {
67
69
  compiler.validate(
68
- require("../schemas/plugins/IgnorePlugin.json"),
70
+ /** @type {EXPECTED_ANY} */
71
+ (require("../schemas/plugins/IgnorePlugin.json")),
69
72
  this.options,
70
73
  {
71
74
  name: "Ignore Plugin",
@@ -14,6 +14,7 @@ const PLUGIN_NAME = "IgnoreWarningsPlugin";
14
14
 
15
15
  class IgnoreWarningsPlugin {
16
16
  /**
17
+ * Creates an instance of IgnoreWarningsPlugin.
17
18
  * @param {IgnoreFn[]} ignoreWarnings conditions to ignore warnings
18
19
  */
19
20
  constructor(ignoreWarnings) {
@@ -22,7 +23,7 @@ class IgnoreWarningsPlugin {
22
23
  }
23
24
 
24
25
  /**
25
- * Apply the plugin
26
+ * Applies the plugin by registering its hooks on the compiler.
26
27
  * @param {Compiler} compiler the compiler instance
27
28
  * @returns {void}
28
29
  */
@@ -16,6 +16,7 @@ const makeSerializable = require("./util/makeSerializable");
16
16
  /** @typedef {string} InitFragmentKey */
17
17
 
18
18
  /**
19
+ * Defines the maybe mergeable init fragment type used by this module.
19
20
  * @template GenerateContext
20
21
  * @typedef {object} MaybeMergeableInitFragment
21
22
  * @property {InitFragmentKey=} key
@@ -28,33 +29,13 @@ const makeSerializable = require("./util/makeSerializable");
28
29
  */
29
30
 
30
31
  /**
31
- * @template T
32
- * @param {T} fragment the init fragment
33
- * @param {number} index index
34
- * @returns {[T, number]} tuple with both
35
- */
36
- const extractFragmentIndex = (fragment, index) => [fragment, index];
37
-
38
- /**
39
- * @template T
40
- * @param {[MaybeMergeableInitFragment<T>, number]} a first pair
41
- * @param {[MaybeMergeableInitFragment<T>, number]} b second pair
42
- * @returns {number} sort value
43
- */
44
- const sortFragmentWithIndex = ([a, i], [b, j]) => {
45
- const stageCmp = a.stage - b.stage;
46
- if (stageCmp !== 0) return stageCmp;
47
- const positionCmp = a.position - b.position;
48
- if (positionCmp !== 0) return positionCmp;
49
- return i - j;
50
- };
51
-
52
- /**
32
+ * Represents InitFragment.
53
33
  * @template GenerateContext
54
34
  * @implements {MaybeMergeableInitFragment<GenerateContext>}
55
35
  */
56
36
  class InitFragment {
57
37
  /**
38
+ * Creates an instance of InitFragment.
58
39
  * @param {string | Source | undefined} content the source code that will be included as initialization code
59
40
  * @param {number} stage category of initialization code (contribute to order)
60
41
  * @param {number} position position in the category (contribute to order)
@@ -62,14 +43,20 @@ class InitFragment {
62
43
  * @param {string | Source=} endContent the source code that will be included at the end of the module
63
44
  */
64
45
  constructor(content, stage, position, key, endContent) {
46
+ /** @type {string | Source | undefined} */
65
47
  this.content = content;
48
+ /** @type {number} */
66
49
  this.stage = stage;
50
+ /** @type {number} */
67
51
  this.position = position;
52
+ /** @type {string | undefined} */
68
53
  this.key = key;
54
+ /** @type {string | Source | undefined} */
69
55
  this.endContent = endContent;
70
56
  }
71
57
 
72
58
  /**
59
+ * Returns the source code that will be included as initialization code.
73
60
  * @param {GenerateContext} context context
74
61
  * @returns {string | Source | undefined} the source code that will be included as initialization code
75
62
  */
@@ -78,6 +65,7 @@ class InitFragment {
78
65
  }
79
66
 
80
67
  /**
68
+ * Returns the source code that will be included at the end of the module.
81
69
  * @param {GenerateContext} context context
82
70
  * @returns {string | Source | undefined} the source code that will be included at the end of the module
83
71
  */
@@ -86,6 +74,7 @@ class InitFragment {
86
74
  }
87
75
 
88
76
  /**
77
+ * Adds the provided source to the init fragment.
89
78
  * @template Context
90
79
  * @param {Source} source sources
91
80
  * @param {MaybeMergeableInitFragment<Context>[]} initFragments init fragments
@@ -94,16 +83,28 @@ class InitFragment {
94
83
  */
95
84
  static addToSource(source, initFragments, context) {
96
85
  if (initFragments.length > 0) {
97
- // Sort fragments by position. If 2 fragments have the same position,
98
- // use their index.
99
- const sortedFragments = initFragments
100
- .map(extractFragmentIndex)
101
- .sort(sortFragmentWithIndex);
86
+ // Sort fragment indices by (stage, position), falling back to the
87
+ // original index — one flat number array instead of N [fragment, index]
88
+ // tuples for a stable-by-index order.
89
+ const sortedIndices = initFragments.map((_, index) => index);
90
+ sortedIndices.sort((a, b) => {
91
+ const fragmentA = initFragments[a];
92
+ const fragmentB = initFragments[b];
93
+ const stageCmp = fragmentA.stage - fragmentB.stage;
94
+ if (stageCmp !== 0) return stageCmp;
95
+ const positionCmp = fragmentA.position - fragmentB.position;
96
+ if (positionCmp !== 0) return positionCmp;
97
+ return a - b;
98
+ });
102
99
 
103
100
  // Deduplicate fragments. If a fragment has no key, it is always included.
104
- /** @type {Map<InitFragmentKey | symbol, MaybeMergeableInitFragment<Context> | MaybeMergeableInitFragment<Context>[]>} */
101
+ // Keyless fragments get a unique numeric key; number keys never collide
102
+ // with the string `InitFragmentKey`s used for keyed fragments.
103
+ /** @type {Map<InitFragmentKey | number, MaybeMergeableInitFragment<Context> | MaybeMergeableInitFragment<Context>[]>} */
105
104
  const keyedFragments = new Map();
106
- for (const [fragment] of sortedFragments) {
105
+ let keylessKey = 0;
106
+ for (const index of sortedIndices) {
107
+ const fragment = initFragments[index];
107
108
  if (typeof fragment.mergeAll === "function") {
108
109
  if (!fragment.key) {
109
110
  throw new Error(
@@ -129,7 +130,7 @@ class InitFragment {
129
130
  continue;
130
131
  }
131
132
  }
132
- keyedFragments.set(fragment.key || Symbol("fragment key"), fragment);
133
+ keyedFragments.set(fragment.key || keylessKey++, fragment);
133
134
  }
134
135
 
135
136
  const concatSource = new ConcatSource();
@@ -165,6 +166,7 @@ class InitFragment {
165
166
  }
166
167
 
167
168
  /**
169
+ * Serializes this instance into the provided serializer context.
168
170
  * @param {ObjectSerializerContext} context context
169
171
  */
170
172
  serialize(context) {
@@ -178,6 +180,7 @@ class InitFragment {
178
180
  }
179
181
 
180
182
  /**
183
+ * Restores this instance from the provided deserializer context.
181
184
  * @param {ObjectDeserializerContext} context context
182
185
  */
183
186
  deserialize(context) {
@@ -10,17 +10,18 @@ const {
10
10
  JAVASCRIPT_MODULE_TYPE_DYNAMIC,
11
11
  JAVASCRIPT_MODULE_TYPE_ESM
12
12
  } = require("./ModuleTypeConstants");
13
- const InnerGraph = require("./optimize/InnerGraph");
13
+ const { getInnerGraphUtils } = require("./optimize/InnerGraph");
14
14
 
15
15
  /** @typedef {import("./Compiler")} Compiler */
16
16
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
17
+ /** @typedef {import("./javascript/JavascriptModule").JavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
17
18
  /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
18
19
 
19
20
  const PLUGIN_NAME = "JavascriptMetaInfoPlugin";
20
21
 
21
22
  class JavascriptMetaInfoPlugin {
22
23
  /**
23
- * Apply the plugin
24
+ * Applies the plugin by registering its hooks on the compiler.
24
25
  * @param {Compiler} compiler the compiler instance
25
26
  * @returns {void}
26
27
  */
@@ -28,21 +29,23 @@ class JavascriptMetaInfoPlugin {
28
29
  compiler.hooks.compilation.tap(
29
30
  PLUGIN_NAME,
30
31
  (compilation, { normalModuleFactory }) => {
32
+ const innerGraph = getInnerGraphUtils(compilation);
31
33
  /**
34
+ * Handles the hook callback for this code path.
32
35
  * @param {JavascriptParser} parser the parser
33
36
  * @returns {void}
34
37
  */
35
38
  const handler = (parser) => {
36
39
  parser.hooks.call.for("eval").tap(PLUGIN_NAME, () => {
37
40
  const buildInfo =
38
- /** @type {BuildInfo} */
41
+ /** @type {JavascriptModuleBuildInfo} */
39
42
  (parser.state.module.buildInfo);
40
43
  buildInfo.moduleConcatenationBailout = "eval()";
41
- const currentSymbol = InnerGraph.getTopLevelSymbol(parser.state);
44
+ const currentSymbol = innerGraph.getTopLevelSymbol(parser.state);
42
45
  if (currentSymbol) {
43
- InnerGraph.addUsage(parser.state, null, currentSymbol);
46
+ innerGraph.addUsage(parser.state, null, currentSymbol);
44
47
  } else {
45
- InnerGraph.bailout(parser.state);
48
+ innerGraph.bailout(parser.state);
46
49
  }
47
50
  });
48
51
  parser.hooks.finish.tap(PLUGIN_NAME, () => {