@meshconnect/uwc-bridge-parent 0.0.3 → 1.0.1
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/BridgeParent.d.ts +10 -2
- package/dist/BridgeParent.d.ts.map +1 -1
- package/dist/BridgeParent.js +134 -24
- package/dist/BridgeParent.js.map +1 -1
- package/package.json +2 -2
- package/src/BridgeParent.ts +186 -30
package/dist/BridgeParent.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Transaction } from '@solana/web3.js';
|
|
2
|
+
import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base';
|
|
2
3
|
export interface EthereumProvider {
|
|
3
4
|
request: (args: {
|
|
4
5
|
method: string;
|
|
@@ -7,12 +8,18 @@ export interface EthereumProvider {
|
|
|
7
8
|
on?: (event: string, handler: (...args: any[]) => void) => void;
|
|
8
9
|
removeListener?: (event: string, handler: (...args: any[]) => void) => void;
|
|
9
10
|
}
|
|
11
|
+
interface ExtendedStandardWalletAdapter extends StandardWalletAdapter {
|
|
12
|
+
customFunctions: ('sendSerializedTransaction' | 'signSerializedTransaction' | 'signAllSerializedTransactions')[];
|
|
13
|
+
sendSerializedTransaction: (transaction: ArrayBufferLike, rpcUrl: string) => Promise<string>;
|
|
14
|
+
signSerializedTransaction: (transaction: ArrayBufferLike) => Promise<Error | Transaction>;
|
|
15
|
+
signAllSerializedTransactions: (transactions: ArrayBufferLike[]) => Promise<Error | Transaction[]>;
|
|
16
|
+
}
|
|
10
17
|
export interface WalletStandardInfo {
|
|
11
18
|
uuid: string;
|
|
12
19
|
name: string;
|
|
13
20
|
chains: string[];
|
|
14
21
|
features: string[];
|
|
15
|
-
adapter:
|
|
22
|
+
adapter: ExtendedStandardWalletAdapter | undefined;
|
|
16
23
|
}
|
|
17
24
|
export interface EIP6963ProviderInfo {
|
|
18
25
|
uuid: string;
|
|
@@ -58,4 +65,5 @@ export declare class BridgeParent {
|
|
|
58
65
|
private generateWalletId;
|
|
59
66
|
destroy(): void;
|
|
60
67
|
}
|
|
68
|
+
export {};
|
|
61
69
|
//# sourceMappingURL=BridgeParent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeParent.d.ts","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BridgeParent.d.ts","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,WAAW,EAAwB,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAA;AAEnF,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAEvE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;IAE/D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAA;CAC5E;AAED,UAAU,6BAA8B,SAAQ,qBAAqB;IACnE,eAAe,EAAE,CACb,2BAA2B,GAC3B,2BAA2B,GAC3B,+BAA+B,CAClC,EAAE,CAAA;IACH,yBAAyB,EAAE,CACzB,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,MAAM,CAAC,CAAA;IACpB,yBAAyB,EAAE,CACzB,WAAW,EAAE,eAAe,KACzB,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,CAAA;IACjC,6BAA6B,EAAE,CAC7B,YAAY,EAAE,eAAe,EAAE,KAC5B,OAAO,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,6BAA6B,GAAG,SAAS,CAAA;CACnD;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,4BAA6B,SAAQ,WAAW;IAC/D,IAAI,EAAE,0BAA0B,CAAA;IAChC,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AAED,MAAM,WAAW,2BAA4B,SAAQ,KAAK;IACxD,IAAI,EAAE,yBAAyB,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,cAAc,EAAE,CAAA;IAChC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,qBAAqB,EAAE,kBAAkB,EAAE,CAAA;IAC3C,0BAA0B,EAAE,OAAO,CAAA;CACpC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAgC;gBAEpC,MAAM,EAAE,iBAAiB;YASvB,oBAAoB;IA2BlC,WAAW,IAAI,OAAO;YAIR,eAAe;IA2C7B,OAAO,CAAC,gBAAgB;IAoMxB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,gBAAgB;IAKjB,OAAO,IAAI,IAAI;CAYvB"}
|
package/dist/BridgeParent.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as Comlink from 'comlink';
|
|
2
2
|
import { getWallets } from '@wallet-standard/app';
|
|
3
3
|
import { isWalletAdapterCompatibleStandardWallet } from '@solana/wallet-adapter-base';
|
|
4
|
+
import { Connection, Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
4
5
|
import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base';
|
|
5
|
-
import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-wallets';
|
|
6
6
|
export class BridgeParent {
|
|
7
7
|
iframe;
|
|
8
8
|
handshakeComplete = false;
|
|
@@ -86,34 +86,144 @@ export class BridgeParent {
|
|
|
86
86
|
name: wallet.name,
|
|
87
87
|
chains: (wallet.chains || []),
|
|
88
88
|
features: Object.keys(wallet.features),
|
|
89
|
+
// Expect a TS error, as not all adapter properties are implemented
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
91
|
+
// @ts-ignore
|
|
89
92
|
adapter: adapter
|
|
93
|
+
? {
|
|
94
|
+
name: adapter.name,
|
|
95
|
+
url: adapter.url,
|
|
96
|
+
icon: adapter.icon,
|
|
97
|
+
readyState: adapter.readyState,
|
|
98
|
+
publicKey: Comlink.proxy({
|
|
99
|
+
get value() {
|
|
100
|
+
return adapter.publicKey;
|
|
101
|
+
},
|
|
102
|
+
toBase58: async () => {
|
|
103
|
+
return adapter.publicKey?.toBase58();
|
|
104
|
+
},
|
|
105
|
+
toJSON: async () => {
|
|
106
|
+
return adapter.publicKey?.toJSON();
|
|
107
|
+
},
|
|
108
|
+
toBytes: async () => {
|
|
109
|
+
return adapter.publicKey?.toBytes();
|
|
110
|
+
},
|
|
111
|
+
toBuffer: async () => {
|
|
112
|
+
return adapter.publicKey?.toBuffer();
|
|
113
|
+
},
|
|
114
|
+
toString: async () => {
|
|
115
|
+
return adapter.publicKey?.toString();
|
|
116
|
+
}
|
|
117
|
+
}),
|
|
118
|
+
connecting: adapter.connecting,
|
|
119
|
+
connected: adapter.connected,
|
|
120
|
+
supportedTransactionVersions: adapter.supportedTransactionVersions,
|
|
121
|
+
wallet: adapter.wallet,
|
|
122
|
+
standard: adapter.standard,
|
|
123
|
+
destroy: async () => await adapter.destroy(),
|
|
124
|
+
autoConnect: async () => await adapter.autoConnect(),
|
|
125
|
+
connect: async () => await adapter.connect(),
|
|
126
|
+
disconnect: async () => await adapter.disconnect(),
|
|
127
|
+
sendTransaction: async (transaction, connection, options) => await adapter.sendTransaction(transaction, connection, options),
|
|
128
|
+
signTransaction: async (transaction) => {
|
|
129
|
+
return adapter.signTransaction !== undefined
|
|
130
|
+
? await adapter.signTransaction(transaction)
|
|
131
|
+
: new Error('Adapter does not support signTransaction');
|
|
132
|
+
},
|
|
133
|
+
signAllTransactions: async (transactions) => {
|
|
134
|
+
return adapter.signAllTransactions !== undefined
|
|
135
|
+
? await adapter.signAllTransactions(transactions)
|
|
136
|
+
: new Error('Adapter does not support signAllTransactions');
|
|
137
|
+
},
|
|
138
|
+
signMessage: async (message) => {
|
|
139
|
+
return adapter.signMessage !== undefined
|
|
140
|
+
? await adapter.signMessage(message)
|
|
141
|
+
: new Error('Adapter does not support signMessage');
|
|
142
|
+
},
|
|
143
|
+
signIn: async (input) => {
|
|
144
|
+
return adapter.signIn !== undefined
|
|
145
|
+
? await adapter.signIn(input)
|
|
146
|
+
: new Error('Adapter does not support signIn');
|
|
147
|
+
},
|
|
148
|
+
customFunctions: [
|
|
149
|
+
'sendSerializedTransaction',
|
|
150
|
+
'signAllSerializedTransactions',
|
|
151
|
+
'signSerializedTransaction'
|
|
152
|
+
],
|
|
153
|
+
sendSerializedTransaction: async (transaction, rpcUrl) => {
|
|
154
|
+
const connection = new Connection(rpcUrl);
|
|
155
|
+
const uint8Array = new Uint8Array(transaction);
|
|
156
|
+
// Try to deserialize as VersionedTransaction first
|
|
157
|
+
let deserializedTx;
|
|
158
|
+
try {
|
|
159
|
+
deserializedTx =
|
|
160
|
+
VersionedTransaction.deserialize(uint8Array);
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// If that fails, try as legacy Transaction
|
|
164
|
+
try {
|
|
165
|
+
deserializedTx = Transaction.from(uint8Array);
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
throw new Error('Failed to deserialize transaction as either versioned or legacy format');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return await adapter.sendTransaction(deserializedTx, connection);
|
|
172
|
+
},
|
|
173
|
+
signSerializedTransaction: async (transaction) => {
|
|
174
|
+
if (adapter.signTransaction === undefined) {
|
|
175
|
+
return new Error('Adapter does not support signTransaction');
|
|
176
|
+
}
|
|
177
|
+
const uint8Array = new Uint8Array(transaction);
|
|
178
|
+
// Try to deserialize as VersionedTransaction first
|
|
179
|
+
let deserializedTx;
|
|
180
|
+
try {
|
|
181
|
+
deserializedTx =
|
|
182
|
+
VersionedTransaction.deserialize(uint8Array);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// If that fails, try as legacy Transaction
|
|
186
|
+
try {
|
|
187
|
+
deserializedTx = Transaction.from(uint8Array);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return new Error('Failed to deserialize transaction as either versioned or legacy format');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return await adapter.signTransaction(deserializedTx);
|
|
194
|
+
},
|
|
195
|
+
signAllSerializedTransactions: async (transactions) => {
|
|
196
|
+
if (adapter.signAllTransactions === undefined) {
|
|
197
|
+
return new Error('Adapter does not support signAllTransactions');
|
|
198
|
+
}
|
|
199
|
+
const deserializedTransactions = [];
|
|
200
|
+
for (const transaction of transactions) {
|
|
201
|
+
const uint8Array = new Uint8Array(transaction);
|
|
202
|
+
// Try to deserialize as VersionedTransaction first
|
|
203
|
+
let deserializedTx;
|
|
204
|
+
try {
|
|
205
|
+
deserializedTx =
|
|
206
|
+
VersionedTransaction.deserialize(uint8Array);
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
// If that fails, try as legacy Transaction
|
|
210
|
+
try {
|
|
211
|
+
deserializedTx = Transaction.from(uint8Array);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
return new Error('Failed to deserialize one or more transactions');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
deserializedTransactions.push(deserializedTx);
|
|
218
|
+
}
|
|
219
|
+
return await adapter.signAllTransactions(deserializedTransactions);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
: undefined
|
|
90
223
|
});
|
|
91
224
|
walletNames.add(wallet.name);
|
|
92
225
|
}
|
|
93
226
|
}
|
|
94
|
-
// Initialize traditional wallet adapters - Only import CBW for now, as it's not using Wallet Standard
|
|
95
|
-
const walletAdapters = [new CoinbaseWalletAdapter()];
|
|
96
|
-
// Add traditional wallet adapters (but skip duplicates)
|
|
97
|
-
for (const adapter of walletAdapters) {
|
|
98
|
-
if (walletNames.has(adapter.name)) {
|
|
99
|
-
// Skipping duplicate wallet already detected via Wallet Standard
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
const readyState = adapter.readyState;
|
|
103
|
-
const isDetected = readyState === 'Installed' || readyState === 'Loadable';
|
|
104
|
-
// Only add if installed
|
|
105
|
-
if (isDetected) {
|
|
106
|
-
solanaWallets.push({
|
|
107
|
-
uuid: `${adapter.name}-traditional`
|
|
108
|
-
.toLowerCase()
|
|
109
|
-
.replace(/\s+/g, '-'),
|
|
110
|
-
name: adapter.name,
|
|
111
|
-
chains: ['solana:mainnet'],
|
|
112
|
-
features: [],
|
|
113
|
-
adapter: adapter
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
227
|
return solanaWallets;
|
|
118
228
|
}
|
|
119
229
|
isSolanaWallet(wallet) {
|
package/dist/BridgeParent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BridgeParent.js","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"BridgeParent.js","sourceRoot":"","sources":["../src/BridgeParent.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshconnect/uwc-bridge-parent",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Parent window bridge for Universal Wallet Connector",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@solana/wallet-adapter-base": "^0.9.23",
|
|
15
|
-
"@solana/wallet-adapter-wallets": "^0.19.37",
|
|
16
15
|
"@solana/wallet-standard-wallet-adapter-base": "^1.1.4",
|
|
16
|
+
"@solana/web3.js": "^1.98.4",
|
|
17
17
|
"@wallet-standard/app": "^1.1.0",
|
|
18
18
|
"@wallet-standard/base": "^1.1.0",
|
|
19
19
|
"comlink": "^4.4.1"
|
package/src/BridgeParent.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import * as Comlink from 'comlink'
|
|
2
|
-
import type { WalletAdapter } from '@solana/wallet-adapter-base'
|
|
3
2
|
import type { Wallet } from '@wallet-standard/base'
|
|
4
3
|
import { getWallets } from '@wallet-standard/app'
|
|
5
4
|
import { isWalletAdapterCompatibleStandardWallet } from '@solana/wallet-adapter-base'
|
|
5
|
+
import { Connection, Transaction, VersionedTransaction } from '@solana/web3.js'
|
|
6
6
|
import { StandardWalletAdapter } from '@solana/wallet-standard-wallet-adapter-base'
|
|
7
|
-
import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-wallets'
|
|
8
7
|
|
|
9
8
|
export interface EthereumProvider {
|
|
10
9
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -15,12 +14,30 @@ export interface EthereumProvider {
|
|
|
15
14
|
removeListener?: (event: string, handler: (...args: any[]) => void) => void
|
|
16
15
|
}
|
|
17
16
|
|
|
17
|
+
interface ExtendedStandardWalletAdapter extends StandardWalletAdapter {
|
|
18
|
+
customFunctions: (
|
|
19
|
+
| 'sendSerializedTransaction'
|
|
20
|
+
| 'signSerializedTransaction'
|
|
21
|
+
| 'signAllSerializedTransactions'
|
|
22
|
+
)[]
|
|
23
|
+
sendSerializedTransaction: (
|
|
24
|
+
transaction: ArrayBufferLike,
|
|
25
|
+
rpcUrl: string
|
|
26
|
+
) => Promise<string>
|
|
27
|
+
signSerializedTransaction: (
|
|
28
|
+
transaction: ArrayBufferLike
|
|
29
|
+
) => Promise<Error | Transaction>
|
|
30
|
+
signAllSerializedTransactions: (
|
|
31
|
+
transactions: ArrayBufferLike[]
|
|
32
|
+
) => Promise<Error | Transaction[]>
|
|
33
|
+
}
|
|
34
|
+
|
|
18
35
|
export interface WalletStandardInfo {
|
|
19
36
|
uuid: string
|
|
20
37
|
name: string
|
|
21
38
|
chains: string[]
|
|
22
39
|
features: string[]
|
|
23
|
-
adapter:
|
|
40
|
+
adapter: ExtendedStandardWalletAdapter | undefined
|
|
24
41
|
}
|
|
25
42
|
|
|
26
43
|
export interface EIP6963ProviderInfo {
|
|
@@ -170,38 +187,177 @@ export class BridgeParent {
|
|
|
170
187
|
name: wallet.name,
|
|
171
188
|
chains: (wallet.chains || []) as string[],
|
|
172
189
|
features: Object.keys(wallet.features),
|
|
190
|
+
// Expect a TS error, as not all adapter properties are implemented
|
|
191
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
192
|
+
// @ts-ignore
|
|
173
193
|
adapter: adapter
|
|
194
|
+
? {
|
|
195
|
+
name: adapter.name,
|
|
196
|
+
url: adapter.url,
|
|
197
|
+
icon: adapter.icon,
|
|
198
|
+
readyState: adapter.readyState,
|
|
199
|
+
publicKey: Comlink.proxy({
|
|
200
|
+
get value() {
|
|
201
|
+
return adapter.publicKey
|
|
202
|
+
},
|
|
203
|
+
toBase58: async () => {
|
|
204
|
+
return adapter.publicKey?.toBase58()
|
|
205
|
+
},
|
|
206
|
+
toJSON: async () => {
|
|
207
|
+
return adapter.publicKey?.toJSON()
|
|
208
|
+
},
|
|
209
|
+
toBytes: async () => {
|
|
210
|
+
return adapter.publicKey?.toBytes()
|
|
211
|
+
},
|
|
212
|
+
toBuffer: async () => {
|
|
213
|
+
return adapter.publicKey?.toBuffer()
|
|
214
|
+
},
|
|
215
|
+
toString: async () => {
|
|
216
|
+
return adapter.publicKey?.toString()
|
|
217
|
+
}
|
|
218
|
+
}),
|
|
219
|
+
connecting: adapter.connecting,
|
|
220
|
+
connected: adapter.connected,
|
|
221
|
+
supportedTransactionVersions:
|
|
222
|
+
adapter.supportedTransactionVersions,
|
|
223
|
+
wallet: adapter.wallet,
|
|
224
|
+
standard: adapter.standard,
|
|
225
|
+
destroy: async () => await adapter.destroy(),
|
|
226
|
+
autoConnect: async () => await adapter.autoConnect(),
|
|
227
|
+
connect: async () => await adapter.connect(),
|
|
228
|
+
disconnect: async () => await adapter.disconnect(),
|
|
229
|
+
sendTransaction: async (transaction, connection, options) =>
|
|
230
|
+
await adapter.sendTransaction(
|
|
231
|
+
transaction,
|
|
232
|
+
connection,
|
|
233
|
+
options
|
|
234
|
+
),
|
|
235
|
+
signTransaction: async transaction => {
|
|
236
|
+
return adapter.signTransaction !== undefined
|
|
237
|
+
? await adapter.signTransaction(transaction)
|
|
238
|
+
: new Error('Adapter does not support signTransaction')
|
|
239
|
+
},
|
|
240
|
+
signAllTransactions: async transactions => {
|
|
241
|
+
return adapter.signAllTransactions !== undefined
|
|
242
|
+
? await adapter.signAllTransactions(transactions)
|
|
243
|
+
: new Error('Adapter does not support signAllTransactions')
|
|
244
|
+
},
|
|
245
|
+
signMessage: async message => {
|
|
246
|
+
return adapter.signMessage !== undefined
|
|
247
|
+
? await adapter.signMessage(message)
|
|
248
|
+
: new Error('Adapter does not support signMessage')
|
|
249
|
+
},
|
|
250
|
+
signIn: async input => {
|
|
251
|
+
return adapter.signIn !== undefined
|
|
252
|
+
? await adapter.signIn(input)
|
|
253
|
+
: new Error('Adapter does not support signIn')
|
|
254
|
+
},
|
|
255
|
+
customFunctions: [
|
|
256
|
+
'sendSerializedTransaction',
|
|
257
|
+
'signAllSerializedTransactions',
|
|
258
|
+
'signSerializedTransaction'
|
|
259
|
+
],
|
|
260
|
+
sendSerializedTransaction: async (
|
|
261
|
+
transaction: ArrayBufferLike,
|
|
262
|
+
rpcUrl: string
|
|
263
|
+
) => {
|
|
264
|
+
const connection = new Connection(rpcUrl)
|
|
265
|
+
const uint8Array = new Uint8Array(transaction)
|
|
266
|
+
|
|
267
|
+
// Try to deserialize as VersionedTransaction first
|
|
268
|
+
let deserializedTx: Transaction | VersionedTransaction
|
|
269
|
+
try {
|
|
270
|
+
deserializedTx =
|
|
271
|
+
VersionedTransaction.deserialize(uint8Array)
|
|
272
|
+
} catch {
|
|
273
|
+
// If that fails, try as legacy Transaction
|
|
274
|
+
try {
|
|
275
|
+
deserializedTx = Transaction.from(uint8Array)
|
|
276
|
+
} catch {
|
|
277
|
+
throw new Error(
|
|
278
|
+
'Failed to deserialize transaction as either versioned or legacy format'
|
|
279
|
+
)
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
return await adapter.sendTransaction(
|
|
284
|
+
deserializedTx,
|
|
285
|
+
connection
|
|
286
|
+
)
|
|
287
|
+
},
|
|
288
|
+
signSerializedTransaction: async (
|
|
289
|
+
transaction: ArrayBufferLike
|
|
290
|
+
) => {
|
|
291
|
+
if (adapter.signTransaction === undefined) {
|
|
292
|
+
return new Error('Adapter does not support signTransaction')
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
const uint8Array = new Uint8Array(transaction)
|
|
296
|
+
|
|
297
|
+
// Try to deserialize as VersionedTransaction first
|
|
298
|
+
let deserializedTx: Transaction | VersionedTransaction
|
|
299
|
+
try {
|
|
300
|
+
deserializedTx =
|
|
301
|
+
VersionedTransaction.deserialize(uint8Array)
|
|
302
|
+
} catch {
|
|
303
|
+
// If that fails, try as legacy Transaction
|
|
304
|
+
try {
|
|
305
|
+
deserializedTx = Transaction.from(uint8Array)
|
|
306
|
+
} catch {
|
|
307
|
+
return new Error(
|
|
308
|
+
'Failed to deserialize transaction as either versioned or legacy format'
|
|
309
|
+
)
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
return await adapter.signTransaction(deserializedTx)
|
|
314
|
+
},
|
|
315
|
+
signAllSerializedTransactions: async (
|
|
316
|
+
transactions: ArrayBufferLike[]
|
|
317
|
+
) => {
|
|
318
|
+
if (adapter.signAllTransactions === undefined) {
|
|
319
|
+
return new Error(
|
|
320
|
+
'Adapter does not support signAllTransactions'
|
|
321
|
+
)
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
const deserializedTransactions: (
|
|
325
|
+
| Transaction
|
|
326
|
+
| VersionedTransaction
|
|
327
|
+
)[] = []
|
|
328
|
+
|
|
329
|
+
for (const transaction of transactions) {
|
|
330
|
+
const uint8Array = new Uint8Array(transaction)
|
|
331
|
+
|
|
332
|
+
// Try to deserialize as VersionedTransaction first
|
|
333
|
+
let deserializedTx: Transaction | VersionedTransaction
|
|
334
|
+
try {
|
|
335
|
+
deserializedTx =
|
|
336
|
+
VersionedTransaction.deserialize(uint8Array)
|
|
337
|
+
} catch {
|
|
338
|
+
// If that fails, try as legacy Transaction
|
|
339
|
+
try {
|
|
340
|
+
deserializedTx = Transaction.from(uint8Array)
|
|
341
|
+
} catch {
|
|
342
|
+
return new Error(
|
|
343
|
+
'Failed to deserialize one or more transactions'
|
|
344
|
+
)
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
deserializedTransactions.push(deserializedTx)
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
return await adapter.signAllTransactions(
|
|
352
|
+
deserializedTransactions
|
|
353
|
+
)
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
: undefined
|
|
174
357
|
})
|
|
175
358
|
walletNames.add(wallet.name)
|
|
176
359
|
}
|
|
177
360
|
}
|
|
178
|
-
|
|
179
|
-
// Initialize traditional wallet adapters - Only import CBW for now, as it's not using Wallet Standard
|
|
180
|
-
const walletAdapters = [new CoinbaseWalletAdapter()]
|
|
181
|
-
|
|
182
|
-
// Add traditional wallet adapters (but skip duplicates)
|
|
183
|
-
for (const adapter of walletAdapters) {
|
|
184
|
-
if (walletNames.has(adapter.name)) {
|
|
185
|
-
// Skipping duplicate wallet already detected via Wallet Standard
|
|
186
|
-
continue
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
const readyState = adapter.readyState
|
|
190
|
-
const isDetected = readyState === 'Installed' || readyState === 'Loadable'
|
|
191
|
-
|
|
192
|
-
// Only add if installed
|
|
193
|
-
if (isDetected) {
|
|
194
|
-
solanaWallets.push({
|
|
195
|
-
uuid: `${adapter.name}-traditional`
|
|
196
|
-
.toLowerCase()
|
|
197
|
-
.replace(/\s+/g, '-'),
|
|
198
|
-
name: adapter.name,
|
|
199
|
-
chains: ['solana:mainnet'],
|
|
200
|
-
features: [],
|
|
201
|
-
adapter: adapter
|
|
202
|
-
})
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
361
|
return solanaWallets
|
|
206
362
|
}
|
|
207
363
|
|