import { Context, Effect, Layer } from "effect" import type { ImportError } from "../ImportError" import { type TRPCContext } from "./TRPCContext" import { importTRPCServer } from "./importTRPCServer" const createTRPC = () => importTRPCServer.pipe(Effect.map(({ initTRPC }) => initTRPC.context>().create() )) export const make = (): { readonly TRPCBuilder: Context.TagClass>>> readonly TRPCBuilderLive: Layer.Layer< InstanceType>>>>, ImportError, never > } => { class TRPCBuilder extends Context.Tag("@thilalib/TRPC/TRPCBuilder")>> >() {} const TRPCBuilderLive = Layer.effect(TRPCBuilder, createTRPC()) return { TRPCBuilder, TRPCBuilderLive } }