@meshconnect/web-link-sdk 3.2.15 → 3.2.16

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 (101) hide show
  1. package/Link.d.ts +2 -0
  2. package/Link.js +530 -0
  3. package/index.d.ts +3 -0
  4. package/index.js +3 -0
  5. package/package.json +8 -20
  6. package/utils/connectors/evm/chainConfigs.d.ts +2 -0
  7. package/utils/connectors/evm/chainConfigs.js +115 -0
  8. package/utils/connectors/evm/chainSwitching.d.ts +15 -0
  9. package/utils/connectors/evm/chainSwitching.js +242 -0
  10. package/utils/connectors/evm/index.d.ts +8 -0
  11. package/utils/connectors/evm/index.js +8 -0
  12. package/utils/connectors/evm/provider.d.ts +6 -0
  13. package/utils/connectors/evm/provider.js +13 -0
  14. package/utils/connectors/evm/signing.d.ts +1 -0
  15. package/utils/connectors/evm/signing.js +78 -0
  16. package/utils/connectors/evm/transactions.d.ts +28 -0
  17. package/utils/connectors/evm/transactions.js +381 -0
  18. package/utils/connectors/evm/types.d.ts +57 -0
  19. package/utils/connectors/evm/types.js +1 -0
  20. package/utils/connectors/evm/walletConnection.d.ts +20 -0
  21. package/utils/connectors/evm/walletConnection.js +160 -0
  22. package/utils/connectors/evm/walletDiscovery.d.ts +10 -0
  23. package/utils/connectors/evm/walletDiscovery.js +55 -0
  24. package/utils/connectors/solana/connection.d.ts +4 -0
  25. package/utils/connectors/solana/connection.js +108 -0
  26. package/utils/connectors/solana/index.d.ts +5 -0
  27. package/utils/connectors/solana/index.js +5 -0
  28. package/utils/connectors/solana/providerDiscovery.d.ts +3 -0
  29. package/utils/connectors/solana/providerDiscovery.js +127 -0
  30. package/utils/connectors/solana/signing.d.ts +1 -0
  31. package/utils/connectors/solana/signing.js +59 -0
  32. package/utils/connectors/solana/transaction.d.ts +17 -0
  33. package/utils/connectors/solana/transaction.js +362 -0
  34. package/utils/connectors/solana/types.d.ts +71 -0
  35. package/utils/connectors/solana/types.js +8 -0
  36. package/utils/event-types.d.ts +233 -0
  37. package/{src/utils/event-types.test.ts → utils/event-types.js} +5 -15
  38. package/utils/popup.d.ts +3 -0
  39. package/utils/popup.js +36 -0
  40. package/utils/sdk-specs.d.ts +5 -0
  41. package/utils/sdk-specs.js +6 -0
  42. package/utils/style.d.ts +3 -0
  43. package/utils/style.js +13 -0
  44. package/utils/types.d.ts +234 -0
  45. package/utils/types.js +1 -0
  46. package/utils/version.d.ts +1 -0
  47. package/utils/version.js +1 -0
  48. package/utils/wallet/EVMWalletStrategy.d.ts +31 -0
  49. package/utils/wallet/EVMWalletStrategy.js +265 -0
  50. package/utils/wallet/SolanaWalletStrategy.d.ts +33 -0
  51. package/utils/wallet/SolanaWalletStrategy.js +300 -0
  52. package/utils/wallet/WalletStrategy.d.ts +61 -0
  53. package/utils/wallet/WalletStrategy.js +25 -0
  54. package/utils/wallet/WalletStrategyFactory.d.ts +15 -0
  55. package/utils/wallet/WalletStrategyFactory.js +31 -0
  56. package/utils/wallet/index.d.ts +4 -0
  57. package/utils/wallet/index.js +4 -0
  58. package/utils/wallet-browser-event-types.d.ts +116 -0
  59. package/utils/wallet-browser-event-types.js +17 -0
  60. package/jest.setup.ts +0 -4
  61. package/src/Link.test.ts +0 -434
  62. package/src/Link.ts +0 -491
  63. package/src/index.ts +0 -3
  64. package/src/utils/__snapshots__/popup.test.ts.snap +0 -89
  65. package/src/utils/connectors/evm/chainConfigs.ts +0 -120
  66. package/src/utils/connectors/evm/chainSwitching.ts +0 -165
  67. package/src/utils/connectors/evm/index.ts +0 -8
  68. package/src/utils/connectors/evm/provider.ts +0 -22
  69. package/src/utils/connectors/evm/signing.ts +0 -39
  70. package/src/utils/connectors/evm/transactions.ts +0 -356
  71. package/src/utils/connectors/evm/types.ts +0 -63
  72. package/src/utils/connectors/evm/walletConnection.ts +0 -140
  73. package/src/utils/connectors/evm/walletDiscovery.ts +0 -67
  74. package/src/utils/connectors/solana/connection.ts +0 -69
  75. package/src/utils/connectors/solana/index.ts +0 -5
  76. package/src/utils/connectors/solana/providerDiscovery.ts +0 -153
  77. package/src/utils/connectors/solana/signing.ts +0 -18
  78. package/src/utils/connectors/solana/transaction.ts +0 -382
  79. package/src/utils/connectors/solana/types.ts +0 -66
  80. package/src/utils/event-types.ts +0 -350
  81. package/src/utils/popup.test.ts +0 -50
  82. package/src/utils/popup.ts +0 -123
  83. package/src/utils/sdk-specs.test.ts +0 -18
  84. package/src/utils/sdk-specs.ts +0 -7
  85. package/src/utils/style.test.ts +0 -33
  86. package/src/utils/style.ts +0 -15
  87. package/src/utils/types.ts +0 -270
  88. package/src/utils/version.ts +0 -1
  89. package/src/utils/wallet/EVMWalletStrategy.ts +0 -176
  90. package/src/utils/wallet/SolanaWalletStrategy.ts +0 -207
  91. package/src/utils/wallet/WalletStrategy.ts +0 -99
  92. package/src/utils/wallet/WalletStrategyFactory.ts +0 -46
  93. package/src/utils/wallet/__tests__/EVMWalletStrategy.test.ts +0 -233
  94. package/src/utils/wallet/__tests__/SolanaWalletStrategy.test.ts +0 -253
  95. package/src/utils/wallet/__tests__/WalletStrategy.test.ts +0 -77
  96. package/src/utils/wallet/__tests__/WalletStrategyFactory.test.ts +0 -65
  97. package/src/utils/wallet/index.ts +0 -4
  98. package/src/utils/wallet-browser-event-types.ts +0 -190
  99. package/tools/copy.js +0 -26
  100. package/tools/update-version.js +0 -10
  101. package/tsconfig.json +0 -14
package/Link.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { LinkOptions, Link } from './utils/types';
2
+ export declare const createLink: (options: LinkOptions) => Link;
package/Link.js ADDED
@@ -0,0 +1,530 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { addPopup, iframeId, removePopup } from './utils/popup';
49
+ import { isLinkEventTypeKey } from './utils/event-types';
50
+ import { isWalletBrowserEventTypeKey } from './utils/wallet-browser-event-types';
51
+ import { sdkSpecs } from './utils/sdk-specs';
52
+ import { WalletStrategyFactory } from './utils/wallet';
53
+ var currentOptions;
54
+ var targetOrigin;
55
+ var linkTokenOrigin;
56
+ var currentIframeId = iframeId;
57
+ var iframeElement = function () {
58
+ return document.getElementById(currentIframeId);
59
+ };
60
+ function sendMessageToIframe(message) {
61
+ var _a;
62
+ var iframe = iframeElement();
63
+ if (!iframe) {
64
+ console.warn("Mesh SDK: Failed to deliver ".concat(message.type, " message to the iframe - no iframe element found"));
65
+ return;
66
+ }
67
+ if (!linkTokenOrigin) {
68
+ console.warn("Mesh SDK: Failed to deliver ".concat(message.type, " message to the iframe - no link token origin found"));
69
+ return;
70
+ }
71
+ try {
72
+ (_a = iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage(message, linkTokenOrigin);
73
+ }
74
+ catch (e) {
75
+ console.error("Mesh SDK: Failed to deliver ".concat(message.type, " message to the iframe"));
76
+ console.error(e);
77
+ }
78
+ }
79
+ function handleLinkEvent(event) {
80
+ return __awaiter(this, void 0, void 0, function () {
81
+ var payload, payload, payload, payload, walletFactory, allProviders;
82
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
83
+ return __generator(this, function (_l) {
84
+ switch (event.data.type) {
85
+ case 'brokerageAccountAccessToken': {
86
+ payload = {
87
+ accessToken: event.data.payload
88
+ };
89
+ (_a = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _a === void 0 ? void 0 : _a.call(currentOptions, {
90
+ type: 'integrationConnected',
91
+ payload: payload
92
+ });
93
+ (_b = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onIntegrationConnected) === null || _b === void 0 ? void 0 : _b.call(currentOptions, payload);
94
+ break;
95
+ }
96
+ case 'delayedAuthentication': {
97
+ payload = {
98
+ delayedAuth: event.data.payload
99
+ };
100
+ (_c = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _c === void 0 ? void 0 : _c.call(currentOptions, {
101
+ type: 'integrationConnected',
102
+ payload: payload
103
+ });
104
+ (_d = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onIntegrationConnected) === null || _d === void 0 ? void 0 : _d.call(currentOptions, payload);
105
+ break;
106
+ }
107
+ case 'transferFinished': {
108
+ payload = event.data.payload;
109
+ (_e = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _e === void 0 ? void 0 : _e.call(currentOptions, {
110
+ type: 'transferCompleted',
111
+ payload: payload
112
+ });
113
+ (_f = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onTransferFinished) === null || _f === void 0 ? void 0 : _f.call(currentOptions, payload);
114
+ break;
115
+ }
116
+ case 'close':
117
+ case 'done': {
118
+ payload = (_g = event.data) === null || _g === void 0 ? void 0 : _g.payload;
119
+ (_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);
120
+ removePopup();
121
+ break;
122
+ }
123
+ case 'loaded': {
124
+ sendMessageToIframe({
125
+ type: 'meshSDKSpecs',
126
+ payload: __assign({}, sdkSpecs)
127
+ });
128
+ walletFactory = WalletStrategyFactory.getInstance();
129
+ allProviders = walletFactory.getAllProviders();
130
+ sendMessageToIframe({
131
+ type: 'SDKinjectedWalletProviders',
132
+ payload: allProviders
133
+ });
134
+ if (currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.accessTokens) {
135
+ sendMessageToIframe({
136
+ type: 'frontAccessTokens',
137
+ payload: currentOptions.accessTokens
138
+ });
139
+ }
140
+ if (currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.transferDestinationTokens) {
141
+ sendMessageToIframe({
142
+ type: 'frontTransferDestinationTokens',
143
+ payload: currentOptions.transferDestinationTokens
144
+ });
145
+ }
146
+ (_j = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _j === void 0 ? void 0 : _j.call(currentOptions, { type: 'pageLoaded' });
147
+ break;
148
+ }
149
+ default: {
150
+ if (isLinkEventTypeKey(event.data.type)) {
151
+ (_k = currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.onEvent) === null || _k === void 0 ? void 0 : _k.call(currentOptions, event.data);
152
+ }
153
+ break;
154
+ }
155
+ }
156
+ return [2 /*return*/];
157
+ });
158
+ });
159
+ }
160
+ function handleWalletBrowserEvent(event) {
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, getResponseType, networkType, strategy, result, responseType, error_6, errorType, payload, responseType, networkType, strategy, result, error_7, payload, responseType, networkType, strategy, result, error_8, payload, networkType, strategy, error_9, payload, networkType, strategy, result, error_10;
163
+ var _b;
164
+ return __generator(this, function (_c) {
165
+ switch (_c.label) {
166
+ case 0:
167
+ walletFactory = WalletStrategyFactory.getInstance();
168
+ _a = event.data.type;
169
+ switch (_a) {
170
+ case 'walletBrowserInjectedWalletSelected': return [3 /*break*/, 1];
171
+ case 'walletBrowserSignRequest': return [3 /*break*/, 6];
172
+ case 'walletBrowserChainSwitchRequest': return [3 /*break*/, 11];
173
+ case 'walletBrowserNativeTransferRequest': return [3 /*break*/, 16];
174
+ case 'walletBrowserNonNativeTransferRequest': return [3 /*break*/, 21];
175
+ case 'walletBrowserNonNativeSmartDeposit': return [3 /*break*/, 21];
176
+ case 'walletBrowserNativeSmartDeposit': return [3 /*break*/, 26];
177
+ case 'walletBrowserTransactionBatchRequest': return [3 /*break*/, 31];
178
+ case 'walletBrowserWalletCapabilities': return [3 /*break*/, 36];
179
+ case 'walletBrowserDisconnect': return [3 /*break*/, 41];
180
+ case 'walletBrowserSolanaTransferWithInstructionsRequest': return [3 /*break*/, 49];
181
+ }
182
+ return [3 /*break*/, 54];
183
+ case 1:
184
+ payload = event.data.payload;
185
+ _c.label = 2;
186
+ case 2:
187
+ _c.trys.push([2, 4, , 5]);
188
+ networkType = (((_b = payload.networkType) === null || _b === void 0 ? void 0 : _b.includes('solana')) ? 'solana' : 'evm');
189
+ strategy = walletFactory.getStrategy(networkType);
190
+ return [4 /*yield*/, strategy.connect(payload)];
191
+ case 3:
192
+ result = _c.sent();
193
+ sendMessageToIframe({
194
+ type: 'SDKinjectedConnectionCompleted',
195
+ payload: {
196
+ accounts: result.accounts,
197
+ chainId: result.chainId,
198
+ networkType: networkType
199
+ }
200
+ });
201
+ return [3 /*break*/, 5];
202
+ case 4:
203
+ error_1 = _c.sent();
204
+ console.error('Connection error:', error_1);
205
+ handleErrorAndSendMessage(error_1, 'SDKinjectedConnectionCompleted');
206
+ return [3 /*break*/, 5];
207
+ case 5: return [3 /*break*/, 54];
208
+ case 6:
209
+ payload = event.data.payload;
210
+ _c.label = 7;
211
+ case 7:
212
+ _c.trys.push([7, 9, , 10]);
213
+ networkType = (!payload.address.startsWith('0x') ? 'solana' : 'evm');
214
+ strategy = walletFactory.getStrategy(networkType);
215
+ return [4 /*yield*/, strategy.signMessage(payload)];
216
+ case 8:
217
+ result = _c.sent();
218
+ sendMessageToIframe({
219
+ type: 'SDKsignRequestCompleted',
220
+ payload: result
221
+ });
222
+ return [3 /*break*/, 10];
223
+ case 9:
224
+ error_2 = _c.sent();
225
+ handleErrorAndSendMessage(error_2, 'SDKsignRequestCompleted');
226
+ return [3 /*break*/, 10];
227
+ case 10: return [3 /*break*/, 54];
228
+ case 11:
229
+ payload = event.data.payload;
230
+ _c.label = 12;
231
+ case 12:
232
+ _c.trys.push([12, 14, , 15]);
233
+ networkType = (payload.networkType === 'solana' ? 'solana' : 'evm');
234
+ strategy = walletFactory.getStrategy(networkType);
235
+ return [4 /*yield*/, strategy.switchChain(payload)];
236
+ case 13:
237
+ result = _c.sent();
238
+ sendMessageToIframe({
239
+ type: 'SDKswitchChainCompleted',
240
+ payload: {
241
+ chainId: result.chainId,
242
+ accounts: result.accounts,
243
+ networkType: networkType
244
+ }
245
+ });
246
+ return [3 /*break*/, 15];
247
+ case 14:
248
+ error_3 = _c.sent();
249
+ console.error('Chain switch failed:', error_3);
250
+ handleErrorAndSendMessage(error_3, 'SDKswitchChainCompleted');
251
+ return [3 /*break*/, 15];
252
+ case 15: return [3 /*break*/, 54];
253
+ case 16:
254
+ payload = event.data.payload;
255
+ _c.label = 17;
256
+ case 17:
257
+ _c.trys.push([17, 19, , 20]);
258
+ networkType = (payload.network === 'solana' ? 'solana' : 'evm');
259
+ strategy = walletFactory.getStrategy(networkType);
260
+ return [4 /*yield*/, strategy.sendNativeTransfer(payload)];
261
+ case 18:
262
+ result = _c.sent();
263
+ sendMessageToIframe({
264
+ type: 'SDKnativeTransferCompleted',
265
+ payload: result
266
+ });
267
+ return [3 /*break*/, 20];
268
+ case 19:
269
+ error_4 = _c.sent();
270
+ handleErrorAndSendMessage(error_4, 'SDKnativeTransferCompleted');
271
+ return [3 /*break*/, 20];
272
+ case 20: return [3 /*break*/, 54];
273
+ case 21:
274
+ payload = event.data.payload;
275
+ getResponseType = function (type) {
276
+ switch (type) {
277
+ case 'walletBrowserNonNativeTransferRequest':
278
+ return 'SDKnonNativeTransferCompleted';
279
+ case 'walletBrowserNativeSmartDeposit':
280
+ return 'SDKnativeSmartDepositCompleted';
281
+ case 'walletBrowserNonNativeSmartDeposit':
282
+ return 'SDKnonNativeSmartDepositCompleted';
283
+ default:
284
+ return 'SDKnonNativeTransferCompleted';
285
+ }
286
+ };
287
+ _c.label = 22;
288
+ case 22:
289
+ _c.trys.push([22, 24, , 25]);
290
+ networkType = (payload.address.startsWith('0x') ? 'evm' : 'solana');
291
+ strategy = walletFactory.getStrategy(networkType);
292
+ return [4 /*yield*/, strategy.sendSmartContractInteraction(payload)];
293
+ case 23:
294
+ result = _c.sent();
295
+ responseType = getResponseType(event.data.type);
296
+ sendMessageToIframe({
297
+ type: responseType,
298
+ payload: {
299
+ txHash: result
300
+ }
301
+ });
302
+ return [3 /*break*/, 25];
303
+ case 24:
304
+ error_5 = _c.sent();
305
+ errorType = getResponseType(event.data.type);
306
+ handleErrorAndSendMessage(error_5, errorType);
307
+ return [3 /*break*/, 25];
308
+ case 25: return [3 /*break*/, 54];
309
+ case 26:
310
+ payload = event.data.payload;
311
+ getResponseType = function (type) {
312
+ switch (type) {
313
+ case 'walletBrowserNonNativeTransferRequest':
314
+ return 'SDKnonNativeTransferCompleted';
315
+ case 'walletBrowserNativeSmartDeposit':
316
+ return 'SDKnativeSmartDepositCompleted';
317
+ case 'walletBrowserNonNativeSmartDeposit':
318
+ return 'SDKnonNativeSmartDepositCompleted';
319
+ default:
320
+ return 'SDKnonNativeTransferCompleted';
321
+ }
322
+ };
323
+ _c.label = 27;
324
+ case 27:
325
+ _c.trys.push([27, 29, , 30]);
326
+ networkType = (payload.address.startsWith('0x') ? 'evm' : 'solana');
327
+ strategy = walletFactory.getStrategy(networkType);
328
+ return [4 /*yield*/, strategy.sendNativeSmartContractInteraction(payload)];
329
+ case 28:
330
+ result = _c.sent();
331
+ responseType = getResponseType(event.data.type);
332
+ sendMessageToIframe({
333
+ type: responseType,
334
+ payload: {
335
+ txHash: result
336
+ }
337
+ });
338
+ return [3 /*break*/, 30];
339
+ case 29:
340
+ error_6 = _c.sent();
341
+ errorType = getResponseType(event.data.type);
342
+ handleErrorAndSendMessage(error_6, errorType);
343
+ return [3 /*break*/, 30];
344
+ case 30: return [3 /*break*/, 54];
345
+ case 31:
346
+ payload = event.data.payload;
347
+ responseType = 'SDKtransactionBatchCompleted';
348
+ _c.label = 32;
349
+ case 32:
350
+ _c.trys.push([32, 34, , 35]);
351
+ networkType = (payload.from.startsWith('0x') ? 'evm' : 'solana');
352
+ strategy = walletFactory.getStrategy(networkType);
353
+ return [4 /*yield*/, strategy.sendTransactionBatch(payload)];
354
+ case 33:
355
+ result = _c.sent();
356
+ sendMessageToIframe({
357
+ type: responseType,
358
+ payload: {
359
+ txHash: result
360
+ }
361
+ });
362
+ return [3 /*break*/, 35];
363
+ case 34:
364
+ error_7 = _c.sent();
365
+ handleErrorAndSendMessage(error_7, responseType);
366
+ return [3 /*break*/, 35];
367
+ case 35: return [3 /*break*/, 54];
368
+ case 36:
369
+ payload = event.data.payload;
370
+ responseType = 'SDKwalletCapabilitiesCompleted';
371
+ _c.label = 37;
372
+ case 37:
373
+ _c.trys.push([37, 39, , 40]);
374
+ networkType = (payload.from.startsWith('0x') ? 'evm' : 'solana');
375
+ strategy = walletFactory.getStrategy(networkType);
376
+ return [4 /*yield*/, strategy.getWalletCapabilities(payload)];
377
+ case 38:
378
+ result = _c.sent();
379
+ sendMessageToIframe({
380
+ type: responseType,
381
+ payload: result
382
+ });
383
+ return [3 /*break*/, 40];
384
+ case 39:
385
+ error_8 = _c.sent();
386
+ handleErrorAndSendMessage(error_8, responseType);
387
+ return [3 /*break*/, 40];
388
+ case 40: return [3 /*break*/, 54];
389
+ case 41:
390
+ payload = event.data.payload;
391
+ _c.label = 42;
392
+ case 42:
393
+ _c.trys.push([42, 47, , 48]);
394
+ if (!(payload === null || payload === void 0 ? void 0 : payload.networkType)) return [3 /*break*/, 44];
395
+ networkType = (payload.networkType === 'solana' ? 'solana' : 'evm');
396
+ strategy = walletFactory.getStrategy(networkType);
397
+ return [4 /*yield*/, strategy.disconnect(payload)];
398
+ case 43:
399
+ _c.sent();
400
+ return [3 /*break*/, 46];
401
+ case 44:
402
+ // Disconnect from all if no specific network type
403
+ return [4 /*yield*/, Promise.all([
404
+ walletFactory.getStrategy('solana').disconnect(payload),
405
+ walletFactory.getStrategy('evm').disconnect(payload)
406
+ ])];
407
+ case 45:
408
+ // Disconnect from all if no specific network type
409
+ _c.sent();
410
+ _c.label = 46;
411
+ case 46:
412
+ sendMessageToIframe({
413
+ type: 'SDKdisconnectSuccess'
414
+ });
415
+ return [3 /*break*/, 48];
416
+ case 47:
417
+ error_9 = _c.sent();
418
+ console.error('Error during disconnect:', error_9);
419
+ handleErrorAndSendMessage(error_9, 'SDKdisconnectSuccess');
420
+ return [3 /*break*/, 48];
421
+ case 48: return [3 /*break*/, 54];
422
+ case 49:
423
+ payload = event.data
424
+ .payload;
425
+ _c.label = 50;
426
+ case 50:
427
+ _c.trys.push([50, 52, , 53]);
428
+ networkType = 'solana';
429
+ strategy = walletFactory.getStrategy(networkType);
430
+ return [4 /*yield*/, strategy.sendTransactionWithInstructions(payload)];
431
+ case 51:
432
+ result = _c.sent();
433
+ sendMessageToIframe({
434
+ type: 'SDKnonNativeTransferCompleted',
435
+ payload: {
436
+ txHash: result
437
+ }
438
+ });
439
+ return [3 /*break*/, 53];
440
+ case 52:
441
+ error_10 = _c.sent();
442
+ handleErrorAndSendMessage(error_10, 'SDKdisconnectSuccess');
443
+ return [3 /*break*/, 53];
444
+ case 53: return [3 /*break*/, 54];
445
+ case 54: return [2 /*return*/];
446
+ }
447
+ });
448
+ });
449
+ }
450
+ function eventsListener(event) {
451
+ return __awaiter(this, void 0, void 0, function () {
452
+ return __generator(this, function (_a) {
453
+ switch (_a.label) {
454
+ case 0:
455
+ if (!(event.origin !== targetOrigin && event.origin !== linkTokenOrigin)) return [3 /*break*/, 1];
456
+ console.warn('Received message from untrusted origin:', event.origin);
457
+ return [3 /*break*/, 5];
458
+ case 1:
459
+ if (!isWalletBrowserEventTypeKey(event.data.type)) return [3 /*break*/, 3];
460
+ return [4 /*yield*/, handleWalletBrowserEvent(event)];
461
+ case 2:
462
+ _a.sent();
463
+ return [3 /*break*/, 5];
464
+ case 3: return [4 /*yield*/, handleLinkEvent(event)];
465
+ case 4:
466
+ _a.sent();
467
+ _a.label = 5;
468
+ case 5: return [2 /*return*/];
469
+ }
470
+ });
471
+ });
472
+ }
473
+ function handleErrorAndSendMessage(error, messageType) {
474
+ sendMessageToIframe({
475
+ type: messageType,
476
+ payload: {
477
+ error: error
478
+ }
479
+ });
480
+ }
481
+ export var createLink = function (options) {
482
+ var openLink = function (linkToken, customIframeId) {
483
+ var _a;
484
+ if (!linkToken) {
485
+ (_a = options === null || options === void 0 ? void 0 : options.onExit) === null || _a === void 0 ? void 0 : _a.call(options, 'Invalid link token!');
486
+ return;
487
+ }
488
+ currentOptions = options;
489
+ var linkUrl = window.atob(linkToken);
490
+ linkUrl = addLanguage(linkUrl, currentOptions === null || currentOptions === void 0 ? void 0 : currentOptions.language);
491
+ linkTokenOrigin = new URL(linkUrl).origin;
492
+ window.removeEventListener('message', eventsListener);
493
+ if (customIframeId) {
494
+ var iframe = document.getElementById(customIframeId);
495
+ if (iframe) {
496
+ iframe.allow = 'clipboard-read *; clipboard-write *';
497
+ iframe.src = linkUrl;
498
+ currentIframeId = customIframeId;
499
+ }
500
+ else {
501
+ console.warn("Mesh SDK: No iframe found with id ".concat(customIframeId));
502
+ }
503
+ }
504
+ else {
505
+ currentIframeId = iframeId;
506
+ addPopup(linkUrl);
507
+ }
508
+ window.addEventListener('message', eventsListener);
509
+ targetOrigin = window.location.origin;
510
+ };
511
+ var closeLink = function () {
512
+ var _a;
513
+ removePopup();
514
+ window.removeEventListener('message', eventsListener);
515
+ (_a = options.onExit) === null || _a === void 0 ? void 0 : _a.call(options);
516
+ };
517
+ return {
518
+ openLink: openLink,
519
+ closeLink: closeLink
520
+ };
521
+ };
522
+ function addLanguage(linkUrl, language) {
523
+ if (language === 'system') {
524
+ language =
525
+ typeof navigator !== 'undefined' && navigator.language
526
+ ? encodeURIComponent(navigator.language)
527
+ : undefined;
528
+ }
529
+ return "".concat(linkUrl).concat(linkUrl.includes('?') ? '&' : '?', "lng=").concat(language || 'en');
530
+ }
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './utils/types';
2
+ export * from './utils/event-types';
3
+ export { createLink } from './Link';
package/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './utils/types';
2
+ export * from './utils/event-types';
3
+ export { createLink } from './Link';
package/package.json CHANGED
@@ -1,12 +1,8 @@
1
1
  {
2
2
  "name": "@meshconnect/web-link-sdk",
3
- "version": "3.2.15",
3
+ "version": "3.2.16",
4
4
  "description": "A client-side JS library for integrating with Mesh Connect",
5
- "main": "./src/index.ts",
6
- "module": "./src/index.ts",
7
- "exports": "./src/index.ts",
8
- "types": "./src/index.ts",
9
- "type": "module",
5
+ "exports": "./index.js",
10
6
  "license": "MIT",
11
7
  "repository": "https://github.com/FrontFin/mesh-web-sdk.git",
12
8
  "homepage": "https://github.com/FrontFin/mesh-web-sdk",
@@ -26,23 +22,12 @@
26
22
  "util": "^0.12.4"
27
23
  },
28
24
  "dependencies": {
29
- "@meshconnect/node-api": "^2.0.16",
25
+ "@meshconnect/node-api": "^2.0.23",
30
26
  "@meshconnect/solana-web3.js": "^1.0.4",
31
27
  "bs58": "^5.0.0",
32
28
  "buffer": "^6.0.3",
33
29
  "ethers": "^6.11.1"
34
30
  },
35
- "scripts": {
36
- "build": "yarn updateVersion && rimraf dist && yarn build:esm && yarn copy",
37
- "build:esm": "tsc --outDir dist",
38
- "typecheck": "tsc --noEmit --skipLibCheck",
39
- "lint": "eslint **/*.ts",
40
- "copy": "node ./tools/copy",
41
- "updateVersion": "node ./tools/update-version",
42
- "publish:npm": "yarn build && cd dist && yarn publish --access public",
43
- "test": "jest",
44
- "test:cov": "jest --ci --coverage"
45
- },
46
31
  "jest": {
47
32
  "preset": "ts-jest",
48
33
  "testEnvironment": "jsdom",
@@ -71,5 +56,8 @@
71
56
  "testEnvironmentOptions": {
72
57
  "url": "http://localhost/"
73
58
  }
74
- }
75
- }
59
+ },
60
+ "module": "./index.js",
61
+ "main": "./index.js",
62
+ "types": "./index.d.ts"
63
+ }
@@ -0,0 +1,2 @@
1
+ import { ChainConfig } from './types';
2
+ export declare const getChainConfiguration: (chainId: number) => ChainConfig | undefined;