infinite-games-sdk 0.0.5 → 0.0.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 (62) hide show
  1. package/README.md +126 -113
  2. package/dist/index.d.ts +208 -10
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +561 -25
  5. package/dist/index.js.map +1 -1
  6. package/package.json +1 -1
  7. package/dist/errors.d.ts +0 -4
  8. package/dist/errors.d.ts.map +0 -1
  9. package/dist/errors.js +0 -11
  10. package/dist/errors.js.map +0 -1
  11. package/dist/history/HistoryClient.d.ts +0 -20
  12. package/dist/history/HistoryClient.d.ts.map +0 -1
  13. package/dist/history/HistoryClient.js +0 -96
  14. package/dist/history/HistoryClient.js.map +0 -1
  15. package/dist/history/index.d.ts +0 -4
  16. package/dist/history/index.d.ts.map +0 -1
  17. package/dist/history/index.js +0 -8
  18. package/dist/history/index.js.map +0 -1
  19. package/dist/history/types.d.ts +0 -7
  20. package/dist/history/types.d.ts.map +0 -1
  21. package/dist/history/types.js +0 -3
  22. package/dist/history/types.js.map +0 -1
  23. package/dist/history/useHistoryClient.d.ts +0 -21
  24. package/dist/history/useHistoryClient.d.ts.map +0 -1
  25. package/dist/history/useHistoryClient.js +0 -77
  26. package/dist/history/useHistoryClient.js.map +0 -1
  27. package/dist/launcher/index.d.ts +0 -4
  28. package/dist/launcher/index.d.ts.map +0 -1
  29. package/dist/launcher/index.js +0 -9
  30. package/dist/launcher/index.js.map +0 -1
  31. package/dist/launcher/types.d.ts +0 -59
  32. package/dist/launcher/types.d.ts.map +0 -1
  33. package/dist/launcher/types.js +0 -20
  34. package/dist/launcher/types.js.map +0 -1
  35. package/dist/launcher/useGameLauncher.d.ts +0 -3
  36. package/dist/launcher/useGameLauncher.d.ts.map +0 -1
  37. package/dist/launcher/useGameLauncher.js +0 -144
  38. package/dist/launcher/useGameLauncher.js.map +0 -1
  39. package/dist/session/SessionClient.d.ts +0 -38
  40. package/dist/session/SessionClient.d.ts.map +0 -1
  41. package/dist/session/SessionClient.js +0 -136
  42. package/dist/session/SessionClient.js.map +0 -1
  43. package/dist/session/index.d.ts +0 -4
  44. package/dist/session/index.d.ts.map +0 -1
  45. package/dist/session/index.js +0 -10
  46. package/dist/session/index.js.map +0 -1
  47. package/dist/session/tokens.d.ts +0 -15
  48. package/dist/session/tokens.d.ts.map +0 -1
  49. package/dist/session/tokens.js +0 -55
  50. package/dist/session/tokens.js.map +0 -1
  51. package/dist/session/types.d.ts +0 -21
  52. package/dist/session/types.d.ts.map +0 -1
  53. package/dist/session/types.js +0 -3
  54. package/dist/session/types.js.map +0 -1
  55. package/dist/utils/index.d.ts +0 -2
  56. package/dist/utils/index.d.ts.map +0 -1
  57. package/dist/utils/index.js +0 -8
  58. package/dist/utils/index.js.map +0 -1
  59. package/dist/utils/scale.d.ts +0 -4
  60. package/dist/utils/scale.d.ts.map +0 -1
  61. package/dist/utils/scale.js +0 -13
  62. package/dist/utils/scale.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,28 +1,564 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AuthError = exports.VALID_COINS = exports.getCompatibleCoinType = exports.SCALE_FACTOR = exports.fromBackendScale = exports.toBackendScale = exports.isTableId = exports.isOneTimeToken = exports.looksLikeJwt = exports.useGameLauncher = exports.useHistoryClient = exports.HistoryClient = exports.SessionClient = void 0;
4
- // Clients
5
- var session_1 = require("./session");
6
- Object.defineProperty(exports, "SessionClient", { enumerable: true, get: function () { return session_1.SessionClient; } });
7
- var history_1 = require("./history");
8
- Object.defineProperty(exports, "HistoryClient", { enumerable: true, get: function () { return history_1.HistoryClient; } });
9
- Object.defineProperty(exports, "useHistoryClient", { enumerable: true, get: function () { return history_1.useHistoryClient; } });
10
- // Hooks
11
- var launcher_1 = require("./launcher");
12
- Object.defineProperty(exports, "useGameLauncher", { enumerable: true, get: function () { return launcher_1.useGameLauncher; } });
13
- // Utilities
14
- var tokens_1 = require("./session/tokens");
15
- Object.defineProperty(exports, "looksLikeJwt", { enumerable: true, get: function () { return tokens_1.looksLikeJwt; } });
16
- Object.defineProperty(exports, "isOneTimeToken", { enumerable: true, get: function () { return tokens_1.isOneTimeToken; } });
17
- Object.defineProperty(exports, "isTableId", { enumerable: true, get: function () { return tokens_1.isTableId; } });
18
- var scale_1 = require("./utils/scale");
19
- Object.defineProperty(exports, "toBackendScale", { enumerable: true, get: function () { return scale_1.toBackendScale; } });
20
- Object.defineProperty(exports, "fromBackendScale", { enumerable: true, get: function () { return scale_1.fromBackendScale; } });
21
- Object.defineProperty(exports, "SCALE_FACTOR", { enumerable: true, get: function () { return scale_1.SCALE_FACTOR; } });
22
- var launcher_2 = require("./launcher");
23
- Object.defineProperty(exports, "getCompatibleCoinType", { enumerable: true, get: function () { return launcher_2.getCompatibleCoinType; } });
24
- Object.defineProperty(exports, "VALID_COINS", { enumerable: true, get: function () { return launcher_2.VALID_COINS; } });
25
- // Errors
26
- var errors_1 = require("./errors");
27
- Object.defineProperty(exports, "AuthError", { enumerable: true, get: function () { return errors_1.AuthError; } });
3
+ exports.HistoryClient = exports.SessionClient = exports.VALID_COINS = exports.SCALE_FACTOR = exports.AuthError = void 0;
4
+ exports.toBackendScale = toBackendScale;
5
+ exports.fromBackendScale = fromBackendScale;
6
+ exports.looksLikeJwt = looksLikeJwt;
7
+ exports.isOneTimeToken = isOneTimeToken;
8
+ exports.isTableId = isTableId;
9
+ exports.getTokenType = getTokenType;
10
+ exports.getCompatibleCoinType = getCompatibleCoinType;
11
+ exports.initializeGame = initializeGame;
12
+ exports.useHistoryClient = useHistoryClient;
13
+ exports.useGameLauncher = useGameLauncher;
14
+ const react_1 = require("react");
15
+ // ============================================================================
16
+ // ERRORS
17
+ // ============================================================================
18
+ class AuthError extends Error {
19
+ constructor() {
20
+ super(...arguments);
21
+ this.name = 'AuthError';
22
+ }
23
+ }
24
+ exports.AuthError = AuthError;
25
+ // ============================================================================
26
+ // UTILITIES
27
+ // ============================================================================
28
+ exports.SCALE_FACTOR = 1000000000;
29
+ function toBackendScale(amount) {
30
+ return Math.round(amount * exports.SCALE_FACTOR);
31
+ }
32
+ function fromBackendScale(amount) {
33
+ return amount / exports.SCALE_FACTOR;
34
+ }
35
+ // ============================================================================
36
+ // TOKEN UTILITIES
37
+ // ============================================================================
38
+ /**
39
+ * Decode a base64url encoded string (used for JWT payloads).
40
+ */
41
+ function base64UrlDecode(input) {
42
+ // Convert base64url to standard base64
43
+ const base64 = input.replace(/-/g, '+').replace(/_/g, '/');
44
+ // Add padding if needed
45
+ const padded = base64 + '='.repeat((4 - (base64.length % 4)) % 4);
46
+ return atob(padded);
47
+ }
48
+ /**
49
+ * Extract the audience claim from a JWT token.
50
+ */
51
+ function getTokenAudience(token) {
52
+ try {
53
+ const parts = token.split('.');
54
+ if (parts.length < 2)
55
+ return null;
56
+ const payload = JSON.parse(base64UrlDecode(parts[1]));
57
+ return payload.aud;
58
+ }
59
+ catch {
60
+ return null;
61
+ }
62
+ }
63
+ /**
64
+ * Check if a token looks like a JWT (has 3 non-empty parts separated by dots).
65
+ */
66
+ function looksLikeJwt(token) {
67
+ if (!token || typeof token !== 'string')
68
+ return false;
69
+ const parts = token.split('.');
70
+ return parts.length === 3 && parts.every((p) => p.length > 0);
71
+ }
72
+ /**
73
+ * Check if a token is a one-time token (OTT) based on JWT audience claim.
74
+ * OTTs have aud: "login" in their payload.
75
+ */
76
+ function isOneTimeToken(token) {
77
+ return getTokenAudience(token) === 'login';
78
+ }
79
+ /**
80
+ * Check if a token looks like a UUID (table_id format).
81
+ * UUIDs are 36 characters: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
82
+ */
83
+ function isTableId(token) {
84
+ const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
85
+ return uuidRegex.test(token);
86
+ }
87
+ /**
88
+ * Classify a URL token into its type.
89
+ * Useful for quick UI decisions before making network calls.
90
+ */
91
+ function getTokenType(token) {
92
+ if (!token)
93
+ return 'unknown';
94
+ if (isTableId(token))
95
+ return 'table_id';
96
+ if (isOneTimeToken(token))
97
+ return 'ott';
98
+ if (looksLikeJwt(token))
99
+ return 'expired_jwt';
100
+ return 'unknown';
101
+ }
102
+ // ============================================================================
103
+ // LAUNCHER UTILITIES
104
+ // ============================================================================
105
+ // Valid coin types per chain
106
+ exports.VALID_COINS = {
107
+ sui: ['sui/sui', 'sui/usdc'],
108
+ solana: ['solana/sol', 'solana/usdc'],
109
+ };
110
+ /** Get coin type: use URL param if compatible with chain, otherwise default */
111
+ function getCompatibleCoinType(chain, urlCoinType) {
112
+ const defaultCoin = chain === 'solana' ? 'solana/sol' : 'sui/sui';
113
+ if (!urlCoinType)
114
+ return defaultCoin;
115
+ const validCoins = exports.VALID_COINS[chain] ?? [];
116
+ if (validCoins.includes(urlCoinType))
117
+ return urlCoinType;
118
+ return defaultCoin;
119
+ }
120
+ // ============================================================================
121
+ // SESSION CLIENT
122
+ // ============================================================================
123
+ const DEFAULT_SESSION_BASE_URL = 'https://sessiondev.infiniteedgers.com';
124
+ class SessionClient {
125
+ constructor(config = {}) {
126
+ this.baseUrl = config.baseUrl || DEFAULT_SESSION_BASE_URL;
127
+ }
128
+ /**
129
+ * Get a launch URL with one-time token for a game.
130
+ * Used by the parent site (e.g., doubleup-io) to launch games.
131
+ *
132
+ * @param params - Wallet address, signature, chain, and game type
133
+ * @returns Launch URL containing the one-time token
134
+ */
135
+ async getLaunchUrl(params) {
136
+ const response = await fetch(`${this.baseUrl}/api/get_launch_url`, {
137
+ method: 'POST',
138
+ headers: {
139
+ 'Content-Type': 'application/json',
140
+ },
141
+ body: JSON.stringify({
142
+ address: params.address,
143
+ signature: params.signature,
144
+ chain: params.chain,
145
+ gameType: params.gameType,
146
+ }),
147
+ });
148
+ if (!response.ok) {
149
+ const errorText = await response.text();
150
+ throw new Error(errorText || 'Failed to get launch URL');
151
+ }
152
+ const data = await response.json();
153
+ let launchUrl = (data.launchUrl ?? data.launch_url);
154
+ if (!launchUrl) {
155
+ throw new Error('Missing launch URL in response');
156
+ }
157
+ // Normalize URL if missing protocol
158
+ if (launchUrl.startsWith('//')) {
159
+ launchUrl = `https:${launchUrl}`;
160
+ }
161
+ else if (!launchUrl.startsWith('http://') && !launchUrl.startsWith('https://')) {
162
+ launchUrl = `https://${launchUrl}`;
163
+ }
164
+ // Parse the launch URL to extract origin and token
165
+ const parsed = new URL(launchUrl);
166
+ const token = parsed.searchParams.get('token');
167
+ if (!token) {
168
+ throw new Error('Missing token in launch URL');
169
+ }
170
+ return {
171
+ launchUrl,
172
+ origin: parsed.origin,
173
+ token,
174
+ };
175
+ }
176
+ /**
177
+ * Exchange a one-time token (OTT) for a session JWT.
178
+ *
179
+ * @param oneTimeToken - The one-time token from the launch URL
180
+ * @returns The session JWT token
181
+ * @throws AuthError if the token is invalid or expired
182
+ */
183
+ async getSessionToken(oneTimeToken) {
184
+ const response = await fetch(`${this.baseUrl}/api/get_session_token`, {
185
+ method: 'POST',
186
+ headers: {
187
+ Authorization: `Bearer ${oneTimeToken}`,
188
+ },
189
+ });
190
+ if (response.status === 401) {
191
+ throw new AuthError('Invalid or expired one-time token');
192
+ }
193
+ if (!response.ok) {
194
+ const errorText = await response.text();
195
+ throw new Error(errorText || 'Failed to get session token');
196
+ }
197
+ const data = await response.json();
198
+ if (data.error) {
199
+ throw new Error(data.error);
200
+ }
201
+ return data.token;
202
+ }
203
+ }
204
+ exports.SessionClient = SessionClient;
205
+ // ============================================================================
206
+ // INITIALIZE GAME
207
+ // ============================================================================
208
+ /**
209
+ * Initialize a game session from a URL token.
210
+ *
211
+ * Handles the complete flow:
212
+ * - OTT: exchange for session token → create table → return result
213
+ * - table_id: fetch table info → return result
214
+ * - expired JWT: throw AuthError
215
+ *
216
+ * @example
217
+ * ```ts
218
+ * const result = await initializeGame({
219
+ * token: urlParams.get('token'),
220
+ * coinType: urlParams.get('coinType'),
221
+ * sessionToken: sessionStorage.getItem('session_token'),
222
+ * createTable: (session, coin) => baccaratApi.createTable(session, coin),
223
+ * getTableInfo: (tableId, session) => baccaratApi.getBalance(session, tableId),
224
+ * });
225
+ * // result = { tableId, coinType, sessionToken }
226
+ * ```
227
+ */
228
+ async function initializeGame(options) {
229
+ const { token, coinType, sessionToken, createTable, getTableInfo, sessionConfig } = options;
230
+ // Case 1: Token is a table_id - fetch table info
231
+ if (isTableId(token)) {
232
+ const info = await getTableInfo(token, sessionToken ?? null);
233
+ return {
234
+ tableId: token,
235
+ coinType: info.coinType,
236
+ sessionToken: sessionToken ?? null,
237
+ };
238
+ }
239
+ // Case 2: Token is a one-time token - exchange and create table
240
+ if (isOneTimeToken(token)) {
241
+ if (!coinType) {
242
+ throw new Error('Missing coinType for new game');
243
+ }
244
+ const sessionClient = new SessionClient(sessionConfig);
245
+ const newSessionToken = await sessionClient.getSessionToken(token);
246
+ const table = await createTable(newSessionToken, coinType);
247
+ return {
248
+ tableId: table.tableId,
249
+ coinType: table.coinType,
250
+ sessionToken: newSessionToken,
251
+ };
252
+ }
253
+ // Case 3: Token looks like a JWT but not OTT - likely expired/used
254
+ if (looksLikeJwt(token)) {
255
+ throw new AuthError('This launch link has expired or was already used. Please launch the game again.');
256
+ }
257
+ // Case 4: Unknown token format
258
+ throw new Error('Invalid token format');
259
+ }
260
+ // ============================================================================
261
+ // HISTORY CLIENT
262
+ // ============================================================================
263
+ const DEFAULT_HISTORY_BASE_URL = 'historydev.infiniteedgers.com';
264
+ const DEFAULT_KEEP_ALIVE_INTERVAL_MS = 30000;
265
+ const DEFAULT_RECONNECT_DELAY_MS = 3000;
266
+ class HistoryClient {
267
+ constructor(config = {}) {
268
+ this.ws = null;
269
+ this.keepAliveInterval = null;
270
+ this.reconnectTimeout = null;
271
+ this.tableId = null;
272
+ this.coinType = null;
273
+ this.onMessage = null;
274
+ this.onConnect = null;
275
+ this.onDisconnect = null;
276
+ this.onError = null;
277
+ this.config = {
278
+ baseUrl: config.baseUrl || DEFAULT_HISTORY_BASE_URL,
279
+ keepAliveIntervalMs: config.keepAliveIntervalMs || DEFAULT_KEEP_ALIVE_INTERVAL_MS,
280
+ reconnectDelayMs: config.reconnectDelayMs || DEFAULT_RECONNECT_DELAY_MS,
281
+ autoReconnect: config.autoReconnect !== false,
282
+ };
283
+ }
284
+ connect(tableId, coinType) {
285
+ this.tableId = tableId;
286
+ this.coinType = coinType;
287
+ // Convert coin_type from "sui/sui" to "sui-sui" for URL
288
+ const coinTypeUrl = coinType.replace('/', '-');
289
+ const url = `wss://${this.config.baseUrl}/api/ws/${encodeURIComponent(tableId)}/${encodeURIComponent(coinTypeUrl)}`;
290
+ this.ws = new WebSocket(url);
291
+ this.ws.onopen = () => {
292
+ this.startKeepAlive();
293
+ if (this.onConnect) {
294
+ this.onConnect();
295
+ }
296
+ };
297
+ this.ws.onmessage = (event) => {
298
+ if (this.onMessage) {
299
+ this.onMessage(event);
300
+ }
301
+ };
302
+ this.ws.onclose = () => {
303
+ this.cleanup();
304
+ if (this.onDisconnect) {
305
+ this.onDisconnect();
306
+ }
307
+ if (this.config.autoReconnect && this.tableId && this.coinType) {
308
+ this.reconnectTimeout = window.setTimeout(() => {
309
+ this.connect(this.tableId, this.coinType);
310
+ }, this.config.reconnectDelayMs);
311
+ }
312
+ };
313
+ this.ws.onerror = (error) => {
314
+ if (this.onError) {
315
+ this.onError(error);
316
+ }
317
+ };
318
+ }
319
+ disconnect() {
320
+ this.config.autoReconnect = false;
321
+ this.cleanup();
322
+ if (this.ws) {
323
+ this.ws.close();
324
+ this.ws = null;
325
+ }
326
+ }
327
+ send(message) {
328
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
329
+ this.ws.send(JSON.stringify(message));
330
+ }
331
+ }
332
+ startKeepAlive() {
333
+ if (this.keepAliveInterval !== null) {
334
+ clearInterval(this.keepAliveInterval);
335
+ }
336
+ this.keepAliveInterval = window.setInterval(() => {
337
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
338
+ // Send plain 'ping' string - history service expects this format
339
+ this.ws.send('ping');
340
+ }
341
+ }, this.config.keepAliveIntervalMs);
342
+ }
343
+ cleanup() {
344
+ if (this.keepAliveInterval !== null) {
345
+ clearInterval(this.keepAliveInterval);
346
+ this.keepAliveInterval = null;
347
+ }
348
+ if (this.reconnectTimeout !== null) {
349
+ clearTimeout(this.reconnectTimeout);
350
+ this.reconnectTimeout = null;
351
+ }
352
+ }
353
+ }
354
+ exports.HistoryClient = HistoryClient;
355
+ function useHistoryClient(tableId, coinType, options = {}) {
356
+ const [isConnected, setIsConnected] = (0, react_1.useState)(false);
357
+ const clientRef = (0, react_1.useRef)(null);
358
+ // Use ref for callback to avoid stale closures
359
+ const onMessageRef = (0, react_1.useRef)(options.onMessage);
360
+ (0, react_1.useEffect)(() => {
361
+ onMessageRef.current = options.onMessage;
362
+ }, [options.onMessage]);
363
+ // Stable config ref to avoid reconnects on config object identity changes
364
+ const configRef = (0, react_1.useRef)(options.config);
365
+ (0, react_1.useEffect)(() => {
366
+ configRef.current = options.config;
367
+ }, [options.config]);
368
+ (0, react_1.useEffect)(() => {
369
+ if (!tableId || !coinType) {
370
+ return;
371
+ }
372
+ const client = new HistoryClient(configRef.current);
373
+ clientRef.current = client;
374
+ client.onConnect = () => {
375
+ setIsConnected(true);
376
+ };
377
+ client.onDisconnect = () => {
378
+ setIsConnected(false);
379
+ };
380
+ client.onMessage = (event) => {
381
+ try {
382
+ const message = JSON.parse(event.data);
383
+ // For wrapped events {channel, data}, unwrap and pass the data
384
+ // For relay messages {type, ...}, pass as-is
385
+ if (message.channel && message.data) {
386
+ onMessageRef.current?.(message.data);
387
+ }
388
+ else {
389
+ onMessageRef.current?.(message);
390
+ }
391
+ }
392
+ catch (error) {
393
+ console.error('[HistoryClient] Failed to parse WebSocket message:', error);
394
+ }
395
+ };
396
+ client.connect(tableId, coinType);
397
+ return () => {
398
+ client.disconnect();
399
+ clientRef.current = null;
400
+ };
401
+ }, [tableId, coinType]);
402
+ const send = (0, react_1.useCallback)((message) => {
403
+ if (clientRef.current) {
404
+ clientRef.current.send(message);
405
+ }
406
+ }, []);
407
+ const sendBetUpdate = (0, react_1.useCallback)((bets) => {
408
+ send({ type: 'bet_update', ...bets });
409
+ }, [send]);
410
+ const sendGameReset = (0, react_1.useCallback)(() => {
411
+ send({ type: 'game_reset' });
412
+ }, [send]);
413
+ const disconnect = (0, react_1.useCallback)(() => {
414
+ if (clientRef.current) {
415
+ clientRef.current.disconnect();
416
+ }
417
+ }, []);
418
+ return {
419
+ isConnected,
420
+ send,
421
+ sendBetUpdate,
422
+ sendGameReset,
423
+ disconnect,
424
+ };
425
+ }
426
+ function useGameLauncher(config, options) {
427
+ const { gameType, defaultOrigin, localOrigin, useLocal = false, tableCreatedMessageType } = config;
428
+ const { wallet, launch, getSearchParams, setSearchParams } = options;
429
+ const { mutateAsync: launchGame, reset } = launch;
430
+ // Derive the message type from gameType if not provided
431
+ const tableCreatedType = tableCreatedMessageType ?? `${gameType}-table-created`;
432
+ // Get URL params
433
+ const searchParams = getSearchParams();
434
+ const tokenParam = searchParams.get('token');
435
+ const urlCoinType = searchParams.get('coinType');
436
+ const [iframeOrigin, setIframeOrigin] = (0, react_1.useState)(null);
437
+ const [sessionToken, setSessionToken] = (0, react_1.useState)(null);
438
+ const [launchError, setLaunchError] = (0, react_1.useState)(null);
439
+ const [launchCoinType, setLaunchCoinType] = (0, react_1.useState)(null);
440
+ const [iframeHeight, setIframeHeight] = (0, react_1.useState)(null);
441
+ const launchInProgress = (0, react_1.useRef)(false);
442
+ // Determine the origin to use
443
+ const resolvedOrigin = useLocal && localOrigin ? localOrigin : defaultOrigin;
444
+ // Main launch effect
445
+ (0, react_1.useEffect)(() => {
446
+ async function run() {
447
+ // Load directly from URL token (shareable link or spectator)
448
+ if (tokenParam) {
449
+ if (sessionToken === tokenParam)
450
+ return;
451
+ setLaunchError(null);
452
+ setSessionToken(tokenParam);
453
+ setIframeOrigin(resolvedOrigin);
454
+ setLaunchCoinType(null); // Will be set by iframe message
455
+ return;
456
+ }
457
+ // Need wallet to launch
458
+ if (!wallet.address || !wallet.connected || !wallet.chain) {
459
+ setSessionToken(null);
460
+ setIframeOrigin(null);
461
+ setLaunchError(null);
462
+ setLaunchCoinType(null);
463
+ return;
464
+ }
465
+ // Skip if already have session, error, or launch in progress
466
+ if (sessionToken || launchError || launchInProgress.current)
467
+ return;
468
+ launchInProgress.current = true;
469
+ try {
470
+ const { origin, token, chain } = await launchGame({ gameType });
471
+ setSessionToken(token);
472
+ setIframeOrigin(useLocal && localOrigin ? localOrigin : origin);
473
+ // Use selected coin type if compatible, otherwise default
474
+ setLaunchCoinType(getCompatibleCoinType(chain, urlCoinType));
475
+ }
476
+ catch (error) {
477
+ setLaunchError(error instanceof Error ? error.message : String(error));
478
+ }
479
+ finally {
480
+ launchInProgress.current = false;
481
+ }
482
+ }
483
+ run();
484
+ }, [
485
+ wallet.address,
486
+ wallet.connected,
487
+ wallet.chain,
488
+ sessionToken,
489
+ launchError,
490
+ launchGame,
491
+ tokenParam,
492
+ urlCoinType,
493
+ gameType,
494
+ resolvedOrigin,
495
+ useLocal,
496
+ localOrigin,
497
+ ]);
498
+ // Handle iframe messages
499
+ (0, react_1.useEffect)(() => {
500
+ const handleMessage = (event) => {
501
+ if (!iframeOrigin || event.origin !== iframeOrigin)
502
+ return;
503
+ if (event.data?.type === tableCreatedType && event.data.tableId) {
504
+ // Table created - include coinType so selector shows correct coin (disabled)
505
+ const coinType = event.data.coinType || launchCoinType;
506
+ const newParams = { token: event.data.tableId };
507
+ if (coinType)
508
+ newParams.coinType = coinType;
509
+ setSessionToken(event.data.tableId);
510
+ setLaunchCoinType(null);
511
+ setSearchParams(newParams, { replace: true });
512
+ }
513
+ if (event.data?.type === 'table-info' && event.data.coinType) {
514
+ // Existing table loaded - set coinType in URL so selector shows correct coin
515
+ const currentToken = getSearchParams().get('token');
516
+ if (currentToken) {
517
+ setSearchParams({ token: currentToken, coinType: event.data.coinType }, { replace: true });
518
+ }
519
+ }
520
+ if (event.data?.type === 'iframe-height' && event.data.height) {
521
+ setIframeHeight(event.data.height);
522
+ }
523
+ };
524
+ window.addEventListener('message', handleMessage);
525
+ return () => window.removeEventListener('message', handleMessage);
526
+ }, [iframeOrigin, launchCoinType, tableCreatedType, getSearchParams, setSearchParams]);
527
+ const retry = (0, react_1.useCallback)(() => {
528
+ launchInProgress.current = false;
529
+ setSessionToken(null);
530
+ setIframeOrigin(null);
531
+ setLaunchError(null);
532
+ setLaunchCoinType(null);
533
+ reset();
534
+ }, [reset]);
535
+ const iframeSrc = (0, react_1.useMemo)(() => {
536
+ if (!iframeOrigin || !sessionToken)
537
+ return null;
538
+ try {
539
+ const url = new URL('/', iframeOrigin);
540
+ url.searchParams.set('token', sessionToken);
541
+ if (launchCoinType)
542
+ url.searchParams.set('coinType', launchCoinType);
543
+ return url.toString();
544
+ }
545
+ catch (e) {
546
+ // Invalid origin URL - this will be caught and surfaced via error state
547
+ console.error('Invalid iframe origin:', iframeOrigin, e);
548
+ return null;
549
+ }
550
+ }, [iframeOrigin, sessionToken, launchCoinType]);
551
+ // Determine UI state
552
+ const showConnectPrompt = !tokenParam && !wallet.connected;
553
+ const isLoading = !showConnectPrompt && !launchError && !iframeSrc;
554
+ return {
555
+ iframeSrc,
556
+ iframeHeight,
557
+ iframeOrigin,
558
+ error: launchError,
559
+ isLoading,
560
+ showConnectPrompt,
561
+ retry,
562
+ };
563
+ }
28
564
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,UAAU;AACV,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AACtB,qCAA4D;AAAnD,wGAAA,aAAa,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAExC,QAAQ;AACR,uCAA6C;AAApC,2GAAA,eAAe,OAAA;AAExB,YAAY;AACZ,2CAA2E;AAAlE,sGAAA,YAAY,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,mGAAA,SAAS,OAAA;AAChD,uCAA+E;AAAtE,uGAAA,cAAc,OAAA;AAAE,yGAAA,gBAAgB,OAAA;AAAE,qGAAA,YAAY,OAAA;AACvD,uCAAgE;AAAvD,iHAAA,qBAAqB,OAAA;AAAE,uGAAA,WAAW,OAAA;AAE3C,SAAS;AACT,mCAAqC;AAA5B,mGAAA,SAAS,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "infinite-games-sdk",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "Infinite Games SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/dist/errors.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export declare class AuthError extends Error {
2
- name: string;
3
- }
4
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;IAClC,IAAI,SAAe;CACpB"}
package/dist/errors.js DELETED
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AuthError = void 0;
4
- class AuthError extends Error {
5
- constructor() {
6
- super(...arguments);
7
- this.name = 'AuthError';
8
- }
9
- }
10
- exports.AuthError = AuthError;
11
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAApC;;QACE,SAAI,GAAG,WAAW,CAAC;IACrB,CAAC;CAAA;AAFD,8BAEC"}