@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/src/Link.ts DELETED
@@ -1,491 +0,0 @@
1
- import {
2
- LinkOptions,
3
- Link,
4
- EventType,
5
- AccessTokenPayload,
6
- DelayedAuthPayload,
7
- TransferFinishedPayload,
8
- LinkPayload,
9
- WalletBrowserPayload,
10
- SignRequestPayload,
11
- ChainSwitchPayload,
12
- TransferPayload,
13
- SmartContractPayload,
14
- DisconnectPayload,
15
- TransactionBatchPayload,
16
- WalletCapabilitiesPayload,
17
- SolanaTransferWithInstructionsPayload
18
- } from './utils/types'
19
- import { addPopup, iframeId, removePopup } from './utils/popup'
20
- import { LinkEventType, isLinkEventTypeKey } from './utils/event-types'
21
- import {
22
- WalletBrowserEventType,
23
- isWalletBrowserEventTypeKey
24
- } from './utils/wallet-browser-event-types'
25
- import { sdkSpecs } from './utils/sdk-specs'
26
- import { WalletStrategyFactory, NetworkType } from './utils/wallet'
27
-
28
- let currentOptions: LinkOptions | undefined
29
- let targetOrigin: string | undefined
30
- let linkTokenOrigin: string | undefined
31
- let currentIframeId = iframeId
32
-
33
- const iframeElement = () => {
34
- return document.getElementById(currentIframeId) as HTMLIFrameElement
35
- }
36
-
37
- function sendMessageToIframe<T extends { type: string }>(message: T) {
38
- const iframe = iframeElement()
39
- if (!iframe) {
40
- console.warn(
41
- `Mesh SDK: Failed to deliver ${message.type} message to the iframe - no iframe element found`
42
- )
43
- return
44
- }
45
- if (!linkTokenOrigin) {
46
- console.warn(
47
- `Mesh SDK: Failed to deliver ${message.type} message to the iframe - no link token origin found`
48
- )
49
- return
50
- }
51
- try {
52
- iframe.contentWindow?.postMessage(message, linkTokenOrigin)
53
- } catch (e) {
54
- console.error(
55
- `Mesh SDK: Failed to deliver ${message.type} message to the iframe`
56
- )
57
- console.error(e)
58
- }
59
- }
60
-
61
- async function handleLinkEvent(
62
- event:
63
- | MessageEvent<{
64
- type: EventType
65
- payload?:
66
- | AccessTokenPayload
67
- | DelayedAuthPayload
68
- | TransferFinishedPayload
69
- link?: string
70
- }>
71
- | MessageEvent<LinkEventType>
72
- ) {
73
- switch (event.data.type) {
74
- case 'brokerageAccountAccessToken': {
75
- const payload: LinkPayload = {
76
- accessToken: event.data.payload as AccessTokenPayload
77
- }
78
- currentOptions?.onEvent?.({
79
- type: 'integrationConnected',
80
- payload: payload
81
- })
82
- currentOptions?.onIntegrationConnected?.(payload)
83
- break
84
- }
85
- case 'delayedAuthentication': {
86
- const payload: LinkPayload = {
87
- delayedAuth: event.data.payload as DelayedAuthPayload
88
- }
89
- currentOptions?.onEvent?.({
90
- type: 'integrationConnected',
91
- payload: payload
92
- })
93
- currentOptions?.onIntegrationConnected?.(payload)
94
- break
95
- }
96
- case 'transferFinished': {
97
- const payload = event.data.payload as TransferFinishedPayload
98
-
99
- currentOptions?.onEvent?.({
100
- type: 'transferCompleted',
101
- payload: payload
102
- })
103
- currentOptions?.onTransferFinished?.(payload)
104
- break
105
- }
106
- case 'close':
107
- case 'done': {
108
- const payload = event.data?.payload
109
- currentOptions?.onExit?.(payload?.errorMessage, payload)
110
- removePopup()
111
- break
112
- }
113
- case 'loaded': {
114
- sendMessageToIframe({
115
- type: 'meshSDKSpecs',
116
- payload: { ...sdkSpecs }
117
- })
118
-
119
- // Get all providers using the wallet factory
120
- const walletFactory = WalletStrategyFactory.getInstance()
121
- const allProviders = walletFactory.getAllProviders()
122
-
123
- sendMessageToIframe({
124
- type: 'SDKinjectedWalletProviders',
125
- payload: allProviders
126
- })
127
-
128
- if (currentOptions?.accessTokens) {
129
- sendMessageToIframe({
130
- type: 'frontAccessTokens',
131
- payload: currentOptions.accessTokens
132
- })
133
- }
134
- if (currentOptions?.transferDestinationTokens) {
135
- sendMessageToIframe({
136
- type: 'frontTransferDestinationTokens',
137
- payload: currentOptions.transferDestinationTokens
138
- })
139
- }
140
- currentOptions?.onEvent?.({ type: 'pageLoaded' })
141
- break
142
- }
143
- default: {
144
- if (isLinkEventTypeKey(event.data.type)) {
145
- currentOptions?.onEvent?.(event.data)
146
- }
147
- break
148
- }
149
- }
150
- }
151
-
152
- async function handleWalletBrowserEvent(
153
- event: MessageEvent<WalletBrowserEventType>
154
- ) {
155
- const walletFactory = WalletStrategyFactory.getInstance()
156
- switch (event.data.type) {
157
- case 'walletBrowserInjectedWalletSelected': {
158
- const payload = event.data.payload as WalletBrowserPayload
159
- try {
160
- const networkType = (
161
- payload.networkType?.includes('solana') ? 'solana' : 'evm'
162
- ) as NetworkType
163
- const strategy = walletFactory.getStrategy(networkType)
164
-
165
- const result = await strategy.connect(payload)
166
-
167
- sendMessageToIframe({
168
- type: 'SDKinjectedConnectionCompleted',
169
- payload: {
170
- accounts: result.accounts,
171
- chainId: result.chainId,
172
- networkType: networkType
173
- }
174
- })
175
- } catch (error) {
176
- console.error('Connection error:', error)
177
- handleErrorAndSendMessage(
178
- error as Error,
179
- 'SDKinjectedConnectionCompleted'
180
- )
181
- }
182
- break
183
- }
184
- case 'walletBrowserSignRequest': {
185
- const payload = event.data.payload as SignRequestPayload
186
- try {
187
- const networkType = (
188
- !payload.address.startsWith('0x') ? 'solana' : 'evm'
189
- ) as NetworkType
190
- const strategy = walletFactory.getStrategy(networkType)
191
-
192
- const result = await strategy.signMessage(payload)
193
-
194
- sendMessageToIframe({
195
- type: 'SDKsignRequestCompleted',
196
- payload: result
197
- })
198
- } catch (error) {
199
- handleErrorAndSendMessage(error as Error, 'SDKsignRequestCompleted')
200
- }
201
- break
202
- }
203
- case 'walletBrowserChainSwitchRequest': {
204
- const payload = event.data.payload as ChainSwitchPayload
205
- try {
206
- const networkType = (
207
- payload.networkType === 'solana' ? 'solana' : 'evm'
208
- ) as NetworkType
209
- const strategy = walletFactory.getStrategy(networkType)
210
-
211
- const result = await strategy.switchChain(payload)
212
-
213
- sendMessageToIframe({
214
- type: 'SDKswitchChainCompleted',
215
- payload: {
216
- chainId: result.chainId,
217
- accounts: result.accounts,
218
- networkType: networkType
219
- }
220
- })
221
- } catch (error) {
222
- console.error('Chain switch failed:', error)
223
- handleErrorAndSendMessage(error as Error, 'SDKswitchChainCompleted')
224
- }
225
- break
226
- }
227
- case 'walletBrowserNativeTransferRequest': {
228
- const payload = event.data.payload as TransferPayload
229
- try {
230
- const networkType = (
231
- payload.network === 'solana' ? 'solana' : 'evm'
232
- ) as NetworkType
233
- const strategy = walletFactory.getStrategy(networkType)
234
-
235
- const result = await strategy.sendNativeTransfer(payload)
236
-
237
- sendMessageToIframe({
238
- type: 'SDKnativeTransferCompleted',
239
- payload: result
240
- })
241
- } catch (error) {
242
- handleErrorAndSendMessage(error as Error, 'SDKnativeTransferCompleted')
243
- }
244
- break
245
- }
246
- case 'walletBrowserNonNativeTransferRequest':
247
- case 'walletBrowserNonNativeSmartDeposit': {
248
- const payload = event.data.payload as SmartContractPayload
249
- const getResponseType = (type: WalletBrowserEventType['type']) => {
250
- switch (type) {
251
- case 'walletBrowserNonNativeTransferRequest':
252
- return 'SDKnonNativeTransferCompleted'
253
- case 'walletBrowserNativeSmartDeposit':
254
- return 'SDKnativeSmartDepositCompleted'
255
- case 'walletBrowserNonNativeSmartDeposit':
256
- return 'SDKnonNativeSmartDepositCompleted'
257
- default:
258
- return 'SDKnonNativeTransferCompleted'
259
- }
260
- }
261
-
262
- try {
263
- const networkType = (
264
- payload.address.startsWith('0x') ? 'evm' : 'solana'
265
- ) as NetworkType
266
- const strategy = walletFactory.getStrategy(networkType)
267
- const result = await strategy.sendSmartContractInteraction(payload)
268
-
269
- const responseType = getResponseType(event.data.type)
270
-
271
- sendMessageToIframe({
272
- type: responseType,
273
- payload: {
274
- txHash: result
275
- }
276
- })
277
- } catch (error) {
278
- const errorType = getResponseType(event.data.type)
279
- handleErrorAndSendMessage(error as Error, errorType)
280
- }
281
- break
282
- }
283
- case 'walletBrowserNativeSmartDeposit': {
284
- const payload = event.data.payload as SmartContractPayload
285
- const getResponseType = (type: WalletBrowserEventType['type']) => {
286
- switch (type) {
287
- case 'walletBrowserNonNativeTransferRequest':
288
- return 'SDKnonNativeTransferCompleted'
289
- case 'walletBrowserNativeSmartDeposit':
290
- return 'SDKnativeSmartDepositCompleted'
291
- case 'walletBrowserNonNativeSmartDeposit':
292
- return 'SDKnonNativeSmartDepositCompleted'
293
- default:
294
- return 'SDKnonNativeTransferCompleted'
295
- }
296
- }
297
-
298
- try {
299
- const networkType = (
300
- payload.address.startsWith('0x') ? 'evm' : 'solana'
301
- ) as NetworkType
302
- const strategy = walletFactory.getStrategy(networkType)
303
- const result = await strategy.sendNativeSmartContractInteraction(
304
- payload
305
- )
306
-
307
- const responseType = getResponseType(event.data.type)
308
-
309
- sendMessageToIframe({
310
- type: responseType,
311
- payload: {
312
- txHash: result
313
- }
314
- })
315
- } catch (error) {
316
- const errorType = getResponseType(event.data.type)
317
- handleErrorAndSendMessage(error as Error, errorType)
318
- }
319
- break
320
- }
321
- case 'walletBrowserTransactionBatchRequest': {
322
- const payload = event.data.payload as TransactionBatchPayload
323
- const responseType = 'SDKtransactionBatchCompleted'
324
-
325
- try {
326
- const networkType = (
327
- payload.from.startsWith('0x') ? 'evm' : 'solana'
328
- ) as NetworkType
329
- const strategy = walletFactory.getStrategy(networkType)
330
- const result = await strategy.sendTransactionBatch(payload)
331
-
332
- sendMessageToIframe({
333
- type: responseType,
334
- payload: {
335
- txHash: result
336
- }
337
- })
338
- } catch (error) {
339
- handleErrorAndSendMessage(error as Error, responseType)
340
- }
341
- break
342
- }
343
- case 'walletBrowserWalletCapabilities': {
344
- const payload = event.data.payload as WalletCapabilitiesPayload
345
- const responseType = 'SDKwalletCapabilitiesCompleted'
346
- try {
347
- const networkType = (
348
- payload.from.startsWith('0x') ? 'evm' : 'solana'
349
- ) as NetworkType
350
- const strategy = walletFactory.getStrategy(networkType)
351
- const result = await strategy.getWalletCapabilities(payload)
352
-
353
- sendMessageToIframe({
354
- type: responseType,
355
- payload: result
356
- })
357
- } catch (error) {
358
- handleErrorAndSendMessage(error as Error, responseType)
359
- }
360
- break
361
- break
362
- }
363
- case 'walletBrowserDisconnect': {
364
- const payload = event.data.payload as DisconnectPayload
365
-
366
- try {
367
- if (payload?.networkType) {
368
- const networkType = (
369
- payload.networkType === 'solana' ? 'solana' : 'evm'
370
- ) as NetworkType
371
- const strategy = walletFactory.getStrategy(networkType)
372
- await strategy.disconnect(payload)
373
- } else {
374
- // Disconnect from all if no specific network type
375
- await Promise.all([
376
- walletFactory.getStrategy('solana').disconnect(payload),
377
- walletFactory.getStrategy('evm').disconnect(payload)
378
- ])
379
- }
380
-
381
- sendMessageToIframe({
382
- type: 'SDKdisconnectSuccess'
383
- })
384
- } catch (error) {
385
- console.error('Error during disconnect:', error)
386
- handleErrorAndSendMessage(error as Error, 'SDKdisconnectSuccess')
387
- }
388
- break
389
- }
390
- case 'walletBrowserSolanaTransferWithInstructionsRequest': {
391
- const payload = event.data
392
- .payload as SolanaTransferWithInstructionsPayload
393
-
394
- try {
395
- const networkType = 'solana' as NetworkType
396
- const strategy = walletFactory.getStrategy(networkType)
397
- const result = await strategy.sendTransactionWithInstructions(payload)
398
- sendMessageToIframe({
399
- type: 'SDKnonNativeTransferCompleted',
400
- payload: {
401
- txHash: result
402
- }
403
- })
404
- } catch (error) {
405
- handleErrorAndSendMessage(error as Error, 'SDKdisconnectSuccess')
406
- }
407
- break
408
- }
409
- }
410
- }
411
-
412
- async function eventsListener(
413
- event: MessageEvent<
414
- LinkEventType | WalletBrowserEventType | { type: EventType }
415
- >
416
- ) {
417
- if (event.origin !== targetOrigin && event.origin !== linkTokenOrigin) {
418
- console.warn('Received message from untrusted origin:', event.origin)
419
- } else if (isWalletBrowserEventTypeKey(event.data.type)) {
420
- await handleWalletBrowserEvent(
421
- event as MessageEvent<WalletBrowserEventType>
422
- )
423
- } else {
424
- await handleLinkEvent(event as MessageEvent<{ type: EventType }>)
425
- }
426
- }
427
-
428
- function handleErrorAndSendMessage(error: Error, messageType: string) {
429
- sendMessageToIframe({
430
- type: messageType,
431
- payload: {
432
- error: error
433
- }
434
- })
435
- }
436
-
437
- export const createLink = (options: LinkOptions): Link => {
438
- const openLink = (linkToken: string, customIframeId?: string) => {
439
- if (!linkToken) {
440
- options?.onExit?.('Invalid link token!')
441
- return
442
- }
443
-
444
- currentOptions = options
445
- let linkUrl = window.atob(linkToken)
446
- linkUrl = addLanguage(linkUrl, currentOptions?.language)
447
- linkTokenOrigin = new URL(linkUrl).origin
448
- window.removeEventListener('message', eventsListener)
449
- if (customIframeId) {
450
- const iframe = document.getElementById(
451
- customIframeId
452
- ) as HTMLIFrameElement
453
- if (iframe) {
454
- iframe.allow = 'clipboard-read *; clipboard-write *'
455
- iframe.src = linkUrl
456
- currentIframeId = customIframeId
457
- } else {
458
- console.warn(`Mesh SDK: No iframe found with id ${customIframeId}`)
459
- }
460
- } else {
461
- currentIframeId = iframeId
462
- addPopup(linkUrl)
463
- }
464
-
465
- window.addEventListener('message', eventsListener)
466
-
467
- targetOrigin = window.location.origin
468
- }
469
-
470
- const closeLink = () => {
471
- removePopup()
472
- window.removeEventListener('message', eventsListener)
473
- options.onExit?.()
474
- }
475
-
476
- return {
477
- openLink: openLink,
478
- closeLink: closeLink
479
- }
480
- }
481
-
482
- function addLanguage(linkUrl: string, language: string | undefined) {
483
- if (language === 'system') {
484
- language =
485
- typeof navigator !== 'undefined' && navigator.language
486
- ? encodeURIComponent(navigator.language)
487
- : undefined
488
- }
489
-
490
- return `${linkUrl}${linkUrl.includes('?') ? '&' : '?'}lng=${language || 'en'}`
491
- }
package/src/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './utils/types'
2
- export * from './utils/event-types'
3
- export { createLink } from './Link'
@@ -1,89 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`Popup tests addPopup should add correct popup 1`] = `
4
- <style
5
- id="mesh-link-popup__styles"
6
- >
7
-
8
- body {
9
- position: fixed;
10
- left: 0;
11
- top: 0;
12
- bottom: 0;
13
- right: 0;
14
- overflow: hidden;
15
- }
16
-
17
- #mesh-link-popup {
18
- all: unset;
19
- position: fixed;
20
- left: 0;
21
- top: 0;
22
- bottom: 0;
23
- right: 0;
24
- display: flex;
25
- flex-direction: column;
26
- align-items: center;
27
- justify-content: center;
28
- z-index: 10000;
29
- }
30
-
31
- #mesh-link-popup__backdrop {
32
- position: absolute;
33
- left: 0;
34
- top: 0;
35
- bottom: 0;
36
- right: 0;
37
- z-index: 10000;
38
- background: black;
39
- opacity: 0.8;
40
- }
41
-
42
- #mesh-link-popup__popup-content {
43
- position: absolute;
44
- height: 80%;
45
- max-height: 710px;
46
- min-height: 685px;
47
- margin: auto;
48
- z-index: 10001;
49
- width: 30%;
50
- max-width: 430px;
51
- min-width: 380px;
52
- display: flex;
53
- flex-direction: column;
54
- border-radius: 2px;
55
- flex-grow: 1;
56
- }
57
-
58
- #mesh-link-popup__popup-content iframe {
59
- border: none;
60
- width: 100%;
61
- flex-grow: 1;
62
- border-radius: 2px;
63
- }
64
-
65
- @media only screen and (max-width: 768px) {
66
- #mesh-link-popup__popup-content {
67
- height: 100vh;
68
- width: 100vw;
69
- max-width: 100%;
70
- min-width: 100%;
71
- max-height: 100%;
72
- min-height: 100%;
73
- border-radius: 0px;
74
- }
75
-
76
- #mesh-link-popup__popup-content iframe {
77
- border-radius: 0px;
78
- }
79
- }
80
-
81
- @media only screen and (max-height: 710px) {
82
- #mesh-link-popup__popup-content {
83
- max-height: 100%;
84
- min-height: 100%;
85
- }
86
- }
87
-
88
- </style>
89
- `;
@@ -1,120 +0,0 @@
1
- import { ChainConfig } from './types'
2
-
3
- // Chain configurations
4
- const chainConfigs: Record<number, ChainConfig> = {
5
- 43114: {
6
- // Avalanche
7
- name: 'Avalanche',
8
- nativeCurrency: {
9
- decimals: 18,
10
- name: 'Avalanche',
11
- symbol: 'AVAX'
12
- },
13
- rpcUrls: {
14
- default: { http: ['https://avalanche-mainnet.infura.io'] }
15
- },
16
- blockExplorers: {
17
- default: {
18
- name: 'SnowTrace',
19
- url: 'https://snowtrace.io'
20
- }
21
- }
22
- },
23
- 42161: {
24
- // Arbitrum
25
- name: 'Arbitrum One',
26
- nativeCurrency: {
27
- decimals: 18,
28
- name: 'Ether',
29
- symbol: 'ETH'
30
- },
31
- rpcUrls: {
32
- default: { http: ['https://arb1.arbitrum.io/rpc'] }
33
- },
34
- blockExplorers: {
35
- default: {
36
- name: 'Arbiscan',
37
- url: 'https://arbiscan.io'
38
- }
39
- }
40
- },
41
- 10: {
42
- // Optimism
43
- name: 'OP Mainnet',
44
- nativeCurrency: {
45
- decimals: 18,
46
- name: 'Ether',
47
- symbol: 'ETH'
48
- },
49
- rpcUrls: {
50
- default: { http: ['https://mainnet.optimism.io'] }
51
- },
52
- blockExplorers: {
53
- default: {
54
- name: 'Optimism Explorer',
55
- url: 'https://optimistic.etherscan.io'
56
- }
57
- }
58
- },
59
- 8453: {
60
- // Base
61
- name: 'Base',
62
- nativeCurrency: {
63
- decimals: 18,
64
- name: 'Ether',
65
- symbol: 'ETH'
66
- },
67
- rpcUrls: {
68
- default: { http: ['https://mainnet.base.org'] }
69
- },
70
- blockExplorers: {
71
- default: {
72
- name: 'Basescan',
73
- url: 'https://basescan.org'
74
- }
75
- }
76
- },
77
- 137: {
78
- // Polygon
79
- name: 'Polygon',
80
- nativeCurrency: {
81
- decimals: 18,
82
- name: 'MATIC',
83
- symbol: 'MATIC'
84
- },
85
- rpcUrls: {
86
- default: { http: ['https://polygon-rpc.com'] }
87
- },
88
- blockExplorers: {
89
- default: {
90
- name: 'PolygonScan',
91
- url: 'https://polygonscan.com'
92
- }
93
- }
94
- },
95
- 56: {
96
- // BSC
97
- name: 'BNB Smart Chain',
98
- nativeCurrency: {
99
- decimals: 18,
100
- name: 'BNB',
101
- symbol: 'BNB'
102
- },
103
- rpcUrls: {
104
- default: { http: ['https://rpc.ankr.com/bsc'] }
105
- },
106
- blockExplorers: {
107
- default: {
108
- name: 'BscScan',
109
- url: 'https://bscscan.com'
110
- }
111
- }
112
- }
113
- }
114
-
115
- // Helper function to get chain configuration
116
- export const getChainConfiguration = (
117
- chainId: number
118
- ): ChainConfig | undefined => {
119
- return chainConfigs[chainId]
120
- }