@dynamic-labs/multi-wallet 0.15.0-RC.9 → 0.15.1-RC.0
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 +151 -0
- package/package.json +5 -4
- package/src/data/wallet-links.json +14 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +4 -1
- package/src/index.js.map +1 -1
- package/src/multi-wallet.js +22 -1
- package/src/multi-wallet.js.map +1 -1
- package/src/types.d.ts +6 -0
- package/src/utils/isEmailWalletConnector/index.d.ts +1 -0
- package/src/utils/isEmailWalletConnector/index.js +6 -0
- package/src/utils/isEmailWalletConnector/index.js.map +1 -0
- package/src/utils/isEmailWalletConnector/isEmailWalletConnector.d.ts +2 -0
- package/src/utils/isEmailWalletConnector/isEmailWalletConnector.js +6 -0
- package/src/utils/isEmailWalletConnector/isEmailWalletConnector.js.map +1 -0
- package/src/wallets/ethereum/MagicLink.d.ts +45 -0
- package/src/wallets/ethereum/MagicLink.js +175 -0
- package/src/wallets/ethereum/MagicLink.js.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,155 @@
|
|
|
1
1
|
|
|
2
|
+
### [0.15.1-RC.0](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0...v0.15.1-RC.0) (2023-03-01)
|
|
3
|
+
|
|
4
|
+
## [0.15.0](https://github.com/dynamic-labs/DynamicAuth/compare/v0.14.31...v0.15.0) (2023-03-01)
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
We are excited to release V0.15.0 as part of our public beta announcement.
|
|
8
|
+
v0.14 release.
|
|
9
|
+
You can read more about it in our announcement [blog post](https://www.dynamic.xyz/blog/public-beta-release)
|
|
10
|
+
|
|
11
|
+
### ⚠ BREAKING CHANGES
|
|
12
|
+
As always we try to introduce as few breaking changes as possible, if you have any issue with the changes below please don't hesitate to reach out.
|
|
13
|
+
|
|
14
|
+
* Based on your feedback, our team has been hard at work to completely redesign our SDK UI and move it to ShadowDom. Now in addition, to the default customizations that we provide in the our admin dashboard, you have full control and ability to customize any element in the Dynamic's SDK to your liking. If you previously used any CSS Classes to override our previous SDK modal you will need to update them to the current CSS classes.
|
|
15
|
+
|
|
16
|
+
For more info see: [Custom CSS](https://docs.dynamic.xyz/docs/custom-css).
|
|
17
|
+
|
|
18
|
+
* As we introduced more callbacks, we now require all the callbacks to be nested under `eventsCallbacks` see: [Callbacks](https://docs.dynamic.xyz/docs/onauthflowclose)
|
|
19
|
+
|
|
20
|
+
* We removed `user.walletPublicKey`, instead please use `primaryWallet.address`.
|
|
21
|
+
|
|
22
|
+
### Highlights
|
|
23
|
+
* A Complete rewrite of our SDK UI and design configurations (see: [Custom CSS](https://docs.dynamic.xyz/docs/custom-css))
|
|
24
|
+
* Support for Email Verification + and Sign in with Email.
|
|
25
|
+
* Integration with magic.link.
|
|
26
|
+
* New and improved network selector experience
|
|
27
|
+
* Support for Wallet Connect V2
|
|
28
|
+
* Multi-wallet support for Flow + Lilico
|
|
29
|
+
* Multiple Bug Fixes + reduction in our package size
|
|
30
|
+
|
|
31
|
+
## [0.15.0-RC.16](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0-RC.15...v0.15.0-RC.16) (2023-03-01)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Features
|
|
35
|
+
|
|
36
|
+
* **DYN-1637:** update linking, transfering and unlinking logic for login with email ([91c7fcf](https://github.com/dynamic-labs/DynamicAuth/commit/91c7fcf766af9096f4682f1126103d33eed38184))
|
|
37
|
+
* **DYN-1637:** update widget ui for non-wallet users ([d988c9a](https://github.com/dynamic-labs/DynamicAuth/commit/d988c9a0c01ec29739205d9df14218ad949a9153))
|
|
38
|
+
* **DYN-1638:** create CollectUserDataViewLoginWithEmail ([5272025](https://github.com/dynamic-labs/DynamicAuth/commit/527202544bd0dbe4473b65cca4cbeee72ce26c17))
|
|
39
|
+
* **DYN-1638:** remove checkIfThirdRequired last ([319e763](https://github.com/dynamic-labs/DynamicAuth/commit/319e763db4b3bf16674a1f0c3a405d9cfb4d3a63))
|
|
40
|
+
* **DYN-1638:** use missingFields from jwt ([fdf52dd](https://github.com/dynamic-labs/DynamicAuth/commit/fdf52ddd01b39d214acbe09aa5f470dd28568634))
|
|
41
|
+
* export DynamicWidgetContextProvider ([25fc164](https://github.com/dynamic-labs/DynamicAuth/commit/25fc1649395cdbe29f01858e4ae5f168a1d29b9d))
|
|
42
|
+
|
|
43
|
+
## [0.15.0-RC.15](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0-RC.14...v0.15.0-RC.15) (2023-03-01)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### Features
|
|
47
|
+
|
|
48
|
+
* add EmailConnectorPendingSignModalContent ([c31b791](https://github.com/dynamic-labs/DynamicAuth/commit/c31b791c21e6c1ec2385e60d1a1cc101df582fd2))
|
|
49
|
+
* add getEnabledProviders ([d8d5cb1](https://github.com/dynamic-labs/DynamicAuth/commit/d8d5cb1a1f99e097cde5e633c3b98bd52b7f5f16))
|
|
50
|
+
* add new signatures/types for Magic Link ([61065e9](https://github.com/dynamic-labs/DynamicAuth/commit/61065e92ea59f205e69ab97ac3aecb0f36be2f56))
|
|
51
|
+
* **display_order:** use display order from api ([074f5bb](https://github.com/dynamic-labs/DynamicAuth/commit/074f5bb4b06855e5c40463471811ba5e42bbe70c))
|
|
52
|
+
* implement isEmailWalletConnector ([e7f0527](https://github.com/dynamic-labs/DynamicAuth/commit/e7f05275103f43a914f266b8dc6ec1f6a82b51b8))
|
|
53
|
+
* Implement Magic Link connector ([dd4e5f6](https://github.com/dynamic-labs/DynamicAuth/commit/dd4e5f6a536d37adfba7111764caf3e521f6514f))
|
|
54
|
+
* integrate Magic Link with email flow ([dca5f07](https://github.com/dynamic-labs/DynamicAuth/commit/dca5f078ef781dc0bffb6d4fbbb473e4b9e06f25))
|
|
55
|
+
* UI, modals and utils for Magic Link ([76accbd](https://github.com/dynamic-labs/DynamicAuth/commit/76accbd657f342d9abe9a49508f43261b8398857))
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
### Bug Fixes
|
|
59
|
+
|
|
60
|
+
* **email_confirmation:** go to correct view when clicking edit email ([29af782](https://github.com/dynamic-labs/DynamicAuth/commit/29af78292b4a6088443606b8b79533fefe68d3f3))
|
|
61
|
+
* init magic's SDK only during the login process ([a6e5615](https://github.com/dynamic-labs/DynamicAuth/commit/a6e5615af1edc8dd6d1dd31e8f2af83b7f4e5fb0))
|
|
62
|
+
* NetworkPicker is cut in widget ([883b3b6](https://github.com/dynamic-labs/DynamicAuth/commit/883b3b65908d6614021713e3e6e3c56211799947))
|
|
63
|
+
* Tooltip has lower z-index than auth flow ([0a111e5](https://github.com/dynamic-labs/DynamicAuth/commit/0a111e5a0ba918dc66454114f7899cc81b747a56))
|
|
64
|
+
|
|
65
|
+
## [0.15.0-RC.14](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0-RC.13...v0.15.0-RC.14) (2023-02-27)
|
|
66
|
+
|
|
67
|
+
## [0.15.0-RC.13](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0-RC.12...v0.15.0-RC.13) (2023-02-27)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
### ⚠ BREAKING CHANGES
|
|
71
|
+
|
|
72
|
+
* it removes user.walletPublicKey, instead use primaryWallet.address
|
|
73
|
+
|
|
74
|
+
### Features
|
|
75
|
+
|
|
76
|
+
* **DYN-1943:** Granular control over widget ([0255408](https://github.com/dynamic-labs/DynamicAuth/commit/02554084abb1cc0090dbe1722a611f061597ca22))
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
### Bug Fixes
|
|
80
|
+
|
|
81
|
+
* **dynamic_context:** update email view state when settings is loaded ([0860090](https://github.com/dynamic-labs/DynamicAuth/commit/086009033078c69fc4b01d9a856164946ac14920))
|
|
82
|
+
* **KYC:** remove wallet icon next to ens name ([6f7b7ed](https://github.com/dynamic-labs/DynamicAuth/commit/6f7b7ed6d35d0adc62a75fe4bf7541b19608ed99))
|
|
83
|
+
* Tooltip position is not updated after view change ([3a3f616](https://github.com/dynamic-labs/DynamicAuth/commit/3a3f6161a05fd90a60588593161f67cd11a1cdbd))
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
* remove user walletpublickey prop ([a016aab](https://github.com/dynamic-labs/DynamicAuth/commit/a016aab1b6aa438900fda45283ce909ff521b47b))
|
|
87
|
+
|
|
88
|
+
## [0.15.0-RC.12](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0-RC.11...v0.15.0-RC.12) (2023-02-24)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
### ⚠ BREAKING CHANGES
|
|
92
|
+
|
|
93
|
+
* remove deprecated callbacks
|
|
94
|
+
|
|
95
|
+
### Features
|
|
96
|
+
|
|
97
|
+
* add auto theme mode to switch theme depending on system ([94f13a0](https://github.com/dynamic-labs/DynamicAuth/commit/94f13a0d3a411902db35c1238375341099ec75cd))
|
|
98
|
+
* **DYN-1916:** Add verified email tooltip & icon ([2b6742d](https://github.com/dynamic-labs/DynamicAuth/commit/2b6742d4089863e39fb87eeaf06007cc032f4028))
|
|
99
|
+
* **DYN-1968:** reset ErrorContext state on modal close/open ([a5ca73e](https://github.com/dynamic-labs/DynamicAuth/commit/a5ca73e2bad70f7496fc1a446a3c05349cf3fbc5))
|
|
100
|
+
* **DYN-1975:** move user to main screen on failed retry attempt ([77edfd7](https://github.com/dynamic-labs/DynamicAuth/commit/77edfd77ad674f94001697045a6f5536d9ad57e2))
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
### Bug Fixes
|
|
104
|
+
|
|
105
|
+
* **DYN-1975:** wrong error message on too many login attempts ([07f191a](https://github.com/dynamic-labs/DynamicAuth/commit/07f191a24beee65c9e4235514e3c4fe71d53fa1e))
|
|
106
|
+
* **email-field:** add id to email field so label focus on correct element ([d8696f7](https://github.com/dynamic-labs/DynamicAuth/commit/d8696f7395cb7462ee7062dce6ce45a02856345c))
|
|
107
|
+
* fallback to wc v1 when projectId is not present ([049cd45](https://github.com/dynamic-labs/DynamicAuth/commit/049cd45d85e37c45fcd6175042346eb7e31db21d))
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
* remove deprecated callbacks ([4d77083](https://github.com/dynamic-labs/DynamicAuth/commit/4d770836d86bccf0a01db7284483e91231d48894))
|
|
111
|
+
|
|
112
|
+
## [0.15.0-RC.11](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0-RC.10...v0.15.0-RC.11) (2023-02-22)
|
|
113
|
+
|
|
114
|
+
## [0.15.0-RC.10](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0-RC.9...v0.15.0-RC.10) (2023-02-21)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
### Features
|
|
118
|
+
|
|
119
|
+
* **DYN-1637:** add logInWithEmail to walletListBuilder ([b812851](https://github.com/dynamic-labs/DynamicAuth/commit/b81285147416403bd9a00ae6a23f3147c687cab5))
|
|
120
|
+
* **DYN-1637:** add new api call ([bad0ce0](https://github.com/dynamic-labs/DynamicAuth/commit/bad0ce0433acb95bc81689d3903094cd997f4559))
|
|
121
|
+
* **DYN-1637:** create and add two new switches to the Toolkit ([733fb34](https://github.com/dynamic-labs/DynamicAuth/commit/733fb34d093a80432c34999b39671cba735442fa))
|
|
122
|
+
* **DYN-1637:** create Divider component ([babf5b6](https://github.com/dynamic-labs/DynamicAuth/commit/babf5b65365b7f1ef6651ae2adcd86770b8d9f1c))
|
|
123
|
+
* **DYN-1637:** create LoginWithEmailView ([9f049b7](https://github.com/dynamic-labs/DynamicAuth/commit/9f049b7f73cafa65004b2dfe504a6ae9818f06ae))
|
|
124
|
+
* **DYN-1637:** create LoginWithEmailView components ([beebab2](https://github.com/dynamic-labs/DynamicAuth/commit/beebab2ffbcd9b3c2231329ae961a5e58586afac))
|
|
125
|
+
* **DYN-1637:** it adds new variables to useInternalDynamicContext ([ada34c9](https://github.com/dynamic-labs/DynamicAuth/commit/ada34c9869b59947f6954692b95929480c9c213f))
|
|
126
|
+
* **DYN-1637:** update DynamicConnectButton to display email login view based on the props ([9adc119](https://github.com/dynamic-labs/DynamicAuth/commit/9adc119938295b8ce3c384c566f46e72450dbfdc))
|
|
127
|
+
* **DYN-1637:** update EmailVerification component, so that it can call different methods and looks different based on the view ([6c55cd6](https://github.com/dynamic-labs/DynamicAuth/commit/6c55cd6848c076cb7c897dfeeedba32a5634bd46))
|
|
128
|
+
* **DYN-1637:** update Main component to show new views ([243fafc](https://github.com/dynamic-labs/DynamicAuth/commit/243fafc72a62d2ab40ba992bed75b0f9f933c4ec))
|
|
129
|
+
* **DYN-1637:** update ModalHeader, Portal and DynamicAuthLayout ([7631c48](https://github.com/dynamic-labs/DynamicAuth/commit/7631c4853b54f0451525aafa4dfc812d8eb2e896))
|
|
130
|
+
* **DYN-1637:** update sdk-api ([cdf8fbd](https://github.com/dynamic-labs/DynamicAuth/commit/cdf8fbd2f490bfe3a4f9ad97e7f417e6e9280edb))
|
|
131
|
+
* **DYN-1637:** update tos and pp ([82304be](https://github.com/dynamic-labs/DynamicAuth/commit/82304be1c9ad7f69bfbd41d6631f7ee0e5385a41))
|
|
132
|
+
* **DYN-1836:** user profile multiple improvments ([2316177](https://github.com/dynamic-labs/DynamicAuth/commit/2316177142bcb083966e307e16bfb27f061508cc))
|
|
133
|
+
* **DYN-1837:** move UserDataForm to hook ([224c031](https://github.com/dynamic-labs/DynamicAuth/commit/224c03119d9f050b6447edde76acbc1427979230))
|
|
134
|
+
* **DYN-1840:** show ENS profile pic & name in dynamic widget ([f4bcde9](https://github.com/dynamic-labs/DynamicAuth/commit/f4bcde97ce9d1d031b4c3bfb7273d908b3b802bc))
|
|
135
|
+
* **DYN-1892:** Update SingleWallet popup unline with designs; Show user details in it ([7d3a314](https://github.com/dynamic-labs/DynamicAuth/commit/7d3a314975c8847f1e262f1f41abe28e961afc85))
|
|
136
|
+
* **DYN-1923:** Unify widget experience ([a287259](https://github.com/dynamic-labs/DynamicAuth/commit/a28725951fe5d5ad5c2c42d4a8aca4a83203423d))
|
|
137
|
+
* **DYN-1937:** Add onUserProfileUpdate ([3dd6e9e](https://github.com/dynamic-labs/DynamicAuth/commit/3dd6e9e78a9e9101f645f146ea6cd8fed1de9ad6))
|
|
138
|
+
* **EmptyWallets:** update copy ([ee9c210](https://github.com/dynamic-labs/DynamicAuth/commit/ee9c210743a108d49a553549e461907fa1303720))
|
|
139
|
+
* use dropdown variant in e2e tests ([ec39bf1](https://github.com/dynamic-labs/DynamicAuth/commit/ec39bf1c757cf842cde1d550ee0084f6b6e8fc66))
|
|
140
|
+
* **UserProfile:** add edit view with form ([1f2d1a3](https://github.com/dynamic-labs/DynamicAuth/commit/1f2d1a36987aed38265a05ac0f357653054730df))
|
|
141
|
+
* **UserProfile:** multiple improvments after review ([a881d03](https://github.com/dynamic-labs/DynamicAuth/commit/a881d03463dd47453104de971f0084390646559e))
|
|
142
|
+
* **UserProfile:** show ens name in AccountControl ([c657152](https://github.com/dynamic-labs/DynamicAuth/commit/c65715279d5475f469fc9f623a372da1b423a570))
|
|
143
|
+
* **UserProfile:** update test coverage ([e2bb398](https://github.com/dynamic-labs/DynamicAuth/commit/e2bb3989629c7dbbaae1e1fece2feb0047201afb))
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
### Bug Fixes
|
|
147
|
+
|
|
148
|
+
* **UserProfile:** apply border to dynamic widget card ([30802ba](https://github.com/dynamic-labs/DynamicAuth/commit/30802ba8df6244deb17d373c28d3355a9548a936))
|
|
149
|
+
* **UserProfile:** multiple improvments for userProfile ([3f79c9b](https://github.com/dynamic-labs/DynamicAuth/commit/3f79c9b1a0f115d155a79ee4a833c7750ae7413e))
|
|
150
|
+
* **UserProfile:** show DotsMenu in proper position ([577ccab](https://github.com/dynamic-labs/DynamicAuth/commit/577ccabb1b8096c6299044fc556b4e581292910b))
|
|
151
|
+
* **UserProfile:** update DynamicWidgetCard radius inline with DynamicAuthLayout radius ([de3447f](https://github.com/dynamic-labs/DynamicAuth/commit/de3447f0974384ba19023945ac24d9cb011f1f36))
|
|
152
|
+
|
|
2
153
|
## [0.15.0-RC.9](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0-RC.8...v0.15.0-RC.9) (2023-02-21)
|
|
3
154
|
|
|
4
155
|
## [0.15.0-RC.8](https://github.com/dynamic-labs/DynamicAuth/compare/v0.15.0-RC.7...v0.15.0-RC.8) (2023-02-20)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/multi-wallet",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.1-RC.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"buffer": "^6.0.3",
|
|
11
|
-
"@dynamic-labs/sdk-api": "0.0.
|
|
11
|
+
"@dynamic-labs/sdk-api": "0.0.152",
|
|
12
12
|
"starknet": "^3.19.0",
|
|
13
13
|
"ethers": "^5.7.2",
|
|
14
14
|
"@randlabs/myalgo-connect": "^1.4.2",
|
|
@@ -22,8 +22,9 @@
|
|
|
22
22
|
"@walletconnect/ethereum-provider": "^1.8.0",
|
|
23
23
|
"@walletconnect/universal-provider": "^2.4.2",
|
|
24
24
|
"tslib": "^2.4.1",
|
|
25
|
-
"
|
|
26
|
-
"@dynamic-labs/
|
|
25
|
+
"magic-sdk": "^13.1.0",
|
|
26
|
+
"@dynamic-labs/wallet-connector-core": "0.15.1-RC.0",
|
|
27
|
+
"@dynamic-labs/logger": "0.15.1-RC.0"
|
|
27
28
|
},
|
|
28
29
|
"devDependencies": {
|
|
29
30
|
"@walletconnect/types": "^2.2.1"
|
|
@@ -70,6 +70,20 @@
|
|
|
70
70
|
},
|
|
71
71
|
"showOnlyIfInstalled": true
|
|
72
72
|
},
|
|
73
|
+
"magiclink": {
|
|
74
|
+
"desktop": {
|
|
75
|
+
"chrome": "",
|
|
76
|
+
"firefox": "",
|
|
77
|
+
"brave": "",
|
|
78
|
+
"edge": "",
|
|
79
|
+
"safari": ""
|
|
80
|
+
},
|
|
81
|
+
"mobile": {
|
|
82
|
+
"android": "",
|
|
83
|
+
"ios": "",
|
|
84
|
+
"disabled": false
|
|
85
|
+
}
|
|
86
|
+
},
|
|
73
87
|
"gamestop": {
|
|
74
88
|
"desktop": {
|
|
75
89
|
"chrome": "https://chrome.google.com/webstore/detail/gamestop-wallet/pkkjjapmlcncipeecdmlhaipahfdphkd",
|
package/src/index.d.ts
CHANGED
|
@@ -4,9 +4,11 @@ export * from './types';
|
|
|
4
4
|
export * from './errors';
|
|
5
5
|
export * from './rpcProviders';
|
|
6
6
|
export * from './utils/logger';
|
|
7
|
+
export * from './wallets/ethereum/MagicLink';
|
|
7
8
|
export { generateMessageToSign } from './utils/message';
|
|
8
9
|
export { isIPad, isIPhone, isMobile } from './utils/isMobile';
|
|
9
10
|
export { normalizeWalletName } from './utils/normalizeWalletName';
|
|
11
|
+
export { isEmailWalletConnector } from './utils/isEmailWalletConnector';
|
|
10
12
|
export { walletMetadata, getWalletConnectMetadata, } from './utils/walletConnect';
|
|
11
13
|
export { getWalletLinks } from './utils/walletLinks';
|
|
12
14
|
export type { BrowserName, WalletLinks } from './utils/walletLinks';
|
package/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaultStarknetTypedDataDomain = exports.getWalletConnectorByName = exports.getWalletLinks = exports.getWalletConnectMetadata = exports.walletMetadata = exports.normalizeWalletName = exports.isMobile = exports.isIPhone = exports.isIPad = exports.generateMessageToSign = void 0;
|
|
3
|
+
exports.defaultStarknetTypedDataDomain = exports.getWalletConnectorByName = exports.getWalletLinks = exports.getWalletConnectMetadata = exports.walletMetadata = exports.isEmailWalletConnector = exports.normalizeWalletName = exports.isMobile = exports.isIPhone = exports.isIPad = exports.generateMessageToSign = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
require("./polyfills");
|
|
6
6
|
tslib_1.__exportStar(require("./multi-wallet"), exports);
|
|
@@ -8,6 +8,7 @@ tslib_1.__exportStar(require("./types"), exports);
|
|
|
8
8
|
tslib_1.__exportStar(require("./errors"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./rpcProviders"), exports);
|
|
10
10
|
tslib_1.__exportStar(require("./utils/logger"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./wallets/ethereum/MagicLink"), exports);
|
|
11
12
|
var message_1 = require("./utils/message");
|
|
12
13
|
Object.defineProperty(exports, "generateMessageToSign", { enumerable: true, get: function () { return message_1.generateMessageToSign; } });
|
|
13
14
|
var isMobile_1 = require("./utils/isMobile");
|
|
@@ -16,6 +17,8 @@ Object.defineProperty(exports, "isIPhone", { enumerable: true, get: function ()
|
|
|
16
17
|
Object.defineProperty(exports, "isMobile", { enumerable: true, get: function () { return isMobile_1.isMobile; } });
|
|
17
18
|
var normalizeWalletName_1 = require("./utils/normalizeWalletName");
|
|
18
19
|
Object.defineProperty(exports, "normalizeWalletName", { enumerable: true, get: function () { return normalizeWalletName_1.normalizeWalletName; } });
|
|
20
|
+
var isEmailWalletConnector_1 = require("./utils/isEmailWalletConnector");
|
|
21
|
+
Object.defineProperty(exports, "isEmailWalletConnector", { enumerable: true, get: function () { return isEmailWalletConnector_1.isEmailWalletConnector; } });
|
|
19
22
|
var walletConnect_1 = require("./utils/walletConnect");
|
|
20
23
|
Object.defineProperty(exports, "walletMetadata", { enumerable: true, get: function () { return walletConnect_1.walletMetadata; } });
|
|
21
24
|
Object.defineProperty(exports, "getWalletConnectMetadata", { enumerable: true, get: function () { return walletConnect_1.getWalletConnectMetadata; } });
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/multi-wallet/src/index.ts"],"names":[],"mappings":";;;;AAAA,uBAAqB;AAErB,yDAA+B;AAC/B,kDAAwB;AACxB,mDAAyB;AACzB,yDAA+B;AAC/B,yDAA+B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/multi-wallet/src/index.ts"],"names":[],"mappings":";;;;AAAA,uBAAqB;AAErB,yDAA+B;AAC/B,kDAAwB;AACxB,mDAAyB;AACzB,yDAA+B;AAC/B,yDAA+B;AAC/B,uEAA6C;AAE7C,2CAAwD;AAA/C,gHAAA,qBAAqB,OAAA;AAC9B,6CAA8D;AAArD,kGAAA,MAAM,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAEnC,mEAAkE;AAAzD,0HAAA,mBAAmB,OAAA;AAC5B,yEAAwE;AAA/D,gIAAA,sBAAsB,OAAA;AAE/B,uDAG+B;AAF7B,+GAAA,cAAc,OAAA;AACd,yHAAA,wBAAwB,OAAA;AAE1B,mDAAqD;AAA5C,6GAAA,cAAc,OAAA;AAEvB,6EAA4E;AAAnE,oIAAA,wBAAwB,OAAA;AAEjC,0EAAgD;AAChD,qEAA2C;AAI3C,gEAAsC;AAEtC,iDAAqE;AAA5D,2HAAA,8BAA8B,OAAA"}
|
package/src/multi-wallet.js
CHANGED
|
@@ -36,6 +36,8 @@ const getWalletConnectConnector_1 = require("./wallets/getWalletConnectConnector
|
|
|
36
36
|
const initializeWalletProviders_1 = require("./wallets/initializeWalletProviders");
|
|
37
37
|
const logger_1 = require("./utils/logger");
|
|
38
38
|
const PhantomEvm_1 = tslib_1.__importDefault(require("./wallets/ethereum/injected/PhantomEvm"));
|
|
39
|
+
const MagicLink_1 = require("./wallets/ethereum/MagicLink");
|
|
40
|
+
const isEmailWalletConnector_1 = require("./utils/isEmailWalletConnector");
|
|
39
41
|
var phantom_ledger_2 = require("./wallets/solana/phantom-ledger");
|
|
40
42
|
Object.defineProperty(exports, "phantomLedgerWalletName", { enumerable: true, get: function () { return phantom_ledger_2.walletName; } });
|
|
41
43
|
let wallets = [];
|
|
@@ -47,7 +49,15 @@ exports.filteredWalletConnectWallets = [
|
|
|
47
49
|
'Trust',
|
|
48
50
|
'lilico',
|
|
49
51
|
];
|
|
50
|
-
const
|
|
52
|
+
const defaultWalletUiUtils = {
|
|
53
|
+
enableInternalSign: () => {
|
|
54
|
+
throw Error('enableInternalSign, not implemented');
|
|
55
|
+
},
|
|
56
|
+
requestSignMessageConfirmation: () => {
|
|
57
|
+
throw Error('requestSignMessageConfirmation, not implemented');
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
const getSupportedWallets = ({ appLogoUrl, appName, isWalletConnectV2Enabled, networkConfigurations, skipMemo, vendorCredentials, walletConnectProjectId, walletUiUtils, magicLinkApiKey, } = {
|
|
51
61
|
appLogoUrl: '',
|
|
52
62
|
appName: '',
|
|
53
63
|
isWalletConnectV2Enabled: false,
|
|
@@ -95,6 +105,14 @@ const getSupportedWallets = ({ appLogoUrl, appName, isWalletConnectV2Enabled, ne
|
|
|
95
105
|
new ExodusEvm_1.default({ evmNetworks: evmNetworkConfigs }),
|
|
96
106
|
new ExodusSol_1.default({ solNetworks: solanaNetworkConfigs }),
|
|
97
107
|
new Opera_1.default({ evmNetworks: evmNetworkConfigs }),
|
|
108
|
+
...(magicLinkApiKey
|
|
109
|
+
? [
|
|
110
|
+
new MagicLink_1.MagicConnector({
|
|
111
|
+
apiKey: magicLinkApiKey,
|
|
112
|
+
walletUiUtils: walletUiUtils || defaultWalletUiUtils,
|
|
113
|
+
}),
|
|
114
|
+
]
|
|
115
|
+
: []),
|
|
98
116
|
new myalgo_1.default(),
|
|
99
117
|
new argentx_1.default(),
|
|
100
118
|
new braavos_1.default(),
|
|
@@ -141,6 +159,9 @@ const filterWalletsForPlatform = (wallets) => wallets.filter((wallet) => {
|
|
|
141
159
|
if (wallet.isInstalledOnBrowser()) {
|
|
142
160
|
return true;
|
|
143
161
|
}
|
|
162
|
+
else if ((0, isEmailWalletConnector_1.isEmailWalletConnector)(wallet)) {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
144
165
|
else if (links.showOnlyIfInstalled) {
|
|
145
166
|
return false;
|
|
146
167
|
}
|
package/src/multi-wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-wallet.js","sourceRoot":"","sources":["../../../../packages/multi-wallet/src/multi-wallet.ts"],"names":[],"mappings":";;;;AAEA,+EAA+C;AAC/C,mFAAmD;AACnD,2EAA2C;AAC3C,iFAAiD;AACjD,yEAAyC;AACzC,2EAA2C;AAC3C,2EAA2C;
|
|
1
|
+
{"version":3,"file":"multi-wallet.js","sourceRoot":"","sources":["../../../../packages/multi-wallet/src/multi-wallet.ts"],"names":[],"mappings":"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"}
|
package/src/types.d.ts
CHANGED
|
@@ -68,9 +68,15 @@ export type GetSupportedWalletsOpts = {
|
|
|
68
68
|
appLogoUrl?: string;
|
|
69
69
|
appName?: string;
|
|
70
70
|
isWalletConnectV2Enabled: boolean;
|
|
71
|
+
magicLinkApiKey?: string;
|
|
71
72
|
networkConfigurations: NetworkConfigurationMap | undefined;
|
|
72
73
|
skipMemo?: boolean;
|
|
73
74
|
vendorCredentials?: VendorCredentials;
|
|
74
75
|
walletConnectProjectId: string | undefined;
|
|
76
|
+
walletUiUtils?: WalletUiUtils;
|
|
75
77
|
};
|
|
76
78
|
export type GetSupportedWallets = (opts?: GetSupportedWalletsOpts) => Promise<WalletConnector[]>;
|
|
79
|
+
export type WalletUiUtils = {
|
|
80
|
+
enableInternalSign: () => void;
|
|
81
|
+
requestSignMessageConfirmation: (message: string) => Promise<boolean>;
|
|
82
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { isEmailWalletConnector } from './isEmailWalletConnector';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEmailWalletConnector = void 0;
|
|
4
|
+
var isEmailWalletConnector_1 = require("./isEmailWalletConnector");
|
|
5
|
+
Object.defineProperty(exports, "isEmailWalletConnector", { enumerable: true, get: function () { return isEmailWalletConnector_1.isEmailWalletConnector; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/utils/isEmailWalletConnector/index.ts"],"names":[],"mappings":";;;AAAA,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEmailWalletConnector = void 0;
|
|
4
|
+
const isEmailWalletConnector = (walletConnector) => Boolean(walletConnector.canConnectViaEmail);
|
|
5
|
+
exports.isEmailWalletConnector = isEmailWalletConnector;
|
|
6
|
+
//# sourceMappingURL=isEmailWalletConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEmailWalletConnector.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/utils/isEmailWalletConnector/isEmailWalletConnector.ts"],"names":[],"mappings":";;;AAKO,MAAM,sBAAsB,GAAG,CACpC,eAAuD,EACd,EAAE,CAC3C,OAAO,CAAE,eAAwC,CAAC,kBAAkB,CAAC,CAAC;AAH3D,QAAA,sBAAsB,0BAGqC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Magic as MagicClient, MagicUserMetadata } from 'magic-sdk';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
|
+
import { Chain, EmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
import { WalletUiUtils } from '../../types';
|
|
5
|
+
export declare class MagicConnector implements EmailWalletConnector {
|
|
6
|
+
canConnectViaCustodialService: boolean;
|
|
7
|
+
canConnectViaQrCode: boolean;
|
|
8
|
+
connectedChain: Chain;
|
|
9
|
+
supportedChains: Chain[];
|
|
10
|
+
isWalletConnect: boolean;
|
|
11
|
+
key: string;
|
|
12
|
+
name: string;
|
|
13
|
+
canConnectViaEmail: boolean;
|
|
14
|
+
switchNetworkOnlyFromWallet?: boolean;
|
|
15
|
+
evmNetworks: Chain[];
|
|
16
|
+
_apiKey: string;
|
|
17
|
+
_email: string | undefined;
|
|
18
|
+
_magicSdk: MagicClient | undefined;
|
|
19
|
+
_walletUiUtils: WalletUiUtils;
|
|
20
|
+
constructor({ apiKey, walletUiUtils, }: {
|
|
21
|
+
apiKey: string;
|
|
22
|
+
walletUiUtils: WalletUiUtils;
|
|
23
|
+
});
|
|
24
|
+
getClient(): Promise<MagicClient<import("magic-sdk").MagicSDKExtensionsOption<string>>>;
|
|
25
|
+
get email(): string | undefined;
|
|
26
|
+
setEmail(email: string): void;
|
|
27
|
+
connect(): Promise<void>;
|
|
28
|
+
endSession?(): Promise<void>;
|
|
29
|
+
isLoggedIn(): Promise<boolean>;
|
|
30
|
+
getUserMetadata(): Promise<MagicUserMetadata | undefined>;
|
|
31
|
+
fetchPublicAddress(): Promise<string | undefined>;
|
|
32
|
+
getBalance(): Promise<string | undefined>;
|
|
33
|
+
getConnectedAccounts(): Promise<string[]>;
|
|
34
|
+
getNetwork(): Promise<number | undefined>;
|
|
35
|
+
getRpcProvider(): Promise<void | ethers.providers.JsonRpcProvider | undefined>;
|
|
36
|
+
getSigner(): Promise<ethers.providers.JsonRpcSigner | undefined>;
|
|
37
|
+
getWeb3Provider(): Promise<void | ethers.providers.Web3Provider | undefined>;
|
|
38
|
+
isInstalledOnBrowser(): boolean;
|
|
39
|
+
proveOwnership(messageToSign: string): Promise<string | undefined>;
|
|
40
|
+
setupEventListeners(): void;
|
|
41
|
+
signMessage(messageToSign: string): Promise<string | undefined>;
|
|
42
|
+
supportsNetworkSwitching(): boolean;
|
|
43
|
+
switchNetwork(): Promise<void>;
|
|
44
|
+
teardownEventListeners(): void;
|
|
45
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MagicConnector = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const magic_sdk_1 = require("magic-sdk");
|
|
6
|
+
const ethers_1 = require("ethers");
|
|
7
|
+
const errors_1 = require("../../errors");
|
|
8
|
+
const logger_1 = require("../../utils/logger");
|
|
9
|
+
class MagicConnector {
|
|
10
|
+
constructor({ apiKey, walletUiUtils, }) {
|
|
11
|
+
this.canConnectViaCustodialService = true;
|
|
12
|
+
this.canConnectViaQrCode = false;
|
|
13
|
+
this.connectedChain = 'EVM';
|
|
14
|
+
this.supportedChains = ['ETH', 'EVM'];
|
|
15
|
+
this.isWalletConnect = false;
|
|
16
|
+
this.key = 'magiclink';
|
|
17
|
+
this.name = 'Magic Link';
|
|
18
|
+
this.canConnectViaEmail = true;
|
|
19
|
+
this.evmNetworks = [];
|
|
20
|
+
this._magicSdk = undefined;
|
|
21
|
+
this._apiKey = apiKey;
|
|
22
|
+
this._walletUiUtils = walletUiUtils;
|
|
23
|
+
}
|
|
24
|
+
getClient() {
|
|
25
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
if (!this._magicSdk) {
|
|
27
|
+
this._magicSdk = new magic_sdk_1.Magic(this._apiKey);
|
|
28
|
+
yield this._magicSdk.preload();
|
|
29
|
+
}
|
|
30
|
+
return this._magicSdk;
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
get email() {
|
|
34
|
+
return this._email;
|
|
35
|
+
}
|
|
36
|
+
setEmail(email) {
|
|
37
|
+
this._email = email;
|
|
38
|
+
localStorage.setItem('magic-link-email', email);
|
|
39
|
+
}
|
|
40
|
+
connect() {
|
|
41
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
yield this.fetchPublicAddress();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
endSession() {
|
|
46
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
const client = yield this.getClient();
|
|
48
|
+
yield client.user.logout();
|
|
49
|
+
this.setEmail('');
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
isLoggedIn() {
|
|
53
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
const client = yield this.getClient();
|
|
55
|
+
return client.user.isLoggedIn();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
getUserMetadata() {
|
|
59
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
if (yield this.isLoggedIn()) {
|
|
61
|
+
const client = yield this.getClient();
|
|
62
|
+
return client.user.getMetadata();
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
fetchPublicAddress() {
|
|
68
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
const client = yield this.getClient();
|
|
70
|
+
try {
|
|
71
|
+
const user = yield this.getUserMetadata();
|
|
72
|
+
if (user && user.publicAddress) {
|
|
73
|
+
this.setEmail((user === null || user === void 0 ? void 0 : user.email) || '');
|
|
74
|
+
return user.publicAddress;
|
|
75
|
+
}
|
|
76
|
+
const { email } = this;
|
|
77
|
+
if (!email)
|
|
78
|
+
return;
|
|
79
|
+
try {
|
|
80
|
+
yield client.auth.loginWithMagicLink({
|
|
81
|
+
email,
|
|
82
|
+
showUI: false,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
logger_1.logger.error(err);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const metadata = yield client.user.getMetadata();
|
|
90
|
+
if (!metadata || !metadata.publicAddress) {
|
|
91
|
+
throw new Error('No public address');
|
|
92
|
+
}
|
|
93
|
+
return metadata.publicAddress;
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
getBalance() {
|
|
101
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
const provider = yield this.getWeb3Provider();
|
|
103
|
+
if (!provider)
|
|
104
|
+
throw new errors_1.DynamicError('No provider');
|
|
105
|
+
const signer = provider.getSigner();
|
|
106
|
+
const userAddress = yield signer.getAddress();
|
|
107
|
+
return ethers_1.ethers.utils.formatEther(yield provider.getBalance(userAddress));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
getConnectedAccounts() {
|
|
111
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
const isLoggedIn = yield this.isLoggedIn();
|
|
113
|
+
if (!isLoggedIn)
|
|
114
|
+
return [];
|
|
115
|
+
const metadata = yield this.getUserMetadata();
|
|
116
|
+
if (!metadata || !(metadata === null || metadata === void 0 ? void 0 : metadata.publicAddress))
|
|
117
|
+
return [];
|
|
118
|
+
return [metadata.publicAddress];
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
getNetwork() {
|
|
122
|
+
var _a;
|
|
123
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
return (_a = (yield this.getWeb3Provider())) === null || _a === void 0 ? void 0 : _a.getNetwork().then((network) => network.chainId);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
getRpcProvider() {
|
|
128
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
return undefined;
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
getSigner() {
|
|
133
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
134
|
+
const client = yield this.getClient();
|
|
135
|
+
return new ethers_1.ethers.providers.Web3Provider(client.rpcProvider).getSigner();
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
getWeb3Provider() {
|
|
139
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
const client = yield this.getClient();
|
|
141
|
+
return new ethers_1.ethers.providers.Web3Provider(client.rpcProvider);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
isInstalledOnBrowser() {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
proveOwnership(messageToSign) {
|
|
148
|
+
return this.signMessage(messageToSign);
|
|
149
|
+
}
|
|
150
|
+
setupEventListeners() {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
signMessage(messageToSign) {
|
|
154
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
155
|
+
const provider = yield this.getWeb3Provider();
|
|
156
|
+
if (!provider)
|
|
157
|
+
throw new errors_1.DynamicError('No provider');
|
|
158
|
+
const confirmed = yield this._walletUiUtils.requestSignMessageConfirmation(messageToSign);
|
|
159
|
+
if (confirmed !== true)
|
|
160
|
+
return;
|
|
161
|
+
return provider.getSigner().signMessage(messageToSign);
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
supportsNetworkSwitching() {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
switchNetwork() {
|
|
168
|
+
throw new Error('Method not implemented.');
|
|
169
|
+
}
|
|
170
|
+
teardownEventListeners() {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.MagicConnector = MagicConnector;
|
|
175
|
+
//# sourceMappingURL=MagicLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MagicLink.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/ethereum/MagicLink.ts"],"names":[],"mappings":"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"}
|