@module-federation/enhanced 2.1.0 → 2.2.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 (285) hide show
  1. package/dist/CHANGELOG.md +2375 -0
  2. package/dist/README.md +213 -0
  3. package/dist/rstestmigrate.md +140 -0
  4. package/dist/src/_virtual/_rolldown/runtime.js +47 -0
  5. package/dist/src/index.d.ts +22 -19
  6. package/dist/src/index.js +47 -43
  7. package/dist/src/index.js.map +1 -1
  8. package/dist/src/lib/Constants.d.ts +25 -29
  9. package/dist/src/lib/Constants.js +136 -116
  10. package/dist/src/lib/Constants.js.map +1 -1
  11. package/dist/src/lib/container/AsyncBoundaryPlugin.d.ts +20 -16
  12. package/dist/src/lib/container/AsyncBoundaryPlugin.js +137 -200
  13. package/dist/src/lib/container/AsyncBoundaryPlugin.js.map +1 -1
  14. package/dist/src/lib/container/ContainerEntryDependency.d.ts +28 -23
  15. package/dist/src/lib/container/ContainerEntryDependency.js +39 -39
  16. package/dist/src/lib/container/ContainerEntryDependency.js.map +1 -1
  17. package/dist/src/lib/container/ContainerEntryModule.d.ts +93 -84
  18. package/dist/src/lib/container/ContainerEntryModule.js +219 -234
  19. package/dist/src/lib/container/ContainerEntryModule.js.map +1 -1
  20. package/dist/src/lib/container/ContainerEntryModuleFactory.d.ts +15 -10
  21. package/dist/src/lib/container/ContainerEntryModuleFactory.js +21 -25
  22. package/dist/src/lib/container/ContainerEntryModuleFactory.js.map +1 -1
  23. package/dist/src/lib/container/ContainerExposedDependency.d.ts +29 -24
  24. package/dist/src/lib/container/ContainerExposedDependency.js +47 -47
  25. package/dist/src/lib/container/ContainerExposedDependency.js.map +1 -1
  26. package/dist/src/lib/container/ContainerPlugin.d.ts +12 -8
  27. package/dist/src/lib/container/ContainerPlugin.js +147 -211
  28. package/dist/src/lib/container/ContainerPlugin.js.map +1 -1
  29. package/dist/src/lib/container/ContainerReferencePlugin.d.ts +16 -12
  30. package/dist/src/lib/container/ContainerReferencePlugin.js +74 -102
  31. package/dist/src/lib/container/ContainerReferencePlugin.js.map +1 -1
  32. package/dist/src/lib/container/FallbackDependency.d.ts +24 -19
  33. package/dist/src/lib/container/FallbackDependency.js +46 -44
  34. package/dist/src/lib/container/FallbackDependency.js.map +1 -1
  35. package/dist/src/lib/container/FallbackItemDependency.d.ts +13 -8
  36. package/dist/src/lib/container/FallbackItemDependency.js +24 -24
  37. package/dist/src/lib/container/FallbackItemDependency.js.map +1 -1
  38. package/dist/src/lib/container/FallbackModule.d.ts +82 -71
  39. package/dist/src/lib/container/FallbackModule.js +133 -145
  40. package/dist/src/lib/container/FallbackModule.js.map +1 -1
  41. package/dist/src/lib/container/FallbackModuleFactory.d.ts +15 -10
  42. package/dist/src/lib/container/FallbackModuleFactory.js +20 -24
  43. package/dist/src/lib/container/FallbackModuleFactory.js.map +1 -1
  44. package/dist/src/lib/container/HoistContainerReferencesPlugin.d.ts +11 -7
  45. package/dist/src/lib/container/HoistContainerReferencesPlugin.js +125 -188
  46. package/dist/src/lib/container/HoistContainerReferencesPlugin.js.map +1 -1
  47. package/dist/src/lib/container/ModuleFederationPlugin.d.ts +20 -16
  48. package/dist/src/lib/container/ModuleFederationPlugin.js +143 -181
  49. package/dist/src/lib/container/ModuleFederationPlugin.js.map +1 -1
  50. package/dist/src/lib/container/RemoteModule.d.ts +79 -74
  51. package/dist/src/lib/container/RemoteModule.js +143 -153
  52. package/dist/src/lib/container/RemoteModule.js.map +1 -1
  53. package/dist/src/lib/container/RemoteRuntimeModule.d.ts +12 -7
  54. package/dist/src/lib/container/RemoteRuntimeModule.js +86 -132
  55. package/dist/src/lib/container/RemoteRuntimeModule.js.map +1 -1
  56. package/dist/src/lib/container/RemoteToExternalDependency.d.ts +13 -8
  57. package/dist/src/lib/container/RemoteToExternalDependency.js +25 -23
  58. package/dist/src/lib/container/RemoteToExternalDependency.js.map +1 -1
  59. package/dist/src/lib/container/constant.d.ts +3 -0
  60. package/dist/src/lib/container/constant.js +11 -14
  61. package/dist/src/lib/container/constant.js.map +1 -1
  62. package/dist/src/lib/container/options.d.ts +7 -3
  63. package/dist/src/lib/container/options.js +51 -69
  64. package/dist/src/lib/container/options.js.map +1 -1
  65. package/dist/src/lib/container/runtime/EmbedFederationRuntimeModule.d.ts +14 -9
  66. package/dist/src/lib/container/runtime/EmbedFederationRuntimeModule.js +56 -64
  67. package/dist/src/lib/container/runtime/EmbedFederationRuntimeModule.js.map +1 -1
  68. package/dist/src/lib/container/runtime/EmbedFederationRuntimePlugin.d.ts +23 -19
  69. package/dist/src/lib/container/runtime/EmbedFederationRuntimePlugin.js +71 -101
  70. package/dist/src/lib/container/runtime/EmbedFederationRuntimePlugin.js.map +1 -1
  71. package/dist/src/lib/container/runtime/FederationModulesPlugin.d.ts +20 -16
  72. package/dist/src/lib/container/runtime/FederationModulesPlugin.js +55 -47
  73. package/dist/src/lib/container/runtime/FederationModulesPlugin.js.map +1 -1
  74. package/dist/src/lib/container/runtime/FederationRuntimeDependency.d.ts +9 -4
  75. package/dist/src/lib/container/runtime/FederationRuntimeDependency.js +16 -12
  76. package/dist/src/lib/container/runtime/FederationRuntimeDependency.js.map +1 -1
  77. package/dist/src/lib/container/runtime/FederationRuntimeModule.d.ts +16 -11
  78. package/dist/src/lib/container/runtime/FederationRuntimeModule.js +39 -46
  79. package/dist/src/lib/container/runtime/FederationRuntimeModule.js.map +1 -1
  80. package/dist/src/lib/container/runtime/FederationRuntimePlugin.d.ts +31 -20
  81. package/dist/src/lib/container/runtime/FederationRuntimePlugin.js +265 -358
  82. package/dist/src/lib/container/runtime/FederationRuntimePlugin.js.map +1 -1
  83. package/dist/src/lib/container/runtime/getFederationGlobal.d.ts +9 -4
  84. package/dist/src/lib/container/runtime/getFederationGlobal.js +43 -41
  85. package/dist/src/lib/container/runtime/getFederationGlobal.js.map +1 -1
  86. package/dist/src/lib/container/runtime/utils.d.ts +24 -13
  87. package/dist/src/lib/container/runtime/utils.js +83 -101
  88. package/dist/src/lib/container/runtime/utils.js.map +1 -1
  89. package/dist/src/lib/sharing/ConsumeSharedFallbackDependency.d.ts +15 -10
  90. package/dist/src/lib/sharing/ConsumeSharedFallbackDependency.js +27 -25
  91. package/dist/src/lib/sharing/ConsumeSharedFallbackDependency.js.map +1 -1
  92. package/dist/src/lib/sharing/ConsumeSharedModule.d.ts +77 -68
  93. package/dist/src/lib/sharing/ConsumeSharedModule.js +186 -214
  94. package/dist/src/lib/sharing/ConsumeSharedModule.js.map +1 -1
  95. package/dist/src/lib/sharing/ConsumeSharedPlugin.d.ts +13 -9
  96. package/dist/src/lib/sharing/ConsumeSharedPlugin.js +308 -475
  97. package/dist/src/lib/sharing/ConsumeSharedPlugin.js.map +1 -1
  98. package/dist/src/lib/sharing/ConsumeSharedRuntimeModule.d.ts +16 -11
  99. package/dist/src/lib/sharing/ConsumeSharedRuntimeModule.js +107 -137
  100. package/dist/src/lib/sharing/ConsumeSharedRuntimeModule.js.map +1 -1
  101. package/dist/src/lib/sharing/ProvideForSharedDependency.d.ts +14 -9
  102. package/dist/src/lib/sharing/ProvideForSharedDependency.js +25 -25
  103. package/dist/src/lib/sharing/ProvideForSharedDependency.js.map +1 -1
  104. package/dist/src/lib/sharing/ProvideSharedDependency.d.ts +44 -39
  105. package/dist/src/lib/sharing/ProvideSharedDependency.js +72 -76
  106. package/dist/src/lib/sharing/ProvideSharedDependency.js.map +1 -1
  107. package/dist/src/lib/sharing/ProvideSharedModule.d.ts +91 -82
  108. package/dist/src/lib/sharing/ProvideSharedModule.js +177 -184
  109. package/dist/src/lib/sharing/ProvideSharedModule.js.map +1 -1
  110. package/dist/src/lib/sharing/ProvideSharedModuleFactory.d.ts +14 -9
  111. package/dist/src/lib/sharing/ProvideSharedModuleFactory.js +19 -25
  112. package/dist/src/lib/sharing/ProvideSharedModuleFactory.js.map +1 -1
  113. package/dist/src/lib/sharing/ProvideSharedPlugin.d.ts +27 -21
  114. package/dist/src/lib/sharing/ProvideSharedPlugin.js +341 -550
  115. package/dist/src/lib/sharing/ProvideSharedPlugin.js.map +1 -1
  116. package/dist/src/lib/sharing/SharePlugin.d.ts +53 -49
  117. package/dist/src/lib/sharing/SharePlugin.js +86 -100
  118. package/dist/src/lib/sharing/SharePlugin.js.map +1 -1
  119. package/dist/src/lib/sharing/ShareRuntimeModule.d.ts +12 -7
  120. package/dist/src/lib/sharing/ShareRuntimeModule.js +81 -103
  121. package/dist/src/lib/sharing/ShareRuntimeModule.js.map +1 -1
  122. package/dist/src/lib/sharing/resolveMatchedConfigs.d.ts +11 -7
  123. package/dist/src/lib/sharing/resolveMatchedConfigs.js +58 -71
  124. package/dist/src/lib/sharing/resolveMatchedConfigs.js.map +1 -1
  125. package/dist/src/lib/sharing/tree-shaking/CollectSharedEntryPlugin.d.ts +18 -14
  126. package/dist/src/lib/sharing/tree-shaking/CollectSharedEntryPlugin.js +74 -128
  127. package/dist/src/lib/sharing/tree-shaking/CollectSharedEntryPlugin.js.map +1 -1
  128. package/dist/src/lib/sharing/tree-shaking/IndependentSharedPlugin.d.ts +39 -34
  129. package/dist/src/lib/sharing/tree-shaking/IndependentSharedPlugin.js +234 -328
  130. package/dist/src/lib/sharing/tree-shaking/IndependentSharedPlugin.js.map +1 -1
  131. package/dist/src/lib/sharing/tree-shaking/IndependentSharedRuntimeModule.d.ts +16 -11
  132. package/dist/src/lib/sharing/tree-shaking/IndependentSharedRuntimeModule.js +30 -28
  133. package/dist/src/lib/sharing/tree-shaking/IndependentSharedRuntimeModule.js.map +1 -1
  134. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedContainerPlugin.d.ts +28 -24
  135. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedContainerPlugin.js +91 -95
  136. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedContainerPlugin.js.map +1 -1
  137. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedDependency.d.ts +29 -24
  138. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedDependency.js +47 -43
  139. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedDependency.js.map +1 -1
  140. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryDependency.d.ts +20 -15
  141. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryDependency.js +33 -29
  142. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryDependency.js.map +1 -1
  143. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryModule.d.ts +85 -77
  144. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryModule.js +141 -153
  145. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryModule.js.map +1 -1
  146. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryModuleFactory.d.ts +15 -10
  147. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryModuleFactory.js +20 -24
  148. package/dist/src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryModuleFactory.js.map +1 -1
  149. package/dist/src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerPlugin.d.ts +21 -16
  150. package/dist/src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerPlugin.js +157 -231
  151. package/dist/src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerPlugin.js.map +1 -1
  152. package/dist/src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerRuntimeModule.d.ts +14 -9
  153. package/dist/src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerRuntimeModule.js +26 -27
  154. package/dist/src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerRuntimeModule.js.map +1 -1
  155. package/dist/src/lib/sharing/tree-shaking/TreeShakingSharedPlugin.d.ts +18 -13
  156. package/dist/src/lib/sharing/tree-shaking/TreeShakingSharedPlugin.js +41 -49
  157. package/dist/src/lib/sharing/tree-shaking/TreeShakingSharedPlugin.js.map +1 -1
  158. package/dist/src/lib/sharing/utils.d.ts +27 -24
  159. package/dist/src/lib/sharing/utils.js +224 -367
  160. package/dist/src/lib/sharing/utils.js.map +1 -1
  161. package/dist/src/lib/startup/MfStartupChunkDependenciesPlugin.d.ts +11 -7
  162. package/dist/src/lib/startup/MfStartupChunkDependenciesPlugin.js +56 -75
  163. package/dist/src/lib/startup/MfStartupChunkDependenciesPlugin.js.map +1 -1
  164. package/dist/src/lib/startup/StartupHelpers.d.ts +11 -6
  165. package/dist/src/lib/startup/StartupHelpers.js +128 -178
  166. package/dist/src/lib/startup/StartupHelpers.js.map +1 -1
  167. package/dist/src/prefetch.d.ts +3 -2
  168. package/dist/src/prefetch.js +17 -8
  169. package/dist/src/rspack.d.ts +3 -2
  170. package/dist/src/rspack.js +35 -11
  171. package/dist/src/runtime/AddRuntimeRequirementToPromiseExternalPlugin.d.ts +8 -4
  172. package/dist/src/runtime/AddRuntimeRequirementToPromiseExternalPlugin.js +19 -16
  173. package/dist/src/runtime/AddRuntimeRequirementToPromiseExternalPlugin.js.map +1 -1
  174. package/dist/src/runtime.d.ts +1 -1
  175. package/dist/src/runtime.js +11 -18
  176. package/dist/src/schemas/container/ContainerPlugin.check.d.ts +13 -5
  177. package/dist/src/schemas/container/ContainerPlugin.check.js +958 -1218
  178. package/dist/src/schemas/container/ContainerPlugin.check.js.map +1 -1
  179. package/dist/src/schemas/container/ContainerPlugin.d.ts +271 -268
  180. package/dist/src/schemas/container/ContainerPlugin.js +273 -361
  181. package/dist/src/schemas/container/ContainerPlugin.js.map +1 -1
  182. package/dist/src/schemas/container/ContainerReferencePlugin.check.d.ts +13 -5
  183. package/dist/src/schemas/container/ContainerReferencePlugin.check.js +335 -443
  184. package/dist/src/schemas/container/ContainerReferencePlugin.check.js.map +1 -1
  185. package/dist/src/schemas/container/ContainerReferencePlugin.d.ts +102 -99
  186. package/dist/src/schemas/container/ContainerReferencePlugin.js +122 -162
  187. package/dist/src/schemas/container/ContainerReferencePlugin.js.map +1 -1
  188. package/dist/src/schemas/container/ExternalsType.check.d.ts +13 -5
  189. package/dist/src/schemas/container/ExternalsType.check.js +36 -62
  190. package/dist/src/schemas/container/ExternalsType.check.js.map +1 -1
  191. package/dist/src/schemas/container/ExternalsType.d.ts +5 -2
  192. package/dist/src/schemas/container/ExternalsType.js +8 -11
  193. package/dist/src/schemas/container/ExternalsType.js.map +1 -1
  194. package/dist/src/schemas/container/ModuleFederationPlugin.check.js +3001 -4812
  195. package/dist/src/schemas/container/ModuleFederationPlugin.check.js.map +1 -1
  196. package/dist/src/schemas/container/ModuleFederationPlugin.d.ts +819 -814
  197. package/dist/src/schemas/container/ModuleFederationPlugin.js +780 -1053
  198. package/dist/src/schemas/container/ModuleFederationPlugin.js.map +1 -1
  199. package/dist/src/schemas/sharing/ConsumeSharedPlugin.check.d.ts +13 -5
  200. package/dist/src/schemas/sharing/ConsumeSharedPlugin.check.js +568 -768
  201. package/dist/src/schemas/sharing/ConsumeSharedPlugin.check.js.map +1 -1
  202. package/dist/src/schemas/sharing/ConsumeSharedPlugin.d.ts +197 -194
  203. package/dist/src/schemas/sharing/ConsumeSharedPlugin.js +212 -238
  204. package/dist/src/schemas/sharing/ConsumeSharedPlugin.js.map +1 -1
  205. package/dist/src/schemas/sharing/ProvideSharedPlugin.check.d.ts +13 -5
  206. package/dist/src/schemas/sharing/ProvideSharedPlugin.check.js +598 -804
  207. package/dist/src/schemas/sharing/ProvideSharedPlugin.check.js.map +1 -1
  208. package/dist/src/schemas/sharing/ProvideSharedPlugin.d.ts +184 -181
  209. package/dist/src/schemas/sharing/ProvideSharedPlugin.js +196 -229
  210. package/dist/src/schemas/sharing/ProvideSharedPlugin.js.map +1 -1
  211. package/dist/src/schemas/sharing/ProviderSharedPlugin.check.d.ts +12 -4
  212. package/dist/src/schemas/sharing/ProviderSharedPlugin.check.js +285 -482
  213. package/dist/src/schemas/sharing/ProviderSharedPlugin.check.js.map +1 -1
  214. package/dist/src/schemas/sharing/ProviderSharedPlugin.d.ts +103 -100
  215. package/dist/src/schemas/sharing/ProviderSharedPlugin.js +104 -126
  216. package/dist/src/schemas/sharing/ProviderSharedPlugin.js.map +1 -1
  217. package/dist/src/schemas/sharing/SharePlugin.check.d.ts +13 -5
  218. package/dist/src/schemas/sharing/SharePlugin.check.js +749 -965
  219. package/dist/src/schemas/sharing/SharePlugin.check.js.map +1 -1
  220. package/dist/src/schemas/sharing/SharePlugin.d.ts +245 -242
  221. package/dist/src/schemas/sharing/SharePlugin.js +256 -293
  222. package/dist/src/schemas/sharing/SharePlugin.js.map +1 -1
  223. package/dist/src/utils.d.ts +3 -0
  224. package/dist/src/utils.js +35 -26
  225. package/dist/src/utils.js.map +1 -1
  226. package/dist/src/webpack.d.ts +2 -2
  227. package/dist/src/webpack.js +6 -40
  228. package/dist/src/wrapper/AsyncBoundaryPlugin.d.ts +9 -4
  229. package/dist/src/wrapper/AsyncBoundaryPlugin.js +12 -11
  230. package/dist/src/wrapper/AsyncBoundaryPlugin.js.map +1 -1
  231. package/dist/src/wrapper/BaseWrapperPlugin.d.ts +18 -13
  232. package/dist/src/wrapper/BaseWrapperPlugin.js +39 -39
  233. package/dist/src/wrapper/BaseWrapperPlugin.js.map +1 -1
  234. package/dist/src/wrapper/ConsumeSharedPlugin.d.ts +10 -4
  235. package/dist/src/wrapper/ConsumeSharedPlugin.js +12 -11
  236. package/dist/src/wrapper/ConsumeSharedPlugin.js.map +1 -1
  237. package/dist/src/wrapper/ContainerPlugin.d.ts +9 -4
  238. package/dist/src/wrapper/ContainerPlugin.js +12 -11
  239. package/dist/src/wrapper/ContainerPlugin.js.map +1 -1
  240. package/dist/src/wrapper/ContainerReferencePlugin.d.ts +9 -4
  241. package/dist/src/wrapper/ContainerReferencePlugin.js +12 -11
  242. package/dist/src/wrapper/ContainerReferencePlugin.js.map +1 -1
  243. package/dist/src/wrapper/FederationModulesPlugin.d.ts +18 -10
  244. package/dist/src/wrapper/FederationModulesPlugin.js +19 -19
  245. package/dist/src/wrapper/FederationModulesPlugin.js.map +1 -1
  246. package/dist/src/wrapper/FederationRuntimePlugin.d.ts +11 -6
  247. package/dist/src/wrapper/FederationRuntimePlugin.js +18 -17
  248. package/dist/src/wrapper/FederationRuntimePlugin.js.map +1 -1
  249. package/dist/src/wrapper/HoistContainerReferencesPlugin.d.ts +8 -3
  250. package/dist/src/wrapper/HoistContainerReferencesPlugin.js +12 -11
  251. package/dist/src/wrapper/HoistContainerReferencesPlugin.js.map +1 -1
  252. package/dist/src/wrapper/ModuleFederationPlugin.d.ts +12 -7
  253. package/dist/src/wrapper/ModuleFederationPlugin.js +73 -99
  254. package/dist/src/wrapper/ModuleFederationPlugin.js.map +1 -1
  255. package/dist/src/wrapper/ProvideSharedPlugin.d.ts +10 -4
  256. package/dist/src/wrapper/ProvideSharedPlugin.js +12 -11
  257. package/dist/src/wrapper/ProvideSharedPlugin.js.map +1 -1
  258. package/dist/src/wrapper/SharePlugin.d.ts +10 -4
  259. package/dist/src/wrapper/SharePlugin.js +12 -11
  260. package/dist/src/wrapper/SharePlugin.js.map +1 -1
  261. package/dist/src/wrapper/TreeShakingSharedPlugin.d.ts +9 -4
  262. package/dist/src/wrapper/TreeShakingSharedPlugin.js +12 -11
  263. package/dist/src/wrapper/TreeShakingSharedPlugin.js.map +1 -1
  264. package/package.json +23 -14
  265. package/dist/package.json +0 -110
  266. package/dist/src/declarations/plugins/container/AsyncDependenciesBlock.d.ts +0 -57
  267. package/dist/src/declarations/plugins/container/ModuleFactory.d.ts +0 -33
  268. package/dist/src/declarations/plugins/container/ObjectDeserializerContext.d.ts +0 -4
  269. package/dist/src/declarations/plugins/container/StaticExportsDependency.d.ts +0 -28
  270. package/dist/src/declarations/plugins/container/Template.d.ts +0 -198
  271. package/dist/src/declarations/plugins/container/WebpackError.d.ts +0 -33
  272. package/dist/src/declarations/plugins/sharing/ConsumeSharedModule.d.ts +0 -86
  273. package/dist/src/declarations/plugins/sharing/ConsumeSharedPlugin.d.ts +0 -100
  274. package/dist/src/declarations/plugins/sharing/ProvideSharedPlugin.d.ts +0 -102
  275. package/dist/src/declarations/plugins/sharing/SharePlugin.d.ts +0 -116
  276. package/dist/src/lib/container/runtime/ChildCompilationRuntimePlugin.d.ts +0 -20
  277. package/dist/src/lib/container/runtime/ChildCompilationRuntimePlugin.js +0 -222
  278. package/dist/src/lib/container/runtime/ChildCompilationRuntimePlugin.js.map +0 -1
  279. package/dist/src/prefetch.js.map +0 -1
  280. package/dist/src/rspack.js.map +0 -1
  281. package/dist/src/runtime.js.map +0 -1
  282. package/dist/src/types/runtime.d.ts +0 -10
  283. package/dist/src/types/runtime.js +0 -3
  284. package/dist/src/types/runtime.js.map +0 -1
  285. package/dist/src/webpack.js.map +0 -1
@@ -1,27 +1,23 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_runtime = require('../../../../_virtual/_rolldown/runtime.js');
3
+ const require_lib_sharing_tree_shaking_SharedContainerPlugin_SharedEntryModule = require('./SharedEntryModule.js');
4
+ let _module_federation_sdk_normalize_webpack_path = require("@module-federation/sdk/normalize-webpack-path");
5
+
6
+ //#region src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryModuleFactory.ts
7
+ const ModuleFactory = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/ModuleFactory"));
8
+ var SharedEntryModuleFactory = class extends ModuleFactory {
9
+ /**
10
+ * @param {ModuleFactoryCreateData} data data object
11
+ * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
12
+ * @returns {void}
13
+ */
14
+ create(data, callback) {
15
+ const { dependencies } = data;
16
+ const dep = dependencies[0];
17
+ callback(null, { module: new require_lib_sharing_tree_shaking_SharedContainerPlugin_SharedEntryModule.default(dep.name, dep.request) });
18
+ }
4
19
  };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const normalize_webpack_path_1 = require("@module-federation/sdk/normalize-webpack-path");
7
- const SharedEntryModule_1 = __importDefault(require("./SharedEntryModule"));
8
- const ModuleFactory = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack/lib/ModuleFactory'));
9
- class SharedEntryModuleFactory extends ModuleFactory {
10
- /**
11
- * @param {ModuleFactoryCreateData} data data object
12
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
13
- * @returns {void}
14
- */
15
- // @ts-ignore
16
- create(data, callback) {
17
- const { dependencies } = data;
18
- const containerDependencies = dependencies;
19
- const dep = containerDependencies[0];
20
- callback(null, {
21
- // @ts-ignore
22
- module: new SharedEntryModule_1.default(dep.name, dep.request),
23
- });
24
- }
25
- }
20
+
21
+ //#endregion
26
22
  exports.default = SharedEntryModuleFactory;
27
23
  //# sourceMappingURL=SharedEntryModuleFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SharedEntryModuleFactory.js","sourceRoot":"","sources":["../../../../../../src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryModuleFactory.ts"],"names":[],"mappings":";;;;;AAAA,0FAAqF;AAErF,4EAAoD;AAEpD,MAAM,aAAa,GAAG,OAAO,CAC3B,IAAA,6CAAoB,EAAC,2BAA2B,CAAC,CACJ,CAAC;AAMhD,MAAqB,wBAAyB,SAAQ,aAAa;IACjE;;;;OAIG;IACH,aAAa;IACJ,MAAM,CACb,IAA6B,EAC7B,QAAoE;QAEpE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,qBAAqB,GACzB,YAAkD,CAAC;QACrD,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAErC,QAAQ,CAAC,IAAI,EAAE;YACb,aAAa;YACb,MAAM,EAAE,IAAI,2BAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;SACrD,CAAC,CAAC;IACL,CAAC;CACF;AArBD,2CAqBC"}
1
+ {"version":3,"file":"SharedEntryModuleFactory.js","names":["SharedEntryModule"],"sources":["../../../../../../src/lib/sharing/tree-shaking/SharedContainerPlugin/SharedEntryModuleFactory.ts"],"sourcesContent":["import { normalizeWebpackPath } from '@module-federation/sdk/normalize-webpack-path';\nimport type SharedEntryDependency from './SharedEntryDependency';\nimport SharedEntryModule from './SharedEntryModule';\n\nconst ModuleFactory = require(\n normalizeWebpackPath('webpack/lib/ModuleFactory'),\n) as typeof import('webpack/lib/ModuleFactory');\nimport type {\n ModuleFactoryCreateData,\n ModuleFactoryResult,\n} from 'webpack/lib/ModuleFactory';\n\nexport default class SharedEntryModuleFactory extends ModuleFactory {\n /**\n * @param {ModuleFactoryCreateData} data data object\n * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback\n * @returns {void}\n */\n // @ts-ignore\n override create(\n data: ModuleFactoryCreateData,\n callback: (error: Error | null, result: ModuleFactoryResult) => void,\n ): void {\n const { dependencies } = data;\n const containerDependencies =\n dependencies as unknown as SharedEntryDependency[];\n const dep = containerDependencies[0];\n\n callback(null, {\n // @ts-ignore\n module: new SharedEntryModule(dep.name, dep.request),\n });\n }\n}\n"],"mappings":";;;;;;AAIA,MAAM,gBAAgB,gFACC,4BAA4B,CAClD;AAMD,IAAqB,2BAArB,cAAsD,cAAc;;;;;;CAOlE,AAAS,OACP,MACA,UACM;EACN,MAAM,EAAE,iBAAiB;EAGzB,MAAM,MADJ,aACgC;AAElC,WAAS,MAAM,EAEb,QAAQ,IAAIA,iFAAkB,IAAI,MAAM,IAAI,QAAQ,EACrD,CAAC"}
@@ -1,18 +1,23 @@
1
- import type { WebpackPluginInstance, Compiler } from 'webpack';
2
- import { moduleFederationPlugin } from '@module-federation/sdk';
3
- import { ReferencedExports } from './SharedUsedExportsOptimizerRuntimeModule';
4
- import { NormalizedSharedOptions } from '../SharePlugin';
5
- export type CustomReferencedExports = {
6
- [sharedName: string]: string[];
1
+ import { NormalizedSharedOptions } from "../SharePlugin.js";
2
+ import { ReferencedExports } from "./SharedUsedExportsOptimizerRuntimeModule.js";
3
+ import { moduleFederationPlugin } from "@module-federation/sdk";
4
+ import { Compiler, WebpackPluginInstance } from "webpack";
5
+
6
+ //#region src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerPlugin.d.ts
7
+ type CustomReferencedExports = {
8
+ [sharedName: string]: string[];
7
9
  };
8
- export default class SharedUsedExportsOptimizerPlugin implements WebpackPluginInstance {
9
- name: string;
10
- sharedReferencedExports: ReferencedExports;
11
- private sharedOptions;
12
- private injectTreeShakingUsedExports;
13
- private manifestOptions;
14
- ignoredRuntime: string[];
15
- constructor(sharedOptions: NormalizedSharedOptions, injectTreeShakingUsedExports?: boolean, ignoredRuntime?: string[], manifestOptions?: moduleFederationPlugin.ModuleFederationPluginOptions['manifest']);
16
- private applyCustomReferencedExports;
17
- apply(compiler: Compiler): void;
10
+ declare class SharedUsedExportsOptimizerPlugin implements WebpackPluginInstance {
11
+ name: string;
12
+ sharedReferencedExports: ReferencedExports;
13
+ private sharedOptions;
14
+ private injectTreeShakingUsedExports;
15
+ private manifestOptions;
16
+ ignoredRuntime: string[];
17
+ constructor(sharedOptions: NormalizedSharedOptions, injectTreeShakingUsedExports?: boolean, ignoredRuntime?: string[], manifestOptions?: moduleFederationPlugin.ModuleFederationPluginOptions['manifest']);
18
+ private applyCustomReferencedExports;
19
+ apply(compiler: Compiler): void;
18
20
  }
21
+ //#endregion
22
+ export { CustomReferencedExports, SharedUsedExportsOptimizerPlugin as default };
23
+ //# sourceMappingURL=SharedUsedExportsOptimizerPlugin.d.ts.map
@@ -1,237 +1,163 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const sdk_1 = require("@module-federation/sdk");
7
- const SharedUsedExportsOptimizerRuntimeModule_1 = __importDefault(require("./SharedUsedExportsOptimizerRuntimeModule"));
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
3
+ const require_lib_sharing_tree_shaking_SharedUsedExportsOptimizerRuntimeModule = require('./SharedUsedExportsOptimizerRuntimeModule.js');
4
+ let _module_federation_sdk = require("@module-federation/sdk");
5
+
6
+ //#region src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerPlugin.ts
8
7
  function isHarmonyImportSpecifierDependency(dependency) {
9
- return dependency.type === 'harmony import specifier';
8
+ return dependency.type === "harmony import specifier";
10
9
  }
11
- // dynamic import import('ui-lib')
12
10
  function isImportDependency(dependency) {
13
- return dependency.type === 'import()';
14
- }
15
- class SharedUsedExportsOptimizerPlugin {
16
- constructor(sharedOptions, injectTreeShakingUsedExports, ignoredRuntime, manifestOptions) {
17
- this.name = 'SharedUsedExportsOptimizerPlugin';
18
- this.sharedOptions = sharedOptions;
19
- this.injectTreeShakingUsedExports = injectTreeShakingUsedExports ?? true;
20
- this.manifestOptions = manifestOptions ?? {};
21
- this.sharedReferencedExports = new Map();
22
- this.sharedOptions.forEach(([key, config]) => {
23
- if (!config.treeShaking) {
24
- return;
25
- }
26
- this.sharedReferencedExports.set(key, new Set());
27
- });
28
- this.ignoredRuntime = ignoredRuntime || [];
29
- }
30
- applyCustomReferencedExports() {
31
- const { sharedReferencedExports, sharedOptions } = this;
32
- const addCustomExports = (shareKey, exports) => {
33
- if (!sharedReferencedExports.get(shareKey)) {
34
- sharedReferencedExports.set(shareKey, new Set());
35
- }
36
- const sharedExports = sharedReferencedExports.get(shareKey);
37
- exports.forEach((item) => {
38
- sharedExports.add(item);
39
- });
40
- };
41
- sharedOptions.forEach(([shareKey, config]) => {
42
- if (config.treeShaking?.usedExports) {
43
- addCustomExports(shareKey, config.treeShaking.usedExports);
44
- }
45
- });
46
- }
47
- apply(compiler) {
48
- const { sharedReferencedExports, sharedOptions, injectTreeShakingUsedExports, manifestOptions, } = this;
49
- if (!sharedOptions.length) {
50
- return;
51
- }
52
- compiler.hooks.compilation.tap('SharedUsedExportsOptimizerPlugin', (compilation) => {
53
- // collect referenced export
54
- compilation.hooks.dependencyReferencedExports.tap('SharedUsedExportsOptimizerPlugin', (referencedExports, dependency, runtime) => {
55
- if (!('request' in dependency)) {
56
- return referencedExports;
57
- }
58
- const shareKey = dependency.request;
59
- if (typeof shareKey !== 'string' ||
60
- sharedOptions.every(([key]) => key !== shareKey)) {
61
- return referencedExports;
62
- }
63
- let currentReferencedExports = referencedExports;
64
- if (isImportDependency(dependency) &&
65
- referencedExports ===
66
- compilation.compiler.webpack.Dependency
67
- .EXPORTS_OBJECT_REFERENCED) {
68
- sharedReferencedExports.delete(shareKey);
69
- return currentReferencedExports;
70
- }
71
- if (isHarmonyImportSpecifierDependency(dependency) &&
72
- dependency.ids &&
73
- dependency.ids[0] === 'default') {
74
- const { ids, referencedPropertiesInDestructuring } = dependency;
75
- const getOriginalReferencedExports = () => {
76
- if (referencedPropertiesInDestructuring) {
77
- /** @type {string[][]} */
78
- const refs = [];
79
- for (const key of referencedPropertiesInDestructuring) {
80
- refs.push({
81
- name: ids ? ids.concat([key]) : [key],
82
- canMangle: false,
83
- });
84
- }
85
- return refs;
86
- }
87
- return ids ? [ids] : [[]];
88
- };
89
- currentReferencedExports = getOriginalReferencedExports();
90
- }
91
- if (!currentReferencedExports.length) {
92
- return referencedExports;
93
- }
94
- currentReferencedExports.forEach((item) => {
95
- if (typeof runtime !== 'string') {
96
- return;
97
- }
98
- const exportNames = [];
99
- if (Array.isArray(item)) {
100
- exportNames.push(...item);
101
- }
102
- else if (Array.isArray(item.name)) {
103
- exportNames.push(...item.name);
104
- }
105
- exportNames.forEach((i) => {
106
- const moduleExports = sharedReferencedExports.get(shareKey);
107
- if (!moduleExports) {
108
- return;
109
- }
110
- moduleExports.add(i);
111
- });
112
- });
113
- return referencedExports;
114
- });
115
- // treeShaking shared module
116
- compilation.hooks.optimizeDependencies.tap({
117
- name: 'SharedUsedExportsOptimizerPlugin',
118
- stage: 1,
119
- }, (modules) => {
120
- this.applyCustomReferencedExports();
121
- const sharedModules = [...modules].filter((m) => [
122
- 'consume-shared-module',
123
- 'provide-module',
124
- 'shared-entry-module',
125
- ].includes(m.type));
126
- const moduleGraph = compilation.moduleGraph;
127
- sharedModules.forEach((module) => {
128
- const shareKey = module.options?.shareKey ||
129
- // @ts-expect-error FIXME: need to add general shareKey field
130
- module._name ||
131
- // @ts-ignore
132
- module._name;
133
- if (!shareKey) {
134
- return;
135
- }
136
- if (!sharedOptions.find(([key]) => key === shareKey)?.[1]
137
- .treeShaking) {
138
- return;
139
- }
140
- const referenceExports = sharedReferencedExports.get(shareKey);
141
- if (!referenceExports || !referenceExports.size) {
142
- return;
143
- }
144
- const realSharedModule = [...modules].find((m) => 'rawRequest' in m && m.rawRequest === shareKey);
145
- if (realSharedModule?.factoryMeta?.sideEffectFree !== true) {
146
- referenceExports.clear();
147
- return;
148
- }
149
- // mark used exports
150
- const handleDependency = (dep) => {
151
- const usedExport = [...referenceExports];
152
- const referencedModule = moduleGraph.getModule(dep);
153
- if (!referencedModule)
154
- return;
155
- const exportsInfo = moduleGraph.getExportsInfo(referencedModule);
156
- for (let i = 0; i < usedExport.length; i++) {
157
- const exportInfo = exportsInfo.getExportInfo(usedExport[i]);
158
- exportInfo.setUsed(compiler.webpack.UsageState.Used, undefined);
159
- }
160
- };
161
- module.blocks.forEach((block) => {
162
- block.dependencies.forEach((dep) => {
163
- handleDependency(dep);
164
- });
165
- });
166
- module.dependencies.forEach((dep) => {
167
- handleDependency(dep);
168
- });
169
- module.factoryMeta ||= {};
170
- module.factoryMeta.sideEffectFree = true;
171
- if (!realSharedModule) {
172
- return;
173
- }
174
- const exportsInfo = compilation.moduleGraph.getExportsInfo(realSharedModule);
175
- let canUpdateModuleUsedStage = true;
176
- for (const subExport of exportsInfo.exports) {
177
- const used = subExport.getUsed(undefined);
178
- if (used !== 3 && used !== 0) {
179
- if (referenceExports.has(subExport.name)) {
180
- continue;
181
- }
182
- canUpdateModuleUsedStage = false;
183
- break;
184
- }
185
- }
186
- if (canUpdateModuleUsedStage) {
187
- for (const exportInfo of exportsInfo.exports) {
188
- exportInfo.setUsedConditionally((used) => used === 3, 0, undefined);
189
- }
190
- // exportsInfo.otherExportsInfo.setUsedConditionally(
191
- // (used) => used === 3,
192
- // 0,
193
- // undefined,
194
- // );
195
- }
196
- });
197
- });
198
- // inject reference exports to stats
199
- if (manifestOptions) {
200
- compilation.hooks.processAssets.tapPromise({
201
- name: 'injectReferenceExports',
202
- stage: compilation.constructor
203
- .PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER,
204
- }, async () => {
205
- const { statsFileName } = (0, sdk_1.getManifestFileName)(manifestOptions);
206
- const stats = compilation.getAsset(statsFileName);
207
- if (!stats) {
208
- return;
209
- }
210
- const statsContent = JSON.parse(stats.source.source().toString());
211
- for (const key of sharedReferencedExports.keys()) {
212
- const sharedModule = statsContent.shared.find((s) => s.name === key);
213
- if (!sharedModule) {
214
- continue;
215
- }
216
- const sharedReferenceExports = sharedReferencedExports.get(key);
217
- if (!sharedReferenceExports) {
218
- continue;
219
- }
220
- sharedModule.usedExports = [...sharedReferenceExports];
221
- }
222
- compilation.updateAsset(statsFileName, new compiler.webpack.sources.RawSource(JSON.stringify(statsContent, null, 2)));
223
- });
224
- }
225
- if (!injectTreeShakingUsedExports) {
226
- return;
227
- }
228
- compilation.hooks.additionalTreeRuntimeRequirements.tap('SharedUsedExportsOptimizerPlugin', (chunk, set) => {
229
- set.add(compiler.webpack.RuntimeGlobals.runtimeId);
230
- // inject usedExports info to bundler runtime
231
- compilation.addRuntimeModule(chunk, new SharedUsedExportsOptimizerRuntimeModule_1.default(this.sharedReferencedExports));
232
- });
233
- });
234
- }
11
+ return dependency.type === "import()";
235
12
  }
13
+ var SharedUsedExportsOptimizerPlugin = class {
14
+ constructor(sharedOptions, injectTreeShakingUsedExports, ignoredRuntime, manifestOptions) {
15
+ this.name = "SharedUsedExportsOptimizerPlugin";
16
+ this.sharedOptions = sharedOptions;
17
+ this.injectTreeShakingUsedExports = injectTreeShakingUsedExports ?? true;
18
+ this.manifestOptions = manifestOptions ?? {};
19
+ this.sharedReferencedExports = /* @__PURE__ */ new Map();
20
+ this.sharedOptions.forEach(([key, config]) => {
21
+ if (!config.treeShaking) return;
22
+ this.sharedReferencedExports.set(key, /* @__PURE__ */ new Set());
23
+ });
24
+ this.ignoredRuntime = ignoredRuntime || [];
25
+ }
26
+ applyCustomReferencedExports() {
27
+ const { sharedReferencedExports, sharedOptions } = this;
28
+ const addCustomExports = (shareKey, exports) => {
29
+ if (!sharedReferencedExports.get(shareKey)) sharedReferencedExports.set(shareKey, /* @__PURE__ */ new Set());
30
+ const sharedExports = sharedReferencedExports.get(shareKey);
31
+ exports.forEach((item) => {
32
+ sharedExports.add(item);
33
+ });
34
+ };
35
+ sharedOptions.forEach(([shareKey, config]) => {
36
+ if (config.treeShaking?.usedExports) addCustomExports(shareKey, config.treeShaking.usedExports);
37
+ });
38
+ }
39
+ apply(compiler) {
40
+ const { sharedReferencedExports, sharedOptions, injectTreeShakingUsedExports, manifestOptions } = this;
41
+ if (!sharedOptions.length) return;
42
+ compiler.hooks.compilation.tap("SharedUsedExportsOptimizerPlugin", (compilation) => {
43
+ compilation.hooks.dependencyReferencedExports.tap("SharedUsedExportsOptimizerPlugin", (referencedExports, dependency, runtime) => {
44
+ if (!("request" in dependency)) return referencedExports;
45
+ const shareKey = dependency.request;
46
+ if (typeof shareKey !== "string" || sharedOptions.every(([key]) => key !== shareKey)) return referencedExports;
47
+ let currentReferencedExports = referencedExports;
48
+ if (isImportDependency(dependency) && referencedExports === compilation.compiler.webpack.Dependency.EXPORTS_OBJECT_REFERENCED) {
49
+ sharedReferencedExports.delete(shareKey);
50
+ return currentReferencedExports;
51
+ }
52
+ if (isHarmonyImportSpecifierDependency(dependency) && dependency.ids && dependency.ids[0] === "default") {
53
+ const { ids, referencedPropertiesInDestructuring } = dependency;
54
+ const getOriginalReferencedExports = () => {
55
+ if (referencedPropertiesInDestructuring) {
56
+ /** @type {string[][]} */
57
+ const refs = [];
58
+ for (const key of referencedPropertiesInDestructuring) refs.push({
59
+ name: ids ? ids.concat([key]) : [key],
60
+ canMangle: false
61
+ });
62
+ return refs;
63
+ }
64
+ return ids ? [ids] : [[]];
65
+ };
66
+ currentReferencedExports = getOriginalReferencedExports();
67
+ }
68
+ if (!currentReferencedExports.length) return referencedExports;
69
+ currentReferencedExports.forEach((item) => {
70
+ if (typeof runtime !== "string") return;
71
+ const exportNames = [];
72
+ if (Array.isArray(item)) exportNames.push(...item);
73
+ else if (Array.isArray(item.name)) exportNames.push(...item.name);
74
+ exportNames.forEach((i) => {
75
+ const moduleExports = sharedReferencedExports.get(shareKey);
76
+ if (!moduleExports) return;
77
+ moduleExports.add(i);
78
+ });
79
+ });
80
+ return referencedExports;
81
+ });
82
+ compilation.hooks.optimizeDependencies.tap({
83
+ name: "SharedUsedExportsOptimizerPlugin",
84
+ stage: 1
85
+ }, (modules) => {
86
+ this.applyCustomReferencedExports();
87
+ const sharedModules = [...modules].filter((m) => [
88
+ "consume-shared-module",
89
+ "provide-module",
90
+ "shared-entry-module"
91
+ ].includes(m.type));
92
+ const moduleGraph = compilation.moduleGraph;
93
+ sharedModules.forEach((module) => {
94
+ const shareKey = module.options?.shareKey || module._name || module._name;
95
+ if (!shareKey) return;
96
+ if (!sharedOptions.find(([key]) => key === shareKey)?.[1].treeShaking) return;
97
+ const referenceExports = sharedReferencedExports.get(shareKey);
98
+ if (!referenceExports || !referenceExports.size) return;
99
+ const realSharedModule = [...modules].find((m) => "rawRequest" in m && m.rawRequest === shareKey);
100
+ if (realSharedModule?.factoryMeta?.sideEffectFree !== true) {
101
+ referenceExports.clear();
102
+ return;
103
+ }
104
+ const handleDependency = (dep) => {
105
+ const usedExport = [...referenceExports];
106
+ const referencedModule = moduleGraph.getModule(dep);
107
+ if (!referencedModule) return;
108
+ const exportsInfo = moduleGraph.getExportsInfo(referencedModule);
109
+ for (let i = 0; i < usedExport.length; i++) exportsInfo.getExportInfo(usedExport[i]).setUsed(compiler.webpack.UsageState.Used, void 0);
110
+ };
111
+ module.blocks.forEach((block) => {
112
+ block.dependencies.forEach((dep) => {
113
+ handleDependency(dep);
114
+ });
115
+ });
116
+ module.dependencies.forEach((dep) => {
117
+ handleDependency(dep);
118
+ });
119
+ module.factoryMeta ||= {};
120
+ module.factoryMeta.sideEffectFree = true;
121
+ if (!realSharedModule) return;
122
+ const exportsInfo = compilation.moduleGraph.getExportsInfo(realSharedModule);
123
+ let canUpdateModuleUsedStage = true;
124
+ for (const subExport of exportsInfo.exports) {
125
+ const used = subExport.getUsed(void 0);
126
+ if (used !== 3 && used !== 0) {
127
+ if (referenceExports.has(subExport.name)) continue;
128
+ canUpdateModuleUsedStage = false;
129
+ break;
130
+ }
131
+ }
132
+ if (canUpdateModuleUsedStage) for (const exportInfo of exportsInfo.exports) exportInfo.setUsedConditionally((used) => used === 3, 0, void 0);
133
+ });
134
+ });
135
+ if (manifestOptions) compilation.hooks.processAssets.tapPromise({
136
+ name: "injectReferenceExports",
137
+ stage: compilation.constructor.PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER
138
+ }, async () => {
139
+ const { statsFileName } = (0, _module_federation_sdk.getManifestFileName)(manifestOptions);
140
+ const stats = compilation.getAsset(statsFileName);
141
+ if (!stats) return;
142
+ const statsContent = JSON.parse(stats.source.source().toString());
143
+ for (const key of sharedReferencedExports.keys()) {
144
+ const sharedModule = statsContent.shared.find((s) => s.name === key);
145
+ if (!sharedModule) continue;
146
+ const sharedReferenceExports = sharedReferencedExports.get(key);
147
+ if (!sharedReferenceExports) continue;
148
+ sharedModule.usedExports = [...sharedReferenceExports];
149
+ }
150
+ compilation.updateAsset(statsFileName, new compiler.webpack.sources.RawSource(JSON.stringify(statsContent, null, 2)));
151
+ });
152
+ if (!injectTreeShakingUsedExports) return;
153
+ compilation.hooks.additionalTreeRuntimeRequirements.tap("SharedUsedExportsOptimizerPlugin", (chunk, set) => {
154
+ set.add(compiler.webpack.RuntimeGlobals.runtimeId);
155
+ compilation.addRuntimeModule(chunk, new require_lib_sharing_tree_shaking_SharedUsedExportsOptimizerRuntimeModule.default(this.sharedReferencedExports));
156
+ });
157
+ });
158
+ }
159
+ };
160
+
161
+ //#endregion
236
162
  exports.default = SharedUsedExportsOptimizerPlugin;
237
163
  //# sourceMappingURL=SharedUsedExportsOptimizerPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SharedUsedExportsOptimizerPlugin.js","sourceRoot":"","sources":["../../../../../src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerPlugin.ts"],"names":[],"mappings":";;;;;AAMA,gDAIgC;AAChC,wHAEmD;AAQnD,SAAS,kCAAkC,CACzC,UAAsB;IAEtB,OAAO,UAAU,CAAC,IAAI,KAAK,0BAA0B,CAAC;AACxD,CAAC;AAED,kCAAkC;AAClC,SAAS,kBAAkB,CAAC,UAAsB;IAChD,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC;AACxC,CAAC;AAED,MAAqB,gCAAgC;IAWnD,YACE,aAAsC,EACtC,4BAAsC,EACtC,cAAyB,EACzB,eAAkF;QAZpF,SAAI,GAAG,kCAAkC,CAAC;QAcxC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,IAAI,IAAI,CAAC;QACzE,IAAI,CAAC,eAAe,GAAG,eAAe,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,EAAE,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE;YAC3C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,EAAE,CAAC;IAC7C,CAAC;IAEO,4BAA4B;QAClC,MAAM,EAAE,uBAAuB,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QACxD,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,OAAiB,EAAE,EAAE;YAC/D,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,MAAM,aAAa,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAE7D,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACvB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;YAC3C,IAAI,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC;gBACpC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAkB;QACtB,MAAM,EACJ,uBAAuB,EACvB,aAAa,EACb,4BAA4B,EAC5B,eAAe,GAChB,GAAG,IAAI,CAAC;QACT,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAC5B,kCAAkC,EAClC,CAAC,WAAW,EAAE,EAAE;YACd,4BAA4B;YAC5B,WAAW,CAAC,KAAK,CAAC,2BAA2B,CAAC,GAAG,CAC/C,kCAAkC,EAClC,CAAC,iBAAiB,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;gBACzC,IAAI,CAAC,CAAC,SAAS,IAAI,UAAU,CAAC,EAAE,CAAC;oBAC/B,OAAO,iBAAiB,CAAC;gBAC3B,CAAC;gBACD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC;gBACpC,IACE,OAAO,QAAQ,KAAK,QAAQ;oBAC5B,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,EAChD,CAAC;oBACD,OAAO,iBAAiB,CAAC;gBAC3B,CAAC;gBACD,IAAI,wBAAwB,GAAG,iBAAiB,CAAC;gBACjD,IACE,kBAAkB,CAAC,UAAU,CAAC;oBAC9B,iBAAiB;wBACf,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;6BACpC,yBAAyB,EAC9B,CAAC;oBACD,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACzC,OAAO,wBAAwB,CAAC;gBAClC,CAAC;gBACD,IACE,kCAAkC,CAAC,UAAU,CAAC;oBAC9C,UAAU,CAAC,GAAG;oBACd,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAC/B,CAAC;oBACD,MAAM,EAAE,GAAG,EAAE,mCAAmC,EAAE,GAAG,UAAU,CAAC;oBAChE,MAAM,4BAA4B,GAAG,GAAG,EAAE;wBACxC,IAAI,mCAAmC,EAAE,CAAC;4BACxC,yBAAyB;4BACzB,MAAM,IAAI,GAAG,EAAE,CAAC;4BAChB,KAAK,MAAM,GAAG,IAAI,mCAAmC,EAAE,CAAC;gCACtD,IAAI,CAAC,IAAI,CAAC;oCACR,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oCACrC,SAAS,EAAE,KAAK;iCACjB,CAAC,CAAC;4BACL,CAAC;4BACD,OAAO,IAAI,CAAC;wBACd,CAAC;wBACD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5B,CAAC,CAAC;oBACF,wBAAwB,GAAG,4BAA4B,EAAE,CAAC;gBAC5D,CAAC;gBACD,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;oBACrC,OAAO,iBAAiB,CAAC;gBAC3B,CAAC;gBAED,wBAAwB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;wBAChC,OAAO;oBACT,CAAC;oBACD,MAAM,WAAW,GAAa,EAAE,CAAC;oBACjC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;oBAC5B,CAAC;yBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjC,CAAC;oBAED,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBACxB,MAAM,aAAa,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC5D,IAAI,CAAC,aAAa,EAAE,CAAC;4BACnB,OAAO;wBACT,CAAC;wBACD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,OAAO,iBAAiB,CAAC;YAC3B,CAAC,CACF,CAAC;YAEF,4BAA4B;YAC5B,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC,GAAG,CACxC;gBACE,IAAI,EAAE,kCAAkC;gBACxC,KAAK,EAAE,CAAC;aACT,EACD,CAAC,OAAO,EAAE,EAAE;gBACV,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBACpC,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C;oBACE,uBAAuB;oBACvB,gBAAgB;oBAChB,qBAAqB;iBACtB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAKjB,CAAC;gBACJ,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;gBAC5C,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC/B,MAAM,QAAQ,GACX,MAA8B,CAAC,OAAO,EAAE,QAAQ;wBACjD,6DAA6D;wBAC5D,MAA8B,CAAC,KAAK;wBACrC,aAAa;wBACZ,MAA4B,CAAC,KAAK,CAAC;oBACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO;oBACT,CAAC;oBACD,IACE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;yBAClD,WAAW,EACd,CAAC;wBACD,OAAO;oBACT,CAAC;oBACD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/D,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;wBAChD,OAAO;oBACT,CAAC;oBACD,MAAM,gBAAgB,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,CACtD,CAAC;oBACF,IAAI,gBAAgB,EAAE,WAAW,EAAE,cAAc,KAAK,IAAI,EAAE,CAAC;wBAC3D,gBAAgB,CAAC,KAAK,EAAE,CAAC;wBACzB,OAAO;oBACT,CAAC;oBACD,oBAAoB;oBACpB,MAAM,gBAAgB,GAAG,CAAC,GAAe,EAAE,EAAE;wBAC3C,MAAM,UAAU,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;wBAEzC,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACpD,IAAI,CAAC,gBAAgB;4BAAE,OAAO;wBAE9B,MAAM,WAAW,GACf,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;wBAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC5D,UAAU,CAAC,OAAO,CAChB,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAChC,SAAS,CACV,CAAC;wBACJ,CAAC;oBACH,CAAC,CAAC;oBAEF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC9B,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;4BACjC,gBAAgB,CAAC,GAAG,CAAC,CAAC;wBACxB,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;wBAClC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,WAAW,KAAK,EAAE,CAAC;oBAC1B,MAAM,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC;oBACzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACtB,OAAO;oBACT,CAAC;oBACD,MAAM,WAAW,GACf,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;oBAC3D,IAAI,wBAAwB,GAAG,IAAI,CAAC;oBACpC,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;wBAC5C,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBAC1C,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;4BAC7B,IAAI,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gCACzC,SAAS;4BACX,CAAC;4BACD,wBAAwB,GAAG,KAAK,CAAC;4BACjC,MAAM;wBACR,CAAC;oBACH,CAAC;oBAED,IAAI,wBAAwB,EAAE,CAAC;wBAC7B,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;4BAC7C,UAAU,CAAC,oBAAoB,CAC7B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,EACpB,CAAC,EACD,SAAS,CACV,CAAC;wBACJ,CAAC;wBACD,qDAAqD;wBACrD,0BAA0B;wBAC1B,OAAO;wBACP,eAAe;wBACf,KAAK;oBACP,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CACF,CAAC;YAEF,oCAAoC;YACpC,IAAI,eAAe,EAAE,CAAC;gBACpB,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CACxC;oBACE,IAAI,EAAE,wBAAwB;oBAC9B,KAAK,EAAG,WAAW,CAAC,WAAmB;yBACpC,sCAAsC;iBAC1C,EACD,KAAK,IAAI,EAAE;oBACT,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,yBAAmB,EAAC,eAAe,CAAC,CAAC;oBAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;oBAClD,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,OAAO;oBACT,CAAC;oBACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CACxB,CAAC;oBAEX,KAAK,MAAM,GAAG,IAAI,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC;wBACjD,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAC3C,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAC3B,CAAC;wBACF,IAAI,CAAC,YAAY,EAAE,CAAC;4BAClB,SAAS;wBACX,CAAC;wBAED,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAChE,IAAI,CAAC,sBAAsB,EAAE,CAAC;4BAC5B,SAAS;wBACX,CAAC;wBACD,YAAY,CAAC,WAAW,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAC;oBACzD,CAAC;oBAED,WAAW,CAAC,WAAW,CACrB,aAAa,EACb,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CACpC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CACtC,CACF,CAAC;gBACJ,CAAC,CACF,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,WAAW,CAAC,KAAK,CAAC,iCAAiC,CAAC,GAAG,CACrD,kCAAkC,EAClC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACb,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBAEnD,6CAA6C;gBAC7C,WAAW,CAAC,gBAAgB,CAC1B,KAAK,EACL,IAAI,iDAAuC,CACzC,IAAI,CAAC,uBAAuB,CAC7B,CACF,CAAC;YACJ,CAAC,CACF,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAzTD,mDAyTC"}
1
+ {"version":3,"file":"SharedUsedExportsOptimizerPlugin.js","names":["SharedUsedExportsOptimizerRuntimeModule"],"sources":["../../../../../src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerPlugin.ts"],"sourcesContent":["import type {\n WebpackPluginInstance,\n Compiler,\n Dependency,\n dependencies,\n} from 'webpack';\nimport {\n moduleFederationPlugin,\n type Stats,\n getManifestFileName,\n} from '@module-federation/sdk';\nimport SharedUsedExportsOptimizerRuntimeModule, {\n ReferencedExports,\n} from './SharedUsedExportsOptimizerRuntimeModule';\nimport { NormalizedSharedOptions } from '../SharePlugin';\nimport ConsumeSharedModule from '../ConsumeSharedModule';\nimport ProvideSharedModule from '../ProvideSharedModule';\nimport SharedEntryModule from './SharedContainerPlugin/SharedEntryModule';\n\nexport type CustomReferencedExports = { [sharedName: string]: string[] };\n\nfunction isHarmonyImportSpecifierDependency(\n dependency: Dependency,\n): dependency is dependencies.HarmonyImportSpecifierDependency {\n return dependency.type === 'harmony import specifier';\n}\n\n// dynamic import import('ui-lib')\nfunction isImportDependency(dependency: Dependency) {\n return dependency.type === 'import()';\n}\n\nexport default class SharedUsedExportsOptimizerPlugin implements WebpackPluginInstance {\n name = 'SharedUsedExportsOptimizerPlugin';\n\n sharedReferencedExports: ReferencedExports;\n private sharedOptions: NormalizedSharedOptions;\n private injectTreeShakingUsedExports: boolean;\n private manifestOptions: moduleFederationPlugin.ModuleFederationPluginOptions['manifest'];\n ignoredRuntime: string[];\n\n constructor(\n sharedOptions: NormalizedSharedOptions,\n injectTreeShakingUsedExports?: boolean,\n ignoredRuntime?: string[],\n manifestOptions?: moduleFederationPlugin.ModuleFederationPluginOptions['manifest'],\n ) {\n this.sharedOptions = sharedOptions;\n this.injectTreeShakingUsedExports = injectTreeShakingUsedExports ?? true;\n this.manifestOptions = manifestOptions ?? {};\n this.sharedReferencedExports = new Map();\n this.sharedOptions.forEach(([key, config]) => {\n if (!config.treeShaking) {\n return;\n }\n this.sharedReferencedExports.set(key, new Set());\n });\n this.ignoredRuntime = ignoredRuntime || [];\n }\n\n private applyCustomReferencedExports() {\n const { sharedReferencedExports, sharedOptions } = this;\n const addCustomExports = (shareKey: string, exports: string[]) => {\n if (!sharedReferencedExports.get(shareKey)) {\n sharedReferencedExports.set(shareKey, new Set());\n }\n const sharedExports = sharedReferencedExports.get(shareKey)!;\n\n exports.forEach((item) => {\n sharedExports.add(item);\n });\n };\n\n sharedOptions.forEach(([shareKey, config]) => {\n if (config.treeShaking?.usedExports) {\n addCustomExports(shareKey, config.treeShaking.usedExports);\n }\n });\n }\n\n apply(compiler: Compiler) {\n const {\n sharedReferencedExports,\n sharedOptions,\n injectTreeShakingUsedExports,\n manifestOptions,\n } = this;\n if (!sharedOptions.length) {\n return;\n }\n compiler.hooks.compilation.tap(\n 'SharedUsedExportsOptimizerPlugin',\n (compilation) => {\n // collect referenced export\n compilation.hooks.dependencyReferencedExports.tap(\n 'SharedUsedExportsOptimizerPlugin',\n (referencedExports, dependency, runtime) => {\n if (!('request' in dependency)) {\n return referencedExports;\n }\n const shareKey = dependency.request;\n if (\n typeof shareKey !== 'string' ||\n sharedOptions.every(([key]) => key !== shareKey)\n ) {\n return referencedExports;\n }\n let currentReferencedExports = referencedExports;\n if (\n isImportDependency(dependency) &&\n referencedExports ===\n compilation.compiler.webpack.Dependency\n .EXPORTS_OBJECT_REFERENCED\n ) {\n sharedReferencedExports.delete(shareKey);\n return currentReferencedExports;\n }\n if (\n isHarmonyImportSpecifierDependency(dependency) &&\n dependency.ids &&\n dependency.ids[0] === 'default'\n ) {\n const { ids, referencedPropertiesInDestructuring } = dependency;\n const getOriginalReferencedExports = () => {\n if (referencedPropertiesInDestructuring) {\n /** @type {string[][]} */\n const refs = [];\n for (const key of referencedPropertiesInDestructuring) {\n refs.push({\n name: ids ? ids.concat([key]) : [key],\n canMangle: false,\n });\n }\n return refs;\n }\n return ids ? [ids] : [[]];\n };\n currentReferencedExports = getOriginalReferencedExports();\n }\n if (!currentReferencedExports.length) {\n return referencedExports;\n }\n\n currentReferencedExports.forEach((item) => {\n if (typeof runtime !== 'string') {\n return;\n }\n const exportNames: string[] = [];\n if (Array.isArray(item)) {\n exportNames.push(...item);\n } else if (Array.isArray(item.name)) {\n exportNames.push(...item.name);\n }\n\n exportNames.forEach((i) => {\n const moduleExports = sharedReferencedExports.get(shareKey);\n if (!moduleExports) {\n return;\n }\n moduleExports.add(i);\n });\n });\n\n return referencedExports;\n },\n );\n\n // treeShaking shared module\n compilation.hooks.optimizeDependencies.tap(\n {\n name: 'SharedUsedExportsOptimizerPlugin',\n stage: 1,\n },\n (modules) => {\n this.applyCustomReferencedExports();\n const sharedModules = [...modules].filter((m) =>\n [\n 'consume-shared-module',\n 'provide-module',\n 'shared-entry-module',\n ].includes(m.type),\n ) as (\n | ConsumeSharedModule\n | ProvideSharedModule\n | SharedEntryModule\n )[];\n const moduleGraph = compilation.moduleGraph;\n sharedModules.forEach((module) => {\n const shareKey =\n (module as ConsumeSharedModule).options?.shareKey ||\n // @ts-expect-error FIXME: need to add general shareKey field\n (module as ProvideSharedModule)._name ||\n // @ts-ignore\n (module as SharedEntryModule)._name;\n if (!shareKey) {\n return;\n }\n if (\n !sharedOptions.find(([key]) => key === shareKey)?.[1]\n .treeShaking\n ) {\n return;\n }\n const referenceExports = sharedReferencedExports.get(shareKey);\n if (!referenceExports || !referenceExports.size) {\n return;\n }\n const realSharedModule = [...modules].find(\n (m) => 'rawRequest' in m && m.rawRequest === shareKey,\n );\n if (realSharedModule?.factoryMeta?.sideEffectFree !== true) {\n referenceExports.clear();\n return;\n }\n // mark used exports\n const handleDependency = (dep: Dependency) => {\n const usedExport = [...referenceExports];\n\n const referencedModule = moduleGraph.getModule(dep);\n if (!referencedModule) return;\n\n const exportsInfo =\n moduleGraph.getExportsInfo(referencedModule);\n\n for (let i = 0; i < usedExport.length; i++) {\n const exportInfo = exportsInfo.getExportInfo(usedExport[i]);\n exportInfo.setUsed(\n compiler.webpack.UsageState.Used,\n undefined,\n );\n }\n };\n\n module.blocks.forEach((block) => {\n block.dependencies.forEach((dep) => {\n handleDependency(dep);\n });\n });\n\n module.dependencies.forEach((dep) => {\n handleDependency(dep);\n });\n\n module.factoryMeta ||= {};\n module.factoryMeta.sideEffectFree = true;\n if (!realSharedModule) {\n return;\n }\n const exportsInfo =\n compilation.moduleGraph.getExportsInfo(realSharedModule);\n let canUpdateModuleUsedStage = true;\n for (const subExport of exportsInfo.exports) {\n const used = subExport.getUsed(undefined);\n if (used !== 3 && used !== 0) {\n if (referenceExports.has(subExport.name)) {\n continue;\n }\n canUpdateModuleUsedStage = false;\n break;\n }\n }\n\n if (canUpdateModuleUsedStage) {\n for (const exportInfo of exportsInfo.exports) {\n exportInfo.setUsedConditionally(\n (used) => used === 3,\n 0,\n undefined,\n );\n }\n // exportsInfo.otherExportsInfo.setUsedConditionally(\n // (used) => used === 3,\n // 0,\n // undefined,\n // );\n }\n });\n },\n );\n\n // inject reference exports to stats\n if (manifestOptions) {\n compilation.hooks.processAssets.tapPromise(\n {\n name: 'injectReferenceExports',\n stage: (compilation.constructor as any)\n .PROCESS_ASSETS_STAGE_OPTIMIZE_TRANSFER,\n },\n async () => {\n const { statsFileName } = getManifestFileName(manifestOptions);\n const stats = compilation.getAsset(statsFileName);\n if (!stats) {\n return;\n }\n const statsContent = JSON.parse(\n stats.source.source().toString(),\n ) as Stats;\n\n for (const key of sharedReferencedExports.keys()) {\n const sharedModule = statsContent.shared.find(\n (s: any) => s.name === key,\n );\n if (!sharedModule) {\n continue;\n }\n\n const sharedReferenceExports = sharedReferencedExports.get(key);\n if (!sharedReferenceExports) {\n continue;\n }\n sharedModule.usedExports = [...sharedReferenceExports];\n }\n\n compilation.updateAsset(\n statsFileName,\n new compiler.webpack.sources.RawSource(\n JSON.stringify(statsContent, null, 2),\n ),\n );\n },\n );\n }\n\n if (!injectTreeShakingUsedExports) {\n return;\n }\n compilation.hooks.additionalTreeRuntimeRequirements.tap(\n 'SharedUsedExportsOptimizerPlugin',\n (chunk, set) => {\n set.add(compiler.webpack.RuntimeGlobals.runtimeId);\n\n // inject usedExports info to bundler runtime\n compilation.addRuntimeModule(\n chunk,\n new SharedUsedExportsOptimizerRuntimeModule(\n this.sharedReferencedExports,\n ),\n );\n },\n );\n },\n );\n }\n}\n"],"mappings":"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"}
@@ -1,17 +1,22 @@
1
+ import * as webpack$1 from "webpack";
2
+
3
+ //#region src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerRuntimeModule.d.ts
1
4
  /**
2
5
  * Map of shared module name to Map of runtime id to Set of exported names
3
6
  * @example {
4
7
  * 'antd': Set(['Button', 'exportedName2']),
5
8
  * }
6
9
  */
7
- export type ReferencedExports = Map<string, Set<string>>;
8
- declare const RuntimeModule: typeof import("webpack").RuntimeModule;
10
+ type ReferencedExports = Map<string, Set<string>>;
11
+ declare const RuntimeModule: typeof webpack$1.RuntimeModule;
9
12
  declare class SharedUsedExportsOptimizerRuntimeModule extends RuntimeModule {
10
- private sharedUsedExports;
11
- constructor(sharedUsedExports: ReferencedExports);
12
- /**
13
- * @returns {string | null} runtime code
14
- */
15
- generate(): string | null;
13
+ private sharedUsedExports;
14
+ constructor(sharedUsedExports: ReferencedExports);
15
+ /**
16
+ * @returns {string | null} runtime code
17
+ */
18
+ generate(): string | null;
16
19
  }
17
- export default SharedUsedExportsOptimizerRuntimeModule;
20
+ //#endregion
21
+ export { ReferencedExports, SharedUsedExportsOptimizerRuntimeModule as default };
22
+ //# sourceMappingURL=SharedUsedExportsOptimizerRuntimeModule.d.ts.map
@@ -1,29 +1,28 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const normalize_webpack_path_1 = require("@module-federation/sdk/normalize-webpack-path");
4
- const utils_1 = require("../../container/runtime/utils");
5
- const { Template, RuntimeGlobals, RuntimeModule } = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack'));
6
- class SharedUsedExportsOptimizerRuntimeModule extends RuntimeModule {
7
- constructor(sharedUsedExports) {
8
- super('shared-used-exports', RuntimeModule.STAGE_ATTACH);
9
- this.sharedUsedExports = sharedUsedExports;
10
- }
11
- /**
12
- * @returns {string | null} runtime code
13
- */
14
- generate() {
15
- if (!this.sharedUsedExports) {
16
- return null;
17
- }
18
- const federationGlobal = (0, utils_1.getFederationGlobalScope)(RuntimeGlobals);
19
- return Template.asString([
20
- `if(!${federationGlobal}) {return;}`,
21
- `${federationGlobal}.usedExports = ${JSON.stringify(Array.from(this.sharedUsedExports.entries()).reduce((acc, [pkg, moduleMap]) => {
22
- acc[pkg] = Array.from(moduleMap);
23
- return acc;
24
- }, {}))};`,
25
- ]);
26
- }
27
- }
1
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
2
+ const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
3
+ const require_lib_container_runtime_utils = require('../../container/runtime/utils.js');
4
+ let _module_federation_sdk_normalize_webpack_path = require("@module-federation/sdk/normalize-webpack-path");
5
+
6
+ //#region src/lib/sharing/tree-shaking/SharedUsedExportsOptimizerRuntimeModule.ts
7
+ const { Template, RuntimeGlobals, RuntimeModule } = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack"));
8
+ var SharedUsedExportsOptimizerRuntimeModule = class extends RuntimeModule {
9
+ constructor(sharedUsedExports) {
10
+ super("shared-used-exports", RuntimeModule.STAGE_ATTACH);
11
+ this.sharedUsedExports = sharedUsedExports;
12
+ }
13
+ /**
14
+ * @returns {string | null} runtime code
15
+ */
16
+ generate() {
17
+ if (!this.sharedUsedExports) return null;
18
+ const federationGlobal = require_lib_container_runtime_utils.getFederationGlobalScope(RuntimeGlobals);
19
+ return Template.asString([`if(!${federationGlobal}) {return;}`, `${federationGlobal}.usedExports = ${JSON.stringify(Array.from(this.sharedUsedExports.entries()).reduce((acc, [pkg, moduleMap]) => {
20
+ acc[pkg] = Array.from(moduleMap);
21
+ return acc;
22
+ }, {}))};`]);
23
+ }
24
+ };
25
+
26
+ //#endregion
28
27
  exports.default = SharedUsedExportsOptimizerRuntimeModule;
29
28
  //# sourceMappingURL=SharedUsedExportsOptimizerRuntimeModule.js.map