@dynamic-labs/starknet 0.18.0-RC.2 → 0.18.0-RC.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 CHANGED
@@ -1,4 +1,299 @@
1
1
 
2
+ ## [0.18.0-RC.21](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.20...v0.18.0-RC.21) (2023-07-28)
3
+
4
+ ## [0.18.0-RC.20](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.19...v0.18.0-RC.20) (2023-07-27)
5
+
6
+
7
+ ### Features
8
+
9
+ * **QNTM-56:** add onBeforeConnectSuccessConfirmation callback ([#2753](https://github.com/dynamic-labs/DynamicAuth/issues/2753)) ([b174396](https://github.com/dynamic-labs/DynamicAuth/commit/b174396ab341cbcf11c6940e54931c0db3954d0d))
10
+ * **QNTM-72:** add backpack wallet ([#2702](https://github.com/dynamic-labs/DynamicAuth/issues/2702)) ([0d0ce9c](https://github.com/dynamic-labs/DynamicAuth/commit/0d0ce9c0d92118a78b5e40f64c5530246523712a))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * bump sdk version and change sdksettings api ([#2760](https://github.com/dynamic-labs/DynamicAuth/issues/2760)) ([6e3e205](https://github.com/dynamic-labs/DynamicAuth/commit/6e3e2050ed63d2df2d88d9169bc89d5f17870847))
16
+ * check funding enabled based on enabled onramp providers instead of onrampFunding settings ([#2662](https://github.com/dynamic-labs/DynamicAuth/issues/2662)) ([d542a9b](https://github.com/dynamic-labs/DynamicAuth/commit/d542a9b2950640e473afe378c857f4d2dd1926ff))
17
+ * ensure metamask auto-redirect upon message signing ([#2757](https://github.com/dynamic-labs/DynamicAuth/issues/2757)) ([a590f4b](https://github.com/dynamic-labs/DynamicAuth/commit/a590f4b054cd1de7ad400763d769b0daf4fcaad2))
18
+ * **QNTM-123:** use `linkedWallets` after signing the first message ([#2741](https://github.com/dynamic-labs/DynamicAuth/issues/2741)) ([7f26151](https://github.com/dynamic-labs/DynamicAuth/commit/7f26151db69b50102fd4b09ec470c8f19ce7b68f))
19
+
20
+ ## [0.18.0-RC.19](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.18...v0.18.0-RC.19) (2023-07-25)
21
+
22
+
23
+ ### ⚠ BREAKING CHANGES
24
+
25
+ * it updates the variable name isUserConnected to isFullyConnected
26
+ to better reflect its purpose in the codebase. user should be reserved for fully authenticated entities
27
+
28
+ ### Features
29
+
30
+ * Update WalletConnect wallet registry ([#2744](https://github.com/dynamic-labs/DynamicAuth/issues/2744)) ([46285ad](https://github.com/dynamic-labs/DynamicAuth/commit/46285adc77d12cdfe43d0ce1296308f4905fbfb5))
31
+
32
+
33
+ ### Bug Fixes
34
+
35
+ * missing field handling on email verification ([#2740](https://github.com/dynamic-labs/DynamicAuth/issues/2740)) ([3a42804](https://github.com/dynamic-labs/DynamicAuth/commit/3a428049a1f56a263135d636a335e597b3195b51))
36
+
37
+
38
+ * rename isUserConnected to isFullyConnected ([#2739](https://github.com/dynamic-labs/DynamicAuth/issues/2739)) ([951780b](https://github.com/dynamic-labs/DynamicAuth/commit/951780be79acdc5191ffb8a6a525a2701832a2ad))
39
+
40
+ ## [0.18.0-RC.18](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.17...v0.18.0-RC.18) (2023-07-24)
41
+
42
+ ### Bug Fixes
43
+
44
+ * do not call connectSuccess when already connected ([#2705](https://github.com/dynamic-labs/DynamicAuth/issues/2705)) ([12a65fb](https://github.com/dynamic-labs/DynamicAuth/commit/12a65fb5e59a38de0f5fb0e7eab3ce3d558f201f))
45
+ * do not proceed to authSuccess if there are still missing fields ([#2712](https://github.com/dynamic-labs/DynamicAuth/issues/2712)) ([2fb10ed](https://github.com/dynamic-labs/DynamicAuth/commit/2fb10ed7f9c28476d61856887b517bdae10b80f4))
46
+ * add legacy safari detection ([#2733](https://github.com/dynamic-labs/DynamicAuth/issues/2733)) ([1b21c57](https://github.com/dynamic-labs/DynamicAuth/commit/1b21c57c1fd7c458f499cc09ef60364c314b0464))
47
+
48
+ ## [0.18.0-RC.17](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.16...v0.18.0-RC.17) (2023-07-24)
49
+
50
+
51
+ ### Features
52
+
53
+ * add ongoingVerifications object disclaiming which verifications are in progress ([#2633](https://github.com/dynamic-labs/DynamicAuth/issues/2633)) ([948c778](https://github.com/dynamic-labs/DynamicAuth/commit/948c778e5955fcf80e31ac7f368e7605cd7eb7d5))
54
+ * add rabby wallet support ([#2590](https://github.com/dynamic-labs/DynamicAuth/issues/2590)) ([d70c49d](https://github.com/dynamic-labs/DynamicAuth/commit/d70c49d0b348ced3ee5691fdfc19b3eef5ba79db))
55
+ * **DYN-2399:** send dynamicContext props from sdk to api ([#2659](https://github.com/dynamic-labs/DynamicAuth/issues/2659)) ([f06787b](https://github.com/dynamic-labs/DynamicAuth/commit/f06787bf6ec1dc69c53ee6287fd3721d47901ad1))
56
+ * introduce MenuList and Dropdown components to unify previously redundant implementations ([#2675](https://github.com/dynamic-labs/DynamicAuth/issues/2675)) ([dfc63a5](https://github.com/dynamic-labs/DynamicAuth/commit/dfc63a5fef2c00cf0187e7a481dc3267d44f6cc3))
57
+ * **QNTM-101:** add loading state to button ([#2691](https://github.com/dynamic-labs/DynamicAuth/issues/2691)) ([5a7b539](https://github.com/dynamic-labs/DynamicAuth/commit/5a7b5392c4b17cc26ecc621d11afdf37f2f10c65))
58
+ * update blocto version to v2 ([#2651](https://github.com/dynamic-labs/DynamicAuth/issues/2651)) ([441f85e](https://github.com/dynamic-labs/DynamicAuth/commit/441f85efa3921a57b9b282631016162902c8aabb))
59
+ * verify connected wallets network at runtime ([#2667](https://github.com/dynamic-labs/DynamicAuth/issues/2667)) ([8fa8dcc](https://github.com/dynamic-labs/DynamicAuth/commit/8fa8dccdfcb56d9d76d0cd00a153a95e5d52b4dc))
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * correctly round balance numbers on widget ([#2625](https://github.com/dynamic-labs/DynamicAuth/issues/2625)) ([7b45483](https://github.com/dynamic-labs/DynamicAuth/commit/7b45483e7bdb458434b7787f9df930ba9acbc8e0))
65
+ * decrease NetworkNotSupported useEffects calls to avoid race condition ([#2731](https://github.com/dynamic-labs/DynamicAuth/issues/2731)) ([6a7baf1](https://github.com/dynamic-labs/DynamicAuth/commit/6a7baf1c63e82b27d03540d670603fe11685348a))
66
+ * **GVTY-58:** do not allow users to submit empty whitespace strings in onboarding form ([#2720](https://github.com/dynamic-labs/DynamicAuth/issues/2720)) ([916f27a](https://github.com/dynamic-labs/DynamicAuth/commit/916f27a5c880281245c71af3f16217cda5317c26))
67
+ * playwright tests were failing due to new cookies popup that overlapped sdk modal ([#2709](https://github.com/dynamic-labs/DynamicAuth/issues/2709)) ([9254777](https://github.com/dynamic-labs/DynamicAuth/commit/92547773047687fcc50ad6b895b1b59176d42af7))
68
+ * **QNTM-111:** call onConnectSuccess with correct wallet connector in… ([#2724](https://github.com/dynamic-labs/DynamicAuth/issues/2724)) ([159e78c](https://github.com/dynamic-labs/DynamicAuth/commit/159e78ce458762f0e2ccbaf2acbc81efde35830a))
69
+ * **QNTM-98:** improve connectedWallets state management and connected wallets events listeners ([#2696](https://github.com/dynamic-labs/DynamicAuth/issues/2696)) ([3a91a37](https://github.com/dynamic-labs/DynamicAuth/commit/3a91a371423f50d28640141d0ca6a643a8dcf25a))
70
+ * update broken safe icon ([#2713](https://github.com/dynamic-labs/DynamicAuth/issues/2713)) ([42943b4](https://github.com/dynamic-labs/DynamicAuth/commit/42943b4684c165ec103fbed0e69e691bee4d305f))
71
+
72
+ ## [0.18.0-RC.16](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.15...v0.18.0-RC.16) (2023-07-18)
73
+
74
+
75
+ ### Features
76
+
77
+ * **QNTM-30:** add spinner to log out button ([#2663](https://github.com/dynamic-labs/DynamicAuth/issues/2663)) ([fceafbb](https://github.com/dynamic-labs/DynamicAuth/commit/fceafbb6fecf323df39ac3a8f518ba8005d4b550))
78
+
79
+
80
+ ### Bug Fixes
81
+
82
+ * handle edge cases for missing projectSettings for PoweredByDynamic ([#2684](https://github.com/dynamic-labs/DynamicAuth/issues/2684)) ([6f5b3d8](https://github.com/dynamic-labs/DynamicAuth/commit/6f5b3d8d1b1d4aed0dd2e73e5423f6e50347ff3d))
83
+ * typo in blocked view ([#2673](https://github.com/dynamic-labs/DynamicAuth/issues/2673)) ([034bdaf](https://github.com/dynamic-labs/DynamicAuth/commit/034bdafb44b767600ea7c0148f39dd026280e3b8))
84
+
85
+ ## [0.18.0-RC.15](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.14...v0.18.0-RC.15) (2023-07-18)
86
+
87
+
88
+ ### Features
89
+
90
+ * add `updateConnectedWalletById` function, add `network` property to connectedWallets ([#2666](https://github.com/dynamic-labs/DynamicAuth/issues/2666)) ([3c50abf](https://github.com/dynamic-labs/DynamicAuth/commit/3c50abf964a2807c6e1af9fceeb1ca259785a21f))
91
+ * add magic to ethereum-all package ([#2576](https://github.com/dynamic-labs/DynamicAuth/issues/2576)) ([7676ef2](https://github.com/dynamic-labs/DynamicAuth/commit/7676ef2883b30adf2c1b521d7c1848248ceadb24))
92
+ * allow switching between multiwallet and single wallet on demo ([#2596](https://github.com/dynamic-labs/DynamicAuth/issues/2596)) ([dae87c1](https://github.com/dynamic-labs/DynamicAuth/commit/dae87c12d2f1be64c2ca1f232ffdf2da998b1c1e))
93
+ * clear values from LS that cannot be parsed ([#2542](https://github.com/dynamic-labs/DynamicAuth/issues/2542)) ([41faf5d](https://github.com/dynamic-labs/DynamicAuth/commit/41faf5dbc07937685b4d89f87ae040021c5fee00))
94
+ * **QNTM-82:** should not go back to "get started" view if one wallet already connected ([#2653](https://github.com/dynamic-labs/DynamicAuth/issues/2653)) ([004db41](https://github.com/dynamic-labs/DynamicAuth/commit/004db410eb11af9ba105058df4958f20633a3002))
95
+
96
+
97
+ ### Bug Fixes
98
+
99
+ * **bridge:** update the wallets to connect when unlinking ([#2604](https://github.com/dynamic-labs/DynamicAuth/issues/2604)) ([4739306](https://github.com/dynamic-labs/DynamicAuth/commit/4739306c2d742e961281747427821af7c36b6cc2))
100
+ * network picker is broken in network switch view ([#2612](https://github.com/dynamic-labs/DynamicAuth/issues/2612)) ([c514ba4](https://github.com/dynamic-labs/DynamicAuth/commit/c514ba4f931c243bdd60329db7ed1691fc36819c))
101
+ * search not found icon in wrong color in dark mode ([#2656](https://github.com/dynamic-labs/DynamicAuth/issues/2656)) ([a4db736](https://github.com/dynamic-labs/DynamicAuth/commit/a4db736b8659567330dd857792cc12b17ce9d851))
102
+ * use dynamicauth.com for api requests ([#2649](https://github.com/dynamic-labs/DynamicAuth/issues/2649)) ([acae0af](https://github.com/dynamic-labs/DynamicAuth/commit/acae0afc2a18c41fa61b2c487ff1ceb46c5d9a1f))
103
+ * wallet should be disconnected when NetworkNotSupported view is ignored in connect-only mode ([#2658](https://github.com/dynamic-labs/DynamicAuth/issues/2658)) ([f3565cf](https://github.com/dynamic-labs/DynamicAuth/commit/f3565cf09a1ddcc671b596bbe23c68d35afc81b5))
104
+
105
+ ## [0.18.0-RC.14](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.13...v0.18.0-RC.14) (2023-07-11)
106
+
107
+
108
+ ### ⚠ BREAKING CHANGES
109
+
110
+ * **QNTM-68:** we currently expose concatenated primary and secondary
111
+ wallets array as connectedWallets, this is wrong and may cause issues with
112
+ understanding our architecture as well as issues for customers that want
113
+ to have access to connectedWallets array.
114
+
115
+ * chore(QNTM-68): expose connectedWallets from DynamicContext
116
+
117
+ since, we renamed connectedWallets to linkedWallets, we now want to expose correct value
118
+ for connectedWallets.
119
+
120
+ * chore(QNTM-68)!: remove connectedWalletsInfo from useDynamicContext
121
+ * **QNTM-68:** since we're exposing connectedWallets and this variable
122
+ has less information there is no need in exposing it from DynamicContext
123
+
124
+ * **QNTM-68:** update connectedWallets property and expose linkedWallets ([#2644](https://github.com/dynamic-labs/DynamicAuth/issues/2644)) ([8b707c3](https://github.com/dynamic-labs/DynamicAuth/commit/8b707c3fb2e14aa25385b35768ffa355ef7117e5))
125
+
126
+ ## [0.18.0-RC.13](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.12...v0.18.0-RC.13) (2023-07-11)
127
+
128
+
129
+ ### Features
130
+
131
+ * **DynamicContextProvider:** expose socialProviderFilter to modify social provider display order ([#2607](https://github.com/dynamic-labs/DynamicAuth/issues/2607)) ([0f03260](https://github.com/dynamic-labs/DynamicAuth/commit/0f03260e739da3e68c32a2a87a2ca629bb1f28b5))
132
+ * **GVTY-21:** Blocto Email provider ([#2524](https://github.com/dynamic-labs/DynamicAuth/issues/2524)) ([434ce59](https://github.com/dynamic-labs/DynamicAuth/commit/434ce598b3bc13841121b61e5ead7547d3c44eea))
133
+ * listen for the network change in network not supported views ([#2611](https://github.com/dynamic-labs/DynamicAuth/issues/2611)) ([957fbce](https://github.com/dynamic-labs/DynamicAuth/commit/957fbce55d7906f9d6b109838035b2c0306a4b85))
134
+
135
+
136
+ ### Bug Fixes
137
+
138
+ * Clean up provider re-initializing after logout ([#2632](https://github.com/dynamic-labs/DynamicAuth/issues/2632)) ([fbc2201](https://github.com/dynamic-labs/DynamicAuth/commit/fbc22013d6784061cb4fdd72e24695c89f0e2fe5))
139
+ * **MagicWalletConnector:** check if user is logged when getting balance ([#2614](https://github.com/dynamic-labs/DynamicAuth/issues/2614)) ([ced9d66](https://github.com/dynamic-labs/DynamicAuth/commit/ced9d66cb335c3033a18642bdd841ee6be6c1e05))
140
+ * **useValidateSessin:** only check for bridge on wallet connect wallets ([#2571](https://github.com/dynamic-labs/DynamicAuth/issues/2571)) ([349b659](https://github.com/dynamic-labs/DynamicAuth/commit/349b65963f1d5392f63aaa138f6498f0d17cd43f))
141
+
142
+ ## [0.18.0-RC.12](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.11...v0.18.0-RC.12) (2023-07-07)
143
+
144
+
145
+ ### Features
146
+
147
+ * add event listeners to connect-only ([#2578](https://github.com/dynamic-labs/DynamicAuth/issues/2578)) ([42fcf09](https://github.com/dynamic-labs/DynamicAuth/commit/42fcf096ac439ec883a79bf5811b27cdc360015a))
148
+ * add message when search finds no wallet ([#2421](https://github.com/dynamic-labs/DynamicAuth/issues/2421)) ([694ecee](https://github.com/dynamic-labs/DynamicAuth/commit/694ecee94d9f6f636364eae4aa95ea48e3ff0e0a))
149
+ * allow adding either ToS or PP and enable customization for both ([#2451](https://github.com/dynamic-labs/DynamicAuth/issues/2451)) ([0dce0fe](https://github.com/dynamic-labs/DynamicAuth/commit/0dce0fe534056298cbfdd9caa694231ede00c3fc))
150
+
151
+
152
+ ### Bug Fixes
153
+
154
+ * **BridgeSummaryView:** handle primary wallet when it is not defined ([#2602](https://github.com/dynamic-labs/DynamicAuth/issues/2602)) ([8a5daa4](https://github.com/dynamic-labs/DynamicAuth/commit/8a5daa4b2ad218460ccfaab0fa68c75d0d5d569f))
155
+ * secondary wallets network change overrides primary wallet network ([#2603](https://github.com/dynamic-labs/DynamicAuth/issues/2603)) ([358fc45](https://github.com/dynamic-labs/DynamicAuth/commit/358fc45ecb73f31294744f7ba4dbba5779a3e1cf))
156
+
157
+ ## [0.18.0-RC.11](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.10...v0.18.0-RC.11) (2023-07-07)
158
+
159
+
160
+ ### Features
161
+
162
+ * **DYN-2384:** expose useDynamicScopes hook ([#2179](https://github.com/dynamic-labs/DynamicAuth/issues/2179)) ([c224749](https://github.com/dynamic-labs/DynamicAuth/commit/c2247493d9c99dab7e41d7d8d156ae7e478973bc))
163
+ * **DynamicBridgeWidget:** add UI inline widget to match designs ([#2587](https://github.com/dynamic-labs/DynamicAuth/issues/2587)) ([d623aec](https://github.com/dynamic-labs/DynamicAuth/commit/d623aecda6388b67e40a3f8dabb03ca03a6f22b6))
164
+ * support starknet networks ([#2579](https://github.com/dynamic-labs/DynamicAuth/issues/2579)) ([a01545e](https://github.com/dynamic-labs/DynamicAuth/commit/a01545e0cf8e4e19a22dc64877d590d78647c579))
165
+
166
+
167
+ ### Bug Fixes
168
+
169
+ * metamask getConnectedAccounts triggering an infinite loop ([#2580](https://github.com/dynamic-labs/DynamicAuth/issues/2580)) ([e025cea](https://github.com/dynamic-labs/DynamicAuth/commit/e025cea33e4a95ea2a03ac11e47a88a73db39848))
170
+
171
+ ## [0.18.0-RC.10](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.9...v0.18.0-RC.10) (2023-07-06)
172
+
173
+
174
+ ### Features
175
+
176
+ * Update handleUnlink to support connected only wallets ([#2573](https://github.com/dynamic-labs/DynamicAuth/issues/2573)) ([07438c9](https://github.com/dynamic-labs/DynamicAuth/commit/07438c9580b830aa68fcc6a06ea4050a3743a501))
177
+
178
+
179
+ ### Bug Fixes
180
+
181
+ * restore connectedWallet clearing function ([#2575](https://github.com/dynamic-labs/DynamicAuth/issues/2575)) ([8d3c41a](https://github.com/dynamic-labs/DynamicAuth/commit/8d3c41a6871037b1003270e724259f23c5f6f370))
182
+
183
+ ## [0.18.0-RC.9](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.8...v0.18.0-RC.9) (2023-07-04)
184
+
185
+
186
+ ### Features
187
+
188
+ * add Network Not Supported prompt to connect-only & show prompt before sign in connect-sign mode ([#2474](https://github.com/dynamic-labs/DynamicAuth/issues/2474)) ([8d5bfa9](https://github.com/dynamic-labs/DynamicAuth/commit/8d5bfa97ca4da50e06ce258a38a63e7407a795f6))
189
+ * **DYN-2602:** add ability to unlink connected wallet ([#2494](https://github.com/dynamic-labs/DynamicAuth/issues/2494)) ([389861b](https://github.com/dynamic-labs/DynamicAuth/commit/389861bc0281baec379b1593e529cef3467f3326))
190
+ * **DYN-2604:** add chainId property to walletsByChain object ([#2405](https://github.com/dynamic-labs/DynamicAuth/issues/2405)) ([d9b42f7](https://github.com/dynamic-labs/DynamicAuth/commit/d9b42f7b1d53dac1ed0228ecb5e56a44c6abd8d2))
191
+ * **DynamicAuthLayout:** show connected wallet progress ([#2567](https://github.com/dynamic-labs/DynamicAuth/issues/2567)) ([a20ff6f](https://github.com/dynamic-labs/DynamicAuth/commit/a20ff6f32b360ccc699d2a271c7a96751ae87d29))
192
+ * **DynamicBridgeFlow:** add bridge flow ([#2543](https://github.com/dynamic-labs/DynamicAuth/issues/2543)) ([79c4c87](https://github.com/dynamic-labs/DynamicAuth/commit/79c4c870d47a0c853c292a8d913bd9be9e209a15))
193
+
194
+
195
+ ### Bug Fixes
196
+
197
+ * don't force required chain to eth in case is not enabled ([#2537](https://github.com/dynamic-labs/DynamicAuth/issues/2537)) ([b01d6c9](https://github.com/dynamic-labs/DynamicAuth/commit/b01d6c9e91e9971e82739c5a2c900de4768f977c))
198
+ * log out if there's any session sync issue ([#2545](https://github.com/dynamic-labs/DynamicAuth/issues/2545)) ([29972fa](https://github.com/dynamic-labs/DynamicAuth/commit/29972fad1067f5550a61f6e2cd9adcaf811fd268))
199
+ * persist chain to WalletConnect session when changed in wallet ([#2556](https://github.com/dynamic-labs/DynamicAuth/issues/2556)) ([fc9ec35](https://github.com/dynamic-labs/DynamicAuth/commit/fc9ec3501de1e3235adee4df95b296dc22cce23e))
200
+ * WC2 sign-message on non-selected chain ([#2544](https://github.com/dynamic-labs/DynamicAuth/issues/2544)) ([48a4384](https://github.com/dynamic-labs/DynamicAuth/commit/48a4384f77c29775e0c28ed335956cfbd6f89ca3))
201
+ * **wcv2:** add eth_signTypedData_v4 to optional methods ([#2527](https://github.com/dynamic-labs/DynamicAuth/issues/2527)) ([b99474b](https://github.com/dynamic-labs/DynamicAuth/commit/b99474b81b083134762be0fe9554a6f049b3edda))
202
+ * **wcv2:** allow getWeb3Provider to wait to provider init ([#2523](https://github.com/dynamic-labs/DynamicAuth/issues/2523)) ([d9c7fee](https://github.com/dynamic-labs/DynamicAuth/commit/d9c7fee10d2a6c766043515e19829fd7e3d5b2ef))
203
+
204
+ ## [0.18.0-RC.8](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.7...v0.18.0-RC.8) (2023-06-29)
205
+
206
+
207
+ ### Features
208
+
209
+ * add support for custom walletconnect v1 bridge ([#2487](https://github.com/dynamic-labs/DynamicAuth/issues/2487)) ([5b0ca2e](https://github.com/dynamic-labs/DynamicAuth/commit/5b0ca2e4e8aa241ed13e4f38346c31da8479a6c4))
210
+ * **DYN-2623:** improve error message on sign cancellation for wallets ([#2493](https://github.com/dynamic-labs/DynamicAuth/issues/2493)) ([081c515](https://github.com/dynamic-labs/DynamicAuth/commit/081c515c9d28d6fa4c0eaac388ee421a7b23144b))
211
+
212
+
213
+ ### Bug Fixes
214
+
215
+ * clearing the activeAccount value ([#2469](https://github.com/dynamic-labs/DynamicAuth/issues/2469)) ([ff75bde](https://github.com/dynamic-labs/DynamicAuth/commit/ff75bde938a4178541568b79754f773607b9d87f))
216
+ * don't initialize provider if it's already initialized ([#2490](https://github.com/dynamic-labs/DynamicAuth/issues/2490)) ([878d38f](https://github.com/dynamic-labs/DynamicAuth/commit/878d38f5c8d7d7448c65e58b25cefd9f3518217e))
217
+ * more wcv2 improvements ([#2475](https://github.com/dynamic-labs/DynamicAuth/issues/2475)) ([13baa84](https://github.com/dynamic-labs/DynamicAuth/commit/13baa84218d6259d02df7d8c387b40dc3cb11ce5)), closes [#2469](https://github.com/dynamic-labs/DynamicAuth/issues/2469) [#2470](https://github.com/dynamic-labs/DynamicAuth/issues/2470) [#2471](https://github.com/dynamic-labs/DynamicAuth/issues/2471) [#2477](https://github.com/dynamic-labs/DynamicAuth/issues/2477) [#2479](https://github.com/dynamic-labs/DynamicAuth/issues/2479) [#2471](https://github.com/dynamic-labs/DynamicAuth/issues/2471) [#2476](https://github.com/dynamic-labs/DynamicAuth/issues/2476)
218
+ * multiple improvements for WC2 ([#2458](https://github.com/dynamic-labs/DynamicAuth/issues/2458)) ([0813af2](https://github.com/dynamic-labs/DynamicAuth/commit/0813af2aafa8019868117084efe8ae147ac24581))
219
+ * revert changes since latest wcv2 improvements ([#2473](https://github.com/dynamic-labs/DynamicAuth/issues/2473)) ([3375371](https://github.com/dynamic-labs/DynamicAuth/commit/337537101a13d67b860748b62f172eba01d0b461)), closes [#2471](https://github.com/dynamic-labs/DynamicAuth/issues/2471) [#2470](https://github.com/dynamic-labs/DynamicAuth/issues/2470) [#2469](https://github.com/dynamic-labs/DynamicAuth/issues/2469)
220
+ * sync issue within connect-only mode ([#2496](https://github.com/dynamic-labs/DynamicAuth/issues/2496)) ([44af274](https://github.com/dynamic-labs/DynamicAuth/commit/44af274618c30fe65ec95739cd16a8ddde08e34e))
221
+ * typo in terms of service ([#2401](https://github.com/dynamic-labs/DynamicAuth/issues/2401)) ([5b195e5](https://github.com/dynamic-labs/DynamicAuth/commit/5b195e54479d9a88bd017fc45f2f2455d1caedc4))
222
+ * **wc_v1_bridget:** disable WC v2 when WC v1 bridge is set ([#2505](https://github.com/dynamic-labs/DynamicAuth/issues/2505)) ([b3f0a68](https://github.com/dynamic-labs/DynamicAuth/commit/b3f0a6895095bb37c635984fc970b52446e04f56))
223
+ * wc2 android improvements ([#2488](https://github.com/dynamic-labs/DynamicAuth/issues/2488)) ([f60ef9c](https://github.com/dynamic-labs/DynamicAuth/commit/f60ef9c1dd672f78199eee40edbe2707c043e1b5))
224
+ * **wcv2:** make sure to clear active account when ending session ([#2471](https://github.com/dynamic-labs/DynamicAuth/issues/2471)) ([b766df3](https://github.com/dynamic-labs/DynamicAuth/commit/b766df39a7e4dabc54fda9131b7bd9b53895cf2f))
225
+ * **wcv2:** use native or universal link when signing message ([#2502](https://github.com/dynamic-labs/DynamicAuth/issues/2502)) ([6e3e3fb](https://github.com/dynamic-labs/DynamicAuth/commit/6e3e3fbb58fb9e3eb314e6631ac2123237f41e8c))
226
+
227
+ ## [0.18.0-RC.7](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.6...v0.18.0-RC.7) (2023-06-23)
228
+
229
+
230
+ ### Features
231
+
232
+ * add bridge connect button ([#2399](https://github.com/dynamic-labs/DynamicAuth/issues/2399)) ([6987eea](https://github.com/dynamic-labs/DynamicAuth/commit/6987eeae8f49a5d077de6c4343b83ecbb1fc8b89))
233
+ * add useTimeout, useInterval and useIsomorphicLayoutEffect hooks ([#2418](https://github.com/dynamic-labs/DynamicAuth/issues/2418)) ([3ed8595](https://github.com/dynamic-labs/DynamicAuth/commit/3ed859526a6ec982b61a4335a9a63512d0e631e3))
234
+ * **DYN-2411:** WalletLockedView when user has valid jwt and all of their wallets are disconnected ([#2273](https://github.com/dynamic-labs/DynamicAuth/issues/2273)) ([2e6d0d6](https://github.com/dynamic-labs/DynamicAuth/commit/2e6d0d6ed734eb628bd05b6ad64560c496ad915f))
235
+ * **DYN-2598:** add powered by, update copy and paddings in the select wallet chain layout ([#2391](https://github.com/dynamic-labs/DynamicAuth/issues/2391)) ([f2a7924](https://github.com/dynamic-labs/DynamicAuth/commit/f2a79241dcf1ea5720242c2cc65a6fcd077ea0e9))
236
+ * **solana:** add logic to get network based on genesis hash ([#2402](https://github.com/dynamic-labs/DynamicAuth/issues/2402)) ([b76c626](https://github.com/dynamic-labs/DynamicAuth/commit/b76c62660bae334aef84678db5d8349a3d575630))
237
+
238
+
239
+ ### Bug Fixes
240
+
241
+ * better handling of the CB wallet provider ([#2376](https://github.com/dynamic-labs/DynamicAuth/issues/2376)) ([720e510](https://github.com/dynamic-labs/DynamicAuth/commit/720e510d0793c530d06db5eaa1d5a7be608703bb))
242
+ * clear AUTH_USER when there is no AUTH_TOKEN on LS ([#2423](https://github.com/dynamic-labs/DynamicAuth/issues/2423)) ([bf1e1c0](https://github.com/dynamic-labs/DynamicAuth/commit/bf1e1c0f8a7a7a852c67ef363613deecacdad92e))
243
+ * set auth mode to connect-and-sign when verifiying wallet ([#2369](https://github.com/dynamic-labs/DynamicAuth/issues/2369)) ([666aa69](https://github.com/dynamic-labs/DynamicAuth/commit/666aa6954d19551a354af933a69ab8eeee7a98b5))
244
+ * use getAuthTokenValue in initExpirationTime ([#2422](https://github.com/dynamic-labs/DynamicAuth/issues/2422)) ([fa8ff78](https://github.com/dynamic-labs/DynamicAuth/commit/fa8ff78d64421ca4447794fe9af53c175adf94c3))
245
+
246
+ ## [0.18.0-RC.6](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.5...v0.18.0-RC.6) (2023-06-20)
247
+
248
+
249
+ ### Features
250
+
251
+ * add export keys option for magic wallets ([#2377](https://github.com/dynamic-labs/DynamicAuth/issues/2377)) ([6b40f53](https://github.com/dynamic-labs/DynamicAuth/commit/6b40f538f207691b54fe2f245ed6018c467b83fe))
252
+
253
+
254
+ ### Bug Fixes
255
+
256
+ * add polyfill for css layers ([#2386](https://github.com/dynamic-labs/DynamicAuth/issues/2386)) ([3d489f5](https://github.com/dynamic-labs/DynamicAuth/commit/3d489f59d676864134a94d031697e0f83fc0d742))
257
+
258
+ ## [0.18.0-RC.5](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.4...v0.18.0-RC.5) (2023-06-20)
259
+
260
+
261
+ ### Bug Fixes
262
+
263
+ * remove process variable declaration ([#2389](https://github.com/dynamic-labs/DynamicAuth/issues/2389)) ([3c05121](https://github.com/dynamic-labs/DynamicAuth/commit/3c05121473850444f2c8393fa6e98e10d58870bc))
264
+ * wallet book singleton class to initalize when walletBook is undefined ([#2392](https://github.com/dynamic-labs/DynamicAuth/issues/2392)) ([7e07137](https://github.com/dynamic-labs/DynamicAuth/commit/7e0713712321439ee48e0c9ec88fef8c9aecd9cf))
265
+
266
+ ## [0.18.0-RC.4](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.3...v0.18.0-RC.4) (2023-06-20)
267
+
268
+
269
+ ### ⚠ BREAKING CHANGES
270
+
271
+ * **DYN-1260:** integrate wallets group view with group logic (#2305)
272
+
273
+ ### Features
274
+
275
+ * **DYN-1260:** integrate wallets group view with group logic ([#2305](https://github.com/dynamic-labs/DynamicAuth/issues/2305)) ([d5adb41](https://github.com/dynamic-labs/DynamicAuth/commit/d5adb411f263d1583abe5102e60d02573c6bf416))
276
+
277
+
278
+ ### Bug Fixes
279
+
280
+ * **DYN-2507:** too long network name shrinks users avatar ([#2383](https://github.com/dynamic-labs/DynamicAuth/issues/2383)) ([8586c3b](https://github.com/dynamic-labs/DynamicAuth/commit/8586c3be5a499118b7229eb7a3702d3350642107))
281
+ * hide wallet menu items that are not needed ([#2375](https://github.com/dynamic-labs/DynamicAuth/issues/2375)) ([35a6723](https://github.com/dynamic-labs/DynamicAuth/commit/35a67234da47f1a992a94c17e445b1fcba1c700f))
282
+ * use overflow auto to avoid showing the disabled scrollbar on gecko browser ([#2382](https://github.com/dynamic-labs/DynamicAuth/issues/2382)) ([16a7db4](https://github.com/dynamic-labs/DynamicAuth/commit/16a7db49e5b154bc6a4ea263c8a8c8a92cf1d810))
283
+ * use primary color for wallet group item copy ([#2384](https://github.com/dynamic-labs/DynamicAuth/issues/2384)) ([3fe439e](https://github.com/dynamic-labs/DynamicAuth/commit/3fe439ea2a271bc4b24b145db3f70774e221723e))
284
+
285
+ ## [0.18.0-RC.3](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.2...v0.18.0-RC.3) (2023-06-16)
286
+
287
+
288
+ ### Features
289
+
290
+ * add skeleton to walletlistfooter ([#2361](https://github.com/dynamic-labs/DynamicAuth/issues/2361)) ([676be6c](https://github.com/dynamic-labs/DynamicAuth/commit/676be6c108dff8df7175f0587cf0568658276e4e))
291
+
292
+
293
+ ### Bug Fixes
294
+
295
+ * **local-storage:** load auth token when stringified ([#2368](https://github.com/dynamic-labs/DynamicAuth/issues/2368)) ([3a54266](https://github.com/dynamic-labs/DynamicAuth/commit/3a54266fde3cd1f7362ccc490f89b8925132271b))
296
+
2
297
  ## [0.18.0-RC.2](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.1...v0.18.0-RC.2) (2023-06-16)
3
298
 
4
299
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/starknet",
3
- "version": "0.18.0-RC.2",
3
+ "version": "0.18.0-RC.21",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -26,10 +26,12 @@
26
26
  "./package.json": "./package.json"
27
27
  },
28
28
  "dependencies": {
29
- "starknet": "3.19.0",
30
- "get-starknet": "1.5.0",
31
- "@dynamic-labs/utils": "0.18.0-RC.2",
32
- "@dynamic-labs/wallet-connector-core": "0.18.0-RC.2"
29
+ "starknet": "5.14.1",
30
+ "get-starknet-core": "3.0.1",
31
+ "text-encoding": "0.7.0",
32
+ "@dynamic-labs/sdk-api": "0.0.248",
33
+ "@dynamic-labs/utils": "0.18.0-RC.21",
34
+ "@dynamic-labs/wallet-connector-core": "0.18.0-RC.21"
33
35
  },
34
36
  "peerDependencies": {}
35
37
  }
@@ -1,3 +1,3 @@
1
- import { TypedData } from 'starknet/dist/utils/typedData';
1
+ import { TypedData } from 'starknet';
2
2
  export declare const ETH_STARKNET_ADDRESS = "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7";
3
3
  export declare const DEFAULT_STARKNET_TYPED_DATA_DOMAIN: Partial<TypedData>;
package/src/index.cjs CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var argentx = require('./argentx.cjs');
6
- var braavos = require('./braavos.cjs');
5
+ var argentx = require('./wallets/argentx.cjs');
6
+ var braavos = require('./wallets/braavos.cjs');
7
7
 
8
8
  /* eslint-disable @typescript-eslint/no-unused-vars */
9
9
  const StarknetWalletConnectors = (props) => [argentx.ArgentX, braavos.Braavos];
package/src/index.d.ts CHANGED
@@ -1,2 +1,5 @@
1
- import { ArgentX } from './argentx';
2
- export declare const StarknetWalletConnectors: (props: any) => (typeof ArgentX)[];
1
+ import { ArgentX } from './wallets/argentx';
2
+ export declare const StarknetWalletConnectors: (props: unknown) => (typeof ArgentX)[];
3
+ export type { StarknetWalletConnectorType } from './starknetWalletConnector';
4
+ export type { ArgentXWalletConnectorType } from './wallets/argentx';
5
+ export type { BraavosWalletConnectorType } from './wallets/braavos';
package/src/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { ArgentX } from './argentx.js';
2
- import { Braavos } from './braavos.js';
1
+ import { ArgentX } from './wallets/argentx.js';
2
+ import { Braavos } from './wallets/braavos.js';
3
3
 
4
4
  /* eslint-disable @typescript-eslint/no-unused-vars */
5
5
  const StarknetWalletConnectors = (props) => [ArgentX, Braavos];
@@ -1,32 +1,56 @@
1
1
  'use strict';
2
2
 
3
3
  var _tslib = require('../_virtual/_tslib.cjs');
4
- var getStarknet = require('get-starknet');
4
+ var getStarknetCore = require('get-starknet-core');
5
5
  var starknet = require('starknet');
6
- var constants = require('starknet/constants');
7
- var uint256 = require('starknet/dist/utils/uint256');
8
6
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
9
7
  var utils = require('@dynamic-labs/utils');
10
- var convertors = require('./utils/convertors.cjs');
11
- var constants$1 = require('./constants.cjs');
8
+ var constants = require('./constants.cjs');
12
9
  var ethereumContractAbi = require('./ethereumContractAbi.cjs');
10
+ var convertors = require('./utils/convertors.cjs');
13
11
 
14
12
  const ACCOUNT_CHANGED_EVENT_LISTENER = 'accountsChanged';
15
13
  const NETWORK_CHANGED_EVENT_LISTENER = 'networkChanged';
16
14
  class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
17
- constructor(name, windowKey) {
15
+ constructor(name, windowKey, starknetNetworks) {
18
16
  super();
19
17
  this.connectedChain = 'STARK';
20
18
  this.supportedChains = ['STARK'];
19
+ this.switchNetworkOnlyFromWallet = true;
21
20
  this.name = name;
22
21
  this.windowKey = windowKey;
22
+ this.starknetNetworks = starknetNetworks;
23
+ }
24
+ getRpcProvider() {
25
+ var _a, _b;
26
+ const nodeUrl = (_b = (_a = this.starknetNetworks) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.rpcUrls[0];
27
+ if (!nodeUrl) {
28
+ throw new utils.DynamicError('RPC URL has not been found.');
29
+ }
30
+ return Promise.resolve(new starknet.RpcProvider({ nodeUrl }));
31
+ }
32
+ /**
33
+ * returns stakrnet wallet network id
34
+ */
35
+ getNetwork() {
36
+ var _a;
37
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
38
+ const wallet = yield this.getWallet();
39
+ if (!wallet) {
40
+ return Promise.resolve(undefined);
41
+ }
42
+ if (!wallet.isConnected) {
43
+ yield wallet.enable();
44
+ }
45
+ return Promise.resolve((_a = wallet.provider) === null || _a === void 0 ? void 0 : _a.chainId);
46
+ });
23
47
  }
24
48
  connect() {
25
49
  return _tslib.__awaiter(this, void 0, void 0, function* () {
26
50
  const wallet = yield this.getWallet();
27
51
  try {
28
52
  if (wallet && !wallet.isConnected) {
29
- yield wallet.enable({ showModal: false });
53
+ yield wallet.enable();
30
54
  }
31
55
  }
32
56
  catch (err) {
@@ -37,6 +61,12 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
37
61
  fetchPublicAddress() {
38
62
  return _tslib.__awaiter(this, void 0, void 0, function* () {
39
63
  const wallet = yield this.getWallet();
64
+ /**
65
+ * Fetches public address. Uses `isPreauthorized` as a temporary solution to ensure
66
+ * the wallets store's data is read. Without it, an empty string may be returned due
67
+ * to a possible reliance on its side-effects for data refreshing.
68
+ */
69
+ yield (wallet === null || wallet === void 0 ? void 0 : wallet.isPreauthorized());
40
70
  yield this.connect();
41
71
  return Promise.resolve(wallet === null || wallet === void 0 ? void 0 : wallet.selectedAddress);
42
72
  });
@@ -50,7 +80,7 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
50
80
  getWallet() {
51
81
  return _tslib.__awaiter(this, void 0, void 0, function* () {
52
82
  if (!this.wallet) {
53
- const providers = yield getStarknet.getInstalledWallets();
83
+ const providers = yield getStarknetCore.getStarknet().getAvailableWallets();
54
84
  this.wallet = providers.find((provider) => provider.name === this.name);
55
85
  }
56
86
  return this.wallet;
@@ -70,10 +100,9 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
70
100
  walletConnectorCore.logger.error('Could not fetch wallet address for signing message');
71
101
  return undefined;
72
102
  }
73
- const { account } = wallet;
74
- const chainId = account.chainId === constants.StarknetChainId.TESTNET ? 'SN_GOERLI' : 'SN_MAIN';
103
+ const { provider: { chainId }, } = wallet;
75
104
  const encodedMessage = convertors.formatTypedDataMessage(messageToSign, chainId);
76
- const signature = yield (account === null || account === void 0 ? void 0 : account.signMessage(encodedMessage));
105
+ const signature = yield wallet.account.signMessage(encodedMessage);
77
106
  return signature === null || signature === void 0 ? void 0 : signature.join(',');
78
107
  });
79
108
  }
@@ -85,10 +114,10 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
85
114
  walletConnectorCore.logger.error('Could not fetch wallet address for getting balance');
86
115
  return undefined;
87
116
  }
88
- const contract = new starknet.Contract(ethereumContractAbi, constants$1.ETH_STARKNET_ADDRESS, provider);
117
+ const contract = new starknet.Contract(ethereumContractAbi, constants.ETH_STARKNET_ADDRESS, provider);
89
118
  try {
90
119
  const { balance } = yield contract.balanceOf(walletAddress);
91
- const gweiBalance = parseInt(uint256.uint256ToBN(balance).toString(10));
120
+ const gweiBalance = parseInt(starknet.uint256.uint256ToBN(balance).toString(10));
92
121
  /**
93
122
  * Dividing by 1e18 as the returned balance is a Gwei number.
94
123
  * Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
@@ -102,9 +131,7 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
102
131
  }
103
132
  endSession() {
104
133
  return _tslib.__awaiter(this, void 0, void 0, function* () {
105
- getStarknet.disconnect({
106
- clearLastWallet: true,
107
- });
134
+ getStarknetCore.getStarknet().disconnect({ clearLastWallet: true });
108
135
  });
109
136
  }
110
137
  getStarknetWindowObject() {
@@ -130,6 +157,9 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
130
157
  }
131
158
  setupEventListeners(listeners) {
132
159
  const wallet = this.getStarknetWindowObject();
160
+ if (!wallet) {
161
+ return walletConnectorCore.logger.error('Wallet has not been found');
162
+ }
133
163
  this.handleAccountChange = (address) => _tslib.__awaiter(this, void 0, void 0, function* () {
134
164
  var _a, _b;
135
165
  if (!address) {
@@ -146,8 +176,9 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
146
176
  yield ((_c = listeners.onDisconnect) === null || _c === void 0 ? void 0 : _c.call(listeners));
147
177
  return;
148
178
  }
149
- if (network.toString()) {
150
- yield ((_d = listeners.onChainChange) === null || _d === void 0 ? void 0 : _d.call(listeners, network.toString()));
179
+ const chainId = this.mapChainUrlToChainId(network.toString());
180
+ if (chainId) {
181
+ yield ((_d = listeners.onChainChange) === null || _d === void 0 ? void 0 : _d.call(listeners, chainId));
151
182
  }
152
183
  });
153
184
  wallet === null || wallet === void 0 ? void 0 : wallet.on(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
@@ -166,6 +197,15 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
166
197
  }
167
198
  });
168
199
  }
200
+ mapChainUrlToChainId(baseUrl) {
201
+ if (baseUrl.includes('mainnet')) {
202
+ return starknet.constants.StarknetChainId.SN_MAIN;
203
+ }
204
+ else if (baseUrl.includes('goerli')) {
205
+ return starknet.constants.StarknetChainId.SN_GOERLI;
206
+ }
207
+ return undefined;
208
+ }
169
209
  }
170
210
 
171
211
  module.exports = StarknetWalletConnector;
@@ -1,6 +1,7 @@
1
- import { IStarknetWindowObject } from 'get-starknet';
2
- import { AccountInterface, ProviderInterface } from 'starknet';
1
+ import { StarknetWindowObject } from 'get-starknet-core';
2
+ import { ProviderInterface, constants, AccountInterface, RpcProvider } from 'starknet';
3
3
  import { Chain, WalletConnectorBase, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
4
+ import { NetworkConfiguration } from '@dynamic-labs/sdk-api';
4
5
  import { StarknetWalletKey } from './types';
5
6
  type AccountChangeEventHandler = (address: {
6
7
  toString(): string;
@@ -13,22 +14,31 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
13
14
  windowKey: StarknetWalletKey;
14
15
  connectedChain: Chain;
15
16
  supportedChains: Chain[];
16
- wallet: IStarknetWindowObject | undefined;
17
+ wallet: StarknetWindowObject | undefined;
17
18
  handleAccountChange: AccountChangeEventHandler | undefined;
18
19
  handleNetworkChange: NetworkChangeEventHandler | undefined;
19
- constructor(name: string, windowKey: StarknetWalletKey);
20
+ switchNetworkOnlyFromWallet: boolean;
21
+ starknetNetworks: NetworkConfiguration[];
22
+ constructor(name: string, windowKey: StarknetWalletKey, starknetNetworks: NetworkConfiguration[]);
23
+ getRpcProvider(): Promise<RpcProvider>;
24
+ /**
25
+ * returns stakrnet wallet network id
26
+ */
27
+ getNetwork(): Promise<any>;
20
28
  connect(): Promise<void>;
21
29
  fetchPublicAddress(): Promise<string | undefined>;
22
30
  getSigner(): Promise<AccountInterface | undefined>;
23
- getWallet(): Promise<IStarknetWindowObject | undefined>;
31
+ getWallet(): Promise<StarknetWindowObject | undefined>;
24
32
  getWeb3Provider(): Promise<ProviderInterface | undefined>;
25
33
  signMessage(messageToSign: string): Promise<string | undefined>;
26
34
  getBalance(): Promise<string | undefined>;
27
35
  endSession(): Promise<void>;
28
- getStarknetWindowObject(): IStarknetWindowObject | undefined;
36
+ getStarknetWindowObject(): StarknetWindowObject | undefined;
29
37
  isInstalledOnBrowser(): boolean;
30
38
  getConnectedAccounts(): Promise<string[]>;
31
39
  setupEventListeners(listeners: WalletEventListeners): void;
32
40
  teardownEventListeners(): Promise<void>;
41
+ mapChainUrlToChainId(baseUrl: string): constants.StarknetChainId | undefined;
33
42
  }
43
+ export type StarknetWalletConnectorType = StarknetWalletConnector;
34
44
  export default StarknetWalletConnector;
@@ -1,30 +1,54 @@
1
1
  import { __awaiter } from '../_virtual/_tslib.js';
2
- import { getInstalledWallets, disconnect } from 'get-starknet';
3
- import { Contract } from 'starknet';
4
- import { StarknetChainId } from 'starknet/constants.js';
5
- import { uint256ToBN } from 'starknet/dist/utils/uint256.js';
2
+ import { getStarknet } from 'get-starknet-core';
3
+ import { RpcProvider, Contract, uint256, constants } from 'starknet';
6
4
  import { WalletConnectorBase, logger } from '@dynamic-labs/wallet-connector-core';
7
5
  import { DynamicError } from '@dynamic-labs/utils';
8
- import { formatTypedDataMessage } from './utils/convertors.js';
9
6
  import { ETH_STARKNET_ADDRESS } from './constants.js';
10
7
  import ETH_CONTRACT_ABI from './ethereumContractAbi.js';
8
+ import { formatTypedDataMessage } from './utils/convertors.js';
11
9
 
12
10
  const ACCOUNT_CHANGED_EVENT_LISTENER = 'accountsChanged';
13
11
  const NETWORK_CHANGED_EVENT_LISTENER = 'networkChanged';
14
12
  class StarknetWalletConnector extends WalletConnectorBase {
15
- constructor(name, windowKey) {
13
+ constructor(name, windowKey, starknetNetworks) {
16
14
  super();
17
15
  this.connectedChain = 'STARK';
18
16
  this.supportedChains = ['STARK'];
17
+ this.switchNetworkOnlyFromWallet = true;
19
18
  this.name = name;
20
19
  this.windowKey = windowKey;
20
+ this.starknetNetworks = starknetNetworks;
21
+ }
22
+ getRpcProvider() {
23
+ var _a, _b;
24
+ const nodeUrl = (_b = (_a = this.starknetNetworks) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.rpcUrls[0];
25
+ if (!nodeUrl) {
26
+ throw new DynamicError('RPC URL has not been found.');
27
+ }
28
+ return Promise.resolve(new RpcProvider({ nodeUrl }));
29
+ }
30
+ /**
31
+ * returns stakrnet wallet network id
32
+ */
33
+ getNetwork() {
34
+ var _a;
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ const wallet = yield this.getWallet();
37
+ if (!wallet) {
38
+ return Promise.resolve(undefined);
39
+ }
40
+ if (!wallet.isConnected) {
41
+ yield wallet.enable();
42
+ }
43
+ return Promise.resolve((_a = wallet.provider) === null || _a === void 0 ? void 0 : _a.chainId);
44
+ });
21
45
  }
22
46
  connect() {
23
47
  return __awaiter(this, void 0, void 0, function* () {
24
48
  const wallet = yield this.getWallet();
25
49
  try {
26
50
  if (wallet && !wallet.isConnected) {
27
- yield wallet.enable({ showModal: false });
51
+ yield wallet.enable();
28
52
  }
29
53
  }
30
54
  catch (err) {
@@ -35,6 +59,12 @@ class StarknetWalletConnector extends WalletConnectorBase {
35
59
  fetchPublicAddress() {
36
60
  return __awaiter(this, void 0, void 0, function* () {
37
61
  const wallet = yield this.getWallet();
62
+ /**
63
+ * Fetches public address. Uses `isPreauthorized` as a temporary solution to ensure
64
+ * the wallets store's data is read. Without it, an empty string may be returned due
65
+ * to a possible reliance on its side-effects for data refreshing.
66
+ */
67
+ yield (wallet === null || wallet === void 0 ? void 0 : wallet.isPreauthorized());
38
68
  yield this.connect();
39
69
  return Promise.resolve(wallet === null || wallet === void 0 ? void 0 : wallet.selectedAddress);
40
70
  });
@@ -48,7 +78,7 @@ class StarknetWalletConnector extends WalletConnectorBase {
48
78
  getWallet() {
49
79
  return __awaiter(this, void 0, void 0, function* () {
50
80
  if (!this.wallet) {
51
- const providers = yield getInstalledWallets();
81
+ const providers = yield getStarknet().getAvailableWallets();
52
82
  this.wallet = providers.find((provider) => provider.name === this.name);
53
83
  }
54
84
  return this.wallet;
@@ -68,10 +98,9 @@ class StarknetWalletConnector extends WalletConnectorBase {
68
98
  logger.error('Could not fetch wallet address for signing message');
69
99
  return undefined;
70
100
  }
71
- const { account } = wallet;
72
- const chainId = account.chainId === StarknetChainId.TESTNET ? 'SN_GOERLI' : 'SN_MAIN';
101
+ const { provider: { chainId }, } = wallet;
73
102
  const encodedMessage = formatTypedDataMessage(messageToSign, chainId);
74
- const signature = yield (account === null || account === void 0 ? void 0 : account.signMessage(encodedMessage));
103
+ const signature = yield wallet.account.signMessage(encodedMessage);
75
104
  return signature === null || signature === void 0 ? void 0 : signature.join(',');
76
105
  });
77
106
  }
@@ -86,7 +115,7 @@ class StarknetWalletConnector extends WalletConnectorBase {
86
115
  const contract = new Contract(ETH_CONTRACT_ABI, ETH_STARKNET_ADDRESS, provider);
87
116
  try {
88
117
  const { balance } = yield contract.balanceOf(walletAddress);
89
- const gweiBalance = parseInt(uint256ToBN(balance).toString(10));
118
+ const gweiBalance = parseInt(uint256.uint256ToBN(balance).toString(10));
90
119
  /**
91
120
  * Dividing by 1e18 as the returned balance is a Gwei number.
92
121
  * Read more here: https://www.investopedia.com/terms/g/gwei-ethereum.asp#toc-what-is-gwei
@@ -100,9 +129,7 @@ class StarknetWalletConnector extends WalletConnectorBase {
100
129
  }
101
130
  endSession() {
102
131
  return __awaiter(this, void 0, void 0, function* () {
103
- disconnect({
104
- clearLastWallet: true,
105
- });
132
+ getStarknet().disconnect({ clearLastWallet: true });
106
133
  });
107
134
  }
108
135
  getStarknetWindowObject() {
@@ -128,6 +155,9 @@ class StarknetWalletConnector extends WalletConnectorBase {
128
155
  }
129
156
  setupEventListeners(listeners) {
130
157
  const wallet = this.getStarknetWindowObject();
158
+ if (!wallet) {
159
+ return logger.error('Wallet has not been found');
160
+ }
131
161
  this.handleAccountChange = (address) => __awaiter(this, void 0, void 0, function* () {
132
162
  var _a, _b;
133
163
  if (!address) {
@@ -144,8 +174,9 @@ class StarknetWalletConnector extends WalletConnectorBase {
144
174
  yield ((_c = listeners.onDisconnect) === null || _c === void 0 ? void 0 : _c.call(listeners));
145
175
  return;
146
176
  }
147
- if (network.toString()) {
148
- yield ((_d = listeners.onChainChange) === null || _d === void 0 ? void 0 : _d.call(listeners, network.toString()));
177
+ const chainId = this.mapChainUrlToChainId(network.toString());
178
+ if (chainId) {
179
+ yield ((_d = listeners.onChainChange) === null || _d === void 0 ? void 0 : _d.call(listeners, chainId));
149
180
  }
150
181
  });
151
182
  wallet === null || wallet === void 0 ? void 0 : wallet.on(ACCOUNT_CHANGED_EVENT_LISTENER, this.handleAccountChange);
@@ -164,6 +195,15 @@ class StarknetWalletConnector extends WalletConnectorBase {
164
195
  }
165
196
  });
166
197
  }
198
+ mapChainUrlToChainId(baseUrl) {
199
+ if (baseUrl.includes('mainnet')) {
200
+ return constants.StarknetChainId.SN_MAIN;
201
+ }
202
+ else if (baseUrl.includes('goerli')) {
203
+ return constants.StarknetChainId.SN_GOERLI;
204
+ }
205
+ return undefined;
206
+ }
167
207
  }
168
208
 
169
209
  export { StarknetWalletConnector as default };
package/src/types.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import type { IStarknetWindowObject } from 'get-starknet';
1
+ import type { StarknetWindowObject } from 'get-starknet-core';
2
2
  export type StarknetWalletKey = 'braavos' | 'argentX';
3
3
  export type StarknetWindowKey = `starknet_${StarknetWalletKey}` | 'starknet';
4
4
  type StarknetWindow = {
5
- [key in StarknetWindowKey]: IStarknetWindowObject;
5
+ [key in StarknetWindowKey]: StarknetWindowObject;
6
6
  };
7
7
  declare global {
8
8
  interface Window extends StarknetWindow {
@@ -2,6 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var starknet = require('starknet');
5
6
  var constants = require('../constants.cjs');
6
7
 
7
8
  const defaultTypedData = Object.assign(Object.assign({}, constants.DEFAULT_STARKNET_TYPED_DATA_DOMAIN), { primaryType: 'Message', types: {
@@ -26,7 +27,7 @@ const defaultTypedData = Object.assign(Object.assign({}, constants.DEFAULT_STARK
26
27
  },
27
28
  ],
28
29
  } });
29
- const formatTypedDataMessage = (inputMessage, chainId = 'SN_MAIN') => {
30
+ const formatTypedDataMessage = (inputMessage, chainId = starknet.constants.NetworkName.SN_MAIN) => {
30
31
  const message = {
31
32
  message: inputMessage.substring(0, 31),
32
33
  };
@@ -1,2 +1,2 @@
1
- import { TypedData } from 'starknet/dist/utils/typedData';
2
- export declare const formatTypedDataMessage: (inputMessage: string, chainId?: 'SN_MAIN' | 'SN_GOERLI') => TypedData;
1
+ import { TypedData, constants } from 'starknet';
2
+ export declare const formatTypedDataMessage: (inputMessage: string, chainId?: constants.NetworkName) => TypedData;
@@ -1,3 +1,4 @@
1
+ import { constants } from 'starknet';
1
2
  import { DEFAULT_STARKNET_TYPED_DATA_DOMAIN } from '../constants.js';
2
3
 
3
4
  const defaultTypedData = Object.assign(Object.assign({}, DEFAULT_STARKNET_TYPED_DATA_DOMAIN), { primaryType: 'Message', types: {
@@ -22,7 +23,7 @@ const defaultTypedData = Object.assign(Object.assign({}, DEFAULT_STARKNET_TYPED_
22
23
  },
23
24
  ],
24
25
  } });
25
- const formatTypedDataMessage = (inputMessage, chainId = 'SN_MAIN') => {
26
+ const formatTypedDataMessage = (inputMessage, chainId = constants.NetworkName.SN_MAIN) => {
26
27
  const message = {
27
28
  message: inputMessage.substring(0, 31),
28
29
  };
@@ -2,12 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _tslib = require('../_virtual/_tslib.cjs');
6
- var starknetWalletConnector = require('./starknetWalletConnector.cjs');
5
+ var _tslib = require('../../_virtual/_tslib.cjs');
6
+ var starknetWalletConnector = require('../starknetWalletConnector.cjs');
7
7
 
8
8
  class ArgentX extends starknetWalletConnector {
9
- constructor() {
10
- super('Argent X', 'argentX');
9
+ constructor({ starknetNetworks }) {
10
+ super('Argent X', 'argentX', starknetNetworks);
11
11
  }
12
12
  getConnectedAccounts() {
13
13
  return _tslib.__awaiter(this, void 0, void 0, function* () {
@@ -1,6 +1,7 @@
1
1
  import { WalletConnector } from '@dynamic-labs/wallet-connector-core';
2
- import StarknetProvider from './starknetWalletConnector';
2
+ import StarknetProvider from '../starknetWalletConnector';
3
3
  export declare class ArgentX extends StarknetProvider implements WalletConnector {
4
- constructor();
4
+ constructor({ starknetNetworks }: any);
5
5
  getConnectedAccounts(): Promise<string[]>;
6
6
  }
7
+ export type ArgentXWalletConnectorType = ArgentX;
@@ -1,9 +1,9 @@
1
- import { __awaiter } from '../_virtual/_tslib.js';
2
- import StarknetWalletConnector from './starknetWalletConnector.js';
1
+ import { __awaiter } from '../../_virtual/_tslib.js';
2
+ import StarknetWalletConnector from '../starknetWalletConnector.js';
3
3
 
4
4
  class ArgentX extends StarknetWalletConnector {
5
- constructor() {
6
- super('Argent X', 'argentX');
5
+ constructor({ starknetNetworks }) {
6
+ super('Argent X', 'argentX', starknetNetworks);
7
7
  }
8
8
  getConnectedAccounts() {
9
9
  return __awaiter(this, void 0, void 0, function* () {
@@ -2,13 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _tslib = require('../_virtual/_tslib.cjs');
5
+ var _tslib = require('../../_virtual/_tslib.cjs');
6
6
  var utils = require('@dynamic-labs/utils');
7
- var starknetWalletConnector = require('./starknetWalletConnector.cjs');
7
+ var starknetWalletConnector = require('../starknetWalletConnector.cjs');
8
8
 
9
9
  class Braavos extends starknetWalletConnector {
10
- constructor() {
11
- super('Braavos', 'braavos');
10
+ constructor({ starknetNetworks }) {
11
+ super('Braavos', 'braavos', starknetNetworks);
12
12
  }
13
13
  fetchPublicAddress() {
14
14
  const _super = Object.create(null, {
@@ -1,6 +1,7 @@
1
1
  import type { WalletConnector } from '@dynamic-labs/wallet-connector-core';
2
- import StarknetProvider from './starknetWalletConnector';
2
+ import StarknetProvider from '../starknetWalletConnector';
3
3
  export declare class Braavos extends StarknetProvider implements WalletConnector {
4
- constructor();
4
+ constructor({ starknetNetworks }: any);
5
5
  fetchPublicAddress(): Promise<string | undefined>;
6
6
  }
7
+ export type BraavosWalletConnectorType = Braavos;
@@ -1,10 +1,10 @@
1
- import { __awaiter } from '../_virtual/_tslib.js';
1
+ import { __awaiter } from '../../_virtual/_tslib.js';
2
2
  import { isMobile } from '@dynamic-labs/utils';
3
- import StarknetWalletConnector from './starknetWalletConnector.js';
3
+ import StarknetWalletConnector from '../starknetWalletConnector.js';
4
4
 
5
5
  class Braavos extends StarknetWalletConnector {
6
- constructor() {
7
- super('Braavos', 'braavos');
6
+ constructor({ starknetNetworks }) {
7
+ super('Braavos', 'braavos', starknetNetworks);
8
8
  }
9
9
  fetchPublicAddress() {
10
10
  const _super = Object.create(null, {