level-up/backend/trpc/index.ts
Moritz Ruth 88f0632194
All checks were successful
Build / build (push) Successful in 1m14s
Update dependencies, containerize, add build workflow
2025-03-03 00:35:21 +01:00

29 lines
No EOL
938 B
TypeScript

import { t } from "./base"
import { playerRouter } from "./player"
import { observable } from "@trpc/server/observable"
import type { GameEvent } from "../../shared/gameEvents"
import { directorRouter } from "./director"
import { game } from "../game"
export const appRouter = t.router({
player: playerRouter,
director: directorRouter,
join: t.procedure
.subscription(({ ctx }) => {
return observable<GameEvent>(emit => {
const handleGameEvent = (event: GameEvent) => emit.next(event)
const handleDestroyed = () => setTimeout(() => emit.complete(), 500)
game.on("game-event", handleGameEvent)
game.getInitialStateEvents().forEach(event => emit.next(event))
return () => {
game.off("game-event", handleGameEvent)
}
})
}),
})
export type AppRouter = typeof appRouter