@hellacardgames/speed 0.11.3 → 0.12.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.mjs.map +1 -1
- package/dist/manager/index.d.cts +22 -1
- package/dist/manager/index.d.cts.map +1 -1
- package/dist/manager/index.d.mts +22 -1
- package/dist/manager/index.d.mts.map +1 -1
- package/dist/server/index.cjs +7 -45
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +8 -17
- package/dist/server/index.d.cts.map +1 -1
- package/dist/server/index.d.mts +8 -17
- package/dist/server/index.d.mts.map +1 -1
- package/dist/server/index.mjs +7 -45
- package/dist/server/index.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":[],"sources":["../../src/client/Client.ts"],"sourcesContent":["import type { createServer } from \"../server/index.js\";\n\ntype Server = ReturnType<typeof createServer>;\n\ntype ServerResult<\n TServer extends {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../../src/client/Client.ts"],"sourcesContent":["import type { createServer } from \"../server/index.js\";\n\ntype Server = ReturnType<typeof createServer>;\n\ntype ServerResult<\n TServer extends {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n routes: readonly { path: string; action: (...args: any[]) => any }[];\n },\n TPath extends TServer[\"routes\"][number][\"path\"],\n> = ReturnType<Extract<TServer[\"routes\"][number], { path: TPath }>[\"action\"]>;\n\nexport class Client {\n private readonly baseUrl: string;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n async createGame(accessToken: string) {\n const response = await fetch(`${this.baseUrl}/createGame`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n const result: ServerResult<Server, \"/createGame\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async drawCard(gameId: string, playerId: string) {\n const response = await fetch(`${this.baseUrl}/drawCard`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n });\n const result: ServerResult<Server, \"/drawCard\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async getClientStateAndClearEvents(gameId: string, playerId: string) {\n const response = await fetch(\n `${this.baseUrl}/getClientStateAndClearEvents`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n },\n );\n const result: ServerResult<Server, \"/getClientStateAndClearEvents\"> =\n await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async getEventsAndClearAcknowledged(\n gameId: string,\n playerId: string,\n lastReadId: string | null,\n ) {\n const response = await fetch(\n `${this.baseUrl}/getEventsAndClearAcknowledged`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId, lastReadId }),\n },\n );\n const result: ServerResult<Server, \"/getEventsAndClearAcknowledged\"> =\n await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async getJoinableGames() {\n const response = await fetch(`${this.baseUrl}/getJoinableGames`, {\n method: \"POST\",\n });\n const result: ServerResult<Server, \"/getJoinableGames\"> =\n await response.json();\n return result;\n }\n\n async joinGame(gameId: string, accessToken: string) {\n const response = await fetch(`${this.baseUrl}/joinGame`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId }),\n });\n const result: ServerResult<Server, \"/joinGame\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async leaveGame(gameId: string, playerId: string) {\n const response = await fetch(`${this.baseUrl}/leaveGame`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n });\n const result: ServerResult<Server, \"/leaveGame\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async playCard(\n gameId: string,\n playerId: string,\n cardId: string,\n isForOtherPlayerPile: boolean,\n ) {\n const response = await fetch(`${this.baseUrl}/playCard`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId, cardId, isForOtherPlayerPile }),\n });\n const result: ServerResult<Server, \"/playCard\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async reportNoPlayableCards(gameId: string, playerId: string) {\n const response = await fetch(`${this.baseUrl}/reportNoPlayableCards`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n });\n const result: ServerResult<Server, \"/reportNoPlayableCards\"> =\n await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async sendChat(gameId: string, playerId: string, text: string) {\n const response = await fetch(`${this.baseUrl}/sendChat`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId, text }),\n });\n const result: ServerResult<Server, \"/sendChat\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async startGame(gameId: string, playerId: string) {\n const response = await fetch(`${this.baseUrl}/startGame`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n });\n const result: ServerResult<Server, \"/startGame\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/client/Client.ts"],"sourcesContent":["import type { createServer } from \"../server/index.js\";\n\ntype Server = ReturnType<typeof createServer>;\n\ntype ServerResult<\n TServer extends {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/client/Client.ts"],"sourcesContent":["import type { createServer } from \"../server/index.js\";\n\ntype Server = ReturnType<typeof createServer>;\n\ntype ServerResult<\n TServer extends {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n routes: readonly { path: string; action: (...args: any[]) => any }[];\n },\n TPath extends TServer[\"routes\"][number][\"path\"],\n> = ReturnType<Extract<TServer[\"routes\"][number], { path: TPath }>[\"action\"]>;\n\nexport class Client {\n private readonly baseUrl: string;\n\n constructor(baseUrl: string) {\n this.baseUrl = baseUrl;\n }\n\n async createGame(accessToken: string) {\n const response = await fetch(`${this.baseUrl}/createGame`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n const result: ServerResult<Server, \"/createGame\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async drawCard(gameId: string, playerId: string) {\n const response = await fetch(`${this.baseUrl}/drawCard`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n });\n const result: ServerResult<Server, \"/drawCard\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async getClientStateAndClearEvents(gameId: string, playerId: string) {\n const response = await fetch(\n `${this.baseUrl}/getClientStateAndClearEvents`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n },\n );\n const result: ServerResult<Server, \"/getClientStateAndClearEvents\"> =\n await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async getEventsAndClearAcknowledged(\n gameId: string,\n playerId: string,\n lastReadId: string | null,\n ) {\n const response = await fetch(\n `${this.baseUrl}/getEventsAndClearAcknowledged`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId, lastReadId }),\n },\n );\n const result: ServerResult<Server, \"/getEventsAndClearAcknowledged\"> =\n await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async getJoinableGames() {\n const response = await fetch(`${this.baseUrl}/getJoinableGames`, {\n method: \"POST\",\n });\n const result: ServerResult<Server, \"/getJoinableGames\"> =\n await response.json();\n return result;\n }\n\n async joinGame(gameId: string, accessToken: string) {\n const response = await fetch(`${this.baseUrl}/joinGame`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId }),\n });\n const result: ServerResult<Server, \"/joinGame\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async leaveGame(gameId: string, playerId: string) {\n const response = await fetch(`${this.baseUrl}/leaveGame`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n });\n const result: ServerResult<Server, \"/leaveGame\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async playCard(\n gameId: string,\n playerId: string,\n cardId: string,\n isForOtherPlayerPile: boolean,\n ) {\n const response = await fetch(`${this.baseUrl}/playCard`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId, cardId, isForOtherPlayerPile }),\n });\n const result: ServerResult<Server, \"/playCard\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async reportNoPlayableCards(gameId: string, playerId: string) {\n const response = await fetch(`${this.baseUrl}/reportNoPlayableCards`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n });\n const result: ServerResult<Server, \"/reportNoPlayableCards\"> =\n await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async sendChat(gameId: string, playerId: string, text: string) {\n const response = await fetch(`${this.baseUrl}/sendChat`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId, text }),\n });\n const result: ServerResult<Server, \"/sendChat\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n\n async startGame(gameId: string, playerId: string) {\n const response = await fetch(`${this.baseUrl}/startGame`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ gameId, playerId }),\n });\n const result: ServerResult<Server, \"/startGame\"> = await response.json();\n if (!result.success) {\n return { success: false, error: result.error } as const;\n }\n return result;\n }\n}\n"],"mappings":"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"}
|
package/dist/manager/index.d.cts
CHANGED
|
@@ -87,7 +87,7 @@ declare const createManager: (logKey: string, maxGames: number, watchdogInterval
|
|
|
87
87
|
readonly success: false;
|
|
88
88
|
readonly error: "playerNotFound" | "invalidStatus" | "playerNotAdmin" | "minPlayersNotReached";
|
|
89
89
|
};
|
|
90
|
-
} & {
|
|
90
|
+
} & Readonly<{
|
|
91
91
|
drawCard: (gameId: string, playerId: string) => {
|
|
92
92
|
readonly success: true;
|
|
93
93
|
} | {
|
|
@@ -106,6 +106,27 @@ declare const createManager: (logKey: string, maxGames: number, watchdogInterval
|
|
|
106
106
|
readonly success: false;
|
|
107
107
|
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw" | "gameNotFound";
|
|
108
108
|
};
|
|
109
|
+
}> & {
|
|
110
|
+
readonly gameplayActions: Readonly<{
|
|
111
|
+
drawCard: (gameId: string, playerId: string) => {
|
|
112
|
+
readonly success: true;
|
|
113
|
+
} | {
|
|
114
|
+
readonly success: false;
|
|
115
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "handFull" | "drawPileEmpty" | "gameNotFound";
|
|
116
|
+
};
|
|
117
|
+
playCard: (gameId: string, playerId: string, cardId: string, isForOtherPlayerPile: boolean) => {
|
|
118
|
+
readonly success: true;
|
|
119
|
+
} | {
|
|
120
|
+
readonly success: false;
|
|
121
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "cardNotFound" | "cardNotPlayable" | "gameNotFound";
|
|
122
|
+
};
|
|
123
|
+
reportNoPlayableCards: (gameId: string, playerId: string) => {
|
|
124
|
+
readonly success: true;
|
|
125
|
+
} | {
|
|
126
|
+
readonly success: false;
|
|
127
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw" | "gameNotFound";
|
|
128
|
+
};
|
|
129
|
+
}>;
|
|
109
130
|
};
|
|
110
131
|
//#endregion
|
|
111
132
|
export { createManager };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/manager/createManager.ts"],"mappings":";;cAea,gBAAa,gBAAA,kBAAA;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/manager/createManager.ts"],"mappings":";;cAea,gBAAa,gBAAA,kBAAA;;;;aAe4lI;aAA+B;;;;;aAA4H;;;;;;;;;;;;oBAfpwI"}
|
package/dist/manager/index.d.mts
CHANGED
|
@@ -87,7 +87,7 @@ declare const createManager: (logKey: string, maxGames: number, watchdogInterval
|
|
|
87
87
|
readonly success: false;
|
|
88
88
|
readonly error: "playerNotFound" | "invalidStatus" | "playerNotAdmin" | "minPlayersNotReached";
|
|
89
89
|
};
|
|
90
|
-
} & {
|
|
90
|
+
} & Readonly<{
|
|
91
91
|
drawCard: (gameId: string, playerId: string) => {
|
|
92
92
|
readonly success: true;
|
|
93
93
|
} | {
|
|
@@ -106,6 +106,27 @@ declare const createManager: (logKey: string, maxGames: number, watchdogInterval
|
|
|
106
106
|
readonly success: false;
|
|
107
107
|
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw" | "gameNotFound";
|
|
108
108
|
};
|
|
109
|
+
}> & {
|
|
110
|
+
readonly gameplayActions: Readonly<{
|
|
111
|
+
drawCard: (gameId: string, playerId: string) => {
|
|
112
|
+
readonly success: true;
|
|
113
|
+
} | {
|
|
114
|
+
readonly success: false;
|
|
115
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "handFull" | "drawPileEmpty" | "gameNotFound";
|
|
116
|
+
};
|
|
117
|
+
playCard: (gameId: string, playerId: string, cardId: string, isForOtherPlayerPile: boolean) => {
|
|
118
|
+
readonly success: true;
|
|
119
|
+
} | {
|
|
120
|
+
readonly success: false;
|
|
121
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "cardNotFound" | "cardNotPlayable" | "gameNotFound";
|
|
122
|
+
};
|
|
123
|
+
reportNoPlayableCards: (gameId: string, playerId: string) => {
|
|
124
|
+
readonly success: true;
|
|
125
|
+
} | {
|
|
126
|
+
readonly success: false;
|
|
127
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw" | "gameNotFound";
|
|
128
|
+
};
|
|
129
|
+
}>;
|
|
109
130
|
};
|
|
110
131
|
//#endregion
|
|
111
132
|
export { createManager };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/manager/createManager.ts"],"mappings":";;cAea,gBAAa,gBAAA,kBAAA;;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/manager/createManager.ts"],"mappings":";;cAea,gBAAa,gBAAA,kBAAA;;;;aAe4lI;aAA+B;;;;;aAA4H;;;;;;;;;;;;oBAfpwI"}
|
package/dist/server/index.cjs
CHANGED
|
@@ -3,20 +3,12 @@ const require_manager = require("../manager-DdpdgNfz.cjs");
|
|
|
3
3
|
let _hellacardgames_lib = require("@hellacardgames/lib");
|
|
4
4
|
let zod = require("zod");
|
|
5
5
|
//#region src/server/createServer.ts
|
|
6
|
-
const createServer = (0, _hellacardgames_lib.createServerFactory)(require_manager.createManager,
|
|
7
|
-
|
|
6
|
+
const createServer = (0, _hellacardgames_lib.createServerFactory)(require_manager.createManager, {
|
|
7
|
+
drawCard: zod.z.object({
|
|
8
8
|
gameId: zod.z.string(),
|
|
9
9
|
playerId: zod.z.string()
|
|
10
|
-
}).transform(({ gameId, playerId }) => [gameId, playerId])
|
|
11
|
-
|
|
12
|
-
const parseResult = drawCardInputSchema.safeParse(input);
|
|
13
|
-
if (!parseResult.success) return {
|
|
14
|
-
success: false,
|
|
15
|
-
error: "invalidInput"
|
|
16
|
-
};
|
|
17
|
-
return manager.drawCard(...parseResult.data);
|
|
18
|
-
}
|
|
19
|
-
const playCardInputSchema = zod.z.object({
|
|
10
|
+
}).transform(({ gameId, playerId }) => [gameId, playerId]),
|
|
11
|
+
playCard: zod.z.object({
|
|
20
12
|
gameId: zod.z.string(),
|
|
21
13
|
playerId: zod.z.string(),
|
|
22
14
|
cardId: zod.z.string(),
|
|
@@ -26,41 +18,11 @@ const createServer = (0, _hellacardgames_lib.createServerFactory)(require_manage
|
|
|
26
18
|
playerId,
|
|
27
19
|
cardId,
|
|
28
20
|
isForOtherPlayerPile
|
|
29
|
-
])
|
|
30
|
-
|
|
31
|
-
const parseResult = playCardInputSchema.safeParse(input);
|
|
32
|
-
if (!parseResult.success) return {
|
|
33
|
-
success: false,
|
|
34
|
-
error: "invalidInput"
|
|
35
|
-
};
|
|
36
|
-
return manager.playCard(...parseResult.data);
|
|
37
|
-
}
|
|
38
|
-
const reportNoPlayableCardsInputSchema = zod.z.object({
|
|
21
|
+
]),
|
|
22
|
+
reportNoPlayableCards: zod.z.object({
|
|
39
23
|
gameId: zod.z.string(),
|
|
40
24
|
playerId: zod.z.string()
|
|
41
|
-
}).transform(({ gameId, playerId }) => [gameId, playerId])
|
|
42
|
-
function reportNoPlayableCards(input) {
|
|
43
|
-
const parseResult = reportNoPlayableCardsInputSchema.safeParse(input);
|
|
44
|
-
if (!parseResult.success) return {
|
|
45
|
-
success: false,
|
|
46
|
-
error: "invalidInput"
|
|
47
|
-
};
|
|
48
|
-
return manager.reportNoPlayableCards(...parseResult.data);
|
|
49
|
-
}
|
|
50
|
-
return [
|
|
51
|
-
{
|
|
52
|
-
path: "/drawCard",
|
|
53
|
-
action: drawCard
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
path: "/playCard",
|
|
57
|
-
action: playCard
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
path: "/reportNoPlayableCards",
|
|
61
|
-
action: reportNoPlayableCards
|
|
62
|
-
}
|
|
63
|
-
];
|
|
25
|
+
}).transform(({ gameId, playerId }) => [gameId, playerId])
|
|
64
26
|
});
|
|
65
27
|
//#endregion
|
|
66
28
|
exports.createServer = createServer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["createServerFactory","createManager","z"],"sources":["../../src/server/createServer.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { createServerFactory } from \"@hellacardgames/lib\";\nimport { createManager } from \"../manager/index.js\";\n\nexport const createServer = createServerFactory(createManager,
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["createServerFactory","createManager","z"],"sources":["../../src/server/createServer.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { createServerFactory } from \"@hellacardgames/lib\";\nimport { createManager } from \"../manager/index.js\";\n\nexport const createServer = createServerFactory(createManager, {\n drawCard: z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const),\n\n playCard: 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\n reportNoPlayableCards: z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const),\n});\n"],"mappings":";;;;;AAIA,MAAa,gBAAA,GAAeA,oBAAAA,oBAAAA,CAAoBC,gBAAAA,eAAe;CAC7D,UAAUC,IAAAA,EACP,OAAO;EACN,QAAQA,IAAAA,EAAE,OAAO;EACjB,UAAUA,IAAAA,EAAE,OAAO;CACrB,CAAC,CAAC,CACD,WAAW,EAAE,QAAQ,eAAe,CAAC,QAAQ,QAAQ,CAAU;CAElE,UAAUA,IAAAA,EACP,OAAO;EACN,QAAQA,IAAAA,EAAE,OAAO;EACjB,UAAUA,IAAAA,EAAE,OAAO;EACnB,QAAQA,IAAAA,EAAE,OAAO;EACjB,sBAAsBA,IAAAA,EAAE,QAAQ;CAClC,CAAC,CAAC,CACD,WACE,EAAE,QAAQ,UAAU,QAAQ,2BAC3B;EAAC;EAAQ;EAAU;EAAQ;CAAoB,CACnD;CAEF,uBAAuBA,IAAAA,EACpB,OAAO;EACN,QAAQA,IAAAA,EAAE,OAAO;EACjB,UAAUA,IAAAA,EAAE,OAAO;CACrB,CAAC,CAAC,CACD,WAAW,EAAE,QAAQ,eAAe,CAAC,QAAQ,QAAQ,CAAU;AACpE,CAAC"}
|
package/dist/server/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as GameEvent, t as ClientState } from "../index-89KVb2dD.cjs";
|
|
2
2
|
//#region src/server/createServer.d.ts
|
|
3
3
|
declare const createServer: (logKey: string, maxGames: number, watchdogIntervalMs: number) => {
|
|
4
|
-
readonly
|
|
4
|
+
readonly routes: readonly [{
|
|
5
5
|
readonly path: "/createGame";
|
|
6
6
|
readonly action: (userId: string, username: string) => {
|
|
7
7
|
readonly success: true;
|
|
@@ -88,40 +88,31 @@ declare const createServer: (logKey: string, maxGames: number, watchdogIntervalM
|
|
|
88
88
|
readonly success: false;
|
|
89
89
|
readonly error: "playerNotFound" | "invalidStatus" | "playerNotAdmin" | "minPlayersNotReached" | "gameNotFound";
|
|
90
90
|
};
|
|
91
|
-
}, {
|
|
91
|
+
}, ...({
|
|
92
92
|
readonly path: "/drawCard";
|
|
93
93
|
readonly action: (input: unknown) => {
|
|
94
94
|
readonly success: true;
|
|
95
95
|
} | {
|
|
96
96
|
readonly success: false;
|
|
97
|
-
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "handFull" | "drawPileEmpty" | "gameNotFound";
|
|
98
|
-
} | {
|
|
99
|
-
readonly success: false;
|
|
100
|
-
readonly error: "invalidInput";
|
|
97
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "handFull" | "drawPileEmpty" | "gameNotFound" | "invalidInput";
|
|
101
98
|
};
|
|
102
|
-
}
|
|
99
|
+
} | {
|
|
103
100
|
readonly path: "/playCard";
|
|
104
101
|
readonly action: (input: unknown) => {
|
|
105
102
|
readonly success: true;
|
|
106
103
|
} | {
|
|
107
104
|
readonly success: false;
|
|
108
|
-
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "cardNotFound" | "cardNotPlayable" | "gameNotFound";
|
|
109
|
-
} | {
|
|
110
|
-
readonly success: false;
|
|
111
|
-
readonly error: "invalidInput";
|
|
105
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "cardNotFound" | "cardNotPlayable" | "gameNotFound" | "invalidInput";
|
|
112
106
|
};
|
|
113
|
-
}
|
|
107
|
+
} | {
|
|
114
108
|
readonly path: "/reportNoPlayableCards";
|
|
115
109
|
readonly action: (input: unknown) => {
|
|
116
110
|
readonly success: true;
|
|
117
111
|
} | {
|
|
118
112
|
readonly success: false;
|
|
119
|
-
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw" | "gameNotFound";
|
|
120
|
-
} | {
|
|
121
|
-
readonly success: false;
|
|
122
|
-
readonly error: "invalidInput";
|
|
113
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw" | "gameNotFound" | "invalidInput";
|
|
123
114
|
};
|
|
124
|
-
}];
|
|
115
|
+
})[]];
|
|
125
116
|
};
|
|
126
117
|
//#endregion
|
|
127
118
|
export { createServer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/server/createServer.ts"],"mappings":";;cAIa,eAAY,gBAAA,kBAAA;;;;;;;;;;;;;;;;;;sBAAZ;;;;;;;;;;;;gCAAA
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/server/createServer.ts"],"mappings":";;cAIa,eAAY,gBAAA,kBAAA;;;;;;;;;;;;;;;;;;sBAAZ;;;;;;;;;;;;gCAAA"}
|
package/dist/server/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as GameEvent, t as ClientState } from "../index-89KVb2dD.mjs";
|
|
2
2
|
//#region src/server/createServer.d.ts
|
|
3
3
|
declare const createServer: (logKey: string, maxGames: number, watchdogIntervalMs: number) => {
|
|
4
|
-
readonly
|
|
4
|
+
readonly routes: readonly [{
|
|
5
5
|
readonly path: "/createGame";
|
|
6
6
|
readonly action: (userId: string, username: string) => {
|
|
7
7
|
readonly success: true;
|
|
@@ -88,40 +88,31 @@ declare const createServer: (logKey: string, maxGames: number, watchdogIntervalM
|
|
|
88
88
|
readonly success: false;
|
|
89
89
|
readonly error: "playerNotFound" | "invalidStatus" | "playerNotAdmin" | "minPlayersNotReached" | "gameNotFound";
|
|
90
90
|
};
|
|
91
|
-
}, {
|
|
91
|
+
}, ...({
|
|
92
92
|
readonly path: "/drawCard";
|
|
93
93
|
readonly action: (input: unknown) => {
|
|
94
94
|
readonly success: true;
|
|
95
95
|
} | {
|
|
96
96
|
readonly success: false;
|
|
97
|
-
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "handFull" | "drawPileEmpty" | "gameNotFound";
|
|
98
|
-
} | {
|
|
99
|
-
readonly success: false;
|
|
100
|
-
readonly error: "invalidInput";
|
|
97
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "handFull" | "drawPileEmpty" | "gameNotFound" | "invalidInput";
|
|
101
98
|
};
|
|
102
|
-
}
|
|
99
|
+
} | {
|
|
103
100
|
readonly path: "/playCard";
|
|
104
101
|
readonly action: (input: unknown) => {
|
|
105
102
|
readonly success: true;
|
|
106
103
|
} | {
|
|
107
104
|
readonly success: false;
|
|
108
|
-
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "cardNotFound" | "cardNotPlayable" | "gameNotFound";
|
|
109
|
-
} | {
|
|
110
|
-
readonly success: false;
|
|
111
|
-
readonly error: "invalidInput";
|
|
105
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "cardNotFound" | "cardNotPlayable" | "gameNotFound" | "invalidInput";
|
|
112
106
|
};
|
|
113
|
-
}
|
|
107
|
+
} | {
|
|
114
108
|
readonly path: "/reportNoPlayableCards";
|
|
115
109
|
readonly action: (input: unknown) => {
|
|
116
110
|
readonly success: true;
|
|
117
111
|
} | {
|
|
118
112
|
readonly success: false;
|
|
119
|
-
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw" | "gameNotFound";
|
|
120
|
-
} | {
|
|
121
|
-
readonly success: false;
|
|
122
|
-
readonly error: "invalidInput";
|
|
113
|
+
readonly error: "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw" | "gameNotFound" | "invalidInput";
|
|
123
114
|
};
|
|
124
|
-
}];
|
|
115
|
+
})[]];
|
|
125
116
|
};
|
|
126
117
|
//#endregion
|
|
127
118
|
export { createServer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/server/createServer.ts"],"mappings":";;cAIa,eAAY,gBAAA,kBAAA;;;;;;;;;;;;;;;;;;sBAAZ;;;;;;;;;;;;gCAAA
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/server/createServer.ts"],"mappings":";;cAIa,eAAY,gBAAA,kBAAA;;;;;;;;;;;;;;;;;;sBAAZ;;;;;;;;;;;;gCAAA"}
|
package/dist/server/index.mjs
CHANGED
|
@@ -2,20 +2,12 @@ import { t as createManager } from "../manager-C8wqbmrE.mjs";
|
|
|
2
2
|
import { createServerFactory } from "@hellacardgames/lib";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region src/server/createServer.ts
|
|
5
|
-
const createServer = createServerFactory(createManager,
|
|
6
|
-
|
|
5
|
+
const createServer = createServerFactory(createManager, {
|
|
6
|
+
drawCard: z.object({
|
|
7
7
|
gameId: z.string(),
|
|
8
8
|
playerId: z.string()
|
|
9
|
-
}).transform(({ gameId, playerId }) => [gameId, playerId])
|
|
10
|
-
|
|
11
|
-
const parseResult = drawCardInputSchema.safeParse(input);
|
|
12
|
-
if (!parseResult.success) return {
|
|
13
|
-
success: false,
|
|
14
|
-
error: "invalidInput"
|
|
15
|
-
};
|
|
16
|
-
return manager.drawCard(...parseResult.data);
|
|
17
|
-
}
|
|
18
|
-
const playCardInputSchema = z.object({
|
|
9
|
+
}).transform(({ gameId, playerId }) => [gameId, playerId]),
|
|
10
|
+
playCard: z.object({
|
|
19
11
|
gameId: z.string(),
|
|
20
12
|
playerId: z.string(),
|
|
21
13
|
cardId: z.string(),
|
|
@@ -25,41 +17,11 @@ const createServer = createServerFactory(createManager, (manager) => {
|
|
|
25
17
|
playerId,
|
|
26
18
|
cardId,
|
|
27
19
|
isForOtherPlayerPile
|
|
28
|
-
])
|
|
29
|
-
|
|
30
|
-
const parseResult = playCardInputSchema.safeParse(input);
|
|
31
|
-
if (!parseResult.success) return {
|
|
32
|
-
success: false,
|
|
33
|
-
error: "invalidInput"
|
|
34
|
-
};
|
|
35
|
-
return manager.playCard(...parseResult.data);
|
|
36
|
-
}
|
|
37
|
-
const reportNoPlayableCardsInputSchema = z.object({
|
|
20
|
+
]),
|
|
21
|
+
reportNoPlayableCards: z.object({
|
|
38
22
|
gameId: z.string(),
|
|
39
23
|
playerId: z.string()
|
|
40
|
-
}).transform(({ gameId, playerId }) => [gameId, playerId])
|
|
41
|
-
function reportNoPlayableCards(input) {
|
|
42
|
-
const parseResult = reportNoPlayableCardsInputSchema.safeParse(input);
|
|
43
|
-
if (!parseResult.success) return {
|
|
44
|
-
success: false,
|
|
45
|
-
error: "invalidInput"
|
|
46
|
-
};
|
|
47
|
-
return manager.reportNoPlayableCards(...parseResult.data);
|
|
48
|
-
}
|
|
49
|
-
return [
|
|
50
|
-
{
|
|
51
|
-
path: "/drawCard",
|
|
52
|
-
action: drawCard
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
path: "/playCard",
|
|
56
|
-
action: playCard
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
path: "/reportNoPlayableCards",
|
|
60
|
-
action: reportNoPlayableCards
|
|
61
|
-
}
|
|
62
|
-
];
|
|
24
|
+
}).transform(({ gameId, playerId }) => [gameId, playerId])
|
|
63
25
|
});
|
|
64
26
|
//#endregion
|
|
65
27
|
export { createServer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/server/createServer.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { createServerFactory } from \"@hellacardgames/lib\";\nimport { createManager } from \"../manager/index.js\";\n\nexport const createServer = createServerFactory(createManager,
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/server/createServer.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { createServerFactory } from \"@hellacardgames/lib\";\nimport { createManager } from \"../manager/index.js\";\n\nexport const createServer = createServerFactory(createManager, {\n drawCard: z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const),\n\n playCard: 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\n reportNoPlayableCards: z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const),\n});\n"],"mappings":";;;;AAIA,MAAa,eAAe,oBAAoB,eAAe;CAC7D,UAAU,EACP,OAAO;EACN,QAAQ,EAAE,OAAO;EACjB,UAAU,EAAE,OAAO;CACrB,CAAC,CAAC,CACD,WAAW,EAAE,QAAQ,eAAe,CAAC,QAAQ,QAAQ,CAAU;CAElE,UAAU,EACP,OAAO;EACN,QAAQ,EAAE,OAAO;EACjB,UAAU,EAAE,OAAO;EACnB,QAAQ,EAAE,OAAO;EACjB,sBAAsB,EAAE,QAAQ;CAClC,CAAC,CAAC,CACD,WACE,EAAE,QAAQ,UAAU,QAAQ,2BAC3B;EAAC;EAAQ;EAAU;EAAQ;CAAoB,CACnD;CAEF,uBAAuB,EACpB,OAAO;EACN,QAAQ,EAAE,OAAO;EACjB,UAAU,EAAE,OAAO;CACrB,CAAC,CAAC,CACD,WAAW,EAAE,QAAQ,eAAe,CAAC,QAAQ,QAAQ,CAAU;AACpE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hellacardgames/speed",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.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.16.0",
|
|
90
90
|
"zod": "^4.4.3"
|
|
91
91
|
}
|
|
92
92
|
}
|