@meshconnect/web-link-sdk 3.2.1 → 3.2.3

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/Link.js CHANGED
@@ -159,7 +159,7 @@ function handleLinkEvent(event) {
159
159
  }
160
160
  function handleWalletBrowserEvent(event) {
161
161
  return __awaiter(this, void 0, void 0, function () {
162
- var walletFactory, _a, payload, networkType, strategy, result, error_1, payload, networkType, strategy, result, error_2, payload, networkType, strategy, result, error_3, payload, networkType, strategy, result, error_4, payload, getResponseType, networkType, strategy, result, responseType, error_5, errorType, payload, responseType, networkType, strategy, result, error_6, payload, networkType, strategy, error_7;
162
+ var walletFactory, _a, payload, networkType, strategy, result, error_1, payload, networkType, strategy, result, error_2, payload, networkType, strategy, result, error_3, payload, networkType, strategy, result, error_4, payload, getResponseType, networkType, strategy, result, responseType, error_5, errorType, payload, responseType, networkType, strategy, result, error_6, payload, responseType, networkType, strategy, result, error_7, payload, networkType, strategy, error_8;
163
163
  var _b;
164
164
  return __generator(this, function (_c) {
165
165
  switch (_c.label) {
@@ -175,9 +175,10 @@ function handleWalletBrowserEvent(event) {
175
175
  case 'walletBrowserNativeSmartDeposit': return [3 /*break*/, 21];
176
176
  case 'walletBrowserNonNativeSmartDeposit': return [3 /*break*/, 21];
177
177
  case 'walletBrowserTransactionBatchRequest': return [3 /*break*/, 26];
178
- case 'walletBrowserDisconnect': return [3 /*break*/, 31];
178
+ case 'walletBrowserWalletCapabilities': return [3 /*break*/, 31];
179
+ case 'walletBrowserDisconnect': return [3 /*break*/, 36];
179
180
  }
180
- return [3 /*break*/, 39];
181
+ return [3 /*break*/, 44];
181
182
  case 1:
182
183
  payload = event.data.payload;
183
184
  _c.label = 2;
@@ -202,7 +203,7 @@ function handleWalletBrowserEvent(event) {
202
203
  console.error('Connection error:', error_1);
203
204
  handleErrorAndSendMessage(error_1, 'SDKinjectedConnectionCompleted');
204
205
  return [3 /*break*/, 5];
205
- case 5: return [3 /*break*/, 39];
206
+ case 5: return [3 /*break*/, 44];
206
207
  case 6:
207
208
  payload = event.data.payload;
208
209
  _c.label = 7;
@@ -222,7 +223,7 @@ function handleWalletBrowserEvent(event) {
222
223
  error_2 = _c.sent();
223
224
  handleErrorAndSendMessage(error_2, 'SDKsignRequestCompleted');
224
225
  return [3 /*break*/, 10];
225
- case 10: return [3 /*break*/, 39];
226
+ case 10: return [3 /*break*/, 44];
226
227
  case 11:
227
228
  payload = event.data.payload;
228
229
  _c.label = 12;
@@ -247,7 +248,7 @@ function handleWalletBrowserEvent(event) {
247
248
  console.error('Chain switch failed:', error_3);
248
249
  handleErrorAndSendMessage(error_3, 'SDKswitchChainCompleted');
249
250
  return [3 /*break*/, 15];
250
- case 15: return [3 /*break*/, 39];
251
+ case 15: return [3 /*break*/, 44];
251
252
  case 16:
252
253
  payload = event.data.payload;
253
254
  _c.label = 17;
@@ -267,7 +268,7 @@ function handleWalletBrowserEvent(event) {
267
268
  error_4 = _c.sent();
268
269
  handleErrorAndSendMessage(error_4, 'SDKnativeTransferCompleted');
269
270
  return [3 /*break*/, 20];
270
- case 20: return [3 /*break*/, 39];
271
+ case 20: return [3 /*break*/, 44];
271
272
  case 21:
272
273
  payload = event.data.payload;
273
274
  getResponseType = function (type) {
@@ -303,7 +304,7 @@ function handleWalletBrowserEvent(event) {
303
304
  errorType = getResponseType(event.data.type);
304
305
  handleErrorAndSendMessage(error_5, errorType);
305
306
  return [3 /*break*/, 25];
306
- case 25: return [3 /*break*/, 39];
307
+ case 25: return [3 /*break*/, 44];
307
308
  case 26:
308
309
  payload = event.data.payload;
309
310
  responseType = 'SDKtransactionBatchCompleted';
@@ -326,41 +327,62 @@ function handleWalletBrowserEvent(event) {
326
327
  error_6 = _c.sent();
327
328
  handleErrorAndSendMessage(error_6, responseType);
328
329
  return [3 /*break*/, 30];
329
- case 30: return [3 /*break*/, 39];
330
+ case 30: return [3 /*break*/, 44];
330
331
  case 31:
331
332
  payload = event.data.payload;
333
+ responseType = 'SDKwalletCapabilitiesCompleted';
332
334
  _c.label = 32;
333
335
  case 32:
334
- _c.trys.push([32, 37, , 38]);
335
- if (!(payload === null || payload === void 0 ? void 0 : payload.networkType)) return [3 /*break*/, 34];
336
+ _c.trys.push([32, 34, , 35]);
337
+ networkType = (payload.from.startsWith('0x') ? 'evm' : 'solana');
338
+ strategy = walletFactory.getStrategy(networkType);
339
+ return [4 /*yield*/, strategy.getWalletCapabilities(payload)];
340
+ case 33:
341
+ result = _c.sent();
342
+ sendMessageToIframe({
343
+ type: responseType,
344
+ payload: result
345
+ });
346
+ return [3 /*break*/, 35];
347
+ case 34:
348
+ error_7 = _c.sent();
349
+ handleErrorAndSendMessage(error_7, responseType);
350
+ return [3 /*break*/, 35];
351
+ case 35: return [3 /*break*/, 44];
352
+ case 36:
353
+ payload = event.data.payload;
354
+ _c.label = 37;
355
+ case 37:
356
+ _c.trys.push([37, 42, , 43]);
357
+ if (!(payload === null || payload === void 0 ? void 0 : payload.networkType)) return [3 /*break*/, 39];
336
358
  networkType = (payload.networkType === 'solana' ? 'solana' : 'evm');
337
359
  strategy = walletFactory.getStrategy(networkType);
338
360
  return [4 /*yield*/, strategy.disconnect(payload)];
339
- case 33:
361
+ case 38:
340
362
  _c.sent();
341
- return [3 /*break*/, 36];
342
- case 34:
363
+ return [3 /*break*/, 41];
364
+ case 39:
343
365
  // Disconnect from all if no specific network type
344
366
  return [4 /*yield*/, Promise.all([
345
367
  walletFactory.getStrategy('solana').disconnect(payload),
346
368
  walletFactory.getStrategy('evm').disconnect(payload)
347
369
  ])];
348
- case 35:
370
+ case 40:
349
371
  // Disconnect from all if no specific network type
350
372
  _c.sent();
351
- _c.label = 36;
352
- case 36:
373
+ _c.label = 41;
374
+ case 41:
353
375
  sendMessageToIframe({
354
376
  type: 'SDKdisconnectSuccess'
355
377
  });
356
- return [3 /*break*/, 38];
357
- case 37:
358
- error_7 = _c.sent();
359
- console.error('Error during disconnect:', error_7);
360
- handleErrorAndSendMessage(error_7, 'SDKdisconnectSuccess');
361
- return [3 /*break*/, 38];
362
- case 38: return [3 /*break*/, 39];
363
- case 39: return [2 /*return*/];
378
+ return [3 /*break*/, 43];
379
+ case 42:
380
+ error_8 = _c.sent();
381
+ console.error('Error during disconnect:', error_8);
382
+ handleErrorAndSendMessage(error_8, 'SDKdisconnectSuccess');
383
+ return [3 /*break*/, 43];
384
+ case 43: return [3 /*break*/, 44];
385
+ case 44: return [2 /*return*/];
364
386
  }
365
387
  });
366
388
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/web-link-sdk",
3
- "version": "3.2.1",
3
+ "version": "3.2.3",
4
4
  "description": "A client-side JS library for integrating with Mesh Connect",
5
5
  "exports": "./index.js",
6
6
  "license": "MIT",
@@ -21,3 +21,4 @@ export declare const sendEVMTransactionBatch: (params: {
21
21
  data?: string;
22
22
  }[];
23
23
  }) => Promise<string | Error>;
24
+ export declare const getWalletCapabilities: (from: string, chainId: string) => Promise<any>;
@@ -274,3 +274,23 @@ export var sendEVMTransactionBatch = function (params) { return __awaiter(void 0
274
274
  }
275
275
  });
276
276
  }); };
277
+ export var getWalletCapabilities = function (from, chainId) { return __awaiter(void 0, void 0, void 0, function () {
278
+ var activeRawProvider, provider, capabilities;
279
+ return __generator(this, function (_a) {
280
+ switch (_a.label) {
281
+ case 0:
282
+ activeRawProvider = getActiveRawProvider();
283
+ if (!activeRawProvider) {
284
+ throw new Error('No active EVM provider');
285
+ }
286
+ provider = new ethers.BrowserProvider(activeRawProvider);
287
+ return [4 /*yield*/, provider.send('wallet_getCapabilities', [
288
+ from,
289
+ [chainId]
290
+ ])];
291
+ case 1:
292
+ capabilities = _a.sent();
293
+ return [2 /*return*/, capabilities[chainId]];
294
+ }
295
+ });
296
+ }); };
@@ -50,7 +50,10 @@ export var getEVMProvider = function (walletName, walletDetail) {
50
50
  throw new Error('Wallet name is required');
51
51
  }
52
52
  var providers = findAvailableProviders();
53
- var matchingProvider = providers.find(function (p) { return p.name.toLowerCase() === walletName.toLowerCase(); });
53
+ var matchingProvider = providers.find(function (p) {
54
+ return p.name.toLowerCase() === walletName.toLowerCase() ||
55
+ p.name.toLowerCase().includes(walletName.toLowerCase());
56
+ });
54
57
  if (matchingProvider) {
55
58
  return matchingProvider.injectedData.provider;
56
59
  }
@@ -63,11 +66,11 @@ export var getEVMProvider = function (walletName, walletDetail) {
63
66
  * Connects to an EVM wallet
64
67
  */
65
68
  export var connectToEVMWallet = function (walletName, targetChainId, walletDetail) { return __awaiter(void 0, void 0, void 0, function () {
66
- var provider, browserProvider, existingAccounts, signer, address, chainId, switchResult, error_1;
69
+ var provider, browserProvider, existingAccounts, error_1, signer, address, chainId, switchResult, error_2;
67
70
  return __generator(this, function (_a) {
68
71
  switch (_a.label) {
69
72
  case 0:
70
- _a.trys.push([0, 9, , 10]);
73
+ _a.trys.push([0, 12, , 13]);
71
74
  provider = void 0;
72
75
  try {
73
76
  provider = getEVMProvider(walletName, walletDetail);
@@ -77,46 +80,56 @@ export var connectToEVMWallet = function (walletName, targetChainId, walletDetai
77
80
  }
78
81
  browserProvider = new ethers.BrowserProvider(provider);
79
82
  setActiveEVMProvider(browserProvider, provider);
80
- return [4 /*yield*/, provider.request({ method: 'eth_accounts' })];
83
+ existingAccounts = void 0;
84
+ _a.label = 1;
81
85
  case 1:
86
+ _a.trys.push([1, 3, , 4]);
87
+ return [4 /*yield*/, provider.request({ method: 'eth_accounts' })];
88
+ case 2:
82
89
  existingAccounts = _a.sent();
83
- if (!(!existingAccounts || existingAccounts.length === 0)) return [3 /*break*/, 3];
90
+ return [3 /*break*/, 4];
91
+ case 3:
92
+ error_1 = _a.sent();
93
+ existingAccounts = [];
94
+ return [3 /*break*/, 4];
95
+ case 4:
96
+ if (!(!existingAccounts || existingAccounts.length === 0)) return [3 /*break*/, 6];
84
97
  return [4 /*yield*/, browserProvider.send('eth_requestAccounts', [])];
85
- case 2:
98
+ case 5:
86
99
  _a.sent();
87
- _a.label = 3;
88
- case 3: return [4 /*yield*/, browserProvider.getSigner()];
89
- case 4:
100
+ _a.label = 6;
101
+ case 6: return [4 /*yield*/, browserProvider.getSigner()];
102
+ case 7:
90
103
  signer = _a.sent();
91
104
  return [4 /*yield*/, signer.getAddress()];
92
- case 5:
105
+ case 8:
93
106
  address = _a.sent();
94
107
  return [4 /*yield*/, browserProvider
95
108
  .getNetwork()
96
109
  .then(function (network) { return Number(network.chainId); })];
97
- case 6:
110
+ case 9:
98
111
  chainId = _a.sent();
99
- if (!(targetChainId && chainId !== targetChainId)) return [3 /*break*/, 8];
112
+ if (!(targetChainId && chainId !== targetChainId)) return [3 /*break*/, 11];
100
113
  return [4 /*yield*/, switchEVMChain(targetChainId, provider)];
101
- case 7:
114
+ case 10:
102
115
  switchResult = _a.sent();
103
116
  if (switchResult instanceof Error) {
104
117
  throw switchResult;
105
118
  }
106
119
  chainId = switchResult.chainId;
107
- _a.label = 8;
108
- case 8: return [2 /*return*/, {
120
+ _a.label = 11;
121
+ case 11: return [2 /*return*/, {
109
122
  accounts: [address],
110
123
  chainId: chainId,
111
124
  isConnected: true
112
125
  }];
113
- case 9:
114
- error_1 = _a.sent();
115
- console.error('EVM wallet connection error:', error_1);
116
- return [2 /*return*/, error_1 instanceof Error
117
- ? error_1
126
+ case 12:
127
+ error_2 = _a.sent();
128
+ console.error('EVM wallet connection error:', error_2);
129
+ return [2 /*return*/, error_2 instanceof Error
130
+ ? error_2
118
131
  : new Error("Failed to connect to ".concat(walletName, " wallet"))];
119
- case 10: return [2 /*return*/];
132
+ case 13: return [2 /*return*/];
120
133
  }
121
134
  });
122
135
  }); };
package/utils/types.d.ts CHANGED
@@ -149,6 +149,10 @@ export interface TransactionBatchPayload {
149
149
  data?: string;
150
150
  }[];
151
151
  }
152
+ export interface WalletCapabilitiesPayload {
153
+ from: string;
154
+ chainId: string;
155
+ }
152
156
  export interface DisconnectPayload {
153
157
  networkType?: string;
154
158
  walletName?: string;
@@ -1 +1 @@
1
- export declare const sdkVersion = "3.2.1";
1
+ export declare const sdkVersion = "3.2.3";
package/utils/version.js CHANGED
@@ -1 +1 @@
1
- export var sdkVersion = '3.2.1';
1
+ export var sdkVersion = '3.2.3';
@@ -1,5 +1,5 @@
1
1
  import { BaseWalletStrategy } from './WalletStrategy';
2
- import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload, TransactionBatchPayload } from '../types';
2
+ import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload, TransactionBatchPayload, WalletCapabilitiesPayload } from '../types';
3
3
  export declare class EVMWalletStrategy extends BaseWalletStrategy {
4
4
  connect(payload: WalletBrowserPayload): Promise<{
5
5
  accounts: string[];
@@ -15,6 +15,11 @@ export declare class EVMWalletStrategy extends BaseWalletStrategy {
15
15
  sendNativeTransfer(payload: TransferPayload): Promise<string>;
16
16
  sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
17
17
  sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
18
+ getWalletCapabilities(payload: WalletCapabilitiesPayload): Promise<{
19
+ atomic: {
20
+ status: string;
21
+ };
22
+ }>;
18
23
  getProviders(): {
19
24
  icon: string | undefined;
20
25
  id: string;
@@ -50,7 +50,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
50
50
  }
51
51
  };
52
52
  import { BaseWalletStrategy } from './WalletStrategy';
53
- import { connectToEVMWallet, disconnectFromEVMWallet, signEVMMessage, sendEVMTransaction, sendEVMTokenTransaction, switchEVMChain, findAvailableProviders, sendEVMTransactionBatch } from '../connectors/evm';
53
+ import { connectToEVMWallet, disconnectFromEVMWallet, signEVMMessage, sendEVMTransaction, sendEVMTokenTransaction, switchEVMChain, findAvailableProviders, sendEVMTransactionBatch, getWalletCapabilities } from '../connectors/evm';
54
54
  var EVMWalletStrategy = /** @class */ (function (_super) {
55
55
  __extends(EVMWalletStrategy, _super);
56
56
  function EVMWalletStrategy() {
@@ -214,6 +214,19 @@ var EVMWalletStrategy = /** @class */ (function (_super) {
214
214
  });
215
215
  });
216
216
  };
217
+ EVMWalletStrategy.prototype.getWalletCapabilities = function (payload) {
218
+ return __awaiter(this, void 0, void 0, function () {
219
+ var result;
220
+ return __generator(this, function (_a) {
221
+ switch (_a.label) {
222
+ case 0: return [4 /*yield*/, getWalletCapabilities(payload.from, payload.chainId)];
223
+ case 1:
224
+ result = _a.sent();
225
+ return [2 /*return*/, result];
226
+ }
227
+ });
228
+ });
229
+ };
217
230
  EVMWalletStrategy.prototype.getProviders = function () {
218
231
  return findAvailableProviders().map(function (provider) { return ({
219
232
  icon: provider.icon,
@@ -19,6 +19,11 @@ export declare class SolanaWalletStrategy extends BaseWalletStrategy {
19
19
  sendNativeTransfer(payload: TransferPayload): Promise<string>;
20
20
  sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
21
21
  sendTransactionBatch(): Promise<string>;
22
+ getWalletCapabilities(): Promise<{
23
+ atomic: {
24
+ status: string;
25
+ };
26
+ }>;
22
27
  getProviders(): {
23
28
  id: string;
24
29
  type: string;
@@ -212,6 +212,9 @@ var SolanaWalletStrategy = /** @class */ (function (_super) {
212
212
  SolanaWalletStrategy.prototype.sendTransactionBatch = function () {
213
213
  throw new Error('Method not implemented.');
214
214
  };
215
+ SolanaWalletStrategy.prototype.getWalletCapabilities = function () {
216
+ throw new Error('Method not implemented.');
217
+ };
215
218
  SolanaWalletStrategy.prototype.getProviders = function () {
216
219
  var solanaProviderMap = findAvailableSolanaProviders();
217
220
  return Object.keys(solanaProviderMap).map(function (id) { return ({
@@ -1,4 +1,4 @@
1
- import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload, TransactionBatchPayload } from '../types';
1
+ import { WalletBrowserPayload, SignRequestPayload, ChainSwitchPayload, TransferPayload, SmartContractPayload, DisconnectPayload, TransactionBatchPayload, WalletCapabilitiesPayload } from '../types';
2
2
  export interface WalletStrategy {
3
3
  connect(payload: WalletBrowserPayload): Promise<{
4
4
  accounts: string[];
@@ -14,6 +14,11 @@ export interface WalletStrategy {
14
14
  sendNativeTransfer(payload: TransferPayload): Promise<string>;
15
15
  sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
16
16
  sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
17
+ getWalletCapabilities(payload: WalletCapabilitiesPayload): Promise<{
18
+ atomic: {
19
+ status: string;
20
+ };
21
+ }>;
17
22
  getProviders(): {
18
23
  id: string;
19
24
  type: string;
@@ -36,6 +41,11 @@ export declare abstract class BaseWalletStrategy implements WalletStrategy {
36
41
  abstract sendNativeTransfer(payload: TransferPayload): Promise<string>;
37
42
  abstract sendSmartContractInteraction(payload: SmartContractPayload): Promise<string>;
38
43
  abstract sendTransactionBatch(payload: TransactionBatchPayload): Promise<string>;
44
+ abstract getWalletCapabilities(payload: WalletCapabilitiesPayload): Promise<{
45
+ atomic: {
46
+ status: string;
47
+ };
48
+ }>;
39
49
  abstract getProviders(): {
40
50
  id: string;
41
51
  type: string;
@@ -1,5 +1,5 @@
1
- export type WalletBrowserEventType = WalletBrowserInjectedWalletSelected | WalletBrowserSignRequest | WalletBrowserChainSwitchRequest | WalletBrowserTransferBalanceRequest | WalletBrowserNativeTransferRequest | WalletBrowserNonNativeTransferRequest | WalletBrowserNativeSmartDeposit | WalletBrowserNonNativeSmartDeposit | WalletBrowserDisconnect | WalletBrowserTransactionBatch;
2
- declare const WALLET_BROWSER_EVENT_TYPE_KEYS: readonly ["walletBrowserInjectedWalletSelected", "walletBrowserSignRequest", "walletBrowserChainSwitchRequest", "walletBrowserTransferBalanceRequest", "walletBrowserNativeTransferRequest", "walletBrowserNonNativeTransferRequest", "walletBrowserNativeSmartDeposit", "walletBrowserNonNativeSmartDeposit", "walletBrowserDisconnect", "walletBrowserTransactionBatchRequest"];
1
+ export type WalletBrowserEventType = WalletBrowserInjectedWalletSelected | WalletBrowserSignRequest | WalletBrowserChainSwitchRequest | WalletBrowserTransferBalanceRequest | WalletBrowserNativeTransferRequest | WalletBrowserNonNativeTransferRequest | WalletBrowserNativeSmartDeposit | WalletBrowserNonNativeSmartDeposit | WalletBrowserDisconnect | WalletBrowserTransactionBatch | WalletBrowserWalletCapabilities;
2
+ declare const WALLET_BROWSER_EVENT_TYPE_KEYS: readonly ["walletBrowserInjectedWalletSelected", "walletBrowserSignRequest", "walletBrowserChainSwitchRequest", "walletBrowserTransferBalanceRequest", "walletBrowserNativeTransferRequest", "walletBrowserNonNativeTransferRequest", "walletBrowserNativeSmartDeposit", "walletBrowserNonNativeSmartDeposit", "walletBrowserDisconnect", "walletBrowserTransactionBatchRequest", "walletBrowserWalletCapabilities"];
3
3
  export type NetworkType = 'unknown' | 'evm' | 'solana' | 'bitcoin' | 'cardano' | 'tron' | 'avalancheX' | 'tezos' | 'dogecoin' | 'ripple' | 'stellar' | 'litecoin' | 'sui' | 'aptos' | 'tvm';
4
4
  export type WalletBrowserEventTypeKeys = (typeof WALLET_BROWSER_EVENT_TYPE_KEYS)[number];
5
5
  export declare function isWalletBrowserEventTypeKey(key: string): key is WalletBrowserEventTypeKeys;
@@ -91,4 +91,11 @@ export interface WalletBrowserTransactionBatch extends WalletBrowserEventBase {
91
91
  }[];
92
92
  };
93
93
  }
94
+ export interface WalletBrowserWalletCapabilities extends WalletBrowserEventBase {
95
+ type: 'walletBrowserWalletCapabilities';
96
+ payload: {
97
+ from: string;
98
+ chainId: string;
99
+ };
100
+ }
94
101
  export {};
@@ -8,7 +8,8 @@ var WALLET_BROWSER_EVENT_TYPE_KEYS = [
8
8
  'walletBrowserNativeSmartDeposit',
9
9
  'walletBrowserNonNativeSmartDeposit',
10
10
  'walletBrowserDisconnect',
11
- 'walletBrowserTransactionBatchRequest'
11
+ 'walletBrowserTransactionBatchRequest',
12
+ 'walletBrowserWalletCapabilities'
12
13
  ];
13
14
  export function isWalletBrowserEventTypeKey(key) {
14
15
  return WALLET_BROWSER_EVENT_TYPE_KEYS.includes(key);