@my-swu/simulator-client 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.
Files changed (530) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +355 -0
  3. package/dist/actionable.d.ts +61 -0
  4. package/dist/actionable.js +91 -0
  5. package/dist/client.d.ts +157 -0
  6. package/dist/client.js +92 -0
  7. package/dist/connection/handshake.d.ts +30 -0
  8. package/dist/connection/handshake.js +62 -0
  9. package/dist/connection/options.d.ts +36 -0
  10. package/dist/connection/options.js +1 -0
  11. package/dist/connection/url.d.ts +55 -0
  12. package/dist/connection/url.js +46 -0
  13. package/dist/connection/wait.d.ts +22 -0
  14. package/dist/connection/wait.js +10 -0
  15. package/dist/connection.d.ts +110 -0
  16. package/dist/connection.js +358 -0
  17. package/dist/generated/index.d.ts +121 -0
  18. package/dist/generated/index.js +1 -0
  19. package/dist/generated/public-types.d.ts +2 -0
  20. package/dist/generated/public-types.js +1 -0
  21. package/dist/generated/schemas.d.ts +27 -0
  22. package/dist/generated/schemas.js +21264 -0
  23. package/dist/generated/types/abandon-match-request.d.ts +1 -0
  24. package/dist/generated/types/abandon-match-request.js +2 -0
  25. package/dist/generated/types/abandon-match-response.d.ts +1 -0
  26. package/dist/generated/types/abandon-match-response.js +2 -0
  27. package/dist/generated/types/add-lobby-ai-player-request.d.ts +1 -0
  28. package/dist/generated/types/add-lobby-ai-player-request.js +2 -0
  29. package/dist/generated/types/ai-driver-error-report-list-response.d.ts +1 -0
  30. package/dist/generated/types/ai-driver-error-report-list-response.js +2 -0
  31. package/dist/generated/types/ai-driver-error-report-response.d.ts +1 -0
  32. package/dist/generated/types/ai-driver-error-report-response.js +2 -0
  33. package/dist/generated/types/api-error-response.d.ts +1 -0
  34. package/dist/generated/types/api-error-response.js +2 -0
  35. package/dist/generated/types/card-catalog-refresh-response.d.ts +1 -0
  36. package/dist/generated/types/card-catalog-refresh-response.js +2 -0
  37. package/dist/generated/types/cards-response.d.ts +1 -0
  38. package/dist/generated/types/cards-response.js +2 -0
  39. package/dist/generated/types/client-message.d.ts +1 -0
  40. package/dist/generated/types/client-message.js +2 -0
  41. package/dist/generated/types/close-tournament-room-request.d.ts +1 -0
  42. package/dist/generated/types/close-tournament-room-request.js +2 -0
  43. package/dist/generated/types/common.d.ts +5361 -0
  44. package/dist/generated/types/common.js +2 -0
  45. package/dist/generated/types/covered-cards-response.d.ts +47 -0
  46. package/dist/generated/types/covered-cards-response.js +2 -0
  47. package/dist/generated/types/create-limited-event-request.d.ts +1 -0
  48. package/dist/generated/types/create-limited-event-request.js +2 -0
  49. package/dist/generated/types/create-lobby-request.d.ts +1 -0
  50. package/dist/generated/types/create-lobby-request.js +2 -0
  51. package/dist/generated/types/create-match-request.d.ts +1 -0
  52. package/dist/generated/types/create-match-request.js +2 -0
  53. package/dist/generated/types/create-meta-window-request.d.ts +1 -0
  54. package/dist/generated/types/create-meta-window-request.js +2 -0
  55. package/dist/generated/types/create-tournament-room-request.d.ts +1 -0
  56. package/dist/generated/types/create-tournament-room-request.js +2 -0
  57. package/dist/generated/types/create-tournament-table-request.d.ts +1 -0
  58. package/dist/generated/types/create-tournament-table-request.js +2 -0
  59. package/dist/generated/types/error-payload.d.ts +1 -0
  60. package/dist/generated/types/error-payload.js +2 -0
  61. package/dist/generated/types/format-event-request.d.ts +1 -0
  62. package/dist/generated/types/format-event-request.js +2 -0
  63. package/dist/generated/types/format-event-response.d.ts +1 -0
  64. package/dist/generated/types/format-event-response.js +2 -0
  65. package/dist/generated/types/game-command.d.ts +1 -0
  66. package/dist/generated/types/game-command.js +2 -0
  67. package/dist/generated/types/game-event.d.ts +1 -0
  68. package/dist/generated/types/game-event.js +2 -0
  69. package/dist/generated/types/game-state.d.ts +1 -0
  70. package/dist/generated/types/game-state.js +2 -0
  71. package/dist/generated/types/get-match-response.d.ts +1 -0
  72. package/dist/generated/types/get-match-response.js +2 -0
  73. package/dist/generated/types/health-response.d.ts +1 -0
  74. package/dist/generated/types/health-response.js +2 -0
  75. package/dist/generated/types/join-limited-event-request.d.ts +1 -0
  76. package/dist/generated/types/join-limited-event-request.js +2 -0
  77. package/dist/generated/types/join-lobby-request.d.ts +1 -0
  78. package/dist/generated/types/join-lobby-request.js +2 -0
  79. package/dist/generated/types/join-match-request.d.ts +1 -0
  80. package/dist/generated/types/join-match-request.js +2 -0
  81. package/dist/generated/types/join-tournament-room-request.d.ts +1 -0
  82. package/dist/generated/types/join-tournament-room-request.js +2 -0
  83. package/dist/generated/types/join-tournament-table-request.d.ts +1 -0
  84. package/dist/generated/types/join-tournament-table-request.js +2 -0
  85. package/dist/generated/types/kick-lobby-player-request.d.ts +1 -0
  86. package/dist/generated/types/kick-lobby-player-request.js +2 -0
  87. package/dist/generated/types/kick-lobby-spectator-request.d.ts +1 -0
  88. package/dist/generated/types/kick-lobby-spectator-request.js +2 -0
  89. package/dist/generated/types/leave-lobby-request.d.ts +1 -0
  90. package/dist/generated/types/leave-lobby-request.js +2 -0
  91. package/dist/generated/types/leave-match-request.d.ts +1 -0
  92. package/dist/generated/types/leave-match-request.js +2 -0
  93. package/dist/generated/types/leave-match-response.d.ts +1 -0
  94. package/dist/generated/types/leave-match-response.js +2 -0
  95. package/dist/generated/types/leave-tournament-room-request.d.ts +1 -0
  96. package/dist/generated/types/leave-tournament-room-request.js +2 -0
  97. package/dist/generated/types/limited-event-access-response.d.ts +1 -0
  98. package/dist/generated/types/limited-event-access-response.js +2 -0
  99. package/dist/generated/types/limited-event-command-request.d.ts +1 -0
  100. package/dist/generated/types/limited-event-command-request.js +2 -0
  101. package/dist/generated/types/limited-event-preflight-response.d.ts +1 -0
  102. package/dist/generated/types/limited-event-preflight-response.js +2 -0
  103. package/dist/generated/types/limited-event-response.d.ts +1 -0
  104. package/dist/generated/types/limited-event-response.js +2 -0
  105. package/dist/generated/types/list-active-ai-matches-request.d.ts +1 -0
  106. package/dist/generated/types/list-active-ai-matches-request.js +2 -0
  107. package/dist/generated/types/list-active-ai-matches-response.d.ts +1 -0
  108. package/dist/generated/types/list-active-ai-matches-response.js +2 -0
  109. package/dist/generated/types/lobby-access-response.d.ts +1 -0
  110. package/dist/generated/types/lobby-access-response.js +2 -0
  111. package/dist/generated/types/lobby-chat-request.d.ts +1 -0
  112. package/dist/generated/types/lobby-chat-request.js +2 -0
  113. package/dist/generated/types/lobby-chat-response.d.ts +1 -0
  114. package/dist/generated/types/lobby-chat-response.js +2 -0
  115. package/dist/generated/types/lobby-list-response.d.ts +1 -0
  116. package/dist/generated/types/lobby-list-response.js +2 -0
  117. package/dist/generated/types/lobby-list-server-message.d.ts +1 -0
  118. package/dist/generated/types/lobby-list-server-message.js +2 -0
  119. package/dist/generated/types/lobby-matchmaking-decision-request.d.ts +1 -0
  120. package/dist/generated/types/lobby-matchmaking-decision-request.js +2 -0
  121. package/dist/generated/types/lobby-matchmaking-request.d.ts +1 -0
  122. package/dist/generated/types/lobby-matchmaking-request.js +2 -0
  123. package/dist/generated/types/lobby-response.d.ts +1 -0
  124. package/dist/generated/types/lobby-response.js +2 -0
  125. package/dist/generated/types/lobby-server-message.d.ts +1 -0
  126. package/dist/generated/types/lobby-server-message.js +2 -0
  127. package/dist/generated/types/lobby-sync-request.d.ts +1 -0
  128. package/dist/generated/types/lobby-sync-request.js +2 -0
  129. package/dist/generated/types/match-access-response.d.ts +1 -0
  130. package/dist/generated/types/match-access-response.js +2 -0
  131. package/dist/generated/types/match-chat-lookup-response.d.ts +1 -0
  132. package/dist/generated/types/match-chat-lookup-response.js +2 -0
  133. package/dist/generated/types/match-connection-role.d.ts +1 -0
  134. package/dist/generated/types/match-connection-role.js +2 -0
  135. package/dist/generated/types/match-history-deck-stats-request.d.ts +1 -0
  136. package/dist/generated/types/match-history-deck-stats-request.js +2 -0
  137. package/dist/generated/types/match-history-deck-stats-response.d.ts +1 -0
  138. package/dist/generated/types/match-history-deck-stats-response.js +2 -0
  139. package/dist/generated/types/match-history-entry.d.ts +1 -0
  140. package/dist/generated/types/match-history-entry.js +2 -0
  141. package/dist/generated/types/match-history-list-request.d.ts +1 -0
  142. package/dist/generated/types/match-history-list-request.js +2 -0
  143. package/dist/generated/types/match-history-list-response.d.ts +1 -0
  144. package/dist/generated/types/match-history-list-response.js +2 -0
  145. package/dist/generated/types/match-history-replay-request.d.ts +1 -0
  146. package/dist/generated/types/match-history-replay-request.js +2 -0
  147. package/dist/generated/types/match-history-replay-response.d.ts +1 -0
  148. package/dist/generated/types/match-history-replay-response.js +2 -0
  149. package/dist/generated/types/match-history-restore-request.d.ts +1 -0
  150. package/dist/generated/types/match-history-restore-request.js +2 -0
  151. package/dist/generated/types/match-save-payload.d.ts +1 -0
  152. package/dist/generated/types/match-save-payload.js +2 -0
  153. package/dist/generated/types/match-spectator-access-response.d.ts +1 -0
  154. package/dist/generated/types/match-spectator-access-response.js +2 -0
  155. package/dist/generated/types/meta-window.d.ts +1 -0
  156. package/dist/generated/types/meta-window.js +2 -0
  157. package/dist/generated/types/meta-windows-response.d.ts +1 -0
  158. package/dist/generated/types/meta-windows-response.js +2 -0
  159. package/dist/generated/types/prepare-lobby-limited-ai-decks-request.d.ts +1 -0
  160. package/dist/generated/types/prepare-lobby-limited-ai-decks-request.js +2 -0
  161. package/dist/generated/types/random-lobby-matchmaking-request.d.ts +173 -0
  162. package/dist/generated/types/random-lobby-matchmaking-request.js +2 -0
  163. package/dist/generated/types/ranked-admin-status.d.ts +1 -0
  164. package/dist/generated/types/ranked-admin-status.js +2 -0
  165. package/dist/generated/types/ranked-leaderboard-entry.d.ts +1 -0
  166. package/dist/generated/types/ranked-leaderboard-entry.js +2 -0
  167. package/dist/generated/types/ranked-leaderboard-query.d.ts +1 -0
  168. package/dist/generated/types/ranked-leaderboard-query.js +2 -0
  169. package/dist/generated/types/ranked-leaderboard-response.d.ts +1 -0
  170. package/dist/generated/types/ranked-leaderboard-response.js +2 -0
  171. package/dist/generated/types/ranked-matchmaking-request.d.ts +137 -0
  172. package/dist/generated/types/ranked-matchmaking-request.js +2 -0
  173. package/dist/generated/types/ranked-matchmaking-view.d.ts +1 -0
  174. package/dist/generated/types/ranked-matchmaking-view.js +2 -0
  175. package/dist/generated/types/ranked-profile-request.d.ts +1 -0
  176. package/dist/generated/types/ranked-profile-request.js +2 -0
  177. package/dist/generated/types/ranked-profile-response.d.ts +1 -0
  178. package/dist/generated/types/ranked-profile-response.js +2 -0
  179. package/dist/generated/types/ranked-queue.d.ts +1 -0
  180. package/dist/generated/types/ranked-queue.js +2 -0
  181. package/dist/generated/types/ready-tournament-table-request.d.ts +7 -0
  182. package/dist/generated/types/ready-tournament-table-request.js +2 -0
  183. package/dist/generated/types/rematch-match-request.d.ts +1 -0
  184. package/dist/generated/types/rematch-match-request.js +2 -0
  185. package/dist/generated/types/rematch-match-response.d.ts +1 -0
  186. package/dist/generated/types/rematch-match-response.js +2 -0
  187. package/dist/generated/types/resolve-card-ids-request.d.ts +1 -0
  188. package/dist/generated/types/resolve-card-ids-request.js +2 -0
  189. package/dist/generated/types/resolve-card-ids-response.d.ts +1 -0
  190. package/dist/generated/types/resolve-card-ids-response.js +2 -0
  191. package/dist/generated/types/restore-history-response.d.ts +1 -0
  192. package/dist/generated/types/restore-history-response.js +2 -0
  193. package/dist/generated/types/restore-match-save-request.d.ts +1 -0
  194. package/dist/generated/types/restore-match-save-request.js +2 -0
  195. package/dist/generated/types/restore-match-save-response.d.ts +1 -0
  196. package/dist/generated/types/restore-match-save-response.js +2 -0
  197. package/dist/generated/types/return-lobby-match-request.d.ts +1 -0
  198. package/dist/generated/types/return-lobby-match-request.js +2 -0
  199. package/dist/generated/types/return-tournament-match-request.d.ts +1 -0
  200. package/dist/generated/types/return-tournament-match-request.js +2 -0
  201. package/dist/generated/types/save-match-request.d.ts +1 -0
  202. package/dist/generated/types/save-match-request.js +2 -0
  203. package/dist/generated/types/server-message.d.ts +1 -0
  204. package/dist/generated/types/server-message.js +2 -0
  205. package/dist/generated/types/set-ai-paused-request.d.ts +1 -0
  206. package/dist/generated/types/set-ai-paused-request.js +2 -0
  207. package/dist/generated/types/set-ai-paused-response.d.ts +1 -0
  208. package/dist/generated/types/set-ai-paused-response.js +2 -0
  209. package/dist/generated/types/set-ranked-admission-request.d.ts +1 -0
  210. package/dist/generated/types/set-ranked-admission-request.js +2 -0
  211. package/dist/generated/types/set-simulator-maintenance-request.d.ts +1 -0
  212. package/dist/generated/types/set-simulator-maintenance-request.js +2 -0
  213. package/dist/generated/types/simulator-admin-status-response.d.ts +1 -0
  214. package/dist/generated/types/simulator-admin-status-response.js +2 -0
  215. package/dist/generated/types/simulator-availability-response.d.ts +1 -0
  216. package/dist/generated/types/simulator-availability-response.js +2 -0
  217. package/dist/generated/types/simulator-report-list-response.d.ts +1 -0
  218. package/dist/generated/types/simulator-report-list-response.js +2 -0
  219. package/dist/generated/types/simulator-report-response.d.ts +1 -0
  220. package/dist/generated/types/simulator-report-response.js +2 -0
  221. package/dist/generated/types/spectate-lobby-request.d.ts +1 -0
  222. package/dist/generated/types/spectate-lobby-request.js +2 -0
  223. package/dist/generated/types/spectate-match-request.d.ts +1 -0
  224. package/dist/generated/types/spectate-match-request.js +2 -0
  225. package/dist/generated/types/start-lobby-limited-match-request.d.ts +1 -0
  226. package/dist/generated/types/start-lobby-limited-match-request.js +2 -0
  227. package/dist/generated/types/start-lobby-request.d.ts +1 -0
  228. package/dist/generated/types/start-lobby-request.js +2 -0
  229. package/dist/generated/types/start-tournament-event-request.d.ts +1 -0
  230. package/dist/generated/types/start-tournament-event-request.js +2 -0
  231. package/dist/generated/types/stats-response.d.ts +5 -0
  232. package/dist/generated/types/stats-response.js +2 -0
  233. package/dist/generated/types/submit-lobby-limited-deck-request.d.ts +1 -0
  234. package/dist/generated/types/submit-lobby-limited-deck-request.js +2 -0
  235. package/dist/generated/types/submit-match-deck-request.d.ts +1 -0
  236. package/dist/generated/types/submit-match-deck-request.js +2 -0
  237. package/dist/generated/types/submit-match-deck-response.d.ts +1 -0
  238. package/dist/generated/types/submit-match-deck-response.js +2 -0
  239. package/dist/generated/types/submit-tournament-deck-request.d.ts +1 -0
  240. package/dist/generated/types/submit-tournament-deck-request.js +2 -0
  241. package/dist/generated/types/tournament-event-command-request.d.ts +1 -0
  242. package/dist/generated/types/tournament-event-command-request.js +2 -0
  243. package/dist/generated/types/tournament-room-access-response.d.ts +1 -0
  244. package/dist/generated/types/tournament-room-access-response.js +2 -0
  245. package/dist/generated/types/tournament-room-chat-request.d.ts +1 -0
  246. package/dist/generated/types/tournament-room-chat-request.js +2 -0
  247. package/dist/generated/types/tournament-room-chat-response.d.ts +1 -0
  248. package/dist/generated/types/tournament-room-chat-response.js +2 -0
  249. package/dist/generated/types/tournament-room-list-response.d.ts +1 -0
  250. package/dist/generated/types/tournament-room-list-response.js +2 -0
  251. package/dist/generated/types/tournament-room-response.d.ts +1 -0
  252. package/dist/generated/types/tournament-room-response.js +2 -0
  253. package/dist/generated/types/tournament-room-server-message.d.ts +1 -0
  254. package/dist/generated/types/tournament-room-server-message.js +2 -0
  255. package/dist/generated/types/tournament-room-sync-request.d.ts +1 -0
  256. package/dist/generated/types/tournament-room-sync-request.js +2 -0
  257. package/dist/generated/types/undo-match-request.d.ts +1 -0
  258. package/dist/generated/types/undo-match-request.js +2 -0
  259. package/dist/generated/types/undo-match-response.d.ts +1 -0
  260. package/dist/generated/types/undo-match-response.js +2 -0
  261. package/dist/generated/types/undo-respond-match-request.d.ts +1 -0
  262. package/dist/generated/types/undo-respond-match-request.js +2 -0
  263. package/dist/generated/types/update-lobby-ai-player-request.d.ts +1 -0
  264. package/dist/generated/types/update-lobby-ai-player-request.js +2 -0
  265. package/dist/generated/types/update-lobby-player-request.d.ts +1 -0
  266. package/dist/generated/types/update-lobby-player-request.js +2 -0
  267. package/dist/generated/types/update-lobby-settings-request.d.ts +1 -0
  268. package/dist/generated/types/update-lobby-settings-request.js +2 -0
  269. package/dist/generated/types/update-tournament-room-player-request.d.ts +1 -0
  270. package/dist/generated/types/update-tournament-room-player-request.js +2 -0
  271. package/dist/generated/types/update-tournament-room-settings-request.d.ts +1 -0
  272. package/dist/generated/types/update-tournament-room-settings-request.js +2 -0
  273. package/dist/generated/types/update-tournament-table-deck-request.d.ts +123 -0
  274. package/dist/generated/types/update-tournament-table-deck-request.js +2 -0
  275. package/dist/generated/types/welcome-payload.d.ts +1 -0
  276. package/dist/generated/types/welcome-payload.js +2 -0
  277. package/dist/generated/version.d.ts +16 -0
  278. package/dist/generated/version.js +16 -0
  279. package/dist/http/abort.d.ts +57 -0
  280. package/dist/http/abort.js +60 -0
  281. package/dist/http/json.d.ts +13 -0
  282. package/dist/http/json.js +24 -0
  283. package/dist/http/options.d.ts +40 -0
  284. package/dist/http/options.js +1 -0
  285. package/dist/http/request.d.ts +64 -0
  286. package/dist/http/request.js +182 -0
  287. package/dist/http/validated-json.d.ts +9 -0
  288. package/dist/http/validated-json.js +14 -0
  289. package/dist/index.d.ts +39 -0
  290. package/dist/index.js +10 -0
  291. package/dist/internal/abort-error.d.ts +91 -0
  292. package/dist/internal/abort-error.js +62 -0
  293. package/dist/internal/authenticated-socket-session.d.ts +63 -0
  294. package/dist/internal/authenticated-socket-session.js +170 -0
  295. package/dist/internal/emitter.d.ts +18 -0
  296. package/dist/internal/emitter.js +34 -0
  297. package/dist/internal/errors.d.ts +233 -0
  298. package/dist/internal/errors.js +238 -0
  299. package/dist/internal/limits.d.ts +13 -0
  300. package/dist/internal/limits.js +13 -0
  301. package/dist/internal/reconnect-backoff.d.ts +33 -0
  302. package/dist/internal/reconnect-backoff.js +25 -0
  303. package/dist/internal/socket-frame.d.ts +43 -0
  304. package/dist/internal/socket-frame.js +47 -0
  305. package/dist/internal/transport.d.ts +78 -0
  306. package/dist/internal/transport.js +18 -0
  307. package/dist/internal/websocket-event.d.ts +15 -0
  308. package/dist/internal/websocket-event.js +31 -0
  309. package/dist/local/assets.d.ts +96 -0
  310. package/dist/local/assets.js +235 -0
  311. package/dist/local/client.d.ts +32 -0
  312. package/dist/local/client.js +211 -0
  313. package/dist/local/engine.d.ts +79 -0
  314. package/dist/local/engine.js +6 -0
  315. package/dist/local/index.d.ts +20 -0
  316. package/dist/local/index.js +17 -0
  317. package/dist/local/offline-engine.d.ts +46 -0
  318. package/dist/local/offline-engine.js +74 -0
  319. package/dist/local/protocol.d.ts +95 -0
  320. package/dist/local/protocol.js +10 -0
  321. package/dist/local/routing.d.ts +52 -0
  322. package/dist/local/routing.js +193 -0
  323. package/dist/local/server/ai-scheduler.d.ts +31 -0
  324. package/dist/local/server/ai-scheduler.js +93 -0
  325. package/dist/local/server/http-router.d.ts +35 -0
  326. package/dist/local/server/http-router.js +185 -0
  327. package/dist/local/server/index.d.ts +16 -0
  328. package/dist/local/server/index.js +140 -0
  329. package/dist/local/server/sockets.d.ts +25 -0
  330. package/dist/local/server/sockets.js +141 -0
  331. package/dist/local/wasm-engine.d.ts +61 -0
  332. package/dist/local/wasm-engine.js +63 -0
  333. package/dist/local/worker-boot.d.ts +17 -0
  334. package/dist/local/worker-boot.js +76 -0
  335. package/dist/local/worker.d.ts +6 -0
  336. package/dist/local/worker.js +9 -0
  337. package/dist/match-session/access.d.ts +6 -0
  338. package/dist/match-session/access.js +8 -0
  339. package/dist/match-session/controller.d.ts +63 -0
  340. package/dist/match-session/controller.js +513 -0
  341. package/dist/match-session/errors.d.ts +3 -0
  342. package/dist/match-session/errors.js +34 -0
  343. package/dist/match-session/methods.d.ts +433 -0
  344. package/dist/match-session/methods.js +1 -0
  345. package/dist/match-session/session-state.d.ts +235 -0
  346. package/dist/match-session/session-state.js +1 -0
  347. package/dist/match-session/types.d.ts +56 -0
  348. package/dist/match-session/types.js +1 -0
  349. package/dist/match-session.d.ts +3 -0
  350. package/dist/match-session.js +1 -0
  351. package/dist/messages.d.ts +195 -0
  352. package/dist/messages.js +240 -0
  353. package/dist/resources/admin.d.ts +63 -0
  354. package/dist/resources/admin.js +75 -0
  355. package/dist/resources/card-deck-json.d.ts +11 -0
  356. package/dist/resources/card-deck-json.js +164 -0
  357. package/dist/resources/card-resolution.d.ts +9 -0
  358. package/dist/resources/card-resolution.js +21 -0
  359. package/dist/resources/card-resource.d.ts +157 -0
  360. package/dist/resources/card-resource.js +28 -0
  361. package/dist/resources/card-types.d.ts +203 -0
  362. package/dist/resources/card-types.js +1 -0
  363. package/dist/resources/cards.d.ts +3 -0
  364. package/dist/resources/cards.js +1 -0
  365. package/dist/resources/limited-event-types.d.ts +252 -0
  366. package/dist/resources/limited-event-types.js +1 -0
  367. package/dist/resources/limited-events.d.ts +7 -0
  368. package/dist/resources/limited-events.js +49 -0
  369. package/dist/resources/lobbies.d.ts +53 -0
  370. package/dist/resources/lobbies.js +50 -0
  371. package/dist/resources/lobby-list-session.d.ts +13 -0
  372. package/dist/resources/lobby-list-session.js +198 -0
  373. package/dist/resources/lobby-session.d.ts +9 -0
  374. package/dist/resources/lobby-session.js +59 -0
  375. package/dist/resources/lobby-types.d.ts +357 -0
  376. package/dist/resources/lobby-types.js +1 -0
  377. package/dist/resources/match-history.d.ts +49 -0
  378. package/dist/resources/match-history.js +34 -0
  379. package/dist/resources/match-types.d.ts +448 -0
  380. package/dist/resources/match-types.js +1 -0
  381. package/dist/resources/matches.d.ts +16 -0
  382. package/dist/resources/matches.js +109 -0
  383. package/dist/resources/ranked.d.ts +24 -0
  384. package/dist/resources/ranked.js +47 -0
  385. package/dist/resources/session.d.ts +62 -0
  386. package/dist/resources/session.js +26 -0
  387. package/dist/resources/system.d.ts +51 -0
  388. package/dist/resources/system.js +9 -0
  389. package/dist/resources/tournament-room-session.d.ts +9 -0
  390. package/dist/resources/tournament-room-session.js +53 -0
  391. package/dist/resources/tournament-room-types.d.ts +44 -0
  392. package/dist/resources/tournament-room-types.js +1 -0
  393. package/dist/resources/tournament-rooms.d.ts +33 -0
  394. package/dist/resources/tournament-rooms.js +33 -0
  395. package/dist/session.d.ts +56 -0
  396. package/dist/session.js +1 -0
  397. package/dist/types.d.ts +73 -0
  398. package/dist/types.js +27 -0
  399. package/dist/validators/ajv.d.ts +51 -0
  400. package/dist/validators/ajv.js +121 -0
  401. package/dist/validators/discriminants.d.ts +36 -0
  402. package/dist/validators/discriminants.js +89 -0
  403. package/dist/validators/validator.d.ts +73 -0
  404. package/dist/validators/validator.js +26 -0
  405. package/dist/validators/warm-up.d.ts +25 -0
  406. package/dist/validators/warm-up.js +59 -0
  407. package/dist/validators.d.ts +173 -0
  408. package/dist/validators.js +85 -0
  409. package/package.json +88 -0
  410. package/schema/abandon-match-request.schema.json +15 -0
  411. package/schema/abandon-match-response.schema.json +15 -0
  412. package/schema/add-lobby-ai-player-request.schema.json +53 -0
  413. package/schema/api-error-response.schema.json +13 -0
  414. package/schema/card-catalog-refresh-response.schema.json +31 -0
  415. package/schema/cards-response.schema.json +17 -0
  416. package/schema/client-message.schema.json +203 -0
  417. package/schema/close-tournament-room-request.schema.json +18 -0
  418. package/schema/common.schema.json +14129 -0
  419. package/schema/create-limited-event-request.schema.json +60 -0
  420. package/schema/create-lobby-request.schema.json +67 -0
  421. package/schema/create-match-request.schema.json +124 -0
  422. package/schema/create-meta-window-request.schema.json +27 -0
  423. package/schema/create-tournament-room-request.schema.json +104 -0
  424. package/schema/create-tournament-table-request.schema.json +14 -0
  425. package/schema/error-payload.schema.json +34 -0
  426. package/schema/format-event-request.schema.json +20 -0
  427. package/schema/format-event-response.schema.json +15 -0
  428. package/schema/game-command.schema.json +775 -0
  429. package/schema/game-event.schema.json +2012 -0
  430. package/schema/game-state.schema.json +273 -0
  431. package/schema/get-match-response.schema.json +13 -0
  432. package/schema/health-response.schema.json +13 -0
  433. package/schema/join-limited-event-request.schema.json +6 -0
  434. package/schema/join-lobby-request.schema.json +40 -0
  435. package/schema/join-match-request.schema.json +79 -0
  436. package/schema/join-tournament-room-request.schema.json +39 -0
  437. package/schema/join-tournament-table-request.schema.json +14 -0
  438. package/schema/kick-lobby-player-request.schema.json +13 -0
  439. package/schema/kick-lobby-spectator-request.schema.json +14 -0
  440. package/schema/leave-lobby-request.schema.json +13 -0
  441. package/schema/leave-match-request.schema.json +15 -0
  442. package/schema/leave-match-response.schema.json +15 -0
  443. package/schema/leave-tournament-room-request.schema.json +14 -0
  444. package/schema/limited-event-access-response.schema.json +34 -0
  445. package/schema/limited-event-command-request.schema.json +20 -0
  446. package/schema/limited-event-preflight-response.schema.json +25 -0
  447. package/schema/limited-event-response.schema.json +15 -0
  448. package/schema/list-active-ai-matches-request.schema.json +23 -0
  449. package/schema/list-active-ai-matches-response.schema.json +17 -0
  450. package/schema/lobby-access-response.schema.json +31 -0
  451. package/schema/lobby-chat-request.schema.json +17 -0
  452. package/schema/lobby-chat-response.schema.json +17 -0
  453. package/schema/lobby-list-response.schema.json +16 -0
  454. package/schema/lobby-list-server-message.schema.json +49 -0
  455. package/schema/lobby-matchmaking-decision-request.schema.json +13 -0
  456. package/schema/lobby-matchmaking-request.schema.json +80 -0
  457. package/schema/lobby-response.schema.json +13 -0
  458. package/schema/lobby-server-message.schema.json +155 -0
  459. package/schema/lobby-sync-request.schema.json +13 -0
  460. package/schema/manifest.json +124 -0
  461. package/schema/match-access-response.schema.json +32 -0
  462. package/schema/match-chat-lookup-response.schema.json +34 -0
  463. package/schema/match-connection-role.schema.json +9 -0
  464. package/schema/match-history-deck-stats-request.schema.json +26 -0
  465. package/schema/match-history-deck-stats-response.schema.json +17 -0
  466. package/schema/match-history-entry.schema.json +78 -0
  467. package/schema/match-history-list-request.schema.json +48 -0
  468. package/schema/match-history-list-response.schema.json +25 -0
  469. package/schema/match-history-replay-request.schema.json +17 -0
  470. package/schema/match-history-replay-response.schema.json +14 -0
  471. package/schema/match-history-restore-request.schema.json +23 -0
  472. package/schema/match-save-payload.schema.json +71 -0
  473. package/schema/match-spectator-access-response.schema.json +22 -0
  474. package/schema/meta-window.schema.json +37 -0
  475. package/schema/meta-windows-response.schema.json +24 -0
  476. package/schema/prepare-lobby-limited-ai-decks-request.schema.json +14 -0
  477. package/schema/ranked-admin-status.schema.json +43 -0
  478. package/schema/ranked-leaderboard-entry.schema.json +61 -0
  479. package/schema/ranked-leaderboard-query.schema.json +34 -0
  480. package/schema/ranked-leaderboard-response.schema.json +23 -0
  481. package/schema/ranked-matchmaking-view.schema.json +15 -0
  482. package/schema/ranked-profile-request.schema.json +21 -0
  483. package/schema/ranked-profile-response.schema.json +59 -0
  484. package/schema/ranked-queue.schema.json +12 -0
  485. package/schema/rematch-match-request.schema.json +20 -0
  486. package/schema/rematch-match-response.schema.json +61 -0
  487. package/schema/resolve-card-ids-request.schema.json +17 -0
  488. package/schema/resolve-card-ids-response.schema.json +16 -0
  489. package/schema/restore-history-response.schema.json +15 -0
  490. package/schema/restore-match-save-request.schema.json +20 -0
  491. package/schema/restore-match-save-response.schema.json +29 -0
  492. package/schema/return-lobby-match-request.schema.json +13 -0
  493. package/schema/return-tournament-match-request.schema.json +14 -0
  494. package/schema/route-manifest.json +1014 -0
  495. package/schema/save-match-request.schema.json +15 -0
  496. package/schema/server-message.schema.json +192 -0
  497. package/schema/set-ai-paused-request.schema.json +19 -0
  498. package/schema/set-ai-paused-response.schema.json +18 -0
  499. package/schema/set-ranked-admission-request.schema.json +15 -0
  500. package/schema/set-simulator-maintenance-request.schema.json +20 -0
  501. package/schema/simulator-admin-status-response.schema.json +37 -0
  502. package/schema/simulator-availability-response.schema.json +27 -0
  503. package/schema/simulator-report-list-response.schema.json +23 -0
  504. package/schema/simulator-report-response.schema.json +77 -0
  505. package/schema/spectate-lobby-request.schema.json +32 -0
  506. package/schema/spectate-match-request.schema.json +32 -0
  507. package/schema/start-lobby-limited-match-request.schema.json +13 -0
  508. package/schema/start-lobby-request.schema.json +13 -0
  509. package/schema/start-tournament-event-request.schema.json +14 -0
  510. package/schema/submit-lobby-limited-deck-request.schema.json +33 -0
  511. package/schema/submit-match-deck-request.schema.json +45 -0
  512. package/schema/submit-match-deck-response.schema.json +14 -0
  513. package/schema/submit-tournament-deck-request.schema.json +34 -0
  514. package/schema/tournament-event-command-request.schema.json +18 -0
  515. package/schema/tournament-room-access-response.schema.json +32 -0
  516. package/schema/tournament-room-chat-request.schema.json +18 -0
  517. package/schema/tournament-room-chat-response.schema.json +18 -0
  518. package/schema/tournament-room-list-response.schema.json +17 -0
  519. package/schema/tournament-room-response.schema.json +14 -0
  520. package/schema/tournament-room-server-message.schema.json +127 -0
  521. package/schema/tournament-room-sync-request.schema.json +14 -0
  522. package/schema/undo-match-request.schema.json +14 -0
  523. package/schema/undo-match-response.schema.json +14 -0
  524. package/schema/undo-respond-match-request.schema.json +19 -0
  525. package/schema/update-lobby-ai-player-request.schema.json +65 -0
  526. package/schema/update-lobby-player-request.schema.json +81 -0
  527. package/schema/update-lobby-settings-request.schema.json +70 -0
  528. package/schema/update-tournament-room-player-request.schema.json +45 -0
  529. package/schema/update-tournament-room-settings-request.schema.json +33 -0
  530. package/schema/welcome-payload.schema.json +38 -0
package/dist/client.js ADDED
@@ -0,0 +1,92 @@
1
+ import { EngineHttpRequester } from './http/request.js';
2
+ import { getDefaultFetch } from './internal/transport.js';
3
+ import { createAdminResource } from './resources/admin.js';
4
+ import { createCardsResource } from './resources/card-resource.js';
5
+ import { createLimitedEventsResource } from './resources/limited-events.js';
6
+ import { createLobbiesResource } from './resources/lobbies.js';
7
+ import { createMatchHistoryResource } from './resources/match-history.js';
8
+ import { createMatchesResource } from './resources/matches.js';
9
+ import { createSessionResource } from './resources/session.js';
10
+ import { createSystemResource } from './resources/system.js';
11
+ import { createTournamentRoomsResource } from './resources/tournament-rooms.js';
12
+ import { passthroughValidator } from './validators/validator.js';
13
+ import { scheduleValidatorWarmUp } from './validators/warm-up.js';
14
+ /**
15
+ * Creates one typed simulator client.
16
+ *
17
+ * Use one client per simulator server origin. Payloads are returned as typed
18
+ * values without being checked at runtime; pass `validate` to have request
19
+ * bodies, responses and socket frames verified against the generated schemas.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { createSimulatorClient } from '@my-swu/simulator-client'
24
+ *
25
+ * const simulatorClient = createSimulatorClient({
26
+ * baseUrl: 'http://127.0.0.1:4000',
27
+ * })
28
+ *
29
+ * ```
30
+ *
31
+ * @see https://simulator-sdk.my-swu.com/guide/http-client
32
+ */
33
+ export function createSimulatorClient(options) {
34
+ const baseUrl = new URL(options.baseUrl.endsWith('/') ? options.baseUrl : `${options.baseUrl}/`);
35
+ // One validator for the whole client: HTTP bodies, HTTP responses and socket
36
+ // frames all resolve their validation policy from this single value, so a
37
+ // client built without `validate` holds no reference to the schema map.
38
+ const validate = options.validate ?? passthroughValidator;
39
+ // Schema compilation is lazy, so without this the first schema — and with it
40
+ // the whole shared definition pool, ~215 ms measured — is compiled by the
41
+ // first server frame, i.e. during connect on the browser's main thread. Move
42
+ // it to idle time. A no-op when validation is off, and it never blocks here.
43
+ scheduleValidatorWarmUp(validate);
44
+ const requester = new EngineHttpRequester({
45
+ baseUrl,
46
+ fetch: options.fetch ?? getDefaultFetch(),
47
+ validate,
48
+ ...(options.timeoutMs == null ? {} : { defaultTimeoutMs: options.timeoutMs }),
49
+ });
50
+ const cards = createCardsResource(requester);
51
+ const admin = createAdminResource(requester);
52
+ const limitedEvents = createLimitedEventsResource(requester);
53
+ const lobbies = createLobbiesResource({
54
+ requester,
55
+ validate,
56
+ wsUrl: webSocketBaseUrl(baseUrl),
57
+ ...(options.webSocketFactory == null ? {} : { webSocketFactory: options.webSocketFactory }),
58
+ });
59
+ const matchHistory = createMatchHistoryResource({ requester });
60
+ const matches = createMatchesResource({ requester });
61
+ const session = createSessionResource({
62
+ matches,
63
+ validate,
64
+ wsUrl: webSocketBaseUrl(baseUrl),
65
+ ...(options.webSocketFactory == null ? {} : { webSocketFactory: options.webSocketFactory }),
66
+ });
67
+ const system = createSystemResource(requester);
68
+ const tournamentRooms = createTournamentRoomsResource({
69
+ requester,
70
+ validate,
71
+ wsUrl: webSocketBaseUrl(baseUrl),
72
+ ...(options.webSocketFactory == null ? {} : { webSocketFactory: options.webSocketFactory }),
73
+ });
74
+ return {
75
+ admin,
76
+ cards,
77
+ limitedEvents,
78
+ lobbies,
79
+ matchHistory,
80
+ matches,
81
+ session,
82
+ system,
83
+ tournamentRooms,
84
+ };
85
+ }
86
+ /**
87
+ * Resolves the WebSocket base URL from the HTTP base URL.
88
+ */
89
+ function webSocketBaseUrl(baseUrl) {
90
+ const protocol = baseUrl.protocol === 'https:' ? 'wss:' : 'ws:';
91
+ return `${protocol}//${baseUrl.host}/ws`;
92
+ }
@@ -0,0 +1,30 @@
1
+ import type { EngineWebSocket } from '../internal/transport.js';
2
+ /**
3
+ * Inputs for waiting on the initial socket handshake.
4
+ */
5
+ export interface SocketHandshakeOptions {
6
+ /**
7
+ * Registers one snapshot listener and returns its cleanup.
8
+ */
9
+ onSnapshot(listener: () => void): () => void;
10
+ /**
11
+ * Marks the connection open when the transport opens.
12
+ */
13
+ onTransportOpen(): void;
14
+ /**
15
+ * Registers one welcome listener and returns its cleanup.
16
+ */
17
+ onWelcome(listener: () => void): () => void;
18
+ /**
19
+ * Socket being opened.
20
+ */
21
+ socket: EngineWebSocket;
22
+ /**
23
+ * Handshake timeout in milliseconds.
24
+ */
25
+ timeoutMs: number;
26
+ }
27
+ /**
28
+ * Waits for socket open, welcome, and first snapshot.
29
+ */
30
+ export declare function waitForSocketHandshake(options: SocketHandshakeOptions): Promise<void>;
@@ -0,0 +1,62 @@
1
+ import { SimulatorSocketError, simulatorSocketErrorFromClose } from '../internal/errors.js';
2
+ import { websocketCloseInfo } from '../internal/websocket-event.js';
3
+ /**
4
+ * Waits for socket open, welcome, and first snapshot.
5
+ */
6
+ export function waitForSocketHandshake(options) {
7
+ return new Promise((resolve, reject) => {
8
+ let settled = false;
9
+ let sawSnapshot = false;
10
+ let sawWelcome = false;
11
+ let sawErrorEvent = false;
12
+ let stopSnapshot = () => { };
13
+ let stopWelcome = () => { };
14
+ const onOpen = () => {
15
+ options.onTransportOpen();
16
+ };
17
+ // The browser `error` event is an opaque `Event` with no diagnostics —
18
+ // never stringify it. Per spec it is always followed by `close`, which
19
+ // carries the classifiable code/reason, so classification waits for it.
20
+ const onError = () => {
21
+ sawErrorEvent = true;
22
+ };
23
+ const onClose = (event) => {
24
+ finish(() => reject(simulatorSocketErrorFromClose(websocketCloseInfo(event), sawErrorEvent)));
25
+ };
26
+ const cleanup = () => {
27
+ clearTimeout(timer);
28
+ stopWelcome();
29
+ stopSnapshot();
30
+ options.socket.removeEventListener('open', onOpen);
31
+ options.socket.removeEventListener('error', onError);
32
+ options.socket.removeEventListener('close', onClose);
33
+ };
34
+ const finish = (done) => {
35
+ if (settled) {
36
+ return;
37
+ }
38
+ settled = true;
39
+ cleanup();
40
+ done();
41
+ };
42
+ const maybeResolve = () => {
43
+ if (sawWelcome && sawSnapshot) {
44
+ finish(resolve);
45
+ }
46
+ };
47
+ const timer = setTimeout(() => {
48
+ finish(() => reject(new SimulatorSocketError('timeout', 'socket handshake timed out')));
49
+ }, options.timeoutMs);
50
+ stopWelcome = options.onWelcome(() => {
51
+ sawWelcome = true;
52
+ maybeResolve();
53
+ });
54
+ stopSnapshot = options.onSnapshot(() => {
55
+ sawSnapshot = true;
56
+ maybeResolve();
57
+ });
58
+ options.socket.addEventListener('open', onOpen);
59
+ options.socket.addEventListener('error', onError);
60
+ options.socket.addEventListener('close', onClose);
61
+ });
62
+ }
@@ -0,0 +1,36 @@
1
+ import type { WebSocketFactory } from '../internal/transport.js';
2
+ import type { SchemaValidator } from '../validators/validator.js';
3
+ /**
4
+ * Construction options for one match socket session.
5
+ */
6
+ export type MatchConnectionOptions = MatchConnectionBaseOptions & ({
7
+ seatToken: string;
8
+ spectatorToken?: never;
9
+ } | {
10
+ seatToken?: never;
11
+ spectatorToken: string;
12
+ });
13
+ export interface MatchConnectionBaseOptions {
14
+ /**
15
+ * Milliseconds to wait for welcome plus first snapshot.
16
+ */
17
+ handshakeTimeoutMs?: number | undefined;
18
+ /**
19
+ * Public match id.
20
+ */
21
+ matchId: string;
22
+ /**
23
+ * Optional boundary validator for inbound frames and outbound envelopes.
24
+ *
25
+ * Defaults to the typed pass-through, matching the client-level default.
26
+ */
27
+ validate?: SchemaValidator | undefined;
28
+ /**
29
+ * Optional socket factory for runtimes without global `WebSocket`.
30
+ */
31
+ webSocketFactory?: WebSocketFactory;
32
+ /**
33
+ * Base WebSocket URL ending at `/ws`.
34
+ */
35
+ wsUrl: string;
36
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,55 @@
1
+ export interface MatchSocketUrlBaseOptions {
2
+ /**
3
+ * Public match id segment.
4
+ */
5
+ matchId: string;
6
+ /**
7
+ * Base WebSocket URL ending at the match socket root.
8
+ */
9
+ wsUrl: string;
10
+ }
11
+ /**
12
+ * Auth token carried off-URL via the WebSocket subprotocol list.
13
+ */
14
+ export type MatchSocketToken = {
15
+ seatToken: string;
16
+ spectatorToken?: never;
17
+ } | {
18
+ seatToken?: never;
19
+ spectatorToken: string;
20
+ };
21
+ /**
22
+ * WebSocket subprotocol kind naming the seat (player) credential.
23
+ *
24
+ * The auth wire format is a two-element subprotocol list whose first element is
25
+ * the credential KIND and whose second is the token VALUE, so the token never
26
+ * appears in the URL. See `RULES.md` for the full contract.
27
+ */
28
+ export declare const MATCH_SEAT_TOKEN_PROTOCOL = "swu.seat-token";
29
+ /**
30
+ * WebSocket subprotocol kind naming the spectator credential.
31
+ */
32
+ export declare const MATCH_SPECTATOR_TOKEN_PROTOCOL = "swu.spectator-token";
33
+ /**
34
+ * WebSocket subprotocol kind naming the lobby / tournament-room player credential.
35
+ */
36
+ export declare const PLAYER_TOKEN_PROTOCOL = "swu.player-token";
37
+ /**
38
+ * Builds one encoded, token-FREE match WebSocket URL.
39
+ *
40
+ * The auth token is intentionally NOT placed in the URL; pass the result of
41
+ * {@link matchSocketProtocols} as the WebSocket constructor's `protocols`
42
+ * argument instead.
43
+ */
44
+ export declare function buildMatchSocketUrl(options: MatchSocketUrlBaseOptions): string;
45
+ /**
46
+ * Returns the WebSocket subprotocol list that carries the seat or spectator
47
+ * token off-URL: `['swu.seat-token', seatToken]` or
48
+ * `['swu.spectator-token', spectatorToken]`.
49
+ */
50
+ export declare function matchSocketProtocols(token: MatchSocketToken): string[];
51
+ /**
52
+ * Returns the WebSocket subprotocol list carrying a lobby / tournament-room
53
+ * player token off-URL: `['swu.player-token', playerToken]`.
54
+ */
55
+ export declare function playerTokenProtocols(playerToken: string): string[];
@@ -0,0 +1,46 @@
1
+ /**
2
+ * WebSocket subprotocol kind naming the seat (player) credential.
3
+ *
4
+ * The auth wire format is a two-element subprotocol list whose first element is
5
+ * the credential KIND and whose second is the token VALUE, so the token never
6
+ * appears in the URL. See `RULES.md` for the full contract.
7
+ */
8
+ export const MATCH_SEAT_TOKEN_PROTOCOL = 'swu.seat-token';
9
+ /**
10
+ * WebSocket subprotocol kind naming the spectator credential.
11
+ */
12
+ export const MATCH_SPECTATOR_TOKEN_PROTOCOL = 'swu.spectator-token';
13
+ /**
14
+ * WebSocket subprotocol kind naming the lobby / tournament-room player credential.
15
+ */
16
+ export const PLAYER_TOKEN_PROTOCOL = 'swu.player-token';
17
+ /**
18
+ * Builds one encoded, token-FREE match WebSocket URL.
19
+ *
20
+ * The auth token is intentionally NOT placed in the URL; pass the result of
21
+ * {@link matchSocketProtocols} as the WebSocket constructor's `protocols`
22
+ * argument instead.
23
+ */
24
+ export function buildMatchSocketUrl(options) {
25
+ const base = options.wsUrl.endsWith('/') ? options.wsUrl : `${options.wsUrl}/`;
26
+ const url = new URL(encodeURIComponent(options.matchId), base);
27
+ return url.toString();
28
+ }
29
+ /**
30
+ * Returns the WebSocket subprotocol list that carries the seat or spectator
31
+ * token off-URL: `['swu.seat-token', seatToken]` or
32
+ * `['swu.spectator-token', spectatorToken]`.
33
+ */
34
+ export function matchSocketProtocols(token) {
35
+ if ('spectatorToken' in token && token.spectatorToken != null) {
36
+ return [MATCH_SPECTATOR_TOKEN_PROTOCOL, token.spectatorToken];
37
+ }
38
+ return [MATCH_SEAT_TOKEN_PROTOCOL, token.seatToken];
39
+ }
40
+ /**
41
+ * Returns the WebSocket subprotocol list carrying a lobby / tournament-room
42
+ * player token off-URL: `['swu.player-token', playerToken]`.
43
+ */
44
+ export function playerTokenProtocols(playerToken) {
45
+ return [PLAYER_TOKEN_PROTOCOL, playerToken];
46
+ }
@@ -0,0 +1,22 @@
1
+ import type { GameState } from '../generated/index.js';
2
+ /**
3
+ * Predicate used by snapshot wait helpers.
4
+ */
5
+ export type SnapshotPredicate = (snapshot: GameState) => boolean;
6
+ /**
7
+ * Options for snapshot wait helpers.
8
+ */
9
+ export interface SnapshotWaitOptions {
10
+ /**
11
+ * Milliseconds to wait before rejecting.
12
+ */
13
+ timeoutMs?: number;
14
+ }
15
+ /**
16
+ * Default timeout for explicit SDK wait helpers.
17
+ */
18
+ export declare const DEFAULT_WAIT_TIMEOUT_MS = 10000;
19
+ /**
20
+ * Returns true for every snapshot.
21
+ */
22
+ export declare function anySnapshot(): SnapshotPredicate;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Default timeout for explicit SDK wait helpers.
3
+ */
4
+ export const DEFAULT_WAIT_TIMEOUT_MS = 10_000;
5
+ /**
6
+ * Returns true for every snapshot.
7
+ */
8
+ export function anySnapshot() {
9
+ return () => true;
10
+ }
@@ -0,0 +1,110 @@
1
+ import type { AiStatusPayload, GameCommand, GameState, WelcomePayload } from './generated/index.js';
2
+ import type { MatchHistoryFeedEntry } from './generated/types/server-message.js';
3
+ import type { CardInteractionCueRequest } from './generated/types/client-message.js';
4
+ import type { FormatEventCommand } from './generated/types/format-event-request.js';
5
+ import type { ConnectionState, MatchConnectionEvents } from './session.js';
6
+ import type { MatchConnectionOptions } from './connection/options.js';
7
+ import type { SnapshotPredicate, SnapshotWaitOptions } from './connection/wait.js';
8
+ export type { MatchConnectionOptions } from './connection/options.js';
9
+ /**
10
+ * Stateful typed connection to one simulator match socket.
11
+ */
12
+ export declare class MatchConnection {
13
+ #private;
14
+ private constructor();
15
+ /**
16
+ * Opens one socket and waits for initial welcome plus snapshot.
17
+ */
18
+ static connect(options: MatchConnectionOptions): Promise<MatchConnection>;
19
+ /**
20
+ * Latest connection state.
21
+ */
22
+ get connectionState(): ConnectionState;
23
+ /**
24
+ * Latest AI attachment/pause status announced by the server.
25
+ */
26
+ get aiStatus(): AiStatusPayload | undefined;
27
+ /**
28
+ * Revision of the latest authoritative snapshot accepted by this connection.
29
+ */
30
+ get snapshotRevision(): number;
31
+ /**
32
+ * Latest known match snapshot.
33
+ */
34
+ get snapshot(): GameState | undefined;
35
+ /**
36
+ * Latest match-history entries announced by the server.
37
+ */
38
+ get history(): readonly MatchHistoryFeedEntry[];
39
+ /** Whether this socket received its full recovery history, even if empty. */
40
+ get historySnapshotReceived(): boolean;
41
+ /**
42
+ * Latest welcome payload.
43
+ */
44
+ get welcome(): WelcomePayload | undefined;
45
+ /**
46
+ * Registers one typed event listener.
47
+ */
48
+ on<TKey extends keyof MatchConnectionEvents>(event: TKey, listener: (value: MatchConnectionEvents[TKey]) => void): () => void;
49
+ /**
50
+ * Sends one `ready` message.
51
+ */
52
+ ready(): void;
53
+ /**
54
+ * Requests a rollback of the latest accepted player action.
55
+ */
56
+ undo(): void;
57
+ /**
58
+ * Answers (or withdraws, when sent by the requester) the pending undo
59
+ * approval request carried by `GameState.pendingUndo`.
60
+ */
61
+ respondUndo(approve: boolean): void;
62
+ /**
63
+ * Pauses or resumes an attached AI opponent for this match.
64
+ */
65
+ setAiPaused(paused: boolean): void;
66
+ /**
67
+ * Sends one typed game command.
68
+ *
69
+ * When the client validates, the envelope is checked against
70
+ * `client-message`, which already references the `game-command` schema, so no
71
+ * extra validation is required.
72
+ */
73
+ sendCommand(command: GameCommand): void;
74
+ /**
75
+ * Sends one typed out-of-game format-event command.
76
+ */
77
+ sendFormatEvent(command: FormatEventCommand): void;
78
+ /**
79
+ * Sends one host-authorized AI format-event command.
80
+ */
81
+ sendAiFormatEvent(command: FormatEventCommand): void;
82
+ /**
83
+ * Sends one in-match chat message.
84
+ */
85
+ sendChat(message: string): void;
86
+ /**
87
+ * Sends one transient hand-card interaction cue.
88
+ */
89
+ sendInteractionCue(cue: CardInteractionCueRequest): void;
90
+ /**
91
+ * Requests one fresh snapshot.
92
+ */
93
+ sync(): void;
94
+ /**
95
+ * Sends one ping frame with optional nonce.
96
+ */
97
+ ping(nonce?: string | null): void;
98
+ /**
99
+ * Closes the current socket and detaches its listeners.
100
+ */
101
+ close(): void;
102
+ /**
103
+ * Reconnects and then requests one explicit sync snapshot.
104
+ */
105
+ reconnect(options?: Pick<MatchConnectionOptions, 'handshakeTimeoutMs'>): Promise<void>;
106
+ /**
107
+ * Resolves with the current or next snapshot that matches the predicate.
108
+ */
109
+ waitForSnapshot(predicate?: SnapshotPredicate, options?: SnapshotWaitOptions): Promise<GameState>;
110
+ }