@dynamic-labs/embedded-wallet-solana 4.0.0-alpha.2 → 4.0.0-alpha.20
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 +183 -0
- package/package.cjs +5 -5
- package/package.js +5 -5
- package/package.json +13 -20
- package/src/index.cjs +3 -1
- package/src/index.js +4 -0
- package/src/lib/TurnkeySolanaWalletConnector/TurnkeySolanaSigner.cjs +2 -4
- package/src/lib/TurnkeySolanaWalletConnector/TurnkeySolanaSigner.d.ts +1 -1
- package/src/lib/TurnkeySolanaWalletConnector/TurnkeySolanaSigner.js +2 -4
- package/src/lib/TurnkeySolanaWalletConnector/TurnkeySolanaWalletConnector.cjs +39 -13
- package/src/lib/TurnkeySolanaWalletConnector/TurnkeySolanaWalletConnector.d.ts +1 -0
- package/src/lib/TurnkeySolanaWalletConnector/TurnkeySolanaWalletConnector.js +39 -13
- package/src/lib/utils/transactionDecoder/transactionDecoder.cjs +23 -9
- package/src/lib/utils/transactionDecoder/transactionDecoder.js +23 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,187 @@
|
|
|
1
1
|
|
|
2
|
+
## [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)
|
|
3
|
+
|
|
4
|
+
## [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)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* 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))
|
|
10
|
+
|
|
11
|
+
## [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)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* **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))
|
|
17
|
+
|
|
18
|
+
## [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)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* add support for eclipse ([#7255](https://github.com/dynamic-labs/dynamic-auth/issues/7255)) ([70e9830](https://github.com/dynamic-labs/dynamic-auth/commit/70e9830c6c801e0298825b914ee825b578350cf0))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Bug Fixes
|
|
27
|
+
|
|
28
|
+
* 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))
|
|
29
|
+
* 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))
|
|
30
|
+
|
|
31
|
+
## [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)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Features
|
|
35
|
+
|
|
36
|
+
* 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))
|
|
37
|
+
* 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))
|
|
38
|
+
* add support for compass and leap wallets ([9738749](https://github.com/dynamic-labs/dynamic-auth/commit/9738749bb5ed8e07a2582df255f683e4d408db93))
|
|
39
|
+
* 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))
|
|
40
|
+
* 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))
|
|
41
|
+
|
|
42
|
+
## [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)
|
|
43
|
+
|
|
44
|
+
## [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)
|
|
45
|
+
|
|
46
|
+
## [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)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Bug Fixes
|
|
50
|
+
|
|
51
|
+
* 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))
|
|
52
|
+
|
|
53
|
+
## [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)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
### Features
|
|
57
|
+
|
|
58
|
+
* 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))
|
|
59
|
+
* solana embedded signall headless ([#7132](https://github.com/dynamic-labs/dynamic-auth/issues/7132)) ([fe16b71](https://github.com/dynamic-labs/dynamic-auth/commit/fe16b71a4c0ad775f8de87ca899cfdd1071f11d6))
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### Bug Fixes
|
|
63
|
+
|
|
64
|
+
* 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))
|
|
65
|
+
* 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))
|
|
66
|
+
* 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))
|
|
67
|
+
* 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))
|
|
68
|
+
* 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)
|
|
69
|
+
* 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))
|
|
70
|
+
|
|
71
|
+
## [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)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### Bug Fixes
|
|
75
|
+
|
|
76
|
+
* 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))
|
|
77
|
+
|
|
78
|
+
## [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)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
### Bug Fixes
|
|
82
|
+
|
|
83
|
+
* 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))
|
|
84
|
+
|
|
85
|
+
## [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)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
### Features
|
|
89
|
+
|
|
90
|
+
* 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))
|
|
91
|
+
* 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))
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
### Bug Fixes
|
|
95
|
+
|
|
96
|
+
* 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))
|
|
97
|
+
|
|
98
|
+
## [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)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
### Features
|
|
102
|
+
|
|
103
|
+
* 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))
|
|
104
|
+
* 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))
|
|
105
|
+
* 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))
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
### Bug Fixes
|
|
109
|
+
|
|
110
|
+
* 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))
|
|
111
|
+
|
|
112
|
+
## [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)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
### Features
|
|
116
|
+
|
|
117
|
+
* 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))
|
|
118
|
+
* 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))
|
|
119
|
+
* 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))
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
### Bug Fixes
|
|
123
|
+
|
|
124
|
+
* 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))
|
|
125
|
+
* 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))
|
|
126
|
+
* 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))
|
|
127
|
+
* update version error text ([#7054](https://github.com/dynamic-labs/dynamic-auth/issues/7054)) ([713dacb](https://github.com/dynamic-labs/dynamic-auth/commit/713dacb79c2513323c2e6840d7418716011c2dcd))
|
|
128
|
+
* 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))
|
|
129
|
+
|
|
130
|
+
## [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)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
### ⚠ BREAKING CHANGES
|
|
134
|
+
|
|
135
|
+
* remove support to magic ([#7033](https://github.com/dynamic-labs/dynamic-auth/issues/7033)) ([0fdc41f](https://github.com/dynamic-labs/dynamic-auth/commit/0fdc41f05f87b32f56b73db068f984f18bdf69a0))
|
|
136
|
+
|
|
137
|
+
### Features
|
|
138
|
+
|
|
139
|
+
* global connectivity disconnect ([#7008](https://github.com/dynamic-labs/dynamic-auth/issues/7008)) ([80d705b](https://github.com/dynamic-labs/dynamic-auth/commit/80d705ba252aa3b01cbf4861507fed00e460215f))
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
### Bug Fixes
|
|
143
|
+
|
|
144
|
+
* 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))
|
|
145
|
+
* add retry to useConnectWithOtp ([#7012](https://github.com/dynamic-labs/dynamic-auth/issues/7012)) ([d551d72](https://github.com/dynamic-labs/dynamic-auth/commit/d551d72a463f8a03964858b30ec174d41985a7b1))
|
|
146
|
+
* 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))
|
|
147
|
+
* 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))
|
|
148
|
+
* 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))
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
## [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)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
### Features
|
|
155
|
+
|
|
156
|
+
* 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))
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
### Bug Fixes
|
|
160
|
+
|
|
161
|
+
* **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))
|
|
162
|
+
* react-native-extension to include esm ([#6965](https://github.com/dynamic-labs/DynamicAuth/issues/6965)) ([336825b](https://github.com/dynamic-labs/DynamicAuth/commit/336825b50142002bbc67c6f8850bd63030bf384b))
|
|
163
|
+
|
|
164
|
+
## [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)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
### Bug Fixes
|
|
168
|
+
|
|
169
|
+
* issue where builtin stream module was a dependency ([#6968](https://github.com/dynamic-labs/DynamicAuth/issues/6968)) ([0661129](https://github.com/dynamic-labs/DynamicAuth/commit/0661129920ba70ebbcd4d17ee5aa988c51d1b477))
|
|
170
|
+
* update in memory secure storage ([#6955](https://github.com/dynamic-labs/DynamicAuth/issues/6955)) ([697fc20](https://github.com/dynamic-labs/DynamicAuth/commit/697fc20740b243fa31ecf06e8b2ed9d09932a544))
|
|
171
|
+
|
|
172
|
+
## [4.0.0-alpha.3](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.2...v4.0.0-alpha.3) (2024-09-20)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
### Features
|
|
176
|
+
|
|
177
|
+
* developers provide global connectivity appkit project id ([#6941](https://github.com/dynamic-labs/DynamicAuth/issues/6941)) ([83760ea](https://github.com/dynamic-labs/DynamicAuth/commit/83760ea57591685b12caee945f173f6a7f9312d1))
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
### Bug Fixes
|
|
181
|
+
|
|
182
|
+
* don't try to set up event listeners if wallet provider doesn't support it ([#6943](https://github.com/dynamic-labs/DynamicAuth/issues/6943)) ([439f1bb](https://github.com/dynamic-labs/DynamicAuth/commit/439f1bbb3c765959756cfc6eeb8429e4018e0379))
|
|
183
|
+
* dont verify all signatures for solana embedded multisig tx ([#6953](https://github.com/dynamic-labs/DynamicAuth/issues/6953)) ([7a7973e](https://github.com/dynamic-labs/DynamicAuth/commit/7a7973e05f0960421b348a55c6a00c9fd873b0b7))
|
|
184
|
+
|
|
2
185
|
## [4.0.0-alpha.2](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.1...v4.0.0-alpha.2) (2024-09-18)
|
|
3
186
|
|
|
4
187
|
|
package/package.cjs
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
|
-
var version = "4.0.0-alpha.
|
|
6
|
+
var version = "4.0.0-alpha.20";
|
|
7
7
|
var dependencies = {
|
|
8
|
-
"@dynamic-labs/
|
|
9
|
-
"@dynamic-labs/
|
|
10
|
-
"@dynamic-labs/
|
|
11
|
-
"@dynamic-labs/
|
|
8
|
+
"@dynamic-labs/utils": "4.0.0-alpha.20",
|
|
9
|
+
"@dynamic-labs/logger": "4.0.0-alpha.20",
|
|
10
|
+
"@dynamic-labs/types": "4.0.0-alpha.20",
|
|
11
|
+
"@dynamic-labs/sdk-api-core": "0.0.559",
|
|
12
12
|
eventemitter3: "5.0.1",
|
|
13
13
|
"@solana/spl-token": "0.4.6",
|
|
14
14
|
"@solana/web3.js": "1.92.1",
|
package/package.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client'
|
|
2
|
-
var version = "4.0.0-alpha.
|
|
2
|
+
var version = "4.0.0-alpha.20";
|
|
3
3
|
var dependencies = {
|
|
4
|
-
"@dynamic-labs/
|
|
5
|
-
"@dynamic-labs/
|
|
6
|
-
"@dynamic-labs/
|
|
7
|
-
"@dynamic-labs/
|
|
4
|
+
"@dynamic-labs/utils": "4.0.0-alpha.20",
|
|
5
|
+
"@dynamic-labs/logger": "4.0.0-alpha.20",
|
|
6
|
+
"@dynamic-labs/types": "4.0.0-alpha.20",
|
|
7
|
+
"@dynamic-labs/sdk-api-core": "0.0.559",
|
|
8
8
|
eventemitter3: "5.0.1",
|
|
9
9
|
"@solana/spl-token": "0.4.6",
|
|
10
10
|
"@solana/web3.js": "1.92.1",
|
package/package.json
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/embedded-wallet-solana",
|
|
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/embedded-wallet-solana"
|
|
8
|
-
},
|
|
3
|
+
"version": "4.0.0-alpha.20",
|
|
9
4
|
"description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
|
|
10
|
-
"bugs": {
|
|
11
|
-
"url": "https://github.com/dynamic-labs/DynamicAuth/issues"
|
|
12
|
-
},
|
|
13
|
-
"homepage": "https://github.com/dynamic-labs/DynamicAuth#readme",
|
|
14
5
|
"author": "Dynamic Labs, Inc.",
|
|
15
6
|
"license": "MIT",
|
|
16
7
|
"main": "./src/index.cjs",
|
|
@@ -25,11 +16,12 @@
|
|
|
25
16
|
},
|
|
26
17
|
"./package.json": "./package.json"
|
|
27
18
|
},
|
|
19
|
+
"homepage": "https://www.dynamic.xyz/",
|
|
28
20
|
"dependencies": {
|
|
29
|
-
"@dynamic-labs/
|
|
30
|
-
"@dynamic-labs/
|
|
31
|
-
"@dynamic-labs/
|
|
32
|
-
"@dynamic-labs/
|
|
21
|
+
"@dynamic-labs/utils": "4.0.0-alpha.20",
|
|
22
|
+
"@dynamic-labs/logger": "4.0.0-alpha.20",
|
|
23
|
+
"@dynamic-labs/types": "4.0.0-alpha.20",
|
|
24
|
+
"@dynamic-labs/sdk-api-core": "0.0.559",
|
|
33
25
|
"eventemitter3": "5.0.1",
|
|
34
26
|
"@solana/spl-token": "0.4.6",
|
|
35
27
|
"@solana/web3.js": "1.92.1",
|
|
@@ -37,12 +29,13 @@
|
|
|
37
29
|
"@turnkey/iframe-stamper": "2.0.0",
|
|
38
30
|
"@turnkey/solana": "0.3.9",
|
|
39
31
|
"@turnkey/webauthn-stamper": "0.5.0",
|
|
40
|
-
"@dynamic-labs/
|
|
41
|
-
"@dynamic-labs/
|
|
42
|
-
"@dynamic-labs/
|
|
43
|
-
"@dynamic-labs/
|
|
44
|
-
"@dynamic-labs/wallet-
|
|
45
|
-
"@dynamic-labs/
|
|
32
|
+
"@dynamic-labs/assert-package-version": "4.0.0-alpha.20",
|
|
33
|
+
"@dynamic-labs/embedded-wallet": "4.0.0-alpha.20",
|
|
34
|
+
"@dynamic-labs/rpc-providers": "4.0.0-alpha.20",
|
|
35
|
+
"@dynamic-labs/solana-core": "4.0.0-alpha.20",
|
|
36
|
+
"@dynamic-labs/wallet-book": "4.0.0-alpha.20",
|
|
37
|
+
"@dynamic-labs/wallet-connector-core": "4.0.0-alpha.20",
|
|
38
|
+
"@dynamic-labs/webauthn": "4.0.0-alpha.20",
|
|
46
39
|
"react-dom": "18.2.0",
|
|
47
40
|
"viem": "2.9.25"
|
|
48
41
|
},
|
package/src/index.cjs
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
|
+
var assertPackageVersion = require('@dynamic-labs/assert-package-version');
|
|
7
|
+
var _package = require('../package.cjs');
|
|
6
8
|
var TurnkeySolanaWalletConnectors = require('./TurnkeySolanaWalletConnectors.cjs');
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
assertPackageVersion.assertPackageVersion('@dynamic-labs/embedded-wallet-solana', _package.version);
|
|
9
11
|
|
|
10
12
|
exports.TurnkeySolanaWalletConnectors = TurnkeySolanaWalletConnectors.TurnkeySolanaWalletConnectors;
|
package/src/index.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
|
+
import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
|
|
3
|
+
import { version } from '../package.js';
|
|
2
4
|
export { TurnkeySolanaWalletConnectors } from './TurnkeySolanaWalletConnectors.js';
|
|
5
|
+
|
|
6
|
+
assertPackageVersion('@dynamic-labs/embedded-wallet-solana', version);
|
|
@@ -27,11 +27,9 @@ class TurnkeySolanaSigner {
|
|
|
27
27
|
return this.walletConnector.signTransaction(transaction);
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
-
signAllTransactions(
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
|
-
_transactions) {
|
|
30
|
+
signAllTransactions(transactions) {
|
|
33
31
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
|
|
32
|
+
return this.walletConnector.signAllTransactions(transactions);
|
|
35
33
|
});
|
|
36
34
|
}
|
|
37
35
|
signAndSendTransaction(transaction, options) {
|
|
@@ -32,7 +32,7 @@ export declare class TurnkeySolanaSigner implements IEmbeddedWalletSolanaSigner
|
|
|
32
32
|
});
|
|
33
33
|
signMessage(encodedMessage: Uint8Array): Promise<SignedMessage>;
|
|
34
34
|
signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;
|
|
35
|
-
signAllTransactions<T extends Transaction | VersionedTransaction>(
|
|
35
|
+
signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]>;
|
|
36
36
|
signAndSendTransaction<T extends Transaction | VersionedTransaction>(transaction: T, options?: SendOptions): Promise<{
|
|
37
37
|
signature: TransactionSignature;
|
|
38
38
|
}>;
|
|
@@ -23,11 +23,9 @@ class TurnkeySolanaSigner {
|
|
|
23
23
|
return this.walletConnector.signTransaction(transaction);
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
-
signAllTransactions(
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28
|
-
_transactions) {
|
|
26
|
+
signAllTransactions(transactions) {
|
|
29
27
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
|
|
28
|
+
return this.walletConnector.signAllTransactions(transactions);
|
|
31
29
|
});
|
|
32
30
|
}
|
|
33
31
|
signAndSendTransaction(transaction, options) {
|
|
@@ -288,24 +288,42 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
|
|
|
288
288
|
return transaction;
|
|
289
289
|
});
|
|
290
290
|
}
|
|
291
|
+
signAllTransactions(transactions) {
|
|
292
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
293
|
+
yield this.createOrRestoreSession();
|
|
294
|
+
let account = yield this.getTurnkeyAccount();
|
|
295
|
+
const address = this.turnkeyAddress;
|
|
296
|
+
if (!account || !address) {
|
|
297
|
+
throw new Error('No turnkey account');
|
|
298
|
+
}
|
|
299
|
+
try {
|
|
300
|
+
const signedTransactions = yield account.signAllTransactions(transactions, address);
|
|
301
|
+
return signedTransactions;
|
|
302
|
+
}
|
|
303
|
+
catch (err) {
|
|
304
|
+
if (embeddedWallet.TURNKEY_SDK_SESSION_KEY_RETRYABLE_ERRORS.some((errorMsg) => err.message.includes(errorMsg))) {
|
|
305
|
+
yield this.removeSessionKeys();
|
|
306
|
+
yield this.createOrRestoreSession({
|
|
307
|
+
ignoreRestore: true,
|
|
308
|
+
});
|
|
309
|
+
account = (yield this.getTurnkeyAccount());
|
|
310
|
+
const signedTransactions = yield account.signAllTransactions(transactions, address);
|
|
311
|
+
return signedTransactions;
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
embeddedWallet.logger.error('[TK] failed to perform SignAllTransactions activity', err);
|
|
315
|
+
throw err;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
}
|
|
291
320
|
internalSignAndSendTransaction(transaction, options) {
|
|
292
321
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
293
|
-
var _a;
|
|
294
322
|
if (!this.turnkeyAddress)
|
|
295
323
|
throw new utils.DynamicError('Solana wallet not found');
|
|
296
324
|
const currentConnection = this.getConnection('confirmed');
|
|
297
|
-
const blockhash = yield currentConnection.getLatestBlockhash();
|
|
298
|
-
if ('version' in transaction) {
|
|
299
|
-
transaction.message.recentBlockhash =
|
|
300
|
-
blockhash.blockhash;
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
transaction.recentBlockhash = blockhash.blockhash;
|
|
304
|
-
transaction.feePayer =
|
|
305
|
-
(_a = transaction.feePayer) !== null && _a !== void 0 ? _a : new web3_js.PublicKey(this.turnkeyAddress);
|
|
306
|
-
}
|
|
307
325
|
const signedTransaction = yield this.signTransaction(transaction);
|
|
308
|
-
const signature = yield currentConnection.sendRawTransaction(
|
|
326
|
+
const signature = yield currentConnection.sendRawTransaction(signedTransaction.serialize(), options);
|
|
309
327
|
// listen for tx confirmation until 60 seconds, which is ~150 blocks expiration
|
|
310
328
|
return new Promise((resolve, reject) => {
|
|
311
329
|
const timeout = setTimeout(() => {
|
|
@@ -329,8 +347,16 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
|
|
|
329
347
|
if (!this.turnkeyAddress)
|
|
330
348
|
throw new utils.DynamicError('Solana wallet not found');
|
|
331
349
|
let optimizedTransaction = transaction;
|
|
350
|
+
let alreadySigned = false;
|
|
351
|
+
if ('version' in transaction) {
|
|
352
|
+
alreadySigned = transaction.signatures.some((sig) => !sig.every((byte) => byte === 0));
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
alreadySigned = transaction.signatures.some((sig) => sig.signature);
|
|
356
|
+
}
|
|
332
357
|
try {
|
|
333
|
-
|
|
358
|
+
// we cannot optimize partially signed transactions as once a tx is modified the signatures are no longer valid
|
|
359
|
+
if ((yield this.getNetwork()) === 'mainnet' && !alreadySigned) {
|
|
334
360
|
optimizedTransaction = (yield api.optimizeSolanaTransaction(this.getEnvId(), transaction, (_a = this.turnkeyAddress) !== null && _a !== void 0 ? _a : ''));
|
|
335
361
|
}
|
|
336
362
|
}
|
|
@@ -48,6 +48,7 @@ export declare class TurnkeySolanaWalletConnector extends TurnkeyWalletConnector
|
|
|
48
48
|
getEnvId: () => any;
|
|
49
49
|
signMessage(messageToSign: string): Promise<string | undefined>;
|
|
50
50
|
signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;
|
|
51
|
+
signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]>;
|
|
51
52
|
internalSignAndSendTransaction<T extends Transaction | VersionedTransaction>(transaction: T, options?: SendOptions): Promise<string>;
|
|
52
53
|
signAndSendTransaction<T extends Transaction | VersionedTransaction>(transaction: T, options?: SendOptions): Promise<string>;
|
|
53
54
|
sendTransaction<T extends Transaction | VersionedTransaction>(transaction: T, connection: Connection, options?: SendTransactionOptions): Promise<string>;
|
|
@@ -284,24 +284,42 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
|
|
|
284
284
|
return transaction;
|
|
285
285
|
});
|
|
286
286
|
}
|
|
287
|
+
signAllTransactions(transactions) {
|
|
288
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
289
|
+
yield this.createOrRestoreSession();
|
|
290
|
+
let account = yield this.getTurnkeyAccount();
|
|
291
|
+
const address = this.turnkeyAddress;
|
|
292
|
+
if (!account || !address) {
|
|
293
|
+
throw new Error('No turnkey account');
|
|
294
|
+
}
|
|
295
|
+
try {
|
|
296
|
+
const signedTransactions = yield account.signAllTransactions(transactions, address);
|
|
297
|
+
return signedTransactions;
|
|
298
|
+
}
|
|
299
|
+
catch (err) {
|
|
300
|
+
if (TURNKEY_SDK_SESSION_KEY_RETRYABLE_ERRORS.some((errorMsg) => err.message.includes(errorMsg))) {
|
|
301
|
+
yield this.removeSessionKeys();
|
|
302
|
+
yield this.createOrRestoreSession({
|
|
303
|
+
ignoreRestore: true,
|
|
304
|
+
});
|
|
305
|
+
account = (yield this.getTurnkeyAccount());
|
|
306
|
+
const signedTransactions = yield account.signAllTransactions(transactions, address);
|
|
307
|
+
return signedTransactions;
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
logger.error('[TK] failed to perform SignAllTransactions activity', err);
|
|
311
|
+
throw err;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}
|
|
287
316
|
internalSignAndSendTransaction(transaction, options) {
|
|
288
317
|
return __awaiter(this, void 0, void 0, function* () {
|
|
289
|
-
var _a;
|
|
290
318
|
if (!this.turnkeyAddress)
|
|
291
319
|
throw new DynamicError('Solana wallet not found');
|
|
292
320
|
const currentConnection = this.getConnection('confirmed');
|
|
293
|
-
const blockhash = yield currentConnection.getLatestBlockhash();
|
|
294
|
-
if ('version' in transaction) {
|
|
295
|
-
transaction.message.recentBlockhash =
|
|
296
|
-
blockhash.blockhash;
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
transaction.recentBlockhash = blockhash.blockhash;
|
|
300
|
-
transaction.feePayer =
|
|
301
|
-
(_a = transaction.feePayer) !== null && _a !== void 0 ? _a : new PublicKey(this.turnkeyAddress);
|
|
302
|
-
}
|
|
303
321
|
const signedTransaction = yield this.signTransaction(transaction);
|
|
304
|
-
const signature = yield currentConnection.sendRawTransaction(
|
|
322
|
+
const signature = yield currentConnection.sendRawTransaction(signedTransaction.serialize(), options);
|
|
305
323
|
// listen for tx confirmation until 60 seconds, which is ~150 blocks expiration
|
|
306
324
|
return new Promise((resolve, reject) => {
|
|
307
325
|
const timeout = setTimeout(() => {
|
|
@@ -325,8 +343,16 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
|
|
|
325
343
|
if (!this.turnkeyAddress)
|
|
326
344
|
throw new DynamicError('Solana wallet not found');
|
|
327
345
|
let optimizedTransaction = transaction;
|
|
346
|
+
let alreadySigned = false;
|
|
347
|
+
if ('version' in transaction) {
|
|
348
|
+
alreadySigned = transaction.signatures.some((sig) => !sig.every((byte) => byte === 0));
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
alreadySigned = transaction.signatures.some((sig) => sig.signature);
|
|
352
|
+
}
|
|
328
353
|
try {
|
|
329
|
-
|
|
354
|
+
// we cannot optimize partially signed transactions as once a tx is modified the signatures are no longer valid
|
|
355
|
+
if ((yield this.getNetwork()) === 'mainnet' && !alreadySigned) {
|
|
330
356
|
optimizedTransaction = (yield optimizeSolanaTransaction(this.getEnvId(), transaction, (_a = this.turnkeyAddress) !== null && _a !== void 0 ? _a : ''));
|
|
331
357
|
}
|
|
332
358
|
}
|
|
@@ -10,16 +10,27 @@ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
|
10
10
|
var utils = require('@dynamic-labs/utils');
|
|
11
11
|
|
|
12
12
|
const getTotalSolanaSpend = (transaction, connection, thisAddress) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
-
var _a, _b, _c, _d, _e, _f;
|
|
13
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
14
14
|
let simulation;
|
|
15
|
+
let feePayer;
|
|
15
16
|
if ('version' in transaction) {
|
|
17
|
+
[feePayer] = transaction.message.staticAccountKeys;
|
|
16
18
|
simulation = yield connection.simulateTransaction(transaction, {
|
|
17
|
-
accounts: {
|
|
19
|
+
accounts: {
|
|
20
|
+
addresses: feePayer.toBase58() && feePayer.toBase58() !== thisAddress
|
|
21
|
+
? [feePayer.toBase58(), thisAddress]
|
|
22
|
+
: [thisAddress],
|
|
23
|
+
encoding: 'base64',
|
|
24
|
+
},
|
|
18
25
|
replaceRecentBlockhash: true,
|
|
19
26
|
});
|
|
20
27
|
}
|
|
21
28
|
else {
|
|
22
|
-
|
|
29
|
+
feePayer =
|
|
30
|
+
transaction.feePayer || transaction.instructions[0].keys[0].pubkey;
|
|
31
|
+
simulation = yield connection.simulateTransaction(transaction, undefined, feePayer.toBase58() && feePayer.toBase58() !== thisAddress
|
|
32
|
+
? [feePayer, new web3_js.PublicKey(thisAddress)]
|
|
33
|
+
: [new web3_js.PublicKey(thisAddress)]);
|
|
23
34
|
}
|
|
24
35
|
const previousBalance = yield connection.getBalance(new web3_js.PublicKey(thisAddress));
|
|
25
36
|
if (!((_c = (_b = (_a = simulation === null || simulation === void 0 ? void 0 : simulation.value) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.lamports)) {
|
|
@@ -43,11 +54,14 @@ const getTotalSolanaSpend = (transaction, connection, thisAddress) => _tslib.__a
|
|
|
43
54
|
}
|
|
44
55
|
return undefined;
|
|
45
56
|
}
|
|
46
|
-
|
|
57
|
+
// the last account will be the embedded wallet,
|
|
58
|
+
// if there are two addresses the first will be gas-sponsoring so we dont want to calculate sol for that
|
|
59
|
+
const totalSolTransfer = previousBalance -
|
|
60
|
+
((_g = (_f = (_e = (_d = simulation === null || simulation === void 0 ? void 0 : simulation.value) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e[1]) === null || _f === void 0 ? void 0 : _f.lamports) !== null && _g !== void 0 ? _g : (_k = (_j = (_h = simulation === null || simulation === void 0 ? void 0 : simulation.value) === null || _h === void 0 ? void 0 : _h.accounts) === null || _j === void 0 ? void 0 : _j[0]) === null || _k === void 0 ? void 0 : _k.lamports);
|
|
47
61
|
return BigInt(totalSolTransfer);
|
|
48
62
|
});
|
|
49
63
|
const decodeTransaction = (transaction, connection, thisAddress) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
-
var
|
|
64
|
+
var _l;
|
|
51
65
|
if (!transaction) {
|
|
52
66
|
throw new utils.DynamicError('Transaction is required');
|
|
53
67
|
}
|
|
@@ -72,7 +86,7 @@ const decodeTransaction = (transaction, connection, thisAddress) => _tslib.__awa
|
|
|
72
86
|
}
|
|
73
87
|
}
|
|
74
88
|
else if (!transaction.instructions) {
|
|
75
|
-
decodedInstructions = (
|
|
89
|
+
decodedInstructions = (_l = web3_js.Transaction.from(Buffer.from(transaction.serialize()))) === null || _l === void 0 ? void 0 : _l.instructions;
|
|
76
90
|
}
|
|
77
91
|
else {
|
|
78
92
|
decodedInstructions = transaction.instructions;
|
|
@@ -100,7 +114,7 @@ const decodeTransaction = (transaction, connection, thisAddress) => _tslib.__awa
|
|
|
100
114
|
}
|
|
101
115
|
// SPL transfers
|
|
102
116
|
let splTransfers = yield Promise.all(decodedInstructions.map((instruction) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
103
|
-
var
|
|
117
|
+
var _m, _o, _p, _q, _r, _s, _t;
|
|
104
118
|
if (instruction.programId.equals(splToken.TOKEN_PROGRAM_ID)) {
|
|
105
119
|
const decodedTokenInstruction = splToken.decodeTransferInstructionUnchecked(instruction);
|
|
106
120
|
const { source, destination } = decodedTokenInstruction.keys;
|
|
@@ -114,9 +128,9 @@ const decodeTransaction = (transaction, connection, thisAddress) => _tslib.__awa
|
|
|
114
128
|
}
|
|
115
129
|
// Pure SPL transfers, get the address from the destination token account to display to user
|
|
116
130
|
const destinationAccountInfo = yield connection.getParsedAccountInfo(destination.pubkey);
|
|
117
|
-
const isTokenAccount = ((
|
|
131
|
+
const isTokenAccount = ((_p = (_o = (_m = destinationAccountInfo.value) === null || _m === void 0 ? void 0 : _m.data) === null || _o === void 0 ? void 0 : _o.parsed) === null || _p === void 0 ? void 0 : _p.type) === 'account';
|
|
118
132
|
const destinationOwner = isTokenAccount
|
|
119
|
-
? (
|
|
133
|
+
? (_t = (_s = (_r = (_q = destinationAccountInfo.value) === null || _q === void 0 ? void 0 : _q.data) === null || _r === void 0 ? void 0 : _r.parsed) === null || _s === void 0 ? void 0 : _s.info) === null || _t === void 0 ? void 0 : _t.owner
|
|
120
134
|
: null;
|
|
121
135
|
const toAddress = destinationOwner
|
|
122
136
|
? destinationOwner
|
|
@@ -6,16 +6,27 @@ import { logger } from '@dynamic-labs/wallet-connector-core';
|
|
|
6
6
|
import { DynamicError } from '@dynamic-labs/utils';
|
|
7
7
|
|
|
8
8
|
const getTotalSolanaSpend = (transaction, connection, thisAddress) => __awaiter(void 0, void 0, void 0, function* () {
|
|
9
|
-
var _a, _b, _c, _d, _e, _f;
|
|
9
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
10
10
|
let simulation;
|
|
11
|
+
let feePayer;
|
|
11
12
|
if ('version' in transaction) {
|
|
13
|
+
[feePayer] = transaction.message.staticAccountKeys;
|
|
12
14
|
simulation = yield connection.simulateTransaction(transaction, {
|
|
13
|
-
accounts: {
|
|
15
|
+
accounts: {
|
|
16
|
+
addresses: feePayer.toBase58() && feePayer.toBase58() !== thisAddress
|
|
17
|
+
? [feePayer.toBase58(), thisAddress]
|
|
18
|
+
: [thisAddress],
|
|
19
|
+
encoding: 'base64',
|
|
20
|
+
},
|
|
14
21
|
replaceRecentBlockhash: true,
|
|
15
22
|
});
|
|
16
23
|
}
|
|
17
24
|
else {
|
|
18
|
-
|
|
25
|
+
feePayer =
|
|
26
|
+
transaction.feePayer || transaction.instructions[0].keys[0].pubkey;
|
|
27
|
+
simulation = yield connection.simulateTransaction(transaction, undefined, feePayer.toBase58() && feePayer.toBase58() !== thisAddress
|
|
28
|
+
? [feePayer, new PublicKey(thisAddress)]
|
|
29
|
+
: [new PublicKey(thisAddress)]);
|
|
19
30
|
}
|
|
20
31
|
const previousBalance = yield connection.getBalance(new PublicKey(thisAddress));
|
|
21
32
|
if (!((_c = (_b = (_a = simulation === null || simulation === void 0 ? void 0 : simulation.value) === null || _a === void 0 ? void 0 : _a.accounts) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.lamports)) {
|
|
@@ -39,11 +50,14 @@ const getTotalSolanaSpend = (transaction, connection, thisAddress) => __awaiter(
|
|
|
39
50
|
}
|
|
40
51
|
return undefined;
|
|
41
52
|
}
|
|
42
|
-
|
|
53
|
+
// the last account will be the embedded wallet,
|
|
54
|
+
// if there are two addresses the first will be gas-sponsoring so we dont want to calculate sol for that
|
|
55
|
+
const totalSolTransfer = previousBalance -
|
|
56
|
+
((_g = (_f = (_e = (_d = simulation === null || simulation === void 0 ? void 0 : simulation.value) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e[1]) === null || _f === void 0 ? void 0 : _f.lamports) !== null && _g !== void 0 ? _g : (_k = (_j = (_h = simulation === null || simulation === void 0 ? void 0 : simulation.value) === null || _h === void 0 ? void 0 : _h.accounts) === null || _j === void 0 ? void 0 : _j[0]) === null || _k === void 0 ? void 0 : _k.lamports);
|
|
43
57
|
return BigInt(totalSolTransfer);
|
|
44
58
|
});
|
|
45
59
|
const decodeTransaction = (transaction, connection, thisAddress) => __awaiter(void 0, void 0, void 0, function* () {
|
|
46
|
-
var
|
|
60
|
+
var _l;
|
|
47
61
|
if (!transaction) {
|
|
48
62
|
throw new DynamicError('Transaction is required');
|
|
49
63
|
}
|
|
@@ -68,7 +82,7 @@ const decodeTransaction = (transaction, connection, thisAddress) => __awaiter(vo
|
|
|
68
82
|
}
|
|
69
83
|
}
|
|
70
84
|
else if (!transaction.instructions) {
|
|
71
|
-
decodedInstructions = (
|
|
85
|
+
decodedInstructions = (_l = Transaction.from(Buffer.from(transaction.serialize()))) === null || _l === void 0 ? void 0 : _l.instructions;
|
|
72
86
|
}
|
|
73
87
|
else {
|
|
74
88
|
decodedInstructions = transaction.instructions;
|
|
@@ -96,7 +110,7 @@ const decodeTransaction = (transaction, connection, thisAddress) => __awaiter(vo
|
|
|
96
110
|
}
|
|
97
111
|
// SPL transfers
|
|
98
112
|
let splTransfers = yield Promise.all(decodedInstructions.map((instruction) => __awaiter(void 0, void 0, void 0, function* () {
|
|
99
|
-
var
|
|
113
|
+
var _m, _o, _p, _q, _r, _s, _t;
|
|
100
114
|
if (instruction.programId.equals(TOKEN_PROGRAM_ID)) {
|
|
101
115
|
const decodedTokenInstruction = decodeTransferInstructionUnchecked(instruction);
|
|
102
116
|
const { source, destination } = decodedTokenInstruction.keys;
|
|
@@ -110,9 +124,9 @@ const decodeTransaction = (transaction, connection, thisAddress) => __awaiter(vo
|
|
|
110
124
|
}
|
|
111
125
|
// Pure SPL transfers, get the address from the destination token account to display to user
|
|
112
126
|
const destinationAccountInfo = yield connection.getParsedAccountInfo(destination.pubkey);
|
|
113
|
-
const isTokenAccount = ((
|
|
127
|
+
const isTokenAccount = ((_p = (_o = (_m = destinationAccountInfo.value) === null || _m === void 0 ? void 0 : _m.data) === null || _o === void 0 ? void 0 : _o.parsed) === null || _p === void 0 ? void 0 : _p.type) === 'account';
|
|
114
128
|
const destinationOwner = isTokenAccount
|
|
115
|
-
? (
|
|
129
|
+
? (_t = (_s = (_r = (_q = destinationAccountInfo.value) === null || _q === void 0 ? void 0 : _q.data) === null || _r === void 0 ? void 0 : _r.parsed) === null || _s === void 0 ? void 0 : _s.info) === null || _t === void 0 ? void 0 : _t.owner
|
|
116
130
|
: null;
|
|
117
131
|
const toAddress = destinationOwner
|
|
118
132
|
? destinationOwner
|