@hellacardgames/speed 0.5.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +2 -2
- package/dist/client/index.d.cts.map +1 -1
- package/dist/client/index.d.mts +2 -2
- package/dist/client/index.d.mts.map +1 -1
- package/dist/client/index.mjs.map +1 -1
- package/dist/index-BRtLpRz1.d.mts +125 -0
- package/dist/index-BRtLpRz1.d.mts.map +1 -0
- package/dist/index-BvZyhFek.d.cts +125 -0
- package/dist/index-BvZyhFek.d.cts.map +1 -0
- package/dist/{index-BilCO_4a.d.cts → index-xmcja9Bl.d.cts} +91 -60
- package/dist/index-xmcja9Bl.d.cts.map +1 -0
- package/dist/{index-BilCO_4a.d.mts → index-xmcja9Bl.d.mts} +91 -60
- package/dist/index-xmcja9Bl.d.mts.map +1 -0
- package/dist/manager/index.cjs +2 -12
- package/dist/manager/index.d.cts +2 -2
- package/dist/manager/index.d.mts +2 -2
- package/dist/manager/index.mjs +2 -2
- package/dist/manager-8x5AFyzq.mjs +790 -0
- package/dist/manager-8x5AFyzq.mjs.map +1 -0
- package/dist/manager-BxLMVu_o.cjs +795 -0
- package/dist/manager-BxLMVu_o.cjs.map +1 -0
- package/dist/server/index.cjs +141 -157
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +3 -3
- package/dist/server/index.d.mts +3 -3
- package/dist/server/index.mjs +141 -157
- package/dist/server/index.mjs.map +1 -1
- package/package.json +2 -2
- package/dist/index-BilCO_4a.d.cts.map +0 -1
- package/dist/index-BilCO_4a.d.mts.map +0 -1
- package/dist/index-DSPZZlhq.d.cts +0 -143
- package/dist/index-DSPZZlhq.d.cts.map +0 -1
- package/dist/index-S-oO1z9X.d.mts +0 -143
- package/dist/index-S-oO1z9X.d.mts.map +0 -1
- package/dist/manager-CPmezdJa.mjs +0 -834
- package/dist/manager-CPmezdJa.mjs.map +0 -1
- package/dist/manager-DErQ_XUq.cjs +0 -899
- package/dist/manager-DErQ_XUq.cjs.map +0 -1
package/dist/server/index.mjs
CHANGED
|
@@ -1,40 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as Manager } from "../manager-8x5AFyzq.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
//#region src/server/
|
|
4
|
-
|
|
5
|
-
return createGame$1(userId, username);
|
|
6
|
-
}
|
|
7
|
-
//#endregion
|
|
8
|
-
//#region src/server/actions/drawCard.ts
|
|
9
|
-
const inputSchema$8 = z.object({
|
|
3
|
+
//#region src/server/Server.ts
|
|
4
|
+
const drawCardInputSchema = z.object({
|
|
10
5
|
gameId: z.string(),
|
|
11
6
|
playerId: z.string()
|
|
12
7
|
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
13
|
-
|
|
14
|
-
const parseResult = inputSchema$8.safeParse(input);
|
|
15
|
-
if (!parseResult.success) return {
|
|
16
|
-
success: false,
|
|
17
|
-
error: "invalidInput"
|
|
18
|
-
};
|
|
19
|
-
return drawCard$1(...parseResult.data);
|
|
20
|
-
}
|
|
21
|
-
//#endregion
|
|
22
|
-
//#region src/server/actions/getClientStateAndClearEvents.ts
|
|
23
|
-
const inputSchema$7 = z.object({
|
|
8
|
+
const getClientStateAndClearEventsInputSchema = z.object({
|
|
24
9
|
gameId: z.string(),
|
|
25
10
|
playerId: z.string()
|
|
26
11
|
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
27
|
-
|
|
28
|
-
const parseResult = inputSchema$7.safeParse(input);
|
|
29
|
-
if (!parseResult.success) return {
|
|
30
|
-
success: false,
|
|
31
|
-
error: "invalidInput"
|
|
32
|
-
};
|
|
33
|
-
return getClientStateAndClearEvents$1(...parseResult.data);
|
|
34
|
-
}
|
|
35
|
-
//#endregion
|
|
36
|
-
//#region src/server/actions/getEventsAndClearAcknowledged.ts
|
|
37
|
-
const inputSchema$6 = z.object({
|
|
12
|
+
const getEventsAndClearAcknowledgedInputSchema = z.object({
|
|
38
13
|
gameId: z.string(),
|
|
39
14
|
playerId: z.string(),
|
|
40
15
|
lastReadId: z.string().nullable()
|
|
@@ -43,47 +18,12 @@ const inputSchema$6 = z.object({
|
|
|
43
18
|
playerId,
|
|
44
19
|
lastReadId
|
|
45
20
|
]);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (!parseResult.success) return {
|
|
49
|
-
success: false,
|
|
50
|
-
error: "invalidInput"
|
|
51
|
-
};
|
|
52
|
-
return getEventsAndClearAcknowledged$1(...parseResult.data);
|
|
53
|
-
}
|
|
54
|
-
//#endregion
|
|
55
|
-
//#region src/server/actions/getJoinableGames.ts
|
|
56
|
-
function getJoinableGames() {
|
|
57
|
-
return getJoinableGames$1();
|
|
58
|
-
}
|
|
59
|
-
//#endregion
|
|
60
|
-
//#region src/server/actions/joinGame.ts
|
|
61
|
-
const inputSchema$5 = z.object({ gameId: z.string() }).transform(({ gameId }) => [gameId]);
|
|
62
|
-
function joinGame(input, userId, username) {
|
|
63
|
-
const parseResult = inputSchema$5.safeParse(input);
|
|
64
|
-
if (!parseResult.success) return {
|
|
65
|
-
success: false,
|
|
66
|
-
error: "invalidInput"
|
|
67
|
-
};
|
|
68
|
-
return joinGame$1(...parseResult.data, userId, username);
|
|
69
|
-
}
|
|
70
|
-
//#endregion
|
|
71
|
-
//#region src/server/actions/leaveGame.ts
|
|
72
|
-
const inputSchema$4 = z.object({
|
|
21
|
+
const joinGameInputSchema = z.object({ gameId: z.string() }).transform(({ gameId }) => [gameId]);
|
|
22
|
+
const leaveGameInputSchema = z.object({
|
|
73
23
|
gameId: z.string(),
|
|
74
24
|
playerId: z.string()
|
|
75
25
|
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
76
|
-
|
|
77
|
-
const parseResult = inputSchema$4.safeParse(input);
|
|
78
|
-
if (!parseResult.success) return {
|
|
79
|
-
success: false,
|
|
80
|
-
error: "invalidInput"
|
|
81
|
-
};
|
|
82
|
-
return leaveGame$1(...parseResult.data);
|
|
83
|
-
}
|
|
84
|
-
//#endregion
|
|
85
|
-
//#region src/server/actions/playCard.ts
|
|
86
|
-
const inputSchema$3 = z.object({
|
|
26
|
+
const playCardInputSchema = z.object({
|
|
87
27
|
gameId: z.string(),
|
|
88
28
|
playerId: z.string(),
|
|
89
29
|
cardId: z.string(),
|
|
@@ -94,31 +34,11 @@ const inputSchema$3 = z.object({
|
|
|
94
34
|
cardId,
|
|
95
35
|
isForOtherPlayerPile
|
|
96
36
|
]);
|
|
97
|
-
|
|
98
|
-
const parseResult = inputSchema$3.safeParse(input);
|
|
99
|
-
if (!parseResult.success) return {
|
|
100
|
-
success: false,
|
|
101
|
-
error: "invalidInput"
|
|
102
|
-
};
|
|
103
|
-
return playCard$1(...parseResult.data);
|
|
104
|
-
}
|
|
105
|
-
//#endregion
|
|
106
|
-
//#region src/server/actions/reportNoPlayableCards.ts
|
|
107
|
-
const inputSchema$2 = z.object({
|
|
37
|
+
const reportNoPlayableCardsInputSchema = z.object({
|
|
108
38
|
gameId: z.string(),
|
|
109
39
|
playerId: z.string()
|
|
110
40
|
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
111
|
-
|
|
112
|
-
const parseResult = inputSchema$2.safeParse(input);
|
|
113
|
-
if (!parseResult.success) return {
|
|
114
|
-
success: false,
|
|
115
|
-
error: "invalidInput"
|
|
116
|
-
};
|
|
117
|
-
return reportNoPlayableCards$1(...parseResult.data);
|
|
118
|
-
}
|
|
119
|
-
//#endregion
|
|
120
|
-
//#region src/server/actions/sendChat.ts
|
|
121
|
-
const inputSchema$1 = z.object({
|
|
41
|
+
const sendChatInputSchema = z.object({
|
|
122
42
|
gameId: z.string(),
|
|
123
43
|
playerId: z.string(),
|
|
124
44
|
text: z.string()
|
|
@@ -127,77 +47,141 @@ const inputSchema$1 = z.object({
|
|
|
127
47
|
playerId,
|
|
128
48
|
text
|
|
129
49
|
]);
|
|
130
|
-
|
|
131
|
-
const parseResult = inputSchema$1.safeParse(input);
|
|
132
|
-
if (!parseResult.success) return {
|
|
133
|
-
success: false,
|
|
134
|
-
error: "invalidInput"
|
|
135
|
-
};
|
|
136
|
-
return sendChat$1(...parseResult.data);
|
|
137
|
-
}
|
|
138
|
-
//#endregion
|
|
139
|
-
//#region src/server/actions/startGame.ts
|
|
140
|
-
const inputSchema = z.object({
|
|
50
|
+
const startGameInputSchema = z.object({
|
|
141
51
|
gameId: z.string(),
|
|
142
52
|
playerId: z.string()
|
|
143
53
|
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
}
|
|
195
|
-
{
|
|
196
|
-
|
|
197
|
-
|
|
54
|
+
var Server = class {
|
|
55
|
+
manager;
|
|
56
|
+
actions = [
|
|
57
|
+
{
|
|
58
|
+
path: "/createGame",
|
|
59
|
+
action: this.createGame.bind(this)
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
path: "/drawCard",
|
|
63
|
+
action: this.drawCard.bind(this)
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
path: "/getClientStateAndClearEvents",
|
|
67
|
+
action: this.getClientStateAndClearEvents.bind(this)
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
path: "/getEventsAndClearAcknowledged",
|
|
71
|
+
action: this.getEventsAndClearAcknowledged.bind(this)
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
path: "/getJoinableGames",
|
|
75
|
+
action: this.getJoinableGames.bind(this)
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
path: "/joinGame",
|
|
79
|
+
action: this.joinGame.bind(this)
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
path: "/leaveGame",
|
|
83
|
+
action: this.leaveGame.bind(this)
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
path: "/playCard",
|
|
87
|
+
action: this.playCard.bind(this)
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
path: "/reportNoPlayableCards",
|
|
91
|
+
action: this.reportNoPlayableCards.bind(this)
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
path: "/sendChat",
|
|
95
|
+
action: this.sendChat.bind(this)
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
path: "/startGame",
|
|
99
|
+
action: this.startGame.bind(this)
|
|
100
|
+
}
|
|
101
|
+
];
|
|
102
|
+
constructor(...args) {
|
|
103
|
+
this.manager = new Manager(...args);
|
|
104
|
+
}
|
|
105
|
+
createGame(userId, username) {
|
|
106
|
+
return this.manager.createGame(userId, username);
|
|
107
|
+
}
|
|
108
|
+
drawCard(input) {
|
|
109
|
+
const parseResult = drawCardInputSchema.safeParse(input);
|
|
110
|
+
if (!parseResult.success) return {
|
|
111
|
+
success: false,
|
|
112
|
+
error: "invalidInput"
|
|
113
|
+
};
|
|
114
|
+
return this.manager.drawCard(...parseResult.data);
|
|
115
|
+
}
|
|
116
|
+
getClientStateAndClearEvents(input) {
|
|
117
|
+
const parseResult = getClientStateAndClearEventsInputSchema.safeParse(input);
|
|
118
|
+
if (!parseResult.success) return {
|
|
119
|
+
success: false,
|
|
120
|
+
error: "invalidInput"
|
|
121
|
+
};
|
|
122
|
+
return this.manager.getClientStateAndClearEvents(...parseResult.data);
|
|
123
|
+
}
|
|
124
|
+
getEventsAndClearAcknowledged(input) {
|
|
125
|
+
const parseResult = getEventsAndClearAcknowledgedInputSchema.safeParse(input);
|
|
126
|
+
if (!parseResult.success) return {
|
|
127
|
+
success: false,
|
|
128
|
+
error: "invalidInput"
|
|
129
|
+
};
|
|
130
|
+
return this.manager.getEventsAndClearAcknowledged(...parseResult.data);
|
|
131
|
+
}
|
|
132
|
+
getJoinableGames() {
|
|
133
|
+
return this.manager.getJoinableGames();
|
|
134
|
+
}
|
|
135
|
+
joinGame(input, userId, username) {
|
|
136
|
+
const parseResult = joinGameInputSchema.safeParse(input);
|
|
137
|
+
if (!parseResult.success) return {
|
|
138
|
+
success: false,
|
|
139
|
+
error: "invalidInput"
|
|
140
|
+
};
|
|
141
|
+
return this.manager.joinGame(...parseResult.data, userId, username);
|
|
142
|
+
}
|
|
143
|
+
leaveGame(input) {
|
|
144
|
+
const parseResult = leaveGameInputSchema.safeParse(input);
|
|
145
|
+
if (!parseResult.success) return {
|
|
146
|
+
success: false,
|
|
147
|
+
error: "invalidInput"
|
|
148
|
+
};
|
|
149
|
+
return this.manager.leaveGame(...parseResult.data);
|
|
150
|
+
}
|
|
151
|
+
playCard(input) {
|
|
152
|
+
const parseResult = playCardInputSchema.safeParse(input);
|
|
153
|
+
if (!parseResult.success) return {
|
|
154
|
+
success: false,
|
|
155
|
+
error: "invalidInput"
|
|
156
|
+
};
|
|
157
|
+
return this.manager.playCard(...parseResult.data);
|
|
158
|
+
}
|
|
159
|
+
reportNoPlayableCards(input) {
|
|
160
|
+
const parseResult = reportNoPlayableCardsInputSchema.safeParse(input);
|
|
161
|
+
if (!parseResult.success) return {
|
|
162
|
+
success: false,
|
|
163
|
+
error: "invalidInput"
|
|
164
|
+
};
|
|
165
|
+
return this.manager.reportNoPlayableCards(...parseResult.data);
|
|
166
|
+
}
|
|
167
|
+
sendChat(input) {
|
|
168
|
+
const parseResult = sendChatInputSchema.safeParse(input);
|
|
169
|
+
if (!parseResult.success) return {
|
|
170
|
+
success: false,
|
|
171
|
+
error: "invalidInput"
|
|
172
|
+
};
|
|
173
|
+
return this.manager.sendChat(...parseResult.data);
|
|
174
|
+
}
|
|
175
|
+
startGame(input) {
|
|
176
|
+
const parseResult = startGameInputSchema.safeParse(input);
|
|
177
|
+
if (!parseResult.success) return {
|
|
178
|
+
success: false,
|
|
179
|
+
error: "invalidInput"
|
|
180
|
+
};
|
|
181
|
+
return this.manager.startGame(...parseResult.data);
|
|
198
182
|
}
|
|
199
|
-
|
|
183
|
+
};
|
|
200
184
|
//#endregion
|
|
201
|
-
export {
|
|
185
|
+
export { Server };
|
|
202
186
|
|
|
203
187
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["doCreateGame","inputSchema","doDrawCard","inputSchema","doGetClientStateAndClearEvents","inputSchema","doGetEventsAndClearAcknowledged","doGetJoinableGames","inputSchema","doJoinGame","inputSchema","doLeaveGame","inputSchema","doPlayCard","inputSchema","doReportNoPlayableCards","inputSchema","doSendChat","doStartGame"],"sources":["../../src/server/actions/createGame.ts","../../src/server/actions/drawCard.ts","../../src/server/actions/getClientStateAndClearEvents.ts","../../src/server/actions/getEventsAndClearAcknowledged.ts","../../src/server/actions/getJoinableGames.ts","../../src/server/actions/joinGame.ts","../../src/server/actions/leaveGame.ts","../../src/server/actions/playCard.ts","../../src/server/actions/reportNoPlayableCards.ts","../../src/server/actions/sendChat.ts","../../src/server/actions/startGame.ts","../../src/server/index.ts"],"sourcesContent":["import { createGame as doCreateGame } from \"../../manager/index.js\";\n\nexport type CreateGameResult =\n | {\n readonly success: true;\n readonly gameId: string;\n readonly playerId: string;\n }\n | {\n readonly success: false;\n readonly error: \"maxGamesReached\";\n };\n\nexport function createGame(userId: string, username: string): CreateGameResult {\n return doCreateGame(userId, username);\n}\n","import { z } from \"zod\";\nimport { drawCard as doDrawCard } from \"../../manager/index.js\";\n\nexport type DrawCardResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"playerNotFound\"\n | \"invalidStatus\"\n | \"canPlayAtNotReached\"\n | \"handFull\"\n | \"drawPileEmpty\";\n };\n\nconst inputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nexport function drawCard(input: unknown): DrawCardResult {\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return doDrawCard(...parseResult.data);\n}\n","import { z } from \"zod\";\nimport { getClientStateAndClearEvents as doGetClientStateAndClearEvents } from \"../../manager/index.js\";\nimport type { ClientState } from \"../../manager/index.js\";\n\nexport type GetClientStateAndClearEventsResult =\n | {\n readonly success: true;\n readonly state: ClientState;\n }\n | {\n readonly success: false;\n readonly error: \"invalidInput\" | \"gameNotFound\" | \"playerNotFound\";\n };\n\nconst inputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nexport function getClientStateAndClearEvents(\n input: unknown,\n): GetClientStateAndClearEventsResult {\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return doGetClientStateAndClearEvents(...parseResult.data);\n}\n","import { z } from \"zod\";\nimport { getEventsAndClearAcknowledged as doGetEventsAndClearAcknowledged } from \"../../manager/index.js\";\nimport type { GameEvent } from \"../../manager/index.js\";\n\nexport type GetEventsAndClearAcknowledgedResult =\n | {\n readonly success: true;\n readonly events: readonly GameEvent[];\n }\n | {\n readonly success: false;\n readonly error: \"invalidInput\" | \"gameNotFound\" | \"playerNotFound\";\n };\n\nconst inputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n lastReadId: z.string().nullable(),\n })\n .transform(\n ({ gameId, playerId, lastReadId }) =>\n [gameId, playerId, lastReadId] as const,\n );\n\nexport function getEventsAndClearAcknowledged(\n input: unknown,\n): GetEventsAndClearAcknowledgedResult {\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return doGetEventsAndClearAcknowledged(...parseResult.data);\n}\n","import { getJoinableGames as doGetJoinableGames } from \"../../manager/index.js\";\n\nexport type GetJoinableGamesResult = {\n readonly games: readonly {\n readonly id: string;\n readonly numPlayers: number;\n }[];\n};\n\nexport function getJoinableGames(): GetJoinableGamesResult {\n return doGetJoinableGames();\n}\n","import { z } from \"zod\";\nimport { joinGame as doJoinGame } from \"../../manager/index.js\";\n\nexport type JoinGameResult =\n | {\n readonly success: true;\n readonly playerId: string;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"invalidStatus\"\n | \"maxPlayersReached\"\n | \"alreadyInGame\";\n };\n\nconst inputSchema = z\n .object({\n gameId: z.string(),\n })\n .transform(({ gameId }) => [gameId] as const);\n\nexport function joinGame(\n input: unknown,\n userId: string,\n username: string,\n): JoinGameResult {\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return doJoinGame(...parseResult.data, userId, username);\n}\n","import { z } from \"zod\";\nimport { leaveGame as doLeaveGame } from \"../../manager/index.js\";\n\nexport type LeaveGameResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error: \"invalidInput\" | \"gameNotFound\" | \"playerNotFound\";\n };\n\nconst inputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nexport function leaveGame(input: unknown): LeaveGameResult {\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return doLeaveGame(...parseResult.data);\n}\n","import { z } from \"zod\";\nimport { playCard as doPlayCard } from \"../../manager/index.js\";\n\nexport type PlayCardResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"playerNotFound\"\n | \"invalidStatus\"\n | \"canPlayAtNotReached\"\n | \"cardNotFound\"\n | \"cardNotPlayable\";\n };\n\nconst inputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n cardId: z.string(),\n isForOtherPlayerPile: z.boolean(),\n })\n .transform(\n ({ gameId, playerId, cardId, isForOtherPlayerPile }) =>\n [gameId, playerId, cardId, isForOtherPlayerPile] as const,\n );\n\nexport function playCard(input: unknown): PlayCardResult {\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return doPlayCard(...parseResult.data);\n}\n","import { z } from \"zod\";\nimport { reportNoPlayableCards as doReportNoPlayableCards } from \"../../manager/index.js\";\n\nexport type ReportNoPlayableCardsResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"playerNotFound\"\n | \"invalidStatus\"\n | \"canPlayAtNotReached\"\n | \"alreadyReported\"\n | \"hasPlayableCard\"\n | \"canDraw\";\n };\n\nconst inputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nexport function reportNoPlayableCards(\n input: unknown,\n): ReportNoPlayableCardsResult {\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return doReportNoPlayableCards(...parseResult.data);\n}\n","import { z } from \"zod\";\nimport { sendChat as doSendChat } from \"../../manager/index.js\";\n\nexport type SendChatResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error: \"invalidInput\" | \"gameNotFound\" | \"playerNotFound\";\n };\n\nconst inputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n text: z.string(),\n })\n .transform(({ gameId, playerId, text }) => [gameId, playerId, text] as const);\n\nexport function sendChat(input: unknown): SendChatResult {\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return doSendChat(...parseResult.data);\n}\n","import { z } from \"zod\";\nimport { startGame as doStartGame } from \"../../manager/index.js\";\n\nexport type StartGameResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"invalidStatus\"\n | \"playerNotFound\"\n | \"playerNotAdmin\"\n | \"minPlayersNotReached\";\n };\n\nconst inputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nexport function startGame(input: unknown): StartGameResult {\n const parseResult = inputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return doStartGame(...parseResult.data);\n}\n","import { createGame } from \"./actions/createGame.js\";\nimport { drawCard } from \"./actions/drawCard.js\";\nimport { getClientStateAndClearEvents } from \"./actions/getClientStateAndClearEvents.js\";\nimport { getEventsAndClearAcknowledged } from \"./actions/getEventsAndClearAcknowledged.js\";\nimport { getJoinableGames } from \"./actions/getJoinableGames.js\";\nimport { joinGame } from \"./actions/joinGame.js\";\nimport { leaveGame } from \"./actions/leaveGame.js\";\nimport { playCard } from \"./actions/playCard.js\";\nimport { reportNoPlayableCards } from \"./actions/reportNoPlayableCards.js\";\nimport { sendChat } from \"./actions/sendChat.js\";\nimport { startGame } from \"./actions/startGame.js\";\n\nexport type { CreateGameResult } from \"./actions/createGame.js\";\nexport type { DrawCardResult } from \"./actions/drawCard.js\";\nexport type { GetClientStateAndClearEventsResult } from \"./actions/getClientStateAndClearEvents.js\";\nexport type { GetEventsAndClearAcknowledgedResult } from \"./actions/getEventsAndClearAcknowledged.js\";\nexport type { GetJoinableGamesResult } from \"./actions/getJoinableGames.js\";\nexport type { JoinGameResult } from \"./actions/joinGame.js\";\nexport type { LeaveGameResult } from \"./actions/leaveGame.js\";\nexport type { PlayCardResult } from \"./actions/playCard.js\";\nexport type { ReportNoPlayableCardsResult } from \"./actions/reportNoPlayableCards.js\";\nexport type { SendChatResult } from \"./actions/sendChat.js\";\nexport type { StartGameResult } from \"./actions/startGame.js\";\n\nexport type {\n Card,\n ChatMessage,\n ClientState,\n GameEvent,\n} from \"../manager/index.js\";\n\nexport const actions = [\n { path: \"/createGame\", action: createGame },\n { path: \"/drawCard\", action: drawCard },\n {\n path: \"/getClientStateAndClearEvents\",\n action: getClientStateAndClearEvents,\n },\n {\n path: \"/getEventsAndClearAcknowledged\",\n action: getEventsAndClearAcknowledged,\n },\n { path: \"/getJoinableGames\", action: getJoinableGames },\n { path: \"/joinGame\", action: joinGame },\n { path: \"/leaveGame\", action: leaveGame },\n { path: \"/playCard\", action: playCard },\n { path: \"/reportNoPlayableCards\", action: reportNoPlayableCards },\n { path: \"/sendChat\", action: sendChat },\n { path: \"/startGame\", action: startGame },\n] as const;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/server/Server.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { Manager } from \"../manager/index.js\";\nimport type { ClientState, GameEvent } from \"../manager/index.js\";\n\nexport type CreateGameResult =\n | {\n readonly success: true;\n readonly gameId: string;\n readonly playerId: string;\n }\n | {\n readonly success: false;\n readonly error: \"maxGamesReached\";\n };\n\nexport type DrawCardResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"playerNotFound\"\n | \"invalidStatus\"\n | \"canPlayAtNotReached\"\n | \"handFull\"\n | \"drawPileEmpty\";\n };\n\nexport type GetClientStateAndClearEventsResult =\n | {\n readonly success: true;\n readonly state: ClientState;\n }\n | {\n readonly success: false;\n readonly error: \"invalidInput\" | \"gameNotFound\" | \"playerNotFound\";\n };\n\nexport type GetEventsAndClearAcknowledgedResult =\n | {\n readonly success: true;\n readonly events: readonly GameEvent[];\n }\n | {\n readonly success: false;\n readonly error: \"invalidInput\" | \"gameNotFound\" | \"playerNotFound\";\n };\n\nexport type GetJoinableGamesResult = {\n readonly games: readonly {\n readonly id: string;\n readonly numPlayers: number;\n }[];\n};\n\nexport type JoinGameResult =\n | {\n readonly success: true;\n readonly playerId: string;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"invalidStatus\"\n | \"maxPlayersReached\"\n | \"alreadyInGame\";\n };\n\nexport type LeaveGameResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error: \"invalidInput\" | \"gameNotFound\" | \"playerNotFound\";\n };\n\nexport type PlayCardResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"playerNotFound\"\n | \"invalidStatus\"\n | \"canPlayAtNotReached\"\n | \"cardNotFound\"\n | \"cardNotPlayable\";\n };\n\nexport type ReportNoPlayableCardsResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"playerNotFound\"\n | \"invalidStatus\"\n | \"canPlayAtNotReached\"\n | \"alreadyReported\"\n | \"hasPlayableCard\"\n | \"canDraw\";\n };\n\nexport type SendChatResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error: \"invalidInput\" | \"gameNotFound\" | \"playerNotFound\";\n };\n\nexport type StartGameResult =\n | {\n readonly success: true;\n }\n | {\n readonly success: false;\n readonly error:\n | \"invalidInput\"\n | \"gameNotFound\"\n | \"invalidStatus\"\n | \"playerNotFound\"\n | \"playerNotAdmin\"\n | \"minPlayersNotReached\";\n };\n\nconst drawCardInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nconst getClientStateAndClearEventsInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nconst getEventsAndClearAcknowledgedInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n lastReadId: z.string().nullable(),\n })\n .transform(\n ({ gameId, playerId, lastReadId }) =>\n [gameId, playerId, lastReadId] as const,\n );\n\nconst joinGameInputSchema = z\n .object({\n gameId: z.string(),\n })\n .transform(({ gameId }) => [gameId] as const);\n\nconst leaveGameInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nconst playCardInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n cardId: z.string(),\n isForOtherPlayerPile: z.boolean(),\n })\n .transform(\n ({ gameId, playerId, cardId, isForOtherPlayerPile }) =>\n [gameId, playerId, cardId, isForOtherPlayerPile] as const,\n );\n\nconst reportNoPlayableCardsInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nconst sendChatInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n text: z.string(),\n })\n .transform(({ gameId, playerId, text }) => [gameId, playerId, text] as const);\n\nconst startGameInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\nexport class Server {\n private readonly manager: Manager;\n\n readonly actions = [\n { path: \"/createGame\", action: this.createGame.bind(this) },\n { path: \"/drawCard\", action: this.drawCard.bind(this) },\n {\n path: \"/getClientStateAndClearEvents\",\n action: this.getClientStateAndClearEvents.bind(this),\n },\n {\n path: \"/getEventsAndClearAcknowledged\",\n action: this.getEventsAndClearAcknowledged.bind(this),\n },\n { path: \"/getJoinableGames\", action: this.getJoinableGames.bind(this) },\n { path: \"/joinGame\", action: this.joinGame.bind(this) },\n { path: \"/leaveGame\", action: this.leaveGame.bind(this) },\n { path: \"/playCard\", action: this.playCard.bind(this) },\n {\n path: \"/reportNoPlayableCards\",\n action: this.reportNoPlayableCards.bind(this),\n },\n { path: \"/sendChat\", action: this.sendChat.bind(this) },\n { path: \"/startGame\", action: this.startGame.bind(this) },\n ] as const;\n\n constructor(...args: ConstructorParameters<typeof Manager>) {\n this.manager = new Manager(...args);\n }\n\n private createGame(userId: string, username: string): CreateGameResult {\n return this.manager.createGame(userId, username);\n }\n\n private drawCard(input: unknown): DrawCardResult {\n const parseResult = drawCardInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return this.manager.drawCard(...parseResult.data);\n }\n\n private getClientStateAndClearEvents(\n input: unknown,\n ): GetClientStateAndClearEventsResult {\n const parseResult =\n getClientStateAndClearEventsInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return this.manager.getClientStateAndClearEvents(...parseResult.data);\n }\n\n private getEventsAndClearAcknowledged(\n input: unknown,\n ): GetEventsAndClearAcknowledgedResult {\n const parseResult =\n getEventsAndClearAcknowledgedInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return this.manager.getEventsAndClearAcknowledged(...parseResult.data);\n }\n\n private getJoinableGames(): GetJoinableGamesResult {\n return this.manager.getJoinableGames();\n }\n\n private joinGame(\n input: unknown,\n userId: string,\n username: string,\n ): JoinGameResult {\n const parseResult = joinGameInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return this.manager.joinGame(...parseResult.data, userId, username);\n }\n\n private leaveGame(input: unknown): LeaveGameResult {\n const parseResult = leaveGameInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return this.manager.leaveGame(...parseResult.data);\n }\n\n private playCard(input: unknown): PlayCardResult {\n const parseResult = playCardInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return this.manager.playCard(...parseResult.data);\n }\n\n private reportNoPlayableCards(input: unknown): ReportNoPlayableCardsResult {\n const parseResult = reportNoPlayableCardsInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return this.manager.reportNoPlayableCards(...parseResult.data);\n }\n\n private sendChat(input: unknown): SendChatResult {\n const parseResult = sendChatInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return this.manager.sendChat(...parseResult.data);\n }\n\n private startGame(input: unknown): StartGameResult {\n const parseResult = startGameInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" };\n }\n return this.manager.startGame(...parseResult.data);\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hellacardgames/speed",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "A TypeScript library implementing the Speed card game.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
"vitest": "^4.1.9"
|
|
87
87
|
},
|
|
88
88
|
"dependencies": {
|
|
89
|
-
"@hellacardgames/lib": "^0.
|
|
89
|
+
"@hellacardgames/lib": "^0.6.1",
|
|
90
90
|
"zod": "^4.4.3"
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BilCO_4a.d.cts","names":[],"sources":["../src/manager/actions/createGame.ts","../src/manager/actions/drawCard.ts","../src/manager/types/Card.ts","../src/manager/types/ChatMessage.ts","../src/manager/types/ClientState.ts","../src/manager/actions/getClientStateAndClearEvents.ts","../src/manager/types/GameEvent.ts","../src/manager/actions/getEventsAndClearAcknowledged.ts","../src/manager/actions/getJoinableGames.ts","../src/manager/actions/joinGame.ts","../src/manager/actions/leaveGame.ts","../src/manager/actions/playCard.ts","../src/manager/actions/reportNoPlayableCards.ts","../src/manager/actions/sendChat.ts","../src/manager/actions/startGame.ts"],"mappings":";KAKK;WAEU;WACA;WACA;;WAGA;WACA;;iBAGC,WAAW,gBAAgB,mBAAmB;;;KCXzD;WAEU;;WAGA;WACA;;iBASC,SAAS,gBAAgB,mBAAmB;;;KCpBhD;WACD;WACA;WACA;;;;KCHC;WACD;WACA;WACA;;;;KCAC;WACD;WACA;WACA;WACA;WACA,kBAAkB;WAClB;WACA,uBAAuB;WACvB,eAAe;WACf;;KAGN;WACM;WACA;WACA;WACA;WACA,mBAAmB;;;;KCjBzB;WAEU;WACA,OAAO;;WAGP;WACA;;iBAGC,6BACd,gBACA,mBACC;;;KCbS;WAEG;WACA;WACA;;WAGA;WACA;WACA;WACA,MAAM;;WAGN;WACA;WACA;WACA,MAAM;WACN;;WAGA;WACA;WACA,SAAS;;WAGT;WACA;WACA,MAAM;;WAGN;WACA;WACA;;WAGA;WACA;;WAGA;WACA;;WAGA;WACA;;WAGA;WACA;WACA,gBAAgB;;WAGhB;WACA;WACA;WACA,MAAM;;WAGN;WACA;WACA;WACA;;WAGA;WACA;WACA;;WAGA;WACA;WACA;WACA;;WAGA;WACA;WACA;;WAGA;WACA;WACA;;WAGA;WACA;WACA;WACA;;;;KCxFV;WAEU;WACA,iBAAiB;;WAGjB;WACA;;iBAGC,8BACd,gBACA,kBACA,4BACC;;;KCdE;WACM;WACA;aACE;aACA;;;iBAIG,oBAAoB;;;KCN/B;WAEU;WACA;;WAGA;WACA;;iBAOC,SACd,gBACA,gBACA,mBACC;;;KClBE;WAEU;;WAGA;WACA;;iBAGC,UAAU,gBAAgB,mBAAmB;;;KCPxD;WAEU;;WAGA;WACA;;iBASC,SACd,gBACA,kBACA,gBACA,gCACC;;;KCjBE;WAEU;;WAGA;WACA;;iBAUC,sBACd,gBACA,mBACC;;;KCzBE;WAEU;;WAGA;WACA;;iBAGC,SACd,gBACA,kBACA,eACC;;;KCLE;WAEU;;WAGA;WACA;;iBAQC,UAAU,gBAAgB,mBAAmB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BilCO_4a.d.mts","names":[],"sources":["../src/manager/actions/createGame.ts","../src/manager/actions/drawCard.ts","../src/manager/types/Card.ts","../src/manager/types/ChatMessage.ts","../src/manager/types/ClientState.ts","../src/manager/actions/getClientStateAndClearEvents.ts","../src/manager/types/GameEvent.ts","../src/manager/actions/getEventsAndClearAcknowledged.ts","../src/manager/actions/getJoinableGames.ts","../src/manager/actions/joinGame.ts","../src/manager/actions/leaveGame.ts","../src/manager/actions/playCard.ts","../src/manager/actions/reportNoPlayableCards.ts","../src/manager/actions/sendChat.ts","../src/manager/actions/startGame.ts"],"mappings":";KAKK;WAEU;WACA;WACA;;WAGA;WACA;;iBAGC,WAAW,gBAAgB,mBAAmB;;;KCXzD;WAEU;;WAGA;WACA;;iBASC,SAAS,gBAAgB,mBAAmB;;;KCpBhD;WACD;WACA;WACA;;;;KCHC;WACD;WACA;WACA;;;;KCAC;WACD;WACA;WACA;WACA;WACA,kBAAkB;WAClB;WACA,uBAAuB;WACvB,eAAe;WACf;;KAGN;WACM;WACA;WACA;WACA;WACA,mBAAmB;;;;KCjBzB;WAEU;WACA,OAAO;;WAGP;WACA;;iBAGC,6BACd,gBACA,mBACC;;;KCbS;WAEG;WACA;WACA;;WAGA;WACA;WACA;WACA,MAAM;;WAGN;WACA;WACA;WACA,MAAM;WACN;;WAGA;WACA;WACA,SAAS;;WAGT;WACA;WACA,MAAM;;WAGN;WACA;WACA;;WAGA;WACA;;WAGA;WACA;;WAGA;WACA;;WAGA;WACA;WACA,gBAAgB;;WAGhB;WACA;WACA;WACA,MAAM;;WAGN;WACA;WACA;WACA;;WAGA;WACA;WACA;;WAGA;WACA;WACA;WACA;;WAGA;WACA;WACA;;WAGA;WACA;WACA;;WAGA;WACA;WACA;WACA;;;;KCxFV;WAEU;WACA,iBAAiB;;WAGjB;WACA;;iBAGC,8BACd,gBACA,kBACA,4BACC;;;KCdE;WACM;WACA;aACE;aACA;;;iBAIG,oBAAoB;;;KCN/B;WAEU;WACA;;WAGA;WACA;;iBAOC,SACd,gBACA,gBACA,mBACC;;;KClBE;WAEU;;WAGA;WACA;;iBAGC,UAAU,gBAAgB,mBAAmB;;;KCPxD;WAEU;;WAGA;WACA;;iBASC,SACd,gBACA,kBACA,gBACA,gCACC;;;KCjBE;WAEU;;WAGA;WACA;;iBAUC,sBACd,gBACA,mBACC;;;KCzBE;WAEU;;WAGA;WACA;;iBAGC,SACd,gBACA,kBACA,eACC;;;KCLE;WAEU;;WAGA;WACA;;iBAQC,UAAU,gBAAgB,mBAAmB"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { d as ClientState, l as GameEvent } from "./index-BilCO_4a.cjs";
|
|
2
|
-
//#region src/server/actions/createGame.d.ts
|
|
3
|
-
type CreateGameResult = {
|
|
4
|
-
readonly success: true;
|
|
5
|
-
readonly gameId: string;
|
|
6
|
-
readonly playerId: string;
|
|
7
|
-
} | {
|
|
8
|
-
readonly success: false;
|
|
9
|
-
readonly error: "maxGamesReached";
|
|
10
|
-
};
|
|
11
|
-
declare function createGame(userId: string, username: string): CreateGameResult;
|
|
12
|
-
//#endregion
|
|
13
|
-
//#region src/server/actions/drawCard.d.ts
|
|
14
|
-
type DrawCardResult = {
|
|
15
|
-
readonly success: true;
|
|
16
|
-
} | {
|
|
17
|
-
readonly success: false;
|
|
18
|
-
readonly error: "invalidInput" | "gameNotFound" | "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "handFull" | "drawPileEmpty";
|
|
19
|
-
};
|
|
20
|
-
declare function drawCard(input: unknown): DrawCardResult;
|
|
21
|
-
//#endregion
|
|
22
|
-
//#region src/server/actions/getClientStateAndClearEvents.d.ts
|
|
23
|
-
type GetClientStateAndClearEventsResult = {
|
|
24
|
-
readonly success: true;
|
|
25
|
-
readonly state: ClientState;
|
|
26
|
-
} | {
|
|
27
|
-
readonly success: false;
|
|
28
|
-
readonly error: "invalidInput" | "gameNotFound" | "playerNotFound";
|
|
29
|
-
};
|
|
30
|
-
declare function getClientStateAndClearEvents(input: unknown): GetClientStateAndClearEventsResult;
|
|
31
|
-
//#endregion
|
|
32
|
-
//#region src/server/actions/getEventsAndClearAcknowledged.d.ts
|
|
33
|
-
type GetEventsAndClearAcknowledgedResult = {
|
|
34
|
-
readonly success: true;
|
|
35
|
-
readonly events: readonly GameEvent[];
|
|
36
|
-
} | {
|
|
37
|
-
readonly success: false;
|
|
38
|
-
readonly error: "invalidInput" | "gameNotFound" | "playerNotFound";
|
|
39
|
-
};
|
|
40
|
-
declare function getEventsAndClearAcknowledged(input: unknown): GetEventsAndClearAcknowledgedResult;
|
|
41
|
-
//#endregion
|
|
42
|
-
//#region src/server/actions/getJoinableGames.d.ts
|
|
43
|
-
type GetJoinableGamesResult = {
|
|
44
|
-
readonly games: readonly {
|
|
45
|
-
readonly id: string;
|
|
46
|
-
readonly numPlayers: number;
|
|
47
|
-
}[];
|
|
48
|
-
};
|
|
49
|
-
declare function getJoinableGames(): GetJoinableGamesResult;
|
|
50
|
-
//#endregion
|
|
51
|
-
//#region src/server/actions/joinGame.d.ts
|
|
52
|
-
type JoinGameResult = {
|
|
53
|
-
readonly success: true;
|
|
54
|
-
readonly playerId: string;
|
|
55
|
-
} | {
|
|
56
|
-
readonly success: false;
|
|
57
|
-
readonly error: "invalidInput" | "gameNotFound" | "invalidStatus" | "maxPlayersReached" | "alreadyInGame";
|
|
58
|
-
};
|
|
59
|
-
declare function joinGame(input: unknown, userId: string, username: string): JoinGameResult;
|
|
60
|
-
//#endregion
|
|
61
|
-
//#region src/server/actions/leaveGame.d.ts
|
|
62
|
-
type LeaveGameResult = {
|
|
63
|
-
readonly success: true;
|
|
64
|
-
} | {
|
|
65
|
-
readonly success: false;
|
|
66
|
-
readonly error: "invalidInput" | "gameNotFound" | "playerNotFound";
|
|
67
|
-
};
|
|
68
|
-
declare function leaveGame(input: unknown): LeaveGameResult;
|
|
69
|
-
//#endregion
|
|
70
|
-
//#region src/server/actions/playCard.d.ts
|
|
71
|
-
type PlayCardResult = {
|
|
72
|
-
readonly success: true;
|
|
73
|
-
} | {
|
|
74
|
-
readonly success: false;
|
|
75
|
-
readonly error: "invalidInput" | "gameNotFound" | "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "cardNotFound" | "cardNotPlayable";
|
|
76
|
-
};
|
|
77
|
-
declare function playCard(input: unknown): PlayCardResult;
|
|
78
|
-
//#endregion
|
|
79
|
-
//#region src/server/actions/reportNoPlayableCards.d.ts
|
|
80
|
-
type ReportNoPlayableCardsResult = {
|
|
81
|
-
readonly success: true;
|
|
82
|
-
} | {
|
|
83
|
-
readonly success: false;
|
|
84
|
-
readonly error: "invalidInput" | "gameNotFound" | "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw";
|
|
85
|
-
};
|
|
86
|
-
declare function reportNoPlayableCards(input: unknown): ReportNoPlayableCardsResult;
|
|
87
|
-
//#endregion
|
|
88
|
-
//#region src/server/actions/sendChat.d.ts
|
|
89
|
-
type SendChatResult = {
|
|
90
|
-
readonly success: true;
|
|
91
|
-
} | {
|
|
92
|
-
readonly success: false;
|
|
93
|
-
readonly error: "invalidInput" | "gameNotFound" | "playerNotFound";
|
|
94
|
-
};
|
|
95
|
-
declare function sendChat(input: unknown): SendChatResult;
|
|
96
|
-
//#endregion
|
|
97
|
-
//#region src/server/actions/startGame.d.ts
|
|
98
|
-
type StartGameResult = {
|
|
99
|
-
readonly success: true;
|
|
100
|
-
} | {
|
|
101
|
-
readonly success: false;
|
|
102
|
-
readonly error: "invalidInput" | "gameNotFound" | "invalidStatus" | "playerNotFound" | "playerNotAdmin" | "minPlayersNotReached";
|
|
103
|
-
};
|
|
104
|
-
declare function startGame(input: unknown): StartGameResult;
|
|
105
|
-
//#endregion
|
|
106
|
-
//#region src/server/index.d.ts
|
|
107
|
-
declare const actions: readonly [{
|
|
108
|
-
readonly path: "/createGame";
|
|
109
|
-
readonly action: typeof createGame;
|
|
110
|
-
}, {
|
|
111
|
-
readonly path: "/drawCard";
|
|
112
|
-
readonly action: typeof drawCard;
|
|
113
|
-
}, {
|
|
114
|
-
readonly path: "/getClientStateAndClearEvents";
|
|
115
|
-
readonly action: typeof getClientStateAndClearEvents;
|
|
116
|
-
}, {
|
|
117
|
-
readonly path: "/getEventsAndClearAcknowledged";
|
|
118
|
-
readonly action: typeof getEventsAndClearAcknowledged;
|
|
119
|
-
}, {
|
|
120
|
-
readonly path: "/getJoinableGames";
|
|
121
|
-
readonly action: typeof getJoinableGames;
|
|
122
|
-
}, {
|
|
123
|
-
readonly path: "/joinGame";
|
|
124
|
-
readonly action: typeof joinGame;
|
|
125
|
-
}, {
|
|
126
|
-
readonly path: "/leaveGame";
|
|
127
|
-
readonly action: typeof leaveGame;
|
|
128
|
-
}, {
|
|
129
|
-
readonly path: "/playCard";
|
|
130
|
-
readonly action: typeof playCard;
|
|
131
|
-
}, {
|
|
132
|
-
readonly path: "/reportNoPlayableCards";
|
|
133
|
-
readonly action: typeof reportNoPlayableCards;
|
|
134
|
-
}, {
|
|
135
|
-
readonly path: "/sendChat";
|
|
136
|
-
readonly action: typeof sendChat;
|
|
137
|
-
}, {
|
|
138
|
-
readonly path: "/startGame";
|
|
139
|
-
readonly action: typeof startGame;
|
|
140
|
-
}];
|
|
141
|
-
//#endregion
|
|
142
|
-
export { PlayCardResult as a, GetJoinableGamesResult as c, DrawCardResult as d, CreateGameResult as f, ReportNoPlayableCardsResult as i, GetEventsAndClearAcknowledgedResult as l, StartGameResult as n, LeaveGameResult as o, SendChatResult as r, JoinGameResult as s, actions as t, GetClientStateAndClearEventsResult as u };
|
|
143
|
-
//# sourceMappingURL=index-DSPZZlhq.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DSPZZlhq.d.cts","names":[],"sources":["../src/server/actions/createGame.ts","../src/server/actions/drawCard.ts","../src/server/actions/getClientStateAndClearEvents.ts","../src/server/actions/getEventsAndClearAcknowledged.ts","../src/server/actions/getJoinableGames.ts","../src/server/actions/joinGame.ts","../src/server/actions/leaveGame.ts","../src/server/actions/playCard.ts","../src/server/actions/reportNoPlayableCards.ts","../src/server/actions/sendChat.ts","../src/server/actions/startGame.ts","../src/server/index.ts"],"mappings":";;KAEY;WAEG;WACA;WACA;;WAGA;WACA;;iBAGC,WAAW,gBAAgB,mBAAmB;;;KCVlD;WAEG;;WAGA;WACA;;iBAiBC,SAAS,iBAAiB;;;KCtB9B;WAEG;WACA,OAAO;;WAGP;WACA;;iBAUC,6BACd,iBACC;;;KCnBS;WAEG;WACA,iBAAiB;;WAGjB;WACA;;iBAcC,8BACd,iBACC;;;KCzBS;WACD;aACE;aACA;;;iBAIG,oBAAoB;;;KCNxB;WAEG;WACA;;WAGA;WACA;;iBAcC,SACd,gBACA,gBACA,mBACC;;;KCzBS;WAEG;;WAGA;WACA;;iBAUC,UAAU,iBAAiB;;;KChB/B;WAEG;;WAGA;WACA;;iBAsBC,SAAS,iBAAiB;;;KC5B9B;WAEG;;WAGA;WACA;;iBAkBC,sBACd,iBACC;;;KC1BS;WAEG;;WAGA;WACA;;iBAWC,SAAS,iBAAiB;;;KCjB9B;WAEG;;WAGA;WACA;;iBAgBC,UAAU,iBAAiB;;;cCM9B"}
|