webpack 5.97.1 → 5.104.1

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 (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -12,35 +12,41 @@ const HarmonyLinkingError = require("../HarmonyLinkingError");
12
12
  const InitFragment = require("../InitFragment");
13
13
  const RuntimeGlobals = require("../RuntimeGlobals");
14
14
  const Template = require("../Template");
15
+ const {
16
+ getMakeDeferredNamespaceModeFromExportsType
17
+ } = require("../runtime/MakeDeferredNamespaceObjectRuntime");
15
18
  const { countIterable } = require("../util/IterableHelpers");
16
- const { first, combine } = require("../util/SetHelpers");
19
+ const { combine, first } = require("../util/SetHelpers");
17
20
  const makeSerializable = require("../util/makeSerializable");
18
21
  const propertyAccess = require("../util/propertyAccess");
19
22
  const { propertyName } = require("../util/propertyName");
20
23
  const {
24
+ filterRuntime,
21
25
  getRuntimeKey,
22
- keyToRuntime,
23
- filterRuntime
26
+ keyToRuntime
24
27
  } = require("../util/runtime");
25
28
  const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
26
29
  const HarmonyImportDependency = require("./HarmonyImportDependency");
30
+ const { ImportPhaseUtils } = require("./ImportPhase");
27
31
  const processExportInfo = require("./processExportInfo");
28
32
 
29
33
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
30
34
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
31
35
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
32
36
  /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
33
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
37
+ /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
38
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
34
39
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
35
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
36
40
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
37
41
  /** @typedef {import("../ExportsInfo")} ExportsInfo */
38
42
  /** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
43
+ /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
39
44
  /** @typedef {import("../ExportsInfo").UsedName} UsedName */
40
45
  /** @typedef {import("../Generator").GenerateContext} GenerateContext */
41
46
  /** @typedef {import("../Module")} Module */
42
47
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
43
48
  /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
49
+ /** @typedef {import("../Module").ExportsType} ExportsType */
44
50
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
45
51
  /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
46
52
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
@@ -49,11 +55,12 @@ const processExportInfo = require("./processExportInfo");
49
55
  /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
50
56
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
51
57
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
52
- /** @typedef {import("../util/Hash")} Hash */
53
58
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
54
- /** @typedef {import("./processExportInfo").ReferencedExports} ReferencedExports */
59
+ /** @typedef {import("./HarmonyImportDependency").Ids} Ids */
60
+ /** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
61
+ /** @typedef {import("../dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
55
62
 
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 */
63
+ /** @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 */
57
64
 
58
65
  const { ExportPresenceModes } = HarmonyImportDependency;
59
66
 
@@ -62,7 +69,7 @@ const idsSymbol = Symbol("HarmonyExportImportedSpecifierDependency.ids");
62
69
  class NormalReexportItem {
63
70
  /**
64
71
  * @param {string} name export name
65
- * @param {string[]} ids reexported ids from other module
72
+ * @param {Ids} ids reexported ids from other module
66
73
  * @param {ExportInfo} exportInfo export info from other module
67
74
  * @param {boolean} checked true, if it should be checked at runtime if this export exists
68
75
  * @param {boolean} hidden true, if it is hidden behind another active export in the same module
@@ -115,23 +122,26 @@ class ExportMode {
115
122
  }
116
123
  }
117
124
 
125
+ /** @typedef {number[]} DependencyIndices */
126
+
118
127
  /**
119
128
  * @param {ModuleGraph} moduleGraph module graph
120
- * @param {TODO} dependencies dependencies
121
- * @param {TODO=} additionalDependency additional dependency
122
- * @returns {TODO} result
129
+ * @param {HarmonyExportImportedSpecifierDependency[]} dependencies dependencies
130
+ * @param {HarmonyExportImportedSpecifierDependency=} additionalDependency additional dependency
131
+ * @returns {{ names: ExportInfoName[], dependencyIndices: DependencyIndices }} result
123
132
  */
124
133
  const determineExportAssignments = (
125
134
  moduleGraph,
126
135
  dependencies,
127
136
  additionalDependency
128
137
  ) => {
138
+ /** @type {Set<ExportInfoName>} */
129
139
  const names = new Set();
130
- /** @type {number[]} */
140
+ /** @type {DependencyIndices} */
131
141
  const dependencyIndices = [];
132
142
 
133
143
  if (additionalDependency) {
134
- dependencies = dependencies.concat(additionalDependency);
144
+ dependencies = [...dependencies, additionalDependency];
135
145
  }
136
146
 
137
147
  for (const dep of dependencies) {
@@ -154,9 +164,17 @@ const determineExportAssignments = (
154
164
  }
155
165
  dependencyIndices.push(names.size);
156
166
 
157
- return { names: Array.from(names), dependencyIndices };
167
+ return { names: [...names], dependencyIndices };
158
168
  };
159
169
 
170
+ /**
171
+ * @param {object} options options
172
+ * @param {ExportInfoName[]} options.names names
173
+ * @param {DependencyIndices} options.dependencyIndices dependency indices
174
+ * @param {string} name name
175
+ * @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency>} dependencies dependencies
176
+ * @returns {HarmonyExportImportedSpecifierDependency | undefined} found dependency or nothing
177
+ */
160
178
  const findDependencyForName = (
161
179
  { names, dependencyIndices },
162
180
  name,
@@ -214,7 +232,8 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
214
232
 
215
233
  const importedExportsType = importedModule.getExportsType(
216
234
  moduleGraph,
217
- /** @type {BuildMeta} */ (parentModule.buildMeta).strictHarmonyModule
235
+ /** @type {BuildMeta} */
236
+ (parentModule.buildMeta).strictHarmonyModule
218
237
  );
219
238
 
220
239
  const ids = dep.getIds(moduleGraph);
@@ -289,7 +308,6 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
289
308
  }
290
309
 
291
310
  // Star reexporting
292
-
293
311
  const { ignoredExports, exports, checked, hidden } = dep.getStarReexports(
294
312
  moduleGraph,
295
313
  runtime,
@@ -318,12 +336,12 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
318
336
 
319
337
  mode.items = Array.from(
320
338
  exports,
321
- exportName =>
339
+ (exportName) =>
322
340
  new NormalReexportItem(
323
341
  exportName,
324
342
  [exportName],
325
343
  exportsInfo.getReadOnlyExportInfo(exportName),
326
- /** @type {Set<string>} */
344
+ /** @type {Checked} */
327
345
  (checked).has(exportName),
328
346
  false
329
347
  )
@@ -345,7 +363,6 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
345
363
  return mode;
346
364
  };
347
365
 
348
- /** @typedef {string[]} Ids */
349
366
  /** @typedef {Set<string>} Exports */
350
367
  /** @typedef {Set<string>} Checked */
351
368
  /** @typedef {Set<string>} Hidden */
@@ -358,9 +375,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
358
375
  * @param {Ids} ids the requested export name of the imported module
359
376
  * @param {string | null} name the export name of for this module
360
377
  * @param {Set<string>} activeExports other named exports in the module
361
- * @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency> | null} otherStarExports other star exports in the module before this import
362
- * @param {number} exportPresenceMode mode of checking export names
378
+ * @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | null} otherStarExports other star exports in the module before this import
379
+ * @param {ExportPresenceMode} exportPresenceMode mode of checking export names
363
380
  * @param {HarmonyStarExportsList | null} allStarExports all star exports in the module
381
+ * @param {ImportPhaseType} phase import phase
364
382
  * @param {ImportAttributes=} attributes import attributes
365
383
  */
366
384
  constructor(
@@ -372,9 +390,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
372
390
  otherStarExports,
373
391
  exportPresenceMode,
374
392
  allStarExports,
393
+ phase,
375
394
  attributes
376
395
  ) {
377
- super(request, sourceOrder, attributes);
396
+ super(request, sourceOrder, phase, attributes);
378
397
 
379
398
  this.ids = ids;
380
399
  this.name = name;
@@ -424,8 +443,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
424
443
  * @returns {void}
425
444
  */
426
445
  setIds(moduleGraph, ids) {
427
- /** @type {TODO} */
428
- (moduleGraph.getMeta(this))[idsSymbol] = ids;
446
+ moduleGraph.getMeta(this)[idsSymbol] = ids;
429
447
  }
430
448
 
431
449
  /**
@@ -498,7 +516,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
498
516
  importedExportsInfo.getReadOnlyExportInfo(name);
499
517
  if (importedExportInfo.provided === false) continue;
500
518
  if (hiddenExports !== undefined && hiddenExports.has(name)) {
501
- /** @type {Set<string>} */
519
+ /** @type {Hidden} */
502
520
  (hidden).add(name);
503
521
  continue;
504
522
  }
@@ -550,7 +568,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
550
568
  * Returns list of exports referenced by this dependency
551
569
  * @param {ModuleGraph} moduleGraph module graph
552
570
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
553
- * @returns {(string[] | ReferencedExport)[]} referenced exports
571
+ * @returns {ReferencedExports} referenced exports
554
572
  */
555
573
  getReferencedExports(moduleGraph, runtime) {
556
574
  const mode = this.getMode(moduleGraph, runtime);
@@ -566,9 +584,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
566
584
  return Dependency.EXPORTS_OBJECT_REFERENCED;
567
585
 
568
586
  case "reexport-named-default": {
569
- if (!mode.partialNamespaceExportInfo)
587
+ if (!mode.partialNamespaceExportInfo) {
570
588
  return Dependency.EXPORTS_OBJECT_REFERENCED;
571
- /** @type {ReferencedExports} */
589
+ }
590
+ /** @type {RawReferencedExports} */
572
591
  const referencedExports = [];
573
592
  processExportInfo(
574
593
  runtime,
@@ -581,9 +600,10 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
581
600
 
582
601
  case "reexport-namespace-object":
583
602
  case "reexport-fake-namespace-object": {
584
- if (!mode.partialNamespaceExportInfo)
603
+ if (!mode.partialNamespaceExportInfo) {
585
604
  return Dependency.EXPORTS_OBJECT_REFERENCED;
586
- /** @type {ReferencedExports} */
605
+ }
606
+ /** @type {RawReferencedExports} */
587
607
  const referencedExports = [];
588
608
  processExportInfo(
589
609
  runtime,
@@ -599,7 +619,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
599
619
  return Dependency.EXPORTS_OBJECT_REFERENCED;
600
620
 
601
621
  case "normal-reexport": {
602
- /** @type {ReferencedExports} */
622
+ /** @type {RawReferencedExports} */
603
623
  const referencedExports = [];
604
624
  for (const {
605
625
  ids,
@@ -619,7 +639,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
619
639
 
620
640
  /**
621
641
  * @param {ModuleGraph} moduleGraph the module graph
622
- * @returns {{ names: string[], namesSlice: number, dependencyIndices: number[], dependencyIndex: number } | undefined} exported names and their origin dependency
642
+ * @returns {{ names: ExportInfoName[], namesSlice: number, dependencyIndices: DependencyIndices, dependencyIndex: number } | undefined} exported names and their origin dependency
623
643
  */
624
644
  _discoverActiveExportsFromOtherStarExports(moduleGraph) {
625
645
  if (!this.otherStarExports) return;
@@ -646,7 +666,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
646
666
 
647
667
  const { names, dependencyIndices } = moduleGraph.cached(
648
668
  determineExportAssignments,
649
- this.otherStarExports,
669
+ /** @type {HarmonyExportImportedSpecifierDependency[]} */
670
+ (this.otherStarExports),
650
671
  this
651
672
  );
652
673
 
@@ -701,7 +722,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
701
722
  return {
702
723
  exports: Array.from(
703
724
  /** @type {NormalReexportItem[]} */ (mode.items),
704
- item => ({
725
+ (item) => ({
705
726
  name: item.name,
706
727
  from,
707
728
  export: item.ids,
@@ -796,11 +817,12 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
796
817
 
797
818
  /**
798
819
  * @param {ModuleGraph} moduleGraph module graph
799
- * @returns {number} effective mode
820
+ * @returns {ExportPresenceMode} effective mode
800
821
  */
801
822
  _getEffectiveExportPresenceLevel(moduleGraph) {
802
- if (this.exportPresenceMode !== ExportPresenceModes.AUTO)
823
+ if (this.exportPresenceMode !== ExportPresenceModes.AUTO) {
803
824
  return this.exportPresenceMode;
825
+ }
804
826
  const module = /** @type {Module} */ (moduleGraph.getParentModule(this));
805
827
  return /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule
806
828
  ? ExportPresenceModes.ERROR
@@ -859,7 +881,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
859
881
  const importedModule = moduleGraph.getModule(this);
860
882
  if (importedModule) {
861
883
  const exportsInfo = moduleGraph.getExportsInfo(importedModule);
862
- /** @type {Map<string, string[]>} */
884
+ /** @type {Map<string, ExportInfoName[]>} */
863
885
  const conflicts = new Map();
864
886
  for (const exportInfo of exportsInfo.orderedExports) {
865
887
  if (exportInfo.provided !== true) continue;
@@ -871,7 +893,11 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
871
893
  exportInfo.name,
872
894
  this.allStarExports
873
895
  ? this.allStarExports.dependencies
874
- : [...this.otherStarExports, this]
896
+ : [
897
+ .../** @type {ReadonlyArray<HarmonyExportImportedSpecifierDependency>} */
898
+ (this.otherStarExports),
899
+ this
900
+ ]
875
901
  );
876
902
  if (!conflictingDependency) continue;
877
903
  const target = exportInfo.getTerminalBinding(moduleGraph);
@@ -904,7 +930,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
904
930
  }' contains conflicting star exports for the ${
905
931
  exports.length > 1 ? "names" : "name"
906
932
  } ${exports
907
- .map(e => `'${e}'`)
933
+ .map((e) => `'${e}'`)
908
934
  .join(", ")} with the previous requested module '${request}'`
909
935
  )
910
936
  );
@@ -955,8 +981,6 @@ makeSerializable(
955
981
  "webpack/lib/dependencies/HarmonyExportImportedSpecifierDependency"
956
982
  );
957
983
 
958
- module.exports = HarmonyExportImportedSpecifierDependency;
959
-
960
984
  HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedSpecifierDependencyTemplate extends (
961
985
  HarmonyImportDependency.Template
962
986
  ) {
@@ -995,6 +1019,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
995
1019
  mode,
996
1020
  templateContext.module,
997
1021
  moduleGraph,
1022
+ templateContext.chunkGraph,
998
1023
  runtime,
999
1024
  templateContext.runtimeTemplate,
1000
1025
  templateContext.runtimeRequirements
@@ -1008,6 +1033,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1008
1033
  * @param {ExportMode} mode the export mode
1009
1034
  * @param {Module} module the current module
1010
1035
  * @param {ModuleGraph} moduleGraph the module graph
1036
+ * @param {ChunkGraph} chunkGraph the chunk graph
1011
1037
  * @param {RuntimeSpec} runtime the runtime
1012
1038
  * @param {RuntimeTemplate} runtimeTemplate the runtime template
1013
1039
  * @param {RuntimeRequirements} runtimeRequirements runtime requirements
@@ -1019,13 +1045,39 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1019
1045
  mode,
1020
1046
  module,
1021
1047
  moduleGraph,
1048
+ chunkGraph,
1022
1049
  runtime,
1023
1050
  runtimeTemplate,
1024
1051
  runtimeRequirements
1025
1052
  ) {
1026
1053
  const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
1027
1054
  const importVar = dep.getImportVar(moduleGraph);
1028
-
1055
+ const isDeferred =
1056
+ ImportPhaseUtils.isDefer(dep.phase) &&
1057
+ !(/** @type {BuildMeta} */ (importedModule.buildMeta).async);
1058
+
1059
+ if (
1060
+ (mode.type === "reexport-namespace-object" ||
1061
+ mode.type === "reexport-fake-namespace-object") &&
1062
+ isDeferred
1063
+ ) {
1064
+ initFragments.push(
1065
+ ...this.getReexportDeferredNamespaceObjectFragments(
1066
+ importedModule,
1067
+ chunkGraph,
1068
+ moduleGraph
1069
+ .getExportsInfo(module)
1070
+ .getUsedName(mode.name ? mode.name : [], runtime),
1071
+ importVar,
1072
+ importedModule.getExportsType(
1073
+ moduleGraph,
1074
+ module.buildMeta && module.buildMeta.strictHarmonyModule
1075
+ ),
1076
+ runtimeRequirements
1077
+ )
1078
+ );
1079
+ return;
1080
+ }
1029
1081
  switch (mode.type) {
1030
1082
  case "missing":
1031
1083
  case "empty-star":
@@ -1138,7 +1190,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1138
1190
  const runtimeCondition = dep.weak
1139
1191
  ? false
1140
1192
  : connection
1141
- ? filterRuntime(runtime, r => connection.isTargetActive(r))
1193
+ ? filterRuntime(runtime, (r) => connection.isTargetActive(r))
1142
1194
  : true;
1143
1195
  initFragments.push(
1144
1196
  new ConditionalInitFragment(
@@ -1152,7 +1204,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1152
1204
  moduleGraph.isAsync(importedModule)
1153
1205
  ? InitFragment.STAGE_ASYNC_HARMONY_IMPORTS
1154
1206
  : InitFragment.STAGE_HARMONY_IMPORTS,
1155
- dep.sourceOrder,
1207
+ /** @type {number} */ (dep.sourceOrder),
1156
1208
  key,
1157
1209
  runtimeCondition
1158
1210
  )
@@ -1182,21 +1234,16 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1182
1234
  mode.hidden
1183
1235
  )
1184
1236
  : /** @type {ExportModeIgnored} */ (mode.ignored);
1185
- const modern =
1186
- runtimeTemplate.supportsConst() &&
1187
- runtimeTemplate.supportsArrowFunction();
1188
1237
  let content =
1189
1238
  "/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n" +
1190
- `/* harmony reexport (unknown) */ for(${
1191
- modern ? "const" : "var"
1192
- } __WEBPACK_IMPORT_KEY__ in ${importVar}) `;
1239
+ `/* harmony reexport (unknown) */ for(${runtimeTemplate.renderConst()} __WEBPACK_IMPORT_KEY__ in ${importVar}) `;
1193
1240
 
1194
1241
  // Filter out exports which are defined by other exports
1195
1242
  // and filter out default export because it cannot be reexported with *
1196
1243
  if (ignored.size > 1) {
1197
- content += `if(${JSON.stringify(
1198
- Array.from(ignored)
1199
- )}.indexOf(__WEBPACK_IMPORT_KEY__) < 0) `;
1244
+ content += `if(${JSON.stringify([
1245
+ ...ignored
1246
+ ])}.indexOf(__WEBPACK_IMPORT_KEY__) < 0) `;
1200
1247
  } else if (ignored.size === 1) {
1201
1248
  content += `if(__WEBPACK_IMPORT_KEY__ !== ${JSON.stringify(
1202
1249
  first(ignored)
@@ -1204,9 +1251,11 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1204
1251
  }
1205
1252
 
1206
1253
  content += "__WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = ";
1207
- content += modern
1208
- ? `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`
1209
- : `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
1254
+ content +=
1255
+ runtimeTemplate.supportsArrowFunction() &&
1256
+ runtimeTemplate.supportsConst()
1257
+ ? `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`
1258
+ : `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
1210
1259
 
1211
1260
  runtimeRequirements.add(RuntimeGlobals.exports);
1212
1261
  runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
@@ -1218,7 +1267,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1218
1267
  moduleGraph.isAsync(importedModule)
1219
1268
  ? InitFragment.STAGE_ASYNC_HARMONY_IMPORTS
1220
1269
  : InitFragment.STAGE_HARMONY_IMPORTS,
1221
- dep.sourceOrder
1270
+ /** @type {number} */ (dep.sourceOrder)
1222
1271
  )
1223
1272
  );
1224
1273
  break;
@@ -1234,7 +1283,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1234
1283
  * @param {string} comment comment
1235
1284
  * @param {UsedName} key key
1236
1285
  * @param {string} name name
1237
- * @param {string | string[] | null | false} valueKey value key
1286
+ * @param {UsedName | null} valueKey value key
1238
1287
  * @param {RuntimeRequirements} runtimeRequirements runtime requirements
1239
1288
  * @returns {HarmonyExportInitFragment} harmony export init fragment
1240
1289
  */
@@ -1259,7 +1308,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1259
1308
 
1260
1309
  /**
1261
1310
  * @param {Module} module module
1262
- * @param {string | string[] | false} key key
1311
+ * @param {UsedName} key key
1263
1312
  * @param {string} name name
1264
1313
  * @param {number} fakeType fake type
1265
1314
  * @param {RuntimeRequirements} runtimeRequirements runtime requirements
@@ -1295,6 +1344,46 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1295
1344
  ];
1296
1345
  }
1297
1346
 
1347
+ /**
1348
+ * @param {Module} module module
1349
+ * @param {ChunkGraph} chunkGraph chunkGraph
1350
+ * @param {UsedName} key key
1351
+ * @param {string} name name
1352
+ * @param {ExportsType} exportsType exportsType
1353
+ * @param {RuntimeRequirements} runtimeRequirements runtimeRequirements
1354
+ * @returns {InitFragment<GenerateContext>[]} fragments
1355
+ */
1356
+ getReexportDeferredNamespaceObjectFragments(
1357
+ module,
1358
+ chunkGraph,
1359
+ key,
1360
+ name,
1361
+ exportsType,
1362
+ runtimeRequirements
1363
+ ) {
1364
+ runtimeRequirements.add(RuntimeGlobals.exports);
1365
+ runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
1366
+ runtimeRequirements.add(RuntimeGlobals.makeDeferredNamespaceObject);
1367
+
1368
+ const map = new Map();
1369
+ const moduleId = JSON.stringify(chunkGraph.getModuleId(module));
1370
+ const mode = getMakeDeferredNamespaceModeFromExportsType(exportsType);
1371
+ map.set(
1372
+ key,
1373
+ `/* reexport deferred namespace object */ ${name}_deferred_namespace_cache || (${name}_deferred_namespace_cache = ${RuntimeGlobals.makeDeferredNamespaceObject}(${moduleId}, ${mode}))`
1374
+ );
1375
+
1376
+ return [
1377
+ new InitFragment(
1378
+ `var ${name}_deferred_namespace_cache;\n`,
1379
+ InitFragment.STAGE_CONSTANTS,
1380
+ -1,
1381
+ `${name}_deferred_namespace_cache`
1382
+ ),
1383
+ new HarmonyExportInitFragment(module.exportsArgument, map)
1384
+ ];
1385
+ }
1386
+
1298
1387
  /**
1299
1388
  * @param {Module} module module
1300
1389
  * @param {string} key key
@@ -1367,7 +1456,7 @@ class HarmonyStarExportsList {
1367
1456
  }
1368
1457
 
1369
1458
  slice() {
1370
- return this.dependencies.slice();
1459
+ return [...this.dependencies];
1371
1460
  }
1372
1461
 
1373
1462
  /**
@@ -1393,4 +1482,6 @@ makeSerializable(
1393
1482
  "HarmonyStarExportsList"
1394
1483
  );
1395
1484
 
1485
+ module.exports = HarmonyExportImportedSpecifierDependency;
1396
1486
  module.exports.HarmonyStarExportsList = HarmonyStarExportsList;
1487
+ module.exports.idsSymbol = idsSymbol;
@@ -17,7 +17,7 @@ const { propertyName } = require("../util/propertyName");
17
17
  * @param {Iterable<string>} iterable iterable strings
18
18
  * @returns {string} result
19
19
  */
20
- const joinIterableWithComma = iterable => {
20
+ const joinIterableWithComma = (iterable) => {
21
21
  // This is more performant than Array.from().join(", ")
22
22
  // as it doesn't create an array
23
23
  let str = "";
@@ -154,7 +154,7 @@ class HarmonyExportInitFragment extends InitFragment {
154
154
  ? `/* unused harmony export ${first(this.unusedExports)} */\n`
155
155
  : "";
156
156
  const definitions = [];
157
- const orderedExportMap = Array.from(this.exportMap).sort(([a], [b]) =>
157
+ const orderedExportMap = [...this.exportMap].sort(([a], [b]) =>
158
158
  a < b ? -1 : 1
159
159
  );
160
160
  for (const [key, value] of orderedExportMap) {
@@ -20,8 +20,8 @@ const NullDependency = require("./NullDependency");
20
20
 
21
21
  class HarmonyExportSpecifierDependency extends NullDependency {
22
22
  /**
23
- * @param {TODO} id id
24
- * @param {TODO} name name
23
+ * @param {string} id the id
24
+ * @param {string} name the name
25
25
  */
26
26
  constructor(id, name) {
27
27
  super();
@@ -9,13 +9,13 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
 
10
10
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
11
11
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
12
- /** @typedef {import("../Parser").ParserState} ParserState */
12
+ /** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
13
13
 
14
- /** @type {WeakMap<ParserState, boolean>} */
14
+ /** @type {WeakMap<JavascriptParserState, boolean>} */
15
15
  const parserStateExportsState = new WeakMap();
16
16
 
17
17
  /**
18
- * @param {ParserState} parserState parser state
18
+ * @param {JavascriptParserState} parserState parser state
19
19
  * @param {boolean} isStrictHarmony strict harmony mode should be enabled
20
20
  * @returns {void}
21
21
  */
@@ -37,10 +37,10 @@ module.exports.enable = (parserState, isStrictHarmony) => {
37
37
  };
38
38
 
39
39
  /**
40
- * @param {ParserState} parserState parser state
40
+ * @param {JavascriptParserState} parserState parser state
41
41
  * @returns {boolean} true, when enabled
42
42
  */
43
- module.exports.isEnabled = parserState => {
43
+ module.exports.isEnabled = (parserState) => {
44
44
  const value = parserStateExportsState.get(parserState);
45
45
  return value === true;
46
46
  };