@dynamic-labs-sdk/solana 0.0.1-alpha.8 → 0.1.0-alpha.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.
- package/CHANGELOG.md +157 -0
- package/addSolanaWalletStandardExtension.cjs.js +141 -97
- package/addSolanaWalletStandardExtension.esm.js +142 -98
- package/addWaasSolanaExtension.cjs.js +176 -0
- package/addWaasSolanaExtension.esm.js +173 -0
- package/index.cjs.js +44 -11
- package/index.esm.js +44 -11
- package/isVersionedTransaction.cjs.js +63 -0
- package/isVersionedTransaction.esm.js +57 -0
- package/package.json +11 -4
- package/src/SolanaNetworkProvider.types.d.ts +8 -0
- package/src/SolanaNetworkProvider.types.d.ts.map +1 -0
- package/src/SolanaWalletAccount.types.d.ts +8 -0
- package/src/SolanaWalletAccount.types.d.ts.map +1 -0
- package/src/SolanaWalletProvider.types.d.ts +1 -1
- package/src/SolanaWalletProvider.types.d.ts.map +1 -1
- package/src/addSolanaExtension/addSolanaExtension.d.ts +7 -4
- package/src/addSolanaExtension/addSolanaExtension.d.ts.map +1 -1
- package/src/exports/index.d.ts +4 -1
- package/src/exports/index.d.ts.map +1 -1
- package/src/exports/waas.d.ts +2 -0
- package/src/exports/waas.d.ts.map +1 -0
- package/src/exports/walletStandard.d.ts.map +1 -1
- package/src/getSigner/getSigner.d.ts +14 -1
- package/src/getSigner/getSigner.d.ts.map +1 -1
- package/src/getSolanaConnection/getSolanaConnection.d.ts +29 -0
- package/src/getSolanaConnection/getSolanaConnection.d.ts.map +1 -0
- package/src/getSolanaConnection/index.d.ts +2 -0
- package/src/getSolanaConnection/index.d.ts.map +1 -0
- package/src/isSolanaNetworkProvider/index.d.ts +2 -0
- package/src/isSolanaNetworkProvider/index.d.ts.map +1 -0
- package/src/isSolanaNetworkProvider/isSolanaNetworkProvider.d.ts +10 -0
- package/src/isSolanaNetworkProvider/isSolanaNetworkProvider.d.ts.map +1 -0
- package/src/isSolanaWalletAccount/isSolanaWalletAccount.d.ts +8 -1
- package/src/isSolanaWalletAccount/isSolanaWalletAccount.d.ts.map +1 -1
- package/src/isSolanaWalletProvider/isSolanaWalletProvider.d.ts +1 -1
- package/src/isSolanaWalletProvider/isSolanaWalletProvider.d.ts.map +1 -1
- package/src/registerSolanaNetworkProviderBuilder/index.d.ts +2 -0
- package/src/registerSolanaNetworkProviderBuilder/index.d.ts.map +1 -0
- package/src/registerSolanaNetworkProviderBuilder/registerSolanaNetworkProviderBuilder.d.ts +3 -0
- package/src/registerSolanaNetworkProviderBuilder/registerSolanaNetworkProviderBuilder.d.ts.map +1 -0
- package/src/utils/createEmptyEventEmitter/createEmptyEventEmitter.d.ts +17 -0
- package/src/utils/createEmptyEventEmitter/createEmptyEventEmitter.d.ts.map +1 -0
- package/src/utils/createEmptyEventEmitter/index.d.ts +2 -0
- package/src/utils/createEmptyEventEmitter/index.d.ts.map +1 -0
- package/src/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts +4 -0
- package/src/utils/createSolanaNetworkProvider/createSolanaNetworkProvider.d.ts.map +1 -0
- package/src/utils/createSolanaNetworkProvider/index.d.ts +2 -0
- package/src/utils/createSolanaNetworkProvider/index.d.ts.map +1 -0
- package/src/utils/fetchSolBalance/fetchSolBalance.d.ts +5 -0
- package/src/utils/fetchSolBalance/fetchSolBalance.d.ts.map +1 -0
- package/src/utils/fetchSolBalance/index.d.ts +2 -0
- package/src/utils/fetchSolBalance/index.d.ts.map +1 -0
- package/src/waas/WaasSolanaWalletProvider.types.d.ts +4 -0
- package/src/waas/WaasSolanaWalletProvider.types.d.ts.map +1 -0
- package/src/waas/addWaasSolanaExtension/addWaasSolanaExtension.d.ts +11 -0
- package/src/waas/addWaasSolanaExtension/addWaasSolanaExtension.d.ts.map +1 -0
- package/src/waas/addWaasSolanaExtension/index.d.ts +2 -0
- package/src/waas/addWaasSolanaExtension/index.d.ts.map +1 -0
- package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/createSolanaSignerFromSolanaWaasProvider.d.ts +11 -0
- package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/createSolanaSignerFromSolanaWaasProvider.d.ts.map +1 -0
- package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/index.d.ts +2 -0
- package/src/waas/utils/createSolanaSignerFromSolanaWaasProvider/index.d.ts.map +1 -0
- package/src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts +4 -0
- package/src/waas/utils/createWalletProviderForWaasSolana/createWalletProviderForWaasSolana.d.ts.map +1 -0
- package/src/waas/utils/createWalletProviderForWaasSolana/index.d.ts +2 -0
- package/src/waas/utils/createWalletProviderForWaasSolana/index.d.ts.map +1 -0
- package/src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts +9 -2
- package/src/walletStandard/addSolanaWalletStandardExtension/addSolanaWalletStandardExtension.d.ts.map +1 -1
- package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/createSolanaSignerFromSolanaStandardWallet.d.ts +7 -1
- package/src/walletStandard/utils/createSolanaSignerFromSolanaStandardWallet/createSolanaSignerFromSolanaStandardWallet.d.ts.map +1 -1
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts +5 -3
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/createWalletProviderFromSolanaStandardWallet.d.ts.map +1 -1
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/getActiveNetworkId.d.ts +5 -0
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/getActiveNetworkId.d.ts.map +1 -0
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/index.d.ts +2 -0
- package/src/walletStandard/utils/createWalletProviderFromSolanaStandardWallet/getActiveNetworkId/index.d.ts.map +1 -0
- package/waas.cjs.d.ts +1 -0
- package/waas.cjs.js +15 -0
- package/waas.esm.d.ts +1 -0
- package/waas.esm.js +11 -0
- package/walletStandard.cjs.js +5 -2
- package/walletStandard.esm.js +6 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,160 @@
|
|
|
1
|
+
## 0.1.0-alpha.0 (2025-09-02)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- add connectAndVerifyWithWalletProvider function ([#385](https://github.com/dynamic-labs/dynamic-sdk/pull/385))
|
|
6
|
+
- add event listening for wallet providers ([#389](https://github.com/dynamic-labs/dynamic-sdk/pull/389))
|
|
7
|
+
|
|
8
|
+
### 🩹 Fixes
|
|
9
|
+
|
|
10
|
+
- sending transaction with solana ([#381](https://github.com/dynamic-labs/dynamic-sdk/pull/381))
|
|
11
|
+
|
|
12
|
+
### 🔧 Refactors
|
|
13
|
+
|
|
14
|
+
- waas sign message defined in waas provider ([#377](https://github.com/dynamic-labs/dynamic-sdk/pull/377))
|
|
15
|
+
- ban chain enum ([#386](https://github.com/dynamic-labs/dynamic-sdk/pull/386))
|
|
16
|
+
- ban misplaced waas exports ([#387](https://github.com/dynamic-labs/dynamic-sdk/pull/387))
|
|
17
|
+
|
|
18
|
+
## 0.0.1-alpha.27 (2025-08-29)
|
|
19
|
+
|
|
20
|
+
### 🚀 Features
|
|
21
|
+
|
|
22
|
+
- allow switching network ([#323](https://github.com/dynamic-labs/dynamic-sdk/pull/323))
|
|
23
|
+
- introduce getBalance and getBalanceForAddress ([#335](https://github.com/dynamic-labs/dynamic-sdk/pull/335))
|
|
24
|
+
- add delegateWaasKeyShares function ([#353](https://github.com/dynamic-labs/dynamic-sdk/pull/353))
|
|
25
|
+
- add updateWaasPassword function ([#354](https://github.com/dynamic-labs/dynamic-sdk/pull/354))
|
|
26
|
+
- add exportWaasClientKeyshares function ([#355](https://github.com/dynamic-labs/dynamic-sdk/pull/355))
|
|
27
|
+
- add importWaasPrivateKey function ([#356](https://github.com/dynamic-labs/dynamic-sdk/pull/356))
|
|
28
|
+
- add refreshWaasWalletAccountShares function ([#357](https://github.com/dynamic-labs/dynamic-sdk/pull/357))
|
|
29
|
+
- add backupWaasKeySharesToGoogleDrive function ([#358](https://github.com/dynamic-labs/dynamic-sdk/pull/358))
|
|
30
|
+
- add exportWaasPrivateKey function ([#359](https://github.com/dynamic-labs/dynamic-sdk/pull/359))
|
|
31
|
+
- add isWaasWalletAccount function ([#365](https://github.com/dynamic-labs/dynamic-sdk/pull/365))
|
|
32
|
+
- add createWalletClientForWalletAccount function ([#367](https://github.com/dynamic-labs/dynamic-sdk/pull/367))
|
|
33
|
+
|
|
34
|
+
### 🔧 Refactors
|
|
35
|
+
|
|
36
|
+
- assert signed session id in getSignedSessionId ([#361](https://github.com/dynamic-labs/dynamic-sdk/pull/361))
|
|
37
|
+
- add consumeMfaTokenIfRequiredForAction function ([#363](https://github.com/dynamic-labs/dynamic-sdk/pull/363))
|
|
38
|
+
|
|
39
|
+
## 0.0.1-alpha.26 (2025-08-27)
|
|
40
|
+
|
|
41
|
+
### 🩹 Fixes
|
|
42
|
+
|
|
43
|
+
- remove version pin on sdk-api-core ([#351](https://github.com/dynamic-labs/dynamic-sdk/pull/351))
|
|
44
|
+
|
|
45
|
+
## 0.0.1-alpha.25 (2025-08-27)
|
|
46
|
+
|
|
47
|
+
### 🚀 Features
|
|
48
|
+
|
|
49
|
+
- add ethereum netowrk providers ([#267](https://github.com/dynamic-labs/dynamic-sdk/pull/267))
|
|
50
|
+
- add solana network provider ([#268](https://github.com/dynamic-labs/dynamic-sdk/pull/268))
|
|
51
|
+
- add proveWalletAccountOwnership function ([#295](https://github.com/dynamic-labs/dynamic-sdk/pull/295))
|
|
52
|
+
- format evm wallet addresses to conform to eip55 ([#300](https://github.com/dynamic-labs/dynamic-sdk/pull/300))
|
|
53
|
+
- add viem public client ([#272](https://github.com/dynamic-labs/dynamic-sdk/pull/272))
|
|
54
|
+
- add getSolanaConnection ([#275](https://github.com/dynamic-labs/dynamic-sdk/pull/275))
|
|
55
|
+
- add dynamic waas evm extension ([#299](https://github.com/dynamic-labs/dynamic-sdk/pull/299))
|
|
56
|
+
- add refreshUser function ([#332](https://github.com/dynamic-labs/dynamic-sdk/pull/332))
|
|
57
|
+
- add get network method ([#321](https://github.com/dynamic-labs/dynamic-sdk/pull/321))
|
|
58
|
+
|
|
59
|
+
### 🩹 Fixes
|
|
60
|
+
|
|
61
|
+
- update default API base URL ([#296](https://github.com/dynamic-labs/dynamic-sdk/pull/296))
|
|
62
|
+
|
|
63
|
+
### 🔧 Refactors
|
|
64
|
+
|
|
65
|
+
- reorganize exports index file ([#303](https://github.com/dynamic-labs/dynamic-sdk/pull/303))
|
|
66
|
+
- rename events folder to clientEvents ([#305](https://github.com/dynamic-labs/dynamic-sdk/pull/305))
|
|
67
|
+
- dry network provider type ([#308](https://github.com/dynamic-labs/dynamic-sdk/pull/308))
|
|
68
|
+
- rename types files to include the features name ([#319](https://github.com/dynamic-labs/dynamic-sdk/pull/319))
|
|
69
|
+
- use evm instead of other terms ([#306](https://github.com/dynamic-labs/dynamic-sdk/pull/306))
|
|
70
|
+
- rename net configuration to net data ([#322](https://github.com/dynamic-labs/dynamic-sdk/pull/322))
|
|
71
|
+
- move waas-utils to client package ([#342](https://github.com/dynamic-labs/dynamic-sdk/pull/342))
|
|
72
|
+
|
|
73
|
+
## 0.0.1-alpha.24 (2025-08-14)
|
|
74
|
+
|
|
75
|
+
This was a version bump only, there were no code changes.
|
|
76
|
+
|
|
77
|
+
## 0.0.1-alpha.23 (2025-08-14)
|
|
78
|
+
|
|
79
|
+
This was a version bump only, there were no code changes.
|
|
80
|
+
|
|
81
|
+
## 0.0.1-alpha.22 (2025-08-13)
|
|
82
|
+
|
|
83
|
+
This was a version bump only, there were no code changes.
|
|
84
|
+
|
|
85
|
+
## 0.0.1-alpha.21 (2025-08-12)
|
|
86
|
+
|
|
87
|
+
### 🚀 Features
|
|
88
|
+
|
|
89
|
+
- add signInWithExternalJwt function ([#263](https://github.com/dynamic-labs/dynamic-sdk/pull/263))
|
|
90
|
+
|
|
91
|
+
### 🩹 Fixes
|
|
92
|
+
|
|
93
|
+
- bind fetch to window ([#265](https://github.com/dynamic-labs/dynamic-sdk/pull/265))
|
|
94
|
+
|
|
95
|
+
## 0.0.1-alpha.20 (2025-08-06)
|
|
96
|
+
|
|
97
|
+
### 🚀 Features
|
|
98
|
+
|
|
99
|
+
- raise an error if different dynamic packages are on different versions ([#253](https://github.com/dynamic-labs/dynamic-sdk/pull/253))
|
|
100
|
+
|
|
101
|
+
## 0.0.1-alpha.19 (2025-07-23)
|
|
102
|
+
|
|
103
|
+
This was a version bump only, there were no code changes.
|
|
104
|
+
|
|
105
|
+
## 0.0.1-alpha.18 (2025-07-22)
|
|
106
|
+
|
|
107
|
+
This was a version bump only, there were no code changes.
|
|
108
|
+
|
|
109
|
+
## 0.0.1-alpha.17 (2025-07-22)
|
|
110
|
+
|
|
111
|
+
This was a version bump only, there were no code changes.
|
|
112
|
+
|
|
113
|
+
## 0.0.1-alpha.16 (2025-07-14)
|
|
114
|
+
|
|
115
|
+
### 🚀 Features
|
|
116
|
+
|
|
117
|
+
- add new getMultichainBalances api method ([#219](https://github.com/dynamic-labs/dynamic-sdk/pull/219))
|
|
118
|
+
- adds authenticated event ([#222](https://github.com/dynamic-labs/dynamic-sdk/pull/222))
|
|
119
|
+
|
|
120
|
+
## 0.0.1-alpha.15 (2025-07-14)
|
|
121
|
+
|
|
122
|
+
### 🚀 Features
|
|
123
|
+
|
|
124
|
+
- **SIN-7:** Add Signin with Passkey ([#201](https://github.com/dynamic-labs/dynamic-sdk/pull/201))
|
|
125
|
+
|
|
126
|
+
## 0.0.1-alpha.14 (2025-07-11)
|
|
127
|
+
|
|
128
|
+
### 🩹 Fixes
|
|
129
|
+
|
|
130
|
+
- import zod mini using namespace ([#214](https://github.com/dynamic-labs/dynamic-sdk/pull/214))
|
|
131
|
+
|
|
132
|
+
## 0.0.1-alpha.13 (2025-07-09)
|
|
133
|
+
|
|
134
|
+
### 🩹 Fixes
|
|
135
|
+
|
|
136
|
+
- convert api headers to get api headers ([#211](https://github.com/dynamic-labs/dynamic-sdk/pull/211))
|
|
137
|
+
|
|
138
|
+
## 0.0.1-alpha.12 (2025-07-09)
|
|
139
|
+
|
|
140
|
+
### 🩹 Fixes
|
|
141
|
+
|
|
142
|
+
- allow the api call to include cookie credentials ([#209](https://github.com/dynamic-labs/dynamic-sdk/pull/209))
|
|
143
|
+
|
|
144
|
+
## 0.0.1-alpha.11 (2025-07-08)
|
|
145
|
+
|
|
146
|
+
This was a version bump only, there were no code changes.
|
|
147
|
+
|
|
148
|
+
## 0.0.1-alpha.10 (2025-07-08)
|
|
149
|
+
|
|
150
|
+
This was a version bump only, there were no code changes.
|
|
151
|
+
|
|
152
|
+
## 0.0.1-alpha.9 (2025-07-08)
|
|
153
|
+
|
|
154
|
+
### 🩹 Fixes
|
|
155
|
+
|
|
156
|
+
- throw when attempting to set undefined prop in storage ([#200](https://github.com/dynamic-labs/dynamic-sdk/pull/200))
|
|
157
|
+
|
|
1
158
|
## 0.0.1-alpha.8 (2025-07-03)
|
|
2
159
|
|
|
3
160
|
This was a version bump only, there were no code changes.
|
|
@@ -2,49 +2,82 @@
|
|
|
2
2
|
|
|
3
3
|
var core = require('@dynamic-labs-sdk/client/core');
|
|
4
4
|
var app = require('@wallet-standard/app');
|
|
5
|
+
var isVersionedTransaction = require('./isVersionedTransaction.cjs.js');
|
|
6
|
+
var web3_js = require('@solana/web3.js');
|
|
5
7
|
var client = require('@dynamic-labs-sdk/client');
|
|
6
8
|
var sdkApiCore = require('@dynamic-labs/sdk-api-core');
|
|
7
|
-
var
|
|
9
|
+
var bs58 = require('bs58');
|
|
8
10
|
|
|
9
|
-
const
|
|
11
|
+
const fetchSolBalance = async ({ address, rpcUrl })=>{
|
|
12
|
+
// Establish a connection to the Solana network using the provided RPC URL.
|
|
13
|
+
const connection = new web3_js.Connection(rpcUrl);
|
|
14
|
+
// Convert the string address into a PublicKey object.
|
|
15
|
+
const publicKey = new web3_js.PublicKey(address);
|
|
16
|
+
// Fetch the balance of the public key. The balance is in lamports.
|
|
17
|
+
const balanceInLamports = await connection.getBalance(publicKey);
|
|
18
|
+
// The getBalance method returns the balance in lamports.
|
|
19
|
+
// 1 SOL = 1,000,000,000 lamports.
|
|
20
|
+
const balanceInSol = balanceInLamports / 1000000000;
|
|
21
|
+
// Return the balance in SOL as a string
|
|
22
|
+
return balanceInSol.toString();
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const createSolanaNetworkProvider = (networkData)=>isVersionedTransaction._extends({}, core.createBaseNetworkProvider('SOL', networkData), {
|
|
26
|
+
cluster: networkData.cluster,
|
|
27
|
+
getBalance: async ({ address })=>({
|
|
28
|
+
balance: await fetchSolBalance({
|
|
29
|
+
address,
|
|
30
|
+
rpcUrl: networkData.rpcUrls.http[0]
|
|
31
|
+
})
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const registerSolanaNetworkProviderBuilder = (client)=>{
|
|
36
|
+
const networkProviderBuilderRegistry = core.getNetworkProviderBuilderRegistry(client);
|
|
37
|
+
/**
|
|
38
|
+
* If the Solana network provider builder is already registered, return.
|
|
39
|
+
*/ if (networkProviderBuilderRegistry.get().get('SOL')) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
networkProviderBuilderRegistry.register({
|
|
43
|
+
builder: createSolanaNetworkProvider,
|
|
44
|
+
chain: 'SOL'
|
|
45
|
+
});
|
|
46
|
+
};
|
|
10
47
|
|
|
11
48
|
const getFeaturesForSolanaStandardWallet = (wallet)=>{
|
|
12
49
|
return wallet.features;
|
|
13
50
|
};
|
|
14
51
|
|
|
15
|
-
const createSolanaSignerFromSolanaStandardWallet = (
|
|
16
|
-
const features = getFeaturesForSolanaStandardWallet(
|
|
52
|
+
const createSolanaSignerFromSolanaStandardWallet = ({ networkProvider, walletStandardWallet })=>{
|
|
53
|
+
const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);
|
|
17
54
|
const getPublicKey = ()=>{
|
|
18
|
-
var
|
|
19
|
-
if (!((
|
|
55
|
+
var _walletStandardWallet_accounts_, _walletStandardWallet_accounts;
|
|
56
|
+
if (!((_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : (_walletStandardWallet_accounts_ = _walletStandardWallet_accounts[0]) == null ? void 0 : _walletStandardWallet_accounts_.publicKey)) {
|
|
20
57
|
return undefined;
|
|
21
58
|
}
|
|
22
|
-
return new web3_js.PublicKey(
|
|
59
|
+
return new web3_js.PublicKey(walletStandardWallet.accounts[0].publicKey);
|
|
23
60
|
};
|
|
24
61
|
const getChain = ()=>{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// assertDefined(currentNetwork, 'Network not found');
|
|
28
|
-
// const cluster = currentNetwork.cluster ?? 'mainnet';
|
|
29
|
-
const cluster = 'mainnet';
|
|
30
|
-
return `solana:${cluster}`;
|
|
62
|
+
core.assertDefined(networkProvider.cluster, `Cluster was not defined for network provider ${networkProvider.displayName} (networkId: ${networkProvider.networkId})`);
|
|
63
|
+
return `solana:${networkProvider.cluster}`;
|
|
31
64
|
};
|
|
32
65
|
const isConnected = ()=>{
|
|
33
|
-
var
|
|
34
|
-
return ((
|
|
66
|
+
var _walletStandardWallet_accounts;
|
|
67
|
+
return ((_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : _walletStandardWallet_accounts.length) > 0;
|
|
35
68
|
};
|
|
36
69
|
const getCurrentAccount = async ()=>{
|
|
37
|
-
var
|
|
70
|
+
var _walletStandardWallet_accounts;
|
|
38
71
|
if (!isConnected()) {
|
|
39
72
|
await connect();
|
|
40
73
|
}
|
|
41
|
-
const account = (
|
|
74
|
+
const account = (_walletStandardWallet_accounts = walletStandardWallet.accounts) == null ? void 0 : _walletStandardWallet_accounts[0];
|
|
42
75
|
core.assertDefined(account, 'No connected accounts found');
|
|
43
76
|
return account;
|
|
44
77
|
};
|
|
45
78
|
const connect = async ()=>{
|
|
46
79
|
var _features_standardconnect, _result_accounts;
|
|
47
|
-
const autoConnectedAccounts =
|
|
80
|
+
const autoConnectedAccounts = walletStandardWallet.accounts;
|
|
48
81
|
// some wallets like Farcaster will auto inject the account into the wallet object
|
|
49
82
|
// instead of returning it from the connect method
|
|
50
83
|
// so we need to check for that first
|
|
@@ -105,7 +138,7 @@ const createSolanaSignerFromSolanaStandardWallet = (wallet)=>{
|
|
|
105
138
|
})
|
|
106
139
|
});
|
|
107
140
|
const signedTransaction = signTransactionResult[0].signedTransaction;
|
|
108
|
-
if (isVersionedTransaction(transaction)) {
|
|
141
|
+
if (isVersionedTransaction.isVersionedTransaction(transaction)) {
|
|
109
142
|
return web3_js.VersionedTransaction.deserialize(signedTransaction);
|
|
110
143
|
}
|
|
111
144
|
return web3_js.Transaction.from(signedTransaction);
|
|
@@ -125,7 +158,7 @@ const createSolanaSignerFromSolanaStandardWallet = (wallet)=>{
|
|
|
125
158
|
});
|
|
126
159
|
const [{ signature }] = signedTransactions;
|
|
127
160
|
return {
|
|
128
|
-
signature:
|
|
161
|
+
signature: bs58.encode(signature)
|
|
129
162
|
};
|
|
130
163
|
};
|
|
131
164
|
const signMessage = async (message)=>{
|
|
@@ -141,52 +174,35 @@ const createSolanaSignerFromSolanaStandardWallet = (wallet)=>{
|
|
|
141
174
|
signature: messages[0].signature
|
|
142
175
|
};
|
|
143
176
|
};
|
|
144
|
-
return {
|
|
145
|
-
addListener: ()=>{
|
|
146
|
-
throw new core.MethodNotImplementedError('addListener');
|
|
147
|
-
},
|
|
177
|
+
return isVersionedTransaction._extends({}, isVersionedTransaction.createEmptyEventEmitter(), {
|
|
148
178
|
connect,
|
|
149
179
|
disconnect,
|
|
150
|
-
emit: ()=>{
|
|
151
|
-
throw new core.MethodNotImplementedError('emit');
|
|
152
|
-
},
|
|
153
|
-
eventNames: ()=>{
|
|
154
|
-
return [];
|
|
155
|
-
},
|
|
156
180
|
get isConnected () {
|
|
157
181
|
return isConnected();
|
|
158
182
|
},
|
|
159
|
-
listenerCount: ()=>{
|
|
160
|
-
return 0;
|
|
161
|
-
},
|
|
162
|
-
listeners: ()=>{
|
|
163
|
-
return [];
|
|
164
|
-
},
|
|
165
|
-
off: ()=>{
|
|
166
|
-
throw new core.MethodNotImplementedError('off');
|
|
167
|
-
},
|
|
168
183
|
on,
|
|
169
|
-
once: ()=>{
|
|
170
|
-
throw new core.MethodNotImplementedError('once');
|
|
171
|
-
},
|
|
172
184
|
providers: [],
|
|
173
185
|
get publicKey () {
|
|
174
186
|
return getPublicKey();
|
|
175
187
|
},
|
|
176
|
-
removeAllListeners: ()=>{
|
|
177
|
-
throw new core.MethodNotImplementedError('removeAllListeners');
|
|
178
|
-
},
|
|
179
|
-
removeListener: ()=>{
|
|
180
|
-
throw new core.MethodNotImplementedError('removeListener');
|
|
181
|
-
},
|
|
182
188
|
signAllTransactions,
|
|
183
189
|
signAndSendTransaction,
|
|
184
190
|
signMessage,
|
|
185
191
|
signTransaction
|
|
186
|
-
};
|
|
192
|
+
});
|
|
187
193
|
};
|
|
188
194
|
|
|
189
|
-
const createWalletProviderFromSolanaStandardWallet = ({
|
|
195
|
+
const createWalletProviderFromSolanaStandardWallet = ({ dynamicClient, walletStandardWallet })=>{
|
|
196
|
+
const key = core.formatWalletProviderKey(walletStandardWallet.name, 'SOL');
|
|
197
|
+
const getActiveNetworkId = async ()=>core.getActiveNetworkIdFromLastKnownRegistry({
|
|
198
|
+
client: dynamicClient,
|
|
199
|
+
walletProviderKey: key
|
|
200
|
+
});
|
|
201
|
+
const switchActiveNetwork = async ({ networkId })=>core.switchActiveNetworkInLastKnownRegistry({
|
|
202
|
+
client: dynamicClient,
|
|
203
|
+
networkId,
|
|
204
|
+
walletProviderKey: key
|
|
205
|
+
});
|
|
190
206
|
const connect = async ()=>{
|
|
191
207
|
const signer = await getSigner();
|
|
192
208
|
const result = await signer.connect();
|
|
@@ -206,45 +222,24 @@ const createWalletProviderFromSolanaStandardWallet = ({ wallet })=>{
|
|
|
206
222
|
await signer.connect();
|
|
207
223
|
}
|
|
208
224
|
return {
|
|
209
|
-
addresses:
|
|
225
|
+
addresses: walletStandardWallet.accounts.map((account)=>account.address)
|
|
210
226
|
};
|
|
211
227
|
};
|
|
212
228
|
const getSigner = async (walletAccount)=>{
|
|
213
229
|
if (walletAccount) {
|
|
214
|
-
await client.assertWalletAccountSigningAvailability(
|
|
230
|
+
await client.assertWalletAccountSigningAvailability({
|
|
231
|
+
walletAccount
|
|
232
|
+
}, dynamicClient);
|
|
215
233
|
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
core.assertDefined(appUrl, 'App URL is not set');
|
|
225
|
-
const url = new URL(appUrl);
|
|
226
|
-
const { nonce } = await apiClient.getNonce({
|
|
227
|
-
environmentId: core$1.environmentId
|
|
228
|
-
});
|
|
229
|
-
core.assertDefined(nonce, 'Failed to get nonce');
|
|
230
|
-
const messageToSign = await core.formatSignInMessage({
|
|
231
|
-
address: walletAccount.address,
|
|
232
|
-
blockchainName: 'Solana',
|
|
233
|
-
domain: url.host,
|
|
234
|
-
issuedAt: new Date().toISOString(),
|
|
235
|
-
nonce,
|
|
236
|
-
requestId: core$1.environmentId,
|
|
237
|
-
uri: url.toString()
|
|
238
|
-
});
|
|
239
|
-
const signedMessage = await signMessage({
|
|
240
|
-
message: messageToSign,
|
|
241
|
-
walletAccount
|
|
234
|
+
const { networkId } = await getActiveNetworkId();
|
|
235
|
+
const networkProvider = core.getNetworkProviderFromNetworkId({
|
|
236
|
+
chain: 'SOL',
|
|
237
|
+
networkId
|
|
238
|
+
}, dynamicClient);
|
|
239
|
+
return createSolanaSignerFromSolanaStandardWallet({
|
|
240
|
+
networkProvider,
|
|
241
|
+
walletStandardWallet
|
|
242
242
|
});
|
|
243
|
-
return {
|
|
244
|
-
chain: sdkApiCore.ChainEnum.Sol,
|
|
245
|
-
messageToSign,
|
|
246
|
-
signedMessage: signedMessage.signature
|
|
247
|
-
};
|
|
248
243
|
};
|
|
249
244
|
const signMessage = async ({ message, walletAccount })=>{
|
|
250
245
|
const signer = await getSigner(walletAccount);
|
|
@@ -255,22 +250,57 @@ const createWalletProviderFromSolanaStandardWallet = ({ wallet })=>{
|
|
|
255
250
|
signature: core.bufferToBase64(signedMessage.signature)
|
|
256
251
|
};
|
|
257
252
|
};
|
|
258
|
-
|
|
253
|
+
const getEventsFeature = ()=>{
|
|
254
|
+
const features = getFeaturesForSolanaStandardWallet(walletStandardWallet);
|
|
255
|
+
const eventsFeature = features['standard:events'];
|
|
256
|
+
return eventsFeature;
|
|
257
|
+
};
|
|
258
|
+
const { getEventEmitter, cleanupEventEmitter } = core.createWalletProviderEventEmitter({
|
|
259
|
+
removeEventListeners: ({ setupReturnValue })=>{
|
|
260
|
+
core.assertDefined(setupReturnValue, 'Setup return value not defined');
|
|
261
|
+
setupReturnValue();
|
|
262
|
+
},
|
|
263
|
+
setupEventListeners: ({ handleAccountsChanged })=>{
|
|
264
|
+
return getEventsFeature().on('change', ({ accounts })=>{
|
|
265
|
+
var _accounts_map;
|
|
266
|
+
handleAccountsChanged({
|
|
267
|
+
addresses: (_accounts_map = accounts == null ? void 0 : accounts.map((account)=>account.address)) != null ? _accounts_map : []
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
},
|
|
271
|
+
supportedEvents: [
|
|
272
|
+
'accountsChanged'
|
|
273
|
+
]
|
|
274
|
+
});
|
|
275
|
+
const terminate = async ()=>{
|
|
276
|
+
cleanupEventEmitter();
|
|
277
|
+
};
|
|
278
|
+
const walletProvider = {
|
|
259
279
|
chain: 'SOL',
|
|
260
280
|
connect,
|
|
261
281
|
disconnect,
|
|
282
|
+
getActiveNetworkId,
|
|
262
283
|
getConnectedAddresses,
|
|
263
284
|
getSigner,
|
|
264
285
|
getWalletProviderType: ()=>sdkApiCore.WalletProviderEnum.BrowserExtension,
|
|
265
|
-
groupKey: core.formatWalletProviderGroupKey(
|
|
266
|
-
key
|
|
286
|
+
groupKey: core.formatWalletProviderGroupKey(walletStandardWallet.name),
|
|
287
|
+
key,
|
|
267
288
|
metadata: {
|
|
268
|
-
displayName:
|
|
269
|
-
icon:
|
|
289
|
+
displayName: walletStandardWallet.name,
|
|
290
|
+
icon: walletStandardWallet.icon
|
|
270
291
|
},
|
|
271
|
-
|
|
272
|
-
|
|
292
|
+
signMessage,
|
|
293
|
+
switchActiveNetwork,
|
|
294
|
+
terminate
|
|
273
295
|
};
|
|
296
|
+
// The provider will only implement events if this external wallet provider
|
|
297
|
+
// implements the standard:events feature
|
|
298
|
+
if (getEventsFeature()) {
|
|
299
|
+
Object.defineProperty(walletProvider, 'events', {
|
|
300
|
+
get: ()=>getEventEmitter()
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
return walletProvider;
|
|
274
304
|
};
|
|
275
305
|
|
|
276
306
|
const hasAllRequiredFeatures = (wallet)=>{
|
|
@@ -279,16 +309,30 @@ const hasAllRequiredFeatures = (wallet)=>{
|
|
|
279
309
|
};
|
|
280
310
|
|
|
281
311
|
const SOLANA_WALLET_STANDARD_EXTENSION_KEY = 'solanaWalletStandard';
|
|
282
|
-
|
|
283
|
-
|
|
312
|
+
/**
|
|
313
|
+
* Adds the Solana Wallet Standard extension to the Dynamic client.
|
|
314
|
+
*
|
|
315
|
+
* This extension enables integration with wallets that implement the Solana Wallet Standard,
|
|
316
|
+
* automatically detecting and registering compatible wallets for use with the Dynamic SDK.
|
|
317
|
+
*
|
|
318
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
319
|
+
*/ const addSolanaWalletStandardExtension = (client = core.getDefaultClient())=>{
|
|
320
|
+
if (core.hasExtension({
|
|
321
|
+
extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY
|
|
322
|
+
}, client)) {
|
|
284
323
|
return;
|
|
285
324
|
}
|
|
325
|
+
core.registerExtension({
|
|
326
|
+
extensionKey: SOLANA_WALLET_STANDARD_EXTENSION_KEY
|
|
327
|
+
}, client);
|
|
328
|
+
registerSolanaNetworkProviderBuilder(client);
|
|
286
329
|
const walletProviderRegistry = core.getWalletProviderRegistry(client);
|
|
287
|
-
const
|
|
288
|
-
|
|
289
|
-
const walletProvider =
|
|
290
|
-
|
|
291
|
-
|
|
330
|
+
const walletStandardWallets = app.getWallets().get().filter(hasAllRequiredFeatures);
|
|
331
|
+
walletStandardWallets.forEach((walletStandardWallet)=>{
|
|
332
|
+
const walletProvider = createWalletProviderFromSolanaStandardWallet({
|
|
333
|
+
dynamicClient: client,
|
|
334
|
+
walletStandardWallet
|
|
335
|
+
});
|
|
292
336
|
walletProviderRegistry.register({
|
|
293
337
|
priority: core.WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,
|
|
294
338
|
walletProvider
|