@dynamic-labs/solana-core 4.0.0-alpha.4 → 4.0.0-alpha.40
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 +349 -0
- package/package.cjs +8 -0
- package/package.js +4 -0
- package/package.json +9 -16
- package/src/connector/{SolWalletConnector.cjs → SolanaWalletConnector.cjs} +8 -10
- package/src/connector/{SolWalletConnector.d.ts → SolanaWalletConnector.d.ts} +8 -5
- package/src/connector/{SolWalletConnector.js → SolanaWalletConnector.js} +8 -10
- package/src/connector/index.d.ts +1 -1
- package/src/index.cjs +7 -3
- package/src/index.js +6 -1
- package/src/rpc/RpcProviderSolana/RpcProviderSolana.cjs +2 -2
- package/src/rpc/RpcProviderSolana/RpcProviderSolana.d.ts +2 -2
- package/src/rpc/RpcProviderSolana/RpcProviderSolana.js +2 -2
- package/src/utils/SolanaUiTransaction/SolanaUiTransaction.cjs +75 -41
- package/src/utils/SolanaUiTransaction/SolanaUiTransaction.d.ts +8 -8
- package/src/utils/SolanaUiTransaction/SolanaUiTransaction.js +75 -41
- package/src/utils/index.d.ts +1 -0
- package/src/utils/isTransactionSigned/index.d.ts +1 -0
- package/src/utils/isTransactionSigned/isTransactionSigned.cjs +17 -0
- package/src/utils/isTransactionSigned/isTransactionSigned.d.ts +2 -0
- package/src/utils/isTransactionSigned/isTransactionSigned.js +13 -0
- package/src/wallet/SolanaWallet.d.ts +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,353 @@
|
|
|
1
1
|
|
|
2
|
+
## [4.0.0-alpha.40](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.39...v4.0.0-alpha.40) (2024-12-03)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* detect all eip6963 wallets, even if not in wallet-book ([#7515](https://github.com/dynamic-labs/dynamic-auth/issues/7515)) ([b658740](https://github.com/dynamic-labs/dynamic-auth/commit/b658740c16d8d26877eb955dc403077c8e9840fb))
|
|
8
|
+
* useWalletOptions provides chain and allows filtering ([#7533](https://github.com/dynamic-labs/dynamic-auth/issues/7533)) ([da47608](https://github.com/dynamic-labs/dynamic-auth/commit/da476084bcc72b2bf0b6fa599992be640d59724c))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **QNTM-1845:** use smaller log in button sizing ([#7526](https://github.com/dynamic-labs/dynamic-auth/issues/7526)) ([264810b](https://github.com/dynamic-labs/dynamic-auth/commit/264810b3b9cddf7006c1f653b4cc10f23804ae50))
|
|
14
|
+
* update twitter to X in social provide label ([#7530](https://github.com/dynamic-labs/dynamic-auth/issues/7530)) ([c02fca0](https://github.com/dynamic-labs/dynamic-auth/commit/c02fca03de2f46a9e50d19c9e7ef2dfba0b33efc))
|
|
15
|
+
|
|
16
|
+
## [4.0.0-alpha.39](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.38...v4.0.0-alpha.39) (2024-12-02)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### ⚠ BREAKING CHANGES
|
|
20
|
+
|
|
21
|
+
* remove usages of findWalletBookWallet when possible (#7455)
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
* sdkHasLoaded always false in cookie enabled env ([#7516](https://github.com/dynamic-labs/dynamic-auth/issues/7516)) ([1c3335c](https://github.com/dynamic-labs/dynamic-auth/commit/1c3335c13930e9bffe60cf1c09bc9c9584a59ef7))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
* remove usages of findWalletBookWallet when possible ([#7455](https://github.com/dynamic-labs/dynamic-auth/issues/7455)) ([0ce977d](https://github.com/dynamic-labs/dynamic-auth/commit/0ce977d5d4d591c371c6ea2edfb252ba7acff5d2))
|
|
29
|
+
|
|
30
|
+
## [4.0.0-alpha.38](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.37...v4.0.0-alpha.38) (2024-11-27)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Bug Fixes
|
|
34
|
+
|
|
35
|
+
* don't allow user to connect wallet in bridge while sdk is still loading ([#7506](https://github.com/dynamic-labs/dynamic-auth/issues/7506)) ([c0a913d](https://github.com/dynamic-labs/dynamic-auth/commit/c0a913d78675cc66b41f03ea9bfb316de5f95905))
|
|
36
|
+
|
|
37
|
+
## [4.0.0-alpha.37](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.36...v4.0.0-alpha.37) (2024-11-27)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
|
|
42
|
+
* show the name of a wallet when it is unknown ([#7478](https://github.com/dynamic-labs/dynamic-auth/issues/7478)) ([698acc5](https://github.com/dynamic-labs/dynamic-auth/commit/698acc5b63a489f56bf403747a40c36027045bf7))
|
|
43
|
+
|
|
44
|
+
## [4.0.0-alpha.36](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.35...v4.0.0-alpha.36) (2024-11-26)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
### Bug Fixes
|
|
48
|
+
|
|
49
|
+
* only fetch nonce when required ([#7495](https://github.com/dynamic-labs/dynamic-auth/issues/7495)) ([2816b6f](https://github.com/dynamic-labs/dynamic-auth/commit/2816b6f22d7f9dc7f7e1858e19263a2cb2631bb5))
|
|
50
|
+
* show network for unknown wallets ([#7463](https://github.com/dynamic-labs/dynamic-auth/issues/7463)) ([3a98cc2](https://github.com/dynamic-labs/dynamic-auth/commit/3a98cc2bc807db457f1d11b08b74237badb1399e))
|
|
51
|
+
|
|
52
|
+
## [4.0.0-alpha.35](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.34...v4.0.0-alpha.35) (2024-11-25)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### Bug Fixes
|
|
56
|
+
|
|
57
|
+
* eclipse and solana wallets getting mixed up in connect only ([#7487](https://github.com/dynamic-labs/dynamic-auth/issues/7487)) ([6cabfb8](https://github.com/dynamic-labs/dynamic-auth/commit/6cabfb8da4d23a858652634844653aadc75be062))
|
|
58
|
+
* eclipse wallets never get detected ([#7479](https://github.com/dynamic-labs/dynamic-auth/issues/7479)) ([4a1a040](https://github.com/dynamic-labs/dynamic-auth/commit/4a1a04027e447a0c5c42b2dd3808b82c2ce7724c))
|
|
59
|
+
* **ui:** add missing rule for social login modals ([#7476](https://github.com/dynamic-labs/dynamic-auth/issues/7476)) ([59b5a2d](https://github.com/dynamic-labs/dynamic-auth/commit/59b5a2de10600decedbc167ee30e7900ec53618b))
|
|
60
|
+
* use correct fallback connector for each chain ([#7318](https://github.com/dynamic-labs/dynamic-auth/issues/7318)) ([91dcf8b](https://github.com/dynamic-labs/dynamic-auth/commit/91dcf8b6be4932c8e4122ce4dbceafee7ba1d194))
|
|
61
|
+
|
|
62
|
+
## [4.0.0-alpha.34](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.33...v4.0.0-alpha.34) (2024-11-20)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
### ⚠ BREAKING CHANGES
|
|
66
|
+
|
|
67
|
+
* remove `supportsSatsConnect` helper ([#7453](https://github.com/dynamic-labs/dynamic-auth/issues/7453)) ([920c63b](https://github.com/dynamic-labs/dynamic-auth/commit/920c63bbb5a38dc3d676664db512a4da539c0909))
|
|
68
|
+
* moved `getWalletLinks` helper from `@dynamic-labs/wallet-book` to `@dynamic-labs/wallet-connector-core` ([#7416](https://github.com/dynamic-labs/dynamic-auth/issues/7416)) ([73fdfa8](https://github.com/dynamic-labs/dynamic-auth/commit/73fdfa8a19fe4c2cca55410d5ed3cb7b5bd8cdfd))
|
|
69
|
+
|
|
70
|
+
### Features
|
|
71
|
+
|
|
72
|
+
* allow listening to dynamic events without using a hook ([#7466](https://github.com/dynamic-labs/dynamic-auth/issues/7466)) ([3b34e1b](https://github.com/dynamic-labs/dynamic-auth/commit/3b34e1bd2737003b987887a02d0e21436e9bf908))
|
|
73
|
+
* emit primaryWalletChanged event when primary wallets changes ([#7464](https://github.com/dynamic-labs/dynamic-auth/issues/7464)) ([3bc6ba0](https://github.com/dynamic-labs/dynamic-auth/commit/3bc6ba055e0232bff3c6c6bb93d3d57b1dd90bc6))
|
|
74
|
+
* emit primaryWalletNetworkChanged event when primary wallet network changes ([#7465](https://github.com/dynamic-labs/dynamic-auth/issues/7465)) ([33cc629](https://github.com/dynamic-labs/dynamic-auth/commit/33cc629d3c6a03c381b7e5591a8f4557987cc6fc))
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
## [4.0.0-alpha.33](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.32...v4.0.0-alpha.33) (2024-11-18)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
### Features
|
|
81
|
+
|
|
82
|
+
* add login with tiktok ([#7360](https://github.com/dynamic-labs/dynamic-auth/issues/7360)) ([75bb66b](https://github.com/dynamic-labs/dynamic-auth/commit/75bb66b05158fe339daf7d14bfa21538b42c54f9))
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
### Bug Fixes
|
|
86
|
+
|
|
87
|
+
* confirmation ui tweaks ([#7440](https://github.com/dynamic-labs/dynamic-auth/issues/7440)) ([684fb4c](https://github.com/dynamic-labs/dynamic-auth/commit/684fb4ca4232faeaa9975ea346abf88bd8c0acb3))
|
|
88
|
+
* siwe stop passing the query param in the URI ([#7444](https://github.com/dynamic-labs/dynamic-auth/issues/7444)) ([96b7a9c](https://github.com/dynamic-labs/dynamic-auth/commit/96b7a9ce2b7d52395b9dbe2d43c3d7e8a1a5346e))
|
|
89
|
+
|
|
90
|
+
## [4.0.0-alpha.32](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.31...v4.0.0-alpha.32) (2024-11-13)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
### Bug Fixes
|
|
94
|
+
|
|
95
|
+
* **client:** convert the wallet when using wallets.embedded.getWallet ([#7430](https://github.com/dynamic-labs/dynamic-auth/issues/7430)) ([f852a09](https://github.com/dynamic-labs/dynamic-auth/commit/f852a09695141389c275d1ca27c26595a78d8051))
|
|
96
|
+
* refresh blockhash for solana embedded and use confirmed commitment ([#7425](https://github.com/dynamic-labs/dynamic-auth/issues/7425)) ([25b4169](https://github.com/dynamic-labs/dynamic-auth/commit/25b4169950b32619731f10f3372f80e71ede4ae5))
|
|
97
|
+
|
|
98
|
+
## [4.0.0-alpha.31](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.30...v4.0.0-alpha.31) (2024-11-13)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
### Features
|
|
102
|
+
|
|
103
|
+
* allow passing telegram auth token into telegramSignIn function ([#7423](https://github.com/dynamic-labs/dynamic-auth/issues/7423)) ([4b8d594](https://github.com/dynamic-labs/dynamic-auth/commit/4b8d594984d1ac7851ce8d94fe4329ba94730f35))
|
|
104
|
+
|
|
105
|
+
## [4.0.0-alpha.30](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.29...v4.0.0-alpha.30) (2024-11-13)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
### ⚠ BREAKING CHANGES
|
|
109
|
+
|
|
110
|
+
* check wallet limitations from metadata (#7413)
|
|
111
|
+
|
|
112
|
+
### Bug Fixes
|
|
113
|
+
|
|
114
|
+
* confirmation ui disabled for solana signall and signTransaction ([#7403](https://github.com/dynamic-labs/dynamic-auth/issues/7403)) ([98a352a](https://github.com/dynamic-labs/dynamic-auth/commit/98a352a826202abad734f00df1b3d19080ecf1e2))
|
|
115
|
+
* get starknet wallets directly from window ([#7421](https://github.com/dynamic-labs/dynamic-auth/issues/7421)) ([13e24f7](https://github.com/dynamic-labs/dynamic-auth/commit/13e24f70accf7747f5137fc3f2b05c00939c3af3))
|
|
116
|
+
* issue with SollanaWalletConnectorWithConfig embedded wallets ([#7405](https://github.com/dynamic-labs/dynamic-auth/issues/7405)) ([f08ecd6](https://github.com/dynamic-labs/dynamic-auth/commit/f08ecd6955faf191177bb9833b7a594637a6c4cc))
|
|
117
|
+
* set override key in starknet injected connector ([#7420](https://github.com/dynamic-labs/dynamic-auth/issues/7420)) ([74b2887](https://github.com/dynamic-labs/dynamic-auth/commit/74b28874661b3bad1e0a0f92aa9d3c987dc71225))
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
* check wallet limitations from metadata ([#7413](https://github.com/dynamic-labs/dynamic-auth/issues/7413)) ([a419de6](https://github.com/dynamic-labs/dynamic-auth/commit/a419de643ea4ff240a27825c10670ba92589b71b))
|
|
121
|
+
|
|
122
|
+
## [4.0.0-alpha.29](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.28...v4.0.0-alpha.29) (2024-11-07)
|
|
123
|
+
|
|
124
|
+
## [4.0.0-alpha.28](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.27...v4.0.0-alpha.28) (2024-11-07)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
### ⚠ BREAKING CHANGES
|
|
128
|
+
|
|
129
|
+
* upgrade to starknet v6
|
|
130
|
+
See this guide for more details: https://starknetjs.com/docs/guides/migrate/
|
|
131
|
+
There are no code changes required on the Dynamic SDK side, however if you have installed the `starknet` package, you will need to upgrade to >= v6.11.0.
|
|
132
|
+
|
|
133
|
+
### Features
|
|
134
|
+
|
|
135
|
+
* new transaction modal and ui for sign/signAll ([#7296](https://github.com/dynamic-labs/dynamic-auth/issues/7296)) ([05a8af1](https://github.com/dynamic-labs/dynamic-auth/commit/05a8af1eb772b2b8087ed96a54caf4b6ae8b79d2)), closes [#7297](https://github.com/dynamic-labs/dynamic-auth/issues/7297) [#7298](https://github.com/dynamic-labs/dynamic-auth/issues/7298)
|
|
136
|
+
* upgrade to starknet v6 ([#7189](https://github.com/dynamic-labs/dynamic-auth/issues/7189)) ([2a6e24e](https://github.com/dynamic-labs/dynamic-auth/commit/2a6e24e4178fcee671b381c28f6a681f4ce52c62))
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
### Bug Fixes
|
|
140
|
+
|
|
141
|
+
* transaction confirmation modal popup ([#7368](https://github.com/dynamic-labs/dynamic-auth/issues/7368)) ([3c48658](https://github.com/dynamic-labs/dynamic-auth/commit/3c48658a62874d908bba8f06fb092ff5983ede16))
|
|
142
|
+
|
|
143
|
+
## [4.0.0-alpha.27](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.26...v4.0.0-alpha.27) (2024-11-06)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
### Features
|
|
147
|
+
|
|
148
|
+
* allows adding connection configuration for solana connectors ([#7354](https://github.com/dynamic-labs/dynamic-auth/issues/7354)) ([01e35ee](https://github.com/dynamic-labs/dynamic-auth/commit/01e35ee5bfe4605df48e4188a753111efe483048))
|
|
149
|
+
* allows passing solana connection config to dynamic client ([#7357](https://github.com/dynamic-labs/dynamic-auth/issues/7357)) ([6da14ce](https://github.com/dynamic-labs/dynamic-auth/commit/6da14ceb481147aea31d192fe268be43a8af80e9))
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
### Bug Fixes
|
|
153
|
+
|
|
154
|
+
* check legacy vs eip1599 tx in global connectivity ([#7341](https://github.com/dynamic-labs/dynamic-auth/issues/7341)) ([b223ea7](https://github.com/dynamic-labs/dynamic-auth/commit/b223ea7a5ed5637e11da1040c631c48bc23ba76d))
|
|
155
|
+
* global connectivity multiple transactions in a row ([#7342](https://github.com/dynamic-labs/dynamic-auth/issues/7342)) ([d13c1af](https://github.com/dynamic-labs/dynamic-auth/commit/d13c1afec6b3680961621d8317f55549b3ed428f))
|
|
156
|
+
|
|
157
|
+
## [4.0.0-alpha.26](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.25...v4.0.0-alpha.26) (2024-11-04)
|
|
158
|
+
|
|
159
|
+
## [4.0.0-alpha.25](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.24...v4.0.0-alpha.25) (2024-11-01)
|
|
160
|
+
|
|
161
|
+
## [4.0.0-alpha.24](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.23...v4.0.0-alpha.24) (2024-10-31)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
### Bug Fixes
|
|
165
|
+
|
|
166
|
+
* prevent use-wallet-options from reading empty wallet-book ([#7319](https://github.com/dynamic-labs/dynamic-auth/issues/7319)) ([fc1269e](https://github.com/dynamic-labs/dynamic-auth/commit/fc1269ed2b59ee17fc528d24a4d34936eb20c02f))
|
|
167
|
+
|
|
168
|
+
## [4.0.0-alpha.23](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.22...v4.0.0-alpha.23) (2024-10-31)
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
### Features
|
|
172
|
+
|
|
173
|
+
* allow deletion of embedded wallets ([#7170](https://github.com/dynamic-labs/dynamic-auth/issues/7170)) ([40c5478](https://github.com/dynamic-labs/dynamic-auth/commit/40c54789594ba265a63b24f936da4e72b5b1c5b9))
|
|
174
|
+
|
|
175
|
+
## [4.0.0-alpha.22](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.21...v4.0.0-alpha.22) (2024-10-30)
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
### Features
|
|
179
|
+
|
|
180
|
+
* **QNTM-522:** add wallet details card ([#7239](https://github.com/dynamic-labs/dynamic-auth/issues/7239)) ([0181c87](https://github.com/dynamic-labs/dynamic-auth/commit/0181c8727af575620525b8ea47b196945c347846))
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
### Bug Fixes
|
|
184
|
+
|
|
185
|
+
* update check for wallet provider event listeners support ([#7303](https://github.com/dynamic-labs/dynamic-auth/issues/7303)) ([c5f3766](https://github.com/dynamic-labs/dynamic-auth/commit/c5f376691c87a0999991e477f9acd07eed4774aa))
|
|
186
|
+
|
|
187
|
+
## [4.0.0-alpha.21](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.20...v4.0.0-alpha.21) (2024-10-30)
|
|
188
|
+
|
|
189
|
+
## [4.0.0-alpha.20](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.19...v4.0.0-alpha.20) (2024-10-30)
|
|
190
|
+
|
|
191
|
+
## [4.0.0-alpha.19](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.18...v4.0.0-alpha.19) (2024-10-29)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
### Bug Fixes
|
|
195
|
+
|
|
196
|
+
* ensure the client js will emit a change event after the value update ([#7284](https://github.com/dynamic-labs/dynamic-auth/issues/7284)) ([930d2e9](https://github.com/dynamic-labs/dynamic-auth/commit/930d2e9fdc75fd4a38da8ef6efc9d3e29152285b))
|
|
197
|
+
|
|
198
|
+
## [4.0.0-alpha.18](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.17...v4.0.0-alpha.18) (2024-10-29)
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
### Bug Fixes
|
|
202
|
+
|
|
203
|
+
* **web-extension:** add color scheme style to prevent broken style ([#7247](https://github.com/dynamic-labs/dynamic-auth/issues/7247)) ([c525c50](https://github.com/dynamic-labs/dynamic-auth/commit/c525c50ac02997f3baf220fd2e67c6c4b3d10903))
|
|
204
|
+
|
|
205
|
+
## [4.0.0-alpha.17](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.16...v4.0.0-alpha.17) (2024-10-28)
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
### Features
|
|
209
|
+
|
|
210
|
+
* add support for eclipse ([#7255](https://github.com/dynamic-labs/dynamic-auth/issues/7255)) ([70e9830](https://github.com/dynamic-labs/dynamic-auth/commit/70e9830c6c801e0298825b914ee825b578350cf0))
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
### Bug Fixes
|
|
214
|
+
|
|
215
|
+
* adds missing packages to zerodev-extension package ([#7187](https://github.com/dynamic-labs/dynamic-auth/issues/7187)) ([052a7e7](https://github.com/dynamic-labs/dynamic-auth/commit/052a7e7c08d458996d1be56f7697448ad5a9a1c9))
|
|
216
|
+
* unpin reactivity package for vue projects ([#7246](https://github.com/dynamic-labs/dynamic-auth/issues/7246)) ([18013e0](https://github.com/dynamic-labs/dynamic-auth/commit/18013e00d6855f8b371c9edb97594a08764c3868))
|
|
217
|
+
|
|
218
|
+
## [4.0.0-alpha.16](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.15...v4.0.0-alpha.16) (2024-10-27)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
### Features
|
|
222
|
+
|
|
223
|
+
* add passkey to web-extension ([#7096](https://github.com/dynamic-labs/dynamic-auth/issues/7096)) ([a4b4643](https://github.com/dynamic-labs/dynamic-auth/commit/a4b4643e5307358425c878067bae095090f322ca))
|
|
224
|
+
* add social to web extension ([#7106](https://github.com/dynamic-labs/dynamic-auth/issues/7106)) ([422bc8e](https://github.com/dynamic-labs/dynamic-auth/commit/422bc8e2d276d960a7a76ad55a7b244c3fd83173))
|
|
225
|
+
* add support for compass and leap wallets ([9738749](https://github.com/dynamic-labs/dynamic-auth/commit/9738749bb5ed8e07a2582df255f683e4d408db93))
|
|
226
|
+
* add support for epicgames social ([#7220](https://github.com/dynamic-labs/dynamic-auth/issues/7220)) ([cb5bc30](https://github.com/dynamic-labs/dynamic-auth/commit/cb5bc30bc17d063bdaa9b427a9358b30124c4589))
|
|
227
|
+
* add web-extension to client ([#7180](https://github.com/dynamic-labs/dynamic-auth/issues/7180)) ([e2ccbb7](https://github.com/dynamic-labs/dynamic-auth/commit/e2ccbb77bdd0250d000a6cc4d89a2e5d7d2f4bb2))
|
|
228
|
+
|
|
229
|
+
## [4.0.0-alpha.15](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.14...v4.0.0-alpha.15) (2024-10-19)
|
|
230
|
+
|
|
231
|
+
## [4.0.0-alpha.14](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.13...v4.0.0-alpha.14) (2024-10-18)
|
|
232
|
+
|
|
233
|
+
## [4.0.0-alpha.13](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.12...v4.0.0-alpha.13) (2024-10-18)
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
### Bug Fixes
|
|
237
|
+
|
|
238
|
+
* improve displayed chain name in network switcher ([#7153](https://github.com/dynamic-labs/dynamic-auth/issues/7153)) ([55d2e5a](https://github.com/dynamic-labs/dynamic-auth/commit/55d2e5a9954bf0255b5caf7aba7a6f1f2e215967))
|
|
239
|
+
|
|
240
|
+
## [4.0.0-alpha.12](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.11...v4.0.0-alpha.12) (2024-10-18)
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
### Features
|
|
244
|
+
|
|
245
|
+
* add support for xverse account change event ([#7114](https://github.com/dynamic-labs/dynamic-auth/issues/7114)) ([79df047](https://github.com/dynamic-labs/dynamic-auth/commit/79df04775edb297a339e2d74adcc873584a6d8af))
|
|
246
|
+
* solana embedded signall headless ([#7132](https://github.com/dynamic-labs/dynamic-auth/issues/7132)) ([fe16b71](https://github.com/dynamic-labs/dynamic-auth/commit/fe16b71a4c0ad775f8de87ca899cfdd1071f11d6))
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
### Bug Fixes
|
|
250
|
+
|
|
251
|
+
* bug where embeddedWalletCreated event was fired before listener … ([#7151](https://github.com/dynamic-labs/dynamic-auth/issues/7151)) ([ae9da56](https://github.com/dynamic-labs/dynamic-auth/commit/ae9da56850130491384a2d5f47c1617815dcce5b))
|
|
252
|
+
* edge case where wallet book fails to load ([#7148](https://github.com/dynamic-labs/dynamic-auth/issues/7148)) ([805dc6d](https://github.com/dynamic-labs/dynamic-auth/commit/805dc6d7cc4cdf0b23748d82b3bd8216d88d55b5))
|
|
253
|
+
* issues where native currency icons were incorrect ([#7126](https://github.com/dynamic-labs/dynamic-auth/issues/7126)) ([8b8891a](https://github.com/dynamic-labs/dynamic-auth/commit/8b8891a52397e17cc127ea3a09ade14c4b70a8ee))
|
|
254
|
+
* remove now-unused sessionTimeout from useSocial ([#7123](https://github.com/dynamic-labs/dynamic-auth/issues/7123)) ([7959a8a](https://github.com/dynamic-labs/dynamic-auth/commit/7959a8a4c8ceb76c5c4f1ae91af204bf9c5cae7b))
|
|
255
|
+
* Revert: Update Exodus extension version " ([#7130](https://github.com/dynamic-labs/dynamic-auth/issues/7130)) ([f2274ae](https://github.com/dynamic-labs/dynamic-auth/commit/f2274aefd29bb9f3fb6de8493e4a5f73946a5600)), closes [#7129](https://github.com/dynamic-labs/dynamic-auth/issues/7129)
|
|
256
|
+
* use embedded primaryChain when passing undefined chains list to createTurnkeyWallet ([#7149](https://github.com/dynamic-labs/dynamic-auth/issues/7149)) ([c73a3ae](https://github.com/dynamic-labs/dynamic-auth/commit/c73a3aeeda8045b936d218f7078ad79967c321ef))
|
|
257
|
+
|
|
258
|
+
## [4.0.0-alpha.11](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.10...v4.0.0-alpha.11) (2024-10-15)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
### Bug Fixes
|
|
262
|
+
|
|
263
|
+
* missing null check in property accessor ([#7122](https://github.com/dynamic-labs/dynamic-auth/issues/7122)) ([bbb5e76](https://github.com/dynamic-labs/dynamic-auth/commit/bbb5e76c1284edad2829605444dda24971027a57))
|
|
264
|
+
|
|
265
|
+
## [4.0.0-alpha.10](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.9...v4.0.0-alpha.10) (2024-10-15)
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
### Bug Fixes
|
|
269
|
+
|
|
270
|
+
* epicgames key name without dash ([#7119](https://github.com/dynamic-labs/dynamic-auth/issues/7119)) ([7388d6c](https://github.com/dynamic-labs/dynamic-auth/commit/7388d6cf98f6ee92e12003549dfd1ad81951119e))
|
|
271
|
+
|
|
272
|
+
## [4.0.0-alpha.9](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.8...v4.0.0-alpha.9) (2024-10-11)
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
### Features
|
|
276
|
+
|
|
277
|
+
* add support for fordefi wallet ([#7109](https://github.com/dynamic-labs/dynamic-auth/issues/7109)) ([1adb6b1](https://github.com/dynamic-labs/dynamic-auth/commit/1adb6b15b7f8e9156207ac7addf4368d27c1e371))
|
|
278
|
+
* support ability to define additional oauth scopes ([#7105](https://github.com/dynamic-labs/dynamic-auth/issues/7105)) ([b303203](https://github.com/dynamic-labs/dynamic-auth/commit/b303203e8041c0cbf5f8968df0d3cde04ed1b22a))
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
### Bug Fixes
|
|
282
|
+
|
|
283
|
+
* add eip6963 for exodus evm ([#7094](https://github.com/dynamic-labs/dynamic-auth/issues/7094)) ([c1ec5ef](https://github.com/dynamic-labs/dynamic-auth/commit/c1ec5ef4b6a531c563be4b690aa5f2bd4e7e6a16))
|
|
284
|
+
|
|
285
|
+
## [4.0.0-alpha.8](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.7...v4.0.0-alpha.8) (2024-10-07)
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
### Features
|
|
289
|
+
|
|
290
|
+
* add support for dynamic event callbacks in rn ([#6997](https://github.com/dynamic-labs/dynamic-auth/issues/6997)) ([f9ac402](https://github.com/dynamic-labs/dynamic-auth/commit/f9ac40259d9168dfe69dafd5fd44478ba0e69505))
|
|
291
|
+
* add support for dynamic handlers in rn ([#7032](https://github.com/dynamic-labs/dynamic-auth/issues/7032)) ([f61f926](https://github.com/dynamic-labs/dynamic-auth/commit/f61f92666b6df8483dde2c47304fd4fb02690f7d))
|
|
292
|
+
* Support for multi-chain AA ([#6829](https://github.com/dynamic-labs/dynamic-auth/issues/6829)) ([b4a0c0a](https://github.com/dynamic-labs/dynamic-auth/commit/b4a0c0a4de48231a3748826600407c25abf6894d))
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
### Bug Fixes
|
|
296
|
+
|
|
297
|
+
* persist isHardwareWalletEnabled on wallet connector ([#7025](https://github.com/dynamic-labs/dynamic-auth/issues/7025)) ([#7034](https://github.com/dynamic-labs/dynamic-auth/issues/7034)) ([4bfc301](https://github.com/dynamic-labs/dynamic-auth/commit/4bfc301d891f10db8c0bd31e5164c489a882c5c3))
|
|
298
|
+
|
|
299
|
+
## [4.0.0-alpha.7](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.6...v4.0.0-alpha.7) (2024-10-03)
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
### Features
|
|
303
|
+
|
|
304
|
+
* add account abstraction module to client ([#7002](https://github.com/dynamic-labs/dynamic-auth/issues/7002)) ([2f06975](https://github.com/dynamic-labs/dynamic-auth/commit/2f06975083dfa9d40537ef4a99b414eda1a68e01))
|
|
305
|
+
* add support for wallet events in rn ([#7061](https://github.com/dynamic-labs/dynamic-auth/issues/7061)) ([c7c4ce5](https://github.com/dynamic-labs/dynamic-auth/commit/c7c4ce51f27a2b84a1710c120d7006a00920c1e7))
|
|
306
|
+
* add zerodev extension for react native ([#7028](https://github.com/dynamic-labs/dynamic-auth/issues/7028)) ([858b8a8](https://github.com/dynamic-labs/dynamic-auth/commit/858b8a851cfa0cddc8e4559541b03992cf5ccdfc))
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
### Bug Fixes
|
|
310
|
+
|
|
311
|
+
* do not modify sol tx blockhash as tx could have been signed already ([#7050](https://github.com/dynamic-labs/dynamic-auth/issues/7050)) ([770edb4](https://github.com/dynamic-labs/dynamic-auth/commit/770edb49ddc231b75fb45a9f6d563f22e5185df2))
|
|
312
|
+
* ensure the correct auth mode is used on social redirect ([#7047](https://github.com/dynamic-labs/dynamic-auth/issues/7047)) ([7c27172](https://github.com/dynamic-labs/dynamic-auth/commit/7c271721d5ddf19e3fd1bf56ddb1d49e0e2bca07))
|
|
313
|
+
* prevent react native message timeout before sdk is ready ([#7051](https://github.com/dynamic-labs/dynamic-auth/issues/7051)) ([6421237](https://github.com/dynamic-labs/dynamic-auth/commit/6421237d677d788b824d53432c1a75b9d571aa78))
|
|
314
|
+
* update version error text ([#7054](https://github.com/dynamic-labs/dynamic-auth/issues/7054)) ([713dacb](https://github.com/dynamic-labs/dynamic-auth/commit/713dacb79c2513323c2e6840d7418716011c2dcd))
|
|
315
|
+
* use project settings sdk network for send flow ([#7011](https://github.com/dynamic-labs/dynamic-auth/issues/7011)) ([983e796](https://github.com/dynamic-labs/dynamic-auth/commit/983e79632762f71ee0502c92057a32ea985ae19c))
|
|
316
|
+
|
|
317
|
+
## [4.0.0-alpha.6](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0-alpha.5...v4.0.0-alpha.6) (2024-10-01)
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
### ⚠ BREAKING CHANGES
|
|
321
|
+
|
|
322
|
+
* remove support to magic ([#7033](https://github.com/dynamic-labs/dynamic-auth/issues/7033)) ([0fdc41f](https://github.com/dynamic-labs/dynamic-auth/commit/0fdc41f05f87b32f56b73db068f984f18bdf69a0))
|
|
323
|
+
|
|
324
|
+
### Features
|
|
325
|
+
|
|
326
|
+
* global connectivity disconnect ([#7008](https://github.com/dynamic-labs/dynamic-auth/issues/7008)) ([80d705b](https://github.com/dynamic-labs/dynamic-auth/commit/80d705ba252aa3b01cbf4861507fed00e460215f))
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
### Bug Fixes
|
|
330
|
+
|
|
331
|
+
* add popper context to send balance ([#7016](https://github.com/dynamic-labs/dynamic-auth/issues/7016)) ([73aa6f1](https://github.com/dynamic-labs/dynamic-auth/commit/73aa6f122afe0db660ebb654f3e018ae7bf445c5))
|
|
332
|
+
* add retry to useConnectWithOtp ([#7012](https://github.com/dynamic-labs/dynamic-auth/issues/7012)) ([d551d72](https://github.com/dynamic-labs/dynamic-auth/commit/d551d72a463f8a03964858b30ec174d41985a7b1))
|
|
333
|
+
* don't re-fetch wallet address on network change ([#7019](https://github.com/dynamic-labs/dynamic-auth/issues/7019)) ([4e7900c](https://github.com/dynamic-labs/dynamic-auth/commit/4e7900cc24b3abda736bc81466eda7512cf7fc61))
|
|
334
|
+
* fix sign message with solana wallet standard provider ([#7014](https://github.com/dynamic-labs/dynamic-auth/issues/7014)) ([ffaf972](https://github.com/dynamic-labs/dynamic-auth/commit/ffaf972e8b190b0b8cd0103e0ef67bfdee6c8f7c))
|
|
335
|
+
* update wallet reference when user switches wallet in connect-only ([#7030](https://github.com/dynamic-labs/dynamic-auth/issues/7030)) ([75d9aa6](https://github.com/dynamic-labs/dynamic-auth/commit/75d9aa66f63fc5536caeff12d8b860c0ba86106f))
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
## [4.0.0-alpha.5](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.4...v4.0.0-alpha.5) (2024-09-25)
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
### Features
|
|
342
|
+
|
|
343
|
+
* add isInstalledOnBrowser prop to wallet options in useWalletOptions ([#6976](https://github.com/dynamic-labs/DynamicAuth/issues/6976)) ([0fda409](https://github.com/dynamic-labs/DynamicAuth/commit/0fda409b293c83d73869d791c3d38ac421dcdecb))
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
### Bug Fixes
|
|
347
|
+
|
|
348
|
+
* **client:** return user profile when using sign in with external jwt ([#7004](https://github.com/dynamic-labs/DynamicAuth/issues/7004)) ([927cfb6](https://github.com/dynamic-labs/DynamicAuth/commit/927cfb69f3dd7f8b00e3f0f975277a84c99c830b))
|
|
349
|
+
* react-native-extension to include esm ([#6965](https://github.com/dynamic-labs/DynamicAuth/issues/6965)) ([336825b](https://github.com/dynamic-labs/DynamicAuth/commit/336825b50142002bbc67c6f8850bd63030bf384b))
|
|
350
|
+
|
|
2
351
|
## [4.0.0-alpha.4](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.3...v4.0.0-alpha.4) (2024-09-23)
|
|
3
352
|
|
|
4
353
|
|
package/package.cjs
ADDED
package/package.js
ADDED
package/package.json
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/solana-core",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
4
|
-
"repository": {
|
|
5
|
-
"type": "git",
|
|
6
|
-
"url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
|
|
7
|
-
"directory": "packages/solana-core"
|
|
8
|
-
},
|
|
3
|
+
"version": "4.0.0-alpha.40",
|
|
9
4
|
"description": "Core package for utilities and types for solana",
|
|
10
|
-
"bugs": {
|
|
11
|
-
"url": "https://github.com/dynamic-labs/DynamicAuth/issues"
|
|
12
|
-
},
|
|
13
|
-
"homepage": "https://github.com/dynamic-labs/DynamicAuth/main/packages/solana-core#readme",
|
|
14
5
|
"author": "Dynamic Labs, Inc.",
|
|
15
6
|
"license": "MIT",
|
|
16
7
|
"main": "./src/index.cjs",
|
|
@@ -25,17 +16,19 @@
|
|
|
25
16
|
},
|
|
26
17
|
"./package.json": "./package.json"
|
|
27
18
|
},
|
|
19
|
+
"homepage": "https://www.dynamic.xyz/",
|
|
28
20
|
"dependencies": {
|
|
29
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
21
|
+
"@dynamic-labs/sdk-api-core": "0.0.570",
|
|
30
22
|
"@solana/web3.js": "1.92.1",
|
|
31
23
|
"@solana/spl-token": "0.4.6"
|
|
32
24
|
},
|
|
33
25
|
"peerDependencies": {
|
|
34
|
-
"@dynamic-labs/
|
|
35
|
-
"@dynamic-labs/
|
|
36
|
-
"@dynamic-labs/
|
|
37
|
-
"@dynamic-labs/
|
|
38
|
-
"@dynamic-labs/wallet-
|
|
26
|
+
"@dynamic-labs/assert-package-version": "4.0.0-alpha.40",
|
|
27
|
+
"@dynamic-labs/rpc-providers": "4.0.0-alpha.40",
|
|
28
|
+
"@dynamic-labs/types": "4.0.0-alpha.40",
|
|
29
|
+
"@dynamic-labs/utils": "4.0.0-alpha.40",
|
|
30
|
+
"@dynamic-labs/wallet-book": "4.0.0-alpha.40",
|
|
31
|
+
"@dynamic-labs/wallet-connector-core": "4.0.0-alpha.40",
|
|
39
32
|
"eventemitter3": "5.0.1"
|
|
40
33
|
}
|
|
41
34
|
}
|
|
@@ -7,13 +7,12 @@ var _tslib = require('../../_virtual/_tslib.cjs');
|
|
|
7
7
|
var web3_js = require('@solana/web3.js');
|
|
8
8
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
9
9
|
var utils = require('@dynamic-labs/utils');
|
|
10
|
-
var walletBook = require('@dynamic-labs/wallet-book');
|
|
11
10
|
var SolanaWallet = require('../wallet/SolanaWallet.cjs');
|
|
12
11
|
var extractNonce = require('../utils/extractNonce/extractNonce.cjs');
|
|
13
12
|
var getGenesisHashLSKey = require('../utils/getGenesisHashLSKey/getGenesisHashLSKey.cjs');
|
|
14
13
|
|
|
15
14
|
const MEMO_PROGRAM_ID = new web3_js.PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
|
|
16
|
-
class
|
|
15
|
+
class SolanaWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
17
16
|
constructor(opts) {
|
|
18
17
|
var _a;
|
|
19
18
|
super(opts);
|
|
@@ -24,7 +23,8 @@ class SolWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
24
23
|
this.connectedChain = 'SOL';
|
|
25
24
|
this.solNetworks = opts.solNetworks;
|
|
26
25
|
this.chainRpcProviders = opts.chainRpcProviders;
|
|
27
|
-
|
|
26
|
+
this.connectionConfig = opts.connectionConfig;
|
|
27
|
+
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerSolanaProviders(this.connectionConfig);
|
|
28
28
|
}
|
|
29
29
|
getNetwork() {
|
|
30
30
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -55,13 +55,13 @@ class SolWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
getWalletClient() {
|
|
58
|
-
var _a;
|
|
58
|
+
var _a, _b;
|
|
59
59
|
const [network] = this.solNetworks;
|
|
60
60
|
if (!network) {
|
|
61
61
|
throw new utils.DynamicError('No enabled networks');
|
|
62
62
|
}
|
|
63
63
|
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
64
|
-
return new web3_js.Connection(rpcUrl, 'confirmed');
|
|
64
|
+
return new web3_js.Connection(rpcUrl, (_b = this.connectionConfig) !== null && _b !== void 0 ? _b : 'confirmed');
|
|
65
65
|
}
|
|
66
66
|
getPublicClient() {
|
|
67
67
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -92,10 +92,8 @@ class SolWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
92
92
|
return lamports / 1000000000;
|
|
93
93
|
}
|
|
94
94
|
canConnectWithHardwareWallet() {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
return false;
|
|
98
|
-
return wallet.hardwareWallets.includes('ledger');
|
|
95
|
+
var _a;
|
|
96
|
+
return Boolean((_a = this.metadata.supportedHardwareWallets) === null || _a === void 0 ? void 0 : _a.includes('ledger'));
|
|
99
97
|
}
|
|
100
98
|
signMessage(messageToSign) {
|
|
101
99
|
const _super = Object.create(null, {
|
|
@@ -172,4 +170,4 @@ class SolWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
172
170
|
}
|
|
173
171
|
}
|
|
174
172
|
|
|
175
|
-
exports.
|
|
173
|
+
exports.SolanaWalletConnector = SolanaWalletConnector;
|
|
@@ -1,24 +1,27 @@
|
|
|
1
|
-
import { Connection } from '@solana/web3.js';
|
|
2
|
-
import { Chain, IHardwareWalletConnector, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
1
|
+
import { Connection, ConnectionConfig } from '@solana/web3.js';
|
|
2
|
+
import { Chain, IHardwareWalletConnector, WalletConnectorBase, WalletMetadata } from '@dynamic-labs/wallet-connector-core';
|
|
3
3
|
import { GenericNetwork } from '@dynamic-labs/types';
|
|
4
4
|
import { WalletBookSchema } from '@dynamic-labs/wallet-book';
|
|
5
5
|
import { JwtVerifiedCredential } from '@dynamic-labs/sdk-api-core';
|
|
6
6
|
import { IChainRpcProviders } from '../rpc';
|
|
7
7
|
import { SolanaWallet } from '../wallet';
|
|
8
8
|
import { ISolana } from '../types';
|
|
9
|
-
export type
|
|
9
|
+
export type SolanaWalletConnectorOpts = {
|
|
10
10
|
chainRpcProviders: IChainRpcProviders;
|
|
11
11
|
solNetworks: GenericNetwork[];
|
|
12
12
|
walletBook: WalletBookSchema;
|
|
13
|
+
metadata?: WalletMetadata;
|
|
14
|
+
connectionConfig?: ConnectionConfig;
|
|
13
15
|
};
|
|
14
|
-
export declare abstract class
|
|
16
|
+
export declare abstract class SolanaWalletConnector extends WalletConnectorBase<typeof SolanaWallet> implements IHardwareWalletConnector {
|
|
15
17
|
isHardwareWalletEnabled: boolean;
|
|
16
18
|
verifiedCredentials: JwtVerifiedCredential[];
|
|
17
19
|
solNetworks: GenericNetwork[];
|
|
18
20
|
ChainWallet: typeof SolanaWallet;
|
|
19
21
|
supportedChains: Chain[];
|
|
20
22
|
connectedChain: Chain;
|
|
21
|
-
|
|
23
|
+
protected connectionConfig: ConnectionConfig | undefined;
|
|
24
|
+
constructor(opts: SolanaWalletConnectorOpts);
|
|
22
25
|
getNetwork(): Promise<string>;
|
|
23
26
|
endSession(): Promise<void>;
|
|
24
27
|
getWalletClient(): Connection;
|
|
@@ -3,13 +3,12 @@ import { __awaiter } from '../../_virtual/_tslib.js';
|
|
|
3
3
|
import { PublicKey, Connection, Transaction, TransactionInstruction } from '@solana/web3.js';
|
|
4
4
|
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
5
5
|
import { DynamicError, isLedgerAddressViaVerifiedCredentials, NotSupportedError } from '@dynamic-labs/utils';
|
|
6
|
-
import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
|
|
7
6
|
import { SolanaWallet } from '../wallet/SolanaWallet.js';
|
|
8
7
|
import { extractNonce } from '../utils/extractNonce/extractNonce.js';
|
|
9
8
|
import { getGenesisHashLSKey } from '../utils/getGenesisHashLSKey/getGenesisHashLSKey.js';
|
|
10
9
|
|
|
11
10
|
const MEMO_PROGRAM_ID = new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
|
|
12
|
-
class
|
|
11
|
+
class SolanaWalletConnector extends WalletConnectorBase {
|
|
13
12
|
constructor(opts) {
|
|
14
13
|
var _a;
|
|
15
14
|
super(opts);
|
|
@@ -20,7 +19,8 @@ class SolWalletConnector extends WalletConnectorBase {
|
|
|
20
19
|
this.connectedChain = 'SOL';
|
|
21
20
|
this.solNetworks = opts.solNetworks;
|
|
22
21
|
this.chainRpcProviders = opts.chainRpcProviders;
|
|
23
|
-
|
|
22
|
+
this.connectionConfig = opts.connectionConfig;
|
|
23
|
+
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerSolanaProviders(this.connectionConfig);
|
|
24
24
|
}
|
|
25
25
|
getNetwork() {
|
|
26
26
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -51,13 +51,13 @@ class SolWalletConnector extends WalletConnectorBase {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
getWalletClient() {
|
|
54
|
-
var _a;
|
|
54
|
+
var _a, _b;
|
|
55
55
|
const [network] = this.solNetworks;
|
|
56
56
|
if (!network) {
|
|
57
57
|
throw new DynamicError('No enabled networks');
|
|
58
58
|
}
|
|
59
59
|
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
60
|
-
return new Connection(rpcUrl, 'confirmed');
|
|
60
|
+
return new Connection(rpcUrl, (_b = this.connectionConfig) !== null && _b !== void 0 ? _b : 'confirmed');
|
|
61
61
|
}
|
|
62
62
|
getPublicClient() {
|
|
63
63
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -88,10 +88,8 @@ class SolWalletConnector extends WalletConnectorBase {
|
|
|
88
88
|
return lamports / 1000000000;
|
|
89
89
|
}
|
|
90
90
|
canConnectWithHardwareWallet() {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return false;
|
|
94
|
-
return wallet.hardwareWallets.includes('ledger');
|
|
91
|
+
var _a;
|
|
92
|
+
return Boolean((_a = this.metadata.supportedHardwareWallets) === null || _a === void 0 ? void 0 : _a.includes('ledger'));
|
|
95
93
|
}
|
|
96
94
|
signMessage(messageToSign) {
|
|
97
95
|
const _super = Object.create(null, {
|
|
@@ -168,4 +166,4 @@ class SolWalletConnector extends WalletConnectorBase {
|
|
|
168
166
|
}
|
|
169
167
|
}
|
|
170
168
|
|
|
171
|
-
export {
|
|
169
|
+
export { SolanaWalletConnector };
|
package/src/connector/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './SolanaWalletConnector';
|
package/src/index.cjs
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var assertPackageVersion = require('@dynamic-labs/assert-package-version');
|
|
7
|
+
var _package = require('../package.cjs');
|
|
8
|
+
var SolanaWalletConnector = require('./connector/SolanaWalletConnector.cjs');
|
|
7
9
|
require('./rpc/RpcProviderSolana/RpcProviderSolana.cjs');
|
|
8
10
|
var rpcProviders = require('@dynamic-labs/rpc-providers');
|
|
9
11
|
var solanaProvidersSelector = require('./rpc/solanaProvidersSelector/solanaProvidersSelector.cjs');
|
|
@@ -12,20 +14,22 @@ var decodeTransactionFromBase64 = require('./utils/decodeTransactionFromBase64/d
|
|
|
12
14
|
var isVersionedTransaction = require('./utils/isVersionedTransaction/isVersionedTransaction.cjs');
|
|
13
15
|
var encodeTransactionToBase64 = require('./utils/encodeTransactionToBase64/encodeTransactionToBase64.cjs');
|
|
14
16
|
var getGenesisHashLSKey = require('./utils/getGenesisHashLSKey/getGenesisHashLSKey.cjs');
|
|
17
|
+
var isTransactionSigned = require('./utils/isTransactionSigned/isTransactionSigned.cjs');
|
|
15
18
|
var SolanaWallet = require('./wallet/SolanaWallet.cjs');
|
|
16
19
|
var isSolanaWallet = require('./wallet/isSolanaWallet/isSolanaWallet.cjs');
|
|
17
20
|
var isLedgerSolanaWallet = require('./wallet/isLedgerSolanaWallet/isLedgerSolanaWallet.cjs');
|
|
18
21
|
var constants = require('./constants.cjs');
|
|
19
22
|
|
|
23
|
+
assertPackageVersion.assertPackageVersion('@dynamic-labs/solana-core', _package.version);
|
|
20
24
|
|
|
21
|
-
|
|
22
|
-
exports.SolWalletConnector = SolWalletConnector.SolWalletConnector;
|
|
25
|
+
exports.SolanaWalletConnector = SolanaWalletConnector.SolanaWalletConnector;
|
|
23
26
|
exports.solanaProvidersSelector = solanaProvidersSelector.solanaProvidersSelector;
|
|
24
27
|
exports.SolanaUiTransaction = SolanaUiTransaction.SolanaUiTransaction;
|
|
25
28
|
exports.decodeTransactionFromBase64 = decodeTransactionFromBase64.decodeTransactionFromBase64;
|
|
26
29
|
exports.isVersionedTransaction = isVersionedTransaction.isVersionedTransaction;
|
|
27
30
|
exports.encodeTransactionToBase64 = encodeTransactionToBase64.encodeTransactionToBase64;
|
|
28
31
|
exports.getGenesisHashLSKey = getGenesisHashLSKey.getGenesisHashLSKey;
|
|
32
|
+
exports.isTxAlreadySigned = isTransactionSigned.isTxAlreadySigned;
|
|
29
33
|
exports.SolanaWallet = SolanaWallet.SolanaWallet;
|
|
30
34
|
exports.isSolanaWallet = isSolanaWallet.isSolanaWallet;
|
|
31
35
|
exports.isLedgerSolanaWallet = isLedgerSolanaWallet.isLedgerSolanaWallet;
|
package/src/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
|
-
|
|
2
|
+
import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
|
|
3
|
+
import { version } from '../package.js';
|
|
4
|
+
export { SolanaWalletConnector } from './connector/SolanaWalletConnector.js';
|
|
3
5
|
import './rpc/RpcProviderSolana/RpcProviderSolana.js';
|
|
4
6
|
export * from '@dynamic-labs/rpc-providers';
|
|
5
7
|
export { solanaProvidersSelector } from './rpc/solanaProvidersSelector/solanaProvidersSelector.js';
|
|
@@ -8,7 +10,10 @@ export { decodeTransactionFromBase64 } from './utils/decodeTransactionFromBase64
|
|
|
8
10
|
export { isVersionedTransaction } from './utils/isVersionedTransaction/isVersionedTransaction.js';
|
|
9
11
|
export { encodeTransactionToBase64 } from './utils/encodeTransactionToBase64/encodeTransactionToBase64.js';
|
|
10
12
|
export { getGenesisHashLSKey } from './utils/getGenesisHashLSKey/getGenesisHashLSKey.js';
|
|
13
|
+
export { isTxAlreadySigned } from './utils/isTransactionSigned/isTransactionSigned.js';
|
|
11
14
|
export { SolanaWallet } from './wallet/SolanaWallet.js';
|
|
12
15
|
export { isSolanaWallet } from './wallet/isSolanaWallet/isSolanaWallet.js';
|
|
13
16
|
export { isLedgerSolanaWallet } from './wallet/isLedgerSolanaWallet/isLedgerSolanaWallet.js';
|
|
14
17
|
export { SOLANA_GENESIS_HASH } from './constants.js';
|
|
18
|
+
|
|
19
|
+
assertPackageVersion('@dynamic-labs/solana-core', version);
|
|
@@ -9,14 +9,14 @@ rpcProviders.ChainRpcProviders.getSolanaProviderByChainId = (rpcProviders, chain
|
|
|
9
9
|
const provider = (_a = rpcProviders['solana']) === null || _a === void 0 ? void 0 : _a.find((rpcProvider) => rpcProvider.chainId === chainId);
|
|
10
10
|
return provider;
|
|
11
11
|
};
|
|
12
|
-
rpcProviders.ChainRpcProviders.registerSolanaProviders = () => {
|
|
12
|
+
rpcProviders.ChainRpcProviders.registerSolanaProviders = (connectionConfig) => {
|
|
13
13
|
rpcProviders.ChainRpcProviders.registerChainProviders(rpcProviders.ProviderChain.SOLANA, (config) => {
|
|
14
14
|
const rpcProviders = {};
|
|
15
15
|
if (config === null || config === void 0 ? void 0 : config.solana) {
|
|
16
16
|
rpcProviders.solana = config.solana.map((network) => {
|
|
17
17
|
var _a;
|
|
18
18
|
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
19
|
-
const provider = new web3_js.Connection(rpcUrl);
|
|
19
|
+
const provider = new web3_js.Connection(rpcUrl, connectionConfig);
|
|
20
20
|
return {
|
|
21
21
|
chainId: network.chainId.toString(),
|
|
22
22
|
chainName: network.name,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Connection } from '@solana/web3.js';
|
|
1
|
+
import { Connection, ConnectionConfig } from '@solana/web3.js';
|
|
2
2
|
import { RpcProviders } from '@dynamic-labs/rpc-providers';
|
|
3
3
|
type ISolanaRpcProvider = {
|
|
4
4
|
chainId: string;
|
|
@@ -12,7 +12,7 @@ declare module '@dynamic-labs/rpc-providers' {
|
|
|
12
12
|
}
|
|
13
13
|
interface IChainRpcProviders {
|
|
14
14
|
getSolanaProviderByChainId(rpcProviders: RpcProviders, chainId: string): SolanaRpcProvider | undefined;
|
|
15
|
-
registerSolanaProviders(): void;
|
|
15
|
+
registerSolanaProviders(connectionConfig?: ConnectionConfig): void;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
export {};
|
|
@@ -7,14 +7,14 @@ ChainRpcProviders.getSolanaProviderByChainId = (rpcProviders, chainId) => {
|
|
|
7
7
|
const provider = (_a = rpcProviders['solana']) === null || _a === void 0 ? void 0 : _a.find((rpcProvider) => rpcProvider.chainId === chainId);
|
|
8
8
|
return provider;
|
|
9
9
|
};
|
|
10
|
-
ChainRpcProviders.registerSolanaProviders = () => {
|
|
10
|
+
ChainRpcProviders.registerSolanaProviders = (connectionConfig) => {
|
|
11
11
|
ChainRpcProviders.registerChainProviders(ProviderChain.SOLANA, (config) => {
|
|
12
12
|
const rpcProviders = {};
|
|
13
13
|
if (config === null || config === void 0 ? void 0 : config.solana) {
|
|
14
14
|
rpcProviders.solana = config.solana.map((network) => {
|
|
15
15
|
var _a;
|
|
16
16
|
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
17
|
-
const provider = new Connection(rpcUrl);
|
|
17
|
+
const provider = new Connection(rpcUrl, connectionConfig);
|
|
18
18
|
return {
|
|
19
19
|
chainId: network.chainId.toString(),
|
|
20
20
|
chainName: network.name,
|
|
@@ -7,19 +7,80 @@ var _tslib = require('../../../_virtual/_tslib.cjs');
|
|
|
7
7
|
var web3_js = require('@solana/web3.js');
|
|
8
8
|
var splToken = require('@solana/spl-token');
|
|
9
9
|
var utils = require('@dynamic-labs/utils');
|
|
10
|
+
var isTransactionSigned = require('../isTransactionSigned/isTransactionSigned.cjs');
|
|
10
11
|
|
|
11
12
|
const LAMPORTS_PER_SOL = 1000000000;
|
|
12
13
|
class SolanaUiTransaction {
|
|
13
|
-
constructor({ onSubmit, from, connection,
|
|
14
|
+
constructor({ onSubmit, from, connection, multipleTransactions, }) {
|
|
14
15
|
this.chain = 'SOL';
|
|
15
16
|
this.data = undefined;
|
|
16
17
|
this.fee = { gas: undefined };
|
|
17
|
-
this.feeDeducted = false;
|
|
18
18
|
this.formatNonNativeToken = (value, decimals) => (Number(value) / Number(Math.pow(10, decimals))).toString();
|
|
19
19
|
this.from = from;
|
|
20
20
|
this.onSubmit = onSubmit;
|
|
21
21
|
this.connection = connection;
|
|
22
|
-
this.
|
|
22
|
+
this.multipleTransactions = multipleTransactions;
|
|
23
|
+
}
|
|
24
|
+
fetchFee() {
|
|
25
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
if (this.fee.gas)
|
|
27
|
+
return;
|
|
28
|
+
let transactions = this.multipleTransactions;
|
|
29
|
+
// for send balance flow, create the transaction and then estimate it
|
|
30
|
+
if (!transactions) {
|
|
31
|
+
const tx = yield this.createTransactionSafe();
|
|
32
|
+
if (!tx)
|
|
33
|
+
return;
|
|
34
|
+
transactions = tx instanceof Array ? tx : [tx];
|
|
35
|
+
}
|
|
36
|
+
const { blockhash } = yield this.connection.getLatestBlockhash();
|
|
37
|
+
const compiledMessages = yield Promise.all(transactions.map((tx) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
if ('version' in tx) {
|
|
39
|
+
if (!(yield isTransactionSigned.isTxAlreadySigned(tx))) {
|
|
40
|
+
tx.message.recentBlockhash = blockhash;
|
|
41
|
+
}
|
|
42
|
+
return tx.message;
|
|
43
|
+
}
|
|
44
|
+
if (!(yield isTransactionSigned.isTxAlreadySigned(tx))) {
|
|
45
|
+
tx.recentBlockhash = blockhash;
|
|
46
|
+
}
|
|
47
|
+
return tx.compileMessage();
|
|
48
|
+
})));
|
|
49
|
+
if (compiledMessages.some((msg) => !msg)) {
|
|
50
|
+
throw new Error('Invalid transaction');
|
|
51
|
+
}
|
|
52
|
+
const getFeeWithRetry = (message) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
let res = yield this.connection.getFeeForMessage(message);
|
|
54
|
+
let retryCount = 0;
|
|
55
|
+
while (res.value === null && retryCount < 5) {
|
|
56
|
+
res = yield this.connection.getFeeForMessage(message);
|
|
57
|
+
retryCount++;
|
|
58
|
+
}
|
|
59
|
+
return res.value ? BigInt(res.value) : BigInt(0);
|
|
60
|
+
});
|
|
61
|
+
const fees = yield Promise.all(compiledMessages.map((message) => getFeeWithRetry(message)));
|
|
62
|
+
this.fee.gas = fees.reduce((acc, fee) => acc + fee, BigInt(0));
|
|
63
|
+
if (this.fee.gas === BigInt(0)) {
|
|
64
|
+
this.fee.gas = undefined;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// if one of the transactions is not sponsored,
|
|
69
|
+
// then the simulation will have a solana transfer in it if it was successful
|
|
70
|
+
isGasSponsored() {
|
|
71
|
+
var _a;
|
|
72
|
+
if (!((_a = this.multipleTransactions) === null || _a === void 0 ? void 0 : _a.length))
|
|
73
|
+
return false;
|
|
74
|
+
return this.multipleTransactions.every((tx) => {
|
|
75
|
+
var _a;
|
|
76
|
+
if ('version' in tx) {
|
|
77
|
+
return this.from !== tx.message.staticAccountKeys[0].toBase58();
|
|
78
|
+
}
|
|
79
|
+
if ('feePayer' in tx) {
|
|
80
|
+
return this.from !== ((_a = tx.feePayer) === null || _a === void 0 ? void 0 : _a.toBase58());
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
});
|
|
23
84
|
}
|
|
24
85
|
parse(input) {
|
|
25
86
|
const floatValue = parseFloat(input);
|
|
@@ -40,7 +101,11 @@ class SolanaUiTransaction {
|
|
|
40
101
|
}
|
|
41
102
|
submit() {
|
|
42
103
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
43
|
-
|
|
104
|
+
if (this.multipleTransactions) {
|
|
105
|
+
return this.onSubmit();
|
|
106
|
+
}
|
|
107
|
+
// send balance modal transactions
|
|
108
|
+
const sendTransaction = (yield this.createTransaction());
|
|
44
109
|
return this.onSubmit(sendTransaction);
|
|
45
110
|
});
|
|
46
111
|
}
|
|
@@ -57,41 +122,6 @@ class SolanaUiTransaction {
|
|
|
57
122
|
}
|
|
58
123
|
return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
|
|
59
124
|
}
|
|
60
|
-
fetchFee() {
|
|
61
|
-
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
62
|
-
if (this.fee.gas)
|
|
63
|
-
return;
|
|
64
|
-
const transaction = yield this.createTransactionSafe();
|
|
65
|
-
if (!transaction) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
let compiledMessage;
|
|
69
|
-
const { blockhash } = yield this.connection.getLatestBlockhash();
|
|
70
|
-
if ('version' in transaction) {
|
|
71
|
-
transaction.message.recentBlockhash = blockhash;
|
|
72
|
-
compiledMessage = transaction.message;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
transaction.recentBlockhash = blockhash;
|
|
76
|
-
transaction.feePayer = new web3_js.PublicKey(this.from);
|
|
77
|
-
compiledMessage = transaction.compileMessage();
|
|
78
|
-
}
|
|
79
|
-
if (!compiledMessage) {
|
|
80
|
-
throw new Error('Invalid transaction');
|
|
81
|
-
}
|
|
82
|
-
let res = yield this.connection.getFeeForMessage(compiledMessage);
|
|
83
|
-
let retryCount = 0;
|
|
84
|
-
while (res.value === null && retryCount < 5) {
|
|
85
|
-
res = yield this.connection.getFeeForMessage(compiledMessage);
|
|
86
|
-
retryCount++;
|
|
87
|
-
}
|
|
88
|
-
this.fee.gas = res.value ? BigInt(res.value) : undefined;
|
|
89
|
-
if (!this.feeDeducted && this.fee.gas && this.value) {
|
|
90
|
-
this.value = this.value - this.fee.gas;
|
|
91
|
-
this.feeDeducted = true;
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
125
|
createTransaction() {
|
|
96
126
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
97
127
|
var _a;
|
|
@@ -99,8 +129,8 @@ class SolanaUiTransaction {
|
|
|
99
129
|
if (!to) {
|
|
100
130
|
throw new Error('Destination is required');
|
|
101
131
|
}
|
|
102
|
-
if (this.
|
|
103
|
-
return this.
|
|
132
|
+
if (this.multipleTransactions) {
|
|
133
|
+
return this.multipleTransactions;
|
|
104
134
|
}
|
|
105
135
|
const sendTransaction = new web3_js.Transaction();
|
|
106
136
|
const fromPubkey = new web3_js.PublicKey(this.from);
|
|
@@ -134,6 +164,10 @@ class SolanaUiTransaction {
|
|
|
134
164
|
toPubkey,
|
|
135
165
|
}));
|
|
136
166
|
}
|
|
167
|
+
// only set blockhash when we are creating the transaction, e.g send balance flow
|
|
168
|
+
const { blockhash } = yield this.connection.getLatestBlockhash();
|
|
169
|
+
sendTransaction.feePayer = new web3_js.PublicKey(this.from);
|
|
170
|
+
sendTransaction.recentBlockhash = blockhash;
|
|
137
171
|
return sendTransaction;
|
|
138
172
|
});
|
|
139
173
|
}
|
|
@@ -4,11 +4,10 @@ export declare const LAMPORTS_PER_SOL = 1000000000;
|
|
|
4
4
|
type SolanaUiTransactionProps = {
|
|
5
5
|
from: string;
|
|
6
6
|
connection: Connection;
|
|
7
|
-
onSubmit: (transaction
|
|
8
|
-
|
|
7
|
+
onSubmit: (transaction?: Transaction | VersionedTransaction) => Promise<any>;
|
|
8
|
+
multipleTransactions?: (Transaction | VersionedTransaction)[];
|
|
9
9
|
};
|
|
10
10
|
export declare class SolanaUiTransaction implements IUITransaction {
|
|
11
|
-
notEnoughFundsError: boolean | undefined;
|
|
12
11
|
to: string | undefined;
|
|
13
12
|
from: string;
|
|
14
13
|
value: bigint | undefined;
|
|
@@ -18,22 +17,23 @@ export declare class SolanaUiTransaction implements IUITransaction {
|
|
|
18
17
|
fee: {
|
|
19
18
|
gas: bigint | undefined;
|
|
20
19
|
};
|
|
21
|
-
|
|
22
|
-
feeDeducted: boolean;
|
|
20
|
+
multipleTransactions?: (Transaction | VersionedTransaction)[];
|
|
23
21
|
nonNativeAddress?: string;
|
|
24
22
|
nonNativeDecimal?: number;
|
|
25
23
|
nonNativeValue?: bigint;
|
|
26
24
|
private onSubmit;
|
|
27
25
|
private connection;
|
|
28
|
-
constructor({ onSubmit, from, connection,
|
|
26
|
+
constructor({ onSubmit, from, connection, multipleTransactions, }: SolanaUiTransactionProps);
|
|
27
|
+
nativePrice?: number | undefined;
|
|
28
|
+
fetchFee(): Promise<void>;
|
|
29
|
+
isGasSponsored(): boolean;
|
|
29
30
|
parse(input: string): bigint;
|
|
30
31
|
parseNonNativeToken(input: string, decimals: number): bigint;
|
|
31
32
|
formatNonNativeToken: (value: bigint, decimals: number) => string;
|
|
32
33
|
format(value: bigint, { precision }?: IUITransactionFormatOptions): string;
|
|
33
|
-
submit(): Promise<
|
|
34
|
+
submit(): Promise<any>;
|
|
34
35
|
getBalance(): Promise<bigint>;
|
|
35
36
|
validateAddressFormat(address: string): boolean;
|
|
36
|
-
fetchFee(): Promise<void>;
|
|
37
37
|
private createTransaction;
|
|
38
38
|
private createTransactionSafe;
|
|
39
39
|
}
|
|
@@ -3,19 +3,80 @@ import { __awaiter } from '../../../_virtual/_tslib.js';
|
|
|
3
3
|
import { PublicKey, Transaction, SystemProgram } from '@solana/web3.js';
|
|
4
4
|
import { getAssociatedTokenAddress, createAssociatedTokenAccountInstruction, createTransferInstruction } from '@solana/spl-token';
|
|
5
5
|
import { formatNumberText } from '@dynamic-labs/utils';
|
|
6
|
+
import { isTxAlreadySigned } from '../isTransactionSigned/isTransactionSigned.js';
|
|
6
7
|
|
|
7
8
|
const LAMPORTS_PER_SOL = 1000000000;
|
|
8
9
|
class SolanaUiTransaction {
|
|
9
|
-
constructor({ onSubmit, from, connection,
|
|
10
|
+
constructor({ onSubmit, from, connection, multipleTransactions, }) {
|
|
10
11
|
this.chain = 'SOL';
|
|
11
12
|
this.data = undefined;
|
|
12
13
|
this.fee = { gas: undefined };
|
|
13
|
-
this.feeDeducted = false;
|
|
14
14
|
this.formatNonNativeToken = (value, decimals) => (Number(value) / Number(Math.pow(10, decimals))).toString();
|
|
15
15
|
this.from = from;
|
|
16
16
|
this.onSubmit = onSubmit;
|
|
17
17
|
this.connection = connection;
|
|
18
|
-
this.
|
|
18
|
+
this.multipleTransactions = multipleTransactions;
|
|
19
|
+
}
|
|
20
|
+
fetchFee() {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
if (this.fee.gas)
|
|
23
|
+
return;
|
|
24
|
+
let transactions = this.multipleTransactions;
|
|
25
|
+
// for send balance flow, create the transaction and then estimate it
|
|
26
|
+
if (!transactions) {
|
|
27
|
+
const tx = yield this.createTransactionSafe();
|
|
28
|
+
if (!tx)
|
|
29
|
+
return;
|
|
30
|
+
transactions = tx instanceof Array ? tx : [tx];
|
|
31
|
+
}
|
|
32
|
+
const { blockhash } = yield this.connection.getLatestBlockhash();
|
|
33
|
+
const compiledMessages = yield Promise.all(transactions.map((tx) => __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
if ('version' in tx) {
|
|
35
|
+
if (!(yield isTxAlreadySigned(tx))) {
|
|
36
|
+
tx.message.recentBlockhash = blockhash;
|
|
37
|
+
}
|
|
38
|
+
return tx.message;
|
|
39
|
+
}
|
|
40
|
+
if (!(yield isTxAlreadySigned(tx))) {
|
|
41
|
+
tx.recentBlockhash = blockhash;
|
|
42
|
+
}
|
|
43
|
+
return tx.compileMessage();
|
|
44
|
+
})));
|
|
45
|
+
if (compiledMessages.some((msg) => !msg)) {
|
|
46
|
+
throw new Error('Invalid transaction');
|
|
47
|
+
}
|
|
48
|
+
const getFeeWithRetry = (message) => __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
let res = yield this.connection.getFeeForMessage(message);
|
|
50
|
+
let retryCount = 0;
|
|
51
|
+
while (res.value === null && retryCount < 5) {
|
|
52
|
+
res = yield this.connection.getFeeForMessage(message);
|
|
53
|
+
retryCount++;
|
|
54
|
+
}
|
|
55
|
+
return res.value ? BigInt(res.value) : BigInt(0);
|
|
56
|
+
});
|
|
57
|
+
const fees = yield Promise.all(compiledMessages.map((message) => getFeeWithRetry(message)));
|
|
58
|
+
this.fee.gas = fees.reduce((acc, fee) => acc + fee, BigInt(0));
|
|
59
|
+
if (this.fee.gas === BigInt(0)) {
|
|
60
|
+
this.fee.gas = undefined;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
// if one of the transactions is not sponsored,
|
|
65
|
+
// then the simulation will have a solana transfer in it if it was successful
|
|
66
|
+
isGasSponsored() {
|
|
67
|
+
var _a;
|
|
68
|
+
if (!((_a = this.multipleTransactions) === null || _a === void 0 ? void 0 : _a.length))
|
|
69
|
+
return false;
|
|
70
|
+
return this.multipleTransactions.every((tx) => {
|
|
71
|
+
var _a;
|
|
72
|
+
if ('version' in tx) {
|
|
73
|
+
return this.from !== tx.message.staticAccountKeys[0].toBase58();
|
|
74
|
+
}
|
|
75
|
+
if ('feePayer' in tx) {
|
|
76
|
+
return this.from !== ((_a = tx.feePayer) === null || _a === void 0 ? void 0 : _a.toBase58());
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
});
|
|
19
80
|
}
|
|
20
81
|
parse(input) {
|
|
21
82
|
const floatValue = parseFloat(input);
|
|
@@ -36,7 +97,11 @@ class SolanaUiTransaction {
|
|
|
36
97
|
}
|
|
37
98
|
submit() {
|
|
38
99
|
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
|
|
100
|
+
if (this.multipleTransactions) {
|
|
101
|
+
return this.onSubmit();
|
|
102
|
+
}
|
|
103
|
+
// send balance modal transactions
|
|
104
|
+
const sendTransaction = (yield this.createTransaction());
|
|
40
105
|
return this.onSubmit(sendTransaction);
|
|
41
106
|
});
|
|
42
107
|
}
|
|
@@ -53,41 +118,6 @@ class SolanaUiTransaction {
|
|
|
53
118
|
}
|
|
54
119
|
return /^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(address);
|
|
55
120
|
}
|
|
56
|
-
fetchFee() {
|
|
57
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
-
if (this.fee.gas)
|
|
59
|
-
return;
|
|
60
|
-
const transaction = yield this.createTransactionSafe();
|
|
61
|
-
if (!transaction) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
let compiledMessage;
|
|
65
|
-
const { blockhash } = yield this.connection.getLatestBlockhash();
|
|
66
|
-
if ('version' in transaction) {
|
|
67
|
-
transaction.message.recentBlockhash = blockhash;
|
|
68
|
-
compiledMessage = transaction.message;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
transaction.recentBlockhash = blockhash;
|
|
72
|
-
transaction.feePayer = new PublicKey(this.from);
|
|
73
|
-
compiledMessage = transaction.compileMessage();
|
|
74
|
-
}
|
|
75
|
-
if (!compiledMessage) {
|
|
76
|
-
throw new Error('Invalid transaction');
|
|
77
|
-
}
|
|
78
|
-
let res = yield this.connection.getFeeForMessage(compiledMessage);
|
|
79
|
-
let retryCount = 0;
|
|
80
|
-
while (res.value === null && retryCount < 5) {
|
|
81
|
-
res = yield this.connection.getFeeForMessage(compiledMessage);
|
|
82
|
-
retryCount++;
|
|
83
|
-
}
|
|
84
|
-
this.fee.gas = res.value ? BigInt(res.value) : undefined;
|
|
85
|
-
if (!this.feeDeducted && this.fee.gas && this.value) {
|
|
86
|
-
this.value = this.value - this.fee.gas;
|
|
87
|
-
this.feeDeducted = true;
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
121
|
createTransaction() {
|
|
92
122
|
return __awaiter(this, void 0, void 0, function* () {
|
|
93
123
|
var _a;
|
|
@@ -95,8 +125,8 @@ class SolanaUiTransaction {
|
|
|
95
125
|
if (!to) {
|
|
96
126
|
throw new Error('Destination is required');
|
|
97
127
|
}
|
|
98
|
-
if (this.
|
|
99
|
-
return this.
|
|
128
|
+
if (this.multipleTransactions) {
|
|
129
|
+
return this.multipleTransactions;
|
|
100
130
|
}
|
|
101
131
|
const sendTransaction = new Transaction();
|
|
102
132
|
const fromPubkey = new PublicKey(this.from);
|
|
@@ -130,6 +160,10 @@ class SolanaUiTransaction {
|
|
|
130
160
|
toPubkey,
|
|
131
161
|
}));
|
|
132
162
|
}
|
|
163
|
+
// only set blockhash when we are creating the transaction, e.g send balance flow
|
|
164
|
+
const { blockhash } = yield this.connection.getLatestBlockhash();
|
|
165
|
+
sendTransaction.feePayer = new PublicKey(this.from);
|
|
166
|
+
sendTransaction.recentBlockhash = blockhash;
|
|
133
167
|
return sendTransaction;
|
|
134
168
|
});
|
|
135
169
|
}
|
package/src/utils/index.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ export { decodeTransactionFromBase64 } from './decodeTransactionFromBase64';
|
|
|
3
3
|
export { isVersionedTransaction } from './isVersionedTransaction';
|
|
4
4
|
export { encodeTransactionToBase64, type EncodedTransaction, } from './encodeTransactionToBase64';
|
|
5
5
|
export { getGenesisHashLSKey } from './getGenesisHashLSKey';
|
|
6
|
+
export { isTxAlreadySigned } from './isTransactionSigned';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './isTransactionSigned';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
const isTxAlreadySigned = (transaction) => {
|
|
7
|
+
let alreadySigned = false;
|
|
8
|
+
if ('version' in transaction) {
|
|
9
|
+
alreadySigned = transaction.signatures.some((sig) => !sig.every((byte) => byte === 0));
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
alreadySigned = transaction.signatures.some((sig) => sig.signature);
|
|
13
|
+
}
|
|
14
|
+
return alreadySigned;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.isTxAlreadySigned = isTxAlreadySigned;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
const isTxAlreadySigned = (transaction) => {
|
|
3
|
+
let alreadySigned = false;
|
|
4
|
+
if ('version' in transaction) {
|
|
5
|
+
alreadySigned = transaction.signatures.some((sig) => !sig.every((byte) => byte === 0));
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
alreadySigned = transaction.signatures.some((sig) => sig.signature);
|
|
9
|
+
}
|
|
10
|
+
return alreadySigned;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { isTxAlreadySigned };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Connection } from '@solana/web3.js';
|
|
2
2
|
import { Wallet } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
-
import {
|
|
3
|
+
import { SolanaWalletConnector } from '../connector';
|
|
4
4
|
import { ISolana } from '../types';
|
|
5
|
-
export declare class SolanaWallet extends Wallet<
|
|
5
|
+
export declare class SolanaWallet extends Wallet<SolanaWalletConnector> {
|
|
6
6
|
/**
|
|
7
7
|
* Retrieves the RPC connection
|
|
8
8
|
* @returns A promise that resolves to the RPC connection
|