@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
@@ -8,10 +8,14 @@
8
8
  const ConditionalInitFragment = require("../ConditionalInitFragment");
9
9
  const Dependency = require("../Dependency");
10
10
  const { UsageState } = require("../ExportsInfo");
11
- const HarmonyLinkingError = require("../HarmonyLinkingError");
12
11
  const InitFragment = require("../InitFragment");
13
12
  const RuntimeGlobals = require("../RuntimeGlobals");
14
13
  const Template = require("../Template");
14
+ const {
15
+ InlinedUsedName,
16
+ isExportInlined,
17
+ isInlineEnabled
18
+ } = require("../optimize/InlineExports");
15
19
  const {
16
20
  getMakeDeferredNamespaceModeFromExportsType
17
21
  } = require("../runtime/MakeDeferredNamespaceObjectRuntime");
@@ -26,6 +30,7 @@ const {
26
30
  } = require("../util/runtime");
27
31
  const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
28
32
  const HarmonyImportDependency = require("./HarmonyImportDependency");
33
+ const HarmonyLinkingError = require("./HarmonyLinkingError");
29
34
  const { ImportPhaseUtils } = require("./ImportPhase");
30
35
  const processExportInfo = require("./processExportInfo");
31
36
 
@@ -33,6 +38,7 @@ const processExportInfo = require("./processExportInfo");
33
38
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
34
39
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
35
40
  /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
41
+ /** @typedef {import("../Dependency").LazyUntil} LazyUntil */
36
42
  /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
37
43
  /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
38
44
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
@@ -50,15 +56,19 @@ const processExportInfo = require("./processExportInfo");
50
56
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
51
57
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
52
58
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
53
- /** @typedef {import("../WebpackError")} WebpackError */
59
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
54
60
  /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
55
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
56
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
61
+ /** @typedef {[Ids, string | null, Set<string>, ReadonlyArray<HarmonyExportImportedSpecifierDependency> | null, ExportPresenceMode, HarmonyStarExportsList | null]} SerializedData */
62
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<SerializedData>} ObjectDeserializerContext */
63
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<SerializedData>} ObjectSerializerContext */
64
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[HarmonyExportImportedSpecifierDependency[]]>} StarListDeserializerContext */
65
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[HarmonyExportImportedSpecifierDependency[]]>} StarListSerializerContext */
57
66
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
58
67
  /** @typedef {import("./HarmonyImportDependency").Ids} Ids */
59
68
  /** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
60
69
  /** @typedef {import("./HarmonyExportInitFragment").ExportMap} ExportMap */
61
70
  /** @typedef {import("../dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
71
+ /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
62
72
 
63
73
  /** @typedef {"missing" | "unused" | "empty-star" | "reexport-dynamic-default" | "reexport-named-default" | "reexport-namespace-object" | "reexport-fake-namespace-object" | "reexport-undefined" | "normal-reexport" | "dynamic-reexport"} ExportModeType */
64
74
 
@@ -70,6 +80,7 @@ const idsSymbol = /** @type {symbol} */ (
70
80
 
71
81
  class NormalReexportItem {
72
82
  /**
83
+ * Creates an instance of NormalReexportItem.
73
84
  * @param {string} name export name
74
85
  * @param {Ids} ids reexported ids from other module
75
86
  * @param {ExportInfo} exportInfo export info from other module
@@ -77,10 +88,15 @@ class NormalReexportItem {
77
88
  * @param {boolean} hidden true, if it is hidden behind another active export in the same module
78
89
  */
79
90
  constructor(name, ids, exportInfo, checked, hidden) {
91
+ /** @type {string} */
80
92
  this.name = name;
93
+ /** @type {Ids} */
81
94
  this.ids = ids;
95
+ /** @type {ExportInfo} */
82
96
  this.exportInfo = exportInfo;
97
+ /** @type {boolean} */
83
98
  this.checked = checked;
99
+ /** @type {boolean} */
84
100
  this.hidden = hidden;
85
101
  }
86
102
  }
@@ -90,6 +106,7 @@ class NormalReexportItem {
90
106
 
91
107
  class ExportMode {
92
108
  /**
109
+ * Creates an instance of ExportMode.
93
110
  * @param {ExportModeType} type type of the mode
94
111
  */
95
112
  constructor(type) {
@@ -126,7 +143,85 @@ class ExportMode {
126
143
 
127
144
  /** @typedef {number[]} DependencyIndices */
128
145
 
146
+ const RETURNS_TRUE = () => true;
147
+
129
148
  /**
149
+ * Detect a per-name cycle when collecting `export *` contributions from
150
+ * `exportInfo`'s module into `parentModule`. The TC39 `ResolveExport`
151
+ * algorithm tracks a `resolveSet` of `(module, exportName)` pairs and
152
+ * returns null when an entry is revisited — letting the `StarExportEntries`
153
+ * loop fall through to a non-cyclic source. Webpack's static export graph
154
+ * does not run that resolution algorithm, so we approximate it: if the
155
+ * imported module's same-named export ultimately re-exports from
156
+ * `parentModule` under the same name, the star contribution is cyclic and
157
+ * must be skipped. The non-cyclic alternative (a sibling `export *` that
158
+ * provides a real binding) then wins.
159
+ *
160
+ * We walk the target chain one hop at a time using `findTarget` with a
161
+ * "match anything" filter so we can guard against namespace targets
162
+ * (`export * as ns from`, where `target.export` is undefined) and against
163
+ * unrelated cycles in the graph that would otherwise loop forever inside
164
+ * `_findTarget`.
165
+ * @param {ModuleGraph} moduleGraph the module graph
166
+ * @param {ExportInfo} exportInfo export info on the imported module
167
+ * @param {Module} parentModule the module that contains the star reexport
168
+ * @returns {boolean} true when this export reexports back to the parent module under the same name
169
+ */
170
+ const isStarReexportBackToParent = (moduleGraph, exportInfo, parentModule) => {
171
+ // Fast path: probe the first hop directly. The overwhelmingly common case
172
+ // in real builds is a terminal local binding (no `_target`) — `findTarget`
173
+ // returns `undefined` and we exit without allocating a `visited` set.
174
+ const firstTarget = exportInfo.findTarget(moduleGraph, RETURNS_TRUE);
175
+ if (!firstTarget || typeof firstTarget !== "object") return false;
176
+ const name = exportInfo.name;
177
+ if (
178
+ firstTarget.module === parentModule &&
179
+ Array.isArray(firstTarget.export) &&
180
+ firstTarget.export.length === 1 &&
181
+ firstTarget.export[0] === name
182
+ ) {
183
+ return true;
184
+ }
185
+ if (!Array.isArray(firstTarget.export) || firstTarget.export.length === 0) {
186
+ return false;
187
+ }
188
+ // Multi-hop chain — allocate visited tracking now. The set protects against
189
+ // unrelated cycles in the graph that would otherwise spin inside
190
+ // `_findTarget` (its `alreadyVisited` is only seeded for the entry node).
191
+ let current = moduleGraph
192
+ .getExportsInfo(firstTarget.module)
193
+ .getReadOnlyExportInfo(firstTarget.export[0]);
194
+ // Allocated lazily: a single-extra-hop chain that terminates (the common
195
+ // `barrel -> leaf local binding` case) returns before `next` is ever
196
+ // computed, so the visited set is pure waste there.
197
+ /** @type {Set<ExportInfo> | undefined} */
198
+ let visited;
199
+ for (;;) {
200
+ const target = current.findTarget(moduleGraph, RETURNS_TRUE);
201
+ if (!target || typeof target !== "object") return false;
202
+ if (
203
+ target.module === parentModule &&
204
+ Array.isArray(target.export) &&
205
+ target.export.length === 1 &&
206
+ target.export[0] === name
207
+ ) {
208
+ return true;
209
+ }
210
+ if (!Array.isArray(target.export) || target.export.length === 0) {
211
+ return false;
212
+ }
213
+ const next = moduleGraph
214
+ .getExportsInfo(target.module)
215
+ .getReadOnlyExportInfo(target.export[0]);
216
+ if (visited === undefined) visited = new Set([exportInfo, current]);
217
+ if (visited.has(next)) return false;
218
+ visited.add(next);
219
+ current = next;
220
+ }
221
+ };
222
+
223
+ /**
224
+ * Determine export assignments.
130
225
  * @param {ModuleGraph} moduleGraph module graph
131
226
  * @param {HarmonyExportImportedSpecifierDependency[]} dependencies dependencies
132
227
  * @param {HarmonyExportImportedSpecifierDependency=} additionalDependency additional dependency
@@ -146,6 +241,11 @@ const determineExportAssignments = (
146
241
  dependencies = [...dependencies, additionalDependency];
147
242
  }
148
243
 
244
+ const referenceDep = dependencies[0] || additionalDependency;
245
+ const parentModule = referenceDep
246
+ ? moduleGraph.getParentModule(referenceDep)
247
+ : null;
248
+
149
249
  for (const dep of dependencies) {
150
250
  const i = dependencyIndices.length;
151
251
  dependencyIndices[i] = names.size;
@@ -156,7 +256,11 @@ const determineExportAssignments = (
156
256
  if (
157
257
  exportInfo.provided === true &&
158
258
  exportInfo.name !== "default" &&
159
- !names.has(exportInfo.name)
259
+ !names.has(exportInfo.name) &&
260
+ !(
261
+ parentModule &&
262
+ isStarReexportBackToParent(moduleGraph, exportInfo, parentModule)
263
+ )
160
264
  ) {
161
265
  names.add(exportInfo.name);
162
266
  dependencyIndices[i] = names.size;
@@ -170,6 +274,7 @@ const determineExportAssignments = (
170
274
  };
171
275
 
172
276
  /**
277
+ * Finds dependency for name.
173
278
  * @param {object} options options
174
279
  * @param {ExportInfoName[]} options.names names
175
280
  * @param {DependencyIndices} options.dependencyIndices dependency indices
@@ -199,6 +304,7 @@ const findDependencyForName = (
199
304
  };
200
305
 
201
306
  /**
307
+ * Returns the export mode.
202
308
  * @param {ModuleGraph} moduleGraph the module graph
203
309
  * @param {HarmonyExportImportedSpecifierDependency} dep the dependency
204
310
  * @param {string} runtimeKey the runtime key
@@ -373,6 +479,7 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
373
479
 
374
480
  class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
375
481
  /**
482
+ * Creates an instance of HarmonyExportImportedSpecifierDependency.
376
483
  * @param {string} request the request string
377
484
  * @param {number} sourceOrder the order in the original source file
378
485
  * @param {Ids} ids the requested export name of the imported module
@@ -398,15 +505,21 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
398
505
  ) {
399
506
  super(request, sourceOrder, phase, attributes);
400
507
 
508
+ /** @type {Ids} */
401
509
  this.ids = ids;
510
+ /** @type {string | null} */
402
511
  this.name = name;
512
+ /** @type {Set<string>} */
403
513
  this.activeExports = activeExports;
404
514
  this.otherStarExports = otherStarExports;
515
+ /** @type {ExportPresenceMode} */
405
516
  this.exportPresenceMode = exportPresenceMode;
517
+ /** @type {HarmonyStarExportsList | null} */
406
518
  this.allStarExports = allStarExports;
407
519
  }
408
520
 
409
521
  /**
522
+ * Could affect referencing module.
410
523
  * @returns {boolean | TRANSITIVE} true, when changes to the referenced module could affect the referencing module; TRANSITIVE, when changes to the referenced module could affect referencing modules of the referencing module
411
524
  */
412
525
  couldAffectReferencingModule() {
@@ -415,6 +528,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
415
528
 
416
529
  // TODO webpack 6 remove
417
530
  /**
531
+ * Returns id.
418
532
  * @deprecated
419
533
  */
420
534
  get id() {
@@ -423,6 +537,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
423
537
 
424
538
  // TODO webpack 6 remove
425
539
  /**
540
+ * Returns id.
426
541
  * @deprecated
427
542
  */
428
543
  getId() {
@@ -431,6 +546,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
431
546
 
432
547
  // TODO webpack 6 remove
433
548
  /**
549
+ * Updates id.
434
550
  * @deprecated
435
551
  */
436
552
  setId() {
@@ -442,6 +558,33 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
442
558
  }
443
559
 
444
560
  /**
561
+ * Returns the export name this dependency requests from its target module (lazy barrel optimization).
562
+ * @returns {string | true | null} export name, true for all exports, null for none
563
+ */
564
+ getForwardId() {
565
+ return this.ids.length > 0 ? this.ids[0] : true;
566
+ }
567
+
568
+ /**
569
+ * Returns how this dependency may be deferred when its parent module is side-effect-free (lazy barrel optimization).
570
+ * @returns {LazyUntil | null} lazy classification, null when it must be processed eagerly
571
+ */
572
+ getLazyUntil() {
573
+ return this.name !== null
574
+ ? Dependency.LAZY_UNTIL_ID
575
+ : Dependency.LAZY_UNTIL_FALLBACK;
576
+ }
577
+
578
+ /**
579
+ * Returns the export name for a `LAZY_UNTIL_LOCAL`/`LAZY_UNTIL_ID` classification (lazy barrel optimization).
580
+ * @returns {string | null} export name, null when not applicable
581
+ */
582
+ getLazyName() {
583
+ return this.name;
584
+ }
585
+
586
+ /**
587
+ * Returns the imported id.
445
588
  * @param {ModuleGraph} moduleGraph the module graph
446
589
  * @returns {Ids} the imported id
447
590
  */
@@ -450,6 +593,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
450
593
  }
451
594
 
452
595
  /**
596
+ * Updates ids using the provided module graph.
453
597
  * @param {ModuleGraph} moduleGraph the module graph
454
598
  * @param {Ids} ids the imported ids
455
599
  * @returns {void}
@@ -459,6 +603,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
459
603
  }
460
604
 
461
605
  /**
606
+ * Returns the export mode.
462
607
  * @param {ModuleGraph} moduleGraph the module graph
463
608
  * @param {RuntimeSpec} runtime the runtime
464
609
  * @returns {ExportMode} the export mode
@@ -472,6 +617,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
472
617
  }
473
618
 
474
619
  /**
620
+ * Gets star reexports.
475
621
  * @param {ModuleGraph} moduleGraph the module graph
476
622
  * @param {RuntimeSpec} runtime the runtime
477
623
  * @param {ExportsInfo} exportsInfo exports info about the current module (optional)
@@ -493,7 +639,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
493
639
  exportsInfo.otherExportsInfo.getUsed(runtime) === UsageState.Unused;
494
640
 
495
641
  /** @type {IgnoredExports} */
496
- const ignoredExports = new Set(["default", ...this.activeExports]);
642
+ const ignoredExports = new Set(this.activeExports);
643
+ ignoredExports.add("default");
497
644
 
498
645
  /** @type {Hidden | undefined} */
499
646
  let hiddenExports;
@@ -521,6 +668,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
521
668
  /** @type {Hidden | undefined} */
522
669
  const hidden = hiddenExports !== undefined ? new Set() : undefined;
523
670
 
671
+ const parentModule = /** @type {Module} */ (
672
+ moduleGraph.getParentModule(this)
673
+ );
674
+
524
675
  if (noExtraImports) {
525
676
  for (const exportInfo of exportsInfo.orderedExports) {
526
677
  const name = exportInfo.name;
@@ -530,10 +681,22 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
530
681
  importedExportsInfo.getReadOnlyExportInfo(name);
531
682
  if (importedExportInfo.provided === false) continue;
532
683
  if (hiddenExports !== undefined && hiddenExports.has(name)) {
684
+ // Earlier star deps already provided this name non-cyclically
685
+ // (`determineExportAssignments` filters cyclic candidates), so
686
+ // the cycle check below would be wasted work.
533
687
  /** @type {Hidden} */
534
688
  (hidden).add(name);
535
689
  continue;
536
690
  }
691
+ if (
692
+ isStarReexportBackToParent(
693
+ moduleGraph,
694
+ importedExportInfo,
695
+ parentModule
696
+ )
697
+ ) {
698
+ continue;
699
+ }
537
700
  exports.add(name);
538
701
  if (importedExportInfo.provided === true) continue;
539
702
  checked.add(name);
@@ -550,6 +713,15 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
550
713
  (hidden).add(name);
551
714
  continue;
552
715
  }
716
+ if (
717
+ isStarReexportBackToParent(
718
+ moduleGraph,
719
+ importedExportInfo,
720
+ parentModule
721
+ )
722
+ ) {
723
+ continue;
724
+ }
553
725
  exports.add(name);
554
726
  if (importedExportInfo.provided === true) continue;
555
727
  checked.add(name);
@@ -560,17 +732,36 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
560
732
  }
561
733
 
562
734
  /**
735
+ * Returns function to determine if the connection is active.
563
736
  * @param {ModuleGraph} moduleGraph module graph
564
737
  * @returns {null | false | GetConditionFn} function to determine if the connection is active
565
738
  */
566
739
  getCondition(moduleGraph) {
567
740
  return (connection, runtime) => {
568
741
  const mode = this.getMode(moduleGraph, runtime);
569
- return mode.type !== "unused" && mode.type !== "empty-star";
742
+ const active = mode.type !== "unused" && mode.type !== "empty-star";
743
+ if (!active) return active;
744
+
745
+ const module = connection.module;
746
+ if (!isInlineEnabled(module)) return true;
747
+ if (mode.type !== "normal-reexport") return true;
748
+ const exportsInfo = moduleGraph.getExportsInfo(module);
749
+ if (exportsInfo.otherExportsInfo.getUsed(runtime) !== UsageState.Unused) {
750
+ return true;
751
+ }
752
+ for (const item of /** @type {NormalReexportItem[]} */ (mode.items)) {
753
+ // Hidden/checked items can't be statically inlined away
754
+ if (item.hidden || item.checked) return true;
755
+ if (!isExportInlined(moduleGraph, module, item.ids, runtime)) {
756
+ return true;
757
+ }
758
+ }
759
+ return false;
570
760
  };
571
761
  }
572
762
 
573
763
  /**
764
+ * Gets module evaluation side effects state.
574
765
  * @param {ModuleGraph} moduleGraph the module graph
575
766
  * @returns {ConnectionState} how this dependency connects the module to referencing modules
576
767
  */
@@ -652,6 +843,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
652
843
  }
653
844
 
654
845
  /**
846
+ * Discover active exports from other star exports.
655
847
  * @param {ModuleGraph} moduleGraph the module graph
656
848
  * @returns {{ names: ExportInfoName[], namesSlice: number, dependencyIndices: DependencyIndices, dependencyIndex: number } | undefined} exported names and their origin dependency
657
849
  */
@@ -830,6 +1022,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
830
1022
  }
831
1023
 
832
1024
  /**
1025
+ * Get effective export presence level.
833
1026
  * @param {ModuleGraph} moduleGraph module graph
834
1027
  * @returns {ExportPresenceMode} effective mode
835
1028
  */
@@ -844,7 +1037,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
844
1037
  }
845
1038
 
846
1039
  /**
847
- * Returns warnings
1040
+ * Returns warnings.
848
1041
  * @param {ModuleGraph} moduleGraph module graph
849
1042
  * @returns {WebpackError[] | null | undefined} warnings
850
1043
  */
@@ -857,7 +1050,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
857
1050
  }
858
1051
 
859
1052
  /**
860
- * Returns errors
1053
+ * Returns errors.
861
1054
  * @param {ModuleGraph} moduleGraph module graph
862
1055
  * @returns {WebpackError[] | null | undefined} errors
863
1056
  */
@@ -870,6 +1063,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
870
1063
  }
871
1064
 
872
1065
  /**
1066
+ * Returns errors.
873
1067
  * @param {ModuleGraph} moduleGraph module graph
874
1068
  * @returns {WebpackError[] | undefined} errors
875
1069
  */
@@ -956,37 +1150,41 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
956
1150
  }
957
1151
 
958
1152
  /**
1153
+ * Serializes this instance into the provided serializer context.
959
1154
  * @param {ObjectSerializerContext} context context
960
1155
  */
961
1156
  serialize(context) {
962
- const { write, setCircularReference } = context;
963
-
964
- setCircularReference(this);
965
- write(this.ids);
966
- write(this.name);
967
- write(this.activeExports);
968
- write(this.otherStarExports);
969
- write(this.exportPresenceMode);
970
- write(this.allStarExports);
1157
+ context.setCircularReference(this);
1158
+ context
1159
+ .write(this.ids)
1160
+ .write(this.name)
1161
+ .write(this.activeExports)
1162
+ .write(this.otherStarExports)
1163
+ .write(this.exportPresenceMode)
1164
+ .write(this.allStarExports);
971
1165
 
972
1166
  super.serialize(context);
973
1167
  }
974
1168
 
975
1169
  /**
1170
+ * Restores this instance from the provided deserializer context.
976
1171
  * @param {ObjectDeserializerContext} context context
977
1172
  */
978
1173
  deserialize(context) {
979
- const { read, setCircularReference } = context;
980
-
981
- setCircularReference(this);
982
- this.ids = read();
983
- this.name = read();
984
- this.activeExports = read();
985
- this.otherStarExports = read();
986
- this.exportPresenceMode = read();
987
- this.allStarExports = read();
988
-
989
- super.deserialize(context);
1174
+ context.setCircularReference(this);
1175
+ this.ids = context.read();
1176
+ const c1 = context.rest;
1177
+ this.name = c1.read();
1178
+ const c2 = c1.rest;
1179
+ this.activeExports = c2.read();
1180
+ const c3 = c2.rest;
1181
+ this.otherStarExports = c3.read();
1182
+ const c4 = c3.rest;
1183
+ this.exportPresenceMode = c4.read();
1184
+ const c5 = c4.rest;
1185
+ this.allStarExports = c5.read();
1186
+
1187
+ super.deserialize(c5.rest);
990
1188
  }
991
1189
  }
992
1190
 
@@ -999,6 +1197,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
999
1197
  HarmonyImportDependency.Template
1000
1198
  ) {
1001
1199
  /**
1200
+ * Applies the plugin by registering its hooks on the compiler.
1002
1201
  * @param {Dependency} dependency the dependency for which the template should be applied
1003
1202
  * @param {ReplaceSource} source the current replace source which can be modified
1004
1203
  * @param {DependencyTemplateContext} templateContext the context object
@@ -1042,6 +1241,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1042
1241
  }
1043
1242
 
1044
1243
  /**
1244
+ * Add export fragments.
1045
1245
  * @param {InitFragment<GenerateContext>[]} initFragments target array for init fragments
1046
1246
  * @param {HarmonyExportImportedSpecifierDependency} dep dependency
1047
1247
  * @param {ExportMode} mode the export mode
@@ -1085,7 +1285,9 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1085
1285
  importVar,
1086
1286
  importedModule.getExportsType(
1087
1287
  moduleGraph,
1088
- module.buildMeta && module.buildMeta.strictHarmonyModule
1288
+ module.buildMeta &&
1289
+ /** @type {JavascriptModuleBuildMeta} */ (module.buildMeta)
1290
+ .strictHarmonyModule
1089
1291
  ),
1090
1292
  runtimeRequirements
1091
1293
  )
@@ -1190,7 +1392,12 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1190
1392
  );
1191
1393
  break;
1192
1394
 
1193
- case "normal-reexport":
1395
+ case "normal-reexport": {
1396
+ // loop-invariants hoisted out of the per-item loop below (a barrel
1397
+ // re-exporting N names otherwise repeats these lookups N times)
1398
+ const connection = moduleGraph.getConnection(dep);
1399
+ const selfExportsInfo = moduleGraph.getExportsInfo(module);
1400
+ const importedExportsInfo = moduleGraph.getExportsInfo(importedModule);
1194
1401
  for (const {
1195
1402
  name,
1196
1403
  ids,
@@ -1199,7 +1406,6 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1199
1406
  } of /** @type {NormalReexportItem[]} */ (mode.items)) {
1200
1407
  if (hidden) continue;
1201
1408
  if (checked) {
1202
- const connection = moduleGraph.getConnection(dep);
1203
1409
  const key = `harmony reexport (checked) ${importVar} ${name}`;
1204
1410
  const runtimeCondition = dep.weak
1205
1411
  ? false
@@ -1228,17 +1434,17 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1228
1434
  this.getReexportFragment(
1229
1435
  module,
1230
1436
  "reexport safe",
1231
- moduleGraph.getExportsInfo(module).getUsedName(name, runtime),
1437
+ selfExportsInfo.getUsedName(name, runtime),
1232
1438
  importVar,
1233
- moduleGraph
1234
- .getExportsInfo(importedModule)
1235
- .getUsedName(ids, runtime),
1236
- runtimeRequirements
1439
+ importedExportsInfo.getUsedName(ids, runtime),
1440
+ runtimeRequirements,
1441
+ ids
1237
1442
  )
1238
1443
  );
1239
1444
  }
1240
1445
  }
1241
1446
  break;
1447
+ }
1242
1448
 
1243
1449
  case "dynamic-reexport": {
1244
1450
  const ignored = mode.hidden
@@ -1293,12 +1499,14 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1293
1499
  }
1294
1500
 
1295
1501
  /**
1502
+ * Gets reexport fragment.
1296
1503
  * @param {Module} module the current module
1297
1504
  * @param {string} comment comment
1298
1505
  * @param {UsedName} key key
1299
1506
  * @param {string} name name
1300
1507
  * @param {UsedName | null} valueKey value key
1301
1508
  * @param {RuntimeRequirements} runtimeRequirements runtime requirements
1509
+ * @param {string[]=} ids original ids on the imported side (for inline-rendering comment)
1302
1510
  * @returns {HarmonyExportInitFragment} harmony export init fragment
1303
1511
  */
1304
1512
  getReexportFragment(
@@ -1307,9 +1515,10 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1307
1515
  key,
1308
1516
  name,
1309
1517
  valueKey,
1310
- runtimeRequirements
1518
+ runtimeRequirements,
1519
+ ids
1311
1520
  ) {
1312
- const returnValue = this.getReturnValue(name, valueKey);
1521
+ const returnValue = this.getReturnValue(name, valueKey, ids);
1313
1522
 
1314
1523
  runtimeRequirements.add(RuntimeGlobals.exports);
1315
1524
  runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
@@ -1322,6 +1531,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1322
1531
  }
1323
1532
 
1324
1533
  /**
1534
+ * Gets reexport fake namespace object fragments.
1325
1535
  * @param {Module} module module
1326
1536
  * @param {UsedName} key key
1327
1537
  * @param {string} name name
@@ -1361,6 +1571,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1361
1571
  }
1362
1572
 
1363
1573
  /**
1574
+ * Gets reexport deferred namespace object fragments.
1364
1575
  * @param {Module} module module
1365
1576
  * @param {ChunkGraph} chunkGraph chunkGraph
1366
1577
  * @param {UsedName} key key
@@ -1402,6 +1613,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1402
1613
  }
1403
1614
 
1404
1615
  /**
1616
+ * Gets conditional reexport statement.
1405
1617
  * @param {Module} module module
1406
1618
  * @param {string} key key
1407
1619
  * @param {string} name name
@@ -1437,11 +1649,13 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1437
1649
  }
1438
1650
 
1439
1651
  /**
1652
+ * Returns value.
1440
1653
  * @param {string} name name
1441
- * @param {null | false | string | string[]} valueKey value key
1654
+ * @param {null | false | string | string[] | import("../optimize/InlineExports").InlinedUsedName} valueKey value key
1655
+ * @param {string[]=} ids original imported ids (for inline-rendering comment)
1442
1656
  * @returns {string | undefined} value
1443
1657
  */
1444
- getReturnValue(name, valueKey) {
1658
+ getReturnValue(name, valueKey, ids) {
1445
1659
  if (valueKey === null) {
1446
1660
  return `${name}_default.a`;
1447
1661
  }
@@ -1454,7 +1668,14 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1454
1668
  return "/* unused export */ undefined";
1455
1669
  }
1456
1670
 
1457
- return `${name}${propertyAccess(valueKey)}`;
1671
+ if (valueKey instanceof InlinedUsedName) {
1672
+ // Re-export forwards the source export's inlined literal as its own runtime value
1673
+ return valueKey.render(
1674
+ Template.toNormalComment(`inlined export ${propertyAccess(ids || [])}`)
1675
+ );
1676
+ }
1677
+
1678
+ return `${name}${propertyAccess(Array.isArray(valueKey) ? valueKey : [valueKey])}`;
1458
1679
  }
1459
1680
  };
1460
1681
 
@@ -1465,6 +1686,7 @@ class HarmonyStarExportsList {
1465
1686
  }
1466
1687
 
1467
1688
  /**
1689
+ * Processes the provided dep.
1468
1690
  * @param {HarmonyExportImportedSpecifierDependency} dep dependency
1469
1691
  * @returns {void}
1470
1692
  */
@@ -1477,7 +1699,8 @@ class HarmonyStarExportsList {
1477
1699
  }
1478
1700
 
1479
1701
  /**
1480
- * @param {ObjectSerializerContext} context context
1702
+ * Serializes this instance into the provided serializer context.
1703
+ * @param {StarListSerializerContext} context context
1481
1704
  */
1482
1705
  serialize({ write, setCircularReference }) {
1483
1706
  setCircularReference(this);
@@ -1485,7 +1708,8 @@ class HarmonyStarExportsList {
1485
1708
  }
1486
1709
 
1487
1710
  /**
1488
- * @param {ObjectDeserializerContext} context context
1711
+ * Restores this instance from the provided deserializer context.
1712
+ * @param {StarListDeserializerContext} context context
1489
1713
  */
1490
1714
  deserialize({ read, setCircularReference }) {
1491
1715
  setCircularReference(this);