@dynamic-labs/starknet 3.0.0-alpha.2 → 3.0.0-alpha.21
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 +239 -0
- package/package.json +7 -6
- package/src/index.cjs +2 -0
- package/src/index.js +2 -0
- package/src/starknetWalletConnector.cjs +29 -14
- package/src/starknetWalletConnector.d.ts +17 -1
- package/src/starknetWalletConnector.js +29 -14
- package/src/types.d.ts +1 -1
- package/src/utils/starknetSnap.cjs +81 -0
- package/src/utils/starknetSnap.d.ts +8 -0
- package/src/utils/starknetSnap.js +77 -0
- package/src/wallets/metamask.cjs +49 -0
- package/src/wallets/metamask.d.ts +8 -0
- package/src/wallets/metamask.js +45 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,243 @@
|
|
|
1
1
|
|
|
2
|
+
## [3.0.0-alpha.21](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.20...v3.0.0-alpha.21) (2024-07-17)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* invalid email error appears ([#6348](https://github.com/dynamic-labs/DynamicAuth/issues/6348)) ([01bcfd2](https://github.com/dynamic-labs/DynamicAuth/commit/01bcfd2f3cc37083c47c0f26e3398f974f6b6a17))
|
|
8
|
+
* stop unnecessary phantom btc popup when disconnecting ([#6188](https://github.com/dynamic-labs/DynamicAuth/issues/6188)) ([15c2eb5](https://github.com/dynamic-labs/DynamicAuth/commit/15c2eb5da90be93ab917e7c61a873a0e9a568211))
|
|
9
|
+
|
|
10
|
+
## [3.0.0-alpha.20](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.19...v3.0.0-alpha.20) (2024-07-15)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* show/hide confirmation ui for aa session key wallets ([#6334](https://github.com/dynamic-labs/DynamicAuth/issues/6334)) ([6e17162](https://github.com/dynamic-labs/DynamicAuth/commit/6e17162e31915620b622f3ec5b4f8b7087f1728c))
|
|
16
|
+
|
|
17
|
+
## [3.0.0-alpha.19](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.18...v3.0.0-alpha.19) (2024-07-13)
|
|
18
|
+
|
|
19
|
+
## [3.0.0-alpha.18](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.17...v3.0.0-alpha.18) (2024-07-12)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
* hide confirmation ui triggers passkey creation ([#6322](https://github.com/dynamic-labs/DynamicAuth/issues/6322)) ([c66f282](https://github.com/dynamic-labs/DynamicAuth/commit/c66f282cf8d64f19d7f5a7355aaaec980afbe245))
|
|
25
|
+
|
|
26
|
+
## [3.0.0-alpha.17](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.16...v3.0.0-alpha.17) (2024-07-11)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Features
|
|
30
|
+
|
|
31
|
+
* add new hook to select wallet option to connect ([#6301](https://github.com/dynamic-labs/DynamicAuth/issues/6301)) ([833d71d](https://github.com/dynamic-labs/DynamicAuth/commit/833d71de164c57bfa22898c3425641a83a12e135))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Bug Fixes
|
|
35
|
+
|
|
36
|
+
* refresh session keys correctly for solana embedded wallets ([#6309](https://github.com/dynamic-labs/DynamicAuth/issues/6309)) ([4b28e8a](https://github.com/dynamic-labs/DynamicAuth/commit/4b28e8ae231567754b6cfd07a7d41e86f1c73daa))
|
|
37
|
+
|
|
38
|
+
## [3.0.0-alpha.16](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.15...v3.0.0-alpha.16) (2024-07-11)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### ⚠ BREAKING CHANGES
|
|
42
|
+
|
|
43
|
+
* remove isConnected prop from wallets and have it as a method instead (#6265)
|
|
44
|
+
|
|
45
|
+
### Features
|
|
46
|
+
|
|
47
|
+
* add bundlerRpc and paymasterRpc parameters to zerodev ([#6304](https://github.com/dynamic-labs/DynamicAuth/issues/6304)) ([156469b](https://github.com/dynamic-labs/DynamicAuth/commit/156469bf703f0c7fa455a24b8e4e328d3a0c58fc))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Bug Fixes
|
|
51
|
+
|
|
52
|
+
* headless embedded wallet export session refresh ([#6307](https://github.com/dynamic-labs/DynamicAuth/issues/6307)) ([5423cc1](https://github.com/dynamic-labs/DynamicAuth/commit/5423cc14c370968acf718b7deff6ea8df9228189))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
* remove isConnected prop from wallets and have it as a method instead ([#6265](https://github.com/dynamic-labs/DynamicAuth/issues/6265)) ([652dcc2](https://github.com/dynamic-labs/DynamicAuth/commit/652dcc2d34c9a9719238606c67f600e40621183b))
|
|
56
|
+
|
|
57
|
+
## [3.0.0-alpha.15](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.14...v3.0.0-alpha.15) (2024-07-11)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### Bug Fixes
|
|
61
|
+
|
|
62
|
+
* catch third party wallet construction errors ([#6268](https://github.com/dynamic-labs/DynamicAuth/issues/6268)) ([badef39](https://github.com/dynamic-labs/DynamicAuth/commit/badef39d753c7d29925c6c8680053027bd99b69b))
|
|
63
|
+
* decode all solana transactions ([#6294](https://github.com/dynamic-labs/DynamicAuth/issues/6294)) ([5220ab2](https://github.com/dynamic-labs/DynamicAuth/commit/5220ab29381f3a7f1afc7043332b5a018b47eb0a))
|
|
64
|
+
* passkey cta ([#6255](https://github.com/dynamic-labs/DynamicAuth/issues/6255)) ([1b1b152](https://github.com/dynamic-labs/DynamicAuth/commit/1b1b152a24b409c5d941a9c92a003daf0bbe48a1))
|
|
65
|
+
|
|
66
|
+
## [3.0.0-alpha.14](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.13...v3.0.0-alpha.14) (2024-07-09)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
### ⚠ BREAKING CHANGES
|
|
70
|
+
|
|
71
|
+
* remove setPrimaryWallet in favor of useSwitchWallet (#6212)
|
|
72
|
+
* move getBalance method to wallet so it can be fetched for any wallet not just the active one (#6200)
|
|
73
|
+
* make Wallet a class instead of just a type (#6094)
|
|
74
|
+
|
|
75
|
+
### Features
|
|
76
|
+
|
|
77
|
+
* add @dynamic-labs/solana-extension ([#6140](https://github.com/dynamic-labs/DynamicAuth/issues/6140)) ([c0e2a06](https://github.com/dynamic-labs/DynamicAuth/commit/c0e2a067dd83163094b58a15696df8654da47c65))
|
|
78
|
+
* add solana support for multi-asset ([#6222](https://github.com/dynamic-labs/DynamicAuth/issues/6222)) ([9660d79](https://github.com/dynamic-labs/DynamicAuth/commit/9660d7962f1fb01011d68397bb367fdfc5335ca9))
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
### Bug Fixes
|
|
82
|
+
|
|
83
|
+
* allow closing re-connect wallet modal ([#6250](https://github.com/dynamic-labs/DynamicAuth/issues/6250)) ([55ba25b](https://github.com/dynamic-labs/DynamicAuth/commit/55ba25bd3e907629aaa26e788885bfa38f8fe350))
|
|
84
|
+
* move getBalance method to wallet so it can be fetched for any wallet not just the active one ([#6200](https://github.com/dynamic-labs/DynamicAuth/issues/6200)) ([ee94773](https://github.com/dynamic-labs/DynamicAuth/commit/ee94773df9b31462a325666760fcf1fc70dec68a))
|
|
85
|
+
* move getNameService method to wallet so name service data can be fetched for any wallet ([#6205](https://github.com/dynamic-labs/DynamicAuth/issues/6205)) ([6671ae9](https://github.com/dynamic-labs/DynamicAuth/commit/6671ae92532ffc1889e24519e75f47d336ac0da6))
|
|
86
|
+
* relax phone number length validation ([#6226](https://github.com/dynamic-labs/DynamicAuth/issues/6226)) ([f0969b4](https://github.com/dynamic-labs/DynamicAuth/commit/f0969b4fbdafde07125cddecb16b4bfd011ea65e))
|
|
87
|
+
* sdkHasLoaded flipping back to false with otp ([#6242](https://github.com/dynamic-labs/DynamicAuth/issues/6242)) ([32ad9dd](https://github.com/dynamic-labs/DynamicAuth/commit/32ad9dd2dae7775f494506773fb343fe1a249c65))
|
|
88
|
+
* send transaction demo undefined address/value ([#6248](https://github.com/dynamic-labs/DynamicAuth/issues/6248)) ([036a511](https://github.com/dynamic-labs/DynamicAuth/commit/036a511fb848ef461edd9b7a5d79d478b0f1cf23))
|
|
89
|
+
* set last active account on accountChange request ([#6218](https://github.com/dynamic-labs/DynamicAuth/issues/6218)) ([05797d2](https://github.com/dynamic-labs/DynamicAuth/commit/05797d292aab8b4de02555594d4d1bbd4c9543eb))
|
|
90
|
+
* show ledger toggle when linking wallet ([#6202](https://github.com/dynamic-labs/DynamicAuth/issues/6202)) ([a449c0b](https://github.com/dynamic-labs/DynamicAuth/commit/a449c0bfc4e3a75ccd7084b930c48fbd6c14f691))
|
|
91
|
+
* show user wallet in profile view on single wallet mode even if it's not primary ([#6187](https://github.com/dynamic-labs/DynamicAuth/issues/6187)) ([ffaaeb2](https://github.com/dynamic-labs/DynamicAuth/commit/ffaaeb2c6cbb2868a381d85451ae5574024156bb))
|
|
92
|
+
* stop auto-switching to connected secondary wallet if primary wallet is not connected ([#6196](https://github.com/dynamic-labs/DynamicAuth/issues/6196)) ([4e8bcd2](https://github.com/dynamic-labs/DynamicAuth/commit/4e8bcd2d02d3fca54a0ed29c45b386ae99266b84))
|
|
93
|
+
* stop coinbase and solflare popups when secondary ([#6225](https://github.com/dynamic-labs/DynamicAuth/issues/6225)) ([7e9c104](https://github.com/dynamic-labs/DynamicAuth/commit/7e9c1049a09c9fd513c9a2a746d6baac916f1bf4))
|
|
94
|
+
* stop sending double sign request on network switch ([e325709](https://github.com/dynamic-labs/DynamicAuth/commit/e325709bb5d2d1331fe16cc705398fc7b1cc292a))
|
|
95
|
+
* tunrkey solana signer accept uint8array message ([#6137](https://github.com/dynamic-labs/DynamicAuth/issues/6137)) ([70f89ce](https://github.com/dynamic-labs/DynamicAuth/commit/70f89ce0dafa4c99b318c9c5adce59083cd6d284))
|
|
96
|
+
* update formatting of phantom bitcoin publickey ([#6210](https://github.com/dynamic-labs/DynamicAuth/issues/6210)) ([f58cea9](https://github.com/dynamic-labs/DynamicAuth/commit/f58cea99333fd7c6af8f56f637ee32f1f7ce8d76))
|
|
97
|
+
* use white color in farcaster qr code when in dark mode ([#6245](https://github.com/dynamic-labs/DynamicAuth/issues/6245)) ([a91958d](https://github.com/dynamic-labs/DynamicAuth/commit/a91958d8773be138da8f54791c4c67866257bbad))
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
* make Wallet a class instead of just a type ([#6094](https://github.com/dynamic-labs/DynamicAuth/issues/6094)) ([6dc4672](https://github.com/dynamic-labs/DynamicAuth/commit/6dc4672951cfadc22a6c569e74eae3485bd472f3))
|
|
101
|
+
* remove setPrimaryWallet in favor of useSwitchWallet ([#6212](https://github.com/dynamic-labs/DynamicAuth/issues/6212)) ([de125e1](https://github.com/dynamic-labs/DynamicAuth/commit/de125e1ebbc20507e4ec07f337f5f5fd13aabcbe))
|
|
102
|
+
|
|
103
|
+
## [3.0.0-alpha.13](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.12...v3.0.0-alpha.13) (2024-06-27)
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
### Bug Fixes
|
|
107
|
+
|
|
108
|
+
* coinbase smart wallet better handling in iframes ([#6184](https://github.com/dynamic-labs/DynamicAuth/issues/6184)) ([2c4befe](https://github.com/dynamic-labs/DynamicAuth/commit/2c4befedd09e6a432139cb3d08ea61004c3896d5))
|
|
109
|
+
* show connected network name when icon url is missing ([#6191](https://github.com/dynamic-labs/DynamicAuth/issues/6191)) ([dafd9e3](https://github.com/dynamic-labs/DynamicAuth/commit/dafd9e323f47ca3d61556e9a8c84ba3bfd27af8f))
|
|
110
|
+
* use correct account when creating wallet client ([#6179](https://github.com/dynamic-labs/DynamicAuth/issues/6179)) ([4e45a15](https://github.com/dynamic-labs/DynamicAuth/commit/4e45a15b2d7221ec80df919aa93468a75a94bed3))
|
|
111
|
+
|
|
112
|
+
## [3.0.0-alpha.12](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.11...v3.0.0-alpha.12) (2024-06-27)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
### ⚠ BREAKING CHANGES
|
|
116
|
+
|
|
117
|
+
* return Transaction type from signTransaction and update solana … (#6180)
|
|
118
|
+
|
|
119
|
+
### Bug Fixes
|
|
120
|
+
|
|
121
|
+
* return Transaction type from signTransaction and update solana … ([#6180](https://github.com/dynamic-labs/DynamicAuth/issues/6180)) ([07798b2](https://github.com/dynamic-labs/DynamicAuth/commit/07798b241a13f35a62e4ca0172a57a8d0cd98cf9))
|
|
122
|
+
|
|
123
|
+
## [3.0.0-alpha.11](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.10...v3.0.0-alpha.11) (2024-06-26)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
### Bug Fixes
|
|
127
|
+
|
|
128
|
+
* prevent unwanted magiceden solana popups ([#6158](https://github.com/dynamic-labs/DynamicAuth/issues/6158)) ([b3c8208](https://github.com/dynamic-labs/DynamicAuth/commit/b3c820887eb5ec2badcfce3b19ec4dd874e90811))
|
|
129
|
+
* status icon for embedded wallets ([#6149](https://github.com/dynamic-labs/DynamicAuth/issues/6149)) ([135fd72](https://github.com/dynamic-labs/DynamicAuth/commit/135fd7274f4a6b2dcab98248f7bfe34a09e79f01))
|
|
130
|
+
|
|
131
|
+
## [3.0.0-alpha.10](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.9...v3.0.0-alpha.10) (2024-06-24)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
### Bug Fixes
|
|
135
|
+
|
|
136
|
+
* clear expiresAt from local storage on logout ([#6110](https://github.com/dynamic-labs/DynamicAuth/issues/6110)) ([cbda893](https://github.com/dynamic-labs/DynamicAuth/commit/cbda893441154b6880a5419ce62a353b80f05e55))
|
|
137
|
+
* show SOL amount for complex transactions and better error display ([#6068](https://github.com/dynamic-labs/DynamicAuth/issues/6068)) ([454a3a0](https://github.com/dynamic-labs/DynamicAuth/commit/454a3a0a50805b3d63f44c2ef8c1dc766617eb2b))
|
|
138
|
+
|
|
139
|
+
## [3.0.0-alpha.9](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.8...v3.0.0-alpha.9) (2024-06-21)
|
|
140
|
+
|
|
141
|
+
## [3.0.0-alpha.8](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.7...v3.0.0-alpha.8) (2024-06-21)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
### ⚠ BREAKING CHANGES
|
|
145
|
+
|
|
146
|
+
* break out turnkey package into 3 separate packages (#6015)
|
|
147
|
+
|
|
148
|
+
### Features
|
|
149
|
+
|
|
150
|
+
* add reinitialize hook ([#6098](https://github.com/dynamic-labs/DynamicAuth/issues/6098)) ([d978baa](https://github.com/dynamic-labs/DynamicAuth/commit/d978baa404d34064c36cc549229b1fcea1f20df0))
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
### Bug Fixes
|
|
154
|
+
|
|
155
|
+
* always reconnect the wallet provider when calling getAddress ([#6097](https://github.com/dynamic-labs/DynamicAuth/issues/6097)) ([0f3d497](https://github.com/dynamic-labs/DynamicAuth/commit/0f3d497cedb38239fa9ada2bb25c6b4eaa72d7b1))
|
|
156
|
+
* break out turnkey package into 3 separate packages ([#6015](https://github.com/dynamic-labs/DynamicAuth/issues/6015)) ([a86fbef](https://github.com/dynamic-labs/DynamicAuth/commit/a86fbefe97558363b085e6f752af32d2943f91fa)), closes [#6017](https://github.com/dynamic-labs/DynamicAuth/issues/6017) [#6059](https://github.com/dynamic-labs/DynamicAuth/issues/6059)
|
|
157
|
+
* set latest blockhash on solana transactions if tx confirmation ui is disabled ([#6102](https://github.com/dynamic-labs/DynamicAuth/issues/6102)) ([b8035a3](https://github.com/dynamic-labs/DynamicAuth/commit/b8035a328e47409bf0416d3a01b2f17914488748))
|
|
158
|
+
* silently query unisat accounts ([#6101](https://github.com/dynamic-labs/DynamicAuth/issues/6101)) ([#6104](https://github.com/dynamic-labs/DynamicAuth/issues/6104)) ([643e704](https://github.com/dynamic-labs/DynamicAuth/commit/643e7048ff8610b31e6397e10b160ad456a45d11))
|
|
159
|
+
* stop querying magiceden solana accounts ([#6103](https://github.com/dynamic-labs/DynamicAuth/issues/6103)) ([#6108](https://github.com/dynamic-labs/DynamicAuth/issues/6108)) ([3cfdbc3](https://github.com/dynamic-labs/DynamicAuth/commit/3cfdbc3bc82bfe9bf53bf4236f7892a5440fcb86))
|
|
160
|
+
* trigger sign when linking an already linked unknown wallet ([#6105](https://github.com/dynamic-labs/DynamicAuth/issues/6105)) ([9e9c03b](https://github.com/dynamic-labs/DynamicAuth/commit/9e9c03bf615991c4f1183bf85c4d75c9a7773c85))
|
|
161
|
+
|
|
162
|
+
## [3.0.0-alpha.7](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.6...v3.0.0-alpha.7) (2024-06-19)
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
### ⚠ BREAKING CHANGES
|
|
166
|
+
|
|
167
|
+
* add selectedTabIndex and helpers (#6040)
|
|
168
|
+
|
|
169
|
+
### Features
|
|
170
|
+
|
|
171
|
+
* add selectedTabIndex and helpers ([#6040](https://github.com/dynamic-labs/DynamicAuth/issues/6040)) ([ae20b80](https://github.com/dynamic-labs/DynamicAuth/commit/ae20b8081376dce97b18fa69c81c9ab73c1ff317))
|
|
172
|
+
* add useRefreshUser to trigger a user state refresh ([#6079](https://github.com/dynamic-labs/DynamicAuth/issues/6079)) ([1236d35](https://github.com/dynamic-labs/DynamicAuth/commit/1236d35fe9fab44ed2114ad9f3c8c6dca7ec27be))
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
### Bug Fixes
|
|
176
|
+
|
|
177
|
+
* always return userWallets when available ([#6080](https://github.com/dynamic-labs/DynamicAuth/issues/6080)) ([#6083](https://github.com/dynamic-labs/DynamicAuth/issues/6083)) ([11992d2](https://github.com/dynamic-labs/DynamicAuth/commit/11992d2af5a401ba4ff1dc6904e2a9f8ef5904ca))
|
|
178
|
+
* less solana rpc calls and improve fee fetching ([#6019](https://github.com/dynamic-labs/DynamicAuth/issues/6019)) ([e2609db](https://github.com/dynamic-labs/DynamicAuth/commit/e2609db962c7708ff5b127cb23260a25bc5032e3))
|
|
179
|
+
* make account change idemopotent ([#6061](https://github.com/dynamic-labs/DynamicAuth/issues/6061)) ([8c87513](https://github.com/dynamic-labs/DynamicAuth/commit/8c8751390ea14888c4889679895e2f06d75717b9))
|
|
180
|
+
* only run multi wallet prompt when user profile or auth flow are open ([#6073](https://github.com/dynamic-labs/DynamicAuth/issues/6073)) ([d48ca10](https://github.com/dynamic-labs/DynamicAuth/commit/d48ca105359018457a78588fd8d9aa8a91583a02))
|
|
181
|
+
* recompute multiwallet state after merging accounts ([#6078](https://github.com/dynamic-labs/DynamicAuth/issues/6078)) ([e08a274](https://github.com/dynamic-labs/DynamicAuth/commit/e08a274c4d848f2a8360be7106cfbfa00b9a8f9b))
|
|
182
|
+
* stop querying okx for accounts while locked ([#6081](https://github.com/dynamic-labs/DynamicAuth/issues/6081)) ([#6084](https://github.com/dynamic-labs/DynamicAuth/issues/6084)) ([34365ac](https://github.com/dynamic-labs/DynamicAuth/commit/34365ac1981fe020b03e666c24535a247645d2ad))
|
|
183
|
+
* update copy for primary wallet not connected modal ([#6069](https://github.com/dynamic-labs/DynamicAuth/issues/6069)) ([4a3f43c](https://github.com/dynamic-labs/DynamicAuth/commit/4a3f43ce5585983f7fea0c5b97e812c0ade80e2c))
|
|
184
|
+
|
|
185
|
+
## [3.0.0-alpha.6](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.5...v3.0.0-alpha.6) (2024-06-18)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
### Features
|
|
189
|
+
|
|
190
|
+
* implement useExternalAuth hook to signin using external jwt auth ([#6039](https://github.com/dynamic-labs/DynamicAuth/issues/6039)) ([ba90908](https://github.com/dynamic-labs/DynamicAuth/commit/ba90908509ec21f708a4a0782a7f94861fc3b484))
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
### Bug Fixes
|
|
194
|
+
|
|
195
|
+
* allow sign-in with different ME BTC wallet after initial connection ([a527b46](https://github.com/dynamic-labs/DynamicAuth/commit/a527b464f321b4fc27730f57c3812e996b5ed878))
|
|
196
|
+
* close sign modal when signing in with a wallet when embedded wallet is enabled ([#6013](https://github.com/dynamic-labs/DynamicAuth/issues/6013)) ([0f4f3c8](https://github.com/dynamic-labs/DynamicAuth/commit/0f4f3c83db162f7a1794a3549b60bbad6b03e2c0))
|
|
197
|
+
* custom network without a valid icon should still display its name in network picker ([#6018](https://github.com/dynamic-labs/DynamicAuth/issues/6018)) ([0b10df6](https://github.com/dynamic-labs/DynamicAuth/commit/0b10df68950bfc9b8492443158a6bb030dc1122c))
|
|
198
|
+
* e2e: remove page pause ([#6045](https://github.com/dynamic-labs/DynamicAuth/issues/6045)) ([55bba00](https://github.com/dynamic-labs/DynamicAuth/commit/55bba0034255055d6ae266b1296542f47ed48e2b))
|
|
199
|
+
* more fixes for connect starknet button ([#6046](https://github.com/dynamic-labs/DynamicAuth/issues/6046)) ([0fb570a](https://github.com/dynamic-labs/DynamicAuth/commit/0fb570a44e65f8dd6d4d2bf5edb2ee54985ec9d4))
|
|
200
|
+
* set verified credentials on embedded wallet creation ([#6044](https://github.com/dynamic-labs/DynamicAuth/issues/6044)) ([b52a96d](https://github.com/dynamic-labs/DynamicAuth/commit/b52a96d321e7efdb30dce9cdb3f6f176c24ceb81))
|
|
201
|
+
|
|
202
|
+
## [3.0.0-alpha.5](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.4...v3.0.0-alpha.5) (2024-06-14)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
### ⚠ BREAKING CHANGES
|
|
206
|
+
|
|
207
|
+
* remove viem dependency from non-evm packages (#5508)
|
|
208
|
+
* move rpc providers into their own packages (#5981)
|
|
209
|
+
|
|
210
|
+
### Features
|
|
211
|
+
|
|
212
|
+
* add in-app browser navigation support for sats-connect ([#5988](https://github.com/dynamic-labs/DynamicAuth/issues/5988)) ([be27d2d](https://github.com/dynamic-labs/DynamicAuth/commit/be27d2d4030bbe2157e879497d8e6a00b4a3e404))
|
|
213
|
+
* move rpc providers into their own packages ([#5981](https://github.com/dynamic-labs/DynamicAuth/issues/5981)) ([d7a62d6](https://github.com/dynamic-labs/DynamicAuth/commit/d7a62d60e79dfa6d6651b0fa103e90b6f8a9ccf3))
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
### Bug Fixes
|
|
217
|
+
|
|
218
|
+
* embedded solana wallets can send SPL tokens and estimate gas ([#5982](https://github.com/dynamic-labs/DynamicAuth/issues/5982)) ([36623eb](https://github.com/dynamic-labs/DynamicAuth/commit/36623eb99d1d1dfebfd8b6f3194eeff31e7de2bf))
|
|
219
|
+
* improve logic related to turnkey and emailVerifcation ([#5946](https://github.com/dynamic-labs/DynamicAuth/issues/5946)) ([dd0b2dc](https://github.com/dynamic-labs/DynamicAuth/commit/dd0b2dc6d93a8bbbcb6eef88732e62b747005bb3))
|
|
220
|
+
* show linked wallets with unavailable providers in user wallets list ([#5992](https://github.com/dynamic-labs/DynamicAuth/issues/5992)) ([996079c](https://github.com/dynamic-labs/DynamicAuth/commit/996079ced360651c7b1eb5273548e0548f6f9f3a))
|
|
221
|
+
* switch network modal not closing after switching to a supported network ([#5979](https://github.com/dynamic-labs/DynamicAuth/issues/5979)) ([f239952](https://github.com/dynamic-labs/DynamicAuth/commit/f2399523dd82bb28046992cac4582688b688bdc0))
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
* remove viem dependency from non-evm packages ([#5508](https://github.com/dynamic-labs/DynamicAuth/issues/5508)) ([0299dc3](https://github.com/dynamic-labs/DynamicAuth/commit/0299dc3cbb611182d763e9a89d1270c2e2f32df5))
|
|
225
|
+
|
|
226
|
+
## [3.0.0-alpha.4](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.3...v3.0.0-alpha.4) (2024-06-12)
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
### Bug Fixes
|
|
230
|
+
|
|
231
|
+
* cache getGenesisHash call to prevent over calling ([#5966](https://github.com/dynamic-labs/DynamicAuth/issues/5966)) ([b4d542f](https://github.com/dynamic-labs/DynamicAuth/commit/b4d542f0a85f5ba8c5b8f02f287caee45b4b6feb))
|
|
232
|
+
* handle raw messages in embedded wallet sign message modal ([#5815](https://github.com/dynamic-labs/DynamicAuth/issues/5815)) ([9adc289](https://github.com/dynamic-labs/DynamicAuth/commit/9adc28993b57c1c7f03c4ce6d500288dcf60881e))
|
|
233
|
+
|
|
234
|
+
## [3.0.0-alpha.3](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.2...v3.0.0-alpha.3) (2024-06-11)
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
### Bug Fixes
|
|
238
|
+
|
|
239
|
+
* only navigate to mfa backup codes when needed ([#5965](https://github.com/dynamic-labs/DynamicAuth/issues/5965)) ([edc462f](https://github.com/dynamic-labs/DynamicAuth/commit/edc462f20768885db1883a2c8d005e07044092d5))
|
|
240
|
+
|
|
2
241
|
## [3.0.0-alpha.2](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.1...v3.0.0-alpha.2) (2024-06-11)
|
|
3
242
|
|
|
4
243
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/starknet",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.21",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
|
|
@@ -30,11 +30,12 @@
|
|
|
30
30
|
"get-starknet-core": "3.2.0",
|
|
31
31
|
"text-encoding": "0.7.0",
|
|
32
32
|
"starknetkit": "1.1.3",
|
|
33
|
-
"@dynamic-labs/sdk-api-core": "0.0.
|
|
34
|
-
"@
|
|
35
|
-
"@dynamic-labs/
|
|
36
|
-
"@dynamic-labs/
|
|
37
|
-
"@dynamic-labs/wallet-
|
|
33
|
+
"@dynamic-labs/sdk-api-core": "0.0.470",
|
|
34
|
+
"@module-federation/runtime": "0.1.18",
|
|
35
|
+
"@dynamic-labs/rpc-provider-starknet": "3.0.0-alpha.21",
|
|
36
|
+
"@dynamic-labs/utils": "3.0.0-alpha.21",
|
|
37
|
+
"@dynamic-labs/wallet-book": "3.0.0-alpha.21",
|
|
38
|
+
"@dynamic-labs/wallet-connector-core": "3.0.0-alpha.21"
|
|
38
39
|
},
|
|
39
40
|
"peerDependencies": {}
|
|
40
41
|
}
|
package/src/index.cjs
CHANGED
|
@@ -9,6 +9,7 @@ var argentxMobile = require('./wallets/argentxMobile.cjs');
|
|
|
9
9
|
var argentxWeb = require('./wallets/argentxWeb.cjs');
|
|
10
10
|
var bitget = require('./wallets/bitget.cjs');
|
|
11
11
|
var okx = require('./wallets/okx.cjs');
|
|
12
|
+
var metamask = require('./wallets/metamask.cjs');
|
|
12
13
|
require('@dynamic-labs/rpc-provider-starknet');
|
|
13
14
|
|
|
14
15
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
@@ -19,6 +20,7 @@ const StarknetWalletConnectors = (props) => [
|
|
|
19
20
|
argentxWeb.ArgentXWeb,
|
|
20
21
|
okx.Okx,
|
|
21
22
|
bitget.Bitget,
|
|
23
|
+
metamask.MetaMask,
|
|
22
24
|
];
|
|
23
25
|
|
|
24
26
|
exports.StarknetWalletConnectors = StarknetWalletConnectors;
|
package/src/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { ArgentXMobile } from './wallets/argentxMobile.js';
|
|
|
5
5
|
import { ArgentXWeb } from './wallets/argentxWeb.js';
|
|
6
6
|
import { Bitget } from './wallets/bitget.js';
|
|
7
7
|
import { Okx } from './wallets/okx.js';
|
|
8
|
+
import { MetaMask } from './wallets/metamask.js';
|
|
8
9
|
import '@dynamic-labs/rpc-provider-starknet';
|
|
9
10
|
|
|
10
11
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
@@ -15,6 +16,7 @@ const StarknetWalletConnectors = (props) => [
|
|
|
15
16
|
ArgentXWeb,
|
|
16
17
|
Okx,
|
|
17
18
|
Bitget,
|
|
19
|
+
MetaMask,
|
|
18
20
|
];
|
|
19
21
|
|
|
20
22
|
export { StarknetWalletConnectors };
|
|
@@ -22,6 +22,8 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
22
22
|
this.connectedChain = 'STARK';
|
|
23
23
|
this.supportedChains = ['STARK'];
|
|
24
24
|
this.switchNetworkOnlyFromWallet = true;
|
|
25
|
+
// required for metamask snap integration as MM snaps don't have event listeners
|
|
26
|
+
this.canSetEventListeners = true;
|
|
25
27
|
this.name = name;
|
|
26
28
|
this.windowKey = windowKey;
|
|
27
29
|
this.starknetNetworks = opts.starknetNetworks;
|
|
@@ -131,17 +133,16 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
131
133
|
return signature === null || signature === void 0 ? void 0 : signature.join(',');
|
|
132
134
|
});
|
|
133
135
|
}
|
|
134
|
-
getBalance() {
|
|
136
|
+
getBalance(address) {
|
|
135
137
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
136
|
-
const walletAddress = yield this.getAddress();
|
|
137
138
|
const provider = yield this.getWalletClient();
|
|
138
|
-
if (!
|
|
139
|
-
walletConnectorCore.logger.error('Could not
|
|
139
|
+
if (!provider) {
|
|
140
|
+
walletConnectorCore.logger.error('Could not find provider for getting balance');
|
|
140
141
|
return undefined;
|
|
141
142
|
}
|
|
142
143
|
const contract = new starknet.Contract(ethereumContractAbi, constants.ETH_STARKNET_ADDRESS, provider);
|
|
143
144
|
try {
|
|
144
|
-
const { balance } = yield contract.balanceOf(
|
|
145
|
+
const { balance } = yield contract.balanceOf(address);
|
|
145
146
|
/**
|
|
146
147
|
* Dividing by 1e18 as the returned balance is a Gwei number.
|
|
147
148
|
* Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
|
|
@@ -182,6 +183,24 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
182
183
|
if (!wallet) {
|
|
183
184
|
return [];
|
|
184
185
|
}
|
|
186
|
+
try {
|
|
187
|
+
yield this.reconnectIfNeeded(wallet);
|
|
188
|
+
}
|
|
189
|
+
catch (e) {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
const getSelectedAddress = () => wallet.selectedAddress
|
|
193
|
+
? Promise.resolve([wallet.selectedAddress])
|
|
194
|
+
: Promise.reject();
|
|
195
|
+
return utils.retryableFn(getSelectedAddress, {
|
|
196
|
+
fallbackValue: [],
|
|
197
|
+
retryIntervalMs: 100,
|
|
198
|
+
retryStrategy: 'timeout-and-rejection',
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
reconnectIfNeeded(wallet) {
|
|
203
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
185
204
|
const needsReconnection = !this.isProviderConnected() && (yield wallet.isPreauthorized());
|
|
186
205
|
if (needsReconnection) {
|
|
187
206
|
/**
|
|
@@ -199,24 +218,18 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
199
218
|
}
|
|
200
219
|
catch (_a) {
|
|
201
220
|
localStorage.removeItem('dynamic_should_have_wallet');
|
|
202
|
-
|
|
221
|
+
throw new Error('Could not reconnect');
|
|
203
222
|
}
|
|
204
223
|
}
|
|
205
224
|
else {
|
|
206
225
|
yield this.connect();
|
|
207
226
|
}
|
|
208
227
|
}
|
|
209
|
-
const getSelectedAddress = () => wallet.selectedAddress
|
|
210
|
-
? Promise.resolve([wallet.selectedAddress])
|
|
211
|
-
: Promise.reject();
|
|
212
|
-
return utils.retryableFn(getSelectedAddress, {
|
|
213
|
-
fallbackValue: [],
|
|
214
|
-
retryIntervalMs: 100,
|
|
215
|
-
retryStrategy: 'timeout-and-rejection',
|
|
216
|
-
});
|
|
217
228
|
});
|
|
218
229
|
}
|
|
219
230
|
setupEventListeners() {
|
|
231
|
+
if (!this.canSetEventListeners)
|
|
232
|
+
return;
|
|
220
233
|
const wallet = this.getWallet();
|
|
221
234
|
if (!wallet) {
|
|
222
235
|
return walletConnectorCore.logger.error('Wallet has not been found');
|
|
@@ -245,6 +258,8 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
245
258
|
}
|
|
246
259
|
teardownEventListeners() {
|
|
247
260
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
261
|
+
if (!this.canSetEventListeners)
|
|
262
|
+
return;
|
|
248
263
|
const wallet = this.getWallet();
|
|
249
264
|
if (this.handleAccountChange) {
|
|
250
265
|
wallet === null || wallet === void 0 ? void 0 : wallet.off(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
|
|
@@ -23,6 +23,7 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
23
23
|
handleNetworkChange: NetworkChangeEventHandler | undefined;
|
|
24
24
|
switchNetworkOnlyFromWallet: boolean;
|
|
25
25
|
starknetNetworks: NetworkConfiguration[];
|
|
26
|
+
canSetEventListeners: boolean;
|
|
26
27
|
constructor(name: string, windowKey: StarknetWalletKey, opts: {
|
|
27
28
|
chainRpcProviders: IChainRpcProviders;
|
|
28
29
|
starknetNetworks: NetworkConfiguration[];
|
|
@@ -63,6 +64,10 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
63
64
|
features: string[];
|
|
64
65
|
name: string;
|
|
65
66
|
} | undefined;
|
|
67
|
+
walletStandardLocators?: {
|
|
68
|
+
name: string;
|
|
69
|
+
locator: string;
|
|
70
|
+
}[] | undefined;
|
|
66
71
|
windowLocations?: string[] | undefined;
|
|
67
72
|
}[] | undefined;
|
|
68
73
|
mobile?: {
|
|
@@ -81,6 +86,16 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
81
86
|
sdks?: string[] | undefined;
|
|
82
87
|
} | undefined;
|
|
83
88
|
walletGroup?: string | undefined;
|
|
89
|
+
walletLimitations?: {
|
|
90
|
+
browserExtension?: {
|
|
91
|
+
unsupportedEvents?: string[] | undefined;
|
|
92
|
+
unsupportedMethods?: string[] | undefined;
|
|
93
|
+
} | undefined;
|
|
94
|
+
mobile?: {
|
|
95
|
+
unsupportedEvents?: string[] | undefined;
|
|
96
|
+
unsupportedMethods?: string[] | undefined;
|
|
97
|
+
} | undefined;
|
|
98
|
+
} | undefined;
|
|
84
99
|
};
|
|
85
100
|
isProviderConnected(): boolean;
|
|
86
101
|
getPublicClient(): Promise<RpcProvider | undefined>;
|
|
@@ -93,11 +108,12 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
93
108
|
getSigner(): Promise<AccountInterface | undefined>;
|
|
94
109
|
getWalletClient(): Promise<ProviderInterface | undefined>;
|
|
95
110
|
signMessage(messageToSign: string): Promise<string | undefined>;
|
|
96
|
-
getBalance(): Promise<string | undefined>;
|
|
111
|
+
getBalance(address: string): Promise<string | undefined>;
|
|
97
112
|
endSession(): Promise<void>;
|
|
98
113
|
getWallet(): StarknetWindowObject | undefined;
|
|
99
114
|
isInstalledOnBrowser(): boolean;
|
|
100
115
|
getConnectedAccounts(): Promise<string[]>;
|
|
116
|
+
reconnectIfNeeded(wallet: StarknetWindowObject): Promise<Promise<Promise<void>>>;
|
|
101
117
|
setupEventListeners(): void;
|
|
102
118
|
teardownEventListeners(): Promise<void>;
|
|
103
119
|
mapNetworkNameToChainId(networkNameOrChainId: string): constants.StarknetChainId | undefined;
|
|
@@ -18,6 +18,8 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
18
18
|
this.connectedChain = 'STARK';
|
|
19
19
|
this.supportedChains = ['STARK'];
|
|
20
20
|
this.switchNetworkOnlyFromWallet = true;
|
|
21
|
+
// required for metamask snap integration as MM snaps don't have event listeners
|
|
22
|
+
this.canSetEventListeners = true;
|
|
21
23
|
this.name = name;
|
|
22
24
|
this.windowKey = windowKey;
|
|
23
25
|
this.starknetNetworks = opts.starknetNetworks;
|
|
@@ -127,17 +129,16 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
127
129
|
return signature === null || signature === void 0 ? void 0 : signature.join(',');
|
|
128
130
|
});
|
|
129
131
|
}
|
|
130
|
-
getBalance() {
|
|
132
|
+
getBalance(address) {
|
|
131
133
|
return __awaiter(this, void 0, void 0, function* () {
|
|
132
|
-
const walletAddress = yield this.getAddress();
|
|
133
134
|
const provider = yield this.getWalletClient();
|
|
134
|
-
if (!
|
|
135
|
-
logger.error('Could not
|
|
135
|
+
if (!provider) {
|
|
136
|
+
logger.error('Could not find provider for getting balance');
|
|
136
137
|
return undefined;
|
|
137
138
|
}
|
|
138
139
|
const contract = new Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, provider);
|
|
139
140
|
try {
|
|
140
|
-
const { balance } = yield contract.balanceOf(
|
|
141
|
+
const { balance } = yield contract.balanceOf(address);
|
|
141
142
|
/**
|
|
142
143
|
* Dividing by 1e18 as the returned balance is a Gwei number.
|
|
143
144
|
* Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
|
|
@@ -178,6 +179,24 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
178
179
|
if (!wallet) {
|
|
179
180
|
return [];
|
|
180
181
|
}
|
|
182
|
+
try {
|
|
183
|
+
yield this.reconnectIfNeeded(wallet);
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
return [];
|
|
187
|
+
}
|
|
188
|
+
const getSelectedAddress = () => wallet.selectedAddress
|
|
189
|
+
? Promise.resolve([wallet.selectedAddress])
|
|
190
|
+
: Promise.reject();
|
|
191
|
+
return retryableFn(getSelectedAddress, {
|
|
192
|
+
fallbackValue: [],
|
|
193
|
+
retryIntervalMs: 100,
|
|
194
|
+
retryStrategy: 'timeout-and-rejection',
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
reconnectIfNeeded(wallet) {
|
|
199
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
181
200
|
const needsReconnection = !this.isProviderConnected() && (yield wallet.isPreauthorized());
|
|
182
201
|
if (needsReconnection) {
|
|
183
202
|
/**
|
|
@@ -195,24 +214,18 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
195
214
|
}
|
|
196
215
|
catch (_a) {
|
|
197
216
|
localStorage.removeItem('dynamic_should_have_wallet');
|
|
198
|
-
|
|
217
|
+
throw new Error('Could not reconnect');
|
|
199
218
|
}
|
|
200
219
|
}
|
|
201
220
|
else {
|
|
202
221
|
yield this.connect();
|
|
203
222
|
}
|
|
204
223
|
}
|
|
205
|
-
const getSelectedAddress = () => wallet.selectedAddress
|
|
206
|
-
? Promise.resolve([wallet.selectedAddress])
|
|
207
|
-
: Promise.reject();
|
|
208
|
-
return retryableFn(getSelectedAddress, {
|
|
209
|
-
fallbackValue: [],
|
|
210
|
-
retryIntervalMs: 100,
|
|
211
|
-
retryStrategy: 'timeout-and-rejection',
|
|
212
|
-
});
|
|
213
224
|
});
|
|
214
225
|
}
|
|
215
226
|
setupEventListeners() {
|
|
227
|
+
if (!this.canSetEventListeners)
|
|
228
|
+
return;
|
|
216
229
|
const wallet = this.getWallet();
|
|
217
230
|
if (!wallet) {
|
|
218
231
|
return logger.error('Wallet has not been found');
|
|
@@ -241,6 +254,8 @@ class StarknetWalletConnector extends WalletConnectorBase {
|
|
|
241
254
|
}
|
|
242
255
|
teardownEventListeners() {
|
|
243
256
|
return __awaiter(this, void 0, void 0, function* () {
|
|
257
|
+
if (!this.canSetEventListeners)
|
|
258
|
+
return;
|
|
244
259
|
const wallet = this.getWallet();
|
|
245
260
|
if (this.handleAccountChange) {
|
|
246
261
|
wallet === null || wallet === void 0 ? void 0 : wallet.off(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
|
package/src/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { StarknetWindowObject } from 'get-starknet-core';
|
|
2
|
-
export type StarknetWalletKey = 'braavos' | 'argentX' | 'argentXMobile' | 'argentWebWallet' | 'okxwallet' | 'bitkeep';
|
|
2
|
+
export type StarknetWalletKey = 'braavos' | 'argentX' | 'argentXMobile' | 'argentWebWallet' | 'okxwallet' | 'bitkeep' | 'metamask_snap';
|
|
3
3
|
export type StarknetWindowKey = `starknet_${StarknetWalletKey}` | 'starknet';
|
|
4
4
|
type StarknetWindow = {
|
|
5
5
|
[key in StarknetWindowKey]: StarknetWindowObject;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
7
|
+
var index_cjs_js = require('@module-federation/runtime/dist/index.cjs.js');
|
|
8
|
+
|
|
9
|
+
let metaMaskSnapWallet;
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param {IEthereum} provider the metamask window provider object
|
|
13
|
+
* @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
|
|
14
|
+
*/
|
|
15
|
+
const createMetaMaskProviderWrapper = (provider) => {
|
|
16
|
+
const metaMaskProviderWrapper = {
|
|
17
|
+
get account() {
|
|
18
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.account;
|
|
19
|
+
},
|
|
20
|
+
get chainId() {
|
|
21
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.chainId;
|
|
22
|
+
},
|
|
23
|
+
enable: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
if (!metaMaskSnapWallet) {
|
|
25
|
+
yield index_cjs_js.init({
|
|
26
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
27
|
+
remotes: [
|
|
28
|
+
{
|
|
29
|
+
alias: 'MetaMaskStarknetSnapWallet',
|
|
30
|
+
entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
|
|
31
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
});
|
|
35
|
+
const result = yield index_cjs_js.loadRemote('MetaMaskStarknetSnapWallet/index');
|
|
36
|
+
const { MetaMaskSnapWallet } = result;
|
|
37
|
+
metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
|
|
38
|
+
}
|
|
39
|
+
if (!metaMaskSnapWallet) {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
return metaMaskSnapWallet.enable();
|
|
43
|
+
}),
|
|
44
|
+
icon: '',
|
|
45
|
+
id: 'MetaMaskStarknetSnapWallet',
|
|
46
|
+
get isConnected() {
|
|
47
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isConnected;
|
|
48
|
+
},
|
|
49
|
+
isPreauthorized: () => { var _a; return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()) !== null && _a !== void 0 ? _a : Promise.resolve(false); },
|
|
50
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
51
|
+
off: (
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
53
|
+
event,
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
55
|
+
handleEvent) => undefined,
|
|
56
|
+
on: (
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
58
|
+
event,
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
60
|
+
handleEvent) => undefined,
|
|
61
|
+
get provider() {
|
|
62
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.provider;
|
|
63
|
+
},
|
|
64
|
+
request: (call) => {
|
|
65
|
+
if (!metaMaskSnapWallet) {
|
|
66
|
+
throw new Error('Wallet not enabled');
|
|
67
|
+
}
|
|
68
|
+
return metaMaskSnapWallet.request(call);
|
|
69
|
+
},
|
|
70
|
+
get selectedAddress() {
|
|
71
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.selectedAddress;
|
|
72
|
+
},
|
|
73
|
+
get version() {
|
|
74
|
+
var _a;
|
|
75
|
+
return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.version) !== null && _a !== void 0 ? _a : '0.0.0';
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
return metaMaskProviderWrapper;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
exports.createMetaMaskProviderWrapper = createMetaMaskProviderWrapper;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { StarknetWindowObject } from 'get-starknet-core';
|
|
2
|
+
import { IEthereum } from '@dynamic-labs/utils';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {IEthereum} provider the metamask window provider object
|
|
6
|
+
* @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
|
|
7
|
+
*/
|
|
8
|
+
export declare const createMetaMaskProviderWrapper: (provider: IEthereum) => StarknetWindowObject;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
|
+
import { init, loadRemote } from '@module-federation/runtime/dist/index.cjs.js';
|
|
4
|
+
|
|
5
|
+
let metaMaskSnapWallet;
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {IEthereum} provider the metamask window provider object
|
|
9
|
+
* @returns {StarknetWindowObject} the metamask provider wrapper formed into starknet window object
|
|
10
|
+
*/
|
|
11
|
+
const createMetaMaskProviderWrapper = (provider) => {
|
|
12
|
+
const metaMaskProviderWrapper = {
|
|
13
|
+
get account() {
|
|
14
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.account;
|
|
15
|
+
},
|
|
16
|
+
get chainId() {
|
|
17
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.chainId;
|
|
18
|
+
},
|
|
19
|
+
enable: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
if (!metaMaskSnapWallet) {
|
|
21
|
+
yield init({
|
|
22
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
23
|
+
remotes: [
|
|
24
|
+
{
|
|
25
|
+
alias: 'MetaMaskStarknetSnapWallet',
|
|
26
|
+
entry: 'https://snaps.consensys.io/starknet/get-starknet/v1/remoteEntry.js',
|
|
27
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
});
|
|
31
|
+
const result = yield loadRemote('MetaMaskStarknetSnapWallet/index');
|
|
32
|
+
const { MetaMaskSnapWallet } = result;
|
|
33
|
+
metaMaskSnapWallet = new MetaMaskSnapWallet(provider, '*');
|
|
34
|
+
}
|
|
35
|
+
if (!metaMaskSnapWallet) {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
return metaMaskSnapWallet.enable();
|
|
39
|
+
}),
|
|
40
|
+
icon: '',
|
|
41
|
+
id: 'MetaMaskStarknetSnapWallet',
|
|
42
|
+
get isConnected() {
|
|
43
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isConnected;
|
|
44
|
+
},
|
|
45
|
+
isPreauthorized: () => { var _a; return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.isPreauthorized()) !== null && _a !== void 0 ? _a : Promise.resolve(false); },
|
|
46
|
+
name: 'MetaMaskStarknetSnapWallet',
|
|
47
|
+
off: (
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
49
|
+
event,
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
51
|
+
handleEvent) => undefined,
|
|
52
|
+
on: (
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
54
|
+
event,
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
56
|
+
handleEvent) => undefined,
|
|
57
|
+
get provider() {
|
|
58
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.provider;
|
|
59
|
+
},
|
|
60
|
+
request: (call) => {
|
|
61
|
+
if (!metaMaskSnapWallet) {
|
|
62
|
+
throw new Error('Wallet not enabled');
|
|
63
|
+
}
|
|
64
|
+
return metaMaskSnapWallet.request(call);
|
|
65
|
+
},
|
|
66
|
+
get selectedAddress() {
|
|
67
|
+
return metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.selectedAddress;
|
|
68
|
+
},
|
|
69
|
+
get version() {
|
|
70
|
+
var _a;
|
|
71
|
+
return (_a = metaMaskSnapWallet === null || metaMaskSnapWallet === void 0 ? void 0 : metaMaskSnapWallet.version) !== null && _a !== void 0 ? _a : '0.0.0';
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
return metaMaskProviderWrapper;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export { createMetaMaskProviderWrapper };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
7
|
+
var utils = require('@dynamic-labs/utils');
|
|
8
|
+
var starknetWalletConnector = require('../starknetWalletConnector.cjs');
|
|
9
|
+
var starknetSnap = require('../utils/starknetSnap.cjs');
|
|
10
|
+
|
|
11
|
+
class MetaMask extends starknetWalletConnector["default"] {
|
|
12
|
+
constructor(opts) {
|
|
13
|
+
super('MetaMask Starknet', 'metamask_snap', opts);
|
|
14
|
+
this.overrideKey = 'metamaskstarknet';
|
|
15
|
+
this.canSetEventListeners = false;
|
|
16
|
+
if (!window.starknet_metamask_snap) {
|
|
17
|
+
const { providers } = utils.Eip6963ProviderSingleton.get();
|
|
18
|
+
const metamaskProvider = providers.find((p) => ['io.metamask', 'io.metamask.flask'].includes(p.info.rdns));
|
|
19
|
+
if (metamaskProvider) {
|
|
20
|
+
window.starknet_metamask_snap = starknetSnap.createMetaMaskProviderWrapper(metamaskProvider.provider);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
getConnectedAccounts() {
|
|
25
|
+
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
const wallet = this.getWallet();
|
|
27
|
+
if (!wallet) {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
yield this.reconnectIfNeeded(wallet);
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
const getSelectedAddress = () => wallet.selectedAddress
|
|
37
|
+
? Promise.resolve([wallet.selectedAddress])
|
|
38
|
+
: Promise.reject();
|
|
39
|
+
return utils.retryableFn(getSelectedAddress, {
|
|
40
|
+
fallbackValue: [],
|
|
41
|
+
maxRetries: 10,
|
|
42
|
+
retryIntervalMs: 750,
|
|
43
|
+
retryStrategy: 'timeout-and-rejection',
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
exports.MetaMask = MetaMask;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
import StarknetProvider from '../starknetWalletConnector';
|
|
3
|
+
export declare class MetaMask extends StarknetProvider implements WalletConnector {
|
|
4
|
+
overrideKey: string;
|
|
5
|
+
canSetEventListeners: boolean;
|
|
6
|
+
constructor(opts: any);
|
|
7
|
+
getConnectedAccounts(): Promise<string[]>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
|
+
import { Eip6963ProviderSingleton, retryableFn } from '@dynamic-labs/utils';
|
|
4
|
+
import StarknetWalletConnector from '../starknetWalletConnector.js';
|
|
5
|
+
import { createMetaMaskProviderWrapper } from '../utils/starknetSnap.js';
|
|
6
|
+
|
|
7
|
+
class MetaMask extends StarknetWalletConnector {
|
|
8
|
+
constructor(opts) {
|
|
9
|
+
super('MetaMask Starknet', 'metamask_snap', opts);
|
|
10
|
+
this.overrideKey = 'metamaskstarknet';
|
|
11
|
+
this.canSetEventListeners = false;
|
|
12
|
+
if (!window.starknet_metamask_snap) {
|
|
13
|
+
const { providers } = Eip6963ProviderSingleton.get();
|
|
14
|
+
const metamaskProvider = providers.find((p) => ['io.metamask', 'io.metamask.flask'].includes(p.info.rdns));
|
|
15
|
+
if (metamaskProvider) {
|
|
16
|
+
window.starknet_metamask_snap = createMetaMaskProviderWrapper(metamaskProvider.provider);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
getConnectedAccounts() {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
const wallet = this.getWallet();
|
|
23
|
+
if (!wallet) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
yield this.reconnectIfNeeded(wallet);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
const getSelectedAddress = () => wallet.selectedAddress
|
|
33
|
+
? Promise.resolve([wallet.selectedAddress])
|
|
34
|
+
: Promise.reject();
|
|
35
|
+
return retryableFn(getSelectedAddress, {
|
|
36
|
+
fallbackValue: [],
|
|
37
|
+
maxRetries: 10,
|
|
38
|
+
retryIntervalMs: 750,
|
|
39
|
+
retryStrategy: 'timeout-and-rejection',
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { MetaMask };
|