@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
@@ -0,0 +1,56 @@
1
+ import type { AiStatusPayload, ErrorPayload, GameEvent, GameState, WelcomePayload } from '../generated/index.js';
2
+ import type { MatchHistoryFeedEntry } from '../generated/types/server-message.js';
3
+ import type { ConnectionState } from '../session.js';
4
+ import type { MatchSessionMethods } from './methods.js';
5
+ import type { MatchSeat, MatchSessionReconnectState, MatchSessionState } from './session-state.js';
6
+ export type { MatchSeat, MatchSessionAccess, MatchSessionAutoReconnectOptions, MatchSessionAutoReconnectPolicy, MatchSessionConnectOptions, MatchSessionEvents, MatchSessionOptions, MatchSessionReconnectState, MatchSessionSnapshotPredicate, MatchSessionState, MatchSessionWaitOptions, } from './session-state.js';
7
+ /**
8
+ * Main ergonomic SDK API for interacting with one live match.
9
+ *
10
+ * A session wraps HTTP match creation/joining, WebSocket connection state,
11
+ * incoming snapshots/events, outgoing commands, and explicit reconnects for one
12
+ * private player seat.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { createSimulatorClient } from '@my-swu/simulator-client'
17
+ *
18
+ * const simulatorClient = createSimulatorClient({
19
+ * baseUrl: 'http://127.0.0.1:4000',
20
+ * })
21
+ * const hostAccess = { matchId: 'match_123', seatToken: 'seat_token_123' }
22
+ *
23
+ * const matchSession = simulatorClient.session.create(hostAccess)
24
+ * await matchSession.connect()
25
+ * matchSession.ready()
26
+ * ```
27
+ *
28
+ * @see https://simulator-sdk.my-swu.com/guide/match-session
29
+ * @see https://simulator-sdk.my-swu.com/guide/driving-gameplay
30
+ */
31
+ export interface MatchSession extends MatchSessionMethods {
32
+ /** Latest AI attachment/pause status announced by the server. */
33
+ readonly aiStatus: AiStatusPayload | undefined;
34
+ /** Current transport state. */
35
+ readonly connectionState: ConnectionState;
36
+ /** Recent engine or SDK errors. */
37
+ readonly errors: readonly ErrorPayload[];
38
+ /** Recent game events. */
39
+ readonly events: readonly GameEvent[];
40
+ /** Recent match history entries supplied by the server. */
41
+ readonly history: readonly MatchHistoryFeedEntry[];
42
+ /** Human-readable error summaries. */
43
+ readonly errorMessages: readonly string[];
44
+ /** Public match id when one is known. */
45
+ readonly matchId: string | undefined;
46
+ /** Automatic reconnect progress after an abnormal socket close. */
47
+ readonly reconnectState: MatchSessionReconnectState;
48
+ /** Latest authoritative private snapshot for this seat. */
49
+ readonly snapshot: GameState | undefined;
50
+ /** Seat controlled by this session when known. */
51
+ readonly seat: MatchSeat | undefined;
52
+ /** Token-free state snapshot. */
53
+ readonly state: MatchSessionState;
54
+ /** Latest welcome payload when the socket handshake has completed. */
55
+ readonly welcome: WelcomePayload | undefined;
56
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export { MatchSessionController } from './match-session/controller.js';
2
+ export type { MatchSessionControllerOptions } from './match-session/controller.js';
3
+ export type { MatchSeat, MatchSession, MatchSessionAccess, MatchSessionAutoReconnectOptions, MatchSessionAutoReconnectPolicy, MatchSessionConnectOptions, MatchSessionEvents, MatchSessionOptions, MatchSessionReconnectState, MatchSessionSnapshotPredicate, MatchSessionState, MatchSessionWaitOptions, } from './match-session/types.js';
@@ -0,0 +1 @@
1
+ export { MatchSessionController } from './match-session/controller.js';
@@ -0,0 +1,195 @@
1
+ import type { ClientMessage, GameCommand } from './generated/index.js';
2
+ import type { CardInteractionCueRequest } from './generated/types/client-message.js';
3
+ import type { FormatEventCommand } from './generated/types/format-event-request.js';
4
+ /**
5
+ * Builds one `ready` socket message.
6
+ *
7
+ * Most apps call `matchSession.ready()` instead of constructing envelopes
8
+ * manually. Use this helper when you are working directly with socket frames.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { readyMessage } from '@my-swu/simulator-client'
13
+ *
14
+ * const clientMessage = readyMessage()
15
+ * console.log(clientMessage.type)
16
+ * ```
17
+ *
18
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
19
+ */
20
+ export declare function readyMessage(): ClientMessage;
21
+ /**
22
+ * Builds one `undo` socket message.
23
+ *
24
+ * The server rolls back the latest accepted player action for the match. In AI
25
+ * matches, one human undo also consumes any AI responses that happened after
26
+ * that human action, pauses the AI, then automatically resumes it after the
27
+ * next successful human mutation.
28
+ *
29
+ * In matches with other human seats, a sensitive undo (hidden information was
30
+ * revealed, or another player acted since) does not apply immediately:
31
+ * the server records it on `GameState.pendingUndo`, emits `undoRequested`,
32
+ * and waits for every other human seat to answer with an `undoResponse`.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * import { undoMessage } from '@my-swu/simulator-client'
37
+ *
38
+ * const clientMessage = undoMessage()
39
+ * console.log(clientMessage.type)
40
+ * ```
41
+ *
42
+ * @see https://simulator-sdk.my-swu.com/guide/driving-gameplay
43
+ */
44
+ export declare function undoMessage(): ClientMessage;
45
+ /**
46
+ * Builds one `undoResponse` socket message.
47
+ *
48
+ * Answers the pending undo approval request carried by
49
+ * `GameState.pendingUndo`. Approving as the last outstanding seat applies the
50
+ * undo; declining cancels it. A response sent by the original requester
51
+ * withdraws the request regardless of `approve`.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * import { undoResponseMessage } from '@my-swu/simulator-client'
56
+ *
57
+ * const clientMessage = undoResponseMessage(true)
58
+ * console.log(clientMessage.type)
59
+ * ```
60
+ *
61
+ * @see https://simulator-sdk.my-swu.com/guide/driving-gameplay
62
+ */
63
+ export declare function undoResponseMessage(approve: boolean): ClientMessage;
64
+ /**
65
+ * Builds one `setAiPaused` socket message.
66
+ *
67
+ * Use this for explicit manual control of an attached AI opponent without
68
+ * changing the underlying game state. Undo-created AI pauses resume
69
+ * automatically after the next successful human mutation.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * import { setAiPausedMessage } from '@my-swu/simulator-client'
74
+ *
75
+ * const clientMessage = setAiPausedMessage(true)
76
+ * console.log(clientMessage.type)
77
+ * ```
78
+ *
79
+ * @see https://simulator-sdk.my-swu.com/guide/driving-gameplay
80
+ */
81
+ export declare function setAiPausedMessage(paused: boolean): ClientMessage;
82
+ /**
83
+ * Builds one `syncRequest` socket message.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * import { syncRequestMessage } from '@my-swu/simulator-client'
88
+ *
89
+ * const clientMessage = syncRequestMessage()
90
+ * console.log(clientMessage.type)
91
+ * ```
92
+ *
93
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
94
+ */
95
+ export declare function syncRequestMessage(): ClientMessage;
96
+ /**
97
+ * Builds one in-match `chat` socket message.
98
+ *
99
+ * The server trims and caps the message before broadcasting it as a
100
+ * match-history entry.
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * import { chatMessage } from '@my-swu/simulator-client'
105
+ *
106
+ * const clientMessage = chatMessage('ready?')
107
+ * console.log(clientMessage.type)
108
+ * ```
109
+ *
110
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
111
+ */
112
+ export declare function chatMessage(message: string): ClientMessage;
113
+ /**
114
+ * Builds one transient hand-card interaction cue socket message.
115
+ *
116
+ * Cues are live presentation hints only. They do not mutate gameplay state,
117
+ * history, replay, or saves; the server adds the sender seat before broadcast.
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * import { interactionCueMessage } from '@my-swu/simulator-client'
122
+ *
123
+ * const clientMessage = interactionCueMessage({
124
+ * kind: 'handCard',
125
+ * index: 0,
126
+ * state: 'hover',
127
+ * })
128
+ * console.log(clientMessage.type)
129
+ * ```
130
+ *
131
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
132
+ */
133
+ export declare function interactionCueMessage(cue: CardInteractionCueRequest): ClientMessage;
134
+ /**
135
+ * Builds one `ping` socket message.
136
+ *
137
+ * The optional nonce is echoed by the server `pong` frame, which lets clients
138
+ * measure round-trip latency.
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * import { pingMessage } from '@my-swu/simulator-client'
143
+ *
144
+ * const clientMessage = pingMessage('latency-check-1')
145
+ * console.log(clientMessage.type)
146
+ * ```
147
+ *
148
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
149
+ */
150
+ export declare function pingMessage(nonce?: string | null): ClientMessage;
151
+ /**
152
+ * Wraps one game command into a socket envelope.
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * import { commandMessage } from '@my-swu/simulator-client'
157
+ *
158
+ * const clientMessage = commandMessage('pass')
159
+ * console.log(clientMessage.type)
160
+ * ```
161
+ *
162
+ * @see https://simulator-sdk.my-swu.com/guide/driving-gameplay
163
+ */
164
+ export declare function commandMessage(command: GameCommand): ClientMessage;
165
+ /**
166
+ * Wraps one format-event command into a socket envelope.
167
+ *
168
+ * @example
169
+ * ```ts
170
+ * import { formatEventMessage } from '@my-swu/simulator-client'
171
+ *
172
+ * const clientMessage = formatEventMessage({ type: 'readyNextGame' })
173
+ * console.log(clientMessage.type)
174
+ * ```
175
+ *
176
+ * @see https://simulator-sdk.my-swu.com/guide/match-lifecycle
177
+ */
178
+ export declare function formatEventMessage(command: FormatEventCommand): ClientMessage;
179
+ /**
180
+ * Wraps one host-authorized AI format-event command into a socket envelope.
181
+ *
182
+ * This is only accepted for manual Player vs AI Trilogy ban/pick flows. The
183
+ * command is applied to the AI seat after the server validates the sender.
184
+ *
185
+ * @example
186
+ * ```ts
187
+ * import { aiFormatEventMessage } from '@my-swu/simulator-client'
188
+ *
189
+ * const clientMessage = aiFormatEventMessage({ type: 'banTrilogyDeck', deckIndex: 1 })
190
+ * console.log(clientMessage.type)
191
+ * ```
192
+ *
193
+ * @see https://simulator-sdk.my-swu.com/guide/match-lifecycle
194
+ */
195
+ export declare function aiFormatEventMessage(command: FormatEventCommand): ClientMessage;
@@ -0,0 +1,240 @@
1
+ /**
2
+ * Builds one `ready` socket message.
3
+ *
4
+ * Most apps call `matchSession.ready()` instead of constructing envelopes
5
+ * manually. Use this helper when you are working directly with socket frames.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { readyMessage } from '@my-swu/simulator-client'
10
+ *
11
+ * const clientMessage = readyMessage()
12
+ * console.log(clientMessage.type)
13
+ * ```
14
+ *
15
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
16
+ */
17
+ export function readyMessage() {
18
+ return { type: 'ready' };
19
+ }
20
+ /**
21
+ * Builds one `undo` socket message.
22
+ *
23
+ * The server rolls back the latest accepted player action for the match. In AI
24
+ * matches, one human undo also consumes any AI responses that happened after
25
+ * that human action, pauses the AI, then automatically resumes it after the
26
+ * next successful human mutation.
27
+ *
28
+ * In matches with other human seats, a sensitive undo (hidden information was
29
+ * revealed, or another player acted since) does not apply immediately:
30
+ * the server records it on `GameState.pendingUndo`, emits `undoRequested`,
31
+ * and waits for every other human seat to answer with an `undoResponse`.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { undoMessage } from '@my-swu/simulator-client'
36
+ *
37
+ * const clientMessage = undoMessage()
38
+ * console.log(clientMessage.type)
39
+ * ```
40
+ *
41
+ * @see https://simulator-sdk.my-swu.com/guide/driving-gameplay
42
+ */
43
+ export function undoMessage() {
44
+ return { type: 'undo' };
45
+ }
46
+ /**
47
+ * Builds one `undoResponse` socket message.
48
+ *
49
+ * Answers the pending undo approval request carried by
50
+ * `GameState.pendingUndo`. Approving as the last outstanding seat applies the
51
+ * undo; declining cancels it. A response sent by the original requester
52
+ * withdraws the request regardless of `approve`.
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * import { undoResponseMessage } from '@my-swu/simulator-client'
57
+ *
58
+ * const clientMessage = undoResponseMessage(true)
59
+ * console.log(clientMessage.type)
60
+ * ```
61
+ *
62
+ * @see https://simulator-sdk.my-swu.com/guide/driving-gameplay
63
+ */
64
+ export function undoResponseMessage(approve) {
65
+ return {
66
+ type: 'undoResponse',
67
+ payload: { approve },
68
+ };
69
+ }
70
+ /**
71
+ * Builds one `setAiPaused` socket message.
72
+ *
73
+ * Use this for explicit manual control of an attached AI opponent without
74
+ * changing the underlying game state. Undo-created AI pauses resume
75
+ * automatically after the next successful human mutation.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * import { setAiPausedMessage } from '@my-swu/simulator-client'
80
+ *
81
+ * const clientMessage = setAiPausedMessage(true)
82
+ * console.log(clientMessage.type)
83
+ * ```
84
+ *
85
+ * @see https://simulator-sdk.my-swu.com/guide/driving-gameplay
86
+ */
87
+ export function setAiPausedMessage(paused) {
88
+ return {
89
+ type: 'setAiPaused',
90
+ payload: { paused },
91
+ };
92
+ }
93
+ /**
94
+ * Builds one `syncRequest` socket message.
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * import { syncRequestMessage } from '@my-swu/simulator-client'
99
+ *
100
+ * const clientMessage = syncRequestMessage()
101
+ * console.log(clientMessage.type)
102
+ * ```
103
+ *
104
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
105
+ */
106
+ export function syncRequestMessage() {
107
+ return { type: 'syncRequest' };
108
+ }
109
+ /**
110
+ * Builds one in-match `chat` socket message.
111
+ *
112
+ * The server trims and caps the message before broadcasting it as a
113
+ * match-history entry.
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * import { chatMessage } from '@my-swu/simulator-client'
118
+ *
119
+ * const clientMessage = chatMessage('ready?')
120
+ * console.log(clientMessage.type)
121
+ * ```
122
+ *
123
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
124
+ */
125
+ export function chatMessage(message) {
126
+ return {
127
+ type: 'chat',
128
+ payload: { message },
129
+ };
130
+ }
131
+ /**
132
+ * Builds one transient hand-card interaction cue socket message.
133
+ *
134
+ * Cues are live presentation hints only. They do not mutate gameplay state,
135
+ * history, replay, or saves; the server adds the sender seat before broadcast.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * import { interactionCueMessage } from '@my-swu/simulator-client'
140
+ *
141
+ * const clientMessage = interactionCueMessage({
142
+ * kind: 'handCard',
143
+ * index: 0,
144
+ * state: 'hover',
145
+ * })
146
+ * console.log(clientMessage.type)
147
+ * ```
148
+ *
149
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
150
+ */
151
+ export function interactionCueMessage(cue) {
152
+ return {
153
+ type: 'interactionCue',
154
+ payload: cue,
155
+ };
156
+ }
157
+ /**
158
+ * Builds one `ping` socket message.
159
+ *
160
+ * The optional nonce is echoed by the server `pong` frame, which lets clients
161
+ * measure round-trip latency.
162
+ *
163
+ * @example
164
+ * ```ts
165
+ * import { pingMessage } from '@my-swu/simulator-client'
166
+ *
167
+ * const clientMessage = pingMessage('latency-check-1')
168
+ * console.log(clientMessage.type)
169
+ * ```
170
+ *
171
+ * @see https://simulator-sdk.my-swu.com/guide/websocket
172
+ */
173
+ export function pingMessage(nonce) {
174
+ return {
175
+ type: 'ping',
176
+ payload: {
177
+ nonce: nonce ?? null,
178
+ },
179
+ };
180
+ }
181
+ /**
182
+ * Wraps one game command into a socket envelope.
183
+ *
184
+ * @example
185
+ * ```ts
186
+ * import { commandMessage } from '@my-swu/simulator-client'
187
+ *
188
+ * const clientMessage = commandMessage('pass')
189
+ * console.log(clientMessage.type)
190
+ * ```
191
+ *
192
+ * @see https://simulator-sdk.my-swu.com/guide/driving-gameplay
193
+ */
194
+ export function commandMessage(command) {
195
+ return {
196
+ type: 'command',
197
+ payload: command,
198
+ };
199
+ }
200
+ /**
201
+ * Wraps one format-event command into a socket envelope.
202
+ *
203
+ * @example
204
+ * ```ts
205
+ * import { formatEventMessage } from '@my-swu/simulator-client'
206
+ *
207
+ * const clientMessage = formatEventMessage({ type: 'readyNextGame' })
208
+ * console.log(clientMessage.type)
209
+ * ```
210
+ *
211
+ * @see https://simulator-sdk.my-swu.com/guide/match-lifecycle
212
+ */
213
+ export function formatEventMessage(command) {
214
+ return {
215
+ type: 'formatEvent',
216
+ payload: command,
217
+ };
218
+ }
219
+ /**
220
+ * Wraps one host-authorized AI format-event command into a socket envelope.
221
+ *
222
+ * This is only accepted for manual Player vs AI Trilogy ban/pick flows. The
223
+ * command is applied to the AI seat after the server validates the sender.
224
+ *
225
+ * @example
226
+ * ```ts
227
+ * import { aiFormatEventMessage } from '@my-swu/simulator-client'
228
+ *
229
+ * const clientMessage = aiFormatEventMessage({ type: 'banTrilogyDeck', deckIndex: 1 })
230
+ * console.log(clientMessage.type)
231
+ * ```
232
+ *
233
+ * @see https://simulator-sdk.my-swu.com/guide/match-lifecycle
234
+ */
235
+ export function aiFormatEventMessage(command) {
236
+ return {
237
+ type: 'aiFormatEvent',
238
+ payload: command,
239
+ };
240
+ }
@@ -0,0 +1,63 @@
1
+ import type { SimulatorReportListResponse, SimulatorReportResponse, CardCatalogRefreshResponse, CreateMetaWindowRequest, MatchChatLookupResponse, MetaWindowsResponse, RankedLeaderboardQuery, RankedLeaderboardResponse, RankedProfileRequest, RankedProfileResponse, SetRankedAdmissionRequest, SetSimulatorMaintenanceRequest, SimulatorAdminStatusResponse } from '../generated/index.js';
2
+ import type { SimulatorRequestOptions } from '../http/options.js';
3
+ import type { EngineHttpRequester } from '../http/request.js';
4
+ /**
5
+ * Optional filters and pagination controls for a ranked leaderboard request.
6
+ */
7
+ export type RankedLeaderboardOptions = RankedLeaderboardQuery;
8
+ /** Cursor pagination controls for simulator diagnostic reports. */
9
+ export interface SimulatorReportListOptions {
10
+ cursor?: string;
11
+ limit?: number;
12
+ }
13
+ /**
14
+ * Bearer-token credentials for simulator admin calls.
15
+ */
16
+ export interface SimulatorAdminAuth {
17
+ /**
18
+ * Admin token configured on the simulator engine.
19
+ */
20
+ token: string;
21
+ }
22
+ /**
23
+ * Simulator administration API methods.
24
+ */
25
+ export interface AdminResource {
26
+ /** Lists safe metadata for retained simulator diagnostic reports. */
27
+ listSimulatorReports(auth: SimulatorAdminAuth, query?: SimulatorReportListOptions, options?: SimulatorRequestOptions): Promise<SimulatorReportListResponse>;
28
+ /** Returns one full sanitized simulator support bundle. */
29
+ getSimulatorReport(auth: SimulatorAdminAuth, reportId: string, options?: SimulatorRequestOptions): Promise<SimulatorReportResponse>;
30
+ /** Refreshes expansion legality metadata across simulator replicas. */
31
+ refreshCardCatalog(auth: SimulatorAdminAuth, options?: SimulatorRequestOptions): Promise<CardCatalogRefreshResponse>;
32
+ /**
33
+ * Returns live simulator operational status and counters.
34
+ */
35
+ status(auth: SimulatorAdminAuth, options?: SimulatorRequestOptions): Promise<SimulatorAdminStatusResponse>;
36
+ /**
37
+ * Enables or disables simulator maintenance/drain mode.
38
+ */
39
+ setMaintenance(auth: SimulatorAdminAuth, request: SetSimulatorMaintenanceRequest, options?: SimulatorRequestOptions): Promise<SimulatorAdminStatusResponse>;
40
+ /** Enables or pauses new ranked matchmaking admissions without hiding ranked reads. */
41
+ setRankedAdmission(auth: SimulatorAdminAuth, request: SetRankedAdmissionRequest, options?: SimulatorRequestOptions): Promise<SimulatorAdminStatusResponse>;
42
+ /** Creates a ranked meta window, closing any previously open window as needed. */
43
+ createRankedMetaWindow(auth: SimulatorAdminAuth, request: CreateMetaWindowRequest, options?: SimulatorRequestOptions): Promise<MetaWindowsResponse>;
44
+ /** Closes one ranked meta window and returns the updated window list. */
45
+ closeRankedMetaWindow(auth: SimulatorAdminAuth, windowId: string, options?: SimulatorRequestOptions): Promise<MetaWindowsResponse>;
46
+ /** Lists every ranked meta window and identifies the currently active window. */
47
+ listRankedMetaWindows(auth: SimulatorAdminAuth, options?: SimulatorRequestOptions): Promise<MetaWindowsResponse>;
48
+ /**
49
+ * Returns the server's own record of one match chat message.
50
+ *
51
+ * Moderation reports carry a reporter-supplied copy of the message; this is
52
+ * how a caller replaces that copy with what the match actually broadcast.
53
+ */
54
+ matchChatMessage(auth: SimulatorAdminAuth, matchId: string, messageId: string, options?: SimulatorRequestOptions): Promise<MatchChatLookupResponse>;
55
+ /** Returns one account's placement-safe internal ranked profile. */
56
+ rankedProfile(auth: SimulatorAdminAuth, request: RankedProfileRequest, options?: SimulatorRequestOptions): Promise<RankedProfileResponse>;
57
+ /** Returns one paginated, placement-complete internal leaderboard page. */
58
+ rankedLeaderboard(auth: SimulatorAdminAuth, windowId: string, query?: RankedLeaderboardOptions, options?: SimulatorRequestOptions): Promise<RankedLeaderboardResponse>;
59
+ }
60
+ /**
61
+ * Creates the simulator admin resource client.
62
+ */
63
+ export declare function createAdminResource(requester: EngineHttpRequester): AdminResource;
@@ -0,0 +1,75 @@
1
+ import { jsonBody, jsonHeaders } from '../http/json.js';
2
+ /**
3
+ * Creates the simulator admin resource client.
4
+ */
5
+ export function createAdminResource(requester) {
6
+ return {
7
+ listSimulatorReports: (auth, query, options) => requester.request('simulator-report-list-response', simulatorReportsPath(query ?? {}), { headers: authHeaders(auth) }, options),
8
+ getSimulatorReport: (auth, reportId, options) => requester.request('simulator-report-response', `/api/admin/reports/${encodeURIComponent(reportId)}`, { headers: authHeaders(auth) }, options),
9
+ refreshCardCatalog: (auth, options) => requester.request('card-catalog-refresh-response', '/api/admin/card-catalog/refresh', { headers: authHeaders(auth), method: 'POST' }, options),
10
+ status: (auth, options) => requester.request('simulator-admin-status-response', '/api/admin/status', { headers: authHeaders(auth) }, options),
11
+ setMaintenance: (auth, request, options) => requester.request('simulator-admin-status-response', '/api/admin/maintenance', {
12
+ body: jsonBody(requester.validate('set-simulator-maintenance-request', request)),
13
+ headers: authHeaders(auth, jsonHeaders()),
14
+ method: 'POST',
15
+ }, options),
16
+ setRankedAdmission: (auth, request, options) => requester.request('simulator-admin-status-response', '/api/admin/ranked/admission', {
17
+ body: jsonBody(requester.validate('set-ranked-admission-request', request)),
18
+ headers: authHeaders(auth, jsonHeaders()),
19
+ method: 'POST',
20
+ }, options),
21
+ createRankedMetaWindow: (auth, request, options) => requester.request('meta-windows-response', '/api/admin/ranked/meta-windows', {
22
+ body: jsonBody(requester.validate('create-meta-window-request', request)),
23
+ headers: authHeaders(auth, jsonHeaders()),
24
+ method: 'POST',
25
+ }, options),
26
+ closeRankedMetaWindow: (auth, windowId, options) => requester.request('meta-windows-response', `/api/admin/ranked/meta-windows/${encodeURIComponent(windowId)}/close`, { headers: authHeaders(auth), method: 'POST' }, options),
27
+ listRankedMetaWindows: (auth, options) => requester.request('meta-windows-response', '/api/admin/ranked/meta-windows', { headers: authHeaders(auth) }, options),
28
+ matchChatMessage: (auth, matchId, messageId, options) => requester.request('match-chat-lookup-response', `/api/admin/matches/${encodeURIComponent(matchId)}/chat/${encodeURIComponent(messageId)}`, { headers: authHeaders(auth) }, options),
29
+ rankedProfile: (auth, request, options) => requester.request('ranked-profile-response', '/api/admin/ranked/profile', {
30
+ body: jsonBody(requester.validate('ranked-profile-request', request)),
31
+ headers: authHeaders(auth, jsonHeaders()),
32
+ method: 'POST',
33
+ }, options),
34
+ rankedLeaderboard: (auth, windowId, query, options) => requester.request('ranked-leaderboard-response', leaderboardPath(requester, windowId, query ?? {}), { headers: authHeaders(auth) }, options),
35
+ };
36
+ }
37
+ /** Builds a report-list path without exposing pagination implementation. */
38
+ function simulatorReportsPath(options) {
39
+ const parameters = new URLSearchParams();
40
+ if (options.cursor) {
41
+ parameters.set('cursor', options.cursor);
42
+ }
43
+ if (options.limit != null) {
44
+ parameters.set('limit', String(options.limit));
45
+ }
46
+ const suffix = parameters.size === 0 ? '' : `?${parameters.toString()}`;
47
+ return `/api/admin/reports${suffix}`;
48
+ }
49
+ /**
50
+ * Builds a ranked leaderboard path from the optional query parameters.
51
+ *
52
+ * The requester carries the client's validation policy, so the parameters are
53
+ * checked against `ranked-leaderboard-query` only when the client validates.
54
+ */
55
+ function leaderboardPath(requester, windowId, options) {
56
+ const query = requester.validate('ranked-leaderboard-query', options);
57
+ const parameters = new URLSearchParams();
58
+ if (query.queue != null) {
59
+ parameters.set('queue', query.queue);
60
+ }
61
+ if (query.offset != null) {
62
+ parameters.set('offset', String(query.offset));
63
+ }
64
+ if (query.limit != null) {
65
+ parameters.set('limit', String(query.limit));
66
+ }
67
+ const suffix = parameters.size === 0 ? '' : `?${parameters.toString()}`;
68
+ return `/api/admin/ranked/meta-windows/${encodeURIComponent(windowId)}/leaderboard${suffix}`;
69
+ }
70
+ function authHeaders(auth, headers = {}) {
71
+ return {
72
+ ...headers,
73
+ authorization: `Bearer ${auth.token}`,
74
+ };
75
+ }
@@ -0,0 +1,11 @@
1
+ import type { SimulatorRequestOptions } from '../http/options.js';
2
+ import type { EngineHttpRequester } from '../http/request.js';
3
+ import type { DeckInput, DeckJson } from './card-types.js';
4
+ /**
5
+ * Converts one my-swu JSON deck export into simulator deck input.
6
+ *
7
+ * Token cards (the Credit or Force token, …) can ride along in deck
8
+ * exports but are not deck cards — deck and sideboard entries that only
9
+ * resolve to a token are skipped instead of failing the import.
10
+ */
11
+ export declare function convertDeckJson(requester: EngineHttpRequester, input: DeckJson | string, options?: SimulatorRequestOptions): Promise<DeckInput>;