From 0f1d9c5ba609f0a2313d3c6fbfecf8b8bf7b5497 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Fri, 5 Jul 2024 17:25:10 +0200 Subject: [PATCH] RPCPlayground --- bun.lockb | Bin 158521 -> 173830 bytes packages/server/package.json | 3 ++- packages/server/src/index.ts | 2 ++ packages/server/src/rpc/RPCPlayground.ts | 25 +++++++++++++++++++++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 packages/server/src/rpc/RPCPlayground.ts diff --git a/bun.lockb b/bun.lockb index 3fd99ab24ce24367ffca5f18f20352630deebfaf..298ad3844f533236d4e06360965913e4cff08fae 100755 GIT binary patch delta 18638 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 delta 8633 zcmeHMdwfk-+TMFbG&>}ckjVXpxaTIx$@Pd!h@c!)E<_TXTqKdm1*vk5xRemY4l8k) zmbNnt+Nx??2h%d7MGez&sbV_5iGFQq`8rHLW}f%#waIik^Xnh;XE#rt^*-xe?|Ro- zd#~)Bwfvmp!B3QRp?#nHVdNnfr(-^UpEdQn2|c;D>Eq)UKf3Ba|5C+u>CIJb5j$rw ziLNaT=>cpv-#dSuVlmGzuP|3uO4bZX>MBXrGO#N+2kZhift|s_1jm4#VD|%e2478= zq)y-?U6%|5n9@87o%mhBFV4`0e;4cty%6jME+{Lv4dWW@Zg8=lL_U-NhZ5ftcEm$ zQVDCgRu^VaT7)I3rl|(ydsss?&j15U%2FLmjLM=cNiy0*Q(uE}1XjG(+|R(i%TilQ zj4X7D>R4)2a;8X9vevw}L3srhwPR{SAA@ooR;*Tsl-#H4btcs1z|z`Ly05?@Pi9O0 zkFdgR7I{9GElDx9C>M}?60AsANWQ?p%CgnEGNb)Ahyzro*@Nw=nXI}78Q9}&HLcvJ z44j54TdWK51|<`g=rzpX&R4g4zlge6b! zmFob5QV)x63t4Rl!tBkIB-|NvTlg6qa$t>t^=!nuplFju>u?R$c&*ExxQVas?P<6Jiw1&DFeSaP#|*bw zCJeF$R;tYtIVx9SW$Eo$RI%E+%*f^ztB%W!?9*a3ZMjhyjvaxPMZ3ozU_YV!HEZ&0 zNy1tS>pfW0o?6|?+FKQ{aGMLybFipeElQtqZOt^x3TyJyx=;Se8Zbw~9;COkwzupr z!J43+U7qNG9g4>L98H|E2-efPiXEv?)9Q?@Q>9u5GF7Urp!Joi<0_;5DQt0r)w9_N zY+{vKx5~&aR;jHZ?`qX?wNc5&hGsxmJZ^~w)>y69tv0gL)oLs1g0ZQk*zz*@8I%H8 z+F~@UGO)vQ_tn)OQY_dMr5mzs*Os1u@n8Bo{rHL80e*JO=KiDXgen(NPfVd*g$=ey z_7FUT@KcxqbQk{riJya?zwrAp?u`0=%%Ww~AC5GVFwuaRiV^rh9YzYhJ(E5NI<+&1 zdSV(-qOgCAseTCRJAy}AP@q7mf=3BX1KU9#3&wwG9R2t=OjRaP|DTu=eF1)yK$h@# zq5_qt;)kp{HFtNVbf&?g?(@L*YIbvX3#kR<11<#9MNC0Uz~o&f>`Jf;>?L5j{tJwC z`iX(4&t>>Qi7poj5R?5fm=azkc&(@>recGz+cOQUk>MSJu14Xw5iIXJTL1FT50Eyq zKR-Y}KR|ds+CMn-ypXLuK=|CC>*)iu@6pZ&h5U_f@@O90Rd(W!QIZGoQSNd&ZzExk zJA`Qdh=itY5VAcW82C;P2&wK6oVr7ZL2?<>Bgs{T{La8T&Bz};DjP4Np zydVtbMP3jbJRzJVVF>r~hH!v{h29W`@iQb8dO;ZI10jXi_(1UVhH#yPk-V=jgwrI{ z`$8DSuaGd`2SSn`gwcGZAA~->5WXT|ERXYtaG8Xy{t(9TJ0z^|gD^G#f{8Z=K#28+ z@R)>&d{iKWHWKy(LU@5cBB3b&LUs^@biOkPKT-oBI0Zw<OEbIkg20ueWVNVDHLm-%WO$Y?f zUJ$O6P{8~4hH#pM`rZ(V_!Sc7hd@Z`1EHATiGt9lH-xQSA(YbVFXn@UH=-ew@o%Cb ztmp&bg%}8P__i1bv3()f8z5A2lL0~-3HwQ?=5j2ArhX92u@L6*y(Faehu|Iup@!$h zL3l{QNfH)t*LVm!20*Behp>>JfFLj8UI`!zpF?EjXNVT_phQqDuOV8(FAy!|eUm`T z_+p~v{0h;_Ji>^ur^69;gArj@@>>w(IvzI|w2C(nt>$-#>iLjl&>G%Mw3dHEw2qG& z0&3vfh}QE*L@GB8McB3|gxxA^rFz{!T-I`7Vs0ti>U`fjXx>gF!4dvc8MUv{E(cIAc!%~3eWVP_? zhOz_7bkz&Z9p%5-6iHemG!NL{3T>^XS)}d|?hA39aP)-zKxhp@^Md`g(AEph8}?nm z0Z@hJgYuUEO>3jjXpuh$XbLw7%@1Wy8LwmX{=89${wUL=(nU866$5}kp*4Z&y(PK=2-G8>JrIFhKv>deInIKF6CIXZAz>{(SAAeF_YN1as z`YxLcWCHY+vI1BM)B*JQv=pF^vFX4JfIhiypxc|kE#ObU=fIzV+ra+-e*xNnJHQvf z{{mkEUjbhOcY%Ad#C=Z5(ZAYqN|rO}9d-k-9#DZb0DVj41N3o6pTBlMM?e9_0bu}r zr9KY?0>MBpAOvs&+yNIZpO(K@=rfDHAuG9ktDN9YAJ0)hG!O$s0R4E;8F`62eK#9{ zWFQWR2NJlsRbHjgr*jH0fJa6Va5ac=x9*e&;j|9Ms*Z- zGB62v0muNR(Po_uWC59?{2dxjMR^MFe<m*bb%Hr~6VL>x0NGT(0cZp^3R~Bjg}qsD##<=hdh=Vk zW!z=?d^o@7!lGJ!JQTb4`E>0#WI*d5 zzTES1*Aym4ghqykVz0fL&i%VEPj)+$gl?b~;i0s# zcg)}}Zp=LZd$NAUHfu^)*3pX{dfLK<((f++3|>NE`(^O|@60@X^;5p3;~ZuuE@{pp zPyB=DunZpVgyi*e!Fk5J=Hn&nLZ8LbPYyR9>EB|k*&DB=Lfd~?2494>%$mWQoLIh? z2PVeEBc0jDKhSx%`wHi;OAE)6VjoJRWA=rdxxubbJv@2qq%H!v{VInWW6Ys9pl$xQN4xdPIvUx@f!c+=R9^Q?4v%=~8ZE7}W zI&bZYVHM8cPssi!Cq1TqR(Y>w#kyvP+p)Hok+eG3W^gNd{jp||zWUMTcIT#p)%Ayy zMbfyb^xi}Vl>B&igwb_9i!JWVJEp*_jeWs`PvR`Q$}^aZ8`E|Z=|`e}*>!v3?01^G z(Za{sZW_$!m+lzWzyjXn&Dxk!$ZLIIk1yo!`7o=me$e?_AGf&IcV?v{HQc;3({)As zH-1Q^v51%WvN19GQRwZWz~o5Pl}^G3riIl z8kBq;#SMOh5^|)Z|vsn5;@}|4i_kU4wcpu#bS}%GGokc9> zGMA4DYM1w(x!l^$?)30mZ6}|9U*<=H*x-%9%<8z~z9w#))lwJCcBOMuJo9ZiwtyMB u@WzeIi!aY)KHOme3u@W3kzMTMm|Rs;ZmtZQT{e?nc%AiV*}k34?C=i@Y6}wp diff --git a/packages/server/package.json b/packages/server/package.json index a2e5620..63f7dc3 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -11,7 +11,8 @@ "@todo-tests/common": "workspace:*", "@trpc/server": "^10.45.2", "effect": "^3.4.6", - "express": "^4.19.2" + "express": "^4.19.2", + "trpc-playground": "^1.0.4" }, "devDependencies": { "@types/express": "^4.17.21", diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index e389076..8c5bc2a 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -6,6 +6,7 @@ import { ServicesLive } from "./Services" import { TodoRepository, createDefaultTodos } from "./TodoRepository" import { ExpressApp } from "./express/ExpressApp" import { ExpressHTTPServer } from "./express/ExpressHTTPServer" +import { RPCPlayground } from "./rpc/RPCPlayground" import { RPCServer } from "./rpc/RPCServer" import { RPCProcedureBuilder } from "./rpc/procedures/RPCProcedureBuilder" import { TRPCBuilder } from "./trpc/TRPCBuilder" @@ -14,6 +15,7 @@ import { TRPCContextCreator } from "./trpc/TRPCContextCreator" const ServerLive = ExpressHTTPServer.Live.pipe( Layer.provide(RPCServer.Live), + Layer.provide(RPCPlayground.Dev), Layer.provide(RPCProcedureBuilder.Live), Layer.provide(TRPCBuilder.Live), Layer.provide(TRPCContextCreator.Live), diff --git a/packages/server/src/rpc/RPCPlayground.ts b/packages/server/src/rpc/RPCPlayground.ts new file mode 100644 index 0000000..221bf65 --- /dev/null +++ b/packages/server/src/rpc/RPCPlayground.ts @@ -0,0 +1,25 @@ +import { Config, Effect, Layer } from "effect" +import { expressHandler } from "trpc-playground/handlers/express" +import { ExpressApp } from "../express/ExpressApp" +import { appRouter } from "./routers" + + +export module RPCPlayground { + export const Live = Layer.empty + + export const Dev = Layer.effectDiscard(Effect.gen(function*() { + const app = yield* ExpressApp + const router = yield* appRouter + + const playgroundEndpoint = yield* Config.string("RPC_PANEL_ROOT").pipe(Config.withDefault("/rpc/playground")) + const trpcApiEndpoint = yield* Config.string("RPC_ROOT").pipe(Config.withDefault("/rpc")) + + app.use(playgroundEndpoint, + yield* Effect.promise(() => expressHandler({ + trpcApiEndpoint, + playgroundEndpoint, + router, + })) + ) + })) +}