@phantom/browser-sdk 1.0.0-beta.13 → 1.0.0-beta.14

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.
package/README.md CHANGED
@@ -315,7 +315,7 @@ Connect to wallet and get addresses for configured AddressTypes.
315
315
 
316
316
  ```typescript
317
317
  const result = await sdk.connect();
318
- // Returns: { walletId?: string, addresses: WalletAddress[] }
318
+ // Returns: { addresses: WalletAddress[] }
319
319
  // addresses only includes types from addressTypes config
320
320
  ```
321
321
 
@@ -344,15 +344,6 @@ Check if SDK is connected to a wallet.
344
344
  const connected = sdk.isConnected();
345
345
  ```
346
346
 
347
- #### getWalletId()
348
-
349
- Get the wallet ID (embedded wallets only).
350
-
351
- ```typescript
352
- const walletId = sdk.getWalletId();
353
- // Returns string for embedded wallets, null for injected
354
- ```
355
-
356
347
  ### Solana Chain Methods
357
348
 
358
349
  #### signMessage(message)
package/dist/index.d.ts CHANGED
@@ -157,10 +157,6 @@ declare class BrowserSDK {
157
157
  * Get information about the current provider
158
158
  */
159
159
  getCurrentProviderInfo(): ProviderPreference | null;
160
- /**
161
- * Get the wallet ID (for embedded wallets)
162
- */
163
- getWalletId(): string | null;
164
160
  /**
165
161
  * Check if Phantom extension is installed
166
162
  */
@@ -178,7 +174,7 @@ declare class BrowserSDK {
178
174
  /**
179
175
  * Attempt auto-connection using existing session
180
176
  * Should be called after setting up event listeners
181
- * Only works with embedded providers
177
+ * Tries embedded provider first, then injected provider as fallback
182
178
  */
183
179
  autoConnect(): Promise<void>;
184
180
  /**
package/dist/index.js CHANGED
@@ -508,7 +508,6 @@ var InjectedProvider = class {
508
508
  const result = {
509
509
  addresses: this.addresses,
510
510
  status: "completed"
511
- // walletId is not applicable for injected providers
512
511
  };
513
512
  this.emit("connect", {
514
513
  addresses: this.addresses,
@@ -947,7 +946,7 @@ var BrowserAuthProvider = class {
947
946
  redirect_uri: phantomOptions.redirectUrl || (typeof window !== "undefined" ? this.getValidatedCurrentUrl() : ""),
948
947
  session_id: phantomOptions.sessionId,
949
948
  clear_previous_session: true.toString(),
950
- sdk_version: "1.0.0-beta.13"
949
+ sdk_version: "1.0.0-beta.14"
951
950
  });
952
951
  if (phantomOptions.provider) {
953
952
  debug.log(DebugCategory.PHANTOM_CONNECT_AUTH, "Provider specified, will skip selection", {
@@ -1245,7 +1244,7 @@ var EmbeddedProvider = class extends import_embedded_provider_core.EmbeddedProvi
1245
1244
  // Full user agent for more detailed info
1246
1245
  [import_constants2.ANALYTICS_HEADERS.APP_ID]: config.appId,
1247
1246
  [import_constants2.ANALYTICS_HEADERS.WALLET_TYPE]: config.embeddedWalletType,
1248
- [import_constants2.ANALYTICS_HEADERS.SDK_VERSION]: "1.0.0-beta.13"
1247
+ [import_constants2.ANALYTICS_HEADERS.SDK_VERSION]: "1.0.0-beta.14"
1249
1248
  // Replaced at build time
1250
1249
  }
1251
1250
  };
@@ -1264,7 +1263,6 @@ var ProviderManager = class {
1264
1263
  this.providers = /* @__PURE__ */ new Map();
1265
1264
  this.currentProvider = null;
1266
1265
  this.currentProviderKey = null;
1267
- this.walletId = null;
1268
1266
  // Event management for forwarding provider events
1269
1267
  this.eventListeners = /* @__PURE__ */ new Map();
1270
1268
  this.providerForwardingSetup = /* @__PURE__ */ new WeakSet();
@@ -1300,7 +1298,6 @@ var ProviderManager = class {
1300
1298
  }
1301
1299
  this.currentProvider = this.providers.get(key);
1302
1300
  this.currentProviderKey = key;
1303
- this.walletId = null;
1304
1301
  this.ensureProviderEventForwarding();
1305
1302
  return this.currentProvider;
1306
1303
  }
@@ -1337,14 +1334,11 @@ var ProviderManager = class {
1337
1334
  }
1338
1335
  debug.log(DebugCategory.PROVIDER_MANAGER, "Delegating to provider connect method");
1339
1336
  const result = await this.currentProvider.connect(authOptions);
1340
- this.walletId = result.walletId || null;
1341
1337
  debug.log(DebugCategory.PROVIDER_MANAGER, "Connection successful, saving preferences", {
1342
- walletId: this.walletId,
1343
1338
  addressCount: result.addresses?.length || 0
1344
1339
  });
1345
1340
  this.saveProviderPreference();
1346
1341
  debug.info(DebugCategory.PROVIDER_MANAGER, "Connect completed", {
1347
- walletId: this.walletId,
1348
1342
  addresses: result.addresses
1349
1343
  });
1350
1344
  return result;
@@ -1356,7 +1350,6 @@ var ProviderManager = class {
1356
1350
  if (!this.currentProvider)
1357
1351
  return;
1358
1352
  await this.currentProvider.disconnect();
1359
- this.walletId = null;
1360
1353
  }
1361
1354
  /**
1362
1355
  * Get addresses from current provider
@@ -1374,10 +1367,61 @@ var ProviderManager = class {
1374
1367
  return this.currentProvider?.isConnected() ?? false;
1375
1368
  }
1376
1369
  /**
1377
- * Get current wallet ID
1370
+ * Attempt auto-connect with fallback strategy
1371
+ * Tries embedded provider first if it exists, then injected provider
1372
+ * Returns true if any provider successfully connected
1378
1373
  */
1379
- getWalletId() {
1380
- return this.walletId;
1374
+ async autoConnect() {
1375
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Starting auto-connect with fallback strategy");
1376
+ const embeddedWalletType = this.config.embeddedWalletType || "user-wallet";
1377
+ const embeddedKey = this.getProviderKey("embedded", embeddedWalletType);
1378
+ if (this.providers.has(embeddedKey)) {
1379
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Trying auto-connect with existing embedded provider");
1380
+ const embeddedProvider = this.providers.get(embeddedKey);
1381
+ try {
1382
+ const previousProvider = this.currentProvider;
1383
+ const previousKey = this.currentProviderKey;
1384
+ this.currentProvider = embeddedProvider;
1385
+ this.currentProviderKey = embeddedKey;
1386
+ this.ensureProviderEventForwarding();
1387
+ await embeddedProvider.autoConnect();
1388
+ if (embeddedProvider.isConnected()) {
1389
+ debug.info(DebugCategory.PROVIDER_MANAGER, "Embedded auto-connect successful");
1390
+ this.saveProviderPreference();
1391
+ return true;
1392
+ } else {
1393
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Embedded provider did not connect, restoring previous provider");
1394
+ this.currentProvider = previousProvider;
1395
+ this.currentProviderKey = previousKey;
1396
+ }
1397
+ } catch (error) {
1398
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Embedded auto-connect failed", {
1399
+ error: error.message
1400
+ });
1401
+ }
1402
+ }
1403
+ const injectedKey = this.getProviderKey("injected");
1404
+ if (this.providers.has(injectedKey)) {
1405
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Trying auto-connect with existing injected provider");
1406
+ const injectedProvider = this.providers.get(injectedKey);
1407
+ try {
1408
+ this.currentProvider = injectedProvider;
1409
+ this.currentProviderKey = injectedKey;
1410
+ this.ensureProviderEventForwarding();
1411
+ await injectedProvider.autoConnect();
1412
+ if (injectedProvider.isConnected()) {
1413
+ debug.info(DebugCategory.PROVIDER_MANAGER, "Injected auto-connect successful");
1414
+ this.saveProviderPreference();
1415
+ return true;
1416
+ }
1417
+ } catch (error) {
1418
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Injected auto-connect failed", {
1419
+ error: error.message
1420
+ });
1421
+ }
1422
+ }
1423
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Auto-connect failed for all existing providers");
1424
+ return false;
1381
1425
  }
1382
1426
  /**
1383
1427
  * Add event listener - stores callback and ensures current provider forwards events to ProviderManager
@@ -1460,11 +1504,17 @@ var ProviderManager = class {
1460
1504
  }
1461
1505
  /**
1462
1506
  * Set default provider based on initial config
1507
+ * Creates both embedded and injected providers for autoConnect fallback
1463
1508
  */
1464
1509
  setDefaultProvider() {
1465
1510
  const defaultType = this.config.providerType || "embedded";
1466
1511
  const defaultEmbeddedType = this.config.embeddedWalletType || "user-wallet";
1467
- this.createProvider(defaultType, defaultEmbeddedType);
1512
+ if (this.config.appId) {
1513
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Creating embedded provider");
1514
+ this.createProvider("embedded", defaultEmbeddedType);
1515
+ }
1516
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Creating injected provider");
1517
+ this.createProvider("injected");
1468
1518
  this.switchProvider(defaultType, { embeddedWalletType: defaultEmbeddedType });
1469
1519
  }
1470
1520
  /**
@@ -1625,7 +1675,6 @@ var BrowserSDK = class {
1625
1675
  const result = await this.providerManager.connect(options);
1626
1676
  debug.info(DebugCategory.BROWSER_SDK, "Connection successful", {
1627
1677
  addressCount: result.addresses.length,
1628
- walletId: result.walletId,
1629
1678
  status: result.status
1630
1679
  });
1631
1680
  return result;
@@ -1682,12 +1731,6 @@ var BrowserSDK = class {
1682
1731
  getCurrentProviderInfo() {
1683
1732
  return this.providerManager.getCurrentProviderInfo();
1684
1733
  }
1685
- /**
1686
- * Get the wallet ID (for embedded wallets)
1687
- */
1688
- getWalletId() {
1689
- return this.providerManager.getWalletId();
1690
- }
1691
1734
  // ===== UTILITY METHODS =====
1692
1735
  /**
1693
1736
  * Check if Phantom extension is installed
@@ -1714,17 +1757,17 @@ var BrowserSDK = class {
1714
1757
  /**
1715
1758
  * Attempt auto-connection using existing session
1716
1759
  * Should be called after setting up event listeners
1717
- * Only works with embedded providers
1760
+ * Tries embedded provider first, then injected provider as fallback
1718
1761
  */
1719
1762
  async autoConnect() {
1720
- debug.log(DebugCategory.BROWSER_SDK, "Attempting auto-connect");
1721
- const currentProvider = this.providerManager.getCurrentProvider();
1722
- if (currentProvider) {
1723
- await currentProvider.autoConnect();
1724
- } else {
1725
- debug.warn(DebugCategory.BROWSER_SDK, "Current provider does not support auto-connect", {
1763
+ debug.log(DebugCategory.BROWSER_SDK, "Attempting auto-connect with fallback strategy");
1764
+ const result = await this.providerManager.autoConnect();
1765
+ if (result) {
1766
+ debug.info(DebugCategory.BROWSER_SDK, "Auto-connect successful", {
1726
1767
  providerType: this.getCurrentProviderInfo()?.type
1727
1768
  });
1769
+ } else {
1770
+ debug.log(DebugCategory.BROWSER_SDK, "Auto-connect failed for all providers");
1728
1771
  }
1729
1772
  }
1730
1773
  /**
package/dist/index.mjs CHANGED
@@ -472,7 +472,6 @@ var InjectedProvider = class {
472
472
  const result = {
473
473
  addresses: this.addresses,
474
474
  status: "completed"
475
- // walletId is not applicable for injected providers
476
475
  };
477
476
  this.emit("connect", {
478
477
  addresses: this.addresses,
@@ -911,7 +910,7 @@ var BrowserAuthProvider = class {
911
910
  redirect_uri: phantomOptions.redirectUrl || (typeof window !== "undefined" ? this.getValidatedCurrentUrl() : ""),
912
911
  session_id: phantomOptions.sessionId,
913
912
  clear_previous_session: true.toString(),
914
- sdk_version: "1.0.0-beta.13"
913
+ sdk_version: "1.0.0-beta.14"
915
914
  });
916
915
  if (phantomOptions.provider) {
917
916
  debug.log(DebugCategory.PHANTOM_CONNECT_AUTH, "Provider specified, will skip selection", {
@@ -1209,7 +1208,7 @@ var EmbeddedProvider = class extends CoreEmbeddedProvider {
1209
1208
  // Full user agent for more detailed info
1210
1209
  [ANALYTICS_HEADERS.APP_ID]: config.appId,
1211
1210
  [ANALYTICS_HEADERS.WALLET_TYPE]: config.embeddedWalletType,
1212
- [ANALYTICS_HEADERS.SDK_VERSION]: "1.0.0-beta.13"
1211
+ [ANALYTICS_HEADERS.SDK_VERSION]: "1.0.0-beta.14"
1213
1212
  // Replaced at build time
1214
1213
  }
1215
1214
  };
@@ -1228,7 +1227,6 @@ var ProviderManager = class {
1228
1227
  this.providers = /* @__PURE__ */ new Map();
1229
1228
  this.currentProvider = null;
1230
1229
  this.currentProviderKey = null;
1231
- this.walletId = null;
1232
1230
  // Event management for forwarding provider events
1233
1231
  this.eventListeners = /* @__PURE__ */ new Map();
1234
1232
  this.providerForwardingSetup = /* @__PURE__ */ new WeakSet();
@@ -1264,7 +1262,6 @@ var ProviderManager = class {
1264
1262
  }
1265
1263
  this.currentProvider = this.providers.get(key);
1266
1264
  this.currentProviderKey = key;
1267
- this.walletId = null;
1268
1265
  this.ensureProviderEventForwarding();
1269
1266
  return this.currentProvider;
1270
1267
  }
@@ -1301,14 +1298,11 @@ var ProviderManager = class {
1301
1298
  }
1302
1299
  debug.log(DebugCategory.PROVIDER_MANAGER, "Delegating to provider connect method");
1303
1300
  const result = await this.currentProvider.connect(authOptions);
1304
- this.walletId = result.walletId || null;
1305
1301
  debug.log(DebugCategory.PROVIDER_MANAGER, "Connection successful, saving preferences", {
1306
- walletId: this.walletId,
1307
1302
  addressCount: result.addresses?.length || 0
1308
1303
  });
1309
1304
  this.saveProviderPreference();
1310
1305
  debug.info(DebugCategory.PROVIDER_MANAGER, "Connect completed", {
1311
- walletId: this.walletId,
1312
1306
  addresses: result.addresses
1313
1307
  });
1314
1308
  return result;
@@ -1320,7 +1314,6 @@ var ProviderManager = class {
1320
1314
  if (!this.currentProvider)
1321
1315
  return;
1322
1316
  await this.currentProvider.disconnect();
1323
- this.walletId = null;
1324
1317
  }
1325
1318
  /**
1326
1319
  * Get addresses from current provider
@@ -1338,10 +1331,61 @@ var ProviderManager = class {
1338
1331
  return this.currentProvider?.isConnected() ?? false;
1339
1332
  }
1340
1333
  /**
1341
- * Get current wallet ID
1334
+ * Attempt auto-connect with fallback strategy
1335
+ * Tries embedded provider first if it exists, then injected provider
1336
+ * Returns true if any provider successfully connected
1342
1337
  */
1343
- getWalletId() {
1344
- return this.walletId;
1338
+ async autoConnect() {
1339
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Starting auto-connect with fallback strategy");
1340
+ const embeddedWalletType = this.config.embeddedWalletType || "user-wallet";
1341
+ const embeddedKey = this.getProviderKey("embedded", embeddedWalletType);
1342
+ if (this.providers.has(embeddedKey)) {
1343
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Trying auto-connect with existing embedded provider");
1344
+ const embeddedProvider = this.providers.get(embeddedKey);
1345
+ try {
1346
+ const previousProvider = this.currentProvider;
1347
+ const previousKey = this.currentProviderKey;
1348
+ this.currentProvider = embeddedProvider;
1349
+ this.currentProviderKey = embeddedKey;
1350
+ this.ensureProviderEventForwarding();
1351
+ await embeddedProvider.autoConnect();
1352
+ if (embeddedProvider.isConnected()) {
1353
+ debug.info(DebugCategory.PROVIDER_MANAGER, "Embedded auto-connect successful");
1354
+ this.saveProviderPreference();
1355
+ return true;
1356
+ } else {
1357
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Embedded provider did not connect, restoring previous provider");
1358
+ this.currentProvider = previousProvider;
1359
+ this.currentProviderKey = previousKey;
1360
+ }
1361
+ } catch (error) {
1362
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Embedded auto-connect failed", {
1363
+ error: error.message
1364
+ });
1365
+ }
1366
+ }
1367
+ const injectedKey = this.getProviderKey("injected");
1368
+ if (this.providers.has(injectedKey)) {
1369
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Trying auto-connect with existing injected provider");
1370
+ const injectedProvider = this.providers.get(injectedKey);
1371
+ try {
1372
+ this.currentProvider = injectedProvider;
1373
+ this.currentProviderKey = injectedKey;
1374
+ this.ensureProviderEventForwarding();
1375
+ await injectedProvider.autoConnect();
1376
+ if (injectedProvider.isConnected()) {
1377
+ debug.info(DebugCategory.PROVIDER_MANAGER, "Injected auto-connect successful");
1378
+ this.saveProviderPreference();
1379
+ return true;
1380
+ }
1381
+ } catch (error) {
1382
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Injected auto-connect failed", {
1383
+ error: error.message
1384
+ });
1385
+ }
1386
+ }
1387
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Auto-connect failed for all existing providers");
1388
+ return false;
1345
1389
  }
1346
1390
  /**
1347
1391
  * Add event listener - stores callback and ensures current provider forwards events to ProviderManager
@@ -1424,11 +1468,17 @@ var ProviderManager = class {
1424
1468
  }
1425
1469
  /**
1426
1470
  * Set default provider based on initial config
1471
+ * Creates both embedded and injected providers for autoConnect fallback
1427
1472
  */
1428
1473
  setDefaultProvider() {
1429
1474
  const defaultType = this.config.providerType || "embedded";
1430
1475
  const defaultEmbeddedType = this.config.embeddedWalletType || "user-wallet";
1431
- this.createProvider(defaultType, defaultEmbeddedType);
1476
+ if (this.config.appId) {
1477
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Creating embedded provider");
1478
+ this.createProvider("embedded", defaultEmbeddedType);
1479
+ }
1480
+ debug.log(DebugCategory.PROVIDER_MANAGER, "Creating injected provider");
1481
+ this.createProvider("injected");
1432
1482
  this.switchProvider(defaultType, { embeddedWalletType: defaultEmbeddedType });
1433
1483
  }
1434
1484
  /**
@@ -1589,7 +1639,6 @@ var BrowserSDK = class {
1589
1639
  const result = await this.providerManager.connect(options);
1590
1640
  debug.info(DebugCategory.BROWSER_SDK, "Connection successful", {
1591
1641
  addressCount: result.addresses.length,
1592
- walletId: result.walletId,
1593
1642
  status: result.status
1594
1643
  });
1595
1644
  return result;
@@ -1646,12 +1695,6 @@ var BrowserSDK = class {
1646
1695
  getCurrentProviderInfo() {
1647
1696
  return this.providerManager.getCurrentProviderInfo();
1648
1697
  }
1649
- /**
1650
- * Get the wallet ID (for embedded wallets)
1651
- */
1652
- getWalletId() {
1653
- return this.providerManager.getWalletId();
1654
- }
1655
1698
  // ===== UTILITY METHODS =====
1656
1699
  /**
1657
1700
  * Check if Phantom extension is installed
@@ -1678,17 +1721,17 @@ var BrowserSDK = class {
1678
1721
  /**
1679
1722
  * Attempt auto-connection using existing session
1680
1723
  * Should be called after setting up event listeners
1681
- * Only works with embedded providers
1724
+ * Tries embedded provider first, then injected provider as fallback
1682
1725
  */
1683
1726
  async autoConnect() {
1684
- debug.log(DebugCategory.BROWSER_SDK, "Attempting auto-connect");
1685
- const currentProvider = this.providerManager.getCurrentProvider();
1686
- if (currentProvider) {
1687
- await currentProvider.autoConnect();
1688
- } else {
1689
- debug.warn(DebugCategory.BROWSER_SDK, "Current provider does not support auto-connect", {
1727
+ debug.log(DebugCategory.BROWSER_SDK, "Attempting auto-connect with fallback strategy");
1728
+ const result = await this.providerManager.autoConnect();
1729
+ if (result) {
1730
+ debug.info(DebugCategory.BROWSER_SDK, "Auto-connect successful", {
1690
1731
  providerType: this.getCurrentProviderInfo()?.type
1691
1732
  });
1733
+ } else {
1734
+ debug.log(DebugCategory.BROWSER_SDK, "Auto-connect failed for all providers");
1692
1735
  }
1693
1736
  }
1694
1737
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phantom/browser-sdk",
3
- "version": "1.0.0-beta.13",
3
+ "version": "1.0.0-beta.14",
4
4
  "description": "Browser SDK for Phantom Wallet",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -31,9 +31,9 @@
31
31
  "@phantom/base64url": "^1.0.0-beta.7",
32
32
  "@phantom/browser-injected-sdk": "^1.0.0-beta.5",
33
33
  "@phantom/chain-interfaces": "^1.0.0-beta.7",
34
- "@phantom/client": "^1.0.0-beta.13",
34
+ "@phantom/client": "^1.0.0-beta.14",
35
35
  "@phantom/constants": "^1.0.0-beta.7",
36
- "@phantom/embedded-provider-core": "^1.0.0-beta.13",
36
+ "@phantom/embedded-provider-core": "^1.0.0-beta.14",
37
37
  "@phantom/indexed-db-stamper": "^1.0.0-beta.1",
38
38
  "@phantom/parsers": "^1.0.0-beta.7",
39
39
  "@phantom/sdk-types": "^1.0.0-beta.7",