- Add ws/ directory: server setup, auth, router, connections map - WebSocket auth rejects upgrade with 401 if no Better Auth session - Router parses WsClientMessageSchema, dispatches to handlers, two-layer error handling (AppError -> WsErrorSchema, unknown -> 500) - connections.ts: in-memory Map<lobbyId, Map<userId, WebSocket>> with addConnection, removeConnection, broadcastToLobby - LobbyGameStore interface + InMemoryLobbyGameStore implementation following existing GameSessionStore pattern - multiplayerGameService: generateMultiplayerQuestions() decoupled from single-player flow, hardcoded defaults en->it nouns easy 3 rounds - handleLobbyJoin and handleLobbyLeave implemented - WsErrorSchema added to shared schemas - server.ts switched to createServer + setupWebSocket
28 lines
669 B
JSON
28 lines
669 B
JSON
{
|
|
"name": "@lila/api",
|
|
"version": "1.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "pnpm --filter shared build && pnpm --filter db build && tsx watch src/server.ts",
|
|
"build": "tsc",
|
|
"start": "node dist/src/server.js",
|
|
"test": "vitest"
|
|
},
|
|
"dependencies": {
|
|
"@lila/db": "workspace:*",
|
|
"@lila/shared": "workspace:*",
|
|
"better-auth": "^1.6.2",
|
|
"cors": "^2.8.6",
|
|
"express": "^5.2.1",
|
|
"ws": "^8.20.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/cors": "^2.8.19",
|
|
"@types/express": "^5.0.6",
|
|
"@types/supertest": "^7.2.0",
|
|
"@types/ws": "^8.18.1",
|
|
"supertest": "^7.2.2",
|
|
"tsx": "^4.21.0"
|
|
}
|
|
}
|