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,248 +0,0 @@
1
-
2
- //#region src/build/rspack/dev-server-middleware.ts
3
- const corsHeaders = {
4
- "Access-Control-Allow-Origin": "*",
5
- "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
6
- "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
7
- };
8
- const applyCorsHeaders = (res) => {
9
- Object.entries(corsHeaders).forEach(([key, value]) => {
10
- res.setHeader(key, value);
11
- });
12
- };
13
- const normalizePrefix = (prefix) => {
14
- if (!prefix) return "";
15
- const cleaned = prefix.replace(/^\/+|\/+$/g, "");
16
- return cleaned ? `/${cleaned}` : "";
17
- };
18
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
19
- const readRuntimeConfigFromEnv = () => {
20
- const raw = process.env.BOS_RUNTIME_CONFIG;
21
- if (!raw) return null;
22
- try {
23
- return JSON.parse(raw);
24
- } catch {
25
- return null;
26
- }
27
- };
28
- const collectSiblingRemotes = (runtimeConfig, pluginId) => {
29
- const siblings = {};
30
- const isApi = pluginId === "api" || runtimeConfig?.api?.name === pluginId;
31
- const ownKey = runtimeConfig?.plugins?.[pluginId] ? pluginId : null;
32
- let dependsOn = [];
33
- if (ownKey) dependsOn = runtimeConfig.plugins[ownKey].dependsOn ?? [];
34
- else if (isApi) dependsOn = runtimeConfig?.api?.dependsOn ?? [];
35
- for (const depId of dependsOn) {
36
- const dep = runtimeConfig?.plugins?.[depId];
37
- if (!dep || dep.source !== "local" || !dep.url) continue;
38
- if (depId === pluginId) continue;
39
- siblings[depId] = { remote: `${dep.url.replace(/\/$/, "")}/remoteEntry.js` };
40
- }
41
- return {
42
- siblings,
43
- dependsOn
44
- };
45
- };
46
- const loadPluginWithRetry = async (runtime, pluginId, timeoutMs = 9e4) => {
47
- const deadline = Date.now() + timeoutMs;
48
- let lastError;
49
- while (Date.now() < deadline) try {
50
- return await runtime.usePlugin(pluginId, {
51
- variables: {},
52
- secrets: {}
53
- });
54
- } catch (error) {
55
- lastError = error;
56
- await sleep(500);
57
- }
58
- throw lastError;
59
- };
60
- function setupPluginMiddleware(devServer, pluginInfo, devConfig, port) {
61
- const rpcPrefix = normalizePrefix(devConfig?.prefix);
62
- const handlers = {
63
- rpc: null,
64
- api: null
65
- };
66
- let cleanup = null;
67
- const performCleanup = async () => {
68
- if (cleanup) {
69
- await cleanup();
70
- cleanup = null;
71
- }
72
- };
73
- (async () => {
74
- await performCleanup();
75
- try {
76
- const { createPluginRuntime } = await Promise.resolve().then(() => require("../../index.cjs"));
77
- const { RPCHandler } = await import("@orpc/server/fetch");
78
- const { OpenAPIHandler } = await import("@orpc/openapi/fetch");
79
- const { OpenAPIReferencePlugin } = await import("@orpc/openapi/plugins");
80
- const { ZodToJsonSchemaConverter } = await import("@orpc/zod/zod4");
81
- const { onError } = await Promise.resolve().then(() => require("../../orpc.cjs"));
82
- const { formatORPCError } = await Promise.resolve().then(() => require("../../errors.cjs"));
83
- const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;
84
- const runtimeConfig = readRuntimeConfigFromEnv();
85
- const { siblings, dependsOn } = collectSiblingRemotes(runtimeConfig, pluginId);
86
- if (dependsOn.length > 0) console.log(`│ 🔗 Loading sibling plugin(s) for ${pluginId}: ${dependsOn.join(", ")}`);
87
- const runtime = createPluginRuntime({ registry: {
88
- [pluginId]: { remote: `http://localhost:${port}/remoteEntry.js` },
89
- ...siblings
90
- } });
91
- const defaultConfig = {
92
- variables: {},
93
- secrets: {}
94
- };
95
- const pluginsMap = {};
96
- for (const depId of Object.keys(siblings)) {
97
- pluginsMap[depId] = (await loadPluginWithRetry(runtime, depId)).createClient;
98
- console.log(`│ ✅ Loaded dependency plugin: ${depId}`);
99
- }
100
- const loaded = await runtime.usePlugin(pluginId, devConfig?.config ?? defaultConfig, Object.keys(pluginsMap).length > 0 ? pluginsMap : void 0);
101
- cleanup = async () => {
102
- handlers.rpc = null;
103
- handlers.api = null;
104
- if (devServer.app.locals.handlers) devServer.app.locals.handlers = null;
105
- if (runtime) await runtime.shutdown();
106
- };
107
- handlers.rpc = new RPCHandler(loaded.router, { interceptors: [onError((error) => {
108
- const formatted = formatORPCError(error);
109
- if (formatted) console.error(formatted);
110
- })] });
111
- handlers.api = new OpenAPIHandler(loaded.router, {
112
- plugins: [new OpenAPIReferencePlugin({ schemaConverters: [new ZodToJsonSchemaConverter()] })],
113
- interceptors: [onError((error) => {
114
- const formatted = formatORPCError(error);
115
- if (formatted) console.error(formatted);
116
- })]
117
- });
118
- console.log(`╭─────────────────────────────────────────────`);
119
- console.log(`│ ✅ Plugin dev server ready: `);
120
- console.log(`├─────────────────────────────────────────────`);
121
- console.log(`│ 📡 RPC: http://localhost:${port}/api/rpc${rpcPrefix}`);
122
- console.log(`│ 📖 Docs: http://localhost:${port}/api`);
123
- console.log(`│ 💚 Health: http://localhost:${port}/`);
124
- console.log(`╰─────────────────────────────────────────────`);
125
- devServer.app.locals.handlers = handlers;
126
- if (devServer.server) devServer.server.once("close", async () => {
127
- await performCleanup();
128
- });
129
- } catch (error) {
130
- console.error("❌ Failed to load plugin:", error);
131
- await performCleanup();
132
- }
133
- })().catch((err) => {
134
- console.error("❌ Plugin dev server fatal error:", err);
135
- });
136
- process.once("SIGINT", async () => {
137
- const timeout = setTimeout(() => process.exit(0), 3e3);
138
- await performCleanup();
139
- clearTimeout(timeout);
140
- });
141
- process.once("SIGTERM", async () => {
142
- const timeout = setTimeout(() => process.exit(0), 3e3);
143
- await performCleanup();
144
- clearTimeout(timeout);
145
- });
146
- devServer.app.options("*", (_req, res) => {
147
- applyCorsHeaders(res);
148
- res.status(200).end();
149
- });
150
- devServer.app.get("/", (_req, res) => {
151
- applyCorsHeaders(res);
152
- res.json({
153
- ok: true,
154
- plugin: pluginInfo.normalizedName,
155
- version: pluginInfo.version,
156
- status: devServer.app.locals.handlers?.rpc ? "ready" : "loading",
157
- endpoints: {
158
- health: "/",
159
- docs: "/api",
160
- rpc: `/api/rpc${rpcPrefix}`
161
- }
162
- });
163
- });
164
- devServer.app.get("/health", (_req, res) => {
165
- applyCorsHeaders(res);
166
- res.status(200).send("OK");
167
- });
168
- const buildDevContext = (_req, webRequest) => {
169
- const rawClone = webRequest.method === "GET" || webRequest.method === "HEAD" ? null : webRequest.clone();
170
- let cachedRawBody = null;
171
- return {
172
- reqHeaders: webRequest.headers,
173
- getRawBody: async () => {
174
- if (cachedRawBody !== null) return cachedRawBody;
175
- if (!rawClone) {
176
- cachedRawBody = "";
177
- return cachedRawBody;
178
- }
179
- cachedRawBody = await rawClone.text();
180
- return cachedRawBody;
181
- }
182
- };
183
- };
184
- const handleApiRequest = async (req, res) => {
185
- applyCorsHeaders(res);
186
- const apiHandler = devServer.app.locals.handlers?.api;
187
- if (!apiHandler) return res.status(503).json({ error: "Plugin still loading..." });
188
- try {
189
- const url = `http://${req.headers.host}${req.url}`;
190
- const webRequest = new Request(url, {
191
- method: req.method,
192
- headers: req.headers,
193
- body: req.method !== "GET" && req.method !== "HEAD" ? req : void 0,
194
- duplex: req.method !== "GET" && req.method !== "HEAD" ? "half" : void 0
195
- });
196
- const result = await apiHandler.handle(webRequest, {
197
- prefix: "/api",
198
- context: buildDevContext(req, webRequest)
199
- });
200
- if (result.response) {
201
- res.status(result.response.status);
202
- result.response.headers.forEach((value, key) => {
203
- res.setHeader(key, value);
204
- });
205
- const text = await result.response.text();
206
- res.send(text);
207
- } else res.status(404).send("Not Found");
208
- } catch (error) {
209
- console.error("OpenAPI error:", error);
210
- res.status(500).json({ error: error.message });
211
- }
212
- };
213
- devServer.app.all(`/api/rpc${rpcPrefix}/*`, async (req, res) => {
214
- applyCorsHeaders(res);
215
- const rpcHandler = devServer.app.locals.handlers?.rpc;
216
- if (!rpcHandler) return res.status(503).json({ error: "Plugin still loading..." });
217
- try {
218
- const url = `http://${req.headers.host}${req.url}`;
219
- const webRequest = new Request(url, {
220
- method: req.method,
221
- headers: req.headers,
222
- body: req.method !== "GET" && req.method !== "HEAD" ? req : void 0,
223
- duplex: req.method !== "GET" && req.method !== "HEAD" ? "half" : void 0
224
- });
225
- const result = await rpcHandler.handle(webRequest, {
226
- prefix: `/api/rpc${rpcPrefix}`,
227
- context: buildDevContext(req, webRequest)
228
- });
229
- if (result.response) {
230
- res.status(result.response.status);
231
- result.response.headers.forEach((value, key) => {
232
- res.setHeader(key, value);
233
- });
234
- const text = await result.response.text();
235
- res.send(text);
236
- } else res.status(404).send("Not Found");
237
- } catch (error) {
238
- console.error("RPC error:", error);
239
- res.status(500).json({ error: error.message });
240
- }
241
- });
242
- devServer.app.all("/api", handleApiRequest);
243
- devServer.app.all("/api/*", handleApiRequest);
244
- }
245
-
246
- //#endregion
247
- exports.setupPluginMiddleware = setupPluginMiddleware;
248
- //# sourceMappingURL=dev-server-middleware.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-server-middleware.cjs","names":[],"sources":["../../../src/build/rspack/dev-server-middleware.ts"],"sourcesContent":["import type { PluginInfo } from \"./utils\";\n\nconst corsHeaders = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, DELETE, PATCH, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"X-Requested-With, content-type, Authorization\",\n};\n\nconst applyCorsHeaders = (res: any) => {\n Object.entries(corsHeaders).forEach(([key, value]) => {\n res.setHeader(key, value);\n });\n};\n\nconst normalizePrefix = (prefix?: string): string => {\n if (!prefix) return \"\";\n const cleaned = prefix.replace(/^\\/+|\\/+$/g, \"\");\n return cleaned ? `/${cleaned}` : \"\";\n};\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst readRuntimeConfigFromEnv = (): any => {\n const raw = process.env.BOS_RUNTIME_CONFIG;\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n }\n};\n\nconst collectSiblingRemotes = (runtimeConfig: any, pluginId: string) => {\n const siblings: Record<string, { remote: string }> = {};\n\n const isApi = pluginId === \"api\" || runtimeConfig?.api?.name === pluginId;\n\n const ownKey = runtimeConfig?.plugins?.[pluginId] ? pluginId : null;\n let dependsOn: string[] = [];\n if (ownKey) {\n dependsOn = runtimeConfig.plugins[ownKey].dependsOn ?? [];\n } else if (isApi) {\n dependsOn = runtimeConfig?.api?.dependsOn ?? [];\n }\n\n for (const depId of dependsOn) {\n const dep = runtimeConfig?.plugins?.[depId];\n if (!dep || dep.source !== \"local\" || !dep.url) continue;\n if (depId === pluginId) continue;\n const base = dep.url.replace(/\\/$/, \"\");\n siblings[depId] = { remote: `${base}/remoteEntry.js` };\n }\n\n return { siblings, dependsOn };\n};\n\nconst loadPluginWithRetry = async (\n runtime: any,\n pluginId: string,\n timeoutMs = 90000,\n): Promise<any> => {\n const deadline = Date.now() + timeoutMs;\n let lastError: unknown;\n while (Date.now() < deadline) {\n try {\n return await runtime.usePlugin(pluginId, { variables: {}, secrets: {} } as any);\n } catch (error) {\n lastError = error;\n await sleep(500);\n }\n }\n throw lastError;\n};\n\nexport function setupPluginMiddleware(\n devServer: any,\n pluginInfo: PluginInfo,\n devConfig: any,\n port: number,\n) {\n const rpcPrefix = normalizePrefix(devConfig?.prefix);\n const handlers: { rpc: any; api: any } = { rpc: null, api: null };\n let cleanup: (() => Promise<void>) | null = null;\n\n const performCleanup = async () => {\n if (cleanup) {\n await cleanup();\n cleanup = null;\n }\n };\n\n (async () => {\n await performCleanup();\n\n try {\n const { createPluginRuntime } = await import(\"every-plugin\");\n const { RPCHandler } = await import(\"@orpc/server/fetch\");\n const { OpenAPIHandler } = await import(\"@orpc/openapi/fetch\");\n const { OpenAPIReferencePlugin } = await import(\"@orpc/openapi/plugins\");\n const { ZodToJsonSchemaConverter } = await import(\"@orpc/zod/zod4\");\n const { onError } = await import(\"every-plugin/orpc\");\n const { formatORPCError } = await import(\"every-plugin/errors\");\n\n const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;\n\n const runtimeConfig = readRuntimeConfigFromEnv();\n const { siblings, dependsOn } = collectSiblingRemotes(runtimeConfig, pluginId);\n\n if (dependsOn.length > 0) {\n console.log(`│ 🔗 Loading sibling plugin(s) for ${pluginId}: ${dependsOn.join(\", \")}`);\n }\n\n const registry: Record<string, { remote: string }> = {\n [pluginId]: {\n remote: `http://localhost:${port}/remoteEntry.js`,\n },\n ...siblings,\n };\n\n const runtime = createPluginRuntime({\n registry,\n });\n\n const defaultConfig = { variables: {}, secrets: {} };\n\n const pluginsMap: Record<string, unknown> = {};\n for (const depId of Object.keys(siblings)) {\n const dep = await loadPluginWithRetry(runtime, depId);\n pluginsMap[depId] = dep.createClient;\n console.log(`│ ✅ Loaded dependency plugin: ${depId}`);\n }\n\n const loaded: any = await runtime.usePlugin<typeof pluginId>(\n pluginId,\n (devConfig?.config ?? defaultConfig) as any,\n Object.keys(pluginsMap).length > 0 ? pluginsMap : undefined,\n );\n\n cleanup = async () => {\n handlers.rpc = null;\n handlers.api = null;\n if (devServer.app.locals.handlers) {\n devServer.app.locals.handlers = null;\n }\n if (runtime) await runtime.shutdown();\n };\n\n handlers.rpc = new RPCHandler(loaded.router, {\n interceptors: [\n onError((error: any) => {\n const formatted = formatORPCError(error);\n if (formatted) console.error(formatted);\n }),\n ],\n });\n\n handlers.api = new OpenAPIHandler(loaded.router, {\n plugins: [\n new OpenAPIReferencePlugin({\n schemaConverters: [new ZodToJsonSchemaConverter()],\n }),\n ],\n interceptors: [\n onError((error: any) => {\n const formatted = formatORPCError(error);\n if (formatted) console.error(formatted);\n }),\n ],\n });\n\n console.log(`╭─────────────────────────────────────────────`);\n console.log(`│ ✅ Plugin dev server ready: `);\n console.log(`├─────────────────────────────────────────────`);\n console.log(`│ 📡 RPC: http://localhost:${port}/api/rpc${rpcPrefix}`);\n console.log(`│ 📖 Docs: http://localhost:${port}/api`);\n console.log(`│ 💚 Health: http://localhost:${port}/`);\n console.log(`╰─────────────────────────────────────────────`);\n\n devServer.app.locals.handlers = handlers;\n\n if (devServer.server) {\n devServer.server.once(\"close\", async () => {\n await performCleanup();\n });\n }\n } catch (error) {\n console.error(\"❌ Failed to load plugin:\", error);\n await performCleanup();\n }\n })().catch((err) => {\n console.error(\"❌ Plugin dev server fatal error:\", err);\n });\n\n process.once(\"SIGINT\", async () => {\n const timeout = setTimeout(() => process.exit(0), 3000);\n await performCleanup();\n clearTimeout(timeout);\n });\n process.once(\"SIGTERM\", async () => {\n const timeout = setTimeout(() => process.exit(0), 3000);\n await performCleanup();\n clearTimeout(timeout);\n });\n\n devServer.app.options(\"*\", (_req: any, res: any) => {\n applyCorsHeaders(res);\n res.status(200).end();\n });\n\n devServer.app.get(\"/\", (_req: any, res: any) => {\n applyCorsHeaders(res);\n res.json({\n ok: true,\n plugin: pluginInfo.normalizedName,\n version: pluginInfo.version,\n status: devServer.app.locals.handlers?.rpc ? \"ready\" : \"loading\",\n endpoints: {\n health: \"/\",\n docs: \"/api\",\n rpc: `/api/rpc${rpcPrefix}`,\n },\n });\n });\n\n devServer.app.get(\"/health\", (_req: any, res: any) => {\n applyCorsHeaders(res);\n res.status(200).send(\"OK\");\n });\n\n const buildDevContext = (_req: any, webRequest: Request) => {\n const rawClone =\n webRequest.method === \"GET\" || webRequest.method === \"HEAD\" ? null : webRequest.clone();\n let cachedRawBody: string | null = null;\n return {\n reqHeaders: webRequest.headers,\n getRawBody: async (): Promise<string> => {\n if (cachedRawBody !== null) return cachedRawBody;\n if (!rawClone) {\n cachedRawBody = \"\";\n return cachedRawBody;\n }\n cachedRawBody = await rawClone.text();\n return cachedRawBody;\n },\n };\n };\n\n const handleApiRequest = async (req: any, res: any) => {\n applyCorsHeaders(res);\n const apiHandler = devServer.app.locals.handlers?.api;\n if (!apiHandler) {\n return res.status(503).json({ error: \"Plugin still loading...\" });\n }\n\n try {\n const url = `http://${req.headers.host}${req.url}`;\n const webRequest = new Request(url, {\n method: req.method,\n headers: req.headers,\n body: req.method !== \"GET\" && req.method !== \"HEAD\" ? req : undefined,\n duplex: req.method !== \"GET\" && req.method !== \"HEAD\" ? \"half\" : undefined,\n } as RequestInit);\n\n const result = await apiHandler.handle(webRequest, {\n prefix: \"/api\",\n context: buildDevContext(req, webRequest),\n });\n\n if (result.response) {\n res.status(result.response.status);\n result.response.headers.forEach((value: string, key: string) => {\n res.setHeader(key, value);\n });\n const text = await result.response.text();\n res.send(text);\n } else {\n res.status(404).send(\"Not Found\");\n }\n } catch (error) {\n console.error(\"OpenAPI error:\", error);\n res.status(500).json({ error: (error as Error).message });\n }\n };\n\n devServer.app.all(`/api/rpc${rpcPrefix}/*`, async (req: any, res: any) => {\n applyCorsHeaders(res);\n const rpcHandler = devServer.app.locals.handlers?.rpc;\n if (!rpcHandler) {\n return res.status(503).json({ error: \"Plugin still loading...\" });\n }\n\n try {\n const url = `http://${req.headers.host}${req.url}`;\n const webRequest = new Request(url, {\n method: req.method,\n headers: req.headers,\n body: req.method !== \"GET\" && req.method !== \"HEAD\" ? req : undefined,\n duplex: req.method !== \"GET\" && req.method !== \"HEAD\" ? \"half\" : undefined,\n } as RequestInit);\n\n const result = await rpcHandler.handle(webRequest, {\n prefix: `/api/rpc${rpcPrefix}`,\n context: buildDevContext(req, webRequest),\n });\n\n if (result.response) {\n res.status(result.response.status);\n result.response.headers.forEach((value: string, key: string) => {\n res.setHeader(key, value);\n });\n const text = await result.response.text();\n res.send(text);\n } else {\n res.status(404).send(\"Not Found\");\n }\n } catch (error) {\n console.error(\"RPC error:\", error);\n res.status(500).json({ error: (error as Error).message });\n }\n });\n\n devServer.app.all(\"/api\", handleApiRequest);\n devServer.app.all(\"/api/*\", handleApiRequest);\n}\n"],"mappings":";;AAEA,MAAM,cAAc;CAClB,+BAA+B;CAC/B,gCAAgC;CAChC,gCAAgC;AAClC;AAEA,MAAM,oBAAoB,QAAa;CACrC,OAAO,QAAQ,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,WAAW;EACpD,IAAI,UAAU,KAAK,KAAK;CAC1B,CAAC;AACH;AAEA,MAAM,mBAAmB,WAA4B;CACnD,IAAI,CAAC,QAAQ,OAAO;CACpB,MAAM,UAAU,OAAO,QAAQ,cAAc,EAAE;CAC/C,OAAO,UAAU,IAAI,YAAY;AACnC;AAEA,MAAM,SAAS,OAAe,IAAI,SAAS,YAAY,WAAW,SAAS,EAAE,CAAC;AAE9E,MAAM,iCAAsC;CAC1C,MAAM,MAAM,QAAQ,IAAI;CACxB,IAAI,CAAC,KAAK,OAAO;CACjB,IAAI;EACF,OAAO,KAAK,MAAM,GAAG;CACvB,QAAQ;EACN,OAAO;CACT;AACF;AAEA,MAAM,yBAAyB,eAAoB,aAAqB;CACtE,MAAM,WAA+C,CAAC;CAEtD,MAAM,QAAQ,aAAa,SAAS,eAAe,KAAK,SAAS;CAEjE,MAAM,SAAS,eAAe,UAAU,YAAY,WAAW;CAC/D,IAAI,YAAsB,CAAC;CAC3B,IAAI,QACF,YAAY,cAAc,QAAQ,OAAO,CAAC,aAAa,CAAC;MACnD,IAAI,OACT,YAAY,eAAe,KAAK,aAAa,CAAC;CAGhD,KAAK,MAAM,SAAS,WAAW;EAC7B,MAAM,MAAM,eAAe,UAAU;EACrC,IAAI,CAAC,OAAO,IAAI,WAAW,WAAW,CAAC,IAAI,KAAK;EAChD,IAAI,UAAU,UAAU;EAExB,SAAS,SAAS,EAAE,QAAQ,GADf,IAAI,IAAI,QAAQ,OAAO,EACF,EAAE,iBAAiB;CACvD;CAEA,OAAO;EAAE;EAAU;CAAU;AAC/B;AAEA,MAAM,sBAAsB,OAC1B,SACA,UACA,YAAY,QACK;CACjB,MAAM,WAAW,KAAK,IAAI,IAAI;CAC9B,IAAI;CACJ,OAAO,KAAK,IAAI,IAAI,UAClB,IAAI;EACF,OAAO,MAAM,QAAQ,UAAU,UAAU;GAAE,WAAW,CAAC;GAAG,SAAS,CAAC;EAAE,CAAQ;CAChF,SAAS,OAAO;EACd,YAAY;EACZ,MAAM,MAAM,GAAG;CACjB;CAEF,MAAM;AACR;AAEA,SAAgB,sBACd,WACA,YACA,WACA,MACA;CACA,MAAM,YAAY,gBAAgB,WAAW,MAAM;CACnD,MAAM,WAAmC;EAAE,KAAK;EAAM,KAAK;CAAK;CAChE,IAAI,UAAwC;CAE5C,MAAM,iBAAiB,YAAY;EACjC,IAAI,SAAS;GACX,MAAM,QAAQ;GACd,UAAU;EACZ;CACF;CAEA,CAAC,YAAY;EACX,MAAM,eAAe;EAErB,IAAI;GACF,MAAM,EAAE,wBAAwB,2CAAM;GACtC,MAAM,EAAE,eAAe,MAAM,OAAO;GACpC,MAAM,EAAE,mBAAmB,MAAM,OAAO;GACxC,MAAM,EAAE,2BAA2B,MAAM,OAAO;GAChD,MAAM,EAAE,6BAA6B,MAAM,OAAO;GAClD,MAAM,EAAE,YAAY,2CAAM;GAC1B,MAAM,EAAE,oBAAoB,2CAAM;GAElC,MAAM,WAAW,WAAW,YAAY,WAAW;GAEnD,MAAM,gBAAgB,yBAAyB;GAC/C,MAAM,EAAE,UAAU,cAAc,sBAAsB,eAAe,QAAQ;GAE7E,IAAI,UAAU,SAAS,GACrB,QAAQ,IAAI,uCAAuC,SAAS,IAAI,UAAU,KAAK,IAAI,GAAG;GAUxF,MAAM,UAAU,oBAAoB,EAClC;KAPC,WAAW,EACV,QAAQ,oBAAoB,KAAK,iBACnC;IACA,GAAG;GAII,EACT,CAAC;GAED,MAAM,gBAAgB;IAAE,WAAW,CAAC;IAAG,SAAS,CAAC;GAAE;GAEnD,MAAM,aAAsC,CAAC;GAC7C,KAAK,MAAM,SAAS,OAAO,KAAK,QAAQ,GAAG;IAEzC,WAAW,UAAS,MADF,oBAAoB,SAAS,KAAK,EAC7B,CAAC;IACxB,QAAQ,IAAI,kCAAkC,OAAO;GACvD;GAEA,MAAM,SAAc,MAAM,QAAQ,UAChC,UACC,WAAW,UAAU,eACtB,OAAO,KAAK,UAAU,CAAC,CAAC,SAAS,IAAI,aAAa,MACpD;GAEA,UAAU,YAAY;IACpB,SAAS,MAAM;IACf,SAAS,MAAM;IACf,IAAI,UAAU,IAAI,OAAO,UACvB,UAAU,IAAI,OAAO,WAAW;IAElC,IAAI,SAAS,MAAM,QAAQ,SAAS;GACtC;GAEA,SAAS,MAAM,IAAI,WAAW,OAAO,QAAQ,EAC3C,cAAc,CACZ,SAAS,UAAe;IACtB,MAAM,YAAY,gBAAgB,KAAK;IACvC,IAAI,WAAW,QAAQ,MAAM,SAAS;GACxC,CAAC,CACH,EACF,CAAC;GAED,SAAS,MAAM,IAAI,eAAe,OAAO,QAAQ;IAC/C,SAAS,CACP,IAAI,uBAAuB,EACzB,kBAAkB,CAAC,IAAI,yBAAyB,CAAC,EACnD,CAAC,CACH;IACA,cAAc,CACZ,SAAS,UAAe;KACtB,MAAM,YAAY,gBAAgB,KAAK;KACvC,IAAI,WAAW,QAAQ,MAAM,SAAS;IACxC,CAAC,CACH;GACF,CAAC;GAED,QAAQ,IAAI,gDAAgD;GAC5D,QAAQ,IAAI,gCAAgC;GAC5C,QAAQ,IAAI,gDAAgD;GAC5D,QAAQ,IAAI,kCAAkC,KAAK,UAAU,WAAW;GACxE,QAAQ,IAAI,kCAAkC,KAAK,KAAK;GACxD,QAAQ,IAAI,kCAAkC,KAAK,EAAE;GACrD,QAAQ,IAAI,gDAAgD;GAE5D,UAAU,IAAI,OAAO,WAAW;GAEhC,IAAI,UAAU,QACZ,UAAU,OAAO,KAAK,SAAS,YAAY;IACzC,MAAM,eAAe;GACvB,CAAC;EAEL,SAAS,OAAO;GACd,QAAQ,MAAM,4BAA4B,KAAK;GAC/C,MAAM,eAAe;EACvB;CACF,EAAC,CAAE,CAAC,CAAC,OAAO,QAAQ;EAClB,QAAQ,MAAM,oCAAoC,GAAG;CACvD,CAAC;CAED,QAAQ,KAAK,UAAU,YAAY;EACjC,MAAM,UAAU,iBAAiB,QAAQ,KAAK,CAAC,GAAG,GAAI;EACtD,MAAM,eAAe;EACrB,aAAa,OAAO;CACtB,CAAC;CACD,QAAQ,KAAK,WAAW,YAAY;EAClC,MAAM,UAAU,iBAAiB,QAAQ,KAAK,CAAC,GAAG,GAAI;EACtD,MAAM,eAAe;EACrB,aAAa,OAAO;CACtB,CAAC;CAED,UAAU,IAAI,QAAQ,MAAM,MAAW,QAAa;EAClD,iBAAiB,GAAG;EACpB,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI;CACtB,CAAC;CAED,UAAU,IAAI,IAAI,MAAM,MAAW,QAAa;EAC9C,iBAAiB,GAAG;EACpB,IAAI,KAAK;GACP,IAAI;GACJ,QAAQ,WAAW;GACnB,SAAS,WAAW;GACpB,QAAQ,UAAU,IAAI,OAAO,UAAU,MAAM,UAAU;GACvD,WAAW;IACT,QAAQ;IACR,MAAM;IACN,KAAK,WAAW;GAClB;EACF,CAAC;CACH,CAAC;CAED,UAAU,IAAI,IAAI,YAAY,MAAW,QAAa;EACpD,iBAAiB,GAAG;EACpB,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI;CAC3B,CAAC;CAED,MAAM,mBAAmB,MAAW,eAAwB;EAC1D,MAAM,WACJ,WAAW,WAAW,SAAS,WAAW,WAAW,SAAS,OAAO,WAAW,MAAM;EACxF,IAAI,gBAA+B;EACnC,OAAO;GACL,YAAY,WAAW;GACvB,YAAY,YAA6B;IACvC,IAAI,kBAAkB,MAAM,OAAO;IACnC,IAAI,CAAC,UAAU;KACb,gBAAgB;KAChB,OAAO;IACT;IACA,gBAAgB,MAAM,SAAS,KAAK;IACpC,OAAO;GACT;EACF;CACF;CAEA,MAAM,mBAAmB,OAAO,KAAU,QAAa;EACrD,iBAAiB,GAAG;EACpB,MAAM,aAAa,UAAU,IAAI,OAAO,UAAU;EAClD,IAAI,CAAC,YACH,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,0BAA0B,CAAC;EAGlE,IAAI;GACF,MAAM,MAAM,UAAU,IAAI,QAAQ,OAAO,IAAI;GAC7C,MAAM,aAAa,IAAI,QAAQ,KAAK;IAClC,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,MAAM,IAAI,WAAW,SAAS,IAAI,WAAW,SAAS,MAAM;IAC5D,QAAQ,IAAI,WAAW,SAAS,IAAI,WAAW,SAAS,SAAS;GACnE,CAAgB;GAEhB,MAAM,SAAS,MAAM,WAAW,OAAO,YAAY;IACjD,QAAQ;IACR,SAAS,gBAAgB,KAAK,UAAU;GAC1C,CAAC;GAED,IAAI,OAAO,UAAU;IACnB,IAAI,OAAO,OAAO,SAAS,MAAM;IACjC,OAAO,SAAS,QAAQ,SAAS,OAAe,QAAgB;KAC9D,IAAI,UAAU,KAAK,KAAK;IAC1B,CAAC;IACD,MAAM,OAAO,MAAM,OAAO,SAAS,KAAK;IACxC,IAAI,KAAK,IAAI;GACf,OACE,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,WAAW;EAEpC,SAAS,OAAO;GACd,QAAQ,MAAM,kBAAkB,KAAK;GACrC,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAQ,MAAgB,QAAQ,CAAC;EAC1D;CACF;CAEA,UAAU,IAAI,IAAI,WAAW,UAAU,KAAK,OAAO,KAAU,QAAa;EACxE,iBAAiB,GAAG;EACpB,MAAM,aAAa,UAAU,IAAI,OAAO,UAAU;EAClD,IAAI,CAAC,YACH,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,0BAA0B,CAAC;EAGlE,IAAI;GACF,MAAM,MAAM,UAAU,IAAI,QAAQ,OAAO,IAAI;GAC7C,MAAM,aAAa,IAAI,QAAQ,KAAK;IAClC,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,MAAM,IAAI,WAAW,SAAS,IAAI,WAAW,SAAS,MAAM;IAC5D,QAAQ,IAAI,WAAW,SAAS,IAAI,WAAW,SAAS,SAAS;GACnE,CAAgB;GAEhB,MAAM,SAAS,MAAM,WAAW,OAAO,YAAY;IACjD,QAAQ,WAAW;IACnB,SAAS,gBAAgB,KAAK,UAAU;GAC1C,CAAC;GAED,IAAI,OAAO,UAAU;IACnB,IAAI,OAAO,OAAO,SAAS,MAAM;IACjC,OAAO,SAAS,QAAQ,SAAS,OAAe,QAAgB;KAC9D,IAAI,UAAU,KAAK,KAAK;IAC1B,CAAC;IACD,MAAM,OAAO,MAAM,OAAO,SAAS,KAAK;IACxC,IAAI,KAAK,IAAI;GACf,OACE,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,WAAW;EAEpC,SAAS,OAAO;GACd,QAAQ,MAAM,cAAc,KAAK;GACjC,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAQ,MAAgB,QAAQ,CAAC;EAC1D;CACF,CAAC;CAED,UAAU,IAAI,IAAI,QAAQ,gBAAgB;CAC1C,UAAU,IAAI,IAAI,UAAU,gBAAgB;AAC9C"}
@@ -1,247 +0,0 @@
1
- //#region src/build/rspack/dev-server-middleware.ts
2
- const corsHeaders = {
3
- "Access-Control-Allow-Origin": "*",
4
- "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
5
- "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
6
- };
7
- const applyCorsHeaders = (res) => {
8
- Object.entries(corsHeaders).forEach(([key, value]) => {
9
- res.setHeader(key, value);
10
- });
11
- };
12
- const normalizePrefix = (prefix) => {
13
- if (!prefix) return "";
14
- const cleaned = prefix.replace(/^\/+|\/+$/g, "");
15
- return cleaned ? `/${cleaned}` : "";
16
- };
17
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
18
- const readRuntimeConfigFromEnv = () => {
19
- const raw = process.env.BOS_RUNTIME_CONFIG;
20
- if (!raw) return null;
21
- try {
22
- return JSON.parse(raw);
23
- } catch {
24
- return null;
25
- }
26
- };
27
- const collectSiblingRemotes = (runtimeConfig, pluginId) => {
28
- const siblings = {};
29
- const isApi = pluginId === "api" || runtimeConfig?.api?.name === pluginId;
30
- const ownKey = runtimeConfig?.plugins?.[pluginId] ? pluginId : null;
31
- let dependsOn = [];
32
- if (ownKey) dependsOn = runtimeConfig.plugins[ownKey].dependsOn ?? [];
33
- else if (isApi) dependsOn = runtimeConfig?.api?.dependsOn ?? [];
34
- for (const depId of dependsOn) {
35
- const dep = runtimeConfig?.plugins?.[depId];
36
- if (!dep || dep.source !== "local" || !dep.url) continue;
37
- if (depId === pluginId) continue;
38
- siblings[depId] = { remote: `${dep.url.replace(/\/$/, "")}/remoteEntry.js` };
39
- }
40
- return {
41
- siblings,
42
- dependsOn
43
- };
44
- };
45
- const loadPluginWithRetry = async (runtime, pluginId, timeoutMs = 9e4) => {
46
- const deadline = Date.now() + timeoutMs;
47
- let lastError;
48
- while (Date.now() < deadline) try {
49
- return await runtime.usePlugin(pluginId, {
50
- variables: {},
51
- secrets: {}
52
- });
53
- } catch (error) {
54
- lastError = error;
55
- await sleep(500);
56
- }
57
- throw lastError;
58
- };
59
- function setupPluginMiddleware(devServer, pluginInfo, devConfig, port) {
60
- const rpcPrefix = normalizePrefix(devConfig?.prefix);
61
- const handlers = {
62
- rpc: null,
63
- api: null
64
- };
65
- let cleanup = null;
66
- const performCleanup = async () => {
67
- if (cleanup) {
68
- await cleanup();
69
- cleanup = null;
70
- }
71
- };
72
- (async () => {
73
- await performCleanup();
74
- try {
75
- const { createPluginRuntime } = await import("../../index.mjs");
76
- const { RPCHandler } = await import("@orpc/server/fetch");
77
- const { OpenAPIHandler } = await import("@orpc/openapi/fetch");
78
- const { OpenAPIReferencePlugin } = await import("@orpc/openapi/plugins");
79
- const { ZodToJsonSchemaConverter } = await import("@orpc/zod/zod4");
80
- const { onError } = await import("../../orpc.mjs");
81
- const { formatORPCError } = await import("../../errors.mjs");
82
- const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;
83
- const runtimeConfig = readRuntimeConfigFromEnv();
84
- const { siblings, dependsOn } = collectSiblingRemotes(runtimeConfig, pluginId);
85
- if (dependsOn.length > 0) console.log(`│ 🔗 Loading sibling plugin(s) for ${pluginId}: ${dependsOn.join(", ")}`);
86
- const runtime = createPluginRuntime({ registry: {
87
- [pluginId]: { remote: `http://localhost:${port}/remoteEntry.js` },
88
- ...siblings
89
- } });
90
- const defaultConfig = {
91
- variables: {},
92
- secrets: {}
93
- };
94
- const pluginsMap = {};
95
- for (const depId of Object.keys(siblings)) {
96
- pluginsMap[depId] = (await loadPluginWithRetry(runtime, depId)).createClient;
97
- console.log(`│ ✅ Loaded dependency plugin: ${depId}`);
98
- }
99
- const loaded = await runtime.usePlugin(pluginId, devConfig?.config ?? defaultConfig, Object.keys(pluginsMap).length > 0 ? pluginsMap : void 0);
100
- cleanup = async () => {
101
- handlers.rpc = null;
102
- handlers.api = null;
103
- if (devServer.app.locals.handlers) devServer.app.locals.handlers = null;
104
- if (runtime) await runtime.shutdown();
105
- };
106
- handlers.rpc = new RPCHandler(loaded.router, { interceptors: [onError((error) => {
107
- const formatted = formatORPCError(error);
108
- if (formatted) console.error(formatted);
109
- })] });
110
- handlers.api = new OpenAPIHandler(loaded.router, {
111
- plugins: [new OpenAPIReferencePlugin({ schemaConverters: [new ZodToJsonSchemaConverter()] })],
112
- interceptors: [onError((error) => {
113
- const formatted = formatORPCError(error);
114
- if (formatted) console.error(formatted);
115
- })]
116
- });
117
- console.log(`╭─────────────────────────────────────────────`);
118
- console.log(`│ ✅ Plugin dev server ready: `);
119
- console.log(`├─────────────────────────────────────────────`);
120
- console.log(`│ 📡 RPC: http://localhost:${port}/api/rpc${rpcPrefix}`);
121
- console.log(`│ 📖 Docs: http://localhost:${port}/api`);
122
- console.log(`│ 💚 Health: http://localhost:${port}/`);
123
- console.log(`╰─────────────────────────────────────────────`);
124
- devServer.app.locals.handlers = handlers;
125
- if (devServer.server) devServer.server.once("close", async () => {
126
- await performCleanup();
127
- });
128
- } catch (error) {
129
- console.error("❌ Failed to load plugin:", error);
130
- await performCleanup();
131
- }
132
- })().catch((err) => {
133
- console.error("❌ Plugin dev server fatal error:", err);
134
- });
135
- process.once("SIGINT", async () => {
136
- const timeout = setTimeout(() => process.exit(0), 3e3);
137
- await performCleanup();
138
- clearTimeout(timeout);
139
- });
140
- process.once("SIGTERM", async () => {
141
- const timeout = setTimeout(() => process.exit(0), 3e3);
142
- await performCleanup();
143
- clearTimeout(timeout);
144
- });
145
- devServer.app.options("*", (_req, res) => {
146
- applyCorsHeaders(res);
147
- res.status(200).end();
148
- });
149
- devServer.app.get("/", (_req, res) => {
150
- applyCorsHeaders(res);
151
- res.json({
152
- ok: true,
153
- plugin: pluginInfo.normalizedName,
154
- version: pluginInfo.version,
155
- status: devServer.app.locals.handlers?.rpc ? "ready" : "loading",
156
- endpoints: {
157
- health: "/",
158
- docs: "/api",
159
- rpc: `/api/rpc${rpcPrefix}`
160
- }
161
- });
162
- });
163
- devServer.app.get("/health", (_req, res) => {
164
- applyCorsHeaders(res);
165
- res.status(200).send("OK");
166
- });
167
- const buildDevContext = (_req, webRequest) => {
168
- const rawClone = webRequest.method === "GET" || webRequest.method === "HEAD" ? null : webRequest.clone();
169
- let cachedRawBody = null;
170
- return {
171
- reqHeaders: webRequest.headers,
172
- getRawBody: async () => {
173
- if (cachedRawBody !== null) return cachedRawBody;
174
- if (!rawClone) {
175
- cachedRawBody = "";
176
- return cachedRawBody;
177
- }
178
- cachedRawBody = await rawClone.text();
179
- return cachedRawBody;
180
- }
181
- };
182
- };
183
- const handleApiRequest = async (req, res) => {
184
- applyCorsHeaders(res);
185
- const apiHandler = devServer.app.locals.handlers?.api;
186
- if (!apiHandler) return res.status(503).json({ error: "Plugin still loading..." });
187
- try {
188
- const url = `http://${req.headers.host}${req.url}`;
189
- const webRequest = new Request(url, {
190
- method: req.method,
191
- headers: req.headers,
192
- body: req.method !== "GET" && req.method !== "HEAD" ? req : void 0,
193
- duplex: req.method !== "GET" && req.method !== "HEAD" ? "half" : void 0
194
- });
195
- const result = await apiHandler.handle(webRequest, {
196
- prefix: "/api",
197
- context: buildDevContext(req, webRequest)
198
- });
199
- if (result.response) {
200
- res.status(result.response.status);
201
- result.response.headers.forEach((value, key) => {
202
- res.setHeader(key, value);
203
- });
204
- const text = await result.response.text();
205
- res.send(text);
206
- } else res.status(404).send("Not Found");
207
- } catch (error) {
208
- console.error("OpenAPI error:", error);
209
- res.status(500).json({ error: error.message });
210
- }
211
- };
212
- devServer.app.all(`/api/rpc${rpcPrefix}/*`, async (req, res) => {
213
- applyCorsHeaders(res);
214
- const rpcHandler = devServer.app.locals.handlers?.rpc;
215
- if (!rpcHandler) return res.status(503).json({ error: "Plugin still loading..." });
216
- try {
217
- const url = `http://${req.headers.host}${req.url}`;
218
- const webRequest = new Request(url, {
219
- method: req.method,
220
- headers: req.headers,
221
- body: req.method !== "GET" && req.method !== "HEAD" ? req : void 0,
222
- duplex: req.method !== "GET" && req.method !== "HEAD" ? "half" : void 0
223
- });
224
- const result = await rpcHandler.handle(webRequest, {
225
- prefix: `/api/rpc${rpcPrefix}`,
226
- context: buildDevContext(req, webRequest)
227
- });
228
- if (result.response) {
229
- res.status(result.response.status);
230
- result.response.headers.forEach((value, key) => {
231
- res.setHeader(key, value);
232
- });
233
- const text = await result.response.text();
234
- res.send(text);
235
- } else res.status(404).send("Not Found");
236
- } catch (error) {
237
- console.error("RPC error:", error);
238
- res.status(500).json({ error: error.message });
239
- }
240
- });
241
- devServer.app.all("/api", handleApiRequest);
242
- devServer.app.all("/api/*", handleApiRequest);
243
- }
244
-
245
- //#endregion
246
- export { setupPluginMiddleware };
247
- //# sourceMappingURL=dev-server-middleware.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-server-middleware.mjs","names":[],"sources":["../../../src/build/rspack/dev-server-middleware.ts"],"sourcesContent":["import type { PluginInfo } from \"./utils\";\n\nconst corsHeaders = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, DELETE, PATCH, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"X-Requested-With, content-type, Authorization\",\n};\n\nconst applyCorsHeaders = (res: any) => {\n Object.entries(corsHeaders).forEach(([key, value]) => {\n res.setHeader(key, value);\n });\n};\n\nconst normalizePrefix = (prefix?: string): string => {\n if (!prefix) return \"\";\n const cleaned = prefix.replace(/^\\/+|\\/+$/g, \"\");\n return cleaned ? `/${cleaned}` : \"\";\n};\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst readRuntimeConfigFromEnv = (): any => {\n const raw = process.env.BOS_RUNTIME_CONFIG;\n if (!raw) return null;\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n }\n};\n\nconst collectSiblingRemotes = (runtimeConfig: any, pluginId: string) => {\n const siblings: Record<string, { remote: string }> = {};\n\n const isApi = pluginId === \"api\" || runtimeConfig?.api?.name === pluginId;\n\n const ownKey = runtimeConfig?.plugins?.[pluginId] ? pluginId : null;\n let dependsOn: string[] = [];\n if (ownKey) {\n dependsOn = runtimeConfig.plugins[ownKey].dependsOn ?? [];\n } else if (isApi) {\n dependsOn = runtimeConfig?.api?.dependsOn ?? [];\n }\n\n for (const depId of dependsOn) {\n const dep = runtimeConfig?.plugins?.[depId];\n if (!dep || dep.source !== \"local\" || !dep.url) continue;\n if (depId === pluginId) continue;\n const base = dep.url.replace(/\\/$/, \"\");\n siblings[depId] = { remote: `${base}/remoteEntry.js` };\n }\n\n return { siblings, dependsOn };\n};\n\nconst loadPluginWithRetry = async (\n runtime: any,\n pluginId: string,\n timeoutMs = 90000,\n): Promise<any> => {\n const deadline = Date.now() + timeoutMs;\n let lastError: unknown;\n while (Date.now() < deadline) {\n try {\n return await runtime.usePlugin(pluginId, { variables: {}, secrets: {} } as any);\n } catch (error) {\n lastError = error;\n await sleep(500);\n }\n }\n throw lastError;\n};\n\nexport function setupPluginMiddleware(\n devServer: any,\n pluginInfo: PluginInfo,\n devConfig: any,\n port: number,\n) {\n const rpcPrefix = normalizePrefix(devConfig?.prefix);\n const handlers: { rpc: any; api: any } = { rpc: null, api: null };\n let cleanup: (() => Promise<void>) | null = null;\n\n const performCleanup = async () => {\n if (cleanup) {\n await cleanup();\n cleanup = null;\n }\n };\n\n (async () => {\n await performCleanup();\n\n try {\n const { createPluginRuntime } = await import(\"every-plugin\");\n const { RPCHandler } = await import(\"@orpc/server/fetch\");\n const { OpenAPIHandler } = await import(\"@orpc/openapi/fetch\");\n const { OpenAPIReferencePlugin } = await import(\"@orpc/openapi/plugins\");\n const { ZodToJsonSchemaConverter } = await import(\"@orpc/zod/zod4\");\n const { onError } = await import(\"every-plugin/orpc\");\n const { formatORPCError } = await import(\"every-plugin/errors\");\n\n const pluginId = devConfig?.pluginId || pluginInfo.normalizedName;\n\n const runtimeConfig = readRuntimeConfigFromEnv();\n const { siblings, dependsOn } = collectSiblingRemotes(runtimeConfig, pluginId);\n\n if (dependsOn.length > 0) {\n console.log(`│ 🔗 Loading sibling plugin(s) for ${pluginId}: ${dependsOn.join(\", \")}`);\n }\n\n const registry: Record<string, { remote: string }> = {\n [pluginId]: {\n remote: `http://localhost:${port}/remoteEntry.js`,\n },\n ...siblings,\n };\n\n const runtime = createPluginRuntime({\n registry,\n });\n\n const defaultConfig = { variables: {}, secrets: {} };\n\n const pluginsMap: Record<string, unknown> = {};\n for (const depId of Object.keys(siblings)) {\n const dep = await loadPluginWithRetry(runtime, depId);\n pluginsMap[depId] = dep.createClient;\n console.log(`│ ✅ Loaded dependency plugin: ${depId}`);\n }\n\n const loaded: any = await runtime.usePlugin<typeof pluginId>(\n pluginId,\n (devConfig?.config ?? defaultConfig) as any,\n Object.keys(pluginsMap).length > 0 ? pluginsMap : undefined,\n );\n\n cleanup = async () => {\n handlers.rpc = null;\n handlers.api = null;\n if (devServer.app.locals.handlers) {\n devServer.app.locals.handlers = null;\n }\n if (runtime) await runtime.shutdown();\n };\n\n handlers.rpc = new RPCHandler(loaded.router, {\n interceptors: [\n onError((error: any) => {\n const formatted = formatORPCError(error);\n if (formatted) console.error(formatted);\n }),\n ],\n });\n\n handlers.api = new OpenAPIHandler(loaded.router, {\n plugins: [\n new OpenAPIReferencePlugin({\n schemaConverters: [new ZodToJsonSchemaConverter()],\n }),\n ],\n interceptors: [\n onError((error: any) => {\n const formatted = formatORPCError(error);\n if (formatted) console.error(formatted);\n }),\n ],\n });\n\n console.log(`╭─────────────────────────────────────────────`);\n console.log(`│ ✅ Plugin dev server ready: `);\n console.log(`├─────────────────────────────────────────────`);\n console.log(`│ 📡 RPC: http://localhost:${port}/api/rpc${rpcPrefix}`);\n console.log(`│ 📖 Docs: http://localhost:${port}/api`);\n console.log(`│ 💚 Health: http://localhost:${port}/`);\n console.log(`╰─────────────────────────────────────────────`);\n\n devServer.app.locals.handlers = handlers;\n\n if (devServer.server) {\n devServer.server.once(\"close\", async () => {\n await performCleanup();\n });\n }\n } catch (error) {\n console.error(\"❌ Failed to load plugin:\", error);\n await performCleanup();\n }\n })().catch((err) => {\n console.error(\"❌ Plugin dev server fatal error:\", err);\n });\n\n process.once(\"SIGINT\", async () => {\n const timeout = setTimeout(() => process.exit(0), 3000);\n await performCleanup();\n clearTimeout(timeout);\n });\n process.once(\"SIGTERM\", async () => {\n const timeout = setTimeout(() => process.exit(0), 3000);\n await performCleanup();\n clearTimeout(timeout);\n });\n\n devServer.app.options(\"*\", (_req: any, res: any) => {\n applyCorsHeaders(res);\n res.status(200).end();\n });\n\n devServer.app.get(\"/\", (_req: any, res: any) => {\n applyCorsHeaders(res);\n res.json({\n ok: true,\n plugin: pluginInfo.normalizedName,\n version: pluginInfo.version,\n status: devServer.app.locals.handlers?.rpc ? \"ready\" : \"loading\",\n endpoints: {\n health: \"/\",\n docs: \"/api\",\n rpc: `/api/rpc${rpcPrefix}`,\n },\n });\n });\n\n devServer.app.get(\"/health\", (_req: any, res: any) => {\n applyCorsHeaders(res);\n res.status(200).send(\"OK\");\n });\n\n const buildDevContext = (_req: any, webRequest: Request) => {\n const rawClone =\n webRequest.method === \"GET\" || webRequest.method === \"HEAD\" ? null : webRequest.clone();\n let cachedRawBody: string | null = null;\n return {\n reqHeaders: webRequest.headers,\n getRawBody: async (): Promise<string> => {\n if (cachedRawBody !== null) return cachedRawBody;\n if (!rawClone) {\n cachedRawBody = \"\";\n return cachedRawBody;\n }\n cachedRawBody = await rawClone.text();\n return cachedRawBody;\n },\n };\n };\n\n const handleApiRequest = async (req: any, res: any) => {\n applyCorsHeaders(res);\n const apiHandler = devServer.app.locals.handlers?.api;\n if (!apiHandler) {\n return res.status(503).json({ error: \"Plugin still loading...\" });\n }\n\n try {\n const url = `http://${req.headers.host}${req.url}`;\n const webRequest = new Request(url, {\n method: req.method,\n headers: req.headers,\n body: req.method !== \"GET\" && req.method !== \"HEAD\" ? req : undefined,\n duplex: req.method !== \"GET\" && req.method !== \"HEAD\" ? \"half\" : undefined,\n } as RequestInit);\n\n const result = await apiHandler.handle(webRequest, {\n prefix: \"/api\",\n context: buildDevContext(req, webRequest),\n });\n\n if (result.response) {\n res.status(result.response.status);\n result.response.headers.forEach((value: string, key: string) => {\n res.setHeader(key, value);\n });\n const text = await result.response.text();\n res.send(text);\n } else {\n res.status(404).send(\"Not Found\");\n }\n } catch (error) {\n console.error(\"OpenAPI error:\", error);\n res.status(500).json({ error: (error as Error).message });\n }\n };\n\n devServer.app.all(`/api/rpc${rpcPrefix}/*`, async (req: any, res: any) => {\n applyCorsHeaders(res);\n const rpcHandler = devServer.app.locals.handlers?.rpc;\n if (!rpcHandler) {\n return res.status(503).json({ error: \"Plugin still loading...\" });\n }\n\n try {\n const url = `http://${req.headers.host}${req.url}`;\n const webRequest = new Request(url, {\n method: req.method,\n headers: req.headers,\n body: req.method !== \"GET\" && req.method !== \"HEAD\" ? req : undefined,\n duplex: req.method !== \"GET\" && req.method !== \"HEAD\" ? \"half\" : undefined,\n } as RequestInit);\n\n const result = await rpcHandler.handle(webRequest, {\n prefix: `/api/rpc${rpcPrefix}`,\n context: buildDevContext(req, webRequest),\n });\n\n if (result.response) {\n res.status(result.response.status);\n result.response.headers.forEach((value: string, key: string) => {\n res.setHeader(key, value);\n });\n const text = await result.response.text();\n res.send(text);\n } else {\n res.status(404).send(\"Not Found\");\n }\n } catch (error) {\n console.error(\"RPC error:\", error);\n res.status(500).json({ error: (error as Error).message });\n }\n });\n\n devServer.app.all(\"/api\", handleApiRequest);\n devServer.app.all(\"/api/*\", handleApiRequest);\n}\n"],"mappings":"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"}
@@ -1,83 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- let node_fs = require("node:fs");
3
- let node_module = require("node:module");
4
- let node_path = require("node:path");
5
- let node_url = require("node:url");
6
-
7
- //#region src/build/shared-deps.ts
8
- const __dirname$1 = (0, node_path.dirname)((0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href));
9
- const require$1 = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
10
- let pkg;
11
- try {
12
- pkg = JSON.parse((0, node_fs.readFileSync)((0, node_path.join)(__dirname$1, "../../package.json"), "utf-8"));
13
- } catch {
14
- pkg = require$1("every-plugin/package.json");
15
- }
16
- const DEFAULT_SHARE_CONFIG = {
17
- requiredVersion: false,
18
- singleton: true,
19
- strictVersion: false,
20
- eager: false,
21
- shareScope: "default"
22
- };
23
- function extractExactVersion(input) {
24
- const match = input.match(/\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/);
25
- return match ? match[0] : input.replace(/^[\^~>=<\s]+/, "");
26
- }
27
- function getInstalledPackageVersion(packageName, fallbackVersion) {
28
- try {
29
- let currentDir = (0, node_path.dirname)(require$1.resolve(packageName));
30
- for (let i = 0; i < 5; i += 1) {
31
- const packageJsonPath = (0, node_path.join)(currentDir, "package.json");
32
- if ((0, node_fs.existsSync)(packageJsonPath)) return JSON.parse((0, node_fs.readFileSync)(packageJsonPath, "utf-8")).version;
33
- currentDir = (0, node_path.dirname)(currentDir);
34
- }
35
- throw new Error(`Could not resolve installed version for ${packageName}`);
36
- } catch {
37
- return extractExactVersion(fallbackVersion);
38
- }
39
- }
40
- const pluginSharedDependencies = {
41
- "every-plugin": {
42
- version: pkg.version,
43
- ...DEFAULT_SHARE_CONFIG
44
- },
45
- effect: {
46
- version: getInstalledPackageVersion("effect", pkg.peerDependencies.effect),
47
- ...DEFAULT_SHARE_CONFIG
48
- },
49
- zod: {
50
- version: getInstalledPackageVersion("zod", pkg.peerDependencies.zod),
51
- ...DEFAULT_SHARE_CONFIG
52
- },
53
- "@orpc/contract": {
54
- version: getInstalledPackageVersion("@orpc/contract", pkg.peerDependencies["@orpc/contract"]),
55
- ...DEFAULT_SHARE_CONFIG
56
- },
57
- "@orpc/client": {
58
- version: getInstalledPackageVersion("@orpc/client", pkg.peerDependencies["@orpc/client"]),
59
- ...DEFAULT_SHARE_CONFIG
60
- },
61
- "@orpc/server": {
62
- version: getInstalledPackageVersion("@orpc/server", pkg.peerDependencies["@orpc/server"]),
63
- ...DEFAULT_SHARE_CONFIG
64
- }
65
- };
66
- function getPluginSharedDependencies() {
67
- return pluginSharedDependencies;
68
- }
69
- function getPluginSharedDependenciesVersionRange() {
70
- return Object.fromEntries(Object.entries(getPluginSharedDependencies()).map(([name, config]) => [name, getMajorMinorVersion(config.version)]));
71
- }
72
- function getMajorMinorVersion(version) {
73
- const match = version.replace(/^[\^~>=<]+/, "").match(/^(\d+)\.(\d+)/);
74
- if (!match) return "^0.0.0";
75
- return `^${match[1]}.${match[2]}.0`;
76
- }
77
-
78
- //#endregion
79
- exports.getMajorMinorVersion = getMajorMinorVersion;
80
- exports.getPluginSharedDependencies = getPluginSharedDependencies;
81
- exports.getPluginSharedDependenciesVersionRange = getPluginSharedDependenciesVersionRange;
82
- exports.pluginSharedDependencies = pluginSharedDependencies;
83
- //# sourceMappingURL=shared-deps.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shared-deps.cjs","names":["__dirname","require"],"sources":["../../src/build/shared-deps.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst require = createRequire(import.meta.url);\n\nlet pkg: typeof import(\"../../package.json\");\n\ntry {\n pkg = JSON.parse(readFileSync(join(__dirname, \"../../package.json\"), \"utf-8\"));\n} catch {\n pkg = require(\"every-plugin/package.json\");\n}\n\nexport interface SharedDependencyConfig {\n version: string;\n requiredVersion: string | false;\n singleton: boolean;\n strictVersion: boolean;\n eager: boolean;\n shareScope: string;\n}\n\nexport type SharedDependencies = Record<string, SharedDependencyConfig>;\n\nconst DEFAULT_SHARE_CONFIG: Omit<SharedDependencyConfig, \"version\"> = {\n requiredVersion: false,\n singleton: true,\n strictVersion: false,\n eager: false,\n shareScope: \"default\",\n};\n\nfunction extractExactVersion(input: string): string {\n const match = input.match(/\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?/);\n return match ? match[0] : input.replace(/^[\\^~>=<\\s]+/, \"\");\n}\n\nfunction getInstalledPackageVersion(packageName: string, fallbackVersion: string): string {\n try {\n let currentDir = dirname(require.resolve(packageName));\n for (let i = 0; i < 5; i += 1) {\n const packageJsonPath = join(currentDir, \"package.json\");\n if (existsSync(packageJsonPath)) {\n return (JSON.parse(readFileSync(packageJsonPath, \"utf-8\")) as { version: string }).version;\n }\n currentDir = dirname(currentDir);\n }\n\n throw new Error(`Could not resolve installed version for ${packageName}`);\n } catch {\n return extractExactVersion(fallbackVersion);\n }\n}\n\nexport const pluginSharedDependencies = {\n \"every-plugin\": { version: pkg.version, ...DEFAULT_SHARE_CONFIG },\n effect: {\n version: getInstalledPackageVersion(\"effect\", pkg.peerDependencies.effect),\n ...DEFAULT_SHARE_CONFIG,\n },\n zod: {\n version: getInstalledPackageVersion(\"zod\", pkg.peerDependencies.zod),\n ...DEFAULT_SHARE_CONFIG,\n },\n \"@orpc/contract\": {\n version: getInstalledPackageVersion(\"@orpc/contract\", pkg.peerDependencies[\"@orpc/contract\"]),\n ...DEFAULT_SHARE_CONFIG,\n },\n \"@orpc/client\": {\n version: getInstalledPackageVersion(\"@orpc/client\", pkg.peerDependencies[\"@orpc/client\"]),\n ...DEFAULT_SHARE_CONFIG,\n },\n \"@orpc/server\": {\n version: getInstalledPackageVersion(\"@orpc/server\", pkg.peerDependencies[\"@orpc/server\"]),\n ...DEFAULT_SHARE_CONFIG,\n },\n} satisfies SharedDependencies;\n\nexport type PluginSharedDependencyName = keyof typeof pluginSharedDependencies;\n\nexport function getPluginSharedDependencies(): SharedDependencies {\n return pluginSharedDependencies;\n}\n\nexport function getPluginSharedDependenciesVersionRange(): Record<string, string> {\n return Object.fromEntries(\n Object.entries(getPluginSharedDependencies()).map(([name, config]) => [\n name,\n getMajorMinorVersion(config.version),\n ]),\n );\n}\n\nexport function getMajorMinorVersion(version: string): string {\n const clean = version.replace(/^[\\^~>=<]+/, \"\");\n const match = clean.match(/^(\\d+)\\.(\\d+)/);\n if (!match) return \"^0.0.0\";\n return `^${match[1]}.${match[2]}.0`;\n}\n"],"mappings":";;;;;;;AAKA,MAAMA,8GAAiD,CAAC;AACxD,MAAMC,wFAAuC;AAE7C,IAAI;AAEJ,IAAI;CACF,MAAM,KAAK,oDAAwBD,aAAW,oBAAoB,GAAG,OAAO,CAAC;AAC/E,QAAQ;CACN,MAAMC,UAAQ,2BAA2B;AAC3C;AAaA,MAAM,uBAAgE;CACpE,iBAAiB;CACjB,WAAW;CACX,eAAe;CACf,OAAO;CACP,YAAY;AACd;AAEA,SAAS,oBAAoB,OAAuB;CAClD,MAAM,QAAQ,MAAM,MAAM,mCAAmC;CAC7D,OAAO,QAAQ,MAAM,KAAK,MAAM,QAAQ,gBAAgB,EAAE;AAC5D;AAEA,SAAS,2BAA2B,aAAqB,iBAAiC;CACxF,IAAI;EACF,IAAI,oCAAqBA,UAAQ,QAAQ,WAAW,CAAC;EACrD,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;GAC7B,MAAM,sCAAuB,YAAY,cAAc;GACvD,4BAAe,eAAe,GAC5B,OAAQ,KAAK,gCAAmB,iBAAiB,OAAO,CAAC,CAAC,CAAyB;GAErF,oCAAqB,UAAU;EACjC;EAEA,MAAM,IAAI,MAAM,2CAA2C,aAAa;CAC1E,QAAQ;EACN,OAAO,oBAAoB,eAAe;CAC5C;AACF;AAEA,MAAa,2BAA2B;CACtC,gBAAgB;EAAE,SAAS,IAAI;EAAS,GAAG;CAAqB;CAChE,QAAQ;EACN,SAAS,2BAA2B,UAAU,IAAI,iBAAiB,MAAM;EACzE,GAAG;CACL;CACA,KAAK;EACH,SAAS,2BAA2B,OAAO,IAAI,iBAAiB,GAAG;EACnE,GAAG;CACL;CACA,kBAAkB;EAChB,SAAS,2BAA2B,kBAAkB,IAAI,iBAAiB,iBAAiB;EAC5F,GAAG;CACL;CACA,gBAAgB;EACd,SAAS,2BAA2B,gBAAgB,IAAI,iBAAiB,eAAe;EACxF,GAAG;CACL;CACA,gBAAgB;EACd,SAAS,2BAA2B,gBAAgB,IAAI,iBAAiB,eAAe;EACxF,GAAG;CACL;AACF;AAIA,SAAgB,8BAAkD;CAChE,OAAO;AACT;AAEA,SAAgB,0CAAkE;CAChF,OAAO,OAAO,YACZ,OAAO,QAAQ,4BAA4B,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,YAAY,CACpE,MACA,qBAAqB,OAAO,OAAO,CACrC,CAAC,CACH;AACF;AAEA,SAAgB,qBAAqB,SAAyB;CAE5D,MAAM,QADQ,QAAQ,QAAQ,cAAc,EAC1B,CAAC,CAAC,MAAM,eAAe;CACzC,IAAI,CAAC,OAAO,OAAO;CACnB,OAAO,IAAI,MAAM,GAAG,GAAG,MAAM,GAAG;AAClC"}