@dynamic-labs/embedded-wallet-solana 4.0.0-alpha.0 → 4.0.0-alpha.10
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 +132 -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/TurnkeySolanaWalletConnector.cjs +10 -13
- package/src/lib/TurnkeySolanaWalletConnector/TurnkeySolanaWalletConnector.js +10 -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,136 @@
|
|
|
1
1
|
|
|
2
|
+
## [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)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* 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))
|
|
8
|
+
|
|
9
|
+
## [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)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* 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))
|
|
15
|
+
* 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))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* 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))
|
|
21
|
+
|
|
22
|
+
## [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)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* 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))
|
|
28
|
+
* 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))
|
|
29
|
+
* 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))
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Bug Fixes
|
|
33
|
+
|
|
34
|
+
* 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))
|
|
35
|
+
|
|
36
|
+
## [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)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Features
|
|
40
|
+
|
|
41
|
+
* 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))
|
|
42
|
+
* 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))
|
|
43
|
+
* 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))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### Bug Fixes
|
|
47
|
+
|
|
48
|
+
* 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))
|
|
49
|
+
* 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))
|
|
50
|
+
* 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))
|
|
51
|
+
* update version error text ([#7054](https://github.com/dynamic-labs/dynamic-auth/issues/7054)) ([713dacb](https://github.com/dynamic-labs/dynamic-auth/commit/713dacb79c2513323c2e6840d7418716011c2dcd))
|
|
52
|
+
* 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))
|
|
53
|
+
|
|
54
|
+
## [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)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### ⚠ BREAKING CHANGES
|
|
58
|
+
|
|
59
|
+
* remove support to magic ([#7033](https://github.com/dynamic-labs/dynamic-auth/issues/7033)) ([0fdc41f](https://github.com/dynamic-labs/dynamic-auth/commit/0fdc41f05f87b32f56b73db068f984f18bdf69a0))
|
|
60
|
+
|
|
61
|
+
### Features
|
|
62
|
+
|
|
63
|
+
* global connectivity disconnect ([#7008](https://github.com/dynamic-labs/dynamic-auth/issues/7008)) ([80d705b](https://github.com/dynamic-labs/dynamic-auth/commit/80d705ba252aa3b01cbf4861507fed00e460215f))
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
### Bug Fixes
|
|
67
|
+
|
|
68
|
+
* 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))
|
|
69
|
+
* add retry to useConnectWithOtp ([#7012](https://github.com/dynamic-labs/dynamic-auth/issues/7012)) ([d551d72](https://github.com/dynamic-labs/dynamic-auth/commit/d551d72a463f8a03964858b30ec174d41985a7b1))
|
|
70
|
+
* 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))
|
|
71
|
+
* 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))
|
|
72
|
+
* 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))
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
## [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)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
### Features
|
|
79
|
+
|
|
80
|
+
* 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))
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
### Bug Fixes
|
|
84
|
+
|
|
85
|
+
* **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))
|
|
86
|
+
* react-native-extension to include esm ([#6965](https://github.com/dynamic-labs/DynamicAuth/issues/6965)) ([336825b](https://github.com/dynamic-labs/DynamicAuth/commit/336825b50142002bbc67c6f8850bd63030bf384b))
|
|
87
|
+
|
|
88
|
+
## [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)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
### Bug Fixes
|
|
92
|
+
|
|
93
|
+
* 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))
|
|
94
|
+
* update in memory secure storage ([#6955](https://github.com/dynamic-labs/DynamicAuth/issues/6955)) ([697fc20](https://github.com/dynamic-labs/DynamicAuth/commit/697fc20740b243fa31ecf06e8b2ed9d09932a544))
|
|
95
|
+
|
|
96
|
+
## [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)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
### Features
|
|
100
|
+
|
|
101
|
+
* 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))
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
### Bug Fixes
|
|
105
|
+
|
|
106
|
+
* 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))
|
|
107
|
+
* 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))
|
|
108
|
+
|
|
109
|
+
## [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)
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
### Features
|
|
113
|
+
|
|
114
|
+
* add iconVariant prop to DynamicBridgeWidget ([#6915](https://github.com/dynamic-labs/DynamicAuth/issues/6915)) ([8aa0f3d](https://github.com/dynamic-labs/DynamicAuth/commit/8aa0f3d8d8c41c7b5c4796106f611f208010cb6d))
|
|
115
|
+
* allow to create extra embedded wallets in react-native ([#6923](https://github.com/dynamic-labs/DynamicAuth/issues/6923)) ([ba22f7b](https://github.com/dynamic-labs/DynamicAuth/commit/ba22f7bcf41a444a4df0aff9b6aec257457e9402))
|
|
116
|
+
* **client:** add hide method for auth and userProfile ui modules ([#6928](https://github.com/dynamic-labs/DynamicAuth/issues/6928)) ([a11a4a5](https://github.com/dynamic-labs/DynamicAuth/commit/a11a4a5d6e25ce2a916ebd52f0b341020dc1a7e5))
|
|
117
|
+
|
|
118
|
+
## [4.0.0-alpha.1](https://github.com/dynamic-labs/DynamicAuth/compare/v4.0.0-alpha.0...v4.0.0-alpha.1) (2024-09-17)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
### Features
|
|
122
|
+
|
|
123
|
+
* blockaid website scanning for global connectivity ([#6874](https://github.com/dynamic-labs/DynamicAuth/issues/6874)) ([f8cbabd](https://github.com/dynamic-labs/DynamicAuth/commit/f8cbabd92fd4b5b096f47ff8e24c572ad7720dd8))
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
### Bug Fixes
|
|
127
|
+
|
|
128
|
+
* deeplinking on ethereum and bitcoin sats connector ([#6917](https://github.com/dynamic-labs/DynamicAuth/issues/6917)) ([3896c3a](https://github.com/dynamic-labs/DynamicAuth/commit/3896c3a97819459da74dc5b4771796d7991c1f07))
|
|
129
|
+
* emit walletAdded event when createEmbeddedWalletAccount called ([#6922](https://github.com/dynamic-labs/DynamicAuth/issues/6922)) ([2a8bdd6](https://github.com/dynamic-labs/DynamicAuth/commit/2a8bdd68c50efd946c6f9b398dfae2b3585db34f))
|
|
130
|
+
* interface for sendBitcoin on unisat ([37a1bc2](https://github.com/dynamic-labs/DynamicAuth/commit/37a1bc216f43eef817c40e23b9161327f9d29c59))
|
|
131
|
+
* remove ballet crypto and duplicate keplr entry ([#6906](https://github.com/dynamic-labs/DynamicAuth/issues/6906)) ([14aeeea](https://github.com/dynamic-labs/DynamicAuth/commit/14aeeeaa8d906344f4aeddf9e73527df346b9ea0))
|
|
132
|
+
* solana and cosmos signers not working properly ([#6898](https://github.com/dynamic-labs/DynamicAuth/issues/6898)) ([6f07981](https://github.com/dynamic-labs/DynamicAuth/commit/6f079811c0d7e45b97d2dae72f4141268ab4fe0c))
|
|
133
|
+
|
|
2
134
|
## [4.0.0-alpha.0](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0...v4.0.0-alpha.0) (2024-09-13)
|
|
3
135
|
|
|
4
136
|
|
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.10";
|
|
7
7
|
var dependencies = {
|
|
8
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
9
|
-
"@dynamic-labs/utils": "4.0.0-alpha.
|
|
10
|
-
"@dynamic-labs/logger": "4.0.0-alpha.
|
|
11
|
-
"@dynamic-labs/types": "4.0.0-alpha.
|
|
8
|
+
"@dynamic-labs/sdk-api-core": "0.0.545",
|
|
9
|
+
"@dynamic-labs/utils": "4.0.0-alpha.10",
|
|
10
|
+
"@dynamic-labs/logger": "4.0.0-alpha.10",
|
|
11
|
+
"@dynamic-labs/types": "4.0.0-alpha.10",
|
|
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.10";
|
|
3
3
|
var dependencies = {
|
|
4
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
5
|
-
"@dynamic-labs/utils": "4.0.0-alpha.
|
|
6
|
-
"@dynamic-labs/logger": "4.0.0-alpha.
|
|
7
|
-
"@dynamic-labs/types": "4.0.0-alpha.
|
|
4
|
+
"@dynamic-labs/sdk-api-core": "0.0.545",
|
|
5
|
+
"@dynamic-labs/utils": "4.0.0-alpha.10",
|
|
6
|
+
"@dynamic-labs/logger": "4.0.0-alpha.10",
|
|
7
|
+
"@dynamic-labs/types": "4.0.0-alpha.10",
|
|
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.10",
|
|
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/sdk-api-core": "0.0.
|
|
30
|
-
"@dynamic-labs/utils": "4.0.0-alpha.
|
|
31
|
-
"@dynamic-labs/logger": "4.0.0-alpha.
|
|
32
|
-
"@dynamic-labs/types": "4.0.0-alpha.
|
|
21
|
+
"@dynamic-labs/sdk-api-core": "0.0.545",
|
|
22
|
+
"@dynamic-labs/utils": "4.0.0-alpha.10",
|
|
23
|
+
"@dynamic-labs/logger": "4.0.0-alpha.10",
|
|
24
|
+
"@dynamic-labs/types": "4.0.0-alpha.10",
|
|
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.10",
|
|
33
|
+
"@dynamic-labs/embedded-wallet": "4.0.0-alpha.10",
|
|
34
|
+
"@dynamic-labs/rpc-providers": "4.0.0-alpha.10",
|
|
35
|
+
"@dynamic-labs/solana-core": "4.0.0-alpha.10",
|
|
36
|
+
"@dynamic-labs/wallet-book": "4.0.0-alpha.10",
|
|
37
|
+
"@dynamic-labs/wallet-connector-core": "4.0.0-alpha.10",
|
|
38
|
+
"@dynamic-labs/webauthn": "4.0.0-alpha.10",
|
|
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);
|
|
@@ -290,22 +290,11 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
|
|
|
290
290
|
}
|
|
291
291
|
internalSignAndSendTransaction(transaction, options) {
|
|
292
292
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
293
|
-
var _a;
|
|
294
293
|
if (!this.turnkeyAddress)
|
|
295
294
|
throw new utils.DynamicError('Solana wallet not found');
|
|
296
295
|
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
296
|
const signedTransaction = yield this.signTransaction(transaction);
|
|
308
|
-
const signature = yield currentConnection.sendRawTransaction(
|
|
297
|
+
const signature = yield currentConnection.sendRawTransaction(signedTransaction.serialize(), options);
|
|
309
298
|
// listen for tx confirmation until 60 seconds, which is ~150 blocks expiration
|
|
310
299
|
return new Promise((resolve, reject) => {
|
|
311
300
|
const timeout = setTimeout(() => {
|
|
@@ -329,8 +318,16 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
|
|
|
329
318
|
if (!this.turnkeyAddress)
|
|
330
319
|
throw new utils.DynamicError('Solana wallet not found');
|
|
331
320
|
let optimizedTransaction = transaction;
|
|
321
|
+
let alreadySigned = false;
|
|
322
|
+
if ('version' in transaction) {
|
|
323
|
+
alreadySigned = transaction.signatures.some((sig) => !sig.every((byte) => byte === 0));
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
alreadySigned = transaction.signatures.some((sig) => sig.signature);
|
|
327
|
+
}
|
|
332
328
|
try {
|
|
333
|
-
|
|
329
|
+
// we cannot optimize partially signed transactions as once a tx is modified the signatures are no longer valid
|
|
330
|
+
if ((yield this.getNetwork()) === 'mainnet' && !alreadySigned) {
|
|
334
331
|
optimizedTransaction = (yield api.optimizeSolanaTransaction(this.getEnvId(), transaction, (_a = this.turnkeyAddress) !== null && _a !== void 0 ? _a : ''));
|
|
335
332
|
}
|
|
336
333
|
}
|
|
@@ -286,22 +286,11 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
|
|
|
286
286
|
}
|
|
287
287
|
internalSignAndSendTransaction(transaction, options) {
|
|
288
288
|
return __awaiter(this, void 0, void 0, function* () {
|
|
289
|
-
var _a;
|
|
290
289
|
if (!this.turnkeyAddress)
|
|
291
290
|
throw new DynamicError('Solana wallet not found');
|
|
292
291
|
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
292
|
const signedTransaction = yield this.signTransaction(transaction);
|
|
304
|
-
const signature = yield currentConnection.sendRawTransaction(
|
|
293
|
+
const signature = yield currentConnection.sendRawTransaction(signedTransaction.serialize(), options);
|
|
305
294
|
// listen for tx confirmation until 60 seconds, which is ~150 blocks expiration
|
|
306
295
|
return new Promise((resolve, reject) => {
|
|
307
296
|
const timeout = setTimeout(() => {
|
|
@@ -325,8 +314,16 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
|
|
|
325
314
|
if (!this.turnkeyAddress)
|
|
326
315
|
throw new DynamicError('Solana wallet not found');
|
|
327
316
|
let optimizedTransaction = transaction;
|
|
317
|
+
let alreadySigned = false;
|
|
318
|
+
if ('version' in transaction) {
|
|
319
|
+
alreadySigned = transaction.signatures.some((sig) => !sig.every((byte) => byte === 0));
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
alreadySigned = transaction.signatures.some((sig) => sig.signature);
|
|
323
|
+
}
|
|
328
324
|
try {
|
|
329
|
-
|
|
325
|
+
// we cannot optimize partially signed transactions as once a tx is modified the signatures are no longer valid
|
|
326
|
+
if ((yield this.getNetwork()) === 'mainnet' && !alreadySigned) {
|
|
330
327
|
optimizedTransaction = (yield optimizeSolanaTransaction(this.getEnvId(), transaction, (_a = this.turnkeyAddress) !== null && _a !== void 0 ? _a : ''));
|
|
331
328
|
}
|
|
332
329
|
}
|
|
@@ -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
|