effect(server): typed errors in session/sync handlers, fix concurrency (#27146)

This commit is contained in:
Kit Langton
2026-05-13 20:31:27 -04:00
committed by GitHub
parent 42e6b7d541
commit 3f33be1928
3 changed files with 13 additions and 11 deletions
@@ -36,6 +36,12 @@ import {
} from "../groups/session"
import * as SessionError from "./session-errors"
const tryParseJson = (text: string) =>
Effect.try({
try: () => JSON.parse(text) as unknown,
catch: () => new HttpApiError.BadRequest({}),
})
export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session", (handlers) =>
Effect.gen(function* () {
const session = yield* Session.Service
@@ -160,10 +166,7 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
const body = yield* Effect.orDie(ctx.request.text)
if (body.trim().length === 0) return yield* create({})
const json = yield* Effect.try({
try: () => JSON.parse(body) as unknown,
catch: () => new HttpApiError.BadRequest({}),
})
const json = yield* tryParseJson(body)
const payload = yield* Schema.decodeUnknownEffect(Session.CreateInput)(json).pipe(
Effect.mapError(() => new HttpApiError.BadRequest({})),
)
@@ -211,10 +214,7 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session",
const body = yield* Effect.orDie(ctx.request.text)
if (body.trim().length === 0) return yield* fork({ params: ctx.params })
const json = yield* Effect.try({
try: () => JSON.parse(body) as unknown,
catch: () => new HttpApiError.BadRequest({}),
})
const json = yield* tryParseJson(body)
const payload = yield* Schema.decodeUnknownEffect(ForkPayload)(json).pipe(
Effect.mapError(() => new HttpApiError.BadRequest({})),
)