@reown/appkit-adapter-solana 1.6.5 → 1.6.6-basic-test.1.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 (54) hide show
  1. package/dist/esm/src/providers/WalletConnectProvider.js +222 -0
  2. package/dist/esm/src/providers/WalletConnectProvider.js.map +1 -0
  3. package/dist/esm/src/tests/AuthProvider.test.js +112 -0
  4. package/dist/esm/src/tests/AuthProvider.test.js.map +1 -0
  5. package/dist/esm/src/tests/GenericProvider.test.js +110 -0
  6. package/dist/esm/src/tests/GenericProvider.test.js.map +1 -0
  7. package/dist/esm/src/tests/WalletConnectProvider.test.js +336 -0
  8. package/dist/esm/src/tests/WalletConnectProvider.test.js.map +1 -0
  9. package/dist/esm/src/tests/WalletStandardProvider.test.js +117 -0
  10. package/dist/esm/src/tests/WalletStandardProvider.test.js.map +1 -0
  11. package/dist/esm/src/tests/client.test.js +216 -0
  12. package/dist/esm/src/tests/client.test.js.map +1 -0
  13. package/dist/esm/src/tests/createSendTransaction.test.js +37 -0
  14. package/dist/esm/src/tests/createSendTransaction.test.js.map +1 -0
  15. package/dist/esm/src/tests/mocks/AppKit.js +62 -0
  16. package/dist/esm/src/tests/mocks/AppKit.js.map +1 -0
  17. package/dist/esm/src/tests/mocks/AuthConnector.js +29 -0
  18. package/dist/esm/src/tests/mocks/AuthConnector.js.map +1 -0
  19. package/dist/esm/src/tests/mocks/CoinbaseWallet.js +15 -0
  20. package/dist/esm/src/tests/mocks/CoinbaseWallet.js.map +1 -0
  21. package/dist/esm/src/tests/mocks/Connection.js +12 -0
  22. package/dist/esm/src/tests/mocks/Connection.js.map +1 -0
  23. package/dist/esm/src/tests/mocks/Options.js +17 -0
  24. package/dist/esm/src/tests/mocks/Options.js.map +1 -0
  25. package/dist/esm/src/tests/mocks/Transaction.js +27 -0
  26. package/dist/esm/src/tests/mocks/Transaction.js.map +1 -0
  27. package/dist/esm/src/tests/mocks/UniversalProvider.js +111 -0
  28. package/dist/esm/src/tests/mocks/UniversalProvider.js.map +1 -0
  29. package/dist/esm/src/tests/mocks/W3mFrameProvider.js +42 -0
  30. package/dist/esm/src/tests/mocks/W3mFrameProvider.js.map +1 -0
  31. package/dist/esm/src/tests/mocks/WalletStandard.js +70 -0
  32. package/dist/esm/src/tests/mocks/WalletStandard.js.map +1 -0
  33. package/dist/esm/src/tests/util/TestConstants.js +17 -0
  34. package/dist/esm/src/tests/util/TestConstants.js.map +1 -0
  35. package/dist/esm/src/tests/withSolanaNamespace.test.js +11 -0
  36. package/dist/esm/src/tests/withSolanaNamespace.test.js.map +1 -0
  37. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  38. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  39. package/dist/types/src/providers/WalletConnectProvider.d.ts +85 -0
  40. package/dist/types/src/tests/AuthProvider.test.d.ts +1 -0
  41. package/dist/types/src/tests/GenericProvider.test.d.ts +1 -0
  42. package/dist/types/src/tests/WalletConnectProvider.test.d.ts +1 -0
  43. package/dist/types/src/tests/WalletStandardProvider.test.d.ts +1 -0
  44. package/dist/types/src/tests/client.test.d.ts +1 -0
  45. package/dist/types/src/tests/createSendTransaction.test.d.ts +1 -0
  46. package/dist/types/src/tests/mocks/AppKit.d.ts +3 -0
  47. package/dist/types/src/tests/mocks/CoinbaseWallet.d.ts +2 -0
  48. package/dist/types/src/tests/mocks/Options.d.ts +3 -0
  49. package/dist/types/src/tests/mocks/Transaction.d.ts +3 -0
  50. package/dist/types/src/tests/mocks/UniversalProvider.d.ts +4 -0
  51. package/dist/types/src/tests/mocks/W3mFrameProvider.d.ts +3 -0
  52. package/dist/types/src/tests/util/TestConstants.d.ts +17 -0
  53. package/dist/types/src/tests/withSolanaNamespace.test.d.ts +1 -0
  54. package/package.json +7 -11
@@ -0,0 +1,222 @@
1
+ import UniversalProvider from '@walletconnect/universal-provider';
2
+ import { SolConstantsUtil } from '@reown/appkit-utils/solana';
3
+ import { ProviderEventEmitter } from './shared/ProviderEventEmitter.js';
4
+ import base58 from 'bs58';
5
+ import { Connection, PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';
6
+ import { isVersionedTransaction } from '@solana/wallet-adapter-base';
7
+ import { ConstantsUtil, ParseUtil } from '@reown/appkit-common';
8
+ import { withSolanaNamespace } from '../utils/withSolanaNamespace.js';
9
+ import { WcHelpersUtil } from '@reown/appkit';
10
+ import { WalletConnectMethodNotSupportedError } from './shared/Errors.js';
11
+ export class WalletConnectProvider extends ProviderEventEmitter {
12
+ constructor({ provider, chains, getActiveChain }) {
13
+ super();
14
+ this.id = ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;
15
+ this.name = ConstantsUtil.CONNECTOR_ID.WALLET_CONNECT;
16
+ this.type = 'WALLET_CONNECT';
17
+ this.icon = 'https://imagedelivery.net/_aTEfDRm7z3tKgu9JhfeKA/05338e12-4f75-4982-4e8a-83c67b826b00/md';
18
+ this.chain = ConstantsUtil.CHAIN.SOLANA;
19
+ this.requestedChains = chains;
20
+ this.provider = provider;
21
+ this.getActiveChain = getActiveChain;
22
+ if (this.provider.session) {
23
+ this.session = this.provider.session;
24
+ }
25
+ }
26
+ get chains() {
27
+ return this.sessionChains
28
+ .map(sessionChainId => {
29
+ let chainId = sessionChainId;
30
+ if (chainId === SolConstantsUtil.CHAIN_IDS.Deprecated_Mainnet) {
31
+ chainId = SolConstantsUtil.CHAIN_IDS.Mainnet;
32
+ }
33
+ else if (chainId === SolConstantsUtil.CHAIN_IDS.Deprecated_Devnet) {
34
+ chainId = SolConstantsUtil.CHAIN_IDS.Devnet;
35
+ }
36
+ return this.requestedChains.find(chain => withSolanaNamespace(chain.id) === chainId);
37
+ })
38
+ .filter(Boolean);
39
+ }
40
+ get publicKey() {
41
+ const account = this.getAccount(false);
42
+ if (account) {
43
+ return new PublicKey(account.publicKey);
44
+ }
45
+ return undefined;
46
+ }
47
+ async connect() {
48
+ if (this.provider.session?.namespaces['solana']) {
49
+ this.session = this.provider.session;
50
+ }
51
+ else {
52
+ this.provider.on('display_uri', this.onUri);
53
+ this.session = await this.provider.connect({
54
+ optionalNamespaces: WcHelpersUtil.createNamespaces(this.requestedChains)
55
+ });
56
+ this.provider.removeListener('display_uri', this.onUri);
57
+ }
58
+ const account = this.getAccount(true);
59
+ this.emit('connect', new PublicKey(account.publicKey));
60
+ return account.address;
61
+ }
62
+ async disconnect() {
63
+ await this.provider?.disconnect();
64
+ this.emit('disconnect', undefined);
65
+ }
66
+ async signMessage(message) {
67
+ this.checkIfMethodIsSupported('solana_signMessage');
68
+ const signedMessage = await this.internalRequest('solana_signMessage', {
69
+ message: base58.encode(message),
70
+ pubkey: this.getAccount(true).address
71
+ });
72
+ return base58.decode(signedMessage.signature);
73
+ }
74
+ async signTransaction(transaction) {
75
+ this.checkIfMethodIsSupported('solana_signTransaction');
76
+ const serializedTransaction = this.serializeTransaction(transaction);
77
+ const result = await this.internalRequest('solana_signTransaction', {
78
+ transaction: serializedTransaction,
79
+ pubkey: this.getAccount(true).address,
80
+ ...this.getRawRPCParams(transaction)
81
+ });
82
+ if ('signature' in result) {
83
+ transaction.addSignature(new PublicKey(this.getAccount(true).publicKey), Buffer.from(base58.decode(result.signature)));
84
+ return transaction;
85
+ }
86
+ const decodedTransaction = Buffer.from(result.transaction, 'base64');
87
+ if (isVersionedTransaction(transaction)) {
88
+ return VersionedTransaction.deserialize(decodedTransaction);
89
+ }
90
+ return Transaction.from(decodedTransaction);
91
+ }
92
+ async signAndSendTransaction(transaction, sendOptions) {
93
+ this.checkIfMethodIsSupported('solana_signAndSendTransaction');
94
+ const serializedTransaction = this.serializeTransaction(transaction);
95
+ const result = await this.internalRequest('solana_signAndSendTransaction', {
96
+ transaction: serializedTransaction,
97
+ pubkey: this.getAccount(true).address,
98
+ sendOptions
99
+ });
100
+ this.emit('pendingTransaction', undefined);
101
+ return result.signature;
102
+ }
103
+ async sendTransaction(transaction, connection, options) {
104
+ const signedTransaction = await this.signTransaction(transaction);
105
+ const signature = await connection.sendRawTransaction(signedTransaction.serialize(), options);
106
+ this.emit('pendingTransaction', undefined);
107
+ return signature;
108
+ }
109
+ async signAllTransactions(transactions) {
110
+ try {
111
+ this.checkIfMethodIsSupported('solana_signAllTransactions');
112
+ const result = await this.internalRequest('solana_signAllTransactions', {
113
+ transactions: transactions.map(transaction => this.serializeTransaction(transaction))
114
+ });
115
+ return result.transactions.map((serializedTransaction, index) => {
116
+ const transaction = transactions[index];
117
+ if (!transaction) {
118
+ throw new Error('Invalid transactions response');
119
+ }
120
+ const decodedTransaction = Buffer.from(serializedTransaction, 'base64');
121
+ if (isVersionedTransaction(transaction)) {
122
+ return VersionedTransaction.deserialize(decodedTransaction);
123
+ }
124
+ this.emit('pendingTransaction', undefined);
125
+ return Transaction.from(decodedTransaction);
126
+ });
127
+ }
128
+ catch (error) {
129
+ if (error instanceof WalletConnectMethodNotSupportedError) {
130
+ const signedTransactions = [];
131
+ for (const transaction of transactions) {
132
+ signedTransactions.push(await this.signTransaction(transaction));
133
+ }
134
+ return signedTransactions;
135
+ }
136
+ throw error;
137
+ }
138
+ }
139
+ request(args) {
140
+ return this.internalRequest(args.method, args.params);
141
+ }
142
+ async getAccounts() {
143
+ const accounts = (this.session?.namespaces['solana']?.accounts || []);
144
+ return Promise.resolve(accounts.map(account => ({
145
+ namespace: this.chain,
146
+ address: ParseUtil.parseCaipAddress(account).address,
147
+ type: 'eoa'
148
+ })));
149
+ }
150
+ internalRequest(method, params) {
151
+ const chain = this.chains.find(c => this.getActiveChain()?.id === c.id);
152
+ let chainId = withSolanaNamespace(chain?.id);
153
+ switch (chainId) {
154
+ case SolConstantsUtil.CHAIN_IDS.Mainnet:
155
+ if (!this.sessionChains.includes(SolConstantsUtil.CHAIN_IDS.Mainnet)) {
156
+ chainId = SolConstantsUtil.CHAIN_IDS.Deprecated_Mainnet;
157
+ }
158
+ break;
159
+ case SolConstantsUtil.CHAIN_IDS.Devnet:
160
+ if (!this.sessionChains.includes(SolConstantsUtil.CHAIN_IDS.Devnet)) {
161
+ chainId = SolConstantsUtil.CHAIN_IDS.Deprecated_Devnet;
162
+ }
163
+ break;
164
+ default:
165
+ break;
166
+ }
167
+ return this.provider?.request({
168
+ method,
169
+ params
170
+ }, chainId);
171
+ }
172
+ get sessionChains() {
173
+ return WcHelpersUtil.getChainsFromNamespaces(this.session?.namespaces);
174
+ }
175
+ serializeTransaction(transaction) {
176
+ return Buffer.from(transaction.serialize({ verifySignatures: false })).toString('base64');
177
+ }
178
+ getAccount(required) {
179
+ const account = this.session?.namespaces['solana']?.accounts[0];
180
+ if (!account) {
181
+ if (required) {
182
+ throw new Error('Account not found');
183
+ }
184
+ return undefined;
185
+ }
186
+ const address = account.split(':')[2];
187
+ if (!address) {
188
+ if (required) {
189
+ throw new Error('Address not found');
190
+ }
191
+ return undefined;
192
+ }
193
+ return {
194
+ address,
195
+ publicKey: base58.decode(address)
196
+ };
197
+ }
198
+ getRawRPCParams(transaction) {
199
+ if (isVersionedTransaction(transaction)) {
200
+ return {};
201
+ }
202
+ return {
203
+ feePayer: transaction.feePayer?.toBase58() ?? '',
204
+ instructions: transaction.instructions.map(instruction => ({
205
+ data: base58.encode(instruction.data),
206
+ keys: instruction.keys.map(key => ({
207
+ isWritable: key.isWritable,
208
+ isSigner: key.isSigner,
209
+ pubkey: key.pubkey.toBase58()
210
+ })),
211
+ programId: instruction.programId.toBase58()
212
+ })),
213
+ recentBlockhash: transaction.recentBlockhash ?? ''
214
+ };
215
+ }
216
+ checkIfMethodIsSupported(method) {
217
+ if (!this.session?.namespaces['solana']?.methods.includes(method)) {
218
+ throw new WalletConnectMethodNotSupportedError(method);
219
+ }
220
+ }
221
+ }
222
+ //# sourceMappingURL=WalletConnectProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletConnectProvider.js","sourceRoot":"","sources":["../../../../src/providers/WalletConnectProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import { ConstantsUtil } from '@reown/appkit-common';
3
+ import { AuthProvider } from '../providers/AuthProvider';
4
+ import { mockLegacyTransaction, mockVersionedTransaction } from './mocks/Transaction';
5
+ import { mockW3mFrameProvider } from './mocks/W3mFrameProvider';
6
+ import { TestConstants } from './util/TestConstants';
7
+ describe('AuthProvider specific tests', () => {
8
+ let provider = mockW3mFrameProvider();
9
+ let getActiveChain = vi.fn(() => TestConstants.chains[0]);
10
+ let authProvider = new AuthProvider({
11
+ w3mFrameProvider: mockW3mFrameProvider(),
12
+ getActiveChain,
13
+ chains: TestConstants.chains
14
+ });
15
+ beforeEach(() => {
16
+ provider = mockW3mFrameProvider();
17
+ getActiveChain = vi.fn(() => TestConstants.chains[0]);
18
+ authProvider = new AuthProvider({
19
+ w3mFrameProvider: mockW3mFrameProvider(),
20
+ getActiveChain,
21
+ chains: TestConstants.chains
22
+ });
23
+ });
24
+ it('should have correct metadata', () => {
25
+ expect(authProvider).toEqual(expect.objectContaining({
26
+ id: ConstantsUtil.CONNECTOR_ID.AUTH,
27
+ name: ConstantsUtil.CONNECTOR_NAMES.AUTH,
28
+ type: 'AUTH',
29
+ chain: ConstantsUtil.CHAIN.SOLANA,
30
+ provider
31
+ }));
32
+ });
33
+ it('should call connect', async () => {
34
+ await authProvider.connect();
35
+ expect(provider.connect).toHaveBeenCalled();
36
+ });
37
+ it('should call disconnect', async () => {
38
+ await authProvider.disconnect();
39
+ expect(provider.disconnect).toHaveBeenCalled();
40
+ });
41
+ it('should call signMessage with correct params', async () => {
42
+ await authProvider.connect();
43
+ const message = new Uint8Array([1, 2, 3, 4, 5]);
44
+ await authProvider.signMessage(message);
45
+ expect(provider.request).toHaveBeenCalledWith({
46
+ method: 'solana_signMessage',
47
+ params: {
48
+ message: '7bWpTW',
49
+ pubkey: TestConstants.accounts[0].address
50
+ }
51
+ });
52
+ });
53
+ it('should call signTransaction with correct params', async () => {
54
+ await authProvider.connect();
55
+ const transaction = mockLegacyTransaction();
56
+ await authProvider.signTransaction(transaction);
57
+ expect(provider.request).toHaveBeenCalledWith({
58
+ method: 'solana_signTransaction',
59
+ params: {
60
+ transaction: 'AKhoybLLJS1deDJDyjELDNhfkBBX3k4dt4bBfmppjfPVVimhQdFEfDo8AiFcCBCC9VkYWV2r3jkh9n1DAXEhnJPwMmnsrx6huAVrhHAbmRUqfUuWZ9aWMGmdEWaeroCnPR6jkEnjJcn14a59TZhkiTXMygMqu4KaqD1TqzE8vNHSw3YgbW24cfqWfQczGysuy4ugxj4TGSpqRtNmf5D7zRRa76eJTeZEaBcBQGkqxb31vBRXDMdQzGEbq'
61
+ }
62
+ });
63
+ });
64
+ it('should call signTransaction with correct params for VersionedTransaction', async () => {
65
+ await authProvider.connect();
66
+ const transaction = mockVersionedTransaction();
67
+ await authProvider.signTransaction(transaction);
68
+ expect(provider.request).toHaveBeenCalledWith({
69
+ method: 'solana_signTransaction',
70
+ params: {
71
+ transaction: '48ckoQL1HhH5aqU1ifKqpQkwq3WPDgMnsHHQkVfddisxYcapwAVXr8hejTi2jeJpMPkZMsF72SwmJFDByyfRtaknz4ytCYNAcdHrxtrHa9hTjMKckVQrFFqS8zG63Wj5mJ6wPfj8dv1wKu2XkU6GSXSGdQmuvfRv3K6LUSMbK5XSP3yBGb1SDZKCuoFX4qDKcKhCG7Awn3ssAWB1yRaXMd6mS6HQHKSF11FTp3jTH2HKUNbKyyuGh4tYtq8b'
72
+ }
73
+ });
74
+ });
75
+ it('should call signAndSendTransaction with correct params', async () => {
76
+ await authProvider.connect();
77
+ const transaction = mockLegacyTransaction();
78
+ await authProvider.signAndSendTransaction(transaction);
79
+ expect(provider.request).toHaveBeenCalledWith({
80
+ method: 'solana_signAndSendTransaction',
81
+ params: {
82
+ transaction: 'AKhoybLLJS1deDJDyjELDNhfkBBX3k4dt4bBfmppjfPVVimhQdFEfDo8AiFcCBCC9VkYWV2r3jkh9n1DAXEhnJPwMmnsrx6huAVrhHAbmRUqfUuWZ9aWMGmdEWaeroCnPR6jkEnjJcn14a59TZhkiTXMygMqu4KaqD1TqzE8vNHSw3YgbW24cfqWfQczGysuy4ugxj4TGSpqRtNmf5D7zRRa76eJTeZEaBcBQGkqxb31vBRXDMdQzGEbq',
83
+ options: undefined
84
+ }
85
+ });
86
+ await authProvider.signAndSendTransaction(transaction, {
87
+ preflightCommitment: 'singleGossip'
88
+ });
89
+ expect(provider.request).toHaveBeenCalledWith({
90
+ method: 'solana_signAndSendTransaction',
91
+ params: {
92
+ transaction: 'AKhoybLLJS1deDJDyjELDNhfkBBX3k4dt4bBfmppjfPVVimhQdFEfDo8AiFcCBCC9VkYWV2r3jkh9n1DAXEhnJPwMmnsrx6huAVrhHAbmRUqfUuWZ9aWMGmdEWaeroCnPR6jkEnjJcn14a59TZhkiTXMygMqu4KaqD1TqzE8vNHSw3YgbW24cfqWfQczGysuy4ugxj4TGSpqRtNmf5D7zRRa76eJTeZEaBcBQGkqxb31vBRXDMdQzGEbq',
93
+ options: { preflightCommitment: 'singleGossip' }
94
+ }
95
+ });
96
+ });
97
+ it('should call signAllTransactions with correct params', async () => {
98
+ await authProvider.connect();
99
+ const transactions = [mockLegacyTransaction(), mockVersionedTransaction()];
100
+ await authProvider.signAllTransactions(transactions);
101
+ expect(provider.request).toHaveBeenCalledWith({
102
+ method: 'solana_signAllTransactions',
103
+ params: {
104
+ transactions: [
105
+ 'AKhoybLLJS1deDJDyjELDNhfkBBX3k4dt4bBfmppjfPVVimhQdFEfDo8AiFcCBCC9VkYWV2r3jkh9n1DAXEhnJPwMmnsrx6huAVrhHAbmRUqfUuWZ9aWMGmdEWaeroCnPR6jkEnjJcn14a59TZhkiTXMygMqu4KaqD1TqzE8vNHSw3YgbW24cfqWfQczGysuy4ugxj4TGSpqRtNmf5D7zRRa76eJTeZEaBcBQGkqxb31vBRXDMdQzGEbq',
106
+ '48ckoQL1HhH5aqU1ifKqpQkwq3WPDgMnsHHQkVfddisxYcapwAVXr8hejTi2jeJpMPkZMsF72SwmJFDByyfRtaknz4ytCYNAcdHrxtrHa9hTjMKckVQrFFqS8zG63Wj5mJ6wPfj8dv1wKu2XkU6GSXSGdQmuvfRv3K6LUSMbK5XSP3yBGb1SDZKCuoFX4qDKcKhCG7Awn3ssAWB1yRaXMd6mS6HQHKSF11FTp3jTH2HKUNbKyyuGh4tYtq8b'
107
+ ]
108
+ }
109
+ });
110
+ });
111
+ });
112
+ //# sourceMappingURL=AuthProvider.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthProvider.test.js","sourceRoot":"","sources":["../../../../src/tests/AuthProvider.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { isVersionedTransaction } from '@solana/wallet-adapter-base';
2
+ import { Transaction, VersionedTransaction } from '@solana/web3.js';
3
+ import { beforeAll, describe, expect, it, vi } from 'vitest';
4
+ import { AuthProvider } from '../providers/AuthProvider.js';
5
+ import { CoinbaseWalletProvider } from '../providers/CoinbaseWalletProvider.js';
6
+ import { SolanaWalletConnectProvider } from '../providers/SolanaWalletConnectProvider.js';
7
+ import { WalletStandardProvider } from '../providers/WalletStandardProvider.js';
8
+ import { mockCoinbaseWallet } from './mocks/CoinbaseWallet.js';
9
+ import { mockLegacyTransaction, mockVersionedTransaction } from './mocks/Transaction.js';
10
+ import { mockUniversalProvider } from './mocks/UniversalProvider.js';
11
+ import { mockW3mFrameProvider } from './mocks/W3mFrameProvider.js';
12
+ import { mockWalletStandard } from './mocks/WalletStandard.js';
13
+ import { TestConstants } from './util/TestConstants.js';
14
+ const getActiveChain = vi.fn(() => TestConstants.chains[0]);
15
+ const providers = [
16
+ {
17
+ name: 'WalletConnectProvider',
18
+ provider: new SolanaWalletConnectProvider({
19
+ provider: mockUniversalProvider(),
20
+ chains: TestConstants.chains,
21
+ getActiveChain
22
+ })
23
+ },
24
+ {
25
+ name: 'WalletStandardProvider',
26
+ provider: new WalletStandardProvider({
27
+ wallet: mockWalletStandard(),
28
+ getActiveChain,
29
+ requestedChains: TestConstants.chains
30
+ })
31
+ },
32
+ {
33
+ name: 'AuthProvider',
34
+ provider: new AuthProvider({
35
+ getActiveChain,
36
+ chains: TestConstants.chains,
37
+ w3mFrameProvider: mockW3mFrameProvider()
38
+ })
39
+ },
40
+ {
41
+ name: 'CoinbaseWalletProvider',
42
+ provider: new CoinbaseWalletProvider({
43
+ provider: mockCoinbaseWallet(),
44
+ chains: TestConstants.chains,
45
+ getActiveChain
46
+ })
47
+ }
48
+ ];
49
+ describe.each(providers)('Generic provider tests for $name', ({ provider }) => {
50
+ const events = {
51
+ connect: vi.fn(),
52
+ disconnect: vi.fn(),
53
+ accountsChanged: vi.fn(),
54
+ chainChanged: vi.fn()
55
+ };
56
+ beforeAll(() => {
57
+ provider.on('connect', events.connect);
58
+ provider.on('disconnect', events.disconnect);
59
+ provider.on('accountsChanged', events.accountsChanged);
60
+ provider.on('chainChanged', events.chainChanged);
61
+ });
62
+ it('should connect, return address and emit event', async () => {
63
+ const address = await provider.connect();
64
+ expect(address).toEqual(TestConstants.accounts[0].address);
65
+ expect(events.connect).toHaveBeenCalledWith(TestConstants.accounts[0].publicKey);
66
+ });
67
+ it('should signMessage', async () => {
68
+ const result = await provider.signMessage(new TextEncoder().encode('test'));
69
+ expect(result).toBeInstanceOf(Uint8Array);
70
+ });
71
+ it('should signTransaction with Legacy Transaction', async () => {
72
+ const result = await provider.signTransaction(mockLegacyTransaction());
73
+ expect(result).toBeInstanceOf(Transaction);
74
+ });
75
+ it('should signTransaction with Versioned Transaction', async () => {
76
+ const result = await provider.signTransaction(mockVersionedTransaction());
77
+ expect(result).toBeInstanceOf(VersionedTransaction);
78
+ });
79
+ it('should signAndSendTransaction with Legacy Transaction', async () => {
80
+ const result = await provider.signAndSendTransaction(mockLegacyTransaction());
81
+ expect(result).toBeTypeOf('string');
82
+ });
83
+ it('should signAndSendTransaction with Versioned Transaction', async () => {
84
+ const result = await provider.signAndSendTransaction(mockVersionedTransaction());
85
+ expect(result).toBeTypeOf('string');
86
+ });
87
+ it('should signAllTransactions with AnyTransaction', async () => {
88
+ const transactions = [
89
+ mockLegacyTransaction(),
90
+ mockVersionedTransaction(),
91
+ mockLegacyTransaction(),
92
+ mockVersionedTransaction()
93
+ ];
94
+ const result = await provider.signAllTransactions(transactions);
95
+ expect(result).toHaveLength(transactions.length);
96
+ transactions.forEach((transaction, index) => {
97
+ if (isVersionedTransaction(transaction)) {
98
+ expect(result[index]).toBeInstanceOf(VersionedTransaction);
99
+ }
100
+ else {
101
+ expect(result[index]).toBeInstanceOf(Transaction);
102
+ }
103
+ });
104
+ });
105
+ it('should disconnect and emit event', async () => {
106
+ await provider.disconnect();
107
+ expect(events.disconnect).toHaveBeenCalledWith(undefined);
108
+ });
109
+ });
110
+ //# sourceMappingURL=GenericProvider.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericProvider.test.js","sourceRoot":"","sources":["../../../../src/tests/GenericProvider.test.ts"],"names":[],"mappings":"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"}