@depup/webpack 5.109.2-depup.0 → 5.110.1-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +26 -17
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +117 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +50 -13
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +101 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +32 -47
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +141 -85
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +332 -169
  89. package/lib/RuntimeTemplate.js +2792 -352
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +261 -79
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +36 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +57 -24
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +168 -88
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5324 -0
  160. package/lib/css/syntax.js +9579 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +27 -19
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +2 -2
  230. package/lib/dependencies/ImportDependency.js +24 -20
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +49 -35
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  290. package/lib/dependencies/WorkerDependency.js +28 -22
  291. package/lib/dependencies/WorkletDependency.js +15 -14
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/processExportInfo.js +5 -5
  294. package/lib/dll/DelegatedModule.js +34 -22
  295. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  296. package/lib/dll/DelegatedPlugin.js +2 -2
  297. package/lib/dll/DllEntryPlugin.js +2 -2
  298. package/lib/dll/DllModule.js +22 -15
  299. package/lib/dll/DllModuleFactory.js +7 -3
  300. package/lib/dll/DllPlugin.js +7 -5
  301. package/lib/dll/DllReferencePlugin.js +10 -7
  302. package/lib/dll/LibManifestPlugin.js +5 -5
  303. package/lib/electron/ElectronTargetPlugin.js +53 -49
  304. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  305. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  306. package/lib/errors/BroadContextsWarning.js +43 -0
  307. package/lib/errors/BuildCycleError.js +1 -1
  308. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  309. package/lib/errors/ChunkRenderError.js +1 -1
  310. package/lib/errors/CircularDependenciesWarning.js +38 -0
  311. package/lib/errors/CodeGenerationError.js +1 -1
  312. package/lib/errors/CommentCompilationWarning.js +1 -1
  313. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  314. package/lib/errors/DuplicateModulesWarning.js +45 -0
  315. package/lib/errors/DynamicExportsWarning.js +30 -0
  316. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  317. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  318. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  319. package/lib/errors/EvalUsageWarning.js +28 -0
  320. package/lib/errors/HookWebpackError.js +5 -5
  321. package/lib/errors/HotspotsWarning.js +57 -0
  322. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  323. package/lib/errors/InlinedAssetsWarning.js +36 -0
  324. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  325. package/lib/errors/LargeModulesWarning.js +45 -0
  326. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  327. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  328. package/lib/errors/MixedExportsWarning.js +41 -0
  329. package/lib/errors/ModuleDependencyError.js +13 -16
  330. package/lib/errors/ModuleDependencyWarning.js +5 -15
  331. package/lib/errors/ModuleHashingError.js +1 -1
  332. package/lib/errors/ModuleNotFoundError.js +2 -2
  333. package/lib/errors/ModuleParseError.js +1 -2
  334. package/lib/errors/ModuleRestoreError.js +1 -1
  335. package/lib/errors/ModuleStoreError.js +1 -1
  336. package/lib/errors/NodeStuffInWebError.js +1 -1
  337. package/lib/errors/OsDependentRuleWarning.js +31 -0
  338. package/lib/errors/PureAnnotationsWarning.js +36 -0
  339. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  340. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  341. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  342. package/lib/errors/TinyChunksWarning.js +40 -0
  343. package/lib/errors/TopLevelThisWarning.js +34 -0
  344. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  345. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  346. package/lib/errors/UnusedAliasesWarning.js +29 -0
  347. package/lib/errors/UnusedDefinesWarning.js +29 -0
  348. package/lib/errors/UnusedExternalsWarning.js +29 -0
  349. package/lib/errors/UnusedReexportsWarning.js +42 -0
  350. package/lib/errors/UnusedRuleWarning.js +29 -0
  351. package/lib/errors/WebpackError.js +9 -5
  352. package/lib/errors/deriveStackFromNestedError.js +90 -0
  353. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  354. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  355. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  356. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
  357. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  358. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  359. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  360. package/lib/hmr/lazyCompilationBackend.js +9 -6
  361. package/lib/hmr/parserHooks.js +56 -0
  362. package/lib/html/HtmlGenerator.js +277 -77
  363. package/lib/html/HtmlModule.js +7 -3
  364. package/lib/html/HtmlModulesPlugin.js +282 -162
  365. package/lib/html/HtmlParser.js +31 -86
  366. package/lib/html/data.js +1928 -0
  367. package/lib/html/htmlMinify.js +288 -0
  368. package/lib/html/syntax.js +5557 -1155
  369. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  370. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  371. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  372. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  373. package/lib/ids/IdHelpers.js +7 -8
  374. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  375. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  376. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  377. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  378. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  379. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  380. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  381. package/lib/index.js +10 -0
  382. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  383. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  384. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  385. package/lib/javascript/ChunkHelpers.js +1 -1
  386. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  387. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  388. package/lib/javascript/JavascriptGenerator.js +65 -165
  389. package/lib/javascript/JavascriptModule.js +9 -3
  390. package/lib/javascript/JavascriptModulesPlugin.js +98 -113
  391. package/lib/javascript/JavascriptParser.js +242 -99
  392. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  393. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  394. package/lib/javascript/StartupHelpers.js +55 -9
  395. package/lib/javascript/syntax.js +2678 -232
  396. package/lib/json/JsonData.js +8 -4
  397. package/lib/json/JsonGenerator.js +38 -16
  398. package/lib/json/JsonModule.js +7 -3
  399. package/lib/json/JsonModulesPlugin.js +1 -1
  400. package/lib/json/JsonParser.js +5 -6
  401. package/lib/library/AbstractLibraryPlugin.js +20 -14
  402. package/lib/library/AmdLibraryPlugin.js +11 -7
  403. package/lib/library/AssignLibraryPlugin.js +19 -13
  404. package/lib/library/EnableLibraryPlugin.js +2 -2
  405. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  406. package/lib/library/JsonpLibraryPlugin.js +11 -7
  407. package/lib/library/ModuleLibraryPlugin.js +256 -64
  408. package/lib/library/SystemLibraryPlugin.js +12 -8
  409. package/lib/library/UmdLibraryPlugin.js +62 -25
  410. package/lib/loaders/LoaderRunner.js +14 -1
  411. package/lib/loaders/loadLoader.js +8 -4
  412. package/lib/logging/createConsoleLogger.js +7 -4
  413. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  414. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  415. package/lib/node/NodeSourcePlugin.js +1 -1
  416. package/lib/node/NodeTargetPlugin.js +4 -3
  417. package/lib/node/NodeTemplatePlugin.js +1 -1
  418. package/lib/node/NodeWatchFileSystem.js +70 -9
  419. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  420. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  421. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  422. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/nodeConsole.js +7 -3
  424. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  425. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  426. package/lib/optimize/ConcatenatedModule.js +985 -470
  427. package/lib/optimize/ConstExportsPlugin.js +11 -7
  428. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  429. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  430. package/lib/optimize/InlineExports.js +9 -5
  431. package/lib/optimize/InnerGraph.js +28 -12
  432. package/lib/optimize/InnerGraphPlugin.js +23 -18
  433. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  434. package/lib/optimize/MangleExportsPlugin.js +7 -8
  435. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  436. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  437. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  438. package/lib/optimize/RealContentHashPlugin.js +10 -6
  439. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  440. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  441. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  442. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  443. package/lib/optimize/SplitChunksPlugin.js +86 -24
  444. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  445. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  446. package/lib/performance/BroadContextsPlugin.js +142 -0
  447. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  448. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  449. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  450. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  451. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  452. package/lib/performance/DynamicExportsPlugin.js +120 -0
  453. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  454. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  455. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  456. package/lib/performance/EvalUsagePlugin.js +115 -0
  457. package/lib/performance/HotspotsPlugin.js +296 -0
  458. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  459. package/lib/performance/LargeModulesPlugin.js +126 -0
  460. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  461. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  462. package/lib/performance/MixedExportsPlugin.js +136 -0
  463. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  464. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  465. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  466. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  467. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  468. package/lib/performance/SizeLimitsPlugin.js +139 -7
  469. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  470. package/lib/performance/TinyChunksPlugin.js +128 -0
  471. package/lib/performance/TopLevelThisPlugin.js +208 -0
  472. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  473. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  474. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  475. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  476. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  477. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  478. package/lib/performance/getModuleSize.js +22 -0
  479. package/lib/performance/getSourceModules.js +22 -0
  480. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  481. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  482. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  483. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  484. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  487. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  488. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  489. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  490. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  491. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  492. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  493. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  494. package/lib/rules/RuleSetCompiler.js +146 -12
  495. package/lib/rules/UseEffectRulePlugin.js +18 -11
  496. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  497. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  498. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  499. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  500. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  501. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  502. package/lib/runtime/CompatRuntimeModule.js +5 -3
  503. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  504. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  505. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  506. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  507. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  508. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  509. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  510. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  511. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  512. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  513. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  514. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  515. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  516. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  517. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  518. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  519. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  520. package/lib/runtime/NonceRuntimeModule.js +10 -0
  521. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  522. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  523. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  524. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  525. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  526. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  527. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  528. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  529. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  530. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  531. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  532. package/lib/runtime/baseUri.js +63 -0
  533. package/lib/schemes/DataUriPlugin.js +1 -1
  534. package/lib/schemes/FileUriPlugin.js +1 -1
  535. package/lib/schemes/HttpUriPlugin.js +24 -15
  536. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  537. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  538. package/lib/serialization/BinaryMiddleware.js +4 -4
  539. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  540. package/lib/serialization/FileMiddleware.js +7 -7
  541. package/lib/serialization/ObjectMiddleware.js +139 -114
  542. package/lib/serialization/PlainObjectSerializer.js +19 -16
  543. package/lib/sharing/ConsumeSharedModule.js +30 -21
  544. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  545. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  546. package/lib/sharing/ProvideSharedModule.js +25 -16
  547. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  548. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  549. package/lib/sharing/SharePlugin.js +17 -5
  550. package/lib/sharing/ShareRuntimeModule.js +4 -4
  551. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  552. package/lib/sharing/utils.js +1 -3
  553. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  554. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  555. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  556. package/lib/stats/StatsFactory.js +25 -26
  557. package/lib/stats/StatsPrinter.js +16 -12
  558. package/lib/typescript/TypeScriptPlugin.js +12 -14
  559. package/lib/url/URLParserPlugin.js +26 -13
  560. package/lib/util/AsyncQueue.js +4 -3
  561. package/lib/util/Hash.js +5 -1
  562. package/lib/util/LazySet.js +35 -22
  563. package/lib/util/LocConverter.js +36 -13
  564. package/lib/util/SourceProcessor.js +1050 -24
  565. package/lib/util/StringXor.js +1 -1
  566. package/lib/util/chainedImports.js +9 -5
  567. package/lib/util/cleverMerge.js +1 -1
  568. package/lib/util/comparators.js +45 -14
  569. package/lib/util/concatenate.js +203 -77
  570. package/lib/util/conventions.js +5 -1
  571. package/lib/util/createHash.js +2 -2
  572. package/lib/util/createHooksRegistry.js +8 -10
  573. package/lib/util/dataURL.js +225 -1
  574. package/lib/util/extractSourceMap.js +4 -3
  575. package/lib/util/findCaseMismatch.js +139 -0
  576. package/lib/util/formatLocation.js +1 -2
  577. package/lib/util/fs.js +22 -5
  578. package/lib/util/globUtils.js +298 -24
  579. package/lib/util/hash/BatchedHash.js +5 -1
  580. package/lib/util/hash/BulkUpdateHash.js +5 -1
  581. package/lib/util/hash/DebugHash.js +5 -1
  582. package/lib/util/hash/hash-digest.js +6 -2
  583. package/lib/util/identifier.js +4 -0
  584. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  585. package/lib/util/internalSerializables.js +6 -0
  586. package/lib/util/lazyModule.js +56 -0
  587. package/lib/util/makeSerializable.js +7 -3
  588. package/lib/util/matchAlias.js +25 -0
  589. package/lib/util/mimeTypes.js +11 -5
  590. package/lib/util/nonNumericOnlyHash.js +4 -3
  591. package/lib/util/parseJson.js +5 -3
  592. package/lib/util/preloadModuleType.js +32 -0
  593. package/lib/util/registerExternalSerializer.js +7 -5
  594. package/lib/util/runtime.js +2 -2
  595. package/lib/util/semver.js +1 -1
  596. package/lib/util/serialization.js +28 -28
  597. package/lib/util/source.js +2 -2
  598. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  599. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  600. package/lib/wasm/wasmModuleFilename.js +54 -0
  601. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  602. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  603. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  604. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  605. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  606. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  607. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  608. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  609. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  610. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  611. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  612. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  613. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  614. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  615. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  616. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  617. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  618. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  619. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  620. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  621. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  622. package/lib/web/JsonpTemplatePlugin.js +2 -2
  623. package/lib/webpack.js +22 -11
  624. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  625. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  626. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  627. package/module.d.ts +1 -0
  628. package/package.json +32 -25
  629. package/schemas/WebpackOptions.check.js +1 -1
  630. package/schemas/WebpackOptions.json +670 -36
  631. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  634. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  635. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  636. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  639. package/types.d.ts +3144 -454
  640. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -34,41 +34,53 @@ const HarmonyLinkingError = require("./HarmonyLinkingError");
34
34
  const { ImportPhaseUtils } = require("./ImportPhase");
35
35
  const processExportInfo = require("./processExportInfo");
36
36
 
37
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
38
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
39
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
40
- /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
41
- /** @typedef {import("../Dependency").LazyUntil} LazyUntil */
42
- /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
43
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
44
- /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
45
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
46
- /** @typedef {import("../ExportsInfo")} ExportsInfo */
47
- /** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
48
- /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
49
- /** @typedef {import("../ExportsInfo").UsedName} UsedName */
50
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
51
- /** @typedef {import("../Module")} Module */
52
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
53
- /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
54
- /** @typedef {import("../Module").ExportsType} ExportsType */
55
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
56
- /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
57
- /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
58
- /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
59
- /** @typedef {import("../errors/WebpackError")} WebpackError */
60
- /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
37
+ /** @import { ReplaceSource } from "webpack-sources" */
38
+ /** @import ChunkGraph from "../ChunkGraph" */
39
+ /**
40
+ * @import {
41
+ * ExportsSpec,
42
+ * GetConditionFn,
43
+ * LazyUntil,
44
+ * RawReferencedExports,
45
+ * ReferencedExports,
46
+ * TRANSITIVE,
47
+ * ExportInfoName
48
+ * } from "../Dependency"
49
+ */
50
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
51
+ /** @import ExportsInfo, { ExportInfo, UsedName } from "../ExportsInfo" */
52
+ /** @import { GenerateContext } from "../Generator" */
53
+ /**
54
+ * @import Module, {
55
+ * BuildMeta,
56
+ * RuntimeRequirements,
57
+ * ExportsType
58
+ * } from "../Module"
59
+ */
60
+ /** @import ModuleGraph from "../ModuleGraph" */
61
+ /**
62
+ * @import ModuleGraphConnection, {
63
+ * ConnectionState
64
+ * } from "../ModuleGraphConnection"
65
+ */
66
+ /** @import RuntimeTemplate from "../RuntimeTemplate" */
67
+ /** @import WebpackError from "../errors/WebpackError" */
68
+ /** @import { ImportAttributes } from "../javascript/JavascriptParser" */
61
69
  /** @typedef {[Ids, string | null, Set<string>, ReadonlyArray<HarmonyExportImportedSpecifierDependency> | null, ExportPresenceMode, HarmonyStarExportsList | null]} SerializedData */
62
70
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<SerializedData>} ObjectDeserializerContext */
63
71
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<SerializedData>} ObjectSerializerContext */
64
72
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[HarmonyExportImportedSpecifierDependency[]]>} StarListDeserializerContext */
65
73
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[HarmonyExportImportedSpecifierDependency[]]>} StarListSerializerContext */
66
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
67
- /** @typedef {import("./HarmonyImportDependency").Ids} Ids */
68
- /** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
69
- /** @typedef {import("./HarmonyExportInitFragment").ExportMap} ExportMap */
70
- /** @typedef {import("../dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
71
- /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
74
+ /** @import { RuntimeSpec } from "../util/runtime" */
75
+ /** @import { Ids, ExportPresenceMode } from "./HarmonyImportDependency" */
76
+ /** @import { ExportMap } from "./HarmonyExportInitFragment" */
77
+ /** @import { ImportPhaseType } from "../dependencies/ImportPhase" */
78
+ /**
79
+ * @import {
80
+ * JavascriptModuleBuildMeta
81
+ * } from "../javascript/JavascriptModule"
82
+ */
83
+ /** @import ConcatenationScope from "../ConcatenationScope" */
72
84
 
73
85
  /** @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 */
74
86
 
@@ -83,7 +95,7 @@ class NormalReexportItem {
83
95
  * Creates an instance of NormalReexportItem.
84
96
  * @param {string} name export name
85
97
  * @param {Ids} ids reexported ids from other module
86
- * @param {ExportInfo} exportInfo export info from other module
98
+ * @param {InstanceType<ExportInfo>} exportInfo export info from other module
87
99
  * @param {boolean} checked true, if it should be checked at runtime if this export exists
88
100
  * @param {boolean} hidden true, if it is hidden behind another active export in the same module
89
101
  */
@@ -92,7 +104,7 @@ class NormalReexportItem {
92
104
  this.name = name;
93
105
  /** @type {Ids} */
94
106
  this.ids = ids;
95
- /** @type {ExportInfo} */
107
+ /** @type {InstanceType<ExportInfo>} */
96
108
  this.exportInfo = exportInfo;
97
109
  /** @type {boolean} */
98
110
  this.checked = checked;
@@ -120,7 +132,7 @@ class ExportMode {
120
132
  // for "reexport-named-default" | "reexport-fake-namespace-object" | "reexport-namespace-object"
121
133
  /** @type {string | null} */
122
134
  this.name = null;
123
- /** @type {ExportInfo | null} */
135
+ /** @type {InstanceType<ExportInfo> | null} */
124
136
  this.partialNamespaceExportInfo = null;
125
137
 
126
138
  // for "dynamic-reexport":
@@ -163,7 +175,7 @@ const RETURNS_TRUE = () => true;
163
175
  * unrelated cycles in the graph that would otherwise loop forever inside
164
176
  * `_findTarget`.
165
177
  * @param {ModuleGraph} moduleGraph the module graph
166
- * @param {ExportInfo} exportInfo export info on the imported module
178
+ * @param {InstanceType<ExportInfo>} exportInfo export info on the imported module
167
179
  * @param {Module} parentModule the module that contains the star reexport
168
180
  * @returns {boolean} true when this export reexports back to the parent module under the same name
169
181
  */
@@ -194,7 +206,7 @@ const isStarReexportBackToParent = (moduleGraph, exportInfo, parentModule) => {
194
206
  // Allocated lazily: a single-extra-hop chain that terminates (the common
195
207
  // `barrel -> leaf local binding` case) returns before `next` is ever
196
208
  // computed, so the visited set is pure waste there.
197
- /** @type {Set<ExportInfo> | undefined} */
209
+ /** @type {Set<InstanceType<ExportInfo>> | undefined} */
198
210
  let visited;
199
211
  for (;;) {
200
212
  const target = current.findTarget(moduleGraph, RETURNS_TRUE);
@@ -798,7 +810,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
798
810
  runtime,
799
811
  referencedExports,
800
812
  [],
801
- /** @type {ExportInfo} */ (mode.partialNamespaceExportInfo)
813
+ /** @type {InstanceType<ExportInfo>} */ (
814
+ mode.partialNamespaceExportInfo
815
+ )
802
816
  );
803
817
  return referencedExports;
804
818
  }
@@ -814,7 +828,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
814
828
  runtime,
815
829
  referencedExports,
816
830
  [],
817
- /** @type {ExportInfo} */ (mode.partialNamespaceExportInfo),
831
+ /** @type {InstanceType<ExportInfo>} */ (
832
+ mode.partialNamespaceExportInfo
833
+ ),
818
834
  mode.type === "reexport-fake-namespace-object"
819
835
  );
820
836
  return referencedExports;
@@ -1212,7 +1228,8 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1212
1228
 
1213
1229
  const mode = dep.getMode(moduleGraph, runtime);
1214
1230
 
1215
- if (concatenationScope) {
1231
+ // a wrapped module has no shared-scope symbols to redirect reexports to
1232
+ if (concatenationScope && !concatenationScope.isWrapped()) {
1216
1233
  switch (mode.type) {
1217
1234
  case "reexport-undefined":
1218
1235
  concatenationScope.registerRawExport(
@@ -1224,7 +1241,15 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1224
1241
  }
1225
1242
 
1226
1243
  if (mode.type !== "unused" && mode.type !== "empty-star") {
1227
- super.apply(dependency, source, templateContext);
1244
+ const importedModule = moduleGraph.getModule(dep);
1245
+ // an in-scope target has no standalone module left to import from
1246
+ if (
1247
+ concatenationScope === undefined ||
1248
+ importedModule === null ||
1249
+ !concatenationScope.isModuleInScope(importedModule)
1250
+ ) {
1251
+ super.apply(dependency, source, templateContext);
1252
+ }
1228
1253
 
1229
1254
  this._addExportFragments(
1230
1255
  templateContext.initFragments,
@@ -1235,7 +1260,8 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1235
1260
  templateContext.chunkGraph,
1236
1261
  runtime,
1237
1262
  templateContext.runtimeTemplate,
1238
- templateContext.runtimeRequirements
1263
+ templateContext.runtimeRequirements,
1264
+ concatenationScope
1239
1265
  );
1240
1266
  }
1241
1267
  }
@@ -1251,6 +1277,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1251
1277
  * @param {RuntimeSpec} runtime the runtime
1252
1278
  * @param {RuntimeTemplate} runtimeTemplate the runtime template
1253
1279
  * @param {RuntimeRequirements} runtimeRequirements runtime requirements
1280
+ * @param {ConcatenationScope=} concatenationScope concatenation scope of a wrapped module
1254
1281
  * @returns {void}
1255
1282
  */
1256
1283
  _addExportFragments(
@@ -1262,10 +1289,28 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1262
1289
  chunkGraph,
1263
1290
  runtime,
1264
1291
  runtimeTemplate,
1265
- runtimeRequirements
1292
+ runtimeRequirements,
1293
+ concatenationScope
1266
1294
  ) {
1267
1295
  const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
1268
- const importVar = dep.getImportVar(moduleGraph);
1296
+ // an in-scope target has no import statement, read it through a reference
1297
+ const inScope =
1298
+ concatenationScope !== undefined &&
1299
+ concatenationScope.isModuleInScope(importedModule);
1300
+ const importVar = inScope
1301
+ ? /** @type {ConcatenationScope} */ (
1302
+ concatenationScope
1303
+ ).createModuleReference(importedModule, { asiSafe: true })
1304
+ : dep.getImportVar(moduleGraph);
1305
+ // whole-namespace modes need the original export names, not mangled ones
1306
+ const namespaceImportVar = inScope
1307
+ ? /** @type {ConcatenationScope} */ (
1308
+ concatenationScope
1309
+ ).createModuleReference(importedModule, {
1310
+ asiSafe: true,
1311
+ mangleableNamespace: true
1312
+ })
1313
+ : importVar;
1269
1314
  const isDeferred =
1270
1315
  ImportPhaseUtils.isDefer(dep.phase) &&
1271
1316
  !(/** @type {BuildMeta} */ (importedModule.buildMeta).async);
@@ -1282,7 +1327,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1282
1327
  moduleGraph
1283
1328
  .getExportsInfo(module)
1284
1329
  .getUsedName(mode.name ? mode.name : [], runtime),
1285
- importVar,
1330
+ namespaceImportVar,
1286
1331
  importedModule.getExportsType(
1287
1332
  moduleGraph,
1288
1333
  module.buildMeta &&
@@ -1318,7 +1363,18 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1318
1363
  );
1319
1364
  break;
1320
1365
 
1321
- case "reexport-dynamic-default":
1366
+ case "reexport-dynamic-default": {
1367
+ // `${importVar}_default` names the interop variable that the import
1368
+ // statement declares. An in-scope target has no import statement, so
1369
+ // reference its default export and let the concatenation resolve it.
1370
+ const defaultAccess = inScope
1371
+ ? /** @type {ConcatenationScope} */ (
1372
+ concatenationScope
1373
+ ).createModuleReference(importedModule, {
1374
+ ids: ["default"],
1375
+ asiSafe: true
1376
+ })
1377
+ : importVar;
1322
1378
  initFragments.push(
1323
1379
  this.getReexportFragment(
1324
1380
  module,
@@ -1326,25 +1382,47 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1326
1382
  moduleGraph
1327
1383
  .getExportsInfo(module)
1328
1384
  .getUsedName(/** @type {string} */ (mode.name), runtime),
1329
- importVar,
1330
- null,
1385
+ defaultAccess,
1386
+ inScope ? "" : null,
1331
1387
  runtimeRequirements
1332
1388
  )
1333
1389
  );
1334
1390
  break;
1391
+ }
1335
1392
 
1336
1393
  case "reexport-fake-namespace-object":
1337
- initFragments.push(
1338
- ...this.getReexportFakeNamespaceObjectFragments(
1339
- module,
1340
- moduleGraph
1341
- .getExportsInfo(module)
1342
- .getUsedName(/** @type {string} */ (mode.name), runtime),
1343
- importVar,
1344
- mode.fakeType,
1345
- runtimeRequirements
1346
- )
1347
- );
1394
+ // `${name}_namespace_cache` needs an identifier to suffix, but an
1395
+ // in-scope target is an expression. The concatenation already builds
1396
+ // the same object, memoized: its interop namespace picks the mode from
1397
+ // the exports type, which is what `fakeType` mirrors.
1398
+ if (inScope) {
1399
+ initFragments.push(
1400
+ this.getReexportFragment(
1401
+ module,
1402
+ "reexport fake namespace object from non-harmony",
1403
+ moduleGraph
1404
+ .getExportsInfo(module)
1405
+ .getUsedName(/** @type {string} */ (mode.name), runtime),
1406
+ /** @type {ConcatenationScope} */ (
1407
+ concatenationScope
1408
+ ).createModuleReference(importedModule, { asiSafe: true }),
1409
+ "",
1410
+ runtimeRequirements
1411
+ )
1412
+ );
1413
+ } else {
1414
+ initFragments.push(
1415
+ ...this.getReexportFakeNamespaceObjectFragments(
1416
+ module,
1417
+ moduleGraph
1418
+ .getExportsInfo(module)
1419
+ .getUsedName(/** @type {string} */ (mode.name), runtime),
1420
+ namespaceImportVar,
1421
+ mode.fakeType,
1422
+ runtimeRequirements
1423
+ )
1424
+ );
1425
+ }
1348
1426
  break;
1349
1427
 
1350
1428
  case "reexport-undefined":
@@ -1385,7 +1463,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1385
1463
  moduleGraph
1386
1464
  .getExportsInfo(module)
1387
1465
  .getUsedName(/** @type {string} */ (mode.name), runtime),
1388
- importVar,
1466
+ namespaceImportVar,
1389
1467
  "",
1390
1468
  runtimeRequirements
1391
1469
  )
@@ -1456,7 +1534,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1456
1534
  : /** @type {ExportModeIgnored} */ (mode.ignored);
1457
1535
  let content =
1458
1536
  "/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n" +
1459
- `/* harmony reexport (unknown) */ for(${runtimeTemplate.renderConst()} __WEBPACK_IMPORT_KEY__ in ${importVar}) `;
1537
+ `/* harmony reexport (unknown) */ for(${runtimeTemplate.renderConst()} __WEBPACK_IMPORT_KEY__ in ${namespaceImportVar}) `;
1460
1538
 
1461
1539
  // Filter out exports which are defined by other exports
1462
1540
  // and filter out default export because it cannot be reexported with *
@@ -1474,8 +1552,8 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
1474
1552
  content +=
1475
1553
  runtimeTemplate.supportsArrowFunction() &&
1476
1554
  runtimeTemplate.supportsConst()
1477
- ? `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`
1478
- : `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
1555
+ ? `() => ${namespaceImportVar}[__WEBPACK_IMPORT_KEY__]`
1556
+ : `function(key) { return ${namespaceImportVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
1479
1557
 
1480
1558
  runtimeRequirements.add(RuntimeGlobals.exports);
1481
1559
  runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
@@ -1723,6 +1801,8 @@ makeSerializable(
1723
1801
  "HarmonyStarExportsList"
1724
1802
  );
1725
1803
 
1804
+ HarmonyExportImportedSpecifierDependency.HarmonyStarExportsList =
1805
+ HarmonyStarExportsList;
1806
+ HarmonyExportImportedSpecifierDependency.idsSymbol = idsSymbol;
1807
+
1726
1808
  module.exports = HarmonyExportImportedSpecifierDependency;
1727
- module.exports.HarmonyStarExportsList = HarmonyStarExportsList;
1728
- module.exports.idsSymbol = idsSymbol;
@@ -10,9 +10,9 @@ const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const { first } = require("../util/SetHelpers");
11
11
  const { propertyName } = require("../util/property");
12
12
 
13
- /** @typedef {import("webpack-sources").Source} Source */
14
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
15
- /** @typedef {import("../ExportsInfo").UsedName} UsedName */
13
+ /** @import { Source } from "webpack-sources" */
14
+ /** @import { GenerateContext } from "../Generator" */
15
+ /** @import { UsedName } from "../ExportsInfo" */
16
16
 
17
17
  /**
18
18
  * Join iterable with comma.
@@ -37,6 +37,7 @@ const joinIterableWithComma = (iterable) => {
37
37
 
38
38
  /** @typedef {Map<UsedName, string>} ExportMap */
39
39
  /** @typedef {Set<string>} UnusedExports */
40
+ /** @import { OnDemandGeneration } from "./ExportBindingInitFragment" */
40
41
 
41
42
  /** @type {ExportMap} */
42
43
  const EMPTY_MAP = new Map();
@@ -53,11 +54,13 @@ class HarmonyExportInitFragment extends InitFragment {
53
54
  * @param {string} exportsArgument the exports identifier
54
55
  * @param {ExportMap} exportMap mapping from used name to exposed variable name
55
56
  * @param {UnusedExports} unusedExports list of unused export names
57
+ * @param {OnDemandGeneration=} onDemand offered the call instead of emitting it
56
58
  */
57
59
  constructor(
58
60
  exportsArgument,
59
61
  exportMap = EMPTY_MAP,
60
- unusedExports = EMPTY_SET
62
+ unusedExports = EMPTY_SET,
63
+ onDemand = undefined
61
64
  ) {
62
65
  super(undefined, InitFragment.STAGE_HARMONY_EXPORTS, 1, "harmony-exports");
63
66
  /** @type {string} */
@@ -66,6 +69,8 @@ class HarmonyExportInitFragment extends InitFragment {
66
69
  this.exportMap = exportMap;
67
70
  /** @type {UnusedExports} */
68
71
  this.unusedExports = unusedExports;
72
+ /** @type {OnDemandGeneration | undefined} */
73
+ this.onDemand = onDemand;
69
74
  }
70
75
 
71
76
  /**
@@ -114,7 +119,8 @@ class HarmonyExportInitFragment extends InitFragment {
114
119
  return new HarmonyExportInitFragment(
115
120
  this.exportsArgument,
116
121
  exportMap,
117
- unusedExports
122
+ unusedExports,
123
+ this.onDemand
118
124
  );
119
125
  }
120
126
 
@@ -151,7 +157,8 @@ class HarmonyExportInitFragment extends InitFragment {
151
157
  return new HarmonyExportInitFragment(
152
158
  this.exportsArgument,
153
159
  exportMap,
154
- unusedExports
160
+ unusedExports,
161
+ this.onDemand || other.onDemand
155
162
  );
156
163
  }
157
164
 
@@ -184,6 +191,8 @@ class HarmonyExportInitFragment extends InitFragment {
184
191
  )}: ${runtimeTemplate.returningFunction(value)}`
185
192
  );
186
193
  }
194
+ // Requested even when the call is taken over below: whoever took it may still
195
+ // emit it, and by then the requirement set is closed.
187
196
  runtimeRequirements.add(RuntimeGlobals.exports);
188
197
  runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
189
198
  definePart = `/* harmony export */ ${
@@ -191,6 +200,9 @@ class HarmonyExportInitFragment extends InitFragment {
191
200
  }(${this.exportsArgument}, {${definitions.join(
192
201
  ","
193
202
  )}\n/* harmony export */ });\n`;
203
+ if (this.onDemand !== undefined && this.onDemand(definePart, false)) {
204
+ definePart = "";
205
+ }
194
206
  }
195
207
  return `${definePart}${unusedPart}`;
196
208
  }
@@ -8,22 +8,30 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const { InlinedUsedName } = require("../optimize/InlineExports");
10
10
  const makeSerializable = require("../util/makeSerializable");
11
+ const memoize = require("../util/memoize");
11
12
  const ExportBindingInitFragment = require("./ExportBindingInitFragment");
12
13
  const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
13
14
  const NullDependency = require("./NullDependency");
14
15
 
15
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
16
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
17
- /** @typedef {import("../Dependency").LazyUntil} LazyUntil */
18
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
- /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
21
- /** @typedef {import("../optimize/InlineExports").InlinedValue} InlinedValue */
16
+ /** @import { ReplaceSource } from "webpack-sources" */
17
+ /** @import { ExportsSpec, LazyUntil } from "../Dependency" */
18
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
19
+ /** @import ModuleGraph from "../ModuleGraph" */
20
+ /** @import { ConnectionState } from "../ModuleGraphConnection" */
21
+ /** @import { InlinedValue } from "../optimize/InlineExports" */
22
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, InlinedValue | null | undefined]>} ObjectDeserializerContext */
23
23
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, InlinedValue | null | undefined]>} ObjectSerializerContext */
24
- /** @typedef {import("./HarmonyExportInitFragment").UnusedExports} UnusedExports */
25
- /** @typedef {import("./HarmonyExportInitFragment").ExportMap} ExportMap */
26
- /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
24
+ /** @import { UnusedExports, ExportMap } from "./HarmonyExportInitFragment" */
25
+ /**
26
+ * @import {
27
+ * JavascriptModuleBuildInfo
28
+ * } from "../javascript/JavascriptModule"
29
+ */
30
+
31
+ // Required here rather than at the top: the plugin reaches back into the dependencies.
32
+ const getJavascriptModulesPlugin = memoize(() =>
33
+ require("../javascript/JavascriptModulesPlugin")
34
+ );
27
35
 
28
36
  class HarmonyExportSpecifierDependency extends NullDependency {
29
37
  /**
@@ -139,10 +147,18 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
139
147
  apply(
140
148
  dependency,
141
149
  source,
142
- { module, moduleGraph, initFragments, runtime, concatenationScope }
150
+ {
151
+ module,
152
+ moduleGraph,
153
+ initFragments,
154
+ runtime,
155
+ runtimeTemplate,
156
+ concatenationScope
157
+ }
143
158
  ) {
144
159
  const dep = /** @type {HarmonyExportSpecifierDependency} */ (dependency);
145
- if (concatenationScope) {
160
+ // a wrapped module's bindings stay inside the wrapper, not in the shared scope
161
+ if (concatenationScope && !concatenationScope.isWrapped()) {
146
162
  concatenationScope.registerExport(dep.name, dep.id);
147
163
  return;
148
164
  }
@@ -169,6 +185,21 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
169
185
  /** @type {import("../Module").BuildInfo} */ (module.buildInfo)
170
186
  .isCircular === false;
171
187
 
188
+ // A library exporting the same bindings natively reads none of them back off the
189
+ // exports object, so it takes the call over and emits it only where wrapped.
190
+ const hooks = getJavascriptModulesPlugin().getCompilationHooks(
191
+ runtimeTemplate.compilation
192
+ );
193
+ const onDemand = hooks.onDemandExportsGeneration.isUsed()
194
+ ? (/** @type {string} */ definition, /** @type {boolean} */ placeAtEnd) =>
195
+ hooks.onDemandExportsGeneration.call(
196
+ module,
197
+ runtime,
198
+ definition,
199
+ placeAtEnd
200
+ ) === true
201
+ : undefined;
202
+
172
203
  if (canUseValueBinding) {
173
204
  initFragments.push(
174
205
  new ExportBindingInitFragment(
@@ -180,7 +211,8 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
180
211
  bindingType: "value"
181
212
  }
182
213
  ],
183
- true
214
+ true,
215
+ onDemand
184
216
  )
185
217
  );
186
218
  } else {
@@ -188,7 +220,12 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
188
220
  const map = new Map();
189
221
  map.set(used, `/* binding */ ${dep.id}`);
190
222
  initFragments.push(
191
- new HarmonyExportInitFragment(module.exportsArgument, map, undefined)
223
+ new HarmonyExportInitFragment(
224
+ module.exportsArgument,
225
+ map,
226
+ undefined,
227
+ onDemand
228
+ )
192
229
  );
193
230
  }
194
231
  }
@@ -7,10 +7,13 @@
7
7
 
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
9
 
10
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
11
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
12
- /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
13
- /** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
10
+ /** @import { BuildInfo } from "../Module" */
11
+ /**
12
+ * @import {
13
+ * JavascriptModuleBuildMeta
14
+ * } from "../javascript/JavascriptModule"
15
+ */
16
+ /** @import { JavascriptParserState } from "../javascript/JavascriptParser" */
14
17
 
15
18
  /** @type {WeakMap<JavascriptParserState, boolean>} */
16
19
  const parserStateExportsState = new WeakMap();
@@ -16,20 +16,27 @@ const HarmonyLinkingError = require("./HarmonyLinkingError");
16
16
  const { ImportPhase, ImportPhaseUtils } = require("./ImportPhase");
17
17
  const ModuleDependency = require("./ModuleDependency");
18
18
 
19
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
20
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
21
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
22
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
23
- /** @typedef {import("../ExportsInfo")} ExportsInfo */
24
- /** @typedef {import("../Module")} Module */
25
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
26
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
27
- /** @typedef {import("../errors/WebpackError")} WebpackError */
28
- /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
29
- /** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
30
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
31
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
32
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
19
+ /** @import { ReplaceSource } from "webpack-sources" */
20
+ /**
21
+ * @import {
22
+ * JavascriptParserOptions
23
+ * } from "../../declarations/WebpackOptions"
24
+ */
25
+ /** @import { ReferencedExports } from "../Dependency" */
26
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
27
+ /** @import ExportsInfo from "../ExportsInfo" */
28
+ /** @import Module, { BuildMeta } from "../Module" */
29
+ /** @import ModuleGraph from "../ModuleGraph" */
30
+ /** @import WebpackError from "../errors/WebpackError" */
31
+ /** @import { ImportAttributes } from "../javascript/JavascriptParser" */
32
+ /** @import { ImportPhaseType } from "./ImportPhase" */
33
+ /**
34
+ * @import {
35
+ * ObjectDeserializerContext,
36
+ * ObjectSerializerContext
37
+ * } from "../serialization/ObjectMiddleware"
38
+ */
39
+ /** @import { RuntimeSpec } from "../util/runtime" */
33
40
 
34
41
  /** @typedef {0 | 1 | 2 | 3} ExportPresenceMode */
35
42
 
@@ -135,9 +142,10 @@ class HarmonyImportDependency extends ModuleDependency {
135
142
 
136
143
  /**
137
144
  * Returns true if this dependency can be concatenated
145
+ * @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
138
146
  * @returns {boolean} true if this dependency can be concatenated
139
147
  */
140
- canConcatenate() {
148
+ canConcatenate(concatenateCommonJsModules) {
141
149
  return true;
142
150
  }
143
151
 
@@ -384,8 +392,6 @@ class HarmonyImportDependency extends ModuleDependency {
384
392
  }
385
393
  }
386
394
 
387
- module.exports = HarmonyImportDependency;
388
-
389
395
  /** @type {WeakMap<Module, WeakMap<Module, RuntimeSpec | boolean>>} */
390
396
  const importEmittedMap = new WeakMap();
391
397
 
@@ -524,5 +530,7 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
524
530
  }
525
531
  };
526
532
 
527
- module.exports.ExportPresenceModes = ExportPresenceModes;
528
- module.exports.getNonOptionalPart = getNonOptionalPart;
533
+ HarmonyImportDependency.ExportPresenceModes = ExportPresenceModes;
534
+ HarmonyImportDependency.getNonOptionalPart = getNonOptionalPart;
535
+
536
+ module.exports = HarmonyImportDependency;