diff --git a/src/Layers/trpc/middlewares.ts b/src/Layers/trpc/middlewares.ts index c63b0d1..fcd57e3 100644 --- a/src/Layers/trpc/middlewares.ts +++ b/src/Layers/trpc/middlewares.ts @@ -17,7 +17,27 @@ export const ExpressOnly = importTRPCServer.pipe(Effect.map(({ Match.orElse(() => { throw new TRPCError({ code: "BAD_REQUEST", - message: "Only Express backend is supported by this procedure", + message: "Only Express transport is supported by this procedure", + }) + }), + ) +))) + +export const WebSocketOnly = importTRPCServer.pipe(Effect.map(({ + experimental_standaloneMiddleware, + TRPCError, +}) => experimental_standaloneMiddleware<{ + ctx: { readonly transaction: TRPCContextTransaction } +}>().create(opts => + Match.value(opts.ctx.transaction).pipe( + Match.tag("WebSocket", transaction => + opts.next({ ctx: { transaction } }) + ), + + Match.orElse(() => { + throw new TRPCError({ + code: "BAD_REQUEST", + message: "Only WebSocket transport is supported by this procedure", }) }), )