@meshconnect/web-link-sdk 3.0.11 → 3.1.0-rc.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 (52) hide show
  1. package/Link.js +173 -205
  2. package/package.json +6 -6
  3. package/utils/connectors/evm/chainConfigs.d.ts +2 -0
  4. package/utils/connectors/evm/chainConfigs.js +115 -0
  5. package/utils/connectors/evm/chainSwitching.d.ts +15 -0
  6. package/utils/connectors/evm/chainSwitching.js +242 -0
  7. package/utils/connectors/evm/index.d.ts +8 -0
  8. package/utils/connectors/evm/index.js +8 -0
  9. package/utils/connectors/evm/provider.d.ts +6 -0
  10. package/utils/connectors/evm/provider.js +13 -0
  11. package/utils/connectors/evm/signing.d.ts +1 -0
  12. package/utils/connectors/evm/signing.js +78 -0
  13. package/utils/connectors/evm/transactions.d.ts +9 -0
  14. package/utils/connectors/evm/transactions.js +201 -0
  15. package/utils/connectors/evm/types.d.ts +58 -0
  16. package/utils/connectors/evm/types.js +1 -0
  17. package/utils/connectors/evm/walletConnection.d.ts +20 -0
  18. package/utils/connectors/evm/walletConnection.js +161 -0
  19. package/utils/connectors/evm/walletDiscovery.d.ts +10 -0
  20. package/utils/connectors/evm/walletDiscovery.js +55 -0
  21. package/utils/connectors/solana/connection.d.ts +3 -0
  22. package/utils/connectors/solana/connection.js +94 -0
  23. package/utils/connectors/solana/index.d.ts +5 -0
  24. package/utils/connectors/solana/index.js +5 -0
  25. package/utils/connectors/solana/providerDiscovery.d.ts +3 -0
  26. package/utils/connectors/solana/providerDiscovery.js +75 -0
  27. package/utils/connectors/solana/signing.d.ts +1 -0
  28. package/utils/connectors/solana/signing.js +59 -0
  29. package/utils/connectors/solana/transaction.d.ts +2 -0
  30. package/utils/connectors/solana/transaction.js +158 -0
  31. package/utils/connectors/solana/types.d.ts +68 -0
  32. package/utils/connectors/solana/types.js +8 -0
  33. package/utils/event-types.d.ts +10 -2
  34. package/utils/event-types.js +2 -1
  35. package/utils/sdk-specs.d.ts +1 -0
  36. package/utils/sdk-specs.js +2 -1
  37. package/utils/types.d.ts +38 -29
  38. package/utils/version.d.ts +1 -1
  39. package/utils/version.js +1 -1
  40. package/utils/wallet/EVMWalletStrategy.d.ts +23 -0
  41. package/utils/wallet/EVMWalletStrategy.js +205 -0
  42. package/utils/wallet/SolanaWalletStrategy.d.ts +29 -0
  43. package/utils/wallet/SolanaWalletStrategy.js +194 -0
  44. package/utils/wallet/WalletStrategy.d.ts +45 -0
  45. package/utils/wallet/WalletStrategy.js +25 -0
  46. package/utils/wallet/WalletStrategyFactory.d.ts +15 -0
  47. package/utils/wallet/WalletStrategyFactory.js +31 -0
  48. package/utils/wallet/index.d.ts +4 -0
  49. package/utils/wallet/index.js +4 -0
  50. package/utils/wallet-browser-event-types.d.ts +16 -2
  51. package/utils/wagmiCoreConnectorsUtils.d.ts +0 -11
  52. package/utils/wagmiCoreConnectorsUtils.js +0 -396
package/Link.js CHANGED
@@ -49,11 +49,11 @@ import { addPopup, iframeId, removePopup } from './utils/popup';
49
49
  import { isLinkEventTypeKey } from './utils/event-types';
50
50
  import { isWalletBrowserEventTypeKey } from './utils/wallet-browser-event-types';
51
51
  import { sdkSpecs } from './utils/sdk-specs';
52
- import { connectToSpecificWallet, signedMessage, sendTransactionFromSDK, switchChainFromSDK, getWagmiCoreInjectedData, sendNonNativeTransactionFromSDK, disconnectAllAccounts } from './utils/wagmiCoreConnectorsUtils';
52
+ import { WalletStrategyFactory } from './utils/wallet';
53
53
  var currentOptions;
54
54
  var possibleOrigins = new Set([
55
55
  'https://web.meshconnect.com',
56
- 'https://web.getfront.com'
56
+ 'https://dev-web.meshconnect.com'
57
57
  ]);
58
58
  var iframeElement = function () {
59
59
  return document.getElementById(iframeId);
@@ -77,85 +77,71 @@ function sendMessageToIframe(message) {
77
77
  }
78
78
  function handleLinkEvent(event) {
79
79
  return __awaiter(this, void 0, void 0, function () {
80
- var _a, payload, payload, payload, payload, w, h, left, top_1, injectedConnectors;
81
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
82
- return __generator(this, function (_o) {
83
- switch (_o.label) {
84
- case 0:
85
- _a = event.data.type;
86
- switch (_a) {
87
- case 'brokerageAccountAccessToken': return [3 /*break*/, 1];
88
- case 'delayedAuthentication': return [3 /*break*/, 2];
89
- case 'transferFinished': return [3 /*break*/, 3];
90
- case 'close': return [3 /*break*/, 4];
91
- case 'done': return [3 /*break*/, 4];
92
- case 'oauthLinkOpen': return [3 /*break*/, 5];
93
- case 'loaded': return [3 /*break*/, 6];
94
- }
95
- return [3 /*break*/, 8];
96
- case 1:
97
- {
98
- payload = {
99
- accessToken: event.data.payload
100
- };
101
- (_b = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _b === void 0 ? void 0 : _b.call(currentOptions, {
102
- type: 'integrationConnected',
103
- payload: payload
104
- });
105
- (_c = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onIntegrationConnected) === null || _c === void 0 ? void 0 : _c.call(currentOptions, payload);
106
- return [3 /*break*/, 9];
107
- }
108
- _o.label = 2;
109
- case 2:
110
- {
111
- payload = {
112
- delayedAuth: event.data.payload
113
- };
114
- (_d = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _d === void 0 ? void 0 : _d.call(currentOptions, {
115
- type: 'integrationConnected',
116
- payload: payload
117
- });
118
- (_e = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onIntegrationConnected) === null || _e === void 0 ? void 0 : _e.call(currentOptions, payload);
119
- return [3 /*break*/, 9];
120
- }
121
- _o.label = 3;
122
- case 3:
123
- {
124
- payload = event.data.payload;
125
- (_f = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _f === void 0 ? void 0 : _f.call(currentOptions, {
126
- type: 'transferCompleted',
127
- payload: payload
128
- });
129
- (_g = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onTransferFinished) === null || _g === void 0 ? void 0 : _g.call(currentOptions, payload);
130
- return [3 /*break*/, 9];
131
- }
132
- _o.label = 4;
133
- case 4:
134
- {
135
- payload = (_h = event.data) === null || _h === void 0 ? void 0 : _h.payload;
136
- (_j = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onExit) === null || _j === void 0 ? void 0 : _j.call(currentOptions, payload === null || payload === void 0 ? void 0 : payload.errorMessage, payload);
137
- removePopup();
138
- return [3 /*break*/, 9];
139
- }
140
- _o.label = 5;
141
- case 5:
142
- {
143
- if (event.data.link) {
144
- w = 700;
145
- h = 800;
146
- left = screen.width / 2 - w / 2;
147
- top_1 = screen.height / 2 - h / 2;
148
- (_k = window
149
- .open(event.data.link, '_blank', "popup,noopener,noreferrer,resizable,scrollbars,width=".concat(w, ",height=").concat(h, ",top=").concat(top_1, ",left=").concat(left))) === null || _k === void 0 ? void 0 : _k.focus();
150
- }
151
- return [3 /*break*/, 9];
80
+ var payload, payload, payload, payload, w, h, left, top_1, walletFactory, allProviders;
81
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
82
+ return __generator(this, function (_m) {
83
+ switch (event.data.type) {
84
+ case 'brokerageAccountAccessToken': {
85
+ payload = {
86
+ accessToken: event.data.payload
87
+ };
88
+ (_a = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _a === void 0 ? void 0 : _a.call(currentOptions, {
89
+ type: 'integrationConnected',
90
+ payload: payload
91
+ });
92
+ (_b = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onIntegrationConnected) === null || _b === void 0 ? void 0 : _b.call(currentOptions, payload);
93
+ break;
94
+ }
95
+ case 'delayedAuthentication': {
96
+ payload = {
97
+ delayedAuth: event.data.payload
98
+ };
99
+ (_c = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _c === void 0 ? void 0 : _c.call(currentOptions, {
100
+ type: 'integrationConnected',
101
+ payload: payload
102
+ });
103
+ (_d = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onIntegrationConnected) === null || _d === void 0 ? void 0 : _d.call(currentOptions, payload);
104
+ break;
105
+ }
106
+ case 'transferFinished': {
107
+ payload = event.data.payload;
108
+ (_e = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _e === void 0 ? void 0 : _e.call(currentOptions, {
109
+ type: 'transferCompleted',
110
+ payload: payload
111
+ });
112
+ (_f = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onTransferFinished) === null || _f === void 0 ? void 0 : _f.call(currentOptions, payload);
113
+ break;
114
+ }
115
+ case 'close':
116
+ case 'done': {
117
+ payload = (_g = event.data) === null || _g === void 0 ? void 0 : _g.payload;
118
+ (_h = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onExit) === null || _h === void 0 ? void 0 : _h.call(currentOptions, payload === null || payload === void 0 ? void 0 : payload.errorMessage, payload);
119
+ removePopup();
120
+ break;
121
+ }
122
+ case 'oauthLinkOpen': {
123
+ if (event.data.link) {
124
+ w = 700;
125
+ h = 800;
126
+ left = screen.width / 2 - w / 2;
127
+ top_1 = screen.height / 2 - h / 2;
128
+ (_j = window
129
+ .open(event.data.link, '_blank', "popup,noopener,noreferrer,resizable,scrollbars,width=".concat(w, ",height=").concat(h, ",top=").concat(top_1, ",left=").concat(left))) === null || _j === void 0 ? void 0 : _j.focus();
152
130
  }
153
- _o.label = 6;
154
- case 6:
131
+ break;
132
+ }
133
+ case 'loaded': {
155
134
  sendMessageToIframe({
156
135
  type: 'meshSDKSpecs',
157
136
  payload: __assign({}, sdkSpecs)
158
137
  });
138
+ walletFactory = WalletStrategyFactory.getInstance();
139
+ allProviders = walletFactory.getAllProviders();
140
+ console.log('allProviders', allProviders);
141
+ sendMessageToIframe({
142
+ type: 'SDKinjectedWalletProviders',
143
+ payload: allProviders
144
+ });
159
145
  if (currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.accessTokens) {
160
146
  sendMessageToIframe({
161
147
  type: 'frontAccessTokens',
@@ -168,36 +154,28 @@ function handleLinkEvent(event) {
168
154
  payload: currentOptions.transferDestinationTokens
169
155
  });
170
156
  }
171
- return [4 /*yield*/, getWagmiCoreInjectedData()];
172
- case 7:
173
- injectedConnectors = _o.sent();
174
- if (injectedConnectors) {
175
- sendMessageToIframe({
176
- type: 'SDKinjectedWagmiConnectorsData',
177
- payload: injectedConnectors
178
- });
157
+ (_k = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _k === void 0 ? void 0 : _k.call(currentOptions, { type: 'pageLoaded' });
158
+ break;
159
+ }
160
+ default: {
161
+ if (isLinkEventTypeKey(event.data.type)) {
162
+ (_l = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _l === void 0 ? void 0 : _l.call(currentOptions, event.data);
179
163
  }
180
- (_l = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _l === void 0 ? void 0 : _l.call(currentOptions, { type: 'pageLoaded' });
181
- return [3 /*break*/, 9];
182
- case 8:
183
- {
184
- if (isLinkEventTypeKey(event.data.type)) {
185
- (_m = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _m === void 0 ? void 0 : _m.call(currentOptions, event.data);
186
- }
187
- return [3 /*break*/, 9];
188
- }
189
- _o.label = 9;
190
- case 9: return [2 /*return*/];
164
+ break;
165
+ }
191
166
  }
167
+ return [2 /*return*/];
192
168
  });
193
169
  });
194
170
  }
195
171
  function handleWalletBrowserEvent(event) {
196
172
  return __awaiter(this, void 0, void 0, function () {
197
- var _a, payload, result, error_1, payload, result, error_2, payload, result, error_3, payload, result, error_4, payload, result, error_5, payload, result, error_6, payload, result, error_7;
198
- return __generator(this, function (_b) {
199
- switch (_b.label) {
173
+ 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, strategy, result, responseType, error_5, errorType, payload, networkType, strategy, error_6;
174
+ var _b;
175
+ return __generator(this, function (_c) {
176
+ switch (_c.label) {
200
177
  case 0:
178
+ walletFactory = WalletStrategyFactory.getInstance();
201
179
  _a = event.data.type;
202
180
  switch (_a) {
203
181
  case 'walletBrowserInjectedWalletSelected': return [3 /*break*/, 1];
@@ -205,177 +183,166 @@ function handleWalletBrowserEvent(event) {
205
183
  case 'walletBrowserChainSwitchRequest': return [3 /*break*/, 11];
206
184
  case 'walletBrowserNativeTransferRequest': return [3 /*break*/, 16];
207
185
  case 'walletBrowserNonNativeTransferRequest': return [3 /*break*/, 21];
208
- case 'walletBrowserNativeSmartDeposit': return [3 /*break*/, 26];
209
- case 'walletBrowserNonNativeSmartDeposit': return [3 /*break*/, 31];
210
- case 'walletBrowserDisconnect': return [3 /*break*/, 36];
186
+ case 'walletBrowserNativeSmartDeposit': return [3 /*break*/, 21];
187
+ case 'walletBrowserNonNativeSmartDeposit': return [3 /*break*/, 21];
188
+ case 'walletBrowserDisconnect': return [3 /*break*/, 26];
211
189
  }
212
- return [3 /*break*/, 37];
190
+ return [3 /*break*/, 34];
213
191
  case 1:
214
192
  payload = event.data.payload;
215
- _b.label = 2;
193
+ _c.label = 2;
216
194
  case 2:
217
- _b.trys.push([2, 4, , 5]);
218
- return [4 /*yield*/, connectToSpecificWallet(payload.integrationName)];
195
+ _c.trys.push([2, 4, , 5]);
196
+ networkType = (((_b = payload.networkType) === null || _b === void 0 ? void 0 : _b.includes('solana')) ? 'solana' : 'evm');
197
+ strategy = walletFactory.getStrategy(networkType);
198
+ return [4 /*yield*/, strategy.connect(payload)];
219
199
  case 3:
220
- result = _b.sent();
221
- if (result instanceof Error) {
222
- throw result;
223
- }
200
+ result = _c.sent();
224
201
  sendMessageToIframe({
225
202
  type: 'SDKinjectedConnectionCompleted',
226
203
  payload: {
227
204
  accounts: result.accounts,
228
- chainId: result.chainId
205
+ chainId: result.chainId,
206
+ networkType: networkType
229
207
  }
230
208
  });
231
209
  return [3 /*break*/, 5];
232
210
  case 4:
233
- error_1 = _b.sent();
211
+ error_1 = _c.sent();
212
+ console.error('Connection error:', error_1);
234
213
  handleErrorAndSendMessage(error_1, 'SDKinjectedConnectionCompleted');
235
214
  return [3 /*break*/, 5];
236
- case 5: return [3 /*break*/, 37];
215
+ case 5: return [3 /*break*/, 34];
237
216
  case 6:
238
217
  payload = event.data.payload;
239
- _b.label = 7;
218
+ _c.label = 7;
240
219
  case 7:
241
- _b.trys.push([7, 9, , 10]);
242
- return [4 /*yield*/, signedMessage(payload.address, payload.message)];
220
+ _c.trys.push([7, 9, , 10]);
221
+ networkType = (!payload.address.startsWith('0x') ? 'solana' : 'evm');
222
+ strategy = walletFactory.getStrategy(networkType);
223
+ return [4 /*yield*/, strategy.signMessage(payload)];
243
224
  case 8:
244
- result = _b.sent();
245
- if (result instanceof Error) {
246
- throw result;
247
- }
225
+ result = _c.sent();
248
226
  sendMessageToIframe({
249
227
  type: 'SDKsignRequestCompleted',
250
228
  payload: result
251
229
  });
252
230
  return [3 /*break*/, 10];
253
231
  case 9:
254
- error_2 = _b.sent();
232
+ error_2 = _c.sent();
255
233
  handleErrorAndSendMessage(error_2, 'SDKsignRequestCompleted');
256
234
  return [3 /*break*/, 10];
257
- case 10: return [3 /*break*/, 37];
235
+ case 10: return [3 /*break*/, 34];
258
236
  case 11:
259
237
  payload = event.data.payload;
260
- _b.label = 12;
238
+ _c.label = 12;
261
239
  case 12:
262
- _b.trys.push([12, 14, , 15]);
263
- return [4 /*yield*/, switchChainFromSDK(payload.chainId)];
240
+ _c.trys.push([12, 14, , 15]);
241
+ networkType = (payload.networkType === 'solana' ? 'solana' : 'evm');
242
+ strategy = walletFactory.getStrategy(networkType);
243
+ return [4 /*yield*/, strategy.switchChain(payload)];
264
244
  case 13:
265
- result = _b.sent();
266
- if (result instanceof Error) {
267
- throw result;
268
- }
245
+ result = _c.sent();
269
246
  sendMessageToIframe({
270
247
  type: 'SDKswitchChainCompleted',
271
- payload: result
248
+ payload: {
249
+ chainId: result.chainId,
250
+ accounts: result.accounts,
251
+ networkType: networkType
252
+ }
272
253
  });
273
254
  return [3 /*break*/, 15];
274
255
  case 14:
275
- error_3 = _b.sent();
256
+ error_3 = _c.sent();
257
+ console.error('Chain switch failed:', error_3);
276
258
  handleErrorAndSendMessage(error_3, 'SDKswitchChainCompleted');
277
259
  return [3 /*break*/, 15];
278
- case 15: return [3 /*break*/, 37];
260
+ case 15: return [3 /*break*/, 34];
279
261
  case 16:
280
262
  payload = event.data.payload;
281
- _b.label = 17;
263
+ _c.label = 17;
282
264
  case 17:
283
- _b.trys.push([17, 19, , 20]);
284
- return [4 /*yield*/, sendTransactionFromSDK(payload.toAddress, payload.amount, payload.decimalPlaces, payload.chainId, payload.account)];
265
+ _c.trys.push([17, 19, , 20]);
266
+ networkType = (payload.network === 'solana' ? 'solana' : 'evm');
267
+ strategy = walletFactory.getStrategy(networkType);
268
+ return [4 /*yield*/, strategy.sendNativeTransfer(payload)];
285
269
  case 18:
286
- result = _b.sent();
287
- if (result instanceof Error) {
288
- throw result;
289
- }
270
+ result = _c.sent();
290
271
  sendMessageToIframe({
291
272
  type: 'SDKnativeTransferCompleted',
292
273
  payload: result
293
274
  });
294
275
  return [3 /*break*/, 20];
295
276
  case 19:
296
- error_4 = _b.sent();
277
+ error_4 = _c.sent();
297
278
  handleErrorAndSendMessage(error_4, 'SDKnativeTransferCompleted');
298
279
  return [3 /*break*/, 20];
299
- case 20: return [3 /*break*/, 37];
280
+ case 20: return [3 /*break*/, 34];
300
281
  case 21:
301
282
  payload = event.data.payload;
302
- _b.label = 22;
283
+ _c.label = 22;
303
284
  case 22:
304
- _b.trys.push([22, 24, , 25]);
305
- return [4 /*yield*/, sendNonNativeTransactionFromSDK(payload.address, JSON.parse(payload.abi), payload.functionName, payload.args)];
285
+ _c.trys.push([22, 24, , 25]);
286
+ strategy = walletFactory.getStrategy('evm');
287
+ return [4 /*yield*/, strategy.sendSmartContractInteraction(payload)];
306
288
  case 23:
307
- result = _b.sent();
308
- if (result instanceof Error) {
309
- throw result;
310
- }
289
+ result = _c.sent();
290
+ responseType = event.data.type === 'walletBrowserNonNativeTransferRequest'
291
+ ? 'SDKnonNativeTransferCompleted'
292
+ : event.data.type === 'walletBrowserNativeSmartDeposit'
293
+ ? 'SDKnativeSmartDepositCompleted'
294
+ : 'SDKnonNativeSmartDepositCompleted';
311
295
  sendMessageToIframe({
312
- type: 'SDKnonNativeTransferCompleted',
313
- payload: result
296
+ type: responseType,
297
+ payload: {
298
+ txHash: result
299
+ }
314
300
  });
315
301
  return [3 /*break*/, 25];
316
302
  case 24:
317
- error_5 = _b.sent();
318
- handleErrorAndSendMessage(error_5, 'SDKnonNativeTransferCompleted');
303
+ error_5 = _c.sent();
304
+ errorType = event.data.type === 'walletBrowserNonNativeTransferRequest'
305
+ ? 'SDKnonNativeTransferCompleted'
306
+ : event.data.type === 'walletBrowserNativeSmartDeposit'
307
+ ? 'SDKnativeSmartDepositCompleted'
308
+ : 'SDKnonNativeSmartDepositCompleted';
309
+ handleErrorAndSendMessage(error_5, errorType);
319
310
  return [3 /*break*/, 25];
320
- case 25: return [3 /*break*/, 37];
311
+ case 25: return [3 /*break*/, 34];
321
312
  case 26:
322
313
  payload = event.data.payload;
323
- _b.label = 27;
314
+ _c.label = 27;
324
315
  case 27:
325
- _b.trys.push([27, 29, , 30]);
326
- return [4 /*yield*/, sendNonNativeTransactionFromSDK(payload.address, JSON.parse(payload.abi), payload.functionName, payload.args, payload.value)];
316
+ _c.trys.push([27, 32, , 33]);
317
+ if (!(payload === null || payload === void 0 ? void 0 : payload.networkType)) return [3 /*break*/, 29];
318
+ networkType = (payload.networkType === 'solana' ? 'solana' : 'evm');
319
+ strategy = walletFactory.getStrategy(networkType);
320
+ return [4 /*yield*/, strategy.disconnect(payload)];
327
321
  case 28:
328
- result = _b.sent();
329
- if (result instanceof Error) {
330
- throw result;
331
- }
322
+ _c.sent();
323
+ return [3 /*break*/, 31];
324
+ case 29:
325
+ // Disconnect from all if no specific network type
326
+ return [4 /*yield*/, Promise.all([
327
+ walletFactory.getStrategy('solana').disconnect(payload),
328
+ walletFactory.getStrategy('evm').disconnect(payload)
329
+ ])];
330
+ case 30:
331
+ // Disconnect from all if no specific network type
332
+ _c.sent();
333
+ _c.label = 31;
334
+ case 31:
332
335
  sendMessageToIframe({
333
- type: 'SDKnativeSmartDepositCompleted',
334
- payload: {
335
- txHash: result
336
- }
336
+ type: 'SDKdisconnectSuccess'
337
337
  });
338
- return [3 /*break*/, 30];
339
- case 29:
340
- error_6 = _b.sent();
341
- handleErrorAndSendMessage(error_6, 'SDKnativeSmartDepositCompleted');
342
- return [3 /*break*/, 30];
343
- case 30: return [3 /*break*/, 37];
344
- case 31:
345
- payload = event.data.payload;
346
- _b.label = 32;
338
+ return [3 /*break*/, 33];
347
339
  case 32:
348
- _b.trys.push([32, 34, , 35]);
349
- return [4 /*yield*/, sendNonNativeTransactionFromSDK(payload.address, JSON.parse(payload.abi), payload.functionName, payload.args)];
350
- case 33:
351
- result = _b.sent();
352
- if (result) {
353
- sendMessageToIframe({
354
- type: 'SDKnonNativeSmartDepositCompleted',
355
- payload: {
356
- txHash: result
357
- }
358
- });
359
- }
360
- else {
361
- throw new Error('Transfer failed');
362
- }
363
- return [3 /*break*/, 35];
364
- case 34:
365
- error_7 = _b.sent();
366
- handleErrorAndSendMessage(error_7, 'SDKnonNativeSmartDepositCompleted');
367
- return [3 /*break*/, 35];
368
- case 35: return [3 /*break*/, 37];
369
- case 36:
370
- {
371
- disconnectAllAccounts();
372
- sendMessageToIframe({
373
- type: 'SDKdisconnectSuccess'
374
- });
375
- return [3 /*break*/, 37];
376
- }
377
- _b.label = 37;
378
- case 37: return [2 /*return*/];
340
+ error_6 = _c.sent();
341
+ console.error('Error during disconnect:', error_6);
342
+ handleErrorAndSendMessage(error_6, 'SDKdisconnectSuccess');
343
+ return [3 /*break*/, 33];
344
+ case 33: return [3 /*break*/, 34];
345
+ case 34: return [2 /*return*/];
379
346
  }
380
347
  });
381
348
  });
@@ -390,7 +357,9 @@ function eventsListener(event) {
390
357
  case 1:
391
358
  _a.sent();
392
359
  return [3 /*break*/, 4];
393
- case 2: return [4 /*yield*/, handleLinkEvent(event)];
360
+ case 2:
361
+ if (!possibleOrigins.has(event.origin)) return [3 /*break*/, 4];
362
+ return [4 /*yield*/, handleLinkEvent(event)];
394
363
  case 3:
395
364
  _a.sent();
396
365
  _a.label = 4;
@@ -433,7 +402,6 @@ export var createLink = function (options) {
433
402
  removePopup();
434
403
  window.removeEventListener('message', eventsListener);
435
404
  (_a = options.onExit) === null || _a === void 0 ? void 0 : _a.call(options);
436
- disconnectAllAccounts();
437
405
  };
438
406
  return {
439
407
  openLink: openLink,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshconnect/web-link-sdk",
3
- "version": "3.0.11",
3
+ "version": "3.1.0-rc.0",
4
4
  "description": "A client-side JS library for integrating with Mesh Connect",
5
5
  "exports": "./index.js",
6
6
  "license": "MIT",
@@ -22,10 +22,10 @@
22
22
  "util": "^0.12.4"
23
23
  },
24
24
  "dependencies": {
25
- "@meshconnect/node-api": "^2.0.14",
26
- "@wagmi/core": "^2.12.2",
27
- "viem": "^2.x",
28
- "@wagmi/connectors": "^5.3.0"
25
+ "@meshconnect/node-api": "^2.0.15",
26
+ "@solana/web3.js": "^1.91.1",
27
+ "bs58": "^5.0.0",
28
+ "ethers": "^6.11.1"
29
29
  },
30
30
  "jest": {
31
31
  "preset": "ts-jest",
@@ -50,7 +50,7 @@
50
50
  ]
51
51
  },
52
52
  "transformIgnorePatterns": [
53
- "/node_modules/(?!(@wagmi/core|@wagmi/connectors)).+\\.js$"
53
+ "/node_modules/(?!(@solana/web3.js|uuid|jayson|superstruct|@noble|@meshconnect|ethers)/)"
54
54
  ],
55
55
  "testEnvironmentOptions": {
56
56
  "url": "http://localhost/"
@@ -0,0 +1,2 @@
1
+ import { ChainConfig } from './types';
2
+ export declare const getChainConfiguration: (chainId: number) => ChainConfig | undefined;
@@ -0,0 +1,115 @@
1
+ // Chain configurations
2
+ var chainConfigs = {
3
+ 43114: {
4
+ // Avalanche
5
+ name: 'Avalanche',
6
+ nativeCurrency: {
7
+ decimals: 18,
8
+ name: 'Avalanche',
9
+ symbol: 'AVAX'
10
+ },
11
+ rpcUrls: {
12
+ default: { http: ['https://avalanche-mainnet.infura.io'] }
13
+ },
14
+ blockExplorers: {
15
+ default: {
16
+ name: 'SnowTrace',
17
+ url: 'https://snowtrace.io'
18
+ }
19
+ }
20
+ },
21
+ 42161: {
22
+ // Arbitrum
23
+ name: 'Arbitrum One',
24
+ nativeCurrency: {
25
+ decimals: 18,
26
+ name: 'Ether',
27
+ symbol: 'ETH'
28
+ },
29
+ rpcUrls: {
30
+ default: { http: ['https://arb1.arbitrum.io/rpc'] }
31
+ },
32
+ blockExplorers: {
33
+ default: {
34
+ name: 'Arbiscan',
35
+ url: 'https://arbiscan.io'
36
+ }
37
+ }
38
+ },
39
+ 10: {
40
+ // Optimism
41
+ name: 'OP Mainnet',
42
+ nativeCurrency: {
43
+ decimals: 18,
44
+ name: 'Ether',
45
+ symbol: 'ETH'
46
+ },
47
+ rpcUrls: {
48
+ default: { http: ['https://mainnet.optimism.io'] }
49
+ },
50
+ blockExplorers: {
51
+ default: {
52
+ name: 'Optimism Explorer',
53
+ url: 'https://optimistic.etherscan.io'
54
+ }
55
+ }
56
+ },
57
+ 8453: {
58
+ // Base
59
+ name: 'Base',
60
+ nativeCurrency: {
61
+ decimals: 18,
62
+ name: 'Ether',
63
+ symbol: 'ETH'
64
+ },
65
+ rpcUrls: {
66
+ default: { http: ['https://mainnet.base.org'] }
67
+ },
68
+ blockExplorers: {
69
+ default: {
70
+ name: 'Basescan',
71
+ url: 'https://basescan.org'
72
+ }
73
+ }
74
+ },
75
+ 137: {
76
+ // Polygon
77
+ name: 'Polygon',
78
+ nativeCurrency: {
79
+ decimals: 18,
80
+ name: 'MATIC',
81
+ symbol: 'MATIC'
82
+ },
83
+ rpcUrls: {
84
+ default: { http: ['https://polygon-rpc.com'] }
85
+ },
86
+ blockExplorers: {
87
+ default: {
88
+ name: 'PolygonScan',
89
+ url: 'https://polygonscan.com'
90
+ }
91
+ }
92
+ },
93
+ 56: {
94
+ // BSC
95
+ name: 'BNB Smart Chain',
96
+ nativeCurrency: {
97
+ decimals: 18,
98
+ name: 'BNB',
99
+ symbol: 'BNB'
100
+ },
101
+ rpcUrls: {
102
+ default: { http: ['https://rpc.ankr.com/bsc'] }
103
+ },
104
+ blockExplorers: {
105
+ default: {
106
+ name: 'BscScan',
107
+ url: 'https://bscscan.com'
108
+ }
109
+ }
110
+ }
111
+ };
112
+ // Helper function to get chain configuration
113
+ export var getChainConfiguration = function (chainId) {
114
+ return chainConfigs[chainId];
115
+ };