@my-swu/simulator-client 0.1.5 → 0.1.7

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 (116) hide show
  1. package/README.md +29 -0
  2. package/dist/client.js +6 -1
  3. package/dist/connection/url.d.ts +2 -0
  4. package/dist/connection/url.js +4 -0
  5. package/dist/generated/index.d.ts +4 -0
  6. package/dist/generated/schemas.d.ts +1 -1
  7. package/dist/generated/schemas.js +2412 -1434
  8. package/dist/generated/types/admin-match-debug-bundle.d.ts +1 -1
  9. package/dist/generated/types/admin-match-list-response.d.ts +1 -1
  10. package/dist/generated/types/admin-match-replay-response.d.ts +1 -1
  11. package/dist/generated/types/client-message.d.ts +1 -1
  12. package/dist/generated/types/common.d.ts +524 -260
  13. package/dist/generated/types/create-limited-event-request.d.ts +1 -1
  14. package/dist/generated/types/format-event-response.d.ts +1 -1
  15. package/dist/generated/types/game-command.d.ts +1 -1
  16. package/dist/generated/types/game-event.d.ts +1 -1
  17. package/dist/generated/types/game-state.d.ts +1 -1
  18. package/dist/generated/types/get-match-response.d.ts +1 -1
  19. package/dist/generated/types/leave-limited-event-request.d.ts +1 -0
  20. package/dist/generated/types/leave-limited-event-request.js +2 -0
  21. package/dist/generated/types/limited-event-server-message.d.ts +1 -0
  22. package/dist/generated/types/limited-event-server-message.js +2 -0
  23. package/dist/generated/types/list-active-ai-matches-response.d.ts +1 -1
  24. package/dist/generated/types/lobby-access-response.d.ts +1 -1
  25. package/dist/generated/types/lobby-chat-response.d.ts +1 -1
  26. package/dist/generated/types/lobby-response.d.ts +1 -1
  27. package/dist/generated/types/lobby-server-message.d.ts +1 -1
  28. package/dist/generated/types/match-access-recovery-response.d.ts +1 -1
  29. package/dist/generated/types/match-access-response.d.ts +1 -1
  30. package/dist/generated/types/match-history-replay-response.d.ts +1 -1
  31. package/dist/generated/types/match-recovery-response.d.ts +1 -1
  32. package/dist/generated/types/match-spectator-access-response.d.ts +1 -1
  33. package/dist/generated/types/rematch-match-response.d.ts +1 -1
  34. package/dist/generated/types/restore-history-response.d.ts +1 -1
  35. package/dist/generated/types/restore-match-save-response.d.ts +1 -1
  36. package/dist/generated/types/server-message.d.ts +1 -1
  37. package/dist/generated/types/shared-match-history-replay-response.d.ts +1 -1
  38. package/dist/generated/types/submit-ai-game-feedback-request.d.ts +1 -0
  39. package/dist/generated/types/submit-ai-game-feedback-request.js +2 -0
  40. package/dist/generated/types/submit-ai-game-feedback-response.d.ts +1 -0
  41. package/dist/generated/types/submit-ai-game-feedback-response.js +2 -0
  42. package/dist/generated/types/submit-match-deck-response.d.ts +1 -1
  43. package/dist/generated/types/tournament-room-access-response.d.ts +1 -1
  44. package/dist/generated/types/tournament-room-server-message.d.ts +1 -1
  45. package/dist/generated/types/undo-match-response.d.ts +1 -1
  46. package/dist/generated/types/update-lobby-settings-request.d.ts +1 -1
  47. package/dist/generated/version.d.ts +1 -1
  48. package/dist/generated/version.js +1 -1
  49. package/dist/http/request.d.ts +2 -0
  50. package/dist/http/request.js +9 -1
  51. package/dist/i18n/card-print-catalog.d.ts +9 -0
  52. package/dist/i18n/card-print-catalog.js +260 -0
  53. package/dist/i18n/catalog.d.ts +8 -0
  54. package/dist/i18n/catalog.js +195 -0
  55. package/dist/i18n/diagnostics.d.ts +6 -0
  56. package/dist/i18n/diagnostics.js +19 -0
  57. package/dist/i18n/fallback.d.ts +3 -0
  58. package/dist/i18n/fallback.js +40 -0
  59. package/dist/i18n/format.d.ts +8 -0
  60. package/dist/i18n/format.js +29 -0
  61. package/dist/i18n/generated/message-types.d.ts +91 -0
  62. package/dist/i18n/generated/message-types.js +3 -0
  63. package/dist/i18n/icu.d.ts +12 -0
  64. package/dist/i18n/icu.js +75 -0
  65. package/dist/i18n/index.d.ts +9 -0
  66. package/dist/i18n/index.js +5 -0
  67. package/dist/i18n/locale.d.ts +9 -0
  68. package/dist/i18n/locale.js +19 -0
  69. package/dist/i18n/types.d.ts +151 -0
  70. package/dist/i18n/types.js +1 -0
  71. package/dist/index.d.ts +5 -4
  72. package/dist/internal/authenticated-socket-session.d.ts +2 -0
  73. package/dist/internal/authenticated-socket-session.js +3 -1
  74. package/dist/local/client.js +7 -2
  75. package/dist/local/server/http-router.js +18 -0
  76. package/dist/resources/admin.d.ts +8 -0
  77. package/dist/resources/admin.js +2 -0
  78. package/dist/resources/limited-event-session.d.ts +10 -0
  79. package/dist/resources/limited-event-session.js +35 -0
  80. package/dist/resources/limited-event-types.d.ts +34 -1
  81. package/dist/resources/limited-events.d.ts +8 -1
  82. package/dist/resources/limited-events.js +18 -1
  83. package/dist/resources/lobbies.d.ts +1 -1
  84. package/dist/resources/lobbies.js +1 -1
  85. package/dist/resources/lobby-types.d.ts +15 -2
  86. package/dist/resources/match-history.d.ts +8 -1
  87. package/dist/resources/match-history.js +10 -0
  88. package/dist/resources/tournament-rooms.d.ts +1 -1
  89. package/dist/resources/tournament-rooms.js +1 -1
  90. package/dist/types.d.ts +1 -1
  91. package/dist/validators.d.ts +5 -1
  92. package/i18n/cards/de.json +121 -0
  93. package/i18n/cards/en.json +121 -0
  94. package/i18n/cards/es.json +121 -0
  95. package/i18n/cards/fr.json +121 -0
  96. package/i18n/cards/it.json +121 -0
  97. package/i18n/cards/manifest.json +2715 -0
  98. package/i18n/de.json +11 -0
  99. package/i18n/en.json +11 -0
  100. package/i18n/es.json +11 -0
  101. package/i18n/fr.json +11 -0
  102. package/i18n/it.json +11 -0
  103. package/i18n/messages.schema.json +28 -0
  104. package/package.json +12 -2
  105. package/schema/common.schema.json +1684 -1005
  106. package/schema/create-limited-event-request.schema.json +11 -0
  107. package/schema/game-event.schema.json +76 -0
  108. package/schema/game-state.schema.json +8 -0
  109. package/schema/leave-limited-event-request.schema.json +15 -0
  110. package/schema/limited-event-server-message.schema.json +63 -0
  111. package/schema/manifest.json +5 -1
  112. package/schema/match-save-payload.schema.json +1 -1
  113. package/schema/route-manifest.json +54 -0
  114. package/schema/submit-ai-game-feedback-request.schema.json +36 -0
  115. package/schema/submit-ai-game-feedback-response.schema.json +19 -0
  116. package/schema/update-lobby-settings-request.schema.json +67 -0
package/README.md CHANGED
@@ -40,6 +40,35 @@ const simulatorClient = createSimulatorClient({
40
40
  })
41
41
  ```
42
42
 
43
+ ## SDK i18n catalogs
44
+
45
+ SDK-owned simulator messages use typed ICU values through the separate i18n
46
+ subpath. Load only the UI message pack and card-text locale shard your surface
47
+ needs; root SDK imports do not load card prose.
48
+
49
+ ```ts
50
+ import { formatMessage, prepareMessageCatalog } from '@my-swu/simulator-client/i18n'
51
+ import englishMessages from '@my-swu/simulator-client/i18n/messages/en.json' with { type: 'json' }
52
+
53
+ const messages = prepareMessageCatalog(englishMessages)
54
+ formatMessage(messages, 'chooseTargets', { min: 1, max: 2 })
55
+ ```
56
+
57
+ Literal card shards need their shared manifest and asynchronous preparation so
58
+ each shard hash is verified before synchronous lookup.
59
+
60
+ ```ts
61
+ import { prepareCardTextCatalog } from '@my-swu/simulator-client/i18n'
62
+ import manifest from '@my-swu/simulator-client/i18n/cards/manifest.json' with { type: 'json' }
63
+ import englishCardText from '@my-swu/simulator-client/i18n/cards/en.json' with { type: 'json' }
64
+
65
+ const cardText = await prepareCardTextCatalog(manifest, englishCardText)
66
+ ```
67
+
68
+ Maintainers run
69
+ `cargo card-text generate`, `cargo card-text check`, and `pnpm i18n:check` to
70
+ regenerate and verify reviewed catalogs.
71
+
43
72
  ## Card ids
44
73
 
45
74
  Decks and commands use card ids. These are not collector numbers or
package/dist/client.js CHANGED
@@ -49,7 +49,12 @@ export function createSimulatorClient(options) {
49
49
  });
50
50
  const cards = createCardsResource(requester);
51
51
  const admin = createAdminResource(requester);
52
- const limitedEvents = createLimitedEventsResource(requester);
52
+ const limitedEvents = createLimitedEventsResource({
53
+ requester,
54
+ validate,
55
+ wsUrl: webSocketBaseUrl(baseUrl),
56
+ ...(options.webSocketFactory == null ? {} : { webSocketFactory: options.webSocketFactory }),
57
+ });
53
58
  const lobbies = createLobbiesResource({
54
59
  requester,
55
60
  validate,
@@ -53,3 +53,5 @@ export declare function matchSocketProtocols(token: MatchSocketToken): string[];
53
53
  * player token off-URL: `['swu.player-token', playerToken]`.
54
54
  */
55
55
  export declare function playerTokenProtocols(playerToken: string): string[];
56
+ /** Returns WebSocket subprotocols carrying one seat token off-URL. */
57
+ export declare function seatTokenProtocols(seatToken: string): string[];
@@ -44,3 +44,7 @@ export function matchSocketProtocols(token) {
44
44
  export function playerTokenProtocols(playerToken) {
45
45
  return [PLAYER_TOKEN_PROTOCOL, playerToken];
46
46
  }
47
+ /** Returns WebSocket subprotocols carrying one seat token off-URL. */
48
+ export function seatTokenProtocols(seatToken) {
49
+ return [MATCH_SEAT_TOKEN_PROTOCOL, seatToken];
50
+ }
@@ -73,6 +73,8 @@ export type { LimitedEventPreflightResponse } from './types/limited-event-prefli
73
73
  export type { LimitedEventResponse } from './types/limited-event-response.js';
74
74
  export type { LimitedEventCommandRequest } from './types/limited-event-command-request.js';
75
75
  export type { JoinLimitedEventRequest } from './types/join-limited-event-request.js';
76
+ export type { LeaveLimitedEventRequest } from './types/leave-limited-event-request.js';
77
+ export type { LimitedEventServerMessage } from './types/limited-event-server-message.js';
76
78
  export type { MatchAccessResponse } from './types/match-access-response.js';
77
79
  export type { AbandonMatchRequest } from './types/abandon-match-request.js';
78
80
  export type { AbandonMatchResponse } from './types/abandon-match-response.js';
@@ -105,6 +107,8 @@ export type { MatchHistoryDeckStatsResponse } from './types/match-history-deck-s
105
107
  export type { MatchHistoryEntry } from './types/match-history-entry.js';
106
108
  export type { MatchHistoryReplayRequest } from './types/match-history-replay-request.js';
107
109
  export type { MatchHistoryReplayResponse } from './types/match-history-replay-response.js';
110
+ export type { SubmitAiGameFeedbackRequest } from './types/submit-ai-game-feedback-request.js';
111
+ export type { SubmitAiGameFeedbackResponse } from './types/submit-ai-game-feedback-response.js';
108
112
  export type { CreateMatchHistoryReplayShareRequest } from './types/create-match-history-replay-share-request.js';
109
113
  export type { CreateMatchHistoryReplayShareResponse } from './types/create-match-history-replay-share-response.js';
110
114
  export type { SharedMatchHistoryReplayResponse } from './types/shared-match-history-replay-response.js';
@@ -7,7 +7,7 @@ export { schemaVersion } from './version.js';
7
7
  * sdkSchemas` would force TypeScript to serialize the entire inlined schema
8
8
  * map in the emitted declaration file, overflowing its serializer.
9
9
  */
10
- export declare const schemaNames: readonly ["admin-match-list-response", "admin-match-debug-bundle", "admin-match-replay-response", "simulator-report-list-response", "simulator-report-response", "health-response", "simulator-availability-response", "simulator-admin-status-response", "card-catalog-refresh-response", "set-simulator-maintenance-request", "set-ranked-admission-request", "api-error-response", "meta-window", "ranked-queue", "ranked-admin-status", "ranked-matchmaking-view", "ranked-leaderboard-entry", "create-meta-window-request", "meta-windows-response", "ranked-profile-request", "ranked-profile-response", "ranked-leaderboard-query", "ranked-leaderboard-response", "create-match-request", "create-lobby-request", "join-lobby-request", "spectate-lobby-request", "lobby-matchmaking-request", "lobby-sync-request", "lobby-matchmaking-decision-request", "update-lobby-player-request", "update-lobby-ai-player-request", "add-lobby-ai-player-request", "lobby-chat-request", "start-lobby-request", "return-lobby-match-request", "submit-lobby-limited-deck-request", "prepare-lobby-limited-ai-decks-request", "start-lobby-limited-match-request", "leave-lobby-request", "kick-lobby-player-request", "kick-lobby-spectator-request", "update-lobby-settings-request", "lobby-response", "lobby-list-response", "lobby-access-response", "lobby-chat-response", "lobby-server-message", "lobby-list-server-message", "create-tournament-room-request", "join-tournament-room-request", "tournament-room-sync-request", "update-tournament-room-player-request", "update-tournament-room-settings-request", "tournament-room-chat-request", "start-tournament-event-request", "tournament-event-command-request", "submit-tournament-deck-request", "create-tournament-table-request", "join-tournament-table-request", "return-tournament-match-request", "leave-tournament-room-request", "close-tournament-room-request", "tournament-room-response", "tournament-room-list-response", "tournament-room-access-response", "tournament-room-chat-response", "tournament-room-server-message", "create-limited-event-request", "limited-event-access-response", "limited-event-preflight-response", "limited-event-response", "limited-event-command-request", "join-limited-event-request", "match-access-response", "abandon-match-request", "abandon-match-response", "list-active-ai-matches-request", "list-active-ai-matches-response", "leave-match-request", "leave-match-response", "match-spectator-access-response", "join-match-request", "spectate-match-request", "submit-match-deck-request", "submit-match-deck-response", "format-event-request", "format-event-response", "undo-match-request", "undo-match-response", "undo-respond-match-request", "rematch-match-request", "rematch-match-response", "set-ai-paused-request", "set-ai-paused-response", "set-playground-ai-seat-request", "playground-export-payload", "create-playground-share-response", "get-match-response", "match-history-list-request", "match-history-list-response", "match-history-deck-stats-request", "match-history-deck-stats-response", "match-history-entry", "match-history-replay-request", "match-history-replay-response", "create-match-history-replay-share-request", "create-match-history-replay-share-response", "shared-match-history-replay-response", "match-chat-lookup-response", "match-history-restore-request", "restore-history-response", "match-recovery-request", "match-recovery-response", "match-access-recovery-request", "match-access-recovery-response", "cards-response", "resolve-card-ids-request", "resolve-card-ids-response", "client-message", "server-message", "game-command", "game-event", "game-state", "match-connection-role", "welcome-payload", "error-payload", "match-save-payload", "save-match-request", "restore-match-save-request", "restore-match-save-response"];
10
+ export declare const schemaNames: readonly ["admin-match-list-response", "admin-match-debug-bundle", "admin-match-replay-response", "simulator-report-list-response", "simulator-report-response", "health-response", "simulator-availability-response", "simulator-admin-status-response", "card-catalog-refresh-response", "set-simulator-maintenance-request", "set-ranked-admission-request", "api-error-response", "meta-window", "ranked-queue", "ranked-admin-status", "ranked-matchmaking-view", "ranked-leaderboard-entry", "create-meta-window-request", "meta-windows-response", "ranked-profile-request", "ranked-profile-response", "ranked-leaderboard-query", "ranked-leaderboard-response", "create-match-request", "create-lobby-request", "join-lobby-request", "spectate-lobby-request", "lobby-matchmaking-request", "lobby-sync-request", "lobby-matchmaking-decision-request", "update-lobby-player-request", "update-lobby-ai-player-request", "add-lobby-ai-player-request", "lobby-chat-request", "start-lobby-request", "return-lobby-match-request", "submit-lobby-limited-deck-request", "prepare-lobby-limited-ai-decks-request", "start-lobby-limited-match-request", "leave-lobby-request", "kick-lobby-player-request", "kick-lobby-spectator-request", "update-lobby-settings-request", "lobby-response", "lobby-list-response", "lobby-access-response", "lobby-chat-response", "lobby-server-message", "lobby-list-server-message", "create-tournament-room-request", "join-tournament-room-request", "tournament-room-sync-request", "update-tournament-room-player-request", "update-tournament-room-settings-request", "tournament-room-chat-request", "start-tournament-event-request", "tournament-event-command-request", "submit-tournament-deck-request", "create-tournament-table-request", "join-tournament-table-request", "return-tournament-match-request", "leave-tournament-room-request", "close-tournament-room-request", "tournament-room-response", "tournament-room-list-response", "tournament-room-access-response", "tournament-room-chat-response", "tournament-room-server-message", "create-limited-event-request", "limited-event-access-response", "limited-event-preflight-response", "limited-event-response", "limited-event-command-request", "join-limited-event-request", "leave-limited-event-request", "limited-event-server-message", "match-access-response", "abandon-match-request", "abandon-match-response", "list-active-ai-matches-request", "list-active-ai-matches-response", "leave-match-request", "leave-match-response", "match-spectator-access-response", "join-match-request", "spectate-match-request", "submit-match-deck-request", "submit-match-deck-response", "format-event-request", "format-event-response", "undo-match-request", "undo-match-response", "undo-respond-match-request", "rematch-match-request", "rematch-match-response", "set-ai-paused-request", "set-ai-paused-response", "set-playground-ai-seat-request", "playground-export-payload", "create-playground-share-response", "get-match-response", "match-history-list-request", "match-history-list-response", "match-history-deck-stats-request", "match-history-deck-stats-response", "match-history-entry", "match-history-replay-request", "match-history-replay-response", "submit-ai-game-feedback-request", "submit-ai-game-feedback-response", "create-match-history-replay-share-request", "create-match-history-replay-share-response", "shared-match-history-replay-response", "match-chat-lookup-response", "match-history-restore-request", "restore-history-response", "match-recovery-request", "match-recovery-response", "match-access-recovery-request", "match-access-recovery-response", "cards-response", "resolve-card-ids-request", "resolve-card-ids-response", "client-message", "server-message", "game-command", "game-event", "game-state", "match-connection-role", "welcome-payload", "error-payload", "match-save-payload", "save-match-request", "restore-match-save-request", "restore-match-save-response"];
11
11
  export type SchemaName = (typeof schemaNames)[number];
12
12
  /**
13
13
  * Definitions shared by every generated root schema.