every-plugin 2.10.1 → 3.0.0-rc.3

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 (462) hide show
  1. package/bin/every-plugin-serve.mjs +12 -0
  2. package/bin/every-plugin.mjs +59 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +1 -2
  4. package/dist/build/artifact-names.cjs +119 -0
  5. package/dist/build/artifact-names.cjs.map +1 -0
  6. package/dist/build/artifact-names.d.cts +68 -0
  7. package/dist/build/artifact-names.d.cts.map +1 -0
  8. package/dist/build/artifact-names.d.mts +68 -0
  9. package/dist/build/artifact-names.d.mts.map +1 -0
  10. package/dist/build/artifact-names.mjs +102 -0
  11. package/dist/build/artifact-names.mjs.map +1 -0
  12. package/dist/build/contract-types.cjs +89 -0
  13. package/dist/build/contract-types.cjs.map +1 -0
  14. package/dist/build/contract-types.mjs +81 -0
  15. package/dist/build/contract-types.mjs.map +1 -0
  16. package/dist/build/rspack/build-report-plugin.cjs +37 -0
  17. package/dist/build/rspack/build-report-plugin.cjs.map +1 -0
  18. package/dist/build/rspack/build-report-plugin.d.cts +18 -0
  19. package/dist/build/rspack/build-report-plugin.d.cts.map +1 -0
  20. package/dist/build/rspack/build-report-plugin.d.mts +18 -0
  21. package/dist/build/rspack/build-report-plugin.d.mts.map +1 -0
  22. package/dist/build/rspack/build-report-plugin.mjs +37 -0
  23. package/dist/build/rspack/build-report-plugin.mjs.map +1 -0
  24. package/dist/build/rspack/chunk-completeness-plugin.cjs +47 -0
  25. package/dist/build/rspack/chunk-completeness-plugin.cjs.map +1 -0
  26. package/dist/build/rspack/chunk-completeness-plugin.mjs +47 -0
  27. package/dist/build/rspack/chunk-completeness-plugin.mjs.map +1 -0
  28. package/dist/build/rspack/compose.cjs +69 -0
  29. package/dist/build/rspack/compose.cjs.map +1 -0
  30. package/dist/build/rspack/compose.d.cts +20 -0
  31. package/dist/build/rspack/compose.d.cts.map +1 -0
  32. package/dist/build/rspack/compose.d.mts +20 -0
  33. package/dist/build/rspack/compose.d.mts.map +1 -0
  34. package/dist/build/rspack/compose.mjs +65 -0
  35. package/dist/build/rspack/compose.mjs.map +1 -0
  36. package/dist/build/rspack/fix-mf-data-uri-plugin.cjs +11 -11
  37. package/dist/build/rspack/fix-mf-data-uri-plugin.cjs.map +1 -1
  38. package/dist/build/rspack/fix-mf-data-uri-plugin.d.cts +2 -0
  39. package/dist/build/rspack/fix-mf-data-uri-plugin.d.cts.map +1 -1
  40. package/dist/build/rspack/fix-mf-data-uri-plugin.d.mts +2 -0
  41. package/dist/build/rspack/fix-mf-data-uri-plugin.d.mts.map +1 -1
  42. package/dist/build/rspack/fix-mf-data-uri-plugin.mjs +11 -10
  43. package/dist/build/rspack/fix-mf-data-uri-plugin.mjs.map +1 -1
  44. package/dist/build/rspack/generated-config.cjs +35 -0
  45. package/dist/build/rspack/generated-config.cjs.map +1 -0
  46. package/dist/build/rspack/generated-config.mjs +32 -0
  47. package/dist/build/rspack/generated-config.mjs.map +1 -0
  48. package/dist/build/rspack/index.cjs +8 -5
  49. package/dist/build/rspack/index.d.cts +5 -3
  50. package/dist/build/rspack/index.d.mts +5 -3
  51. package/dist/build/rspack/index.mjs +5 -3
  52. package/dist/build/rspack/module-federation.cjs +2 -2
  53. package/dist/build/rspack/module-federation.cjs.map +1 -1
  54. package/dist/build/rspack/module-federation.mjs +1 -1
  55. package/dist/build/rspack/module-federation.mjs.map +1 -1
  56. package/dist/build/rspack/plugin.cjs +44 -69
  57. package/dist/build/rspack/plugin.cjs.map +1 -1
  58. package/dist/build/rspack/plugin.d.cts +4 -13
  59. package/dist/build/rspack/plugin.d.cts.map +1 -1
  60. package/dist/build/rspack/plugin.d.mts +4 -13
  61. package/dist/build/rspack/plugin.d.mts.map +1 -1
  62. package/dist/build/rspack/plugin.mjs +44 -69
  63. package/dist/build/rspack/plugin.mjs.map +1 -1
  64. package/dist/build/rspack/utils.cjs +7 -5
  65. package/dist/build/rspack/utils.cjs.map +1 -1
  66. package/dist/build/rspack/utils.mjs +7 -6
  67. package/dist/build/rspack/utils.mjs.map +1 -1
  68. package/dist/build/ui/factory.cjs +88 -0
  69. package/dist/build/ui/factory.cjs.map +1 -0
  70. package/dist/build/ui/factory.d.cts +11 -0
  71. package/dist/build/ui/factory.d.cts.map +1 -0
  72. package/dist/build/ui/factory.d.mts +11 -0
  73. package/dist/build/ui/factory.d.mts.map +1 -0
  74. package/dist/build/ui/factory.mjs +80 -0
  75. package/dist/build/ui/factory.mjs.map +1 -0
  76. package/dist/build/ui/generated-config.cjs +118 -0
  77. package/dist/build/ui/generated-config.cjs.map +1 -0
  78. package/dist/build/ui/generated-config.d.cts +33 -0
  79. package/dist/build/ui/generated-config.d.cts.map +1 -0
  80. package/dist/build/ui/generated-config.d.mts +33 -0
  81. package/dist/build/ui/generated-config.d.mts.map +1 -0
  82. package/dist/build/ui/generated-config.mjs +111 -0
  83. package/dist/build/ui/generated-config.mjs.map +1 -0
  84. package/dist/build/ui/hash-artifacts-plugin.cjs +61 -0
  85. package/dist/build/ui/hash-artifacts-plugin.cjs.map +1 -0
  86. package/dist/build/ui/hash-artifacts-plugin.d.cts +20 -0
  87. package/dist/build/ui/hash-artifacts-plugin.d.cts.map +1 -0
  88. package/dist/build/ui/hash-artifacts-plugin.d.mts +20 -0
  89. package/dist/build/ui/hash-artifacts-plugin.d.mts.map +1 -0
  90. package/dist/build/ui/hash-artifacts-plugin.mjs +58 -0
  91. package/dist/build/ui/hash-artifacts-plugin.mjs.map +1 -0
  92. package/dist/build/ui/index.cjs +90 -0
  93. package/dist/build/ui/index.cjs.map +1 -0
  94. package/dist/build/ui/index.d.cts +29 -0
  95. package/dist/build/ui/index.d.cts.map +1 -0
  96. package/dist/build/ui/index.d.mts +29 -0
  97. package/dist/build/ui/index.d.mts.map +1 -0
  98. package/dist/build/ui/index.mjs +68 -0
  99. package/dist/build/ui/index.mjs.map +1 -0
  100. package/dist/build/ui/manifest-plugin.cjs +37 -0
  101. package/dist/build/ui/manifest-plugin.cjs.map +1 -0
  102. package/dist/build/ui/manifest-plugin.d.cts +19 -0
  103. package/dist/build/ui/manifest-plugin.d.cts.map +1 -0
  104. package/dist/build/ui/manifest-plugin.d.mts +19 -0
  105. package/dist/build/ui/manifest-plugin.d.mts.map +1 -0
  106. package/dist/build/ui/manifest-plugin.mjs +37 -0
  107. package/dist/build/ui/manifest-plugin.mjs.map +1 -0
  108. package/dist/build/ui/rsbuild-config.cjs +203 -0
  109. package/dist/build/ui/rsbuild-config.cjs.map +1 -0
  110. package/dist/build/ui/rsbuild-config.d.cts +45 -0
  111. package/dist/build/ui/rsbuild-config.d.cts.map +1 -0
  112. package/dist/build/ui/rsbuild-config.d.mts +45 -0
  113. package/dist/build/ui/rsbuild-config.d.mts.map +1 -0
  114. package/dist/build/ui/rsbuild-config.mjs +200 -0
  115. package/dist/build/ui/rsbuild-config.mjs.map +1 -0
  116. package/dist/build/ui/stubs.cjs +107 -0
  117. package/dist/build/ui/stubs.cjs.map +1 -0
  118. package/dist/build/ui/stubs.d.cts +25 -0
  119. package/dist/build/ui/stubs.d.cts.map +1 -0
  120. package/dist/build/ui/stubs.d.mts +25 -0
  121. package/dist/build/ui/stubs.d.mts.map +1 -0
  122. package/dist/build/ui/stubs.mjs +106 -0
  123. package/dist/build/ui/stubs.mjs.map +1 -0
  124. package/dist/cli.cjs +83 -0
  125. package/dist/cli.cjs.map +1 -0
  126. package/dist/cli.d.cts +6 -0
  127. package/dist/cli.d.cts.map +1 -0
  128. package/dist/cli.d.mts +6 -0
  129. package/dist/cli.d.mts.map +1 -0
  130. package/dist/cli.mjs +82 -0
  131. package/dist/cli.mjs.map +1 -0
  132. package/dist/dev/serve.cjs +390 -0
  133. package/dist/dev/serve.cjs.map +1 -0
  134. package/dist/dev/serve.d.cts +23 -0
  135. package/dist/dev/serve.d.cts.map +1 -0
  136. package/dist/dev/serve.d.mts +23 -0
  137. package/dist/dev/serve.d.mts.map +1 -0
  138. package/dist/dev/serve.mjs +384 -0
  139. package/dist/dev/serve.mjs.map +1 -0
  140. package/dist/dev/watch-kill.cjs +39 -0
  141. package/dist/dev/watch-kill.cjs.map +1 -0
  142. package/dist/dev/watch-kill.mjs +38 -0
  143. package/dist/dev/watch-kill.mjs.map +1 -0
  144. package/dist/effect-helpers.cjs +23 -0
  145. package/dist/effect-helpers.cjs.map +1 -0
  146. package/dist/effect-helpers.d.cts +20 -0
  147. package/dist/effect-helpers.d.cts.map +1 -0
  148. package/dist/effect-helpers.d.mts +20 -0
  149. package/dist/effect-helpers.d.mts.map +1 -0
  150. package/dist/effect-helpers.mjs +22 -0
  151. package/dist/effect-helpers.mjs.map +1 -0
  152. package/dist/errors.cjs +50 -69
  153. package/dist/errors.cjs.map +1 -1
  154. package/dist/errors.d.cts +13 -96
  155. package/dist/errors.d.cts.map +1 -1
  156. package/dist/errors.d.mts +13 -96
  157. package/dist/errors.d.mts.map +1 -1
  158. package/dist/errors.mjs +16 -34
  159. package/dist/errors.mjs.map +1 -1
  160. package/dist/identity.cjs +19 -0
  161. package/dist/identity.cjs.map +1 -0
  162. package/dist/identity.d.cts +33 -0
  163. package/dist/identity.d.cts.map +1 -0
  164. package/dist/identity.d.mts +33 -0
  165. package/dist/identity.d.mts.map +1 -0
  166. package/dist/identity.mjs +16 -0
  167. package/dist/identity.mjs.map +1 -0
  168. package/dist/index.cjs +9 -5
  169. package/dist/index.d.cts +8 -6
  170. package/dist/index.d.mts +8 -6
  171. package/dist/index.mjs +6 -4
  172. package/dist/plugin.cjs +13 -26
  173. package/dist/plugin.cjs.map +1 -1
  174. package/dist/plugin.d.cts +57 -24
  175. package/dist/plugin.d.cts.map +1 -1
  176. package/dist/plugin.d.mts +58 -25
  177. package/dist/plugin.d.mts.map +1 -1
  178. package/dist/plugin.mjs +16 -29
  179. package/dist/plugin.mjs.map +1 -1
  180. package/dist/remote-entry.cjs +103 -0
  181. package/dist/remote-entry.cjs.map +1 -0
  182. package/dist/remote-entry.d.cts +53 -0
  183. package/dist/remote-entry.d.cts.map +1 -0
  184. package/dist/remote-entry.d.mts +53 -0
  185. package/dist/remote-entry.d.mts.map +1 -0
  186. package/dist/remote-entry.mjs +98 -0
  187. package/dist/remote-entry.mjs.map +1 -0
  188. package/dist/runtime/errors.cjs +159 -33
  189. package/dist/runtime/errors.cjs.map +1 -1
  190. package/dist/runtime/errors.d.cts +64 -7
  191. package/dist/runtime/errors.d.cts.map +1 -1
  192. package/dist/runtime/errors.d.mts +64 -7
  193. package/dist/runtime/errors.d.mts.map +1 -1
  194. package/dist/runtime/errors.mjs +154 -30
  195. package/dist/runtime/errors.mjs.map +1 -1
  196. package/dist/runtime/index.cjs +95 -23
  197. package/dist/runtime/index.cjs.map +1 -1
  198. package/dist/runtime/index.d.cts +16 -0
  199. package/dist/runtime/index.d.cts.map +1 -1
  200. package/dist/runtime/index.d.mts +16 -0
  201. package/dist/runtime/index.d.mts.map +1 -1
  202. package/dist/runtime/index.mjs +98 -26
  203. package/dist/runtime/index.mjs.map +1 -1
  204. package/dist/runtime/mf-config.cjs +3 -78
  205. package/dist/runtime/mf-config.cjs.map +1 -1
  206. package/dist/runtime/mf-config.d.cts +3 -49
  207. package/dist/runtime/mf-config.d.cts.map +1 -1
  208. package/dist/runtime/mf-config.d.mts +3 -49
  209. package/dist/runtime/mf-config.d.mts.map +1 -1
  210. package/dist/runtime/mf-config.mjs +5 -78
  211. package/dist/runtime/mf-config.mjs.map +1 -1
  212. package/dist/runtime/services/module-federation.service.cjs +57 -12
  213. package/dist/runtime/services/module-federation.service.cjs.map +1 -1
  214. package/dist/runtime/services/module-federation.service.d.cts +4 -13
  215. package/dist/runtime/services/module-federation.service.d.mts +4 -13
  216. package/dist/runtime/services/module-federation.service.mjs +57 -14
  217. package/dist/runtime/services/module-federation.service.mjs.map +1 -1
  218. package/dist/runtime/services/normalize.cjs +2 -22
  219. package/dist/runtime/services/normalize.d.cts +2 -21
  220. package/dist/runtime/services/normalize.d.mts +2 -21
  221. package/dist/runtime/services/normalize.mjs +2 -21
  222. package/dist/runtime/services/plugin-lifecycle.service.cjs +9 -11
  223. package/dist/runtime/services/plugin-lifecycle.service.cjs.map +1 -1
  224. package/dist/runtime/services/plugin-lifecycle.service.d.cts +3 -16
  225. package/dist/runtime/services/plugin-lifecycle.service.d.mts +3 -16
  226. package/dist/runtime/services/plugin-lifecycle.service.mjs +10 -13
  227. package/dist/runtime/services/plugin-lifecycle.service.mjs.map +1 -1
  228. package/dist/runtime/services/plugin-loader.service.cjs +56 -30
  229. package/dist/runtime/services/plugin-loader.service.cjs.map +1 -1
  230. package/dist/runtime/services/plugin-loader.service.d.cts +6 -53
  231. package/dist/runtime/services/plugin-loader.service.d.mts +6 -53
  232. package/dist/runtime/services/plugin-loader.service.mjs +55 -31
  233. package/dist/runtime/services/plugin-loader.service.mjs.map +1 -1
  234. package/dist/runtime/services/plugin.service.cjs +10 -12
  235. package/dist/runtime/services/plugin.service.cjs.map +1 -1
  236. package/dist/runtime/services/plugin.service.d.cts +14 -36
  237. package/dist/runtime/services/plugin.service.d.cts.map +1 -1
  238. package/dist/runtime/services/plugin.service.d.mts +14 -36
  239. package/dist/runtime/services/plugin.service.d.mts.map +1 -1
  240. package/dist/runtime/services/plugin.service.mjs +14 -18
  241. package/dist/runtime/services/plugin.service.mjs.map +1 -1
  242. package/dist/runtime/services/secrets.service.cjs +12 -12
  243. package/dist/runtime/services/secrets.service.cjs.map +1 -1
  244. package/dist/runtime/services/secrets.service.d.cts +3 -15
  245. package/dist/runtime/services/secrets.service.d.mts +3 -15
  246. package/dist/runtime/services/secrets.service.mjs +12 -13
  247. package/dist/runtime/services/secrets.service.mjs.map +1 -1
  248. package/dist/runtime/services/shared-identity.cjs +40 -0
  249. package/dist/runtime/services/shared-identity.cjs.map +1 -0
  250. package/dist/runtime/services/shared-identity.mjs +38 -0
  251. package/dist/runtime/services/shared-identity.mjs.map +1 -0
  252. package/dist/runtime/validation.cjs +2 -2
  253. package/dist/runtime/validation.cjs.map +1 -1
  254. package/dist/runtime/validation.mjs +2 -2
  255. package/dist/runtime/validation.mjs.map +1 -1
  256. package/dist/shared-deps-spec.cjs +384 -0
  257. package/dist/shared-deps-spec.cjs.map +1 -0
  258. package/dist/shared-deps-spec.d.cts +182 -0
  259. package/dist/shared-deps-spec.d.cts.map +1 -0
  260. package/dist/shared-deps-spec.d.mts +182 -0
  261. package/dist/shared-deps-spec.d.mts.map +1 -0
  262. package/dist/shared-deps-spec.mjs +368 -0
  263. package/dist/shared-deps-spec.mjs.map +1 -0
  264. package/dist/types.d.cts +25 -41
  265. package/dist/types.d.cts.map +1 -1
  266. package/dist/types.d.mts +25 -41
  267. package/dist/types.d.mts.map +1 -1
  268. package/dist/ui/manifest/construct.cjs +268 -0
  269. package/dist/ui/manifest/construct.cjs.map +1 -0
  270. package/dist/ui/manifest/construct.d.cts +48 -0
  271. package/dist/ui/manifest/construct.d.cts.map +1 -0
  272. package/dist/ui/manifest/construct.d.mts +48 -0
  273. package/dist/ui/manifest/construct.d.mts.map +1 -0
  274. package/dist/ui/manifest/construct.mjs +268 -0
  275. package/dist/ui/manifest/construct.mjs.map +1 -0
  276. package/dist/ui/manifest/contract.cjs +34 -0
  277. package/dist/ui/manifest/contract.cjs.map +1 -0
  278. package/dist/ui/manifest/contract.d.cts +26 -0
  279. package/dist/ui/manifest/contract.d.cts.map +1 -0
  280. package/dist/ui/manifest/contract.d.mts +26 -0
  281. package/dist/ui/manifest/contract.d.mts.map +1 -0
  282. package/dist/ui/manifest/contract.mjs +26 -0
  283. package/dist/ui/manifest/contract.mjs.map +1 -0
  284. package/dist/ui/manifest/descriptor.cjs +64 -0
  285. package/dist/ui/manifest/descriptor.cjs.map +1 -0
  286. package/dist/ui/manifest/descriptor.d.cts +60 -0
  287. package/dist/ui/manifest/descriptor.d.cts.map +1 -0
  288. package/dist/ui/manifest/descriptor.d.mts +60 -0
  289. package/dist/ui/manifest/descriptor.d.mts.map +1 -0
  290. package/dist/ui/manifest/descriptor.mjs +61 -0
  291. package/dist/ui/manifest/descriptor.mjs.map +1 -0
  292. package/dist/ui/manifest/generator.cjs +128 -0
  293. package/dist/ui/manifest/generator.cjs.map +1 -0
  294. package/dist/ui/manifest/generator.d.cts +41 -0
  295. package/dist/ui/manifest/generator.d.cts.map +1 -0
  296. package/dist/ui/manifest/generator.d.mts +41 -0
  297. package/dist/ui/manifest/generator.d.mts.map +1 -0
  298. package/dist/ui/manifest/generator.mjs +125 -0
  299. package/dist/ui/manifest/generator.mjs.map +1 -0
  300. package/dist/ui/manifest/index.cjs +35 -0
  301. package/dist/ui/manifest/index.d.cts +9 -0
  302. package/dist/ui/manifest/index.d.mts +9 -0
  303. package/dist/ui/manifest/index.mjs +9 -0
  304. package/dist/ui/manifest/manifest-schema.cjs +97 -0
  305. package/dist/ui/manifest/manifest-schema.cjs.map +1 -0
  306. package/dist/ui/manifest/manifest-schema.d.cts +132 -0
  307. package/dist/ui/manifest/manifest-schema.d.cts.map +1 -0
  308. package/dist/ui/manifest/manifest-schema.d.mts +132 -0
  309. package/dist/ui/manifest/manifest-schema.d.mts.map +1 -0
  310. package/dist/ui/manifest/manifest-schema.mjs +90 -0
  311. package/dist/ui/manifest/manifest-schema.mjs.map +1 -0
  312. package/dist/ui/manifest/mount-registry.cjs +52 -0
  313. package/dist/ui/manifest/mount-registry.cjs.map +1 -0
  314. package/dist/ui/manifest/mount-registry.d.cts +61 -0
  315. package/dist/ui/manifest/mount-registry.d.cts.map +1 -0
  316. package/dist/ui/manifest/mount-registry.d.mts +61 -0
  317. package/dist/ui/manifest/mount-registry.d.mts.map +1 -0
  318. package/dist/ui/manifest/mount-registry.mjs +48 -0
  319. package/dist/ui/manifest/mount-registry.mjs.map +1 -0
  320. package/dist/ui/manifest/nav.cjs +13 -0
  321. package/dist/ui/manifest/nav.cjs.map +1 -0
  322. package/dist/ui/manifest/nav.d.cts +34 -0
  323. package/dist/ui/manifest/nav.d.cts.map +1 -0
  324. package/dist/ui/manifest/nav.d.mts +34 -0
  325. package/dist/ui/manifest/nav.d.mts.map +1 -0
  326. package/dist/ui/manifest/nav.mjs +13 -0
  327. package/dist/ui/manifest/nav.mjs.map +1 -0
  328. package/dist/ui/manifest/route-config.cjs +33 -0
  329. package/dist/ui/manifest/route-config.cjs.map +1 -0
  330. package/dist/ui/manifest/route-config.d.cts +40 -0
  331. package/dist/ui/manifest/route-config.d.cts.map +1 -0
  332. package/dist/ui/manifest/route-config.d.mts +40 -0
  333. package/dist/ui/manifest/route-config.d.mts.map +1 -0
  334. package/dist/ui/manifest/route-config.mjs +33 -0
  335. package/dist/ui/manifest/route-config.mjs.map +1 -0
  336. package/dist/version-manifest.cjs +65 -0
  337. package/dist/version-manifest.cjs.map +1 -0
  338. package/dist/version-manifest.d.cts +52 -0
  339. package/dist/version-manifest.d.cts.map +1 -0
  340. package/dist/version-manifest.d.mts +52 -0
  341. package/dist/version-manifest.d.mts.map +1 -0
  342. package/dist/version-manifest.mjs +63 -0
  343. package/dist/version-manifest.mjs.map +1 -0
  344. package/package.json +165 -68
  345. package/skills/plugin-client/SKILL.md +24 -5
  346. package/skills/plugin-development/SKILL.md +79 -47
  347. package/skills/plugin-testing/SKILL.md +41 -12
  348. package/src/build/artifact-names.ts +117 -0
  349. package/src/build/contract-types.ts +101 -0
  350. package/src/build/rspack/build-report-plugin.ts +34 -0
  351. package/src/build/rspack/chunk-completeness-plugin.ts +57 -0
  352. package/src/build/rspack/compose.ts +87 -0
  353. package/src/build/rspack/fix-mf-data-uri-plugin.ts +23 -12
  354. package/src/build/rspack/generated-config.ts +35 -0
  355. package/src/build/rspack/index.ts +10 -5
  356. package/src/build/rspack/module-federation.ts +1 -1
  357. package/src/build/rspack/plugin.ts +103 -105
  358. package/src/build/rspack/utils.ts +8 -2
  359. package/src/build/ui/factory.ts +96 -0
  360. package/src/build/ui/generated-config.ts +133 -0
  361. package/src/build/ui/hash-artifacts-plugin.ts +79 -0
  362. package/src/build/ui/index.ts +98 -0
  363. package/src/build/ui/manifest-plugin.ts +54 -0
  364. package/src/build/ui/rsbuild-config.ts +256 -0
  365. package/src/build/ui/stubs.ts +103 -0
  366. package/src/cli.ts +100 -0
  367. package/src/dev/serve.ts +477 -0
  368. package/src/dev/watch-kill.ts +58 -0
  369. package/src/effect-helpers.ts +25 -0
  370. package/src/errors.ts +17 -18
  371. package/src/identity.ts +36 -0
  372. package/src/index.ts +4 -0
  373. package/src/plugin.ts +88 -91
  374. package/src/remote-entry.ts +171 -0
  375. package/src/runtime/errors.ts +229 -26
  376. package/src/runtime/index.ts +132 -43
  377. package/src/runtime/mf-config.ts +12 -107
  378. package/src/runtime/services/module-federation.service.ts +218 -117
  379. package/src/runtime/services/normalize.ts +1 -18
  380. package/src/runtime/services/plugin-lifecycle.service.ts +66 -75
  381. package/src/runtime/services/plugin-loader.service.ts +271 -212
  382. package/src/runtime/services/plugin.service.ts +61 -43
  383. package/src/runtime/services/secrets.service.ts +20 -15
  384. package/src/runtime/services/shared-identity.ts +68 -0
  385. package/src/runtime/validation.ts +5 -7
  386. package/src/shared-deps-spec.ts +478 -0
  387. package/src/types.ts +25 -48
  388. package/src/ui/manifest/construct.ts +403 -0
  389. package/src/ui/manifest/contract.ts +33 -0
  390. package/src/ui/manifest/descriptor.ts +96 -0
  391. package/src/ui/manifest/generator.ts +238 -0
  392. package/src/ui/manifest/index.ts +55 -0
  393. package/src/ui/manifest/manifest-schema.ts +107 -0
  394. package/src/ui/manifest/mount-registry.ts +50 -0
  395. package/src/ui/manifest/nav.ts +43 -0
  396. package/src/ui/manifest/route-config.ts +82 -0
  397. package/src/version-manifest.ts +88 -0
  398. package/dist/build/rspack/dev-server-middleware.cjs +0 -248
  399. package/dist/build/rspack/dev-server-middleware.cjs.map +0 -1
  400. package/dist/build/rspack/dev-server-middleware.mjs +0 -247
  401. package/dist/build/rspack/dev-server-middleware.mjs.map +0 -1
  402. package/dist/build/shared-deps.cjs +0 -83
  403. package/dist/build/shared-deps.cjs.map +0 -1
  404. package/dist/build/shared-deps.d.cts +0 -67
  405. package/dist/build/shared-deps.d.cts.map +0 -1
  406. package/dist/build/shared-deps.d.mts +0 -67
  407. package/dist/build/shared-deps.d.mts.map +0 -1
  408. package/dist/build/shared-deps.mjs +0 -79
  409. package/dist/build/shared-deps.mjs.map +0 -1
  410. package/dist/effect.cjs +0 -9
  411. package/dist/effect.d.cts +0 -1
  412. package/dist/effect.d.mts +0 -1
  413. package/dist/effect.mjs +0 -3
  414. package/dist/orpc-openapi.cjs +0 -17
  415. package/dist/orpc-openapi.d.cts +0 -2
  416. package/dist/orpc-openapi.d.mts +0 -2
  417. package/dist/orpc-openapi.mjs +0 -5
  418. package/dist/orpc.cjs +0 -46
  419. package/dist/orpc.d.cts +0 -7
  420. package/dist/orpc.d.mts +0 -7
  421. package/dist/orpc.mjs +0 -11
  422. package/dist/package.cjs +0 -23
  423. package/dist/package.cjs.map +0 -1
  424. package/dist/package.mjs +0 -17
  425. package/dist/package.mjs.map +0 -1
  426. package/dist/runtime/services/module-federation.service.d.cts.map +0 -1
  427. package/dist/runtime/services/module-federation.service.d.mts.map +0 -1
  428. package/dist/runtime/services/normalize.cjs.map +0 -1
  429. package/dist/runtime/services/normalize.d.cts.map +0 -1
  430. package/dist/runtime/services/normalize.d.mts.map +0 -1
  431. package/dist/runtime/services/normalize.mjs.map +0 -1
  432. package/dist/runtime/services/plugin-lifecycle.service.d.cts.map +0 -1
  433. package/dist/runtime/services/plugin-lifecycle.service.d.mts.map +0 -1
  434. package/dist/runtime/services/plugin-loader.service.d.cts.map +0 -1
  435. package/dist/runtime/services/plugin-loader.service.d.mts.map +0 -1
  436. package/dist/runtime/services/secrets.service.d.cts.map +0 -1
  437. package/dist/runtime/services/secrets.service.d.mts.map +0 -1
  438. package/dist/testing/index.cjs +0 -57
  439. package/dist/testing/index.cjs.map +0 -1
  440. package/dist/testing/index.d.cts +0 -54
  441. package/dist/testing/index.d.cts.map +0 -1
  442. package/dist/testing/index.d.mts +0 -54
  443. package/dist/testing/index.d.mts.map +0 -1
  444. package/dist/testing/index.mjs +0 -55
  445. package/dist/testing/index.mjs.map +0 -1
  446. package/dist/zod-core.cjs +0 -9
  447. package/dist/zod-core.d.cts +0 -1
  448. package/dist/zod-core.d.mts +0 -1
  449. package/dist/zod-core.mjs +0 -3
  450. package/dist/zod.cjs +0 -11
  451. package/dist/zod.d.cts +0 -2
  452. package/dist/zod.d.mts +0 -2
  453. package/dist/zod.mjs +0 -3
  454. package/src/build/rspack/dev-server-middleware.ts +0 -324
  455. package/src/build/shared-deps.ts +0 -102
  456. package/src/effect.ts +0 -1
  457. package/src/orpc-openapi.ts +0 -2
  458. package/src/orpc.ts +0 -9
  459. package/src/testing/index.ts +0 -87
  460. package/src/testing/mocks/module-federation.service.ts +0 -41
  461. package/src/zod-core.ts +0 -1
  462. package/src/zod.ts +0 -3
@@ -1,15 +1,3 @@
1
- import { PluginRuntimeError } from "../errors.mjs";
2
- import { SecretsConfig } from "../../types.mjs";
3
- import { Context, Effect } from "effect";
4
- //#region src/runtime/services/secrets.service.d.ts
5
- declare const SecretsConfigTag_base: Context.TagClass<SecretsConfigTag, "SecretsConfig", SecretsConfig>;
6
- declare class SecretsConfigTag extends SecretsConfigTag_base {}
7
- declare const SecretsService_base: Effect.Service.Class<SecretsService, "SecretsService", {
8
- readonly effect: Effect.Effect<{
9
- hydrateSecrets: <T>(config: T) => Effect.Effect<T, PluginRuntimeError, never>;
10
- }, never, SecretsConfigTag>;
11
- }>;
12
- declare class SecretsService extends SecretsService_base {}
13
- //#endregion
14
- export { SecretsConfigTag, SecretsService };
15
- //# sourceMappingURL=secrets.service.d.mts.map
1
+ import "../errors.mjs";
2
+ import "../../types.mjs";
3
+ import { Context, Effect, Layer } from "effect";
@@ -1,11 +1,12 @@
1
1
  import { PluginRuntimeError } from "../errors.mjs";
2
+ import { Context, Effect, Layer } from "effect";
2
3
  import * as z$1 from "zod";
3
- import { Context, Effect } from "effect";
4
4
 
5
5
  //#region src/runtime/services/secrets.service.ts
6
6
  const configSchema = z$1.object({ secrets: z$1.record(z$1.string(), z$1.unknown()) }).passthrough();
7
- var SecretsConfigTag = class extends Context.Tag("SecretsConfig")() {};
8
- var SecretsService = class extends Effect.Service()("SecretsService", { effect: Effect.gen(function* () {
7
+ var SecretsConfigTag = class extends Context.Service()("SecretsConfig") {};
8
+ var SecretsService = class extends Context.Service()("SecretsService") {};
9
+ const SecretsServiceDefault = Layer.effect(SecretsService, Effect.gen(function* () {
9
10
  const secrets = yield* SecretsConfigTag;
10
11
  const hydrateValue = (value) => {
11
12
  if (typeof value === "string") {
@@ -31,18 +32,16 @@ var SecretsService = class extends Effect.Service()("SecretsService", { effect:
31
32
  };
32
33
  return { hydrateSecrets: (config) => Effect.gen(function* () {
33
34
  const parseResult = configSchema.parse(config);
34
- try {
35
- return hydrateValue(parseResult);
36
- } catch (error) {
37
- return yield* Effect.fail(new PluginRuntimeError({
35
+ return yield* Effect.try({
36
+ try: () => hydrateValue(parseResult),
37
+ catch: (error) => new PluginRuntimeError({
38
38
  operation: "hydrate-secrets",
39
- cause: error instanceof Error ? error : new Error(String(error)),
40
- retryable: false
41
- }));
42
- }
39
+ cause: error instanceof Error ? error : new Error(String(error))
40
+ })
41
+ });
43
42
  }) };
44
- }) }) {};
43
+ }));
45
44
 
46
45
  //#endregion
47
- export { SecretsConfigTag, SecretsService };
46
+ export { SecretsConfigTag, SecretsService, SecretsServiceDefault };
48
47
  //# sourceMappingURL=secrets.service.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.service.mjs","names":["z"],"sources":["../../../src/runtime/services/secrets.service.ts"],"sourcesContent":["import { Context, Effect } from \"effect\";\nimport * as z from \"zod\";\nimport type { SecretsConfig } from \"../../types\";\nimport { PluginRuntimeError } from \"../errors\";\n\nconst configSchema = z\n .object({\n secrets: z.record(z.string(), z.unknown()),\n })\n .passthrough();\n\nexport class SecretsConfigTag extends Context.Tag(\"SecretsConfig\")<\n SecretsConfigTag,\n SecretsConfig\n>() {}\n\nexport class SecretsService extends Effect.Service<SecretsService>()(\"SecretsService\", {\n effect: Effect.gen(function* () {\n const secrets = yield* SecretsConfigTag;\n\n const hydrateValue = (value: unknown): unknown => {\n if (typeof value === \"string\") {\n let result = value;\n for (const [key, secretValue] of Object.entries(secrets)) {\n const pattern = new RegExp(`{{${key}}}`, \"g\");\n result = result.replace(pattern, String(secretValue));\n }\n return result;\n }\n\n if (Array.isArray(value)) {\n return value.map(hydrateValue);\n }\n\n if (value && typeof value === \"object\") {\n const isPlainObject = value.constructor === Object || value.constructor === undefined;\n\n if (isPlainObject) {\n const hydrated: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n hydrated[key] = hydrateValue(val);\n }\n return hydrated;\n }\n\n const hydrated = Object.create(Object.getPrototypeOf(value));\n for (const [key, val] of Object.entries(value)) {\n hydrated[key] = hydrateValue(val);\n }\n return hydrated;\n }\n\n return value;\n };\n\n return {\n hydrateSecrets: <T>(config: T) =>\n Effect.gen(function* () {\n const parseResult = configSchema.parse(config);\n try {\n return hydrateValue(parseResult) as T;\n } catch (error) {\n return yield* Effect.fail(\n new PluginRuntimeError({\n operation: \"hydrate-secrets\",\n cause: error instanceof Error ? error : new Error(String(error)),\n retryable: false,\n }),\n );\n }\n }),\n };\n }),\n}) {}\n"],"mappings":";;;;;AAKA,MAAM,eAAeA,IAClB,OAAO,EACN,SAASA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,EAC3C,CAAC,CAAC,CACD,YAAY;AAEf,IAAa,mBAAb,cAAsC,QAAQ,IAAI,eAAe,CAAC,CAGhE,CAAC,CAAC,CAAC;AAEL,IAAa,iBAAb,cAAoC,OAAO,QAAwB,CAAC,CAAC,kBAAkB,EACrF,QAAQ,OAAO,IAAI,aAAa;CAC9B,MAAM,UAAU,OAAO;CAEvB,MAAM,gBAAgB,UAA4B;EAChD,IAAI,OAAO,UAAU,UAAU;GAC7B,IAAI,SAAS;GACb,KAAK,MAAM,CAAC,KAAK,gBAAgB,OAAO,QAAQ,OAAO,GAAG;IACxD,MAAM,UAAU,IAAI,OAAO,KAAK,IAAI,KAAK,GAAG;IAC5C,SAAS,OAAO,QAAQ,SAAS,OAAO,WAAW,CAAC;GACtD;GACA,OAAO;EACT;EAEA,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,IAAI,YAAY;EAG/B,IAAI,SAAS,OAAO,UAAU,UAAU;GAGtC,IAFsB,MAAM,gBAAgB,UAAU,MAAM,gBAAgB,QAEzD;IACjB,MAAM,WAAoC,CAAC;IAC3C,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAK,GAC3C,SAAS,OAAO,aAAa,GAAG;IAElC,OAAO;GACT;GAEA,MAAM,WAAW,OAAO,OAAO,OAAO,eAAe,KAAK,CAAC;GAC3D,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAK,GAC3C,SAAS,OAAO,aAAa,GAAG;GAElC,OAAO;EACT;EAEA,OAAO;CACT;CAEA,OAAO,EACL,iBAAoB,WAClB,OAAO,IAAI,aAAa;EACtB,MAAM,cAAc,aAAa,MAAM,MAAM;EAC7C,IAAI;GACF,OAAO,aAAa,WAAW;EACjC,SAAS,OAAO;GACd,OAAO,OAAO,OAAO,KACnB,IAAI,mBAAmB;IACrB,WAAW;IACX,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;IAC/D,WAAW;GACb,CAAC,CACH;EACF;CACF,CAAC,EACL;AACF,CAAC,EACH,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"secrets.service.mjs","names":["z"],"sources":["../../../src/runtime/services/secrets.service.ts"],"sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport * as z from \"zod\";\nimport type { SecretsConfig } from \"../../types\";\nimport { PluginRuntimeError } from \"../errors\";\n\nconst configSchema = z\n .object({\n secrets: z.record(z.string(), z.unknown()),\n })\n .passthrough();\n\nexport class SecretsConfigTag extends Context.Service<SecretsConfigTag, SecretsConfig>()(\n \"SecretsConfig\",\n) {}\n\nexport interface SecretsServiceShape {\n hydrateSecrets: <T>(config: T) => Effect.Effect<T, PluginRuntimeError>;\n}\n\nexport class SecretsService extends Context.Service<SecretsService, SecretsServiceShape>()(\n \"SecretsService\",\n) {}\n\nexport const SecretsServiceDefault = Layer.effect(\n SecretsService,\n Effect.gen(function* () {\n const secrets = yield* SecretsConfigTag;\n\n const hydrateValue = (value: unknown): unknown => {\n if (typeof value === \"string\") {\n let result = value;\n for (const [key, secretValue] of Object.entries(secrets)) {\n const pattern = new RegExp(`{{${key}}}`, \"g\");\n result = result.replace(pattern, String(secretValue));\n }\n return result;\n }\n\n if (Array.isArray(value)) {\n return value.map(hydrateValue);\n }\n\n if (value && typeof value === \"object\") {\n const isPlainObject = value.constructor === Object || value.constructor === undefined;\n\n if (isPlainObject) {\n const hydrated: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n hydrated[key] = hydrateValue(val);\n }\n return hydrated;\n }\n\n const hydrated = Object.create(Object.getPrototypeOf(value));\n for (const [key, val] of Object.entries(value)) {\n hydrated[key] = hydrateValue(val);\n }\n return hydrated;\n }\n\n return value;\n };\n\n return {\n hydrateSecrets: <T>(config: T) =>\n Effect.gen(function* () {\n const parseResult = configSchema.parse(config);\n return yield* Effect.try({\n try: () => hydrateValue(parseResult) as T,\n catch: (error) =>\n new PluginRuntimeError({\n operation: \"hydrate-secrets\",\n cause: error instanceof Error ? error : new Error(String(error)),\n }),\n });\n }),\n };\n }),\n);\n"],"mappings":";;;;;AAKA,MAAM,eAAeA,IAClB,OAAO,EACN,SAASA,IAAE,OAAOA,IAAE,OAAO,GAAGA,IAAE,QAAQ,CAAC,EAC3C,CAAC,CAAC,CACD,YAAY;AAEf,IAAa,mBAAb,cAAsC,QAAQ,QAAyC,CAAC,CACtF,eACF,CAAC,CAAC,CAAC;AAMH,IAAa,iBAAb,cAAoC,QAAQ,QAA6C,CAAC,CACxF,gBACF,CAAC,CAAC,CAAC;AAEH,MAAa,wBAAwB,MAAM,OACzC,gBACA,OAAO,IAAI,aAAa;CACtB,MAAM,UAAU,OAAO;CAEvB,MAAM,gBAAgB,UAA4B;EAChD,IAAI,OAAO,UAAU,UAAU;GAC7B,IAAI,SAAS;GACb,KAAK,MAAM,CAAC,KAAK,gBAAgB,OAAO,QAAQ,OAAO,GAAG;IACxD,MAAM,UAAU,IAAI,OAAO,KAAK,IAAI,KAAK,GAAG;IAC5C,SAAS,OAAO,QAAQ,SAAS,OAAO,WAAW,CAAC;GACtD;GACA,OAAO;EACT;EAEA,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,MAAM,IAAI,YAAY;EAG/B,IAAI,SAAS,OAAO,UAAU,UAAU;GAGtC,IAFsB,MAAM,gBAAgB,UAAU,MAAM,gBAAgB,QAEzD;IACjB,MAAM,WAAoC,CAAC;IAC3C,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAK,GAC3C,SAAS,OAAO,aAAa,GAAG;IAElC,OAAO;GACT;GAEA,MAAM,WAAW,OAAO,OAAO,OAAO,eAAe,KAAK,CAAC;GAC3D,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,KAAK,GAC3C,SAAS,OAAO,aAAa,GAAG;GAElC,OAAO;EACT;EAEA,OAAO;CACT;CAEA,OAAO,EACL,iBAAoB,WAClB,OAAO,IAAI,aAAa;EACtB,MAAM,cAAc,aAAa,MAAM,MAAM;EAC7C,OAAO,OAAO,OAAO,IAAI;GACvB,WAAW,aAAa,WAAW;GACnC,QAAQ,UACN,IAAI,mBAAmB;IACrB,WAAW;IACX,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;GACjE,CAAC;EACL,CAAC;CACH,CAAC,EACL;AACF,CAAC,CACH"}
@@ -0,0 +1,40 @@
1
+ const require_shared_deps_spec = require('../../shared-deps-spec.cjs');
2
+
3
+ //#region src/runtime/services/shared-identity.ts
4
+ const MANIFEST_TIMEOUT_MS = 15e3;
5
+ function manifestUrl(remoteUrl) {
6
+ return remoteUrl.endsWith("/") ? `${remoteUrl}mf-manifest.json` : `${remoteUrl}/mf-manifest.json`;
7
+ }
8
+ function normalizeBaseUrl(remoteUrl) {
9
+ return (remoteUrl.split("#")[0] ?? remoteUrl).replace(/\/(mf-manifest\.json|remoteEntry(?:\.[^/]+)?\.js)$/i, "");
10
+ }
11
+ function compareSharedIdentity(remoteShared, expectedVersions) {
12
+ const mismatches = [];
13
+ const remoteByName = new Map((remoteShared ?? []).map((s) => [s.name, s]));
14
+ for (const [name, expected] of expectedVersions.entries()) {
15
+ if (!require_shared_deps_spec.isEffectCriticalSharedDep(name)) continue;
16
+ const remoteEntry = remoteByName.get(name);
17
+ if (!remoteEntry) continue;
18
+ if (remoteEntry.version && remoteEntry.version !== expected) mismatches.push({
19
+ name,
20
+ expected,
21
+ actual: remoteEntry.version
22
+ });
23
+ }
24
+ return mismatches;
25
+ }
26
+ function describeSharedIdentityMismatch(pluginId, mismatches, hostExpectation) {
27
+ return `[SharedIdentity] Refusing to load plugin "${pluginId}": shared dependency version skew.\n${mismatches.map((m) => ` ${m.name}: expected ${m.expected} (from ${hostExpectation}), got ${m.actual ?? "missing"}`).join("\n")}\nRun "bos mf check" for the full report. Fix: rebuild and redeploy the host and this plugin together (single release train, e.g. "bos publish --deploy --packages local").`;
28
+ }
29
+ async function fetchRemoteIdentityManifest(remoteUrl) {
30
+ const url = manifestUrl(normalizeBaseUrl(remoteUrl));
31
+ const res = await fetch(url, { signal: AbortSignal.timeout(MANIFEST_TIMEOUT_MS) });
32
+ if (!res.ok) return null;
33
+ return await res.json();
34
+ }
35
+
36
+ //#endregion
37
+ exports.compareSharedIdentity = compareSharedIdentity;
38
+ exports.describeSharedIdentityMismatch = describeSharedIdentityMismatch;
39
+ exports.fetchRemoteIdentityManifest = fetchRemoteIdentityManifest;
40
+ //# sourceMappingURL=shared-identity.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-identity.cjs","names":["isEffectCriticalSharedDep"],"sources":["../../../src/runtime/services/shared-identity.ts"],"sourcesContent":["import { isEffectCriticalSharedDep } from \"../../shared-deps-spec\";\n\ninterface IdentityManifest {\n metaData?: { pluginVersion?: string; name?: string };\n shared?: Array<{ name: string; version?: string }>;\n}\n\nexport interface SharedIdentityMismatch {\n name: string;\n expected: string;\n actual: string | null;\n}\n\nconst MANIFEST_TIMEOUT_MS = 15_000;\n\nfunction manifestUrl(remoteUrl: string): string {\n return remoteUrl.endsWith(\"/\") ? `${remoteUrl}mf-manifest.json` : `${remoteUrl}/mf-manifest.json`;\n}\n\nfunction normalizeBaseUrl(remoteUrl: string): string {\n const withoutHash = remoteUrl.split(\"#\")[0] ?? remoteUrl;\n return withoutHash.replace(/\\/(mf-manifest\\.json|remoteEntry(?:\\.[^/]+)?\\.js)$/i, \"\");\n}\n\nexport function compareSharedIdentity(\n remoteShared: Array<{ name: string; version?: string }> | undefined,\n expectedVersions: Map<string, string>,\n): SharedIdentityMismatch[] {\n const mismatches: SharedIdentityMismatch[] = [];\n const remoteByName = new Map((remoteShared ?? []).map((s) => [s.name, s]));\n\n for (const [name, expected] of expectedVersions.entries()) {\n if (!isEffectCriticalSharedDep(name)) continue;\n const remoteEntry = remoteByName.get(name);\n if (!remoteEntry) continue;\n if (remoteEntry.version && remoteEntry.version !== expected) {\n mismatches.push({ name, expected, actual: remoteEntry.version });\n }\n }\n\n return mismatches;\n}\n\nexport function describeSharedIdentityMismatch(\n pluginId: string,\n mismatches: SharedIdentityMismatch[],\n hostExpectation: string,\n): string {\n const lines = mismatches.map(\n (m) =>\n ` ${m.name}: expected ${m.expected} (from ${hostExpectation}), got ${m.actual ?? \"missing\"}`,\n );\n return (\n `[SharedIdentity] Refusing to load plugin \"${pluginId}\": shared dependency version skew.\\n` +\n `${lines.join(\"\\n\")}\\n` +\n `Run \"bos mf check\" for the full report. Fix: rebuild and redeploy the host and this plugin together (single release train, e.g. \"bos publish --deploy --packages local\").`\n );\n}\n\nexport async function fetchRemoteIdentityManifest(\n remoteUrl: string,\n): Promise<IdentityManifest | null> {\n const base = normalizeBaseUrl(remoteUrl);\n const url = manifestUrl(base);\n const res = await fetch(url, { signal: AbortSignal.timeout(MANIFEST_TIMEOUT_MS) });\n if (!res.ok) return null;\n return (await res.json()) as IdentityManifest;\n}\n"],"mappings":";;;AAaA,MAAM,sBAAsB;AAE5B,SAAS,YAAY,WAA2B;CAC9C,OAAO,UAAU,SAAS,GAAG,IAAI,GAAG,UAAU,oBAAoB,GAAG,UAAU;AACjF;AAEA,SAAS,iBAAiB,WAA2B;CAEnD,QADoB,UAAU,MAAM,GAAG,CAAC,CAAC,MAAM,UAC7B,CAAC,QAAQ,uDAAuD,EAAE;AACtF;AAEA,SAAgB,sBACd,cACA,kBAC0B;CAC1B,MAAM,aAAuC,CAAC;CAC9C,MAAM,eAAe,IAAI,KAAK,gBAAgB,CAAC,EAAC,CAAE,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAEzE,KAAK,MAAM,CAAC,MAAM,aAAa,iBAAiB,QAAQ,GAAG;EACzD,IAAI,CAACA,mDAA0B,IAAI,GAAG;EACtC,MAAM,cAAc,aAAa,IAAI,IAAI;EACzC,IAAI,CAAC,aAAa;EAClB,IAAI,YAAY,WAAW,YAAY,YAAY,UACjD,WAAW,KAAK;GAAE;GAAM;GAAU,QAAQ,YAAY;EAAQ,CAAC;CAEnE;CAEA,OAAO;AACT;AAEA,SAAgB,+BACd,UACA,YACA,iBACQ;CAKR,OACE,6CAA6C,SAAS,sCAL1C,WAAW,KACtB,MACC,KAAK,EAAE,KAAK,aAAa,EAAE,SAAS,SAAS,gBAAgB,SAAS,EAAE,UAAU,WAI7E,CAAC,CAAC,KAAK,IAAI,EAAE;AAGxB;AAEA,eAAsB,4BACpB,WACkC;CAElC,MAAM,MAAM,YADC,iBAAiB,SACH,CAAC;CAC5B,MAAM,MAAM,MAAM,MAAM,KAAK,EAAE,QAAQ,YAAY,QAAQ,mBAAmB,EAAE,CAAC;CACjF,IAAI,CAAC,IAAI,IAAI,OAAO;CACpB,OAAQ,MAAM,IAAI,KAAK;AACzB"}
@@ -0,0 +1,38 @@
1
+ import { isEffectCriticalSharedDep } from "../../shared-deps-spec.mjs";
2
+
3
+ //#region src/runtime/services/shared-identity.ts
4
+ const MANIFEST_TIMEOUT_MS = 15e3;
5
+ function manifestUrl(remoteUrl) {
6
+ return remoteUrl.endsWith("/") ? `${remoteUrl}mf-manifest.json` : `${remoteUrl}/mf-manifest.json`;
7
+ }
8
+ function normalizeBaseUrl(remoteUrl) {
9
+ return (remoteUrl.split("#")[0] ?? remoteUrl).replace(/\/(mf-manifest\.json|remoteEntry(?:\.[^/]+)?\.js)$/i, "");
10
+ }
11
+ function compareSharedIdentity(remoteShared, expectedVersions) {
12
+ const mismatches = [];
13
+ const remoteByName = new Map((remoteShared ?? []).map((s) => [s.name, s]));
14
+ for (const [name, expected] of expectedVersions.entries()) {
15
+ if (!isEffectCriticalSharedDep(name)) continue;
16
+ const remoteEntry = remoteByName.get(name);
17
+ if (!remoteEntry) continue;
18
+ if (remoteEntry.version && remoteEntry.version !== expected) mismatches.push({
19
+ name,
20
+ expected,
21
+ actual: remoteEntry.version
22
+ });
23
+ }
24
+ return mismatches;
25
+ }
26
+ function describeSharedIdentityMismatch(pluginId, mismatches, hostExpectation) {
27
+ return `[SharedIdentity] Refusing to load plugin "${pluginId}": shared dependency version skew.\n${mismatches.map((m) => ` ${m.name}: expected ${m.expected} (from ${hostExpectation}), got ${m.actual ?? "missing"}`).join("\n")}\nRun "bos mf check" for the full report. Fix: rebuild and redeploy the host and this plugin together (single release train, e.g. "bos publish --deploy --packages local").`;
28
+ }
29
+ async function fetchRemoteIdentityManifest(remoteUrl) {
30
+ const url = manifestUrl(normalizeBaseUrl(remoteUrl));
31
+ const res = await fetch(url, { signal: AbortSignal.timeout(MANIFEST_TIMEOUT_MS) });
32
+ if (!res.ok) return null;
33
+ return await res.json();
34
+ }
35
+
36
+ //#endregion
37
+ export { compareSharedIdentity, describeSharedIdentityMismatch, fetchRemoteIdentityManifest };
38
+ //# sourceMappingURL=shared-identity.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-identity.mjs","names":[],"sources":["../../../src/runtime/services/shared-identity.ts"],"sourcesContent":["import { isEffectCriticalSharedDep } from \"../../shared-deps-spec\";\n\ninterface IdentityManifest {\n metaData?: { pluginVersion?: string; name?: string };\n shared?: Array<{ name: string; version?: string }>;\n}\n\nexport interface SharedIdentityMismatch {\n name: string;\n expected: string;\n actual: string | null;\n}\n\nconst MANIFEST_TIMEOUT_MS = 15_000;\n\nfunction manifestUrl(remoteUrl: string): string {\n return remoteUrl.endsWith(\"/\") ? `${remoteUrl}mf-manifest.json` : `${remoteUrl}/mf-manifest.json`;\n}\n\nfunction normalizeBaseUrl(remoteUrl: string): string {\n const withoutHash = remoteUrl.split(\"#\")[0] ?? remoteUrl;\n return withoutHash.replace(/\\/(mf-manifest\\.json|remoteEntry(?:\\.[^/]+)?\\.js)$/i, \"\");\n}\n\nexport function compareSharedIdentity(\n remoteShared: Array<{ name: string; version?: string }> | undefined,\n expectedVersions: Map<string, string>,\n): SharedIdentityMismatch[] {\n const mismatches: SharedIdentityMismatch[] = [];\n const remoteByName = new Map((remoteShared ?? []).map((s) => [s.name, s]));\n\n for (const [name, expected] of expectedVersions.entries()) {\n if (!isEffectCriticalSharedDep(name)) continue;\n const remoteEntry = remoteByName.get(name);\n if (!remoteEntry) continue;\n if (remoteEntry.version && remoteEntry.version !== expected) {\n mismatches.push({ name, expected, actual: remoteEntry.version });\n }\n }\n\n return mismatches;\n}\n\nexport function describeSharedIdentityMismatch(\n pluginId: string,\n mismatches: SharedIdentityMismatch[],\n hostExpectation: string,\n): string {\n const lines = mismatches.map(\n (m) =>\n ` ${m.name}: expected ${m.expected} (from ${hostExpectation}), got ${m.actual ?? \"missing\"}`,\n );\n return (\n `[SharedIdentity] Refusing to load plugin \"${pluginId}\": shared dependency version skew.\\n` +\n `${lines.join(\"\\n\")}\\n` +\n `Run \"bos mf check\" for the full report. Fix: rebuild and redeploy the host and this plugin together (single release train, e.g. \"bos publish --deploy --packages local\").`\n );\n}\n\nexport async function fetchRemoteIdentityManifest(\n remoteUrl: string,\n): Promise<IdentityManifest | null> {\n const base = normalizeBaseUrl(remoteUrl);\n const url = manifestUrl(base);\n const res = await fetch(url, { signal: AbortSignal.timeout(MANIFEST_TIMEOUT_MS) });\n if (!res.ok) return null;\n return (await res.json()) as IdentityManifest;\n}\n"],"mappings":";;;AAaA,MAAM,sBAAsB;AAE5B,SAAS,YAAY,WAA2B;CAC9C,OAAO,UAAU,SAAS,GAAG,IAAI,GAAG,UAAU,oBAAoB,GAAG,UAAU;AACjF;AAEA,SAAS,iBAAiB,WAA2B;CAEnD,QADoB,UAAU,MAAM,GAAG,CAAC,CAAC,MAAM,UAC7B,CAAC,QAAQ,uDAAuD,EAAE;AACtF;AAEA,SAAgB,sBACd,cACA,kBAC0B;CAC1B,MAAM,aAAuC,CAAC;CAC9C,MAAM,eAAe,IAAI,KAAK,gBAAgB,CAAC,EAAC,CAAE,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAEzE,KAAK,MAAM,CAAC,MAAM,aAAa,iBAAiB,QAAQ,GAAG;EACzD,IAAI,CAAC,0BAA0B,IAAI,GAAG;EACtC,MAAM,cAAc,aAAa,IAAI,IAAI;EACzC,IAAI,CAAC,aAAa;EAClB,IAAI,YAAY,WAAW,YAAY,YAAY,UACjD,WAAW,KAAK;GAAE;GAAM;GAAU,QAAQ,YAAY;EAAQ,CAAC;CAEnE;CAEA,OAAO;AACT;AAEA,SAAgB,+BACd,UACA,YACA,iBACQ;CAKR,OACE,6CAA6C,SAAS,sCAL1C,WAAW,KACtB,MACC,KAAK,EAAE,KAAK,aAAa,EAAE,SAAS,SAAS,gBAAgB,SAAS,EAAE,UAAU,WAI7E,CAAC,CAAC,KAAK,IAAI,EAAE;AAGxB;AAEA,eAAsB,4BACpB,WACkC;CAElC,MAAM,MAAM,YADC,iBAAiB,SACH,CAAC;CAC5B,MAAM,MAAM,MAAM,MAAM,KAAK,EAAE,QAAQ,YAAY,QAAQ,mBAAmB,EAAE,CAAC;CACjF,IAAI,CAAC,IAAI,IAAI,OAAO;CACpB,OAAQ,MAAM,IAAI,KAAK;AACzB"}
@@ -5,11 +5,11 @@ let effect = require("effect");
5
5
  const validate = (schema, data, pluginId, stage) => effect.Effect.gen(function* () {
6
6
  const result = schema.safeParse(data);
7
7
  if (result.success) return result.data;
8
- return yield* effect.Effect.fail(new require_errors.ValidationError({
8
+ return yield* new require_errors.ValidationError({
9
9
  pluginId,
10
10
  stage,
11
11
  zodError: result.error
12
- }));
12
+ });
13
13
  });
14
14
 
15
15
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"validation.cjs","names":["Effect","ValidationError"],"sources":["../../src/runtime/validation.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport type { z } from \"zod\";\nimport { ValidationError } from \"./errors\";\n\nexport const validate = <T>(\n schema: z.ZodSchema<T>,\n data: unknown,\n pluginId: string,\n stage: \"config\" | \"input\" | \"output\" | \"state\",\n): Effect.Effect<T, ValidationError> =>\n Effect.gen(function* () {\n const result = schema.safeParse(data);\n if (result.success) {\n return result.data;\n }\n return yield* Effect.fail(\n new ValidationError({\n pluginId,\n stage,\n zodError: result.error,\n }),\n );\n });\n"],"mappings":";;;;AAIA,MAAa,YACX,QACA,MACA,UACA,UAEAA,cAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,UAAU,IAAI;CACpC,IAAI,OAAO,SACT,OAAO,OAAO;CAEhB,OAAO,OAAOA,cAAO,KACnB,IAAIC,+BAAgB;EAClB;EACA;EACA,UAAU,OAAO;CACnB,CAAC,CACH;AACF,CAAC"}
1
+ {"version":3,"file":"validation.cjs","names":["Effect","ValidationError"],"sources":["../../src/runtime/validation.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport type { z } from \"zod\";\nimport { ValidationError } from \"./errors\";\n\nexport const validate = <T>(\n schema: z.ZodSchema<T>,\n data: unknown,\n pluginId: string,\n stage: \"config\" | \"input\" | \"output\" | \"state\",\n): Effect.Effect<T, ValidationError> =>\n Effect.gen(function* () {\n const result = schema.safeParse(data);\n if (result.success) {\n return result.data;\n }\n return yield* new ValidationError({\n pluginId,\n stage,\n zodError: result.error,\n });\n });\n"],"mappings":";;;;AAIA,MAAa,YACX,QACA,MACA,UACA,UAEAA,cAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,UAAU,IAAI;CACpC,IAAI,OAAO,SACT,OAAO,OAAO;CAEhB,OAAO,OAAO,IAAIC,+BAAgB;EAChC;EACA;EACA,UAAU,OAAO;CACnB,CAAC;AACH,CAAC"}
@@ -5,11 +5,11 @@ import { Effect } from "effect";
5
5
  const validate = (schema, data, pluginId, stage) => Effect.gen(function* () {
6
6
  const result = schema.safeParse(data);
7
7
  if (result.success) return result.data;
8
- return yield* Effect.fail(new ValidationError({
8
+ return yield* new ValidationError({
9
9
  pluginId,
10
10
  stage,
11
11
  zodError: result.error
12
- }));
12
+ });
13
13
  });
14
14
 
15
15
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"validation.mjs","names":[],"sources":["../../src/runtime/validation.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport type { z } from \"zod\";\nimport { ValidationError } from \"./errors\";\n\nexport const validate = <T>(\n schema: z.ZodSchema<T>,\n data: unknown,\n pluginId: string,\n stage: \"config\" | \"input\" | \"output\" | \"state\",\n): Effect.Effect<T, ValidationError> =>\n Effect.gen(function* () {\n const result = schema.safeParse(data);\n if (result.success) {\n return result.data;\n }\n return yield* Effect.fail(\n new ValidationError({\n pluginId,\n stage,\n zodError: result.error,\n }),\n );\n });\n"],"mappings":";;;;AAIA,MAAa,YACX,QACA,MACA,UACA,UAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,UAAU,IAAI;CACpC,IAAI,OAAO,SACT,OAAO,OAAO;CAEhB,OAAO,OAAO,OAAO,KACnB,IAAI,gBAAgB;EAClB;EACA;EACA,UAAU,OAAO;CACnB,CAAC,CACH;AACF,CAAC"}
1
+ {"version":3,"file":"validation.mjs","names":[],"sources":["../../src/runtime/validation.ts"],"sourcesContent":["import { Effect } from \"effect\";\nimport type { z } from \"zod\";\nimport { ValidationError } from \"./errors\";\n\nexport const validate = <T>(\n schema: z.ZodSchema<T>,\n data: unknown,\n pluginId: string,\n stage: \"config\" | \"input\" | \"output\" | \"state\",\n): Effect.Effect<T, ValidationError> =>\n Effect.gen(function* () {\n const result = schema.safeParse(data);\n if (result.success) {\n return result.data;\n }\n return yield* new ValidationError({\n pluginId,\n stage,\n zodError: result.error,\n });\n });\n"],"mappings":";;;;AAIA,MAAa,YACX,QACA,MACA,UACA,UAEA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO,UAAU,IAAI;CACpC,IAAI,OAAO,SACT,OAAO,OAAO;CAEhB,OAAO,OAAO,IAAI,gBAAgB;EAChC;EACA;EACA,UAAU,OAAO;CACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,384 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ let effect = require("effect");
3
+ let node_fs = require("node:fs");
4
+ let node_module = require("node:module");
5
+ let node_path = require("node:path");
6
+ let node_url = require("node:url");
7
+
8
+ //#region src/shared-deps-spec.ts
9
+ /**
10
+ * SharedDependencySpec: the one module owning shared-dependency names,
11
+ * criticality, version resolution, and fallback policy across the Module
12
+ * Federation graph. Four consumers derive from it — the rspack config
13
+ * factory (plugin builds), the rsbuild config factory (ui remotes), the
14
+ * runtime mf-config (the every-plugin MF instance), and the host's shared
15
+ * pre-registration — so a name or criticality can never disagree between
16
+ * them, and an unresolved version fails the build loudly instead of
17
+ * silently degrading to "*"/"latest" (which disables the strict-singleton
18
+ * guard).
19
+ *
20
+ * Lists:
21
+ * - core: shared by the host and server-side plugin remotes (every-plugin,
22
+ * effect, zod, @orpc/*). Effect-critical entries pin the exact installed
23
+ * version (strictVersion) — the version-check machinery in
24
+ * runtime/services/shared-identity.ts relies on it.
25
+ * - ui: shared by the core ui provider and ui remotes (react, react-dom,
26
+ * @orpc/client, @orpc/contract, TanStack, lingui, the everything-dev
27
+ * session/i18n subpath modules). All strict singletons; consumers add
28
+ * `import: false`.
29
+ */
30
+ const require$1 = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
31
+ var SharedDependencyResolutionError = class extends effect.Data.TaggedError("SharedDependencyResolutionError") {
32
+ constructor(packageName, searched) {
33
+ super({
34
+ packageName,
35
+ searched
36
+ });
37
+ }
38
+ get message() {
39
+ return `Could not resolve shared dependency "${this.packageName}". Looked in:\n` + this.searched.map((location) => ` - ${location}`).join("\n") + "\nUnresolved shared dependencies fail loudly (no \"*\", no \"latest\" fallback) — install the package in the resolving workspace or pin a resolvable version.";
40
+ }
41
+ };
42
+ const CORE_SHARED_DEPS = [
43
+ {
44
+ name: "every-plugin",
45
+ singleton: true,
46
+ critical: true,
47
+ resolution: "self"
48
+ },
49
+ {
50
+ name: "effect",
51
+ singleton: true,
52
+ critical: true,
53
+ resolution: "package"
54
+ },
55
+ {
56
+ name: "zod",
57
+ singleton: true,
58
+ critical: false,
59
+ resolution: "package"
60
+ },
61
+ {
62
+ name: "@orpc/contract",
63
+ singleton: true,
64
+ critical: true,
65
+ resolution: "package"
66
+ },
67
+ {
68
+ name: "@orpc/client",
69
+ singleton: true,
70
+ critical: true,
71
+ resolution: "package"
72
+ },
73
+ {
74
+ name: "@orpc/server",
75
+ singleton: true,
76
+ critical: true,
77
+ resolution: "package"
78
+ }
79
+ ];
80
+ const coreCriticalNames = CORE_SHARED_DEPS.flatMap((spec) => spec.critical ? [spec.name] : []);
81
+ /**
82
+ * Effect-critical shared names, derived from the core list's `critical: true`
83
+ * entries — the one source of criticality (`strictVersion` pinning in the
84
+ * runtime's version-check machinery keys off this list).
85
+ */
86
+ const EFFECT_CRITICAL_SHARED_DEPS = coreCriticalNames;
87
+ const isEffectCriticalSharedDep = (name) => EFFECT_CRITICAL_SHARED_DEPS.includes(name);
88
+ const UI_SHARED_DEPS = [
89
+ {
90
+ name: "react",
91
+ singleton: true,
92
+ critical: true,
93
+ resolution: "package"
94
+ },
95
+ {
96
+ name: "react-dom",
97
+ singleton: true,
98
+ critical: true,
99
+ resolution: "package"
100
+ },
101
+ {
102
+ name: "@orpc/client",
103
+ singleton: true,
104
+ critical: true,
105
+ resolution: "package"
106
+ },
107
+ {
108
+ name: "@orpc/contract",
109
+ singleton: true,
110
+ critical: true,
111
+ resolution: "package"
112
+ },
113
+ {
114
+ name: "@tanstack/react-query",
115
+ singleton: true,
116
+ critical: true,
117
+ resolution: "package"
118
+ },
119
+ {
120
+ name: "@tanstack/react-router",
121
+ singleton: true,
122
+ critical: true,
123
+ resolution: "package"
124
+ },
125
+ {
126
+ name: "@lingui/core",
127
+ singleton: true,
128
+ critical: true,
129
+ resolution: "package"
130
+ },
131
+ {
132
+ name: "@lingui/react",
133
+ singleton: true,
134
+ critical: true,
135
+ resolution: "package"
136
+ },
137
+ {
138
+ name: "everything-dev/ui/auth",
139
+ singleton: true,
140
+ critical: true,
141
+ resolution: "subpath"
142
+ },
143
+ {
144
+ name: "everything-dev/ui/i18n",
145
+ singleton: true,
146
+ critical: true,
147
+ resolution: "subpath"
148
+ }
149
+ ];
150
+ const SHARED_DEP_SPECS = (() => {
151
+ const byName = /* @__PURE__ */ new Map();
152
+ for (const spec of [...CORE_SHARED_DEPS, ...UI_SHARED_DEPS]) {
153
+ const existing = byName.get(spec.name);
154
+ if (existing) {
155
+ if (existing.critical !== spec.critical) throw new Error(`Shared dependency spec conflict for "${spec.name}": criticality disagrees between the core and ui lists`);
156
+ continue;
157
+ }
158
+ byName.set(spec.name, spec);
159
+ }
160
+ return [...byName.values()];
161
+ })();
162
+ function searchedNote(target) {
163
+ return `require.resolve("${target}")`;
164
+ }
165
+ function findPackageJsonVersion(startDir, searched) {
166
+ let currentDir = startDir;
167
+ for (let i = 0; i < 5; i += 1) {
168
+ const packageJsonPath = (0, node_path.join)(currentDir, "package.json");
169
+ searched.push(packageJsonPath);
170
+ if ((0, node_fs.existsSync)(packageJsonPath)) try {
171
+ const version = JSON.parse((0, node_fs.readFileSync)(packageJsonPath, "utf8")).version;
172
+ if (version) return version;
173
+ } catch {}
174
+ const parent = (0, node_path.dirname)(currentDir);
175
+ if (parent === currentDir) break;
176
+ currentDir = parent;
177
+ }
178
+ return null;
179
+ }
180
+ function resolveSubpathVersion(request, workspaceRoot, searched) {
181
+ if (request.startsWith("@")) throw new Error(`Scoped-package subpath "${request}" is not supported — subpath version resolution handles unscoped specifiers only (the known subpath specs, everything-dev/ui/*, are unscoped).`);
182
+ const packageName = request.split("/")[0] ?? request;
183
+ const subpath = request.split("/").slice(1).join("/");
184
+ const candidates = [];
185
+ if (workspaceRoot) candidates.push((0, node_path.join)(workspaceRoot, "node_modules", packageName, "package.json"));
186
+ const resolveRequests = [
187
+ {
188
+ request: `${packageName}/${subpath}`,
189
+ ...workspaceRoot ? { paths: [workspaceRoot] } : {}
190
+ },
191
+ { request: `${packageName}/${subpath}` },
192
+ {
193
+ request: `${packageName}/package.json`,
194
+ ...workspaceRoot ? { paths: [workspaceRoot] } : {}
195
+ },
196
+ { request: `${packageName}/package.json` }
197
+ ];
198
+ for (const { request: target, paths } of resolveRequests) try {
199
+ const resolved = require$1.resolve(target, paths ? { paths } : void 0);
200
+ searched.push(resolved);
201
+ candidates.push(resolved.endsWith("package.json") ? resolved : (0, node_path.resolve)((0, node_path.dirname)(resolved), "..", "..", "package.json"));
202
+ } catch {
203
+ searched.push(searchedNote(target));
204
+ }
205
+ for (const candidate of candidates) {
206
+ if (!(0, node_fs.existsSync)(candidate)) continue;
207
+ try {
208
+ const version = JSON.parse((0, node_fs.readFileSync)(candidate, "utf8")).version;
209
+ if (version) return version;
210
+ } catch {}
211
+ }
212
+ return null;
213
+ }
214
+ function resolveSharedVersion(name, options = {}) {
215
+ const searched = [];
216
+ const { workspaceRoot, resolution = "package" } = options;
217
+ if (resolution === "subpath") {
218
+ const version = resolveSubpathVersion(name, workspaceRoot, searched);
219
+ if (version) return version;
220
+ throw new SharedDependencyResolutionError(name, searched);
221
+ }
222
+ const roots = workspaceRoot ? [workspaceRoot, void 0] : [void 0];
223
+ for (const root of roots) try {
224
+ const resolved = root ? require$1.resolve(name, { paths: [root] }) : require$1.resolve(name);
225
+ searched.push(resolved);
226
+ const version = findPackageJsonVersion((0, node_path.dirname)(resolved), searched);
227
+ if (version) return version;
228
+ } catch {
229
+ searched.push(searchedNote(name));
230
+ }
231
+ throw new SharedDependencyResolutionError(name, searched);
232
+ }
233
+ function resolveOwnVersion(searched) {
234
+ const localPackageJson = (0, node_path.join)((0, node_path.dirname)((0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href)), "..", "package.json");
235
+ searched.push(localPackageJson);
236
+ if ((0, node_fs.existsSync)(localPackageJson)) try {
237
+ const version = JSON.parse((0, node_fs.readFileSync)(localPackageJson, "utf8")).version;
238
+ if (version) return version;
239
+ } catch {}
240
+ try {
241
+ const resolved = require$1.resolve("every-plugin/package.json");
242
+ searched.push(resolved);
243
+ const version = JSON.parse((0, node_fs.readFileSync)(resolved, "utf8")).version;
244
+ if (version) return version;
245
+ } catch {
246
+ searched.push(searchedNote("every-plugin/package.json"));
247
+ }
248
+ throw new SharedDependencyResolutionError("every-plugin", searched);
249
+ }
250
+ function shareConfigFor(spec, version) {
251
+ return spec.critical ? {
252
+ requiredVersion: version,
253
+ singleton: true,
254
+ strictVersion: true,
255
+ eager: false,
256
+ shareScope: "default"
257
+ } : {
258
+ requiredVersion: false,
259
+ singleton: true,
260
+ strictVersion: false,
261
+ eager: false,
262
+ shareScope: "default"
263
+ };
264
+ }
265
+ function specVersion(spec, options) {
266
+ if (spec.resolution === "self") return options.ownVersion ?? resolveOwnVersion([`own package.json of "${spec.name}"`]);
267
+ return resolveSharedVersion(spec.name, { resolution: spec.resolution === "subpath" ? "subpath" : "package" });
268
+ }
269
+ function getPluginSharedDependencies(options = {}) {
270
+ return Object.fromEntries(CORE_SHARED_DEPS.map((spec) => {
271
+ const version = specVersion(spec, options);
272
+ return [spec.name, {
273
+ version,
274
+ ...shareConfigFor(spec, version)
275
+ }];
276
+ }));
277
+ }
278
+ function toHostSharedEntry(name, config) {
279
+ const normalized = normalizeSharedConfig(config, name);
280
+ return {
281
+ version: normalized.version,
282
+ shareScope: normalized.shareScope,
283
+ shareConfig: {
284
+ singleton: normalized.singleton,
285
+ requiredVersion: normalized.requiredVersion,
286
+ strictVersion: normalized.strictVersion,
287
+ eager: normalized.eager
288
+ }
289
+ };
290
+ }
291
+ /**
292
+ * The runtime mf-config's core shared map: the same entries
293
+ * `getPluginSharedDependencies` assembles, shaped through the one host mapper
294
+ * (`toHostSharedEntry`) so both consumers derive from a single entry type.
295
+ */
296
+ function buildMfCoreSharedDependencies(options = {}) {
297
+ return Object.fromEntries(Object.entries(getPluginSharedDependencies(options)).map(([name, config]) => [name, toHostSharedEntry(name, config)]));
298
+ }
299
+ function createUiSharedDeps(options = {}) {
300
+ const deps = {};
301
+ for (const spec of UI_SHARED_DEPS) {
302
+ const version = resolveSharedVersion(spec.name, {
303
+ workspaceRoot: options.workspaceRoot,
304
+ resolution: spec.resolution === "subpath" ? "subpath" : "package"
305
+ });
306
+ const strict = options.strictVersion !== false;
307
+ deps[spec.name] = {
308
+ version,
309
+ requiredVersion: strict ? version : false,
310
+ singleton: true,
311
+ strictVersion: strict,
312
+ eager: false,
313
+ shareScope: "default",
314
+ ...options.role === "consumer" ? { import: false } : {}
315
+ };
316
+ }
317
+ return deps;
318
+ }
319
+ const UNRESOLVED_VERSIONS = /* @__PURE__ */ new Set([
320
+ "*",
321
+ "latest",
322
+ ""
323
+ ]);
324
+ function assertResolvedSharedVersion(name, version) {
325
+ if (typeof version !== "string" || UNRESOLVED_VERSIONS.has(version.trim())) throw new SharedDependencyResolutionError(name, [`declared version ${JSON.stringify(version ?? null)} is not resolvable — "*", "latest", and empty fail loudly instead of disabling the strict-singleton guard`]);
326
+ return version;
327
+ }
328
+ function normalizeSharedConfig(config, name) {
329
+ return {
330
+ version: assertResolvedSharedVersion(name, config.version),
331
+ requiredVersion: config.requiredVersion ?? false,
332
+ singleton: config.singleton ?? false,
333
+ strictVersion: config.strictVersion ?? false,
334
+ eager: config.eager ?? false,
335
+ shareScope: config.shareScope ?? "default"
336
+ };
337
+ }
338
+ function comparableSharedConfig(config) {
339
+ return {
340
+ version: config.version,
341
+ requiredVersion: config.requiredVersion ?? false,
342
+ singleton: config.singleton ?? false,
343
+ strictVersion: config.strictVersion ?? false,
344
+ eager: config.eager ?? false,
345
+ shareScope: config.shareScope ?? "default"
346
+ };
347
+ }
348
+ function isSameSharedConfig(a, b) {
349
+ const left = comparableSharedConfig(a);
350
+ const right = comparableSharedConfig(b);
351
+ return left.version === right.version && left.requiredVersion === right.requiredVersion && left.singleton === right.singleton && left.strictVersion === right.strictVersion && left.eager === right.eager && left.shareScope === right.shareScope;
352
+ }
353
+ function mergeSharedMaps(...maps) {
354
+ const merged = {};
355
+ for (const map of maps) {
356
+ if (!map) continue;
357
+ for (const [name, config] of Object.entries(map)) {
358
+ const normalized = normalizeSharedConfig(config, name);
359
+ const existing = merged[name];
360
+ if (existing && !isSameSharedConfig(existing, normalized)) throw new Error(`Conflicting shared dependency "${name}" in shared dependency configuration`);
361
+ merged[name] = normalized;
362
+ }
363
+ }
364
+ return merged;
365
+ }
366
+
367
+ //#endregion
368
+ exports.CORE_SHARED_DEPS = CORE_SHARED_DEPS;
369
+ exports.EFFECT_CRITICAL_SHARED_DEPS = EFFECT_CRITICAL_SHARED_DEPS;
370
+ exports.SHARED_DEP_SPECS = SHARED_DEP_SPECS;
371
+ exports.SharedDependencyResolutionError = SharedDependencyResolutionError;
372
+ exports.UI_SHARED_DEPS = UI_SHARED_DEPS;
373
+ exports.assertResolvedSharedVersion = assertResolvedSharedVersion;
374
+ exports.buildMfCoreSharedDependencies = buildMfCoreSharedDependencies;
375
+ exports.createUiSharedDeps = createUiSharedDeps;
376
+ exports.getPluginSharedDependencies = getPluginSharedDependencies;
377
+ exports.isEffectCriticalSharedDep = isEffectCriticalSharedDep;
378
+ exports.isSameSharedConfig = isSameSharedConfig;
379
+ exports.mergeSharedMaps = mergeSharedMaps;
380
+ exports.normalizeSharedConfig = normalizeSharedConfig;
381
+ exports.resolveSharedVersion = resolveSharedVersion;
382
+ exports.shareConfigFor = shareConfigFor;
383
+ exports.toHostSharedEntry = toHostSharedEntry;
384
+ //# sourceMappingURL=shared-deps-spec.cjs.map