@hellacardgames/speed 0.1.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/README.md +9 -0
- package/dist/GameEvent-DDQ4jXxt.d.cts +111 -0
- package/dist/GameEvent-DDQ4jXxt.d.cts.map +1 -0
- package/dist/GameEvent-DDQ4jXxt.d.mts +111 -0
- package/dist/GameEvent-DDQ4jXxt.d.mts.map +1 -0
- package/dist/client/index.cjs +126 -0
- package/dist/client/index.cjs.map +1 -0
- package/dist/client/index.d.cts +38 -0
- package/dist/client/index.d.cts.map +1 -0
- package/dist/client/index.d.mts +38 -0
- package/dist/client/index.d.mts.map +1 -0
- package/dist/client/index.mjs +125 -0
- package/dist/client/index.mjs.map +1 -0
- package/dist/manager/index.cjs +33 -0
- package/dist/manager/index.cjs.map +1 -0
- package/dist/manager/index.d.cts +109 -0
- package/dist/manager/index.d.cts.map +1 -0
- package/dist/manager/index.d.mts +109 -0
- package/dist/manager/index.d.mts.map +1 -0
- package/dist/manager/index.mjs +22 -0
- package/dist/manager/index.mjs.map +1 -0
- package/dist/server/index.cjs +204 -0
- package/dist/server/index.cjs.map +1 -0
- package/dist/server/index.d.cts +40 -0
- package/dist/server/index.d.cts.map +1 -0
- package/dist/server/index.d.mts +40 -0
- package/dist/server/index.d.mts.map +1 -0
- package/dist/server/index.mjs +203 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/startGame-5InkAgEp.d.cts +108 -0
- package/dist/startGame-5InkAgEp.d.cts.map +1 -0
- package/dist/startGame-BC9XfFzG.mjs +815 -0
- package/dist/startGame-BC9XfFzG.mjs.map +1 -0
- package/dist/startGame-Bhk__XWk.cjs +898 -0
- package/dist/startGame-Bhk__XWk.cjs.map +1 -0
- package/dist/startGame-ayp8a-Cl.d.mts +108 -0
- package/dist/startGame-ayp8a-Cl.d.mts.map +1 -0
- package/package.json +92 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["GAME_KEY","WATCHDOG_INTERVAL_MS","games"],"sources":["../../src/manager/watchdog.ts","../../src/manager/index.ts"],"sourcesContent":["import { GAME_KEY, WATCHDOG_INTERVAL_MS } from \"./constants.js\";\nimport { games } from \"./games.js\";\n\nclass Watchdog {\n start() {\n console.log(`watchdog start at ${Date.now()} (${GAME_KEY})`);\n setInterval(() => this.wakeUp(), WATCHDOG_INTERVAL_MS);\n }\n\n wakeUp() {\n const now = Date.now();\n // console.log(`watchdog wakeUp at ${now} (${GAME_KEY})`);\n for (const game of games.values()) {\n if (game.expiresAt <= now) {\n games.delete(game.id);\n console.log(`watchdog purged ${game.id} (${GAME_KEY})`);\n }\n }\n }\n}\n\nexport const watchdog = new Watchdog();\n","import { watchdog } from \"./watchdog.js\";\n\nexport { createGame } from \"./actions/createGame.js\";\nexport { drawCard } from \"./actions/drawCard.js\";\nexport { getClientStateAndClearEvents } from \"./actions/getClientStateAndClearEvents.js\";\nexport { getEventsAndClearAcknowledged } from \"./actions/getEventsAndClearAcknowledged.js\";\nexport { getJoinableGames } from \"./actions/getJoinableGames.js\";\nexport { joinGame } from \"./actions/joinGame.js\";\nexport { leaveGame } from \"./actions/leaveGame.js\";\nexport { playCard } from \"./actions/playCard.js\";\nexport { reportNoPlayableCards } from \"./actions/reportNoPlayableCards.js\";\nexport { sendChat } from \"./actions/sendChat.js\";\nexport { startGame } from \"./actions/startGame.js\";\n\nexport type { Card } from \"./types/Card.js\";\nexport type { ChatMessage } from \"./types/ChatMessage.js\";\nexport type { ClientState } from \"./types/ClientState.js\";\nexport type { GameEvent } from \"./types/GameEvent.js\";\n\nwatchdog.start();\n"],"mappings":";;;AAGA,IAAM,WAAN,MAAe;CACb,QAAQ;EACN,QAAQ,IAAI,qBAAqB,KAAK,IAAI,EAAE,IAAIA,kBAAAA,SAAS,EAAE;EAC3D,kBAAkB,KAAK,OAAO,GAAGC,kBAAAA,oBAAoB;CACvD;CAEA,SAAS;EACP,MAAM,MAAM,KAAK,IAAI;EAErB,KAAK,MAAM,QAAQC,kBAAAA,MAAM,OAAO,GAC9B,IAAI,KAAK,aAAa,KAAK;GACzB,kBAAA,MAAM,OAAO,KAAK,EAAE;GACpB,QAAQ,IAAI,mBAAmB,KAAK,GAAG,IAAIF,kBAAAA,SAAS,EAAE;EACxD;CAEJ;AACF;;;ACAA,IDE4B,SCF5B,CAAA,CAAS,MAAM"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { i as Card, n as ClientState, r as ChatMessage, t as GameEvent } from "../GameEvent-DDQ4jXxt.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/manager/actions/createGame.d.ts
|
|
4
|
+
type CreateGameResult = {
|
|
5
|
+
readonly success: true;
|
|
6
|
+
readonly gameId: string;
|
|
7
|
+
readonly playerId: string;
|
|
8
|
+
} | {
|
|
9
|
+
readonly success: false;
|
|
10
|
+
readonly error: "maxGamesReached";
|
|
11
|
+
};
|
|
12
|
+
declare function createGame(userId: string, username: string): CreateGameResult;
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/manager/actions/drawCard.d.ts
|
|
15
|
+
type DrawCardResult = {
|
|
16
|
+
readonly success: true;
|
|
17
|
+
} | {
|
|
18
|
+
readonly success: false;
|
|
19
|
+
readonly error: "gameNotFound" | "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "handFull" | "drawPileEmpty";
|
|
20
|
+
};
|
|
21
|
+
declare function drawCard(gameId: string, playerId: string): DrawCardResult;
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/manager/actions/getClientStateAndClearEvents.d.ts
|
|
24
|
+
type GetClientStateAndClearEventsResult = {
|
|
25
|
+
readonly success: true;
|
|
26
|
+
readonly state: ClientState;
|
|
27
|
+
} | {
|
|
28
|
+
readonly success: false;
|
|
29
|
+
readonly error: "gameNotFound" | "playerNotFound";
|
|
30
|
+
};
|
|
31
|
+
declare function getClientStateAndClearEvents(gameId: string, playerId: string): GetClientStateAndClearEventsResult;
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/manager/actions/getEventsAndClearAcknowledged.d.ts
|
|
34
|
+
type GetEventsAndClearAcknowledgedResult = {
|
|
35
|
+
readonly success: true;
|
|
36
|
+
readonly events: readonly GameEvent[];
|
|
37
|
+
} | {
|
|
38
|
+
readonly success: false;
|
|
39
|
+
readonly error: "gameNotFound" | "playerNotFound";
|
|
40
|
+
};
|
|
41
|
+
declare function getEventsAndClearAcknowledged(gameId: string, playerId: string, lastReadId: string | null): GetEventsAndClearAcknowledgedResult;
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/manager/actions/getJoinableGames.d.ts
|
|
44
|
+
type GetJoinableGamesResult = {
|
|
45
|
+
readonly success: true;
|
|
46
|
+
readonly games: readonly {
|
|
47
|
+
readonly id: string;
|
|
48
|
+
readonly numPlayers: number;
|
|
49
|
+
}[];
|
|
50
|
+
};
|
|
51
|
+
declare function getJoinableGames(): GetJoinableGamesResult;
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region src/manager/actions/joinGame.d.ts
|
|
54
|
+
type JoinGameResult = {
|
|
55
|
+
readonly success: true;
|
|
56
|
+
readonly playerId: string;
|
|
57
|
+
} | {
|
|
58
|
+
readonly success: false;
|
|
59
|
+
readonly error: "gameNotFound" | "invalidStatus" | "maxPlayersReached" | "alreadyInGame";
|
|
60
|
+
};
|
|
61
|
+
declare function joinGame(gameId: string, userId: string, username: string): JoinGameResult;
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/manager/actions/leaveGame.d.ts
|
|
64
|
+
type LeaveGameResult = {
|
|
65
|
+
readonly success: true;
|
|
66
|
+
} | {
|
|
67
|
+
readonly success: false;
|
|
68
|
+
readonly error: "gameNotFound" | "playerNotFound";
|
|
69
|
+
};
|
|
70
|
+
declare function leaveGame(gameId: string, playerId: string): LeaveGameResult;
|
|
71
|
+
//#endregion
|
|
72
|
+
//#region src/manager/actions/playCard.d.ts
|
|
73
|
+
type PlayCardResult = {
|
|
74
|
+
readonly success: true;
|
|
75
|
+
} | {
|
|
76
|
+
readonly success: false;
|
|
77
|
+
readonly error: "gameNotFound" | "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "cardNotFound" | "cardNotPlayable";
|
|
78
|
+
};
|
|
79
|
+
declare function playCard(gameId: string, playerId: string, cardId: string, isForOtherPlayerPile: boolean): PlayCardResult;
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region src/manager/actions/reportNoPlayableCards.d.ts
|
|
82
|
+
type ReportNoPlayableCardsResult = {
|
|
83
|
+
readonly success: true;
|
|
84
|
+
} | {
|
|
85
|
+
readonly success: false;
|
|
86
|
+
readonly error: "gameNotFound" | "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw";
|
|
87
|
+
};
|
|
88
|
+
declare function reportNoPlayableCards(gameId: string, playerId: string): ReportNoPlayableCardsResult;
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/manager/actions/sendChat.d.ts
|
|
91
|
+
type SendChatResult = {
|
|
92
|
+
readonly success: true;
|
|
93
|
+
} | {
|
|
94
|
+
readonly success: false;
|
|
95
|
+
readonly error: "gameNotFound" | "playerNotFound";
|
|
96
|
+
};
|
|
97
|
+
declare function sendChat(gameId: string, playerId: string, text: string): SendChatResult;
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/manager/actions/startGame.d.ts
|
|
100
|
+
type StartGameResult = {
|
|
101
|
+
readonly success: true;
|
|
102
|
+
} | {
|
|
103
|
+
readonly success: false;
|
|
104
|
+
readonly error: "gameNotFound" | "playerNotFound" | "invalidStatus" | "playerNotAdmin" | "minPlayersNotReached";
|
|
105
|
+
};
|
|
106
|
+
declare function startGame(gameId: string, playerId: string): StartGameResult;
|
|
107
|
+
//#endregion
|
|
108
|
+
export { type Card, type ChatMessage, type ClientState, type GameEvent, createGame, drawCard, getClientStateAndClearEvents, getEventsAndClearAcknowledged, getJoinableGames, joinGame, leaveGame, playCard, reportNoPlayableCards, sendChat, startGame };
|
|
109
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/manager/actions/createGame.ts","../../src/manager/actions/drawCard.ts","../../src/manager/actions/getClientStateAndClearEvents.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,gBAAA;EAAA,SAEU,OAAA;EAAA,SACA,MAAA;EAAA,SACA,QAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,UAAA,CAAW,MAAA,UAAgB,QAAA,WAAmB,gBAAgB;;;KCXzE,cAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBASC,QAAA,CAAS,MAAA,UAAgB,QAAA,WAAmB,cAAc;;;KCjBrE,kCAAA;EAAA,SAEU,OAAA;EAAA,SACA,KAAA,EAAO,WAAW;AAAA;EAAA,SAGlB,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,4BAAA,CACd,MAAA,UACA,QAAA,WACC,kCAAkC;;;KCbhC,mCAAA;EAAA,SAEU,OAAA;EAAA,SACA,MAAA,WAAiB,SAAS;AAAA;EAAA,SAG1B,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,6BAAA,CACd,MAAA,UACA,QAAA,UACA,UAAA,kBACC,mCAAmC;;;KCdjC,sBAAA;EAAA,SACM,OAAA;EAAA,SACA,KAAA;IAAA,SACE,EAAA;IAAA,SACA,UAAA;EAAA;AAAA;AAAA,iBAIG,gBAAA,IAAoB,sBAAsB;;;KCNrD,cAAA;EAAA,SAEU,OAAA;EAAA,SACA,QAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAOC,QAAA,CACd,MAAA,UACA,MAAA,UACA,QAAA,WACC,cAAc;;;KClBZ,eAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,SAAA,CAAU,MAAA,UAAgB,QAAA,WAAmB,eAAe;;;KCPvE,cAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBASC,QAAA,CACd,MAAA,UACA,QAAA,UACA,MAAA,UACA,oBAAA,YACC,cAAc;;;KCjBZ,2BAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAUC,qBAAA,CACd,MAAA,UACA,QAAA,WACC,2BAA2B;;;KCzBzB,cAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,QAAA,CACd,MAAA,UACA,QAAA,UACA,IAAA,WACC,cAAc;;;KCLZ,eAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAQC,SAAA,CAAU,MAAA,UAAgB,QAAA,WAAmB,eAAe"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { i as Card, n as ClientState, r as ChatMessage, t as GameEvent } from "../GameEvent-DDQ4jXxt.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/manager/actions/createGame.d.ts
|
|
4
|
+
type CreateGameResult = {
|
|
5
|
+
readonly success: true;
|
|
6
|
+
readonly gameId: string;
|
|
7
|
+
readonly playerId: string;
|
|
8
|
+
} | {
|
|
9
|
+
readonly success: false;
|
|
10
|
+
readonly error: "maxGamesReached";
|
|
11
|
+
};
|
|
12
|
+
declare function createGame(userId: string, username: string): CreateGameResult;
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/manager/actions/drawCard.d.ts
|
|
15
|
+
type DrawCardResult = {
|
|
16
|
+
readonly success: true;
|
|
17
|
+
} | {
|
|
18
|
+
readonly success: false;
|
|
19
|
+
readonly error: "gameNotFound" | "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "handFull" | "drawPileEmpty";
|
|
20
|
+
};
|
|
21
|
+
declare function drawCard(gameId: string, playerId: string): DrawCardResult;
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/manager/actions/getClientStateAndClearEvents.d.ts
|
|
24
|
+
type GetClientStateAndClearEventsResult = {
|
|
25
|
+
readonly success: true;
|
|
26
|
+
readonly state: ClientState;
|
|
27
|
+
} | {
|
|
28
|
+
readonly success: false;
|
|
29
|
+
readonly error: "gameNotFound" | "playerNotFound";
|
|
30
|
+
};
|
|
31
|
+
declare function getClientStateAndClearEvents(gameId: string, playerId: string): GetClientStateAndClearEventsResult;
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/manager/actions/getEventsAndClearAcknowledged.d.ts
|
|
34
|
+
type GetEventsAndClearAcknowledgedResult = {
|
|
35
|
+
readonly success: true;
|
|
36
|
+
readonly events: readonly GameEvent[];
|
|
37
|
+
} | {
|
|
38
|
+
readonly success: false;
|
|
39
|
+
readonly error: "gameNotFound" | "playerNotFound";
|
|
40
|
+
};
|
|
41
|
+
declare function getEventsAndClearAcknowledged(gameId: string, playerId: string, lastReadId: string | null): GetEventsAndClearAcknowledgedResult;
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/manager/actions/getJoinableGames.d.ts
|
|
44
|
+
type GetJoinableGamesResult = {
|
|
45
|
+
readonly success: true;
|
|
46
|
+
readonly games: readonly {
|
|
47
|
+
readonly id: string;
|
|
48
|
+
readonly numPlayers: number;
|
|
49
|
+
}[];
|
|
50
|
+
};
|
|
51
|
+
declare function getJoinableGames(): GetJoinableGamesResult;
|
|
52
|
+
//#endregion
|
|
53
|
+
//#region src/manager/actions/joinGame.d.ts
|
|
54
|
+
type JoinGameResult = {
|
|
55
|
+
readonly success: true;
|
|
56
|
+
readonly playerId: string;
|
|
57
|
+
} | {
|
|
58
|
+
readonly success: false;
|
|
59
|
+
readonly error: "gameNotFound" | "invalidStatus" | "maxPlayersReached" | "alreadyInGame";
|
|
60
|
+
};
|
|
61
|
+
declare function joinGame(gameId: string, userId: string, username: string): JoinGameResult;
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/manager/actions/leaveGame.d.ts
|
|
64
|
+
type LeaveGameResult = {
|
|
65
|
+
readonly success: true;
|
|
66
|
+
} | {
|
|
67
|
+
readonly success: false;
|
|
68
|
+
readonly error: "gameNotFound" | "playerNotFound";
|
|
69
|
+
};
|
|
70
|
+
declare function leaveGame(gameId: string, playerId: string): LeaveGameResult;
|
|
71
|
+
//#endregion
|
|
72
|
+
//#region src/manager/actions/playCard.d.ts
|
|
73
|
+
type PlayCardResult = {
|
|
74
|
+
readonly success: true;
|
|
75
|
+
} | {
|
|
76
|
+
readonly success: false;
|
|
77
|
+
readonly error: "gameNotFound" | "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "cardNotFound" | "cardNotPlayable";
|
|
78
|
+
};
|
|
79
|
+
declare function playCard(gameId: string, playerId: string, cardId: string, isForOtherPlayerPile: boolean): PlayCardResult;
|
|
80
|
+
//#endregion
|
|
81
|
+
//#region src/manager/actions/reportNoPlayableCards.d.ts
|
|
82
|
+
type ReportNoPlayableCardsResult = {
|
|
83
|
+
readonly success: true;
|
|
84
|
+
} | {
|
|
85
|
+
readonly success: false;
|
|
86
|
+
readonly error: "gameNotFound" | "playerNotFound" | "invalidStatus" | "canPlayAtNotReached" | "alreadyReported" | "hasPlayableCard" | "canDraw";
|
|
87
|
+
};
|
|
88
|
+
declare function reportNoPlayableCards(gameId: string, playerId: string): ReportNoPlayableCardsResult;
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/manager/actions/sendChat.d.ts
|
|
91
|
+
type SendChatResult = {
|
|
92
|
+
readonly success: true;
|
|
93
|
+
} | {
|
|
94
|
+
readonly success: false;
|
|
95
|
+
readonly error: "gameNotFound" | "playerNotFound";
|
|
96
|
+
};
|
|
97
|
+
declare function sendChat(gameId: string, playerId: string, text: string): SendChatResult;
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/manager/actions/startGame.d.ts
|
|
100
|
+
type StartGameResult = {
|
|
101
|
+
readonly success: true;
|
|
102
|
+
} | {
|
|
103
|
+
readonly success: false;
|
|
104
|
+
readonly error: "gameNotFound" | "playerNotFound" | "invalidStatus" | "playerNotAdmin" | "minPlayersNotReached";
|
|
105
|
+
};
|
|
106
|
+
declare function startGame(gameId: string, playerId: string): StartGameResult;
|
|
107
|
+
//#endregion
|
|
108
|
+
export { type Card, type ChatMessage, type ClientState, type GameEvent, createGame, drawCard, getClientStateAndClearEvents, getEventsAndClearAcknowledged, getJoinableGames, joinGame, leaveGame, playCard, reportNoPlayableCards, sendChat, startGame };
|
|
109
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/manager/actions/createGame.ts","../../src/manager/actions/drawCard.ts","../../src/manager/actions/getClientStateAndClearEvents.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,gBAAA;EAAA,SAEU,OAAA;EAAA,SACA,MAAA;EAAA,SACA,QAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,UAAA,CAAW,MAAA,UAAgB,QAAA,WAAmB,gBAAgB;;;KCXzE,cAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBASC,QAAA,CAAS,MAAA,UAAgB,QAAA,WAAmB,cAAc;;;KCjBrE,kCAAA;EAAA,SAEU,OAAA;EAAA,SACA,KAAA,EAAO,WAAW;AAAA;EAAA,SAGlB,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,4BAAA,CACd,MAAA,UACA,QAAA,WACC,kCAAkC;;;KCbhC,mCAAA;EAAA,SAEU,OAAA;EAAA,SACA,MAAA,WAAiB,SAAS;AAAA;EAAA,SAG1B,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,6BAAA,CACd,MAAA,UACA,QAAA,UACA,UAAA,kBACC,mCAAmC;;;KCdjC,sBAAA;EAAA,SACM,OAAA;EAAA,SACA,KAAA;IAAA,SACE,EAAA;IAAA,SACA,UAAA;EAAA;AAAA;AAAA,iBAIG,gBAAA,IAAoB,sBAAsB;;;KCNrD,cAAA;EAAA,SAEU,OAAA;EAAA,SACA,QAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAOC,QAAA,CACd,MAAA,UACA,MAAA,UACA,QAAA,WACC,cAAc;;;KClBZ,eAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,SAAA,CAAU,MAAA,UAAgB,QAAA,WAAmB,eAAe;;;KCPvE,cAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBASC,QAAA,CACd,MAAA,UACA,QAAA,UACA,MAAA,UACA,oBAAA,YACC,cAAc;;;KCjBZ,2BAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAUC,qBAAA,CACd,MAAA,UACA,QAAA,WACC,2BAA2B;;;KCzBzB,cAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAGC,QAAA,CACd,MAAA,UACA,QAAA,UACA,IAAA,WACC,cAAc;;;KCLZ,eAAA;EAAA,SAEU,OAAA;AAAA;EAAA,SAGA,OAAA;EAAA,SACA,KAAA;AAAA;AAAA,iBAQC,SAAA,CAAU,MAAA,UAAgB,QAAA,WAAmB,eAAe"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { a as leaveGame, c as getEventsAndClearAcknowledged, d as createGame, f as games, i as playCard, l as getClientStateAndClearEvents, m as WATCHDOG_INTERVAL_MS, n as sendChat, o as joinGame, p as GAME_KEY, r as reportNoPlayableCards, s as getJoinableGames, t as startGame, u as drawCard } from "../startGame-BC9XfFzG.mjs";
|
|
2
|
+
//#region src/manager/watchdog.ts
|
|
3
|
+
var Watchdog = class {
|
|
4
|
+
start() {
|
|
5
|
+
console.log(`watchdog start at ${Date.now()} (${GAME_KEY})`);
|
|
6
|
+
setInterval(() => this.wakeUp(), WATCHDOG_INTERVAL_MS);
|
|
7
|
+
}
|
|
8
|
+
wakeUp() {
|
|
9
|
+
const now = Date.now();
|
|
10
|
+
for (const game of games.values()) if (game.expiresAt <= now) {
|
|
11
|
+
games.delete(game.id);
|
|
12
|
+
console.log(`watchdog purged ${game.id} (${GAME_KEY})`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/manager/index.ts
|
|
18
|
+
new Watchdog().start();
|
|
19
|
+
//#endregion
|
|
20
|
+
export { createGame, drawCard, getClientStateAndClearEvents, getEventsAndClearAcknowledged, getJoinableGames, joinGame, leaveGame, playCard, reportNoPlayableCards, sendChat, startGame };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/manager/watchdog.ts","../../src/manager/index.ts"],"sourcesContent":["import { GAME_KEY, WATCHDOG_INTERVAL_MS } from \"./constants.js\";\nimport { games } from \"./games.js\";\n\nclass Watchdog {\n start() {\n console.log(`watchdog start at ${Date.now()} (${GAME_KEY})`);\n setInterval(() => this.wakeUp(), WATCHDOG_INTERVAL_MS);\n }\n\n wakeUp() {\n const now = Date.now();\n // console.log(`watchdog wakeUp at ${now} (${GAME_KEY})`);\n for (const game of games.values()) {\n if (game.expiresAt <= now) {\n games.delete(game.id);\n console.log(`watchdog purged ${game.id} (${GAME_KEY})`);\n }\n }\n }\n}\n\nexport const watchdog = new Watchdog();\n","import { watchdog } from \"./watchdog.js\";\n\nexport { createGame } from \"./actions/createGame.js\";\nexport { drawCard } from \"./actions/drawCard.js\";\nexport { getClientStateAndClearEvents } from \"./actions/getClientStateAndClearEvents.js\";\nexport { getEventsAndClearAcknowledged } from \"./actions/getEventsAndClearAcknowledged.js\";\nexport { getJoinableGames } from \"./actions/getJoinableGames.js\";\nexport { joinGame } from \"./actions/joinGame.js\";\nexport { leaveGame } from \"./actions/leaveGame.js\";\nexport { playCard } from \"./actions/playCard.js\";\nexport { reportNoPlayableCards } from \"./actions/reportNoPlayableCards.js\";\nexport { sendChat } from \"./actions/sendChat.js\";\nexport { startGame } from \"./actions/startGame.js\";\n\nexport type { Card } from \"./types/Card.js\";\nexport type { ChatMessage } from \"./types/ChatMessage.js\";\nexport type { ClientState } from \"./types/ClientState.js\";\nexport type { GameEvent } from \"./types/GameEvent.js\";\n\nwatchdog.start();\n"],"mappings":";;AAGA,IAAM,WAAN,MAAe;CACb,QAAQ;EACN,QAAQ,IAAI,qBAAqB,KAAK,IAAI,EAAE,IAAI,SAAS,EAAE;EAC3D,kBAAkB,KAAK,OAAO,GAAG,oBAAoB;CACvD;CAEA,SAAS;EACP,MAAM,MAAM,KAAK,IAAI;EAErB,KAAK,MAAM,QAAQ,MAAM,OAAO,GAC9B,IAAI,KAAK,aAAa,KAAK;GACzB,MAAM,OAAO,KAAK,EAAE;GACpB,QAAQ,IAAI,mBAAmB,KAAK,GAAG,IAAI,SAAS,EAAE;EACxD;CAEJ;AACF;;;ACAA,IDE4B,SCF5B,CAAA,CAAS,MAAM"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_startGame = require("../startGame-Bhk__XWk.cjs");
|
|
3
|
+
let zod = require("zod");
|
|
4
|
+
//#region src/server/actions/createGame.ts
|
|
5
|
+
function createGame(userId, username) {
|
|
6
|
+
return require_startGame.createGame(userId, username);
|
|
7
|
+
}
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/server/actions/drawCard.ts
|
|
10
|
+
const inputSchema$8 = zod.z.object({
|
|
11
|
+
gameId: zod.z.string(),
|
|
12
|
+
playerId: zod.z.string()
|
|
13
|
+
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
14
|
+
function drawCard(input) {
|
|
15
|
+
const parseResult = inputSchema$8.safeParse(input);
|
|
16
|
+
if (!parseResult.success) return {
|
|
17
|
+
success: false,
|
|
18
|
+
error: "invalidInput"
|
|
19
|
+
};
|
|
20
|
+
return require_startGame.drawCard(...parseResult.data);
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/server/actions/getClientStateAndClearEvents.ts
|
|
24
|
+
const inputSchema$7 = zod.z.object({
|
|
25
|
+
gameId: zod.z.string(),
|
|
26
|
+
playerId: zod.z.string()
|
|
27
|
+
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
28
|
+
function getClientStateAndClearEvents(input) {
|
|
29
|
+
const parseResult = inputSchema$7.safeParse(input);
|
|
30
|
+
if (!parseResult.success) return {
|
|
31
|
+
success: false,
|
|
32
|
+
error: "invalidInput"
|
|
33
|
+
};
|
|
34
|
+
return require_startGame.getClientStateAndClearEvents(...parseResult.data);
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/server/actions/getEventsAndClearAcknowledged.ts
|
|
38
|
+
const inputSchema$6 = zod.z.object({
|
|
39
|
+
gameId: zod.z.string(),
|
|
40
|
+
playerId: zod.z.string(),
|
|
41
|
+
lastReadId: zod.z.string().nullable()
|
|
42
|
+
}).transform(({ gameId, playerId, lastReadId }) => [
|
|
43
|
+
gameId,
|
|
44
|
+
playerId,
|
|
45
|
+
lastReadId
|
|
46
|
+
]);
|
|
47
|
+
function getEventsAndClearAcknowledged(input) {
|
|
48
|
+
const parseResult = inputSchema$6.safeParse(input);
|
|
49
|
+
if (!parseResult.success) return {
|
|
50
|
+
success: false,
|
|
51
|
+
error: "invalidInput"
|
|
52
|
+
};
|
|
53
|
+
return require_startGame.getEventsAndClearAcknowledged(...parseResult.data);
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
//#region src/server/actions/getJoinableGames.ts
|
|
57
|
+
function getJoinableGames() {
|
|
58
|
+
return require_startGame.getJoinableGames();
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
//#region src/server/actions/joinGame.ts
|
|
62
|
+
const inputSchema$5 = zod.z.object({ gameId: zod.z.string() }).transform(({ gameId }) => [gameId]);
|
|
63
|
+
function joinGame(input, userId, username) {
|
|
64
|
+
const parseResult = inputSchema$5.safeParse(input);
|
|
65
|
+
if (!parseResult.success) return {
|
|
66
|
+
success: false,
|
|
67
|
+
error: "invalidInput"
|
|
68
|
+
};
|
|
69
|
+
return require_startGame.joinGame(...parseResult.data, userId, username);
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
//#region src/server/actions/leaveGame.ts
|
|
73
|
+
const inputSchema$4 = zod.z.object({
|
|
74
|
+
gameId: zod.z.string(),
|
|
75
|
+
playerId: zod.z.string()
|
|
76
|
+
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
77
|
+
function leaveGame(input) {
|
|
78
|
+
const parseResult = inputSchema$4.safeParse(input);
|
|
79
|
+
if (!parseResult.success) return {
|
|
80
|
+
success: false,
|
|
81
|
+
error: "invalidInput"
|
|
82
|
+
};
|
|
83
|
+
return require_startGame.leaveGame(...parseResult.data);
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
//#region src/server/actions/playCard.ts
|
|
87
|
+
const inputSchema$3 = zod.z.object({
|
|
88
|
+
gameId: zod.z.string(),
|
|
89
|
+
playerId: zod.z.string(),
|
|
90
|
+
cardId: zod.z.string(),
|
|
91
|
+
isForOtherPlayerPile: zod.z.boolean()
|
|
92
|
+
}).transform(({ gameId, playerId, cardId, isForOtherPlayerPile }) => [
|
|
93
|
+
gameId,
|
|
94
|
+
playerId,
|
|
95
|
+
cardId,
|
|
96
|
+
isForOtherPlayerPile
|
|
97
|
+
]);
|
|
98
|
+
function playCard(input) {
|
|
99
|
+
const parseResult = inputSchema$3.safeParse(input);
|
|
100
|
+
if (!parseResult.success) return {
|
|
101
|
+
success: false,
|
|
102
|
+
error: "invalidInput"
|
|
103
|
+
};
|
|
104
|
+
return require_startGame.playCard(...parseResult.data);
|
|
105
|
+
}
|
|
106
|
+
//#endregion
|
|
107
|
+
//#region src/server/actions/reportNoPlayableCards.ts
|
|
108
|
+
const inputSchema$2 = zod.z.object({
|
|
109
|
+
gameId: zod.z.string(),
|
|
110
|
+
playerId: zod.z.string()
|
|
111
|
+
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
112
|
+
function reportNoPlayableCards(input) {
|
|
113
|
+
const parseResult = inputSchema$2.safeParse(input);
|
|
114
|
+
if (!parseResult.success) return {
|
|
115
|
+
success: false,
|
|
116
|
+
error: "invalidInput"
|
|
117
|
+
};
|
|
118
|
+
return require_startGame.reportNoPlayableCards(...parseResult.data);
|
|
119
|
+
}
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/server/actions/sendChat.ts
|
|
122
|
+
const inputSchema$1 = zod.z.object({
|
|
123
|
+
gameId: zod.z.string(),
|
|
124
|
+
playerId: zod.z.string(),
|
|
125
|
+
text: zod.z.string()
|
|
126
|
+
}).transform(({ gameId, playerId, text }) => [
|
|
127
|
+
gameId,
|
|
128
|
+
playerId,
|
|
129
|
+
text
|
|
130
|
+
]);
|
|
131
|
+
function sendChat(input) {
|
|
132
|
+
const parseResult = inputSchema$1.safeParse(input);
|
|
133
|
+
if (!parseResult.success) return {
|
|
134
|
+
success: false,
|
|
135
|
+
error: "invalidInput"
|
|
136
|
+
};
|
|
137
|
+
return require_startGame.sendChat(...parseResult.data);
|
|
138
|
+
}
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region src/server/actions/startGame.ts
|
|
141
|
+
const inputSchema = zod.z.object({
|
|
142
|
+
gameId: zod.z.string(),
|
|
143
|
+
playerId: zod.z.string()
|
|
144
|
+
}).transform(({ gameId, playerId }) => [gameId, playerId]);
|
|
145
|
+
function startGame(input) {
|
|
146
|
+
const parseResult = inputSchema.safeParse(input);
|
|
147
|
+
if (!parseResult.success) return {
|
|
148
|
+
success: false,
|
|
149
|
+
error: "invalidInput"
|
|
150
|
+
};
|
|
151
|
+
return require_startGame.startGame(...parseResult.data);
|
|
152
|
+
}
|
|
153
|
+
//#endregion
|
|
154
|
+
//#region src/server/index.ts
|
|
155
|
+
const actions = [
|
|
156
|
+
{
|
|
157
|
+
path: "/createGame",
|
|
158
|
+
func: createGame
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
path: "/drawCard",
|
|
162
|
+
func: drawCard
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
path: "/getClientStateAndClearEvents",
|
|
166
|
+
func: getClientStateAndClearEvents
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
path: "/getEventsAndClearAcknowledged",
|
|
170
|
+
func: getEventsAndClearAcknowledged
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
path: "/getJoinableGames",
|
|
174
|
+
func: getJoinableGames
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
path: "/joinGame",
|
|
178
|
+
func: joinGame
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
path: "/leaveGame",
|
|
182
|
+
func: leaveGame
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
path: "/playCard",
|
|
186
|
+
func: playCard
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
path: "/reportNoPlayableCards",
|
|
190
|
+
func: reportNoPlayableCards
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
path: "/sendChat",
|
|
194
|
+
func: sendChat
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
path: "/startGame",
|
|
198
|
+
func: startGame
|
|
199
|
+
}
|
|
200
|
+
];
|
|
201
|
+
//#endregion
|
|
202
|
+
exports.actions = actions;
|
|
203
|
+
|
|
204
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["doCreateGame","inputSchema","z","doDrawCard","inputSchema","z","doGetClientStateAndClearEvents","inputSchema","z","doGetEventsAndClearAcknowledged","doGetJoinableGames","inputSchema","z","doJoinGame","inputSchema","z","doLeaveGame","inputSchema","z","doPlayCard","inputSchema","z","doReportNoPlayableCards","inputSchema","z","doSendChat","z","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/actions/createGame.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/actions/drawCard.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/actions/getClientStateAndClearEvents.js\";\nimport type { ClientState } from \"../../manager/types/ClientState.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/actions/getEventsAndClearAcknowledged.js\";\nimport type { GameEvent } from \"../../manager/types/GameEvent.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/actions/getJoinableGames.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/actions/joinGame.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/actions/leaveGame.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/actions/playCard.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/actions/reportNoPlayableCards.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/actions/sendChat.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/actions/startGame.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 const actions = [\n { path: \"/createGame\", func: createGame },\n { path: \"/drawCard\", func: drawCard },\n { path: \"/getClientStateAndClearEvents\", func: getClientStateAndClearEvents },\n {\n path: \"/getEventsAndClearAcknowledged\",\n func: getEventsAndClearAcknowledged,\n },\n { path: \"/getJoinableGames\", func: getJoinableGames },\n { path: \"/joinGame\", func: joinGame },\n { path: \"/leaveGame\", func: leaveGame },\n { path: \"/playCard\", func: playCard },\n { path: \"/reportNoPlayableCards\", func: reportNoPlayableCards },\n { path: \"/sendChat\", func: sendChat },\n { path: \"/startGame\", func: startGame },\n] as const;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { S as createGame, b as drawCard, c as playCard, f as joinGame, g as getEventsAndClearAcknowledged, i as sendChat, m as getJoinableGames, n as startGame, o as reportNoPlayableCards, u as leaveGame, v as getClientStateAndClearEvents } from "../startGame-5InkAgEp.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/server/index.d.ts
|
|
4
|
+
declare const actions: readonly [{
|
|
5
|
+
readonly path: "/createGame";
|
|
6
|
+
readonly func: typeof createGame;
|
|
7
|
+
}, {
|
|
8
|
+
readonly path: "/drawCard";
|
|
9
|
+
readonly func: typeof drawCard;
|
|
10
|
+
}, {
|
|
11
|
+
readonly path: "/getClientStateAndClearEvents";
|
|
12
|
+
readonly func: typeof getClientStateAndClearEvents;
|
|
13
|
+
}, {
|
|
14
|
+
readonly path: "/getEventsAndClearAcknowledged";
|
|
15
|
+
readonly func: typeof getEventsAndClearAcknowledged;
|
|
16
|
+
}, {
|
|
17
|
+
readonly path: "/getJoinableGames";
|
|
18
|
+
readonly func: typeof getJoinableGames;
|
|
19
|
+
}, {
|
|
20
|
+
readonly path: "/joinGame";
|
|
21
|
+
readonly func: typeof joinGame;
|
|
22
|
+
}, {
|
|
23
|
+
readonly path: "/leaveGame";
|
|
24
|
+
readonly func: typeof leaveGame;
|
|
25
|
+
}, {
|
|
26
|
+
readonly path: "/playCard";
|
|
27
|
+
readonly func: typeof playCard;
|
|
28
|
+
}, {
|
|
29
|
+
readonly path: "/reportNoPlayableCards";
|
|
30
|
+
readonly func: typeof reportNoPlayableCards;
|
|
31
|
+
}, {
|
|
32
|
+
readonly path: "/sendChat";
|
|
33
|
+
readonly func: typeof sendChat;
|
|
34
|
+
}, {
|
|
35
|
+
readonly path: "/startGame";
|
|
36
|
+
readonly func: typeof startGame;
|
|
37
|
+
}];
|
|
38
|
+
//#endregion
|
|
39
|
+
export { actions };
|
|
40
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/server/index.ts"],"mappings":";;;cAYa,OAAA;EAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { S as createGame, b as drawCard, c as playCard, f as joinGame, g as getEventsAndClearAcknowledged, i as sendChat, m as getJoinableGames, n as startGame, o as reportNoPlayableCards, u as leaveGame, v as getClientStateAndClearEvents } from "../startGame-ayp8a-Cl.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/server/index.d.ts
|
|
4
|
+
declare const actions: readonly [{
|
|
5
|
+
readonly path: "/createGame";
|
|
6
|
+
readonly func: typeof createGame;
|
|
7
|
+
}, {
|
|
8
|
+
readonly path: "/drawCard";
|
|
9
|
+
readonly func: typeof drawCard;
|
|
10
|
+
}, {
|
|
11
|
+
readonly path: "/getClientStateAndClearEvents";
|
|
12
|
+
readonly func: typeof getClientStateAndClearEvents;
|
|
13
|
+
}, {
|
|
14
|
+
readonly path: "/getEventsAndClearAcknowledged";
|
|
15
|
+
readonly func: typeof getEventsAndClearAcknowledged;
|
|
16
|
+
}, {
|
|
17
|
+
readonly path: "/getJoinableGames";
|
|
18
|
+
readonly func: typeof getJoinableGames;
|
|
19
|
+
}, {
|
|
20
|
+
readonly path: "/joinGame";
|
|
21
|
+
readonly func: typeof joinGame;
|
|
22
|
+
}, {
|
|
23
|
+
readonly path: "/leaveGame";
|
|
24
|
+
readonly func: typeof leaveGame;
|
|
25
|
+
}, {
|
|
26
|
+
readonly path: "/playCard";
|
|
27
|
+
readonly func: typeof playCard;
|
|
28
|
+
}, {
|
|
29
|
+
readonly path: "/reportNoPlayableCards";
|
|
30
|
+
readonly func: typeof reportNoPlayableCards;
|
|
31
|
+
}, {
|
|
32
|
+
readonly path: "/sendChat";
|
|
33
|
+
readonly func: typeof sendChat;
|
|
34
|
+
}, {
|
|
35
|
+
readonly path: "/startGame";
|
|
36
|
+
readonly func: typeof startGame;
|
|
37
|
+
}];
|
|
38
|
+
//#endregion
|
|
39
|
+
export { actions };
|
|
40
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/server/index.ts"],"mappings":";;;cAYa,OAAA;EAAA"}
|