diff --git a/packages/server/src/express/ExpressApp.ts b/packages/server/src/express/ExpressApp.ts index 7750610..321ab08 100644 --- a/packages/server/src/express/ExpressApp.ts +++ b/packages/server/src/express/ExpressApp.ts @@ -1,8 +1,8 @@ import { Context, Layer } from "effect" -import express from "express" +import express, { type Express } from "express" -export class ExpressApp extends Context.Tag("Express")>() {} +export class ExpressApp extends Context.Tag("Express")() {} export module ExpressApp { export const Live = Layer.sync(ExpressApp, () => express()) diff --git a/packages/server/src/rpc/RPCServer.ts b/packages/server/src/rpc/RPCServer.ts index 1cda9d8..c7f8af7 100644 --- a/packages/server/src/rpc/RPCServer.ts +++ b/packages/server/src/rpc/RPCServer.ts @@ -1,19 +1,21 @@ import { createExpressMiddleware } from "@trpc/server/adapters/express" import { Config, Effect, Layer } from "effect" import { ExpressApp } from "../express/ExpressApp" -import { createTRPCContext } from "../trpc/context" +import { CreateTRPCContext } from "../trpc/CreateTRPCContext" import { router } from "./routers" -export const RPCServerLive = Layer.effectDiscard(Effect.gen(function*() { - const app = yield* ExpressApp +export module RPCServer { + export const Live = Layer.effectDiscard(Effect.gen(function*() { + const app = yield* ExpressApp - app.use( - yield* Config.string("RPC_ROOT").pipe(Config.withDefault("/rpc")), + app.use( + yield* Config.string("RPC_ROOT").pipe(Config.withDefault("/rpc")), - createExpressMiddleware({ - router: yield* router, - createContext: createTRPCContext, - }), - ) -})) + createExpressMiddleware({ + router: yield* router, + createContext: yield* CreateTRPCContext, + }), + ) + })) +} diff --git a/packages/server/src/trpc/CreateTRPCContext.ts b/packages/server/src/trpc/CreateTRPCContext.ts new file mode 100644 index 0000000..078be25 --- /dev/null +++ b/packages/server/src/trpc/CreateTRPCContext.ts @@ -0,0 +1,12 @@ +import type { CreateExpressContextOptions } from "@trpc/server/adapters/express" +import { Context, Layer } from "effect" +import type { TRPCContext } from "./TRPCContext" + + +export class CreateTRPCContext extends Context.Tag("CreateTRPCContext") TRPCContext +>() {} + +export module CreateTRPCContext { + export const Live = Layer.sync(CreateTRPCContext, () => ({ req }) => ({ req })) +} diff --git a/packages/server/src/trpc/TRPCBuilder.ts b/packages/server/src/trpc/TRPCBuilder.ts index c405117..90712c0 100644 --- a/packages/server/src/trpc/TRPCBuilder.ts +++ b/packages/server/src/trpc/TRPCBuilder.ts @@ -1,6 +1,6 @@ import { initTRPC } from "@trpc/server" import { Context, Layer } from "effect" -import type { TRPCContext } from "./context" +import type { TRPCContext } from "./TRPCContext" const createTRPC = () => initTRPC.context().create() diff --git a/packages/server/src/trpc/TRPCContext.ts b/packages/server/src/trpc/TRPCContext.ts new file mode 100644 index 0000000..1c47ef8 --- /dev/null +++ b/packages/server/src/trpc/TRPCContext.ts @@ -0,0 +1,6 @@ +import type { Request } from "express" + + +export interface TRPCContext { + req: Request +} diff --git a/packages/server/src/trpc/context.ts b/packages/server/src/trpc/context.ts deleted file mode 100644 index ea52be1..0000000 --- a/packages/server/src/trpc/context.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { CreateExpressContextOptions } from "@trpc/server/adapters/express" - - -export const createTRPCContext = ({ req }: CreateExpressContextOptions) => ({ req }) -export type TRPCContext = Awaited>