0.1.17 (#18)
Co-authored-by: Julien Valverdé <julien.valverde@mailo.com> Reviewed-on: #18
This commit was merged in pull request #18.
This commit is contained in:
44
src/TRPC/middlewares.ts
Normal file
44
src/TRPC/middlewares.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { Effect, Match } from "effect"
|
||||
import type { TRPCContextTransaction } from "./TRPCContext"
|
||||
import { importTRPCServer } from "./importTRPCServer"
|
||||
|
||||
|
||||
export const ExpressOnly = importTRPCServer.pipe(Effect.map(({
|
||||
experimental_standaloneMiddleware,
|
||||
TRPCError,
|
||||
}) => experimental_standaloneMiddleware<{
|
||||
ctx: { readonly transaction: TRPCContextTransaction }
|
||||
}>().create(opts =>
|
||||
Match.value(opts.ctx.transaction).pipe(
|
||||
Match.tag("Express", transaction =>
|
||||
opts.next({ ctx: { transaction } })
|
||||
),
|
||||
|
||||
Match.orElse(() => {
|
||||
throw new TRPCError({
|
||||
code: "BAD_REQUEST",
|
||||
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",
|
||||
})
|
||||
}),
|
||||
)
|
||||
)))
|
||||
Reference in New Issue
Block a user