0.1.17 #18

Merged
Thilawyn merged 37 commits from next into master 2024-09-07 20:56:30 +02:00
4 changed files with 34 additions and 6 deletions
Showing only changes of commit 7a0226cb23 - Show all commits

View File

@@ -1,12 +1,7 @@
import { Effect, type Cause } from "effect" import { Effect, type Cause } from "effect"
import { ImportError } from "../../ImportError" import { importTRPCServer } from "./importTRPCServer"
const importTRPCServer = Effect.tryPromise({
try: () => import("@trpc/server"),
catch: cause => new ImportError({ path: "@trpc/server", cause }),
})
export const createTRCPErrorMapper = importTRPCServer.pipe(Effect.map(({ TRPCError }) => export const createTRCPErrorMapper = importTRPCServer.pipe(Effect.map(({ TRPCError }) =>
<A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.sandbox(effect).pipe( <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.sandbox(effect).pipe(
Effect.catchTags({ Effect.catchTags({

View File

@@ -0,0 +1,8 @@
import { Effect } from "effect"
import { ImportError } from "../../ImportError"
export const importTRPCServer = Effect.tryPromise({
try: () => import("@trpc/server"),
catch: cause => new ImportError({ path: "@trpc/server", cause }),
})

View File

@@ -1,3 +1,4 @@
export * from "./middlewares"
export * as TRPCBuilder from "./TRPCBuilder" export * as TRPCBuilder from "./TRPCBuilder"
export * as TRPCContext from "./TRPCContext" export * as TRPCContext from "./TRPCContext"
export * as TRPCContextCreator from "./TRPCContextCreator" export * as TRPCContextCreator from "./TRPCContextCreator"

View File

@@ -0,0 +1,24 @@
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 backend is supported by this procedure",
})
}),
)
)))