webpack 5.59.0 → 5.94.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 (570) hide show
  1. package/README.md +48 -38
  2. package/bin/webpack.js +34 -10
  3. package/hot/dev-server.js +19 -5
  4. package/hot/lazy-compilation-node.js +13 -1
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +23 -4
  8. package/hot/only-dev-server.js +3 -2
  9. package/hot/poll.js +5 -2
  10. package/hot/signal.js +6 -2
  11. package/lib/APIPlugin.js +226 -122
  12. package/lib/AbstractMethodError.js +10 -5
  13. package/lib/AsyncDependenciesBlock.js +13 -5
  14. package/lib/AutomaticPrefetchPlugin.js +2 -1
  15. package/lib/BannerPlugin.js +33 -12
  16. package/lib/Cache.js +16 -12
  17. package/lib/CacheFacade.js +13 -16
  18. package/lib/CaseSensitiveModulesWarning.js +8 -8
  19. package/lib/Chunk.js +60 -33
  20. package/lib/ChunkGraph.js +207 -72
  21. package/lib/ChunkGroup.js +40 -20
  22. package/lib/ChunkTemplate.js +43 -0
  23. package/lib/CleanPlugin.js +117 -32
  24. package/lib/CodeGenerationResults.js +8 -7
  25. package/lib/CommentCompilationWarning.js +0 -1
  26. package/lib/CompatibilityPlugin.js +85 -46
  27. package/lib/Compilation.js +712 -392
  28. package/lib/Compiler.js +393 -172
  29. package/lib/ConcatenationScope.js +10 -13
  30. package/lib/ConditionalInitFragment.js +22 -14
  31. package/lib/ConstPlugin.js +104 -64
  32. package/lib/ContextExclusionPlugin.js +3 -3
  33. package/lib/ContextModule.js +283 -108
  34. package/lib/ContextModuleFactory.js +151 -63
  35. package/lib/ContextReplacementPlugin.js +25 -10
  36. package/lib/CssModule.js +166 -0
  37. package/lib/DefinePlugin.js +254 -148
  38. package/lib/DelegatedModule.js +29 -6
  39. package/lib/DelegatedModuleFactoryPlugin.js +42 -22
  40. package/lib/DelegatedPlugin.js +4 -0
  41. package/lib/DependenciesBlock.js +17 -2
  42. package/lib/Dependency.js +58 -29
  43. package/lib/DependencyTemplate.js +24 -3
  44. package/lib/DependencyTemplates.js +2 -2
  45. package/lib/DllEntryPlugin.js +18 -1
  46. package/lib/DllModule.js +21 -4
  47. package/lib/DllModuleFactory.js +2 -1
  48. package/lib/DllPlugin.js +9 -7
  49. package/lib/DllReferencePlugin.js +50 -19
  50. package/lib/EntryOptionPlugin.js +6 -1
  51. package/lib/EntryPlugin.js +7 -4
  52. package/lib/Entrypoint.js +2 -2
  53. package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
  54. package/lib/EnvironmentPlugin.js +5 -2
  55. package/lib/ErrorHelpers.js +65 -26
  56. package/lib/EvalDevToolModulePlugin.js +37 -13
  57. package/lib/EvalSourceMapDevToolPlugin.js +50 -20
  58. package/lib/ExportsInfo.js +234 -133
  59. package/lib/ExportsInfoApiPlugin.js +31 -15
  60. package/lib/ExternalModule.js +391 -129
  61. package/lib/ExternalModuleFactoryPlugin.js +65 -17
  62. package/lib/FileSystemInfo.js +1038 -523
  63. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  64. package/lib/FlagDependencyExportsPlugin.js +352 -349
  65. package/lib/FlagDependencyUsagePlugin.js +10 -10
  66. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  67. package/lib/Generator.js +16 -8
  68. package/lib/GraphHelpers.js +3 -2
  69. package/lib/HookWebpackError.js +11 -13
  70. package/lib/HotModuleReplacementPlugin.js +221 -128
  71. package/lib/IgnoreErrorModuleFactory.js +4 -4
  72. package/lib/IgnorePlugin.js +5 -4
  73. package/lib/IgnoreWarningsPlugin.js +6 -9
  74. package/lib/InitFragment.js +39 -15
  75. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  76. package/lib/LibManifestPlugin.js +45 -16
  77. package/lib/LoaderOptionsPlugin.js +13 -3
  78. package/lib/MainTemplate.js +74 -21
  79. package/lib/Module.js +155 -34
  80. package/lib/ModuleBuildError.js +13 -11
  81. package/lib/ModuleDependencyError.js +6 -4
  82. package/lib/ModuleDependencyWarning.js +6 -4
  83. package/lib/ModuleError.js +10 -5
  84. package/lib/ModuleFactory.js +4 -4
  85. package/lib/ModuleFilenameHelpers.js +164 -54
  86. package/lib/ModuleGraph.js +93 -53
  87. package/lib/ModuleGraphConnection.js +27 -13
  88. package/lib/ModuleHashingError.js +29 -0
  89. package/lib/ModuleInfoHeaderPlugin.js +92 -33
  90. package/lib/ModuleNotFoundError.js +5 -2
  91. package/lib/ModuleParseError.js +17 -9
  92. package/lib/ModuleProfile.js +1 -0
  93. package/lib/ModuleRestoreError.js +3 -1
  94. package/lib/ModuleStoreError.js +3 -2
  95. package/lib/ModuleTemplate.js +33 -1
  96. package/lib/ModuleTypeConstants.js +168 -0
  97. package/lib/ModuleWarning.js +10 -5
  98. package/lib/MultiCompiler.js +115 -38
  99. package/lib/MultiStats.js +75 -33
  100. package/lib/MultiWatching.js +6 -2
  101. package/lib/NodeStuffPlugin.js +136 -37
  102. package/lib/NormalModule.js +437 -194
  103. package/lib/NormalModuleFactory.js +313 -116
  104. package/lib/NormalModuleReplacementPlugin.js +10 -4
  105. package/lib/NullFactory.js +1 -1
  106. package/lib/OptimizationStages.js +3 -3
  107. package/lib/Parser.js +1 -1
  108. package/lib/PlatformPlugin.js +39 -0
  109. package/lib/PrefetchPlugin.js +4 -0
  110. package/lib/ProgressPlugin.js +83 -28
  111. package/lib/ProvidePlugin.js +37 -19
  112. package/lib/RawModule.js +18 -5
  113. package/lib/RecordIdsPlugin.js +8 -8
  114. package/lib/RequireJsStuffPlugin.js +22 -15
  115. package/lib/ResolverFactory.js +8 -4
  116. package/lib/RuntimeGlobals.js +99 -65
  117. package/lib/RuntimeModule.js +17 -15
  118. package/lib/RuntimePlugin.js +116 -13
  119. package/lib/RuntimeTemplate.js +304 -102
  120. package/lib/SelfModuleFactory.js +12 -0
  121. package/lib/SizeFormatHelpers.js +2 -4
  122. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  123. package/lib/SourceMapDevToolPlugin.js +89 -42
  124. package/lib/Stats.js +12 -7
  125. package/lib/Template.js +30 -33
  126. package/lib/TemplatedPathPlugin.js +102 -34
  127. package/lib/UseStrictPlugin.js +37 -12
  128. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  129. package/lib/WarnDeprecatedOptionPlugin.js +6 -0
  130. package/lib/WatchIgnorePlugin.js +46 -13
  131. package/lib/Watching.js +139 -76
  132. package/lib/WebpackError.js +14 -5
  133. package/lib/WebpackIsIncludedPlugin.js +22 -13
  134. package/lib/WebpackOptionsApply.js +162 -56
  135. package/lib/WebpackOptionsDefaulter.js +10 -3
  136. package/lib/asset/AssetGenerator.js +351 -99
  137. package/lib/asset/AssetModulesPlugin.js +57 -33
  138. package/lib/asset/AssetParser.js +15 -6
  139. package/lib/asset/AssetSourceGenerator.js +30 -10
  140. package/lib/asset/AssetSourceParser.js +8 -2
  141. package/lib/asset/RawDataUrlModule.js +162 -0
  142. package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
  143. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  144. package/lib/buildChunkGraph.js +376 -420
  145. package/lib/cache/AddManagedPathsPlugin.js +6 -1
  146. package/lib/cache/IdleFileCachePlugin.js +26 -13
  147. package/lib/cache/MemoryCachePlugin.js +1 -1
  148. package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
  149. package/lib/cache/PackFileCacheStrategy.js +172 -94
  150. package/lib/cache/ResolverCachePlugin.js +115 -43
  151. package/lib/cache/getLazyHashedEtag.js +2 -2
  152. package/lib/cache/mergeEtags.js +16 -21
  153. package/lib/cli.js +195 -110
  154. package/lib/config/browserslistTargetHandler.js +106 -41
  155. package/lib/config/defaults.js +572 -154
  156. package/lib/config/normalization.js +361 -322
  157. package/lib/config/target.js +105 -66
  158. package/lib/container/ContainerEntryDependency.js +2 -1
  159. package/lib/container/ContainerEntryModule.js +27 -11
  160. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  161. package/lib/container/ContainerExposedDependency.js +9 -0
  162. package/lib/container/ContainerPlugin.js +18 -12
  163. package/lib/container/ContainerReferencePlugin.js +1 -1
  164. package/lib/container/FallbackDependency.js +13 -0
  165. package/lib/container/FallbackItemDependency.js +3 -0
  166. package/lib/container/FallbackModule.js +19 -8
  167. package/lib/container/FallbackModuleFactory.js +1 -1
  168. package/lib/container/ModuleFederationPlugin.js +2 -0
  169. package/lib/container/RemoteModule.js +17 -4
  170. package/lib/container/RemoteRuntimeModule.js +31 -17
  171. package/lib/container/RemoteToExternalDependency.js +3 -0
  172. package/lib/container/options.js +18 -4
  173. package/lib/css/CssExportsGenerator.js +203 -0
  174. package/lib/css/CssGenerator.js +151 -0
  175. package/lib/css/CssLoadingRuntimeModule.js +592 -0
  176. package/lib/css/CssModulesPlugin.js +888 -0
  177. package/lib/css/CssParser.js +1049 -0
  178. package/lib/css/walkCssTokens.js +775 -0
  179. package/lib/debug/ProfilingPlugin.js +102 -54
  180. package/lib/dependencies/AMDDefineDependency.js +54 -10
  181. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
  182. package/lib/dependencies/AMDPlugin.js +44 -24
  183. package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
  184. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  185. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  186. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
  187. package/lib/dependencies/AMDRequireDependency.js +21 -6
  188. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  189. package/lib/dependencies/AMDRuntimeModules.js +4 -4
  190. package/lib/dependencies/CachedConstDependency.js +22 -1
  191. package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
  193. package/lib/dependencies/CommonJsExportsDependency.js +28 -5
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
  197. package/lib/dependencies/CommonJsPlugin.js +51 -26
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
  199. package/lib/dependencies/CommonJsRequireDependency.js +9 -1
  200. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
  201. package/lib/dependencies/ConstDependency.js +12 -3
  202. package/lib/dependencies/ContextDependency.js +32 -5
  203. package/lib/dependencies/ContextDependencyHelpers.js +92 -62
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
  205. package/lib/dependencies/ContextElementDependency.js +41 -4
  206. package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
  207. package/lib/dependencies/CriticalDependencyWarning.js +4 -1
  208. package/lib/dependencies/CssExportDependency.js +156 -0
  209. package/lib/dependencies/CssImportDependency.js +125 -0
  210. package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
  211. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
  212. package/lib/dependencies/CssUrlDependency.js +164 -0
  213. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  214. package/lib/dependencies/DllEntryDependency.js +14 -0
  215. package/lib/dependencies/DynamicExports.js +15 -11
  216. package/lib/dependencies/ExportsInfoDependency.js +26 -5
  217. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  218. package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
  219. package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
  220. package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
  221. package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
  222. package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
  223. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
  224. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
  225. package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
  226. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  227. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
  228. package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
  229. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  230. package/lib/dependencies/HarmonyExports.js +13 -7
  231. package/lib/dependencies/HarmonyImportDependency.js +65 -19
  232. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
  233. package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
  234. package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
  235. package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
  236. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  237. package/lib/dependencies/ImportContextDependency.js +15 -2
  238. package/lib/dependencies/ImportDependency.js +50 -12
  239. package/lib/dependencies/ImportEagerDependency.js +11 -6
  240. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  241. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
  242. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  243. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  244. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  245. package/lib/dependencies/ImportMetaPlugin.js +128 -59
  246. package/lib/dependencies/ImportParserPlugin.js +153 -83
  247. package/lib/dependencies/ImportPlugin.js +21 -7
  248. package/lib/dependencies/ImportWeakDependency.js +11 -6
  249. package/lib/dependencies/JsonExportsDependency.js +38 -30
  250. package/lib/dependencies/LoaderDependency.js +14 -0
  251. package/lib/dependencies/LoaderImportDependency.js +14 -0
  252. package/lib/dependencies/LoaderPlugin.js +54 -40
  253. package/lib/dependencies/LocalModule.js +17 -1
  254. package/lib/dependencies/LocalModuleDependency.js +15 -0
  255. package/lib/dependencies/LocalModulesHelpers.js +22 -4
  256. package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
  257. package/lib/dependencies/ModuleDependency.js +24 -7
  258. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  259. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  260. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  261. package/lib/dependencies/PrefetchDependency.js +3 -0
  262. package/lib/dependencies/ProvidedDependency.js +43 -8
  263. package/lib/dependencies/PureExpressionDependency.js +73 -39
  264. package/lib/dependencies/RequireContextDependency.js +6 -16
  265. package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
  266. package/lib/dependencies/RequireContextPlugin.js +20 -7
  267. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  268. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
  269. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  270. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  271. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  272. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  273. package/lib/dependencies/RequireIncludeDependency.js +6 -1
  274. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  275. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  276. package/lib/dependencies/RequireResolveContextDependency.js +19 -2
  277. package/lib/dependencies/RequireResolveDependency.js +8 -1
  278. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  279. package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
  280. package/lib/dependencies/StaticExportsDependency.js +8 -0
  281. package/lib/dependencies/SystemPlugin.js +49 -22
  282. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  283. package/lib/dependencies/URLDependency.js +20 -13
  284. package/lib/dependencies/URLPlugin.js +115 -27
  285. package/lib/dependencies/UnsupportedDependency.js +13 -0
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  287. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
  289. package/lib/dependencies/WorkerDependency.js +47 -3
  290. package/lib/dependencies/WorkerPlugin.js +143 -59
  291. package/lib/dependencies/getFunctionExpression.js +9 -0
  292. package/lib/dependencies/processExportInfo.js +3 -1
  293. package/lib/electron/ElectronTargetPlugin.js +1 -0
  294. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  295. package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
  296. package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
  297. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
  298. package/lib/formatLocation.js +1 -2
  299. package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
  300. package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
  301. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
  302. package/lib/hmr/LazyCompilationPlugin.js +94 -41
  303. package/lib/hmr/lazyCompilationBackend.js +107 -44
  304. package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
  305. package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
  306. package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
  307. package/lib/ids/HashedModuleIdsPlugin.js +24 -16
  308. package/lib/ids/IdHelpers.js +59 -49
  309. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  310. package/lib/ids/NamedModuleIdsPlugin.js +20 -12
  311. package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
  312. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  313. package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
  314. package/lib/ids/SyncModuleIdsPlugin.js +146 -0
  315. package/lib/index.js +44 -5
  316. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
  317. package/lib/javascript/BasicEvaluatedExpression.js +133 -19
  318. package/lib/javascript/ChunkHelpers.js +33 -0
  319. package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
  320. package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
  321. package/lib/javascript/JavascriptGenerator.js +37 -6
  322. package/lib/javascript/JavascriptModulesPlugin.js +523 -295
  323. package/lib/javascript/JavascriptParser.js +1591 -574
  324. package/lib/javascript/JavascriptParserHelpers.js +58 -37
  325. package/lib/javascript/StartupHelpers.js +69 -47
  326. package/lib/json/JsonData.js +33 -0
  327. package/lib/json/JsonGenerator.js +29 -21
  328. package/lib/json/JsonModulesPlugin.js +13 -7
  329. package/lib/json/JsonParser.js +30 -16
  330. package/lib/library/AbstractLibraryPlugin.js +6 -2
  331. package/lib/library/AmdLibraryPlugin.js +34 -18
  332. package/lib/library/AssignLibraryPlugin.js +68 -32
  333. package/lib/library/EnableLibraryPlugin.js +39 -14
  334. package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
  335. package/lib/library/JsonpLibraryPlugin.js +4 -3
  336. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  337. package/lib/library/ModuleLibraryPlugin.js +12 -7
  338. package/lib/library/SystemLibraryPlugin.js +6 -4
  339. package/lib/library/UmdLibraryPlugin.js +119 -100
  340. package/lib/logging/Logger.js +59 -6
  341. package/lib/logging/createConsoleLogger.js +25 -40
  342. package/lib/logging/runtime.js +8 -9
  343. package/lib/logging/truncateArgs.js +9 -8
  344. package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
  345. package/lib/node/NodeEnvironmentPlugin.js +14 -8
  346. package/lib/node/NodeTargetPlugin.js +7 -0
  347. package/lib/node/NodeTemplatePlugin.js +10 -2
  348. package/lib/node/NodeWatchFileSystem.js +100 -50
  349. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
  350. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
  351. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  352. package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
  353. package/lib/node/nodeConsole.js +48 -31
  354. package/lib/optimize/AggressiveMergingPlugin.js +10 -4
  355. package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
  356. package/lib/optimize/ConcatenatedModule.js +353 -212
  357. package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
  358. package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
  359. package/lib/optimize/InnerGraph.js +30 -25
  360. package/lib/optimize/InnerGraphPlugin.js +105 -64
  361. package/lib/optimize/LimitChunkCountPlugin.js +32 -9
  362. package/lib/optimize/MangleExportsPlugin.js +7 -2
  363. package/lib/optimize/MinMaxSizeWarning.js +6 -1
  364. package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
  365. package/lib/optimize/RealContentHashPlugin.js +99 -43
  366. package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
  367. package/lib/optimize/RuntimeChunkPlugin.js +15 -2
  368. package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
  369. package/lib/optimize/SplitChunksPlugin.js +129 -78
  370. package/lib/performance/SizeLimitsPlugin.js +22 -8
  371. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  372. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
  373. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
  374. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
  375. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
  376. package/lib/rules/BasicEffectRulePlugin.js +7 -1
  377. package/lib/rules/BasicMatcherRulePlugin.js +8 -1
  378. package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
  379. package/lib/rules/RuleSetCompiler.js +53 -32
  380. package/lib/rules/UseEffectRulePlugin.js +42 -36
  381. package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
  382. package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
  383. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  384. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  385. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  386. package/lib/runtime/CompatRuntimeModule.js +7 -2
  387. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  388. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  389. package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
  390. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
  391. package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
  392. package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
  393. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  394. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  395. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
  396. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  397. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  398. package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
  399. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  400. package/lib/runtime/NonceRuntimeModule.js +24 -0
  401. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  402. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  403. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  404. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  405. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  406. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
  407. package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
  408. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  409. package/lib/schemes/DataUriPlugin.js +16 -3
  410. package/lib/schemes/HttpUriPlugin.js +336 -120
  411. package/lib/serialization/ArraySerializer.js +22 -6
  412. package/lib/serialization/BinaryMiddleware.js +212 -33
  413. package/lib/serialization/DateObjectSerializer.js +16 -4
  414. package/lib/serialization/ErrorObjectSerializer.js +23 -6
  415. package/lib/serialization/FileMiddleware.js +187 -86
  416. package/lib/serialization/MapObjectSerializer.js +25 -8
  417. package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
  418. package/lib/serialization/ObjectMiddleware.js +96 -66
  419. package/lib/serialization/PlainObjectSerializer.js +51 -14
  420. package/lib/serialization/RegExpObjectSerializer.js +17 -5
  421. package/lib/serialization/Serializer.js +23 -5
  422. package/lib/serialization/SerializerMiddleware.js +8 -8
  423. package/lib/serialization/SetObjectSerializer.js +22 -6
  424. package/lib/serialization/SingleItemMiddleware.js +2 -2
  425. package/lib/serialization/types.js +2 -2
  426. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  427. package/lib/sharing/ConsumeSharedModule.js +40 -17
  428. package/lib/sharing/ConsumeSharedPlugin.js +139 -102
  429. package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
  430. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  431. package/lib/sharing/ProvideSharedDependency.js +17 -0
  432. package/lib/sharing/ProvideSharedModule.js +19 -6
  433. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  434. package/lib/sharing/ProvideSharedPlugin.js +37 -30
  435. package/lib/sharing/SharePlugin.js +2 -2
  436. package/lib/sharing/ShareRuntimeModule.js +20 -10
  437. package/lib/sharing/resolveMatchedConfigs.js +6 -5
  438. package/lib/sharing/utils.js +338 -34
  439. package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
  440. package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
  441. package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
  442. package/lib/stats/StatsFactory.js +128 -57
  443. package/lib/stats/StatsPrinter.js +77 -46
  444. package/lib/util/ArrayHelpers.js +35 -1
  445. package/lib/util/ArrayQueue.js +15 -22
  446. package/lib/util/AsyncQueue.js +37 -16
  447. package/lib/util/IterableHelpers.js +3 -4
  448. package/lib/util/LazyBucketSortedSet.js +60 -44
  449. package/lib/util/LazySet.js +11 -2
  450. package/lib/util/MapHelpers.js +17 -5
  451. package/lib/util/ParallelismFactorCalculator.js +11 -1
  452. package/lib/util/Queue.js +9 -3
  453. package/lib/util/Semaphore.js +4 -7
  454. package/lib/util/SetHelpers.js +5 -5
  455. package/lib/util/SortableSet.js +19 -6
  456. package/lib/util/StackedCacheMap.js +33 -3
  457. package/lib/util/StackedMap.js +1 -3
  458. package/lib/util/StringXor.js +46 -0
  459. package/lib/util/TupleQueue.js +9 -3
  460. package/lib/util/TupleSet.js +15 -5
  461. package/lib/util/URLAbsoluteSpecifier.js +8 -8
  462. package/lib/util/WeakTupleMap.js +70 -28
  463. package/lib/util/binarySearchBounds.js +51 -9
  464. package/lib/util/chainedImports.js +97 -0
  465. package/lib/util/cleverMerge.js +51 -36
  466. package/lib/util/comparators.js +146 -83
  467. package/lib/util/compileBooleanMatcher.js +35 -7
  468. package/lib/util/conventions.js +126 -0
  469. package/lib/util/create-schema-validation.js +9 -2
  470. package/lib/util/createHash.js +49 -14
  471. package/lib/util/deprecation.js +48 -15
  472. package/lib/util/deterministicGrouping.js +71 -39
  473. package/lib/util/extractUrlAndGlobal.js +3 -0
  474. package/lib/util/findGraphRoots.js +7 -5
  475. package/lib/util/fs.js +419 -94
  476. package/lib/util/hash/BatchedHash.js +10 -4
  477. package/lib/util/hash/md4.js +20 -0
  478. package/lib/util/hash/wasm-hash.js +163 -0
  479. package/lib/util/hash/xxhash64.js +7 -141
  480. package/lib/util/identifier.js +140 -93
  481. package/lib/util/internalSerializables.js +22 -0
  482. package/lib/util/makeSerializable.js +7 -0
  483. package/lib/util/memoize.js +10 -10
  484. package/lib/util/mergeScope.js +76 -0
  485. package/lib/util/nonNumericOnlyHash.js +22 -0
  486. package/lib/util/numberHash.js +84 -34
  487. package/lib/util/objectToMap.js +0 -1
  488. package/lib/util/processAsyncTree.js +7 -1
  489. package/lib/util/propertyAccess.js +7 -55
  490. package/lib/util/propertyName.js +77 -0
  491. package/lib/util/registerExternalSerializer.js +2 -2
  492. package/lib/util/runtime.js +188 -133
  493. package/lib/util/semver.js +64 -56
  494. package/lib/util/serialization.js +26 -1
  495. package/lib/util/smartGrouping.js +10 -10
  496. package/lib/util/source.js +1 -1
  497. package/lib/validateSchema.js +6 -2
  498. package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
  499. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
  500. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  501. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
  502. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
  503. package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
  504. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
  505. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  506. package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
  507. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
  508. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  509. package/lib/wasm-sync/WebAssemblyParser.js +23 -9
  510. package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
  511. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  512. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  513. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  514. package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
  515. package/lib/webpack.js +43 -12
  516. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
  517. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
  518. package/module.d.ts +233 -0
  519. package/package.json +85 -139
  520. package/schemas/WebpackOptions.check.js +1 -1
  521. package/schemas/WebpackOptions.json +679 -47
  522. package/schemas/plugins/BannerPlugin.check.js +1 -1
  523. package/schemas/plugins/BannerPlugin.json +9 -1
  524. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  525. package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
  526. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  529. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  530. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  531. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  532. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  534. package/schemas/plugins/container/ContainerPlugin.json +10 -1
  535. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  536. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  537. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  538. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  539. package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
  540. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
  541. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
  542. package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
  543. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
  544. package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
  545. package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
  546. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  547. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  548. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  549. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
  550. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
  551. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
  552. package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
  553. package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
  554. package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
  555. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  556. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  557. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  558. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  559. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  560. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  561. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  562. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  563. package/schemas/plugins/css/CssParserOptions.json +3 -0
  564. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  565. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  566. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  567. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  568. package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
  569. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  570. package/types.d.ts +5026 -1756
@@ -5,6 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const ConditionalInitFragment = require("../ConditionalInitFragment");
8
9
  const Dependency = require("../Dependency");
9
10
  const { UsageState } = require("../ExportsInfo");
10
11
  const HarmonyLinkingError = require("../HarmonyLinkingError");
@@ -15,7 +16,12 @@ const { countIterable } = require("../util/IterableHelpers");
15
16
  const { first, combine } = require("../util/SetHelpers");
16
17
  const makeSerializable = require("../util/makeSerializable");
17
18
  const propertyAccess = require("../util/propertyAccess");
18
- const { getRuntimeKey, keyToRuntime } = require("../util/runtime");
19
+ const { propertyName } = require("../util/propertyName");
20
+ const {
21
+ getRuntimeKey,
22
+ keyToRuntime,
23
+ filterRuntime
24
+ } = require("../util/runtime");
19
25
  const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
20
26
  const HarmonyImportDependency = require("./HarmonyImportDependency");
21
27
  const processExportInfo = require("./processExportInfo");
@@ -23,23 +29,34 @@ const processExportInfo = require("./processExportInfo");
23
29
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
24
30
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
25
31
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
32
+ /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
26
33
  /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
27
34
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
28
35
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
29
36
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
30
37
  /** @typedef {import("../ExportsInfo")} ExportsInfo */
31
38
  /** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
39
+ /** @typedef {import("../ExportsInfo").UsedName} UsedName */
40
+ /** @typedef {import("../Generator").GenerateContext} GenerateContext */
32
41
  /** @typedef {import("../Module")} Module */
42
+ /** @typedef {import("../Module").BuildMeta} BuildMeta */
43
+ /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
33
44
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
34
45
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
35
46
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
36
47
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
37
48
  /** @typedef {import("../WebpackError")} WebpackError */
49
+ /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
50
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
51
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
38
52
  /** @typedef {import("../util/Hash")} Hash */
39
53
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
54
+ /** @typedef {import("./processExportInfo").ReferencedExports} ReferencedExports */
40
55
 
41
56
  /** @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 */
42
57
 
58
+ const { ExportPresenceModes } = HarmonyImportDependency;
59
+
43
60
  const idsSymbol = Symbol("HarmonyExportImportedSpecifierDependency.ids");
44
61
 
45
62
  class NormalReexportItem {
@@ -59,6 +76,9 @@ class NormalReexportItem {
59
76
  }
60
77
  }
61
78
 
79
+ /** @typedef {Set<string>} ExportModeIgnored */
80
+ /** @typedef {Set<string>} ExportModeHidden */
81
+
62
82
  class ExportMode {
63
83
  /**
64
84
  * @param {ExportModeType} type type of the mode
@@ -72,17 +92,17 @@ class ExportMode {
72
92
  this.items = null;
73
93
 
74
94
  // for "reexport-named-default" | "reexport-fake-namespace-object" | "reexport-namespace-object"
75
- /** @type {string|null} */
95
+ /** @type {string | null} */
76
96
  this.name = null;
77
97
  /** @type {ExportInfo | null} */
78
98
  this.partialNamespaceExportInfo = null;
79
99
 
80
100
  // for "dynamic-reexport":
81
- /** @type {Set<string> | null} */
101
+ /** @type {ExportModeIgnored | null} */
82
102
  this.ignored = null;
83
103
 
84
104
  // for "dynamic-reexport" | "empty-star":
85
- /** @type {Set<string> | null} */
105
+ /** @type {ExportModeHidden | null} */
86
106
  this.hidden = null;
87
107
 
88
108
  // for "missing":
@@ -170,7 +190,7 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
170
190
 
171
191
  const name = dep.name;
172
192
  const runtime = keyToRuntime(runtimeKey);
173
- const parentModule = moduleGraph.getParentModule(dep);
193
+ const parentModule = /** @type {Module} */ (moduleGraph.getParentModule(dep));
174
194
  const exportsInfo = moduleGraph.getExportsInfo(parentModule);
175
195
 
176
196
  if (
@@ -187,7 +207,7 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
187
207
 
188
208
  const importedExportsType = importedModule.getExportsType(
189
209
  moduleGraph,
190
- parentModule.buildMeta.strictHarmonyModule
210
+ /** @type {BuildMeta} */ (parentModule.buildMeta).strictHarmonyModule
191
211
  );
192
212
 
193
213
  const ids = dep.getIds(moduleGraph);
@@ -296,7 +316,8 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
296
316
  exportName,
297
317
  [exportName],
298
318
  exportsInfo.getReadOnlyExportInfo(exportName),
299
- checked.has(exportName),
319
+ /** @type {Set<string>} */
320
+ (checked).has(exportName),
300
321
  false
301
322
  )
302
323
  );
@@ -317,17 +338,23 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
317
338
  return mode;
318
339
  };
319
340
 
341
+ /** @typedef {string[]} Ids */
342
+ /** @typedef {Set<string>} Exports */
343
+ /** @typedef {Set<string>} Checked */
344
+ /** @typedef {Set<string>} Hidden */
345
+ /** @typedef {Set<string>} IgnoredExports */
346
+
320
347
  class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
321
348
  /**
322
349
  * @param {string} request the request string
323
350
  * @param {number} sourceOrder the order in the original source file
324
- * @param {string[]} ids the requested export name of the imported module
351
+ * @param {Ids} ids the requested export name of the imported module
325
352
  * @param {string | null} name the export name of for this module
326
353
  * @param {Set<string>} activeExports other named exports in the module
327
- * @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency>} otherStarExports other star exports in the module before this import
328
- * @param {boolean} strictExportPresence when true, missing exports in the imported module lead to errors instead of warnings
329
- * @param {HarmonyStarExportsList} allStarExports all star exports in the module
330
- * @param {Record<string, any>=} assertions import assertions
354
+ * @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency> | null} otherStarExports other star exports in the module before this import
355
+ * @param {number} exportPresenceMode mode of checking export names
356
+ * @param {HarmonyStarExportsList | null} allStarExports all star exports in the module
357
+ * @param {ImportAttributes=} attributes import attributes
331
358
  */
332
359
  constructor(
333
360
  request,
@@ -336,17 +363,17 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
336
363
  name,
337
364
  activeExports,
338
365
  otherStarExports,
339
- strictExportPresence,
366
+ exportPresenceMode,
340
367
  allStarExports,
341
- assertions
368
+ attributes
342
369
  ) {
343
- super(request, sourceOrder, assertions);
370
+ super(request, sourceOrder, attributes);
344
371
 
345
372
  this.ids = ids;
346
373
  this.name = name;
347
374
  this.activeExports = activeExports;
348
375
  this.otherStarExports = otherStarExports;
349
- this.strictExportPresence = strictExportPresence;
376
+ this.exportPresenceMode = exportPresenceMode;
350
377
  this.allStarExports = allStarExports;
351
378
  }
352
379
 
@@ -378,7 +405,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
378
405
 
379
406
  /**
380
407
  * @param {ModuleGraph} moduleGraph the module graph
381
- * @returns {string[]} the imported id
408
+ * @returns {Ids} the imported id
382
409
  */
383
410
  getIds(moduleGraph) {
384
411
  return moduleGraph.getMeta(this)[idsSymbol] || this.ids;
@@ -386,7 +413,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
386
413
 
387
414
  /**
388
415
  * @param {ModuleGraph} moduleGraph the module graph
389
- * @param {string[]} ids the imported ids
416
+ * @param {Ids} ids the imported ids
390
417
  * @returns {void}
391
418
  */
392
419
  setIds(moduleGraph, ids) {
@@ -411,16 +438,17 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
411
438
  * @param {RuntimeSpec} runtime the runtime
412
439
  * @param {ExportsInfo} exportsInfo exports info about the current module (optional)
413
440
  * @param {Module} importedModule the imported module (optional)
414
- * @returns {{exports?: Set<string>, checked?: Set<string>, ignoredExports: Set<string>, hidden?: Set<string>}} information
441
+ * @returns {{exports?: Exports, checked?: Checked, ignoredExports: IgnoredExports, hidden?: Hidden}} information
415
442
  */
416
443
  getStarReexports(
417
444
  moduleGraph,
418
445
  runtime,
419
- exportsInfo = moduleGraph.getExportsInfo(moduleGraph.getParentModule(this)),
420
- importedModule = moduleGraph.getModule(this)
446
+ exportsInfo = moduleGraph.getExportsInfo(
447
+ /** @type {Module} */ (moduleGraph.getParentModule(this))
448
+ ),
449
+ importedModule = /** @type {Module} */ (moduleGraph.getModule(this))
421
450
  ) {
422
451
  const importedExportsInfo = moduleGraph.getExportsInfo(importedModule);
423
-
424
452
  const noExtraExports =
425
453
  importedExportsInfo.otherExportsInfo.provided === false;
426
454
  const noExtraImports =
@@ -428,7 +456,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
428
456
 
429
457
  const ignoredExports = new Set(["default", ...this.activeExports]);
430
458
 
431
- let hiddenExports = undefined;
459
+ let hiddenExports;
432
460
  const otherStarExports =
433
461
  this._discoverActiveExportsFromOtherStarExports(moduleGraph);
434
462
  if (otherStarExports !== undefined) {
@@ -446,11 +474,11 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
446
474
  };
447
475
  }
448
476
 
449
- /** @type {Set<string>} */
477
+ /** @type {Exports} */
450
478
  const exports = new Set();
451
- /** @type {Set<string>} */
479
+ /** @type {Checked} */
452
480
  const checked = new Set();
453
- /** @type {Set<string>} */
481
+ /** @type {Hidden | undefined} */
454
482
  const hidden = hiddenExports !== undefined ? new Set() : undefined;
455
483
 
456
484
  if (noExtraImports) {
@@ -462,7 +490,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
462
490
  importedExportsInfo.getReadOnlyExportInfo(name);
463
491
  if (importedExportInfo.provided === false) continue;
464
492
  if (hiddenExports !== undefined && hiddenExports.has(name)) {
465
- hidden.add(name);
493
+ /** @type {Set<string>} */
494
+ (hidden).add(name);
466
495
  continue;
467
496
  }
468
497
  exports.add(name);
@@ -477,7 +506,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
477
506
  const exportInfo = exportsInfo.getReadOnlyExportInfo(name);
478
507
  if (exportInfo.getUsed(runtime) === UsageState.Unused) continue;
479
508
  if (hiddenExports !== undefined && hiddenExports.has(name)) {
480
- hidden.add(name);
509
+ /** @type {ExportModeHidden} */
510
+ (hidden).add(name);
481
511
  continue;
482
512
  }
483
513
  exports.add(name);
@@ -491,7 +521,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
491
521
 
492
522
  /**
493
523
  * @param {ModuleGraph} moduleGraph module graph
494
- * @returns {null | false | function(ModuleGraphConnection, RuntimeSpec): ConnectionState} function to determine if the connection is active
524
+ * @returns {null | false | GetConditionFn} function to determine if the connection is active
495
525
  */
496
526
  getCondition(moduleGraph) {
497
527
  return (connection, runtime) => {
@@ -530,7 +560,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
530
560
  case "reexport-named-default": {
531
561
  if (!mode.partialNamespaceExportInfo)
532
562
  return Dependency.EXPORTS_OBJECT_REFERENCED;
533
- /** @type {string[][]} */
563
+ /** @type {ReferencedExports} */
534
564
  const referencedExports = [];
535
565
  processExportInfo(
536
566
  runtime,
@@ -545,7 +575,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
545
575
  case "reexport-fake-namespace-object": {
546
576
  if (!mode.partialNamespaceExportInfo)
547
577
  return Dependency.EXPORTS_OBJECT_REFERENCED;
548
- /** @type {string[][]} */
578
+ /** @type {ReferencedExports} */
549
579
  const referencedExports = [];
550
580
  processExportInfo(
551
581
  runtime,
@@ -561,6 +591,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
561
591
  return Dependency.EXPORTS_OBJECT_REFERENCED;
562
592
 
563
593
  case "normal-reexport": {
594
+ /** @type {ReferencedExports} */
564
595
  const referencedExports = [];
565
596
  for (const { ids, exportInfo, hidden } of mode.items) {
566
597
  if (hidden) continue;
@@ -579,13 +610,13 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
579
610
  * @returns {{ names: string[], namesSlice: number, dependencyIndices: number[], dependencyIndex: number } | undefined} exported names and their origin dependency
580
611
  */
581
612
  _discoverActiveExportsFromOtherStarExports(moduleGraph) {
582
- if (!this.otherStarExports) return undefined;
613
+ if (!this.otherStarExports) return;
583
614
 
584
615
  const i =
585
616
  "length" in this.otherStarExports
586
617
  ? this.otherStarExports.length
587
618
  : countIterable(this.otherStarExports);
588
- if (i === 0) return undefined;
619
+ if (i === 0) return;
589
620
 
590
621
  if (this.allStarExports) {
591
622
  const { names, dependencyIndices } = moduleGraph.cached(
@@ -625,16 +656,21 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
625
656
 
626
657
  switch (mode.type) {
627
658
  case "missing":
628
- return undefined;
659
+ return;
629
660
  case "dynamic-reexport": {
630
- const from = moduleGraph.getConnection(this);
661
+ const from =
662
+ /** @type {ModuleGraphConnection} */
663
+ (moduleGraph.getConnection(this));
631
664
  return {
632
665
  exports: true,
633
666
  from,
634
667
  canMangle: false,
635
668
  excludeExports: mode.hidden
636
- ? combine(mode.ignored, mode.hidden)
637
- : mode.ignored,
669
+ ? combine(
670
+ /** @type {ExportModeIgnored} */ (mode.ignored),
671
+ mode.hidden
672
+ )
673
+ : /** @type {ExportModeIgnored} */ (mode.ignored),
638
674
  hideExports: mode.hidden,
639
675
  dependencies: [from.module]
640
676
  };
@@ -643,11 +679,13 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
643
679
  return {
644
680
  exports: [],
645
681
  hideExports: mode.hidden,
646
- dependencies: [moduleGraph.getModule(this)]
682
+ dependencies: [/** @type {Module} */ (moduleGraph.getModule(this))]
647
683
  };
648
684
  // falls through
649
685
  case "normal-reexport": {
650
- const from = moduleGraph.getConnection(this);
686
+ const from =
687
+ /** @type {ModuleGraphConnection} */
688
+ (moduleGraph.getConnection(this));
651
689
  return {
652
690
  exports: Array.from(mode.items, item => ({
653
691
  name: item.name,
@@ -660,32 +698,34 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
660
698
  };
661
699
  }
662
700
  case "reexport-dynamic-default": {
663
- {
664
- const from = moduleGraph.getConnection(this);
665
- return {
666
- exports: [
667
- {
668
- name: mode.name,
669
- from,
670
- export: ["default"]
671
- }
672
- ],
673
- priority: 1,
674
- dependencies: [from.module]
675
- };
676
- }
701
+ const from =
702
+ /** @type {ModuleGraphConnection} */
703
+ (moduleGraph.getConnection(this));
704
+ return {
705
+ exports: [
706
+ {
707
+ name: /** @type {string} */ (mode.name),
708
+ from,
709
+ export: ["default"]
710
+ }
711
+ ],
712
+ priority: 1,
713
+ dependencies: [from.module]
714
+ };
677
715
  }
678
716
  case "reexport-undefined":
679
717
  return {
680
- exports: [mode.name],
681
- dependencies: [moduleGraph.getModule(this)]
718
+ exports: [/** @type {string} */ (mode.name)],
719
+ dependencies: [/** @type {Module} */ (moduleGraph.getModule(this))]
682
720
  };
683
721
  case "reexport-fake-namespace-object": {
684
- const from = moduleGraph.getConnection(this);
722
+ const from =
723
+ /** @type {ModuleGraphConnection} */
724
+ (moduleGraph.getConnection(this));
685
725
  return {
686
726
  exports: [
687
727
  {
688
- name: mode.name,
728
+ name: /** @type {string} */ (mode.name),
689
729
  from,
690
730
  export: null,
691
731
  exports: [
@@ -703,11 +743,13 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
703
743
  };
704
744
  }
705
745
  case "reexport-namespace-object": {
706
- const from = moduleGraph.getConnection(this);
746
+ const from =
747
+ /** @type {ModuleGraphConnection} */
748
+ (moduleGraph.getConnection(this));
707
749
  return {
708
750
  exports: [
709
751
  {
710
- name: mode.name,
752
+ name: /** @type {string} */ (mode.name),
711
753
  from,
712
754
  export: null
713
755
  }
@@ -717,11 +759,13 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
717
759
  };
718
760
  }
719
761
  case "reexport-named-default": {
720
- const from = moduleGraph.getConnection(this);
762
+ const from =
763
+ /** @type {ModuleGraphConnection} */
764
+ (moduleGraph.getConnection(this));
721
765
  return {
722
766
  exports: [
723
767
  {
724
- name: mode.name,
768
+ name: /** @type {string} */ (mode.name),
725
769
  from,
726
770
  export: ["default"]
727
771
  }
@@ -735,35 +779,42 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
735
779
  }
736
780
  }
737
781
 
782
+ /**
783
+ * @param {ModuleGraph} moduleGraph module graph
784
+ * @returns {number} effective mode
785
+ */
786
+ _getEffectiveExportPresenceLevel(moduleGraph) {
787
+ if (this.exportPresenceMode !== ExportPresenceModes.AUTO)
788
+ return this.exportPresenceMode;
789
+ const module = /** @type {Module} */ (moduleGraph.getParentModule(this));
790
+ return /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule
791
+ ? ExportPresenceModes.ERROR
792
+ : ExportPresenceModes.WARN;
793
+ }
794
+
738
795
  /**
739
796
  * Returns warnings
740
797
  * @param {ModuleGraph} moduleGraph module graph
741
- * @returns {WebpackError[]} warnings
798
+ * @returns {WebpackError[] | null | undefined} warnings
742
799
  */
743
800
  getWarnings(moduleGraph) {
744
- if (
745
- this.strictExportPresence ||
746
- moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule
747
- ) {
748
- return null;
801
+ const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
802
+ if (exportsPresence === ExportPresenceModes.WARN) {
803
+ return this._getErrors(moduleGraph);
749
804
  }
750
-
751
- return this._getErrors(moduleGraph);
805
+ return null;
752
806
  }
753
807
 
754
808
  /**
755
809
  * Returns errors
756
810
  * @param {ModuleGraph} moduleGraph module graph
757
- * @returns {WebpackError[]} errors
811
+ * @returns {WebpackError[] | null | undefined} errors
758
812
  */
759
813
  getErrors(moduleGraph) {
760
- if (
761
- this.strictExportPresence ||
762
- moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule
763
- ) {
814
+ const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
815
+ if (exportsPresence === ExportPresenceModes.ERROR) {
764
816
  return this._getErrors(moduleGraph);
765
817
  }
766
-
767
818
  return null;
768
819
  }
769
820
 
@@ -793,6 +844,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
793
844
  const importedModule = moduleGraph.getModule(this);
794
845
  if (importedModule) {
795
846
  const exportsInfo = moduleGraph.getExportsInfo(importedModule);
847
+ /** @type {Map<string, string[]>} */
796
848
  const conflicts = new Map();
797
849
  for (const exportInfo of exportsInfo.orderedExports) {
798
850
  if (exportInfo.provided !== true) continue;
@@ -809,9 +861,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
809
861
  if (!conflictingDependency) continue;
810
862
  const target = exportInfo.getTerminalBinding(moduleGraph);
811
863
  if (!target) continue;
812
- const conflictingModule = moduleGraph.getModule(
813
- conflictingDependency
814
- );
864
+ const conflictingModule =
865
+ /** @type {Module} */
866
+ (moduleGraph.getModule(conflictingDependency));
815
867
  if (conflictingModule === importedModule) continue;
816
868
  const conflictingExportInfo = moduleGraph.getExportInfo(
817
869
  conflictingModule,
@@ -848,6 +900,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
848
900
  return errors;
849
901
  }
850
902
 
903
+ /**
904
+ * @param {ObjectSerializerContext} context context
905
+ */
851
906
  serialize(context) {
852
907
  const { write, setCircularReference } = context;
853
908
 
@@ -856,12 +911,15 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
856
911
  write(this.name);
857
912
  write(this.activeExports);
858
913
  write(this.otherStarExports);
859
- write(this.strictExportPresence);
914
+ write(this.exportPresenceMode);
860
915
  write(this.allStarExports);
861
916
 
862
917
  super.serialize(context);
863
918
  }
864
919
 
920
+ /**
921
+ * @param {ObjectDeserializerContext} context context
922
+ */
865
923
  deserialize(context) {
866
924
  const { read, setCircularReference } = context;
867
925
 
@@ -870,7 +928,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
870
928
  this.name = read();
871
929
  this.activeExports = read();
872
930
  this.otherStarExports = read();
873
- this.strictExportPresence = read();
931
+ this.exportPresenceMode = read();
874
932
  this.allStarExports = read();
875
933
 
876
934
  super.deserialize(context);
@@ -906,7 +964,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
906
964
  switch (mode.type) {
907
965
  case "reexport-undefined":
908
966
  concatenationScope.registerRawExport(
909
- mode.name,
967
+ /** @type {NonNullable<ExportMode["name"]>} */ (mode.name),
910
968
  "/* reexport non-default export from non-harmony */ undefined"
911
969
  );
912
970
  }
@@ -930,14 +988,14 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
930
988
  }
931
989
 
932
990
  /**
933
- * @param {InitFragment[]} initFragments target array for init fragments
991
+ * @param {InitFragment<GenerateContext>[]} initFragments target array for init fragments
934
992
  * @param {HarmonyExportImportedSpecifierDependency} dep dependency
935
993
  * @param {ExportMode} mode the export mode
936
994
  * @param {Module} module the current module
937
995
  * @param {ModuleGraph} moduleGraph the module graph
938
996
  * @param {RuntimeSpec} runtime the runtime
939
997
  * @param {RuntimeTemplate} runtimeTemplate the runtime template
940
- * @param {Set<string>} runtimeRequirements runtime requirements
998
+ * @param {RuntimeRequirements} runtimeRequirements runtime requirements
941
999
  * @returns {void}
942
1000
  */
943
1001
  _addExportFragments(
@@ -950,7 +1008,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
950
1008
  runtimeTemplate,
951
1009
  runtimeRequirements
952
1010
  ) {
953
- const importedModule = moduleGraph.getModule(dep);
1011
+ const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
954
1012
  const importVar = dep.getImportVar(moduleGraph);
955
1013
 
956
1014
  switch (mode.type) {
@@ -1042,23 +1100,36 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1042
1100
  break;
1043
1101
 
1044
1102
  case "normal-reexport":
1045
- for (const { name, ids, checked, hidden } of mode.items) {
1103
+ for (const {
1104
+ name,
1105
+ ids,
1106
+ checked,
1107
+ hidden
1108
+ } of /** @type {NormalReexportItem[]} */ (mode.items)) {
1046
1109
  if (hidden) continue;
1047
1110
  if (checked) {
1111
+ const connection = moduleGraph.getConnection(dep);
1112
+ const key = `harmony reexport (checked) ${importVar} ${name}`;
1113
+ const runtimeCondition = dep.weak
1114
+ ? false
1115
+ : connection
1116
+ ? filterRuntime(runtime, r => connection.isTargetActive(r))
1117
+ : true;
1048
1118
  initFragments.push(
1049
- new InitFragment(
1050
- "/* harmony reexport (checked) */ " +
1051
- this.getConditionalReexportStatement(
1052
- module,
1053
- name,
1054
- importVar,
1055
- ids,
1056
- runtimeRequirements
1057
- ),
1119
+ new ConditionalInitFragment(
1120
+ `/* harmony reexport (checked) */ ${this.getConditionalReexportStatement(
1121
+ module,
1122
+ name,
1123
+ importVar,
1124
+ ids,
1125
+ runtimeRequirements
1126
+ )}`,
1058
1127
  moduleGraph.isAsync(importedModule)
1059
1128
  ? InitFragment.STAGE_ASYNC_HARMONY_IMPORTS
1060
1129
  : InitFragment.STAGE_HARMONY_IMPORTS,
1061
- dep.sourceOrder
1130
+ dep.sourceOrder,
1131
+ key,
1132
+ runtimeCondition
1062
1133
  )
1063
1134
  );
1064
1135
  } else {
@@ -1080,8 +1151,12 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1080
1151
 
1081
1152
  case "dynamic-reexport": {
1082
1153
  const ignored = mode.hidden
1083
- ? combine(mode.ignored, mode.hidden)
1084
- : mode.ignored;
1154
+ ? combine(
1155
+ /** @type {ExportModeIgnored} */
1156
+ (mode.ignored),
1157
+ mode.hidden
1158
+ )
1159
+ : /** @type {ExportModeIgnored} */ (mode.ignored);
1085
1160
  const modern =
1086
1161
  runtimeTemplate.supportsConst() &&
1087
1162
  runtimeTemplate.supportsArrowFunction();
@@ -1094,22 +1169,19 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1094
1169
  // Filter out exports which are defined by other exports
1095
1170
  // and filter out default export because it cannot be reexported with *
1096
1171
  if (ignored.size > 1) {
1097
- content +=
1098
- "if(" +
1099
- JSON.stringify(Array.from(ignored)) +
1100
- ".indexOf(__WEBPACK_IMPORT_KEY__) < 0) ";
1172
+ content += `if(${JSON.stringify(
1173
+ Array.from(ignored)
1174
+ )}.indexOf(__WEBPACK_IMPORT_KEY__) < 0) `;
1101
1175
  } else if (ignored.size === 1) {
1102
1176
  content += `if(__WEBPACK_IMPORT_KEY__ !== ${JSON.stringify(
1103
1177
  first(ignored)
1104
1178
  )}) `;
1105
1179
  }
1106
1180
 
1107
- content += `__WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = `;
1108
- if (modern) {
1109
- content += `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`;
1110
- } else {
1111
- content += `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
1112
- }
1181
+ content += "__WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = ";
1182
+ content += modern
1183
+ ? `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`
1184
+ : `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
1113
1185
 
1114
1186
  runtimeRequirements.add(RuntimeGlobals.exports);
1115
1187
  runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
@@ -1132,6 +1204,15 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1132
1204
  }
1133
1205
  }
1134
1206
 
1207
+ /**
1208
+ * @param {Module} module the current module
1209
+ * @param {string} comment comment
1210
+ * @param {UsedName} key key
1211
+ * @param {string} name name
1212
+ * @param {string | string[] | null | false} valueKey value key
1213
+ * @param {RuntimeRequirements} runtimeRequirements runtime requirements
1214
+ * @returns {HarmonyExportInitFragment} harmony export init fragment
1215
+ */
1135
1216
  getReexportFragment(
1136
1217
  module,
1137
1218
  comment,
@@ -1151,6 +1232,14 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1151
1232
  return new HarmonyExportInitFragment(module.exportsArgument, map);
1152
1233
  }
1153
1234
 
1235
+ /**
1236
+ * @param {Module} module module
1237
+ * @param {string | string[] | false} key key
1238
+ * @param {string} name name
1239
+ * @param {number} fakeType fake type
1240
+ * @param {RuntimeRequirements} runtimeRequirements runtime requirements
1241
+ * @returns {[InitFragment<GenerateContext>, HarmonyExportInitFragment]} init fragments
1242
+ */
1154
1243
  getReexportFakeNamespaceObjectFragments(
1155
1244
  module,
1156
1245
  key,
@@ -1181,6 +1270,14 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1181
1270
  ];
1182
1271
  }
1183
1272
 
1273
+ /**
1274
+ * @param {Module} module module
1275
+ * @param {string} key key
1276
+ * @param {string} name name
1277
+ * @param {string | string[] | false} valueKey value key
1278
+ * @param {RuntimeRequirements} runtimeRequirements runtime requirements
1279
+ * @returns {string} result
1280
+ */
1184
1281
  getConditionalReexportStatement(
1185
1282
  module,
1186
1283
  key,
@@ -1203,11 +1300,16 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1203
1300
  valueKey[0]
1204
1301
  )})) ${
1205
1302
  RuntimeGlobals.definePropertyGetters
1206
- }(${exportsName}, { ${JSON.stringify(
1303
+ }(${exportsName}, { ${propertyName(
1207
1304
  key
1208
1305
  )}: function() { return ${returnValue}; } });\n`;
1209
1306
  }
1210
1307
 
1308
+ /**
1309
+ * @param {string} name name
1310
+ * @param {null | false | string | string[]} valueKey value key
1311
+ * @returns {string | undefined} value
1312
+ */
1211
1313
  getReturnValue(name, valueKey) {
1212
1314
  if (valueKey === null) {
1213
1315
  return `${name}_default.a`;
@@ -1243,11 +1345,17 @@ class HarmonyStarExportsList {
1243
1345
  return this.dependencies.slice();
1244
1346
  }
1245
1347
 
1348
+ /**
1349
+ * @param {ObjectSerializerContext} context context
1350
+ */
1246
1351
  serialize({ write, setCircularReference }) {
1247
1352
  setCircularReference(this);
1248
1353
  write(this.dependencies);
1249
1354
  }
1250
1355
 
1356
+ /**
1357
+ * @param {ObjectDeserializerContext} context context
1358
+ */
1251
1359
  deserialize({ read, setCircularReference }) {
1252
1360
  setCircularReference(this);
1253
1361
  this.dependencies = read();