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