@dynamic-labs/ethereum 0.19.0-alpha.2 → 0.19.0-alpha.20
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 +279 -0
- package/package.json +11 -10
- package/src/EthWalletConnector.cjs +189 -193
- package/src/EthWalletConnector.d.ts +298 -41
- package/src/EthWalletConnector.js +190 -194
- package/src/constants.d.ts +1 -1
- package/src/ethProviderHelper.cjs +132 -209
- package/src/ethProviderHelper.d.ts +28 -36
- package/src/ethProviderHelper.js +133 -210
- package/src/index.cjs +26 -26
- package/src/index.d.ts +9 -8
- package/src/index.js +21 -20
- package/src/injected/BloctoInjected.cjs +6 -6
- package/src/injected/BloctoInjected.d.ts +4 -4
- package/src/injected/BloctoInjected.js +6 -6
- package/src/injected/BraveEvm.cjs +6 -6
- package/src/injected/BraveEvm.d.ts +4 -4
- package/src/injected/BraveEvm.js +6 -6
- package/src/injected/Dawn.cjs +6 -6
- package/src/injected/Dawn.d.ts +4 -4
- package/src/injected/Dawn.js +6 -6
- package/src/injected/ExodusEvm.cjs +8 -8
- package/src/injected/ExodusEvm.d.ts +5 -5
- package/src/injected/ExodusEvm.js +7 -7
- package/src/injected/Frame.cjs +6 -6
- package/src/injected/Frame.d.ts +4 -4
- package/src/injected/Frame.js +6 -6
- package/src/injected/GameStop.cjs +6 -6
- package/src/injected/GameStop.d.ts +4 -4
- package/src/injected/GameStop.js +6 -6
- package/src/injected/InjectedWalletBase.cjs +79 -65
- package/src/injected/InjectedWalletBase.d.ts +286 -24
- package/src/injected/InjectedWalletBase.js +79 -65
- package/src/injected/LegacyInjectedWalletBase.cjs +83 -0
- package/src/injected/LegacyInjectedWalletBase.d.ts +24 -0
- package/src/injected/LegacyInjectedWalletBase.js +81 -0
- package/src/injected/Opera.cjs +6 -6
- package/src/injected/Opera.d.ts +4 -4
- package/src/injected/Opera.js +6 -6
- package/src/injected/PhantomEvm.cjs +28 -28
- package/src/injected/PhantomEvm.d.ts +5 -5
- package/src/injected/PhantomEvm.js +28 -28
- package/src/injected/Rabby.cjs +8 -8
- package/src/injected/Rabby.d.ts +5 -5
- package/src/injected/Rabby.js +7 -7
- package/src/injected/Superb.cjs +6 -6
- package/src/injected/Superb.d.ts +4 -4
- package/src/injected/Superb.js +6 -6
- package/src/injected/Trust.cjs +8 -8
- package/src/injected/Trust.d.ts +5 -5
- package/src/injected/Trust.js +7 -7
- package/src/injected/Zerion.cjs +8 -8
- package/src/injected/Zerion.d.ts +5 -5
- package/src/injected/Zerion.js +7 -7
- package/src/injected/fetchInjectedWalletConnectors.cjs +33 -0
- package/src/injected/fetchInjectedWalletConnectors.d.ts +6 -0
- package/src/injected/fetchInjectedWalletConnectors.js +29 -0
- package/src/injected/index.d.ts +13 -16
- package/src/injected/legacyInjectedWallets.cjs +48 -0
- package/src/injected/legacyInjectedWallets.d.ts +3 -0
- package/src/injected/legacyInjectedWallets.js +43 -0
- package/src/legacyEthProviderHelper.cjs +187 -0
- package/src/legacyEthProviderHelper.d.ts +34 -0
- package/src/legacyEthProviderHelper.js +183 -0
- package/src/polyfills.cjs +11 -11
- package/src/polyfills.d.ts +1 -1
- package/src/polyfills.js +11 -11
- package/src/types.d.ts +37 -24
- package/src/utils/eventListenerHandlers.cjs +34 -0
- package/src/utils/eventListenerHandlers.d.ts +8 -0
- package/src/utils/eventListenerHandlers.js +30 -0
- package/src/utils/findEvmNetwork.cjs +13 -13
- package/src/utils/findEvmNetwork.d.ts +6 -6
- package/src/utils/findEvmNetwork.js +13 -13
- package/src/utils/isString.d.ts +1 -1
- package/src/utils/isUnsupportedProviderError/index.d.ts +1 -1
- package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs +6 -6
- package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +6 -6
- package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.js +6 -6
- package/src/utils/last.d.ts +1 -1
- package/src/utils/parseIntSafe.cjs +13 -13
- package/src/utils/parseIntSafe.d.ts +1 -1
- package/src/utils/parseIntSafe.js +13 -13
- package/src/walletConnect/client/client.cjs +179 -176
- package/src/walletConnect/client/client.d.ts +17 -17
- package/src/walletConnect/client/client.js +179 -176
- package/src/walletConnect/client/index.d.ts +1 -1
- package/src/walletConnect/client/types.d.ts +4 -4
- package/src/walletConnect/fetchWalletConnectWallets.cjs +37 -52
- package/src/walletConnect/fetchWalletConnectWallets.d.ts +9 -10
- package/src/walletConnect/fetchWalletConnectWallets.js +38 -52
- package/src/walletConnect/index.d.ts +3 -3
- package/src/walletConnect/walletConnect.cjs +131 -130
- package/src/walletConnect/walletConnect.d.ts +52 -50
- package/src/walletConnect/walletConnect.js +131 -130
- package/src/walletConnect/walletConnectV2.cjs +419 -374
- package/src/walletConnect/walletConnectV2.d.ts +326 -61
- package/src/walletConnect/walletConnectV2.js +420 -375
- package/src/injected/MetaMask.cjs +0 -15
- package/src/injected/MetaMask.d.ts +0 -5
- package/src/injected/MetaMask.js +0 -11
- 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.cjs +0 -53
- package/src/injected/index.js +0 -49
|
@@ -1,202 +1,198 @@
|
|
|
1
1
|
import { __awaiter } from '../_virtual/_tslib.js';
|
|
2
|
-
import {
|
|
2
|
+
import { createPublicClient, http, formatEther } from 'viem';
|
|
3
3
|
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
-
import { parseEvmNetworks, DynamicError } from '@dynamic-labs/utils';
|
|
4
|
+
import { parseEvmNetworks, getOrMapViemChain, retryableFn, FALLBACK_UNDEFINED, DynamicError } from '@dynamic-labs/utils';
|
|
5
5
|
import { ProviderChain } from '@dynamic-labs/rpc-providers';
|
|
6
6
|
import { findEvmNetwork } from './utils/findEvmNetwork.js';
|
|
7
7
|
|
|
8
|
-
class EthWalletConnector extends WalletConnectorBase {
|
|
9
|
-
|
|
10
|
-
var _a, _b, _c;
|
|
11
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
12
|
-
const networkId = (_a = (yield this.getNetwork())) !== null && _a !== void 0 ? _a : 1;
|
|
13
|
-
if (this.evmNetworks.length === 0) {
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
const configurations = {
|
|
17
|
-
cosmos: [],
|
|
18
|
-
evm: this.evmNetworks,
|
|
19
|
-
solana: [],
|
|
20
|
-
starknet: undefined,
|
|
21
|
-
};
|
|
22
|
-
return (_c = (_b = this.chainRpcProviders) === null || _b === void 0 ? void 0 : _b.getEvmProviderByChainId(configurations, networkId)) === null || _c === void 0 ? void 0 : _c.provider;
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
constructor(props) {
|
|
26
|
-
var _a;
|
|
27
|
-
super(props);
|
|
28
|
-
this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
|
|
29
|
-
var _a;
|
|
30
|
-
[acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
|
|
31
|
-
? network.privateCustomerRpcUrls
|
|
32
|
-
: network.rpcUrls;
|
|
33
|
-
return acc;
|
|
34
|
-
}, {});
|
|
35
|
-
this.evmNetworks = parseEvmNetworks(props.evmNetworks);
|
|
36
|
-
this.chainRpcProviders = props.chainRpcProviders;
|
|
37
|
-
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(ProviderChain.EVM, (config) => {
|
|
38
|
-
const rpcProviders = {};
|
|
39
|
-
if (config === null || config === void 0 ? void 0 : config.evm) {
|
|
40
|
-
rpcProviders.evm = parseEvmNetworks(config.evm).map((network) => {
|
|
41
|
-
var _a;
|
|
42
|
-
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
43
|
-
const provider =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
return
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (!
|
|
124
|
-
throw new DynamicError(
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
}
|
|
8
|
+
class EthWalletConnector extends WalletConnectorBase {
|
|
9
|
+
getPublicClient() {
|
|
10
|
+
var _a, _b, _c;
|
|
11
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
12
|
+
const networkId = (_a = (yield this.getNetwork())) !== null && _a !== void 0 ? _a : 1;
|
|
13
|
+
if (this.evmNetworks.length === 0) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
const configurations = {
|
|
17
|
+
cosmos: [],
|
|
18
|
+
evm: this.evmNetworks,
|
|
19
|
+
solana: [],
|
|
20
|
+
starknet: undefined,
|
|
21
|
+
};
|
|
22
|
+
return (_c = (_b = this.chainRpcProviders) === null || _b === void 0 ? void 0 : _b.getEvmProviderByChainId(configurations, networkId)) === null || _c === void 0 ? void 0 : _c.provider;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
constructor(props) {
|
|
26
|
+
var _a;
|
|
27
|
+
super(props);
|
|
28
|
+
this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
|
|
29
|
+
var _a;
|
|
30
|
+
[acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
|
|
31
|
+
? network.privateCustomerRpcUrls
|
|
32
|
+
: network.rpcUrls;
|
|
33
|
+
return acc;
|
|
34
|
+
}, {});
|
|
35
|
+
this.evmNetworks = parseEvmNetworks(props.evmNetworks);
|
|
36
|
+
this.chainRpcProviders = props.chainRpcProviders;
|
|
37
|
+
(_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(ProviderChain.EVM, (config) => {
|
|
38
|
+
const rpcProviders = {};
|
|
39
|
+
if (config === null || config === void 0 ? void 0 : config.evm) {
|
|
40
|
+
rpcProviders.evm = parseEvmNetworks(config.evm).map((network) => {
|
|
41
|
+
var _a;
|
|
42
|
+
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
43
|
+
const provider = createPublicClient({
|
|
44
|
+
chain: getOrMapViemChain(network),
|
|
45
|
+
transport: http(rpcUrl),
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
chainId: network.chainId,
|
|
49
|
+
chainName: network.name,
|
|
50
|
+
provider,
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return rpcProviders.evm;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
getNetwork() {
|
|
58
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
const provider = this.getWalletClient();
|
|
60
|
+
if (!this.supportsNetworkSwitching || !provider) {
|
|
61
|
+
return Promise.resolve(undefined);
|
|
62
|
+
}
|
|
63
|
+
return retryableFn(provider.getChainId, {
|
|
64
|
+
fallbackValue: FALLBACK_UNDEFINED,
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
getNameService() {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
const [[address], rpcProvider] = yield Promise.all([
|
|
71
|
+
this.getConnectedAccounts(),
|
|
72
|
+
this.getPublicClient(),
|
|
73
|
+
]);
|
|
74
|
+
if (!address || !rpcProvider) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const ensName = yield rpcProvider.getEnsName({
|
|
78
|
+
address: address,
|
|
79
|
+
});
|
|
80
|
+
const ensAvatar = ensName
|
|
81
|
+
? yield rpcProvider.getEnsAvatar({
|
|
82
|
+
name: ensName,
|
|
83
|
+
})
|
|
84
|
+
: undefined;
|
|
85
|
+
const ensData = {
|
|
86
|
+
avatar: ensAvatar !== null && ensAvatar !== void 0 ? ensAvatar : undefined,
|
|
87
|
+
name: ensName !== null && ensName !== void 0 ? ensName : undefined,
|
|
88
|
+
};
|
|
89
|
+
return ensData;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
getSigner() {
|
|
93
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
return this.getWalletClient();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
getBalance() {
|
|
98
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
// This is equivalent to getSigner().getAddress() but does not crash
|
|
100
|
+
// if the signer is not available
|
|
101
|
+
const [address] = yield this.getConnectedAccounts();
|
|
102
|
+
if (!address)
|
|
103
|
+
return;
|
|
104
|
+
const client = yield this.getPublicClient();
|
|
105
|
+
const result = yield (client === null || client === void 0 ? void 0 : client.getBalance({
|
|
106
|
+
address: address,
|
|
107
|
+
}));
|
|
108
|
+
if (!result && result !== BigInt(0))
|
|
109
|
+
return;
|
|
110
|
+
return formatEther(result);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
supportsNetworkSwitching() {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
switchNetwork({ networkName, networkChainId, }) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
const network = findEvmNetwork({
|
|
119
|
+
chainId: networkChainId,
|
|
120
|
+
name: networkName,
|
|
121
|
+
networks: this.evmNetworks,
|
|
122
|
+
});
|
|
123
|
+
if (!network) {
|
|
124
|
+
throw new DynamicError(`Could not find network mapping for chain ${networkName ? networkName : networkChainId}`);
|
|
125
|
+
}
|
|
126
|
+
if (!this.supportsNetworkSwitching()) {
|
|
127
|
+
throw new DynamicError('Network switching is not supported');
|
|
128
|
+
}
|
|
129
|
+
const provider = this.getWalletClient();
|
|
130
|
+
if (!provider) {
|
|
131
|
+
throw new DynamicError('Provider not found');
|
|
132
|
+
}
|
|
133
|
+
return this.providerSwitchNetwork({ network, provider });
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
getConnectedAccounts() {
|
|
137
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
+
const provider = this.getWalletClient();
|
|
139
|
+
if (!provider)
|
|
140
|
+
return [];
|
|
141
|
+
return retryableFn(provider.getAddresses, {
|
|
142
|
+
fallbackValue: [],
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
providerSwitchNetwork({ network, provider, }) {
|
|
147
|
+
var _a, _b, _c;
|
|
148
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
const { chainId } = network;
|
|
150
|
+
const currentNetworkId = yield this.getNetwork();
|
|
151
|
+
if (currentNetworkId && currentNetworkId === chainId) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
if (!this.supportsNetworkSwitching()) {
|
|
156
|
+
throw new DynamicError('Network switching is not supported');
|
|
157
|
+
}
|
|
158
|
+
return yield provider.switchChain(getOrMapViemChain(network));
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
|
|
162
|
+
(typeof error === 'string' && error.includes('rejected'))) {
|
|
163
|
+
throw new DynamicError("User rejected the wallet's request to switch network");
|
|
164
|
+
}
|
|
165
|
+
else if (error.code === 4902 ||
|
|
166
|
+
error.message.includes('Unrecognized chain') ||
|
|
167
|
+
// https://github.com/MetaMask/metamask-mobile/issues/3312#issuecomment-1065923294
|
|
168
|
+
((_c = (_b = error === null || error === void 0 ? void 0 : error.data) === null || _b === void 0 ? void 0 : _b.orginalError) === null || _c === void 0 ? void 0 : _c.code) === 4902) {
|
|
169
|
+
// error code indicates the chain has not been added yet
|
|
170
|
+
// https://docs.metamask.io/guide/rpc-api.html#usage-with-wallet-switchethereumchain
|
|
171
|
+
return this.providerAddNetwork({ network, provider });
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
providerAddNetwork({ network, provider, }) {
|
|
180
|
+
var _a;
|
|
181
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
182
|
+
try {
|
|
183
|
+
return yield provider.addChain({ chain: getOrMapViemChain(network) });
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
if (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
|
|
187
|
+
(typeof error === 'string' && error.includes('rejected'))) {
|
|
188
|
+
throw new DynamicError("User rejected the wallet's request to add network");
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
200
196
|
}
|
|
201
197
|
|
|
202
198
|
export { EthWalletConnector };
|
package/src/constants.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const INFURA_ID: "87939db78f824920ada5c872db3e56b8";
|
|
1
|
+
export declare const INFURA_ID: "87939db78f824920ada5c872db3e56b8";
|