0.1.17 #18

Merged
Thilawyn merged 37 commits from next into master 2024-09-07 20:56:30 +02:00
2 changed files with 21 additions and 12 deletions
Showing only changes of commit 8dc794635e - Show all commits

View File

@@ -1,18 +1,18 @@
import { initTRPC } from "@trpc/server"
import { Context, Layer } from "effect"
import { Context, Effect, Layer } from "effect"
import { type TRPCContext } from "./TRPCContext"
import { importTRPCServer } from "./importTRPCServer"
const createTRPC = <R>() => initTRPC.context<TRPCContext<R>>().create()
export class TRPCUnknownBuilder extends Context.Tag("@thilalib/TRPC/TRPCBuilder")<TRPCUnknownBuilder,
ReturnType<typeof createTRPC<unknown>>
>() {}
const createTRPC = <R>() => importTRPCServer.pipe(Effect.map(({ initTRPC }) =>
initTRPC.context<TRPCContext<R>>().create()
))
export const make = <R>() => {
class TRPCBuilder extends Context.Tag("@thilalib/TRPC/TRPCBuilder")<TRPCBuilder, ReturnType<typeof createTRPC<R>>>() {}
const TRPCBuilderLive = Layer.sync(TRPCBuilder, createTRPC)
class TRPCBuilder extends Context.Tag("@thilalib/TRPC/TRPCBuilder")<TRPCBuilder,
Effect.Effect.Success<ReturnType<typeof createTRPC<R>>>
>() {}
const TRPCBuilderLive = Layer.effect(TRPCBuilder, createTRPC())
return { TRPCBuilder, TRPCBuilderLive }
}

View File

@@ -1,9 +1,17 @@
import { Config, Effect, Layer } from "effect"
import * as TRPC from "."
import { JSONWebToken } from ".."
import { ExpressApp, ExpressNodeHTTPServer } from "../express"
type Services = never
// Context available to the router procedures
type Services =
| JSONWebToken.JSONWebToken
const ServicesLive = Layer.empty.pipe(
Layer.provideMerge(JSONWebToken.JSONWebTokenLive)
)
const { TRPCContextCreator, TRPCContextCreatorLive } = TRPC.TRPCContextCreator.make<Services>()
const { TRPCBuilder, TRPCBuilderLive } = TRPC.TRPCBuilder.make<Services>()
@@ -14,9 +22,9 @@ const router = TRPCBuilder.pipe(Effect.map(t => t.router({
Effect.succeed("pong")
)),
})))
const { TRPCRouter, TRPCRouterLive } = TRPC.TRPCRouter.make(router)
const { TRPCWebSocketServer, TRPCWebSocketServerLive } = TRPC.TRPCWebSocketServer.make(TRPCRouter)
@@ -43,6 +51,7 @@ await Effect.gen(function*() {
return yield* Layer.launch(ServerLive)
}).pipe(
Effect.provide(ServicesLive),
Effect.scoped,
Effect.runPromise,
)