0.1.20 #21

Merged
Thilawyn merged 3 commits from next into master 2024-09-09 04:05:15 +02:00
6 changed files with 41 additions and 26 deletions

BIN
bun.lockb

Binary file not shown.

View File

@@ -1,6 +1,6 @@
{ {
"name": "@thilawyn/thilalib", "name": "@thilawyn/thilalib",
"version": "0.1.19", "version": "0.1.20",
"type": "module", "type": "module",
"files": [ "files": [
"./dist" "./dist"
@@ -53,7 +53,7 @@
}, },
"dependencies": { "dependencies": {
"remeda": "^2.12.0", "remeda": "^2.12.0",
"type-fest": "^4.26.0" "type-fest": "^4.26.1"
}, },
"devDependencies": { "devDependencies": {
"@effect/schema": "^0.72.3", "@effect/schema": "^0.72.3",

View File

@@ -16,11 +16,22 @@ const { TRPCContextCreator, TRPCContextCreatorLive } = TRPC.TRPCContextCreator.m
const { TRPCBuilder, TRPCBuilderLive } = TRPC.TRPCBuilder.make<Services>() const { TRPCBuilder, TRPCBuilderLive } = TRPC.TRPCBuilder.make<Services>()
const router = TRPCBuilder.pipe(Effect.map(t => t.router({ const router = Effect.gen(function*() {
ping: t.procedure.query(({ ctx }) => ctx.run( const t = yield* TRPCBuilder
Effect.succeed("pong")
)), return t.router({
}))) ping: t.procedure.query(({ ctx }) => ctx.run(
Effect.succeed("pong")
)),
expressOnlyProcedure: t.procedure
.use(yield* TRPC.ExpressOnly)
.query(({ ctx }) => ctx.run(Effect.gen(function*() {
ctx.transaction
}))),
})
})
const { TRPCRouter, TRPCRouterLive } = TRPC.TRPCRouter.make(router) const { TRPCRouter, TRPCRouterLive } = TRPC.TRPCRouter.make(router)

View File

@@ -23,7 +23,7 @@ export const DecodeInput = <A, I>(
) )
return experimental_standaloneMiddleware<{ return experimental_standaloneMiddleware<{
ctx: TRPCContextRuntime<any> ctx: TRPCContextRuntime<never>
input: I input: I
}>().create( }>().create(
async ({ ctx, input, next }) => next({ async ({ ctx, input, next }) => next({

View File

@@ -9,14 +9,16 @@ export const ExpressOnly = importTRPCServer.pipe(Effect.map(({
}) => experimental_standaloneMiddleware<{ }) => experimental_standaloneMiddleware<{
ctx: TRPCContextTransaction ctx: TRPCContextTransaction
}>().create(({ ctx, next }) => next({ }>().create(({ ctx, next }) => next({
ctx: Match.value(ctx.transaction).pipe( ctx: {
Match.tag("Express", identity), transaction: Match.value(ctx.transaction).pipe(
Match.tag("Express", identity),
Match.orElse(() => { Match.orElse(() => {
throw new TRPCError({ throw new TRPCError({
code: "BAD_REQUEST", code: "BAD_REQUEST",
message: "Only Express transport is supported by this procedure", message: "Only Express transport is supported by this procedure",
}) })
}), }),
) )
}
})))) }))))

View File

@@ -9,14 +9,16 @@ export const WebSocketOnly = importTRPCServer.pipe(Effect.map(({
}) => experimental_standaloneMiddleware<{ }) => experimental_standaloneMiddleware<{
ctx: TRPCContextTransaction ctx: TRPCContextTransaction
}>().create(({ ctx, next }) => next({ }>().create(({ ctx, next }) => next({
ctx: Match.value(ctx.transaction).pipe( ctx: {
Match.tag("WebSocket", identity), transaction: Match.value(ctx.transaction).pipe(
Match.tag("WebSocket", identity),
Match.orElse(() => { Match.orElse(() => {
throw new TRPCError({ throw new TRPCError({
code: "BAD_REQUEST", code: "BAD_REQUEST",
message: "Only WebSocket transport is supported by this procedure", message: "Only WebSocket transport is supported by this procedure",
}) })
}), }),
) )
}
})))) }))))