@module-federation/enhanced 2.0.1 → 2.2.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 (285) hide show
  1. package/dist/CHANGELOG.md +2357 -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 -196
  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 -180
  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 -120
  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 -18
  81. package/dist/src/lib/container/runtime/FederationRuntimePlugin.js +266 -345
  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 -125
  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 -100
  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 -322
  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 +21 -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 -219
  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,349 +1,270 @@
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 fs_1 = __importDefault(require("fs"));
7
- const path_1 = __importDefault(require("path"));
8
- const btoa_1 = __importDefault(require("btoa"));
9
- const normalize_webpack_path_1 = require("@module-federation/sdk/normalize-webpack-path");
10
- const cli_1 = require("@module-federation/data-prefetch/cli");
11
- const FederationRuntimeModule_1 = __importDefault(require("./FederationRuntimeModule"));
12
- const utils_1 = require("./utils");
13
- const constant_1 = require("../constant");
14
- const EmbedFederationRuntimePlugin_1 = __importDefault(require("./EmbedFederationRuntimePlugin"));
15
- const FederationModulesPlugin_1 = __importDefault(require("./FederationModulesPlugin"));
16
- const HoistContainerReferencesPlugin_1 = __importDefault(require("../HoistContainerReferencesPlugin"));
17
- const FederationRuntimeDependency_1 = __importDefault(require("./FederationRuntimeDependency"));
18
- const ModuleDependency = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack/lib/dependencies/ModuleDependency'));
19
- const { RuntimeGlobals, Template } = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack'));
20
- const { mkdirpSync } = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack/lib/util/fs'));
21
- function resolveModule(candidates, options) {
22
- let lastError;
23
- for (const candidate of candidates) {
24
- try {
25
- return require.resolve(candidate, options);
26
- }
27
- catch (error) {
28
- lastError = error;
29
- }
30
- }
31
- throw (lastError ??
32
- new Error(`Unable to resolve any module from: ${candidates.join(', ')}`));
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_FederationModulesPlugin = require('./FederationModulesPlugin.js');
4
+ const require_lib_container_runtime_utils = require('./utils.js');
5
+ const require_lib_container_runtime_FederationRuntimeModule = require('./FederationRuntimeModule.js');
6
+ const require_lib_container_constant = require('../constant.js');
7
+ const require_lib_container_runtime_EmbedFederationRuntimePlugin = require('./EmbedFederationRuntimePlugin.js');
8
+ const require_lib_container_HoistContainerReferencesPlugin = require('../HoistContainerReferencesPlugin.js');
9
+ const require_lib_container_runtime_FederationRuntimeDependency = require('./FederationRuntimeDependency.js');
10
+ let _module_federation_sdk_normalize_webpack_path = require("@module-federation/sdk/normalize-webpack-path");
11
+ let path = require("path");
12
+ path = require_runtime.__toESM(path);
13
+ let fs = require("fs");
14
+ fs = require_runtime.__toESM(fs);
15
+ let _module_federation_data_prefetch_cli = require("@module-federation/data-prefetch/cli");
16
+ let btoa = require("btoa");
17
+ btoa = require_runtime.__toESM(btoa);
18
+
19
+ //#region src/lib/container/runtime/FederationRuntimePlugin.ts
20
+ require_lib_container_runtime_FederationModulesPlugin.init_FederationModulesPlugin();
21
+ const ModuleDependency = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/dependencies/ModuleDependency"));
22
+ const { RuntimeGlobals, Template } = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack"));
23
+ const { mkdirpSync } = require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/util/fs"));
24
+ function resolveRuntimeEntry(spec, implementation, resolve = require.resolve) {
25
+ const candidates = [
26
+ spec.bundler,
27
+ spec.esm,
28
+ spec.cjs
29
+ ];
30
+ const modulePaths = implementation ? [implementation] : void 0;
31
+ let lastError;
32
+ for (const candidate of candidates) try {
33
+ return modulePaths ? resolve(candidate, { paths: modulePaths }) : resolve(candidate);
34
+ } catch (error) {
35
+ lastError = error;
36
+ }
37
+ throw lastError;
38
+ }
39
+ function resolveRuntimeEntryWithFallback(spec, implementation, resolve = require.resolve) {
40
+ if (implementation) try {
41
+ return resolveRuntimeEntry(spec, implementation, resolve);
42
+ } catch {}
43
+ return resolveRuntimeEntry(spec, void 0, resolve);
33
44
  }
34
- const RuntimeToolsPath = resolveModule([
35
- '@module-federation/runtime-tools',
36
- '@module-federation/runtime-tools/dist/index.esm.js',
37
- '@module-federation/runtime-tools/dist/index.cjs.cjs',
38
- ]);
39
- const BundlerRuntimePath = resolveModule([
40
- '@module-federation/webpack-bundler-runtime',
41
- '@module-federation/webpack-bundler-runtime/dist/index.js',
42
- '@module-federation/webpack-bundler-runtime/dist/index.esm.js',
43
- '@module-federation/webpack-bundler-runtime/dist/index.cjs.cjs',
44
- ], {
45
- paths: [RuntimeToolsPath],
46
- });
47
- const RuntimePath = resolveModule([
48
- '@module-federation/runtime',
49
- '@module-federation/runtime/dist/index.esm.js',
50
- '@module-federation/runtime/dist/index.cjs.cjs',
51
- ], {
52
- paths: [RuntimeToolsPath],
53
- });
54
- const federationGlobal = (0, utils_1.getFederationGlobalScope)(RuntimeGlobals);
55
- const onceForCompiler = new WeakSet();
56
- const onceForCompilerEntryMap = new WeakMap();
57
- class FederationRuntimePlugin {
58
- constructor(options) {
59
- this.options = options ? { ...options } : undefined;
60
- this.entryFilePath = '';
61
- this.bundlerRuntimePath = BundlerRuntimePath;
62
- this.federationRuntimeDependency = undefined; // Initialize as undefined
63
- }
64
- static getTemplate(compiler, options, bundlerRuntimePath) {
65
- // internal runtime plugin
66
- const runtimePlugins = options.runtimePlugins;
67
- const normalizedBundlerRuntimePath = (0, utils_1.normalizeToPosixPath)(bundlerRuntimePath || BundlerRuntimePath);
68
- let runtimePluginTemplates = '';
69
- const runtimePluginCalls = [];
70
- if (Array.isArray(runtimePlugins)) {
71
- runtimePlugins.forEach((runtimePlugin, index) => {
72
- if (!runtimePlugin) {
73
- return;
74
- }
75
- const runtimePluginName = `plugin_${index}`;
76
- const runtimePluginEntry = Array.isArray(runtimePlugin)
77
- ? runtimePlugin[0]
78
- : runtimePlugin;
79
- const runtimePluginPath = (0, utils_1.normalizeToPosixPath)(path_1.default.isAbsolute(runtimePluginEntry)
80
- ? runtimePluginEntry
81
- : path_1.default.join(process.cwd(), runtimePluginEntry));
82
- const paramsStr = Array.isArray(runtimePlugin) && runtimePlugin.length > 1
83
- ? JSON.stringify(runtimePlugin[1])
84
- : 'undefined';
85
- runtimePluginTemplates += `import ${runtimePluginName} from '${runtimePluginPath}';\n`;
86
- runtimePluginCalls.push(`${runtimePluginName} ? (${runtimePluginName}.default || ${runtimePluginName})(${paramsStr}) : false`);
87
- });
88
- }
89
- const embedRuntimeLines = Template.asString([
90
- `if(!${federationGlobal}.runtime){`,
91
- Template.indent([
92
- `var prevFederation = ${federationGlobal};`,
93
- `${federationGlobal} = {}`,
94
- `for(var key in federation){`,
95
- Template.indent([`${federationGlobal}[key] = federation[key];`]),
96
- '}',
97
- `for(var key in prevFederation){`,
98
- Template.indent([`${federationGlobal}[key] = prevFederation[key];`]),
99
- '}',
100
- ]),
101
- '}',
102
- ]);
103
- return Template.asString([
104
- `import federation from '${normalizedBundlerRuntimePath}';`,
105
- runtimePluginTemplates,
106
- embedRuntimeLines,
107
- `if(!${federationGlobal}.instance){`,
108
- Template.indent([
109
- runtimePluginCalls.length
110
- ? Template.asString([
111
- `var pluginsToAdd = [`,
112
- Template.indent(Template.indent(runtimePluginCalls.map((call) => `${call},`))),
113
- `].filter(Boolean);`,
114
- `${federationGlobal}.initOptions.plugins = ${federationGlobal}.initOptions.plugins ? `,
115
- `${federationGlobal}.initOptions.plugins.concat(pluginsToAdd) : pluginsToAdd;`,
116
- ])
117
- : '',
118
- // `${federationGlobal}.instance = ${federationGlobal}.runtime.init(${federationGlobal}.initOptions);`,
119
- `${federationGlobal}.instance = ${federationGlobal}.bundlerRuntime.init({webpackRequire:${RuntimeGlobals.require}});`,
120
- `if(${federationGlobal}.attachShareScopeMap){`,
121
- Template.indent([
122
- `${federationGlobal}.attachShareScopeMap(${RuntimeGlobals.require})`,
123
- ]),
124
- '}',
125
- `if(${federationGlobal}.installInitialConsumes){`,
126
- Template.indent([`${federationGlobal}.installInitialConsumes()`]),
127
- '}',
128
- ]),
129
- cli_1.PrefetchPlugin.addRuntime(compiler, {
130
- name: options.name,
131
- }),
132
- '}',
133
- ]);
134
- }
135
- getFilePath(compiler) {
136
- if (!this.options) {
137
- return '';
138
- }
139
- const existedFilePath = onceForCompilerEntryMap.get(compiler);
140
- if (existedFilePath) {
141
- return existedFilePath;
142
- }
143
- let entryFilePath = '';
144
- if (!this.options?.virtualRuntimeEntry) {
145
- const containerName = this.options.name;
146
- const hash = (0, utils_1.createHash)(`${containerName} ${FederationRuntimePlugin.getTemplate(compiler, this.options, this.bundlerRuntimePath)}`);
147
- entryFilePath = path_1.default.join(constant_1.TEMP_DIR, `entry.${hash}.js`);
148
- }
149
- else {
150
- entryFilePath = `data:text/javascript;charset=utf-8;base64,${(0, btoa_1.default)(FederationRuntimePlugin.getTemplate(compiler, this.options, this.bundlerRuntimePath))}`;
151
- }
152
- onceForCompilerEntryMap.set(compiler, entryFilePath);
153
- return entryFilePath;
154
- }
155
- ensureFile(compiler) {
156
- if (!this.options) {
157
- return;
158
- }
159
- // skip virtual entry
160
- if (this.options?.virtualRuntimeEntry) {
161
- return;
162
- }
163
- const filePath = this.entryFilePath;
164
- const outputFs = compiler
165
- .outputFileSystem;
166
- const fsLike = outputFs &&
167
- typeof outputFs.readFileSync === 'function' &&
168
- typeof outputFs.writeFileSync === 'function'
169
- ? outputFs
170
- : fs_1.default;
171
- try {
172
- fsLike.readFileSync(filePath);
173
- }
174
- catch (err) {
175
- mkdirpSync(fsLike, constant_1.TEMP_DIR);
176
- fsLike.writeFileSync(filePath, FederationRuntimePlugin.getTemplate(compiler, this.options, this.bundlerRuntimePath));
177
- }
178
- }
179
- getDependency(compiler) {
180
- if (this.federationRuntimeDependency)
181
- return this.federationRuntimeDependency;
182
- this.ensureFile(compiler);
183
- this.federationRuntimeDependency = new FederationRuntimeDependency_1.default(this.entryFilePath);
184
- return this.federationRuntimeDependency;
185
- }
186
- prependEntry(compiler) {
187
- if (!this.options?.virtualRuntimeEntry) {
188
- this.ensureFile(compiler);
189
- }
190
- compiler.hooks.thisCompilation.tap(this.constructor.name, (compilation, { normalModuleFactory }) => {
191
- compilation.dependencyFactories.set(FederationRuntimeDependency_1.default, normalModuleFactory);
192
- compilation.dependencyTemplates.set(FederationRuntimeDependency_1.default, new ModuleDependency.Template());
193
- });
194
- compiler.hooks.make.tapAsync(this.constructor.name, (compilation, callback) => {
195
- const federationRuntimeDependency = this.getDependency(compiler);
196
- const hooks = FederationModulesPlugin_1.default.getCompilationHooks(compilation);
197
- compilation.addInclude(compiler.context, federationRuntimeDependency, { name: undefined }, (err, module) => {
198
- if (err) {
199
- return callback(err);
200
- }
201
- hooks.addFederationRuntimeDependency.call(federationRuntimeDependency);
202
- callback();
203
- });
204
- });
205
- }
206
- injectRuntime(compiler) {
207
- if (!this.options || !this.options.name) {
208
- return;
209
- }
210
- const name = this.options.name;
211
- const initOptionsWithoutShared = (0, utils_1.normalizeRuntimeInitOptionsWithOutShared)(this.options);
212
- const federationGlobal = (0, utils_1.getFederationGlobalScope)(RuntimeGlobals || {});
213
- compiler.hooks.thisCompilation.tap(this.constructor.name, (compilation) => {
214
- const handler = (chunk, runtimeRequirements) => {
215
- if (runtimeRequirements.has(federationGlobal))
216
- return;
217
- runtimeRequirements.add(federationGlobal);
218
- runtimeRequirements.add(RuntimeGlobals.interceptModuleExecution);
219
- runtimeRequirements.add(RuntimeGlobals.moduleCache);
220
- runtimeRequirements.add(RuntimeGlobals.compatGetDefaultExport);
221
- compilation.addRuntimeModule(chunk, new FederationRuntimeModule_1.default(runtimeRequirements, name, initOptionsWithoutShared));
222
- };
223
- compilation.hooks.additionalTreeRuntimeRequirements.tap(this.constructor.name, (chunk, runtimeRequirements) => {
224
- if (!chunk.hasRuntime())
225
- return;
226
- if (runtimeRequirements.has(RuntimeGlobals.initializeSharing))
227
- return;
228
- if (runtimeRequirements.has(RuntimeGlobals.currentRemoteGetScope))
229
- return;
230
- if (runtimeRequirements.has(RuntimeGlobals.shareScopeMap))
231
- return;
232
- if (runtimeRequirements.has(federationGlobal))
233
- return;
234
- handler(chunk, runtimeRequirements);
235
- });
236
- // if federation runtime requirements exist
237
- // attach runtime module to the chunk
238
- compilation.hooks.runtimeRequirementInTree
239
- .for(RuntimeGlobals.initializeSharing)
240
- .tap(this.constructor.name, handler);
241
- compilation.hooks.runtimeRequirementInTree
242
- .for(RuntimeGlobals.currentRemoteGetScope)
243
- .tap(this.constructor.name, handler);
244
- compilation.hooks.runtimeRequirementInTree
245
- .for(RuntimeGlobals.shareScopeMap)
246
- .tap(this.constructor.name, handler);
247
- compilation.hooks.runtimeRequirementInTree
248
- .for(federationGlobal)
249
- .tap(this.constructor.name, handler);
250
- });
251
- }
252
- getRuntimeAlias(compiler) {
253
- const { implementation } = this.options || {};
254
- let runtimePath = RuntimePath;
255
- const alias = compiler.options.resolve.alias || {};
256
- if (alias['@module-federation/runtime$']) {
257
- runtimePath = alias['@module-federation/runtime$'];
258
- }
259
- else {
260
- if (implementation) {
261
- runtimePath = resolveModule([
262
- '@module-federation/runtime',
263
- '@module-federation/runtime/dist/index.esm.js',
264
- '@module-federation/runtime/dist/index.cjs.cjs',
265
- ], {
266
- paths: [implementation],
267
- });
268
- }
269
- }
270
- return runtimePath;
271
- }
272
- setRuntimeAlias(compiler) {
273
- const { implementation } = this.options || {};
274
- const alias = compiler.options.resolve.alias || {};
275
- const runtimePath = this.getRuntimeAlias(compiler);
276
- alias['@module-federation/runtime$'] =
277
- alias['@module-federation/runtime$'] || runtimePath;
278
- alias['@module-federation/runtime-tools$'] =
279
- alias['@module-federation/runtime-tools$'] ||
280
- implementation ||
281
- RuntimeToolsPath;
282
- // Set up aliases for the federation runtime and tools
283
- // This ensures that the correct versions are used throughout the project
284
- compiler.options.resolve.alias = alias;
285
- }
286
- apply(compiler) {
287
- const useSharedContainerPlugin = compiler.options.plugins.find((p) => {
288
- if (typeof p !== 'object' || !p) {
289
- return false;
290
- }
291
- return p['name'] === 'SharedContainerPlugin';
292
- });
293
- // share container plugin should not inject mf runtime
294
- if (useSharedContainerPlugin) {
295
- return;
296
- }
297
- const useModuleFederationPlugin = compiler.options.plugins.find((p) => {
298
- if (typeof p !== 'object' || !p) {
299
- return false;
300
- }
301
- return p['name'] === 'ModuleFederationPlugin';
302
- });
303
- if (useModuleFederationPlugin && !this.options) {
304
- this.options = useModuleFederationPlugin._options;
305
- }
306
- const useContainerPlugin = compiler.options.plugins.find((p) => {
307
- if (typeof p !== 'object' || !p) {
308
- return false;
309
- }
310
- return p['name'] === 'ContainerPlugin';
311
- });
312
- if (useContainerPlugin && !this.options) {
313
- this.options = useContainerPlugin._options;
314
- }
315
- if (!useContainerPlugin && !useModuleFederationPlugin) {
316
- this.options = {
317
- remotes: {},
318
- ...this.options,
319
- };
320
- }
321
- if (this.options && !this.options?.name) {
322
- //! the instance may get the same one if the name is the same https://github.com/module-federation/core/blob/main/packages/runtime/src/index.ts#L18
323
- this.options.name =
324
- compiler.options.output.uniqueName || `container_${Date.now()}`;
325
- }
326
- if (this.options?.implementation) {
327
- this.bundlerRuntimePath = resolveModule([
328
- '@module-federation/webpack-bundler-runtime',
329
- '@module-federation/webpack-bundler-runtime/dist/index.js',
330
- '@module-federation/webpack-bundler-runtime/dist/index.esm.js',
331
- '@module-federation/webpack-bundler-runtime/dist/index.cjs.cjs',
332
- ], {
333
- paths: [this.options.implementation],
334
- });
335
- }
336
- this.entryFilePath = this.getFilePath(compiler);
337
- new EmbedFederationRuntimePlugin_1.default().apply(compiler);
338
- new HoistContainerReferencesPlugin_1.default().apply(compiler);
339
- // dont run multiple times on every apply()
340
- if (!onceForCompiler.has(compiler)) {
341
- this.prependEntry(compiler);
342
- this.injectRuntime(compiler);
343
- this.setRuntimeAlias(compiler);
344
- onceForCompiler.add(compiler);
345
- }
346
- }
45
+ function resolveRuntimePaths(implementation, resolve = require.resolve) {
46
+ const runtimeToolsPath = resolveRuntimeEntryWithFallback({
47
+ bundler: "@module-federation/runtime-tools/bundler",
48
+ esm: "@module-federation/runtime-tools/dist/index.js",
49
+ cjs: "@module-federation/runtime-tools/dist/index.cjs"
50
+ }, implementation, resolve);
51
+ const moduleBase = implementation || runtimeToolsPath;
52
+ return {
53
+ runtimeToolsPath,
54
+ bundlerRuntimePath: resolveRuntimeEntry({
55
+ bundler: "@module-federation/webpack-bundler-runtime/bundler",
56
+ esm: "@module-federation/webpack-bundler-runtime/dist/index.js",
57
+ cjs: "@module-federation/webpack-bundler-runtime/dist/index.cjs"
58
+ }, moduleBase, resolve),
59
+ runtimePath: resolveRuntimeEntry({
60
+ bundler: "@module-federation/runtime/bundler",
61
+ esm: "@module-federation/runtime/dist/index.js",
62
+ cjs: "@module-federation/runtime/dist/index.cjs"
63
+ }, moduleBase, resolve)
64
+ };
347
65
  }
66
+ const { runtimeToolsPath: RuntimeToolsPath, bundlerRuntimePath: BundlerRuntimePath, runtimePath: RuntimePath } = resolveRuntimePaths();
67
+ const federationGlobal = require_lib_container_runtime_utils.getFederationGlobalScope(RuntimeGlobals);
68
+ const onceForCompiler = /* @__PURE__ */ new WeakSet();
69
+ const onceForCompilerEntryMap = /* @__PURE__ */ new WeakMap();
70
+ var FederationRuntimePlugin = class FederationRuntimePlugin {
71
+ constructor(options) {
72
+ this.options = options ? { ...options } : void 0;
73
+ this.entryFilePath = "";
74
+ this.bundlerRuntimePath = BundlerRuntimePath;
75
+ this.runtimePath = RuntimePath;
76
+ this.runtimeToolsPath = RuntimeToolsPath;
77
+ this.federationRuntimeDependency = void 0;
78
+ }
79
+ static getTemplate(compiler, options, bundlerRuntimePath) {
80
+ const runtimePlugins = options.runtimePlugins;
81
+ const normalizedBundlerRuntimePath = require_lib_container_runtime_utils.normalizeToPosixPath(bundlerRuntimePath || BundlerRuntimePath);
82
+ let runtimePluginTemplates = "";
83
+ const runtimePluginCalls = [];
84
+ if (Array.isArray(runtimePlugins)) runtimePlugins.forEach((runtimePlugin, index) => {
85
+ if (!runtimePlugin) return;
86
+ const runtimePluginName = `plugin_${index}`;
87
+ const runtimePluginEntry = Array.isArray(runtimePlugin) ? runtimePlugin[0] : runtimePlugin;
88
+ const runtimePluginPath = require_lib_container_runtime_utils.normalizeToPosixPath(path.default.isAbsolute(runtimePluginEntry) ? runtimePluginEntry : path.default.join(process.cwd(), runtimePluginEntry));
89
+ const paramsStr = Array.isArray(runtimePlugin) && runtimePlugin.length > 1 ? JSON.stringify(runtimePlugin[1]) : "undefined";
90
+ runtimePluginTemplates += `import ${runtimePluginName} from '${runtimePluginPath}';\n`;
91
+ runtimePluginCalls.push(`${runtimePluginName} ? (${runtimePluginName}.default || ${runtimePluginName})(${paramsStr}) : false`);
92
+ });
93
+ const embedRuntimeLines = Template.asString([
94
+ `if(!${federationGlobal}.runtime || !${federationGlobal}.bundlerRuntime){`,
95
+ Template.indent([
96
+ `var prevFederation = ${federationGlobal};`,
97
+ `${federationGlobal} = {}`,
98
+ `for(var key in federation){`,
99
+ Template.indent([`${federationGlobal}[key] = federation[key];`]),
100
+ "}",
101
+ `for(var key in prevFederation){`,
102
+ Template.indent([`${federationGlobal}[key] = prevFederation[key];`]),
103
+ "}"
104
+ ]),
105
+ "}"
106
+ ]);
107
+ return Template.asString([
108
+ `import federation from '${normalizedBundlerRuntimePath}';`,
109
+ runtimePluginTemplates,
110
+ embedRuntimeLines,
111
+ `if(!${federationGlobal}.instance){`,
112
+ Template.indent([
113
+ runtimePluginCalls.length ? Template.asString([
114
+ `var pluginsToAdd = [`,
115
+ Template.indent(Template.indent(runtimePluginCalls.map((call) => `${call},`))),
116
+ `].filter(Boolean);`,
117
+ `${federationGlobal}.initOptions.plugins = ${federationGlobal}.initOptions.plugins ? `,
118
+ `${federationGlobal}.initOptions.plugins.concat(pluginsToAdd) : pluginsToAdd;`
119
+ ]) : "",
120
+ `${federationGlobal}.instance = ${federationGlobal}.bundlerRuntime.init({webpackRequire:${RuntimeGlobals.require}});`,
121
+ `if(${federationGlobal}.attachShareScopeMap){`,
122
+ Template.indent([`${federationGlobal}.attachShareScopeMap(${RuntimeGlobals.require})`]),
123
+ "}",
124
+ `if(${federationGlobal}.installInitialConsumes){`,
125
+ Template.indent([`${federationGlobal}.installInitialConsumes()`]),
126
+ "}"
127
+ ]),
128
+ _module_federation_data_prefetch_cli.PrefetchPlugin.addRuntime(compiler, { name: options.name }),
129
+ "}"
130
+ ]);
131
+ }
132
+ getFilePath(compiler) {
133
+ if (!this.options) return "";
134
+ const existedFilePath = onceForCompilerEntryMap.get(compiler);
135
+ if (existedFilePath) return existedFilePath;
136
+ let entryFilePath = "";
137
+ if (!this.options?.virtualRuntimeEntry) {
138
+ const containerName = this.options.name;
139
+ const hash = require_lib_container_runtime_utils.createHash(`${containerName} ${FederationRuntimePlugin.getTemplate(compiler, this.options, this.bundlerRuntimePath)}`);
140
+ entryFilePath = path.default.join(require_lib_container_constant.TEMP_DIR, `entry.${hash}.js`);
141
+ } else entryFilePath = `data:text/javascript;charset=utf-8;base64,${(0, btoa.default)(FederationRuntimePlugin.getTemplate(compiler, this.options, this.bundlerRuntimePath))}`;
142
+ onceForCompilerEntryMap.set(compiler, entryFilePath);
143
+ return entryFilePath;
144
+ }
145
+ ensureFile(compiler) {
146
+ if (!this.options) return;
147
+ if (this.options?.virtualRuntimeEntry) return;
148
+ const filePath = this.entryFilePath;
149
+ const outputFs = compiler.outputFileSystem;
150
+ const fsLike = outputFs && typeof outputFs.readFileSync === "function" && typeof outputFs.writeFileSync === "function" ? outputFs : fs.default;
151
+ try {
152
+ fsLike.readFileSync(filePath);
153
+ } catch {
154
+ mkdirpSync(fsLike, require_lib_container_constant.TEMP_DIR);
155
+ fsLike.writeFileSync(filePath, FederationRuntimePlugin.getTemplate(compiler, this.options, this.bundlerRuntimePath));
156
+ }
157
+ }
158
+ getDependency(compiler) {
159
+ if (this.federationRuntimeDependency) return this.federationRuntimeDependency;
160
+ this.ensureFile(compiler);
161
+ this.federationRuntimeDependency = new require_lib_container_runtime_FederationRuntimeDependency.default(this.entryFilePath);
162
+ return this.federationRuntimeDependency;
163
+ }
164
+ prependEntry(compiler) {
165
+ if (!this.options?.virtualRuntimeEntry) this.ensureFile(compiler);
166
+ compiler.hooks.thisCompilation.tap(this.constructor.name, (compilation, { normalModuleFactory }) => {
167
+ compilation.dependencyFactories.set(require_lib_container_runtime_FederationRuntimeDependency.default, normalModuleFactory);
168
+ compilation.dependencyTemplates.set(require_lib_container_runtime_FederationRuntimeDependency.default, new ModuleDependency.Template());
169
+ });
170
+ compiler.hooks.make.tapAsync(this.constructor.name, (compilation, callback) => {
171
+ const federationRuntimeDependency = this.getDependency(compiler);
172
+ const hooks = require_lib_container_runtime_FederationModulesPlugin.default.getCompilationHooks(compilation);
173
+ compilation.addInclude(compiler.context, federationRuntimeDependency, { name: void 0 }, (err) => {
174
+ if (err) return callback(err);
175
+ hooks.addFederationRuntimeDependency.call(federationRuntimeDependency);
176
+ callback();
177
+ });
178
+ });
179
+ }
180
+ injectRuntime(compiler) {
181
+ if (!this.options || !this.options.name) return;
182
+ const name = this.options.name;
183
+ const initOptionsWithoutShared = require_lib_container_runtime_utils.normalizeRuntimeInitOptionsWithOutShared(this.options);
184
+ const federationGlobal = require_lib_container_runtime_utils.getFederationGlobalScope(RuntimeGlobals || {});
185
+ compiler.hooks.thisCompilation.tap(this.constructor.name, (compilation) => {
186
+ const handler = (chunk, runtimeRequirements) => {
187
+ if (runtimeRequirements.has(federationGlobal)) return;
188
+ runtimeRequirements.add(federationGlobal);
189
+ runtimeRequirements.add(RuntimeGlobals.interceptModuleExecution);
190
+ runtimeRequirements.add(RuntimeGlobals.moduleCache);
191
+ runtimeRequirements.add(RuntimeGlobals.compatGetDefaultExport);
192
+ compilation.addRuntimeModule(chunk, new require_lib_container_runtime_FederationRuntimeModule.default(runtimeRequirements, name, initOptionsWithoutShared));
193
+ };
194
+ compilation.hooks.additionalTreeRuntimeRequirements.tap(this.constructor.name, (chunk, runtimeRequirements) => {
195
+ if (!chunk.hasRuntime()) return;
196
+ if (runtimeRequirements.has(RuntimeGlobals.initializeSharing)) return;
197
+ if (runtimeRequirements.has(RuntimeGlobals.currentRemoteGetScope)) return;
198
+ if (runtimeRequirements.has(RuntimeGlobals.shareScopeMap)) return;
199
+ if (runtimeRequirements.has(federationGlobal)) return;
200
+ handler(chunk, runtimeRequirements);
201
+ });
202
+ compilation.hooks.runtimeRequirementInTree.for(RuntimeGlobals.initializeSharing).tap(this.constructor.name, handler);
203
+ compilation.hooks.runtimeRequirementInTree.for(RuntimeGlobals.currentRemoteGetScope).tap(this.constructor.name, handler);
204
+ compilation.hooks.runtimeRequirementInTree.for(RuntimeGlobals.shareScopeMap).tap(this.constructor.name, handler);
205
+ compilation.hooks.runtimeRequirementInTree.for(federationGlobal).tap(this.constructor.name, handler);
206
+ });
207
+ }
208
+ getRuntimeAlias(compiler) {
209
+ const { implementation } = this.options || {};
210
+ const alias = compiler.options.resolve.alias || {};
211
+ const resolvedPaths = resolveRuntimePaths(implementation);
212
+ this.runtimeToolsPath = resolvedPaths.runtimeToolsPath;
213
+ this.bundlerRuntimePath = resolvedPaths.bundlerRuntimePath;
214
+ if (alias["@module-federation/runtime$"]) {
215
+ this.runtimePath = alias["@module-federation/runtime$"];
216
+ return this.runtimePath;
217
+ }
218
+ this.runtimePath = resolvedPaths.runtimePath;
219
+ return this.runtimePath;
220
+ }
221
+ setRuntimeAlias(compiler) {
222
+ const { implementation } = this.options || {};
223
+ const alias = compiler.options.resolve.alias || {};
224
+ const runtimePath = this.getRuntimeAlias(compiler);
225
+ alias["@module-federation/runtime$"] = alias["@module-federation/runtime$"] || runtimePath;
226
+ alias["@module-federation/runtime-tools$"] = alias["@module-federation/runtime-tools$"] || implementation || this.runtimeToolsPath;
227
+ compiler.options.resolve.alias = alias;
228
+ }
229
+ apply(compiler) {
230
+ if (compiler.options.plugins.find((p) => {
231
+ if (typeof p !== "object" || !p) return false;
232
+ return p["name"] === "SharedContainerPlugin";
233
+ })) return;
234
+ const useModuleFederationPlugin = compiler.options.plugins.find((p) => {
235
+ if (typeof p !== "object" || !p) return false;
236
+ return p["name"] === "ModuleFederationPlugin";
237
+ });
238
+ if (useModuleFederationPlugin && !this.options) this.options = useModuleFederationPlugin._options;
239
+ const useContainerPlugin = compiler.options.plugins.find((p) => {
240
+ if (typeof p !== "object" || !p) return false;
241
+ return p["name"] === "ContainerPlugin";
242
+ });
243
+ if (useContainerPlugin && !this.options) this.options = useContainerPlugin._options;
244
+ if (!useContainerPlugin && !useModuleFederationPlugin) this.options = {
245
+ remotes: {},
246
+ ...this.options
247
+ };
248
+ if (this.options && !this.options?.name)
249
+ //! the instance may get the same one if the name is the same https://github.com/module-federation/core/blob/main/packages/runtime/src/index.ts#L18
250
+ this.options.name = compiler.options.output.uniqueName || `container_${Date.now()}`;
251
+ const resolvedPaths = resolveRuntimePaths(this.options?.implementation);
252
+ this.bundlerRuntimePath = resolvedPaths.bundlerRuntimePath;
253
+ this.runtimePath = resolvedPaths.runtimePath;
254
+ this.runtimeToolsPath = resolvedPaths.runtimeToolsPath;
255
+ this.entryFilePath = this.getFilePath(compiler);
256
+ new require_lib_container_runtime_EmbedFederationRuntimePlugin.default().apply(compiler);
257
+ new require_lib_container_HoistContainerReferencesPlugin.default().apply(compiler);
258
+ if (!onceForCompiler.has(compiler)) {
259
+ this.prependEntry(compiler);
260
+ this.injectRuntime(compiler);
261
+ this.setRuntimeAlias(compiler);
262
+ onceForCompiler.add(compiler);
263
+ }
264
+ }
265
+ };
266
+
267
+ //#endregion
348
268
  exports.default = FederationRuntimePlugin;
269
+ exports.resolveRuntimePaths = resolveRuntimePaths;
349
270
  //# sourceMappingURL=FederationRuntimePlugin.js.map