@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.
@@ -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 actions: readonly { path: string; action: (...args: any[]) => any }[];\n },\n TPath extends TServer[\"actions\"][number][\"path\"],\n> = ReturnType<Extract<TServer[\"actions\"][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
+ {"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 actions: readonly { path: string; action: (...args: any[]) => any }[];\n },\n TPath extends TServer[\"actions\"][number][\"path\"],\n> = ReturnType<Extract<TServer[\"actions\"][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
+ {"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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"}
@@ -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;;;;aAeikI;aAA+B;;;;;aAA4H;;;;;;;;;;;;oBAfzuI;;;;;;;;;;;;;8BAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/manager/createManager.ts"],"mappings":";;cAea,gBAAa,gBAAA,kBAAA;;;;aAe4lI;aAA+B;;;;;aAA4H;;;;;;;;;;;;oBAfpwI"}
@@ -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;;;;aAeikI;aAA+B;;;;;aAA4H;;;;;;;;;;;;oBAfzuI;;;;;;;;;;;;;8BAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/manager/createManager.ts"],"mappings":";;cAea,gBAAa,gBAAA,kBAAA;;;;aAe4lI;aAA+B;;;;;aAA4H;;;;;;;;;;;;oBAfpwI"}
@@ -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, (manager) => {
7
- const drawCardInputSchema = zod.z.object({
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
- function drawCard(input) {
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
- function playCard(input) {
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, (manager) => {\n const drawCardInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\n function drawCard(input: unknown) {\n const parseResult = drawCardInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" } as const;\n }\n return manager.drawCard(...parseResult.data);\n }\n\n const 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\n function playCard(input: unknown) {\n const parseResult = playCardInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" } as const;\n }\n return manager.playCard(...parseResult.data);\n }\n\n const reportNoPlayableCardsInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\n function reportNoPlayableCards(input: unknown) {\n const parseResult = reportNoPlayableCardsInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" } as const;\n }\n return manager.reportNoPlayableCards(...parseResult.data);\n }\n\n return [\n { path: \"/drawCard\", action: drawCard },\n { path: \"/playCard\", action: playCard },\n { path: \"/reportNoPlayableCards\", action: reportNoPlayableCards },\n ];\n});\n"],"mappings":";;;;;AAIA,MAAa,gBAAA,GAAeA,oBAAAA,oBAAAA,CAAoBC,gBAAAA,gBAAgB,YAAY;CAC1E,MAAM,sBAAsBC,IAAAA,EACzB,OAAO;EACN,QAAQA,IAAAA,EAAE,OAAO;EACjB,UAAUA,IAAAA,EAAE,OAAO;CACrB,CAAC,CAAC,CACD,WAAW,EAAE,QAAQ,eAAe,CAAC,QAAQ,QAAQ,CAAU;CAElE,SAAS,SAAS,OAAgB;EAChC,MAAM,cAAc,oBAAoB,UAAU,KAAK;EACvD,IAAI,CAAC,YAAY,SACf,OAAO;GAAE,SAAS;GAAO,OAAO;EAAe;EAEjD,OAAO,QAAQ,SAAS,GAAG,YAAY,IAAI;CAC7C;CAEA,MAAM,sBAAsBA,IAAAA,EACzB,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,SAAS,SAAS,OAAgB;EAChC,MAAM,cAAc,oBAAoB,UAAU,KAAK;EACvD,IAAI,CAAC,YAAY,SACf,OAAO;GAAE,SAAS;GAAO,OAAO;EAAe;EAEjD,OAAO,QAAQ,SAAS,GAAG,YAAY,IAAI;CAC7C;CAEA,MAAM,mCAAmCA,IAAAA,EACtC,OAAO;EACN,QAAQA,IAAAA,EAAE,OAAO;EACjB,UAAUA,IAAAA,EAAE,OAAO;CACrB,CAAC,CAAC,CACD,WAAW,EAAE,QAAQ,eAAe,CAAC,QAAQ,QAAQ,CAAU;CAElE,SAAS,sBAAsB,OAAgB;EAC7C,MAAM,cAAc,iCAAiC,UAAU,KAAK;EACpE,IAAI,CAAC,YAAY,SACf,OAAO;GAAE,SAAS;GAAO,OAAO;EAAe;EAEjD,OAAO,QAAQ,sBAAsB,GAAG,YAAY,IAAI;CAC1D;CAEA,OAAO;EACL;GAAE,MAAM;GAAa,QAAQ;EAAS;EACtC;GAAE,MAAM;GAAa,QAAQ;EAAS;EACtC;GAAE,MAAM;GAA0B,QAAQ;EAAsB;CAClE;AACF,CAAC"}
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"}
@@ -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 actions: 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAQc,SAAA;;;;;;;;;;;aAoBA,SAAA;;;;;;;;;;;aAea,SAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/server/createServer.ts"],"mappings":";;cAIa,eAAY,gBAAA,kBAAA;;;;;;;;;;;;;;;;;;sBAAZ;;;;;;;;;;;;gCAAA"}
@@ -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 actions: 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAQc,SAAA;;;;;;;;;;;aAoBA,SAAA;;;;;;;;;;;aAea,SAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/server/createServer.ts"],"mappings":";;cAIa,eAAY,gBAAA,kBAAA;;;;;;;;;;;;;;;;;;sBAAZ;;;;;;;;;;;;gCAAA"}
@@ -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, (manager) => {
6
- const drawCardInputSchema = z.object({
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
- function drawCard(input) {
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
- function playCard(input) {
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, (manager) => {\n const drawCardInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\n function drawCard(input: unknown) {\n const parseResult = drawCardInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" } as const;\n }\n return manager.drawCard(...parseResult.data);\n }\n\n const 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\n function playCard(input: unknown) {\n const parseResult = playCardInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" } as const;\n }\n return manager.playCard(...parseResult.data);\n }\n\n const reportNoPlayableCardsInputSchema = z\n .object({\n gameId: z.string(),\n playerId: z.string(),\n })\n .transform(({ gameId, playerId }) => [gameId, playerId] as const);\n\n function reportNoPlayableCards(input: unknown) {\n const parseResult = reportNoPlayableCardsInputSchema.safeParse(input);\n if (!parseResult.success) {\n return { success: false, error: \"invalidInput\" } as const;\n }\n return manager.reportNoPlayableCards(...parseResult.data);\n }\n\n return [\n { path: \"/drawCard\", action: drawCard },\n { path: \"/playCard\", action: playCard },\n { path: \"/reportNoPlayableCards\", action: reportNoPlayableCards },\n ];\n});\n"],"mappings":";;;;AAIA,MAAa,eAAe,oBAAoB,gBAAgB,YAAY;CAC1E,MAAM,sBAAsB,EACzB,OAAO;EACN,QAAQ,EAAE,OAAO;EACjB,UAAU,EAAE,OAAO;CACrB,CAAC,CAAC,CACD,WAAW,EAAE,QAAQ,eAAe,CAAC,QAAQ,QAAQ,CAAU;CAElE,SAAS,SAAS,OAAgB;EAChC,MAAM,cAAc,oBAAoB,UAAU,KAAK;EACvD,IAAI,CAAC,YAAY,SACf,OAAO;GAAE,SAAS;GAAO,OAAO;EAAe;EAEjD,OAAO,QAAQ,SAAS,GAAG,YAAY,IAAI;CAC7C;CAEA,MAAM,sBAAsB,EACzB,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,SAAS,SAAS,OAAgB;EAChC,MAAM,cAAc,oBAAoB,UAAU,KAAK;EACvD,IAAI,CAAC,YAAY,SACf,OAAO;GAAE,SAAS;GAAO,OAAO;EAAe;EAEjD,OAAO,QAAQ,SAAS,GAAG,YAAY,IAAI;CAC7C;CAEA,MAAM,mCAAmC,EACtC,OAAO;EACN,QAAQ,EAAE,OAAO;EACjB,UAAU,EAAE,OAAO;CACrB,CAAC,CAAC,CACD,WAAW,EAAE,QAAQ,eAAe,CAAC,QAAQ,QAAQ,CAAU;CAElE,SAAS,sBAAsB,OAAgB;EAC7C,MAAM,cAAc,iCAAiC,UAAU,KAAK;EACpE,IAAI,CAAC,YAAY,SACf,OAAO;GAAE,SAAS;GAAO,OAAO;EAAe;EAEjD,OAAO,QAAQ,sBAAsB,GAAG,YAAY,IAAI;CAC1D;CAEA,OAAO;EACL;GAAE,MAAM;GAAa,QAAQ;EAAS;EACtC;GAAE,MAAM;GAAa,QAAQ;EAAS;EACtC;GAAE,MAAM;GAA0B,QAAQ;EAAsB;CAClE;AACF,CAAC"}
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.11.3",
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.15.0",
89
+ "@hellacardgames/lib": "^0.16.0",
90
90
  "zod": "^4.4.3"
91
91
  }
92
92
  }