@dynamic-labs/ethereum 0.19.0-alpha.8 → 0.19.0-alpha.9
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 +29 -0
- package/package.json +8 -8
- package/src/ethProviderHelper.cjs +54 -132
- package/src/ethProviderHelper.d.ts +20 -29
- package/src/ethProviderHelper.js +55 -133
- package/src/index.cjs +23 -21
- package/src/index.d.ts +1 -0
- package/src/index.js +18 -16
- package/src/injected/BloctoInjected.cjs +2 -2
- package/src/injected/BloctoInjected.d.ts +2 -2
- package/src/injected/BloctoInjected.js +2 -2
- package/src/injected/BraveEvm.cjs +2 -2
- package/src/injected/BraveEvm.d.ts +2 -2
- package/src/injected/BraveEvm.js +2 -2
- package/src/injected/Dawn.cjs +2 -2
- package/src/injected/Dawn.d.ts +2 -2
- package/src/injected/Dawn.js +2 -2
- package/src/injected/ExodusEvm.cjs +2 -2
- package/src/injected/ExodusEvm.d.ts +2 -2
- package/src/injected/ExodusEvm.js +2 -2
- package/src/injected/Frame.cjs +2 -2
- package/src/injected/Frame.d.ts +2 -2
- package/src/injected/Frame.js +2 -2
- package/src/injected/GameStop.cjs +2 -2
- package/src/injected/GameStop.d.ts +2 -2
- package/src/injected/GameStop.js +2 -2
- package/src/injected/InjectedWalletBase.cjs +23 -10
- package/src/injected/InjectedWalletBase.d.ts +6 -1
- package/src/injected/InjectedWalletBase.js +23 -10
- package/src/injected/LegacyInjectedWalletBase.cjs +77 -0
- package/src/injected/LegacyInjectedWalletBase.d.ts +24 -0
- package/src/injected/LegacyInjectedWalletBase.js +75 -0
- package/src/injected/MetaMask.cjs +2 -2
- package/src/injected/MetaMask.d.ts +2 -2
- package/src/injected/MetaMask.js +2 -2
- package/src/injected/Opera.cjs +2 -2
- package/src/injected/Opera.d.ts +2 -2
- package/src/injected/Opera.js +2 -2
- package/src/injected/PhantomEvm.cjs +2 -2
- package/src/injected/PhantomEvm.d.ts +2 -2
- package/src/injected/PhantomEvm.js +2 -2
- package/src/injected/Rabby.cjs +2 -2
- package/src/injected/Rabby.d.ts +2 -2
- package/src/injected/Rabby.js +2 -2
- package/src/injected/Superb.cjs +2 -2
- package/src/injected/Superb.d.ts +2 -2
- package/src/injected/Superb.js +2 -2
- package/src/injected/Trust.cjs +2 -2
- package/src/injected/Trust.d.ts +2 -2
- package/src/injected/Trust.js +2 -2
- package/src/injected/Zerion.cjs +2 -2
- package/src/injected/Zerion.d.ts +2 -2
- package/src/injected/Zerion.js +2 -2
- package/src/injected/fetchInjectedWalletConnectors.cjs +32 -0
- package/src/injected/fetchInjectedWalletConnectors.d.ts +6 -0
- package/src/injected/fetchInjectedWalletConnectors.js +28 -0
- package/src/injected/index.d.ts +2 -4
- package/src/injected/{index.cjs → legacyInjectedWallets.cjs} +19 -21
- package/src/injected/legacyInjectedWallets.d.ts +3 -0
- package/src/injected/legacyInjectedWallets.js +46 -0
- package/src/legacyEthProviderHelper.cjs +193 -0
- package/src/legacyEthProviderHelper.d.ts +33 -0
- package/src/legacyEthProviderHelper.js +189 -0
- package/src/types.d.ts +11 -0
- package/src/utils/eventListenerHandlers.cjs +34 -0
- package/src/utils/eventListenerHandlers.d.ts +8 -0
- package/src/utils/eventListenerHandlers.js +30 -0
- package/src/walletConnect/fetchWalletConnectWallets.cjs +1 -16
- package/src/walletConnect/fetchWalletConnectWallets.d.ts +0 -1
- package/src/walletConnect/fetchWalletConnectWallets.js +2 -16
- package/src/walletConnect/walletConnectV2.cjs +5 -3
- package/src/walletConnect/walletConnectV2.js +5 -3
- package/src/injected/OKX.cjs +0 -15
- package/src/injected/OKX.d.ts +0 -5
- package/src/injected/OKX.js +0 -11
- package/src/injected/UnknownInjectedWallet.cjs +0 -14
- package/src/injected/UnknownInjectedWallet.d.ts +0 -4
- package/src/injected/UnknownInjectedWallet.js +0 -10
- package/src/injected/index.js +0 -49
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,33 @@
|
|
|
1
1
|
|
|
2
|
+
## [0.19.0-alpha.9](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.0-alpha.8...v0.19.0-alpha.9) (2023-09-21)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* allow enabling multi wallet in connect-only mode ([#3367](https://github.com/dynamic-labs/DynamicAuth/issues/3367)) ([8ef68a2](https://github.com/dynamic-labs/DynamicAuth/commit/8ef68a295738db5353fcddc54985744313a5474b))
|
|
8
|
+
* move injected wallets configuration to the cdn ([#3077](https://github.com/dynamic-labs/DynamicAuth/issues/3077)) ([291183b](https://github.com/dynamic-labs/DynamicAuth/commit/291183b8daf124577d1049152a2556b6f2a85758))
|
|
9
|
+
* passkey setup completed view ([#3358](https://github.com/dynamic-labs/DynamicAuth/issues/3358)) ([020faf6](https://github.com/dynamic-labs/DynamicAuth/commit/020faf63815e232c64ac8626f747b2997adbaa02))
|
|
10
|
+
* **rohithv/gvty-326:** check if email is real before sending ([#3361](https://github.com/dynamic-labs/DynamicAuth/issues/3361)) ([db554f3](https://github.com/dynamic-labs/DynamicAuth/commit/db554f344707e3c3701012ecc09b67be2aaebba4))
|
|
11
|
+
* safe guard wrong locale override keys ([#3329](https://github.com/dynamic-labs/DynamicAuth/issues/3329)) ([b2cf96b](https://github.com/dynamic-labs/DynamicAuth/commit/b2cf96b55fdd2705335ad942fe8e1c1109bf4134))
|
|
12
|
+
* secure account with passkey view ([#3356](https://github.com/dynamic-labs/DynamicAuth/issues/3356)) ([9d58c44](https://github.com/dynamic-labs/DynamicAuth/commit/9d58c4472f1967ff5201bae6556c7d88a33d6276))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* better handling of window opener to mitigate window opener for social linking ([#3379](https://github.com/dynamic-labs/DynamicAuth/issues/3379)) ([e784061](https://github.com/dynamic-labs/DynamicAuth/commit/e784061ab190d314976213e321516bbb256627e7))
|
|
18
|
+
* change buttom copy when cannot link a wallet ([#3364](https://github.com/dynamic-labs/DynamicAuth/issues/3364)) ([5428a60](https://github.com/dynamic-labs/DynamicAuth/commit/5428a60abcbbd9c47e9227a53610ee5975bac379))
|
|
19
|
+
* **DynamicWidget:** goToInitialView when closing send balance ([#3333](https://github.com/dynamic-labs/DynamicAuth/issues/3333)) ([7ea40ec](https://github.com/dynamic-labs/DynamicAuth/commit/7ea40ec3827c40e3340e5ecfa2153e59c05a79f1))
|
|
20
|
+
* **EmailMagicWalletConnector:** to only cancel the verification if user clicks back ([#3374](https://github.com/dynamic-labs/DynamicAuth/issues/3374)) ([1111a18](https://github.com/dynamic-labs/DynamicAuth/commit/1111a186b7b84066e89d385c0bd9c064d0326eae))
|
|
21
|
+
* **embedded-wallet:** display sign typed data message ([#3316](https://github.com/dynamic-labs/DynamicAuth/issues/3316)) ([0014c8b](https://github.com/dynamic-labs/DynamicAuth/commit/0014c8b4250cf9db92b554f02b4e46f3aba2d943))
|
|
22
|
+
* missing translation keys ([#3325](https://github.com/dynamic-labs/DynamicAuth/issues/3325)) ([0e7c383](https://github.com/dynamic-labs/DynamicAuth/commit/0e7c3838a0eb8b49298e59b2919e16994a2d6b19))
|
|
23
|
+
* only set scope/prompt in oauth query params when they're defined ([#3324](https://github.com/dynamic-labs/DynamicAuth/issues/3324)) ([9e8aa2d](https://github.com/dynamic-labs/DynamicAuth/commit/9e8aa2d186fff563607dc836017b918af79718ce))
|
|
24
|
+
* pass the network param on wallet transfers ([#3307](https://github.com/dynamic-labs/DynamicAuth/issues/3307)) ([faf89fd](https://github.com/dynamic-labs/DynamicAuth/commit/faf89fdbfa690a87ae91d7f09c3647b4160b53ad))
|
|
25
|
+
* send primaryWalletId when available to unlinkOauth ([#3342](https://github.com/dynamic-labs/DynamicAuth/issues/3342)) ([0da0ae2](https://github.com/dynamic-labs/DynamicAuth/commit/0da0ae23040f7683000223109446a516c6d7b212))
|
|
26
|
+
* twitter sign-in with dynamic ([#3313](https://github.com/dynamic-labs/DynamicAuth/issues/3313)) ([c77dae4](https://github.com/dynamic-labs/DynamicAuth/commit/c77dae41dbdc02c84f3d3f5f3338136efd5766f9))
|
|
27
|
+
* use social profile photo for profile icon whenever available ([#3298](https://github.com/dynamic-labs/DynamicAuth/issues/3298)) ([143303b](https://github.com/dynamic-labs/DynamicAuth/commit/143303ba5e24d16aaa362f1888e3942bdef59602))
|
|
28
|
+
* wallet transition in the bridge ([#3270](https://github.com/dynamic-labs/DynamicAuth/issues/3270)) ([143cf47](https://github.com/dynamic-labs/DynamicAuth/commit/143cf47e0cd4806780f5b3f527ace2d6c0208534)), closes [#3268](https://github.com/dynamic-labs/DynamicAuth/issues/3268) [#3243](https://github.com/dynamic-labs/DynamicAuth/issues/3243)
|
|
29
|
+
* **wallet-connect:** prevent connector from connecting after logout ([#3345](https://github.com/dynamic-labs/DynamicAuth/issues/3345)) ([9bada77](https://github.com/dynamic-labs/DynamicAuth/commit/9bada7775c5ac7a4fdb5ad8d4d21691335e06936))
|
|
30
|
+
|
|
2
31
|
## [0.19.0-alpha.8](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.0-alpha.7...v0.19.0-alpha.8) (2023-09-11)
|
|
3
32
|
|
|
4
33
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/ethereum",
|
|
3
|
-
"version": "0.19.0-alpha.
|
|
3
|
+
"version": "0.19.0-alpha.9",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -26,18 +26,18 @@
|
|
|
26
26
|
"./package.json": "./package.json"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
+
"@ethersproject/providers": "5.7.2",
|
|
29
30
|
"@walletconnect/client": "1.8.0",
|
|
30
31
|
"@walletconnect/ethereum-provider": "1.8.0",
|
|
31
32
|
"@walletconnect/universal-provider": "2.8.3",
|
|
33
|
+
"buffer": "6.0.3",
|
|
32
34
|
"ethers": "5.7.2",
|
|
33
35
|
"eventemitter3": "5.0.1",
|
|
34
|
-
"
|
|
35
|
-
"@dynamic-labs/
|
|
36
|
-
"@dynamic-labs/
|
|
37
|
-
"@dynamic-labs/
|
|
38
|
-
"@dynamic-labs/wallet-
|
|
39
|
-
"@dynamic-labs/wallet-connector-core": "0.19.0-alpha.8",
|
|
40
|
-
"@ethersproject/providers": "5.7.2"
|
|
36
|
+
"@dynamic-labs/rpc-providers": "0.19.0-alpha.9",
|
|
37
|
+
"@dynamic-labs/types": "0.19.0-alpha.9",
|
|
38
|
+
"@dynamic-labs/utils": "0.19.0-alpha.9",
|
|
39
|
+
"@dynamic-labs/wallet-book": "0.19.0-alpha.9",
|
|
40
|
+
"@dynamic-labs/wallet-connector-core": "0.19.0-alpha.9"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {}
|
|
43
43
|
}
|
|
@@ -5,74 +5,83 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _tslib = require('../_virtual/_tslib.cjs');
|
|
6
6
|
var ethers = require('ethers');
|
|
7
7
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
8
|
+
var utils = require('@dynamic-labs/utils');
|
|
8
9
|
var isUnsupportedProviderError = require('./utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs');
|
|
10
|
+
var eventListenerHandlers = require('./utils/eventListenerHandlers.cjs');
|
|
9
11
|
|
|
10
|
-
var _a;
|
|
11
12
|
class EthProviderHelper {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
constructor(wallet) {
|
|
14
|
+
this.wallet = wallet;
|
|
15
|
+
}
|
|
16
|
+
getInstalledProvider() {
|
|
17
|
+
const config = this.getInjectedConfig();
|
|
18
|
+
if (!config ||
|
|
19
|
+
!config.extensionLocators ||
|
|
20
|
+
!config.extensionLocators.length)
|
|
21
|
+
return undefined;
|
|
22
|
+
return this.installedProviderLookup(config.extensionLocators);
|
|
15
23
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
24
|
+
getInjectedConfig() {
|
|
25
|
+
if (!this.wallet || !this.wallet.injectedConfig)
|
|
26
|
+
return;
|
|
27
|
+
const { injectedConfig } = this.wallet;
|
|
28
|
+
return injectedConfig.find((c) => c.chain === 'evm');
|
|
29
|
+
}
|
|
30
|
+
installedProviders() {
|
|
31
|
+
const config = this.getInjectedConfig();
|
|
32
|
+
if (!config)
|
|
33
|
+
return [];
|
|
34
|
+
const providers = [];
|
|
35
|
+
if (config.windowLocations) {
|
|
36
|
+
for (const windowLocation of config.windowLocations) {
|
|
37
|
+
const foundProviders = utils.getPathFromObject(window, windowLocation);
|
|
38
|
+
if (foundProviders && foundProviders.length)
|
|
39
|
+
providers.push(...foundProviders);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
19
42
|
if (window.ethereum) {
|
|
20
|
-
if (!window.ethereum.providers) {
|
|
21
|
-
|
|
43
|
+
if (!window.ethereum.providers || !window.ethereum.providers.length) {
|
|
44
|
+
providers.push(window.ethereum);
|
|
22
45
|
}
|
|
23
46
|
else {
|
|
24
|
-
window.ethereum.providers.forEach((
|
|
25
|
-
ethereumProviders.push(provider);
|
|
26
|
-
});
|
|
47
|
+
window.ethereum.providers.forEach((p) => providers.push(p));
|
|
27
48
|
}
|
|
28
49
|
}
|
|
29
|
-
|
|
30
|
-
ethereumProviders.push(window.phantom.ethereum);
|
|
31
|
-
}
|
|
32
|
-
if (window.zerionWallet) {
|
|
33
|
-
ethereumProviders.push(window.zerionWallet);
|
|
34
|
-
}
|
|
35
|
-
if (window.coinbaseWalletExtension) {
|
|
36
|
-
ethereumProviders.push(window.coinbaseWalletExtension);
|
|
37
|
-
}
|
|
38
|
-
if (window.superb) {
|
|
39
|
-
ethereumProviders.push(window.superb);
|
|
40
|
-
}
|
|
41
|
-
if (window.okxwallet) {
|
|
42
|
-
ethereumProviders.push(window.okxwallet);
|
|
43
|
-
}
|
|
44
|
-
return ethereumProviders;
|
|
50
|
+
return providers;
|
|
45
51
|
}
|
|
46
|
-
|
|
47
|
-
|
|
52
|
+
installedProviderLookup(providerFlags) {
|
|
53
|
+
const allInstalledProviders = this.installedProviders();
|
|
54
|
+
return walletConnectorCore.ProviderLookup(allInstalledProviders, providerFlags);
|
|
55
|
+
}
|
|
56
|
+
isInstalledHelper() {
|
|
57
|
+
return this.findProvider() !== undefined;
|
|
48
58
|
}
|
|
49
|
-
|
|
50
|
-
|
|
59
|
+
findProvider() {
|
|
60
|
+
const windowReference = this.getInstalledProvider();
|
|
51
61
|
try {
|
|
52
|
-
|
|
53
|
-
return provider === undefined
|
|
62
|
+
return windowReference === undefined
|
|
54
63
|
? undefined
|
|
55
|
-
: new ethers.ethers.providers.Web3Provider(
|
|
64
|
+
: new ethers.ethers.providers.Web3Provider(windowReference, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
|
|
56
65
|
}
|
|
57
66
|
catch (err) {
|
|
58
67
|
if (isUnsupportedProviderError.isUnsupportedProviderError(err)) {
|
|
59
68
|
walletConnectorCore.logger.error(`ETH Provider is not supported ${err.value}`, err);
|
|
60
69
|
return;
|
|
61
70
|
}
|
|
62
|
-
walletConnectorCore.logger.error(`Could not find provider for ${
|
|
71
|
+
walletConnectorCore.logger.error(`Could not find provider for ${this.wallet.name}`, err);
|
|
63
72
|
return undefined;
|
|
64
73
|
}
|
|
65
74
|
}
|
|
66
|
-
|
|
75
|
+
fetchPublicAddress() {
|
|
67
76
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
68
|
-
const provider = this.findProvider(
|
|
77
|
+
const provider = this.findProvider();
|
|
69
78
|
if (!provider) {
|
|
70
79
|
return Promise.resolve(undefined);
|
|
71
80
|
}
|
|
72
81
|
return this.fetchPublicAddressWithProvider(provider);
|
|
73
82
|
});
|
|
74
83
|
}
|
|
75
|
-
|
|
84
|
+
fetchPublicAddressWithProvider(provider) {
|
|
76
85
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
77
86
|
try {
|
|
78
87
|
const [lowercaseAddress] = yield provider.send('eth_requestAccounts', []);
|
|
@@ -85,13 +94,13 @@ class EthProviderHelper {
|
|
|
85
94
|
}
|
|
86
95
|
});
|
|
87
96
|
}
|
|
88
|
-
|
|
97
|
+
signMessage(messageToSign) {
|
|
89
98
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
90
|
-
const walletAddress = yield this.
|
|
99
|
+
const walletAddress = yield this.fetchPublicAddress();
|
|
91
100
|
if (!walletAddress) {
|
|
92
101
|
return Promise.resolve(undefined);
|
|
93
102
|
}
|
|
94
|
-
const provider = this.findProvider(
|
|
103
|
+
const provider = this.findProvider();
|
|
95
104
|
if (!provider) {
|
|
96
105
|
return Promise.resolve(undefined);
|
|
97
106
|
}
|
|
@@ -100,37 +109,13 @@ class EthProviderHelper {
|
|
|
100
109
|
return signedMessage;
|
|
101
110
|
});
|
|
102
111
|
}
|
|
103
|
-
|
|
104
|
-
if (!web3Provider) {
|
|
105
|
-
return {
|
|
106
|
-
tearDownEventListeners: () => { },
|
|
107
|
-
};
|
|
108
|
-
}
|
|
112
|
+
_setupEventListeners(walletConnector, web3Provider) {
|
|
109
113
|
const externalProvider = web3Provider.provider;
|
|
110
|
-
const handleAccountChange
|
|
111
|
-
if (accounts.length === 0) {
|
|
112
|
-
walletConnector.emit('disconnect');
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
walletConnector.emit('accountChange', { accounts });
|
|
116
|
-
});
|
|
117
|
-
const handleChainChange = () => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
118
|
-
const network = yield web3Provider.getNetwork();
|
|
119
|
-
walletConnector.emit('chainChange', {
|
|
120
|
-
chain: network.chainId.toString(),
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
const handleDisconnect = (error) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
124
|
-
if ((error === null || error === void 0 ? void 0 : error.code) === 1013) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
walletConnector.emit('disconnect');
|
|
128
|
-
});
|
|
114
|
+
const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers.eventListenerHandlers(walletConnector, web3Provider);
|
|
129
115
|
externalProvider.on('accountsChanged', handleAccountChange);
|
|
130
116
|
externalProvider.on('chainChanged', handleChainChange);
|
|
131
117
|
externalProvider.on('disconnect', handleDisconnect);
|
|
132
118
|
const tearDownEventListeners = () => {
|
|
133
|
-
const web3Provider = this.findProvider(name);
|
|
134
119
|
if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
|
|
135
120
|
return;
|
|
136
121
|
}
|
|
@@ -149,69 +134,6 @@ class EthProviderHelper {
|
|
|
149
134
|
tearDownEventListeners,
|
|
150
135
|
};
|
|
151
136
|
}
|
|
152
|
-
}
|
|
153
|
-
_a = EthProviderHelper;
|
|
154
|
-
EthProviderHelper.MetamaskProvider = () =>
|
|
155
|
-
// Stop these wallets from showing up as MetaMask
|
|
156
|
-
_a.installedProviderLookup([
|
|
157
|
-
{ flag: 'isDawn', value: false },
|
|
158
|
-
{ flag: 'isBraveWallet', value: false },
|
|
159
|
-
{ flag: 'isTrustWallet', value: false },
|
|
160
|
-
{ flag: 'isExodus', value: false },
|
|
161
|
-
{ flag: 'isPhantom', value: false },
|
|
162
|
-
{ flag: 'isZerion', value: false },
|
|
163
|
-
{ flag: 'isMetaMask', value: true },
|
|
164
|
-
{ flag: 'isSuperb', value: false },
|
|
165
|
-
{ flag: 'isRabby', value: false },
|
|
166
|
-
{ flag: 'isOkxWallet', value: false },
|
|
167
|
-
]);
|
|
168
|
-
EthProviderHelper.BraveProvider = () => _a.installedProviderLookup([{ flag: 'isBraveWallet', value: true }]);
|
|
169
|
-
EthProviderHelper.DawnProvider = () => _a.installedProviderLookup([{ flag: 'isDawn', value: true }]);
|
|
170
|
-
EthProviderHelper.FrameProvider = () => _a.installedProviderLookup([{ flag: 'isFrame', value: true }]);
|
|
171
|
-
EthProviderHelper.CoinbaseProvider = () => _a.installedProviderLookup([{ flag: 'isCoinbaseWallet', value: true }]);
|
|
172
|
-
EthProviderHelper.OperaProvider = () => _a.installedProviderLookup([{ flag: 'isOpera', value: true }]);
|
|
173
|
-
EthProviderHelper.GameStopProvider = () => _a.installedProviderLookup([{ flag: 'isGamestop', value: true }]);
|
|
174
|
-
EthProviderHelper.ExodusProvider = () => _a.installedProviderLookup([{ flag: 'isExodus', value: true }]);
|
|
175
|
-
EthProviderHelper.BloctoProvider = () => _a.installedProviderLookup([{ flag: 'isBlocto', value: true }]);
|
|
176
|
-
EthProviderHelper.TrustWalletProvider = () => _a.installedProviderLookup([{ flag: 'isTrustWallet', value: true }]);
|
|
177
|
-
EthProviderHelper.PhantomProvider = () => _a.installedProviderLookup([{ flag: 'isPhantom', value: true }]);
|
|
178
|
-
EthProviderHelper.ZerionProvider = () => _a.installedProviderLookup([{ flag: 'isZerion', value: true }]);
|
|
179
|
-
EthProviderHelper.SuperbProvider = () => _a.installedProviderLookup([{ flag: 'isSuperb', value: true }]);
|
|
180
|
-
EthProviderHelper.RabbyProvider = () => _a.installedProviderLookup([{ flag: 'isRabby', value: true }]);
|
|
181
|
-
EthProviderHelper.OKXProvider = () => _a.installedProviderLookup([{ flag: 'isOkxWallet', value: true }]);
|
|
182
|
-
EthProviderHelper.UnknownInjectedProvider = () => _a.installedProviderLookup([
|
|
183
|
-
{ flag: 'isMetaMask', value: false },
|
|
184
|
-
{ flag: 'isExodus', value: false },
|
|
185
|
-
{ flag: 'isCoinbaseWallet', value: false },
|
|
186
|
-
{ flag: 'isBraveWallet', value: false },
|
|
187
|
-
{ flag: 'isGamestop', value: false },
|
|
188
|
-
{ flag: 'isFrame', value: false },
|
|
189
|
-
{ flag: 'isOpera', value: false },
|
|
190
|
-
{ flag: 'isBlocto', value: false },
|
|
191
|
-
{ flag: 'isTrustWallet', value: false },
|
|
192
|
-
{ flag: 'isPhantom', value: false },
|
|
193
|
-
{ flag: 'isZerion', value: false },
|
|
194
|
-
{ flag: 'isSuperb', value: false },
|
|
195
|
-
{ flag: 'isRabby', value: false },
|
|
196
|
-
{ flag: 'isOkxWallet', value: false },
|
|
197
|
-
]);
|
|
198
|
-
EthProviderHelper.providers = {
|
|
199
|
-
bloctoinjected: _a.BloctoProvider,
|
|
200
|
-
braveevm: _a.BraveProvider,
|
|
201
|
-
coinbase: _a.CoinbaseProvider,
|
|
202
|
-
dawn: _a.DawnProvider,
|
|
203
|
-
exodusevm: _a.ExodusProvider,
|
|
204
|
-
frame: _a.FrameProvider,
|
|
205
|
-
gamestop: _a.GameStopProvider,
|
|
206
|
-
injectedwallet: _a.UnknownInjectedProvider,
|
|
207
|
-
metamask: _a.MetamaskProvider,
|
|
208
|
-
okxwallet: _a.OKXProvider,
|
|
209
|
-
opera: _a.OperaProvider,
|
|
210
|
-
phantomevm: _a.PhantomProvider,
|
|
211
|
-
rabby: _a.RabbyProvider,
|
|
212
|
-
superb: _a.SuperbProvider,
|
|
213
|
-
trust: _a.TrustWalletProvider,
|
|
214
|
-
zerion: _a.ZerionProvider,
|
|
215
|
-
};
|
|
137
|
+
}
|
|
216
138
|
|
|
217
139
|
exports.EthProviderHelper = EthProviderHelper;
|
|
@@ -1,36 +1,27 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import { ProviderCondition, WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
+
import { WalletSchema } from '@dynamic-labs/wallet-book';
|
|
3
4
|
import { IEthereum, ProviderFlag } from './types';
|
|
4
|
-
type Provider = () => ethers.providers.ExternalProvider | undefined;
|
|
5
5
|
export declare class EthProviderHelper {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
static installedProviderLookup(providerFlags: Array<ProviderCondition<ProviderFlag>>): IEthereum | undefined;
|
|
26
|
-
static allInstalledProviders(): IEthereum[];
|
|
27
|
-
static isInstalledHelper(walletName: string): boolean;
|
|
28
|
-
static findProvider(walletName: string): ethers.providers.Web3Provider | undefined;
|
|
29
|
-
static fetchPublicAddressWithName(name: string): Promise<string | undefined>;
|
|
30
|
-
static fetchPublicAddressWithProvider(provider: ethers.providers.Web3Provider): Promise<string | undefined>;
|
|
31
|
-
static signMessageWithName(messageToSign: string, name: string): Promise<string | undefined>;
|
|
32
|
-
static _setupEventListeners(name: string, walletConnector: WalletConnector, web3Provider?: ethers.providers.Web3Provider): {
|
|
6
|
+
private wallet;
|
|
7
|
+
constructor(wallet: WalletSchema);
|
|
8
|
+
getInstalledProvider(): IEthereum | undefined;
|
|
9
|
+
getInjectedConfig(): {
|
|
10
|
+
chain: string;
|
|
11
|
+
extensionLocators: {
|
|
12
|
+
value: boolean;
|
|
13
|
+
flag: string;
|
|
14
|
+
}[];
|
|
15
|
+
windowLocations?: string[] | undefined;
|
|
16
|
+
} | undefined;
|
|
17
|
+
installedProviders(): IEthereum[];
|
|
18
|
+
installedProviderLookup(providerFlags: Array<ProviderCondition<ProviderFlag>>): IEthereum | undefined;
|
|
19
|
+
isInstalledHelper(): boolean;
|
|
20
|
+
findProvider(): ethers.providers.Web3Provider | undefined;
|
|
21
|
+
fetchPublicAddress(): Promise<string | undefined>;
|
|
22
|
+
fetchPublicAddressWithProvider(provider: ethers.providers.Web3Provider): Promise<string | undefined>;
|
|
23
|
+
signMessage(messageToSign: string): Promise<string | undefined>;
|
|
24
|
+
_setupEventListeners(walletConnector: WalletConnector, web3Provider: ethers.providers.Web3Provider): {
|
|
33
25
|
tearDownEventListeners: () => void;
|
|
34
26
|
};
|
|
35
27
|
}
|
|
36
|
-
export {};
|
package/src/ethProviderHelper.js
CHANGED
|
@@ -1,74 +1,83 @@
|
|
|
1
1
|
import { __awaiter } from '../_virtual/_tslib.js';
|
|
2
2
|
import { ethers, utils } from 'ethers';
|
|
3
|
-
import { ProviderLookup,
|
|
3
|
+
import { ProviderLookup, logger } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
import { getPathFromObject } from '@dynamic-labs/utils';
|
|
4
5
|
import { isUnsupportedProviderError } from './utils/isUnsupportedProviderError/isUnsupportedProviderError.js';
|
|
6
|
+
import { eventListenerHandlers } from './utils/eventListenerHandlers.js';
|
|
5
7
|
|
|
6
|
-
var _a;
|
|
7
8
|
class EthProviderHelper {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
constructor(wallet) {
|
|
10
|
+
this.wallet = wallet;
|
|
11
|
+
}
|
|
12
|
+
getInstalledProvider() {
|
|
13
|
+
const config = this.getInjectedConfig();
|
|
14
|
+
if (!config ||
|
|
15
|
+
!config.extensionLocators ||
|
|
16
|
+
!config.extensionLocators.length)
|
|
17
|
+
return undefined;
|
|
18
|
+
return this.installedProviderLookup(config.extensionLocators);
|
|
11
19
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
20
|
+
getInjectedConfig() {
|
|
21
|
+
if (!this.wallet || !this.wallet.injectedConfig)
|
|
22
|
+
return;
|
|
23
|
+
const { injectedConfig } = this.wallet;
|
|
24
|
+
return injectedConfig.find((c) => c.chain === 'evm');
|
|
25
|
+
}
|
|
26
|
+
installedProviders() {
|
|
27
|
+
const config = this.getInjectedConfig();
|
|
28
|
+
if (!config)
|
|
29
|
+
return [];
|
|
30
|
+
const providers = [];
|
|
31
|
+
if (config.windowLocations) {
|
|
32
|
+
for (const windowLocation of config.windowLocations) {
|
|
33
|
+
const foundProviders = getPathFromObject(window, windowLocation);
|
|
34
|
+
if (foundProviders && foundProviders.length)
|
|
35
|
+
providers.push(...foundProviders);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
15
38
|
if (window.ethereum) {
|
|
16
|
-
if (!window.ethereum.providers) {
|
|
17
|
-
|
|
39
|
+
if (!window.ethereum.providers || !window.ethereum.providers.length) {
|
|
40
|
+
providers.push(window.ethereum);
|
|
18
41
|
}
|
|
19
42
|
else {
|
|
20
|
-
window.ethereum.providers.forEach((
|
|
21
|
-
ethereumProviders.push(provider);
|
|
22
|
-
});
|
|
43
|
+
window.ethereum.providers.forEach((p) => providers.push(p));
|
|
23
44
|
}
|
|
24
45
|
}
|
|
25
|
-
|
|
26
|
-
ethereumProviders.push(window.phantom.ethereum);
|
|
27
|
-
}
|
|
28
|
-
if (window.zerionWallet) {
|
|
29
|
-
ethereumProviders.push(window.zerionWallet);
|
|
30
|
-
}
|
|
31
|
-
if (window.coinbaseWalletExtension) {
|
|
32
|
-
ethereumProviders.push(window.coinbaseWalletExtension);
|
|
33
|
-
}
|
|
34
|
-
if (window.superb) {
|
|
35
|
-
ethereumProviders.push(window.superb);
|
|
36
|
-
}
|
|
37
|
-
if (window.okxwallet) {
|
|
38
|
-
ethereumProviders.push(window.okxwallet);
|
|
39
|
-
}
|
|
40
|
-
return ethereumProviders;
|
|
46
|
+
return providers;
|
|
41
47
|
}
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
installedProviderLookup(providerFlags) {
|
|
49
|
+
const allInstalledProviders = this.installedProviders();
|
|
50
|
+
return ProviderLookup(allInstalledProviders, providerFlags);
|
|
51
|
+
}
|
|
52
|
+
isInstalledHelper() {
|
|
53
|
+
return this.findProvider() !== undefined;
|
|
44
54
|
}
|
|
45
|
-
|
|
46
|
-
|
|
55
|
+
findProvider() {
|
|
56
|
+
const windowReference = this.getInstalledProvider();
|
|
47
57
|
try {
|
|
48
|
-
|
|
49
|
-
return provider === undefined
|
|
58
|
+
return windowReference === undefined
|
|
50
59
|
? undefined
|
|
51
|
-
: new ethers.providers.Web3Provider(
|
|
60
|
+
: new ethers.providers.Web3Provider(windowReference, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
|
|
52
61
|
}
|
|
53
62
|
catch (err) {
|
|
54
63
|
if (isUnsupportedProviderError(err)) {
|
|
55
64
|
logger.error(`ETH Provider is not supported ${err.value}`, err);
|
|
56
65
|
return;
|
|
57
66
|
}
|
|
58
|
-
logger.error(`Could not find provider for ${
|
|
67
|
+
logger.error(`Could not find provider for ${this.wallet.name}`, err);
|
|
59
68
|
return undefined;
|
|
60
69
|
}
|
|
61
70
|
}
|
|
62
|
-
|
|
71
|
+
fetchPublicAddress() {
|
|
63
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
const provider = this.findProvider(
|
|
73
|
+
const provider = this.findProvider();
|
|
65
74
|
if (!provider) {
|
|
66
75
|
return Promise.resolve(undefined);
|
|
67
76
|
}
|
|
68
77
|
return this.fetchPublicAddressWithProvider(provider);
|
|
69
78
|
});
|
|
70
79
|
}
|
|
71
|
-
|
|
80
|
+
fetchPublicAddressWithProvider(provider) {
|
|
72
81
|
return __awaiter(this, void 0, void 0, function* () {
|
|
73
82
|
try {
|
|
74
83
|
const [lowercaseAddress] = yield provider.send('eth_requestAccounts', []);
|
|
@@ -81,13 +90,13 @@ class EthProviderHelper {
|
|
|
81
90
|
}
|
|
82
91
|
});
|
|
83
92
|
}
|
|
84
|
-
|
|
93
|
+
signMessage(messageToSign) {
|
|
85
94
|
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
-
const walletAddress = yield this.
|
|
95
|
+
const walletAddress = yield this.fetchPublicAddress();
|
|
87
96
|
if (!walletAddress) {
|
|
88
97
|
return Promise.resolve(undefined);
|
|
89
98
|
}
|
|
90
|
-
const provider = this.findProvider(
|
|
99
|
+
const provider = this.findProvider();
|
|
91
100
|
if (!provider) {
|
|
92
101
|
return Promise.resolve(undefined);
|
|
93
102
|
}
|
|
@@ -96,37 +105,13 @@ class EthProviderHelper {
|
|
|
96
105
|
return signedMessage;
|
|
97
106
|
});
|
|
98
107
|
}
|
|
99
|
-
|
|
100
|
-
if (!web3Provider) {
|
|
101
|
-
return {
|
|
102
|
-
tearDownEventListeners: () => { },
|
|
103
|
-
};
|
|
104
|
-
}
|
|
108
|
+
_setupEventListeners(walletConnector, web3Provider) {
|
|
105
109
|
const externalProvider = web3Provider.provider;
|
|
106
|
-
const handleAccountChange
|
|
107
|
-
if (accounts.length === 0) {
|
|
108
|
-
walletConnector.emit('disconnect');
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
walletConnector.emit('accountChange', { accounts });
|
|
112
|
-
});
|
|
113
|
-
const handleChainChange = () => __awaiter(this, void 0, void 0, function* () {
|
|
114
|
-
const network = yield web3Provider.getNetwork();
|
|
115
|
-
walletConnector.emit('chainChange', {
|
|
116
|
-
chain: network.chainId.toString(),
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
const handleDisconnect = (error) => __awaiter(this, void 0, void 0, function* () {
|
|
120
|
-
if ((error === null || error === void 0 ? void 0 : error.code) === 1013) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
walletConnector.emit('disconnect');
|
|
124
|
-
});
|
|
110
|
+
const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers(walletConnector, web3Provider);
|
|
125
111
|
externalProvider.on('accountsChanged', handleAccountChange);
|
|
126
112
|
externalProvider.on('chainChanged', handleChainChange);
|
|
127
113
|
externalProvider.on('disconnect', handleDisconnect);
|
|
128
114
|
const tearDownEventListeners = () => {
|
|
129
|
-
const web3Provider = this.findProvider(name);
|
|
130
115
|
if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
|
|
131
116
|
return;
|
|
132
117
|
}
|
|
@@ -145,69 +130,6 @@ class EthProviderHelper {
|
|
|
145
130
|
tearDownEventListeners,
|
|
146
131
|
};
|
|
147
132
|
}
|
|
148
|
-
}
|
|
149
|
-
_a = EthProviderHelper;
|
|
150
|
-
EthProviderHelper.MetamaskProvider = () =>
|
|
151
|
-
// Stop these wallets from showing up as MetaMask
|
|
152
|
-
_a.installedProviderLookup([
|
|
153
|
-
{ flag: 'isDawn', value: false },
|
|
154
|
-
{ flag: 'isBraveWallet', value: false },
|
|
155
|
-
{ flag: 'isTrustWallet', value: false },
|
|
156
|
-
{ flag: 'isExodus', value: false },
|
|
157
|
-
{ flag: 'isPhantom', value: false },
|
|
158
|
-
{ flag: 'isZerion', value: false },
|
|
159
|
-
{ flag: 'isMetaMask', value: true },
|
|
160
|
-
{ flag: 'isSuperb', value: false },
|
|
161
|
-
{ flag: 'isRabby', value: false },
|
|
162
|
-
{ flag: 'isOkxWallet', value: false },
|
|
163
|
-
]);
|
|
164
|
-
EthProviderHelper.BraveProvider = () => _a.installedProviderLookup([{ flag: 'isBraveWallet', value: true }]);
|
|
165
|
-
EthProviderHelper.DawnProvider = () => _a.installedProviderLookup([{ flag: 'isDawn', value: true }]);
|
|
166
|
-
EthProviderHelper.FrameProvider = () => _a.installedProviderLookup([{ flag: 'isFrame', value: true }]);
|
|
167
|
-
EthProviderHelper.CoinbaseProvider = () => _a.installedProviderLookup([{ flag: 'isCoinbaseWallet', value: true }]);
|
|
168
|
-
EthProviderHelper.OperaProvider = () => _a.installedProviderLookup([{ flag: 'isOpera', value: true }]);
|
|
169
|
-
EthProviderHelper.GameStopProvider = () => _a.installedProviderLookup([{ flag: 'isGamestop', value: true }]);
|
|
170
|
-
EthProviderHelper.ExodusProvider = () => _a.installedProviderLookup([{ flag: 'isExodus', value: true }]);
|
|
171
|
-
EthProviderHelper.BloctoProvider = () => _a.installedProviderLookup([{ flag: 'isBlocto', value: true }]);
|
|
172
|
-
EthProviderHelper.TrustWalletProvider = () => _a.installedProviderLookup([{ flag: 'isTrustWallet', value: true }]);
|
|
173
|
-
EthProviderHelper.PhantomProvider = () => _a.installedProviderLookup([{ flag: 'isPhantom', value: true }]);
|
|
174
|
-
EthProviderHelper.ZerionProvider = () => _a.installedProviderLookup([{ flag: 'isZerion', value: true }]);
|
|
175
|
-
EthProviderHelper.SuperbProvider = () => _a.installedProviderLookup([{ flag: 'isSuperb', value: true }]);
|
|
176
|
-
EthProviderHelper.RabbyProvider = () => _a.installedProviderLookup([{ flag: 'isRabby', value: true }]);
|
|
177
|
-
EthProviderHelper.OKXProvider = () => _a.installedProviderLookup([{ flag: 'isOkxWallet', value: true }]);
|
|
178
|
-
EthProviderHelper.UnknownInjectedProvider = () => _a.installedProviderLookup([
|
|
179
|
-
{ flag: 'isMetaMask', value: false },
|
|
180
|
-
{ flag: 'isExodus', value: false },
|
|
181
|
-
{ flag: 'isCoinbaseWallet', value: false },
|
|
182
|
-
{ flag: 'isBraveWallet', value: false },
|
|
183
|
-
{ flag: 'isGamestop', value: false },
|
|
184
|
-
{ flag: 'isFrame', value: false },
|
|
185
|
-
{ flag: 'isOpera', value: false },
|
|
186
|
-
{ flag: 'isBlocto', value: false },
|
|
187
|
-
{ flag: 'isTrustWallet', value: false },
|
|
188
|
-
{ flag: 'isPhantom', value: false },
|
|
189
|
-
{ flag: 'isZerion', value: false },
|
|
190
|
-
{ flag: 'isSuperb', value: false },
|
|
191
|
-
{ flag: 'isRabby', value: false },
|
|
192
|
-
{ flag: 'isOkxWallet', value: false },
|
|
193
|
-
]);
|
|
194
|
-
EthProviderHelper.providers = {
|
|
195
|
-
bloctoinjected: _a.BloctoProvider,
|
|
196
|
-
braveevm: _a.BraveProvider,
|
|
197
|
-
coinbase: _a.CoinbaseProvider,
|
|
198
|
-
dawn: _a.DawnProvider,
|
|
199
|
-
exodusevm: _a.ExodusProvider,
|
|
200
|
-
frame: _a.FrameProvider,
|
|
201
|
-
gamestop: _a.GameStopProvider,
|
|
202
|
-
injectedwallet: _a.UnknownInjectedProvider,
|
|
203
|
-
metamask: _a.MetamaskProvider,
|
|
204
|
-
okxwallet: _a.OKXProvider,
|
|
205
|
-
opera: _a.OperaProvider,
|
|
206
|
-
phantomevm: _a.PhantomProvider,
|
|
207
|
-
rabby: _a.RabbyProvider,
|
|
208
|
-
superb: _a.SuperbProvider,
|
|
209
|
-
trust: _a.TrustWalletProvider,
|
|
210
|
-
zerion: _a.ZerionProvider,
|
|
211
|
-
};
|
|
133
|
+
}
|
|
212
134
|
|
|
213
135
|
export { EthProviderHelper };
|