@meshconnect/uwc-injected-connector 0.2.7 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/injected-connector.js +2 -2
- package/dist/injected-connector.js.map +1 -1
- package/dist/services/ethereum-transaction-service.d.ts.map +1 -1
- package/dist/services/ethereum-transaction-service.js +11 -20
- package/dist/services/ethereum-transaction-service.js.map +1 -1
- package/dist/services/signature-service.d.ts +2 -2
- package/dist/services/signature-service.d.ts.map +1 -1
- package/dist/services/signature-service.js +3 -10
- package/dist/services/signature-service.js.map +1 -1
- package/dist/services/solana/solana-transaction-service.d.ts +14 -2
- package/dist/services/solana/solana-transaction-service.d.ts.map +1 -1
- package/dist/services/solana/solana-transaction-service.js +87 -47
- package/dist/services/solana/solana-transaction-service.js.map +1 -1
- package/dist/services/solana/solana-wallet-service.d.ts +6 -7
- package/dist/services/solana/solana-wallet-service.d.ts.map +1 -1
- package/dist/services/solana/solana-wallet-service.js +13 -15
- package/dist/services/solana/solana-wallet-service.js.map +1 -1
- package/dist/services/transaction-service.d.ts +2 -2
- package/dist/services/transaction-service.d.ts.map +1 -1
- package/dist/services/transaction-service.js.map +1 -1
- package/dist/wallet-standard-discovery.d.ts +11 -9
- package/dist/wallet-standard-discovery.d.ts.map +1 -1
- package/dist/wallet-standard-discovery.js +47 -23
- package/dist/wallet-standard-discovery.js.map +1 -1
- package/package.json +2 -2
- package/src/injected-connector.ts +2 -2
- package/src/services/signature-service.ts +5 -17
- package/src/services/solana/solana-transaction-service.ts +121 -60
- package/src/services/solana/solana-wallet-service.ts +21 -23
- package/src/services/transaction-service.ts +3 -3
- package/src/wallet-standard-discovery.ts +77 -32
|
@@ -7,28 +7,97 @@
|
|
|
7
7
|
import type { Wallet } from '@wallet-standard/base'
|
|
8
8
|
import { getWallets } from '@wallet-standard/app'
|
|
9
9
|
import { isWalletAdapterCompatibleStandardWallet } from '@solana/wallet-adapter-base'
|
|
10
|
-
import type { WalletAdapter } from '@solana/wallet-adapter-base'
|
|
11
10
|
import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base'
|
|
12
|
-
import {
|
|
11
|
+
import type { Transaction } from '@solana/web3.js'
|
|
12
|
+
|
|
13
|
+
export interface ExtendedStandardWalletAdapter extends StandardWalletAdapter {
|
|
14
|
+
customFunctions: (
|
|
15
|
+
| 'sendSerializedTransaction'
|
|
16
|
+
| 'signSerializedTransaction'
|
|
17
|
+
| 'signAllSerializedTransactions'
|
|
18
|
+
)[]
|
|
19
|
+
sendSerializedTransaction: (
|
|
20
|
+
transaction: unknown,
|
|
21
|
+
rpcUrl: string
|
|
22
|
+
) => Promise<string>
|
|
23
|
+
signSerializedTransaction: (
|
|
24
|
+
transaction: unknown
|
|
25
|
+
) => Promise<Error | Transaction>
|
|
26
|
+
signAllSerializedTransactions: (
|
|
27
|
+
transactions: unknown[]
|
|
28
|
+
) => Promise<Error | Transaction[]>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type SolanaAdapter =
|
|
32
|
+
| ExtendedStandardWalletAdapter
|
|
33
|
+
| StandardWalletAdapter
|
|
13
34
|
|
|
14
35
|
export interface WalletStandardInfo {
|
|
15
36
|
uuid: string
|
|
16
37
|
name: string
|
|
17
38
|
chains: string[]
|
|
18
39
|
features: string[]
|
|
19
|
-
adapter:
|
|
40
|
+
adapter: SolanaAdapter | undefined
|
|
20
41
|
}
|
|
21
42
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Polls for bridge wallets when UWCBridgeInitialized is true
|
|
45
|
+
* @returns Promise that resolves to an array of detected wallets from the bridge
|
|
46
|
+
*/
|
|
47
|
+
async function pollForBridgeWallets(): Promise<WalletStandardInfo[]> {
|
|
48
|
+
const pollInterval = 100 // Poll every 100ms
|
|
49
|
+
const maxPollTime = 3000 // Poll for maximum 3 seconds
|
|
50
|
+
const startTime = Date.now()
|
|
51
|
+
|
|
52
|
+
return new Promise(resolve => {
|
|
53
|
+
const poll = () => {
|
|
54
|
+
// Check if we've exceeded the max poll time
|
|
55
|
+
if (Date.now() - startTime > maxPollTime) {
|
|
56
|
+
resolve([])
|
|
57
|
+
return
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Check if window.walletStandardWallets is available
|
|
61
|
+
if (
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
63
|
+
// @ts-ignore - window.eip6963Wallets is set by the bridge
|
|
64
|
+
window.walletStandardWallets &&
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
66
|
+
// @ts-ignore - window.eip6963Wallets is set by the bridge
|
|
67
|
+
Array.isArray(window.walletStandardWallets)
|
|
68
|
+
) {
|
|
69
|
+
const bridgeWallets =
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
71
|
+
// @ts-ignore
|
|
72
|
+
window.walletStandardWallets as WalletStandardInfo[]
|
|
73
|
+
resolve(bridgeWallets)
|
|
74
|
+
return
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Continue polling
|
|
78
|
+
setTimeout(poll, pollInterval)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Start polling
|
|
82
|
+
poll()
|
|
83
|
+
})
|
|
26
84
|
}
|
|
27
85
|
|
|
28
86
|
/**
|
|
29
87
|
* Gets all available Solana wallets using Wallet Standard
|
|
30
88
|
*/
|
|
31
|
-
export function getSolanaWallets(): WalletStandardInfo[] {
|
|
89
|
+
export async function getSolanaWallets(): Promise<WalletStandardInfo[]> {
|
|
90
|
+
// UWCBridgeChildInitialized is only initialized if app runs in an iframe. We can skip checking for bridge proxy providers when it's not necessary.
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
92
|
+
// @ts-ignore - window.UWCBridgeInitialized is set by the bridge
|
|
93
|
+
if (window.UWCBridgeChildInitialized === true) {
|
|
94
|
+
const wallets = await pollForBridgeWallets()
|
|
95
|
+
|
|
96
|
+
if (wallets.length > 0) {
|
|
97
|
+
return wallets
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
32
101
|
const { get } = getWallets()
|
|
33
102
|
const wallets = get()
|
|
34
103
|
|
|
@@ -56,30 +125,6 @@ export function getSolanaWallets(): WalletStandardInfo[] {
|
|
|
56
125
|
}
|
|
57
126
|
}
|
|
58
127
|
|
|
59
|
-
// Initialize traditional wallet adapters - Only import CBW for now, as it's not using Wallet Standard
|
|
60
|
-
const walletAdapters = [new CoinbaseWalletAdapter()]
|
|
61
|
-
|
|
62
|
-
// Add traditional wallet adapters (but skip duplicates)
|
|
63
|
-
for (const adapter of walletAdapters) {
|
|
64
|
-
if (walletNames.has(adapter.name)) {
|
|
65
|
-
// Skipping duplicate wallet already detected via Wallet Standard
|
|
66
|
-
continue
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const readyState = adapter.readyState
|
|
70
|
-
const isDetected = readyState === 'Installed' || readyState === 'Loadable'
|
|
71
|
-
|
|
72
|
-
// Only add if installed
|
|
73
|
-
if (isDetected) {
|
|
74
|
-
solanaWallets.push({
|
|
75
|
-
uuid: `${adapter.name}-traditional`.toLowerCase().replace(/\s+/g, '-'),
|
|
76
|
-
name: adapter.name,
|
|
77
|
-
chains: ['solana:mainnet'],
|
|
78
|
-
features: [],
|
|
79
|
-
adapter: adapter
|
|
80
|
-
})
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
128
|
return solanaWallets
|
|
84
129
|
}
|
|
85
130
|
|