@dynamic-labs/ethereum 2.1.0-alpha.0 → 2.1.0-alpha.10
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 +100 -0
- package/_virtual/_tslib.cjs +1 -0
- package/_virtual/_tslib.js +1 -0
- package/package.json +10 -9
- package/src/EthWalletConnector.cjs +16 -26
- package/src/EthWalletConnector.d.ts +2785 -5
- package/src/EthWalletConnector.js +16 -26
- package/src/coinbase/coinbase.cjs +39 -72
- package/src/coinbase/coinbase.d.ts +2806 -291
- package/src/coinbase/coinbase.js +40 -73
- package/src/coinbase/helpers.cjs +29 -0
- package/src/coinbase/helpers.d.ts +3 -0
- package/src/coinbase/helpers.js +25 -0
- package/src/coinbase/types.d.ts +19 -0
- package/src/constants.cjs +1 -0
- package/src/constants.js +1 -0
- package/src/eip6963Provider.cjs +1 -0
- package/src/eip6963Provider.js +1 -0
- package/src/ethProviderHelper.cjs +1 -0
- package/src/ethProviderHelper.js +1 -0
- package/src/index.cjs +3 -0
- package/src/index.js +2 -0
- package/src/injected/ExodusEvm.cjs +1 -0
- package/src/injected/ExodusEvm.js +1 -0
- package/src/injected/InjectedWalletBase.cjs +5 -4
- package/src/injected/InjectedWalletBase.js +5 -4
- package/src/injected/PhantomEvm.cjs +1 -0
- package/src/injected/PhantomEvm.js +1 -0
- package/src/injected/Zerion.cjs +1 -0
- package/src/injected/Zerion.js +1 -0
- package/src/injected/fetchInjectedWalletConnectors.cjs +2 -1
- package/src/injected/fetchInjectedWalletConnectors.js +2 -1
- package/src/polyfills.cjs +1 -0
- package/src/polyfills.js +1 -0
- package/src/types.d.ts +1 -0
- package/src/utils/findEvmNetwork.cjs +1 -0
- package/src/utils/findEvmNetwork.d.ts +2 -2
- package/src/utils/findEvmNetwork.js +1 -0
- package/src/utils/getNameservice.cjs +46 -0
- package/src/utils/getNameservice.d.ts +6 -0
- package/src/utils/getNameservice.js +42 -0
- package/src/utils/index.d.ts +1 -0
- package/src/utils/isEthWalletConnector/isEthWalletConnector.cjs +1 -0
- package/src/utils/isEthWalletConnector/isEthWalletConnector.js +1 -0
- package/src/utils/parseIntSafe.cjs +1 -0
- package/src/utils/parseIntSafe.js +1 -0
- package/src/walletConnect/fetchWalletConnectWallets.cjs +1 -0
- package/src/walletConnect/fetchWalletConnectWallets.js +1 -0
- package/src/walletConnect/walletConnect.cjs +6 -5
- package/src/walletConnect/walletConnect.d.ts +6883 -17
- package/src/walletConnect/walletConnect.js +6 -5
- package/src/coinbase/client/client.cjs +0 -72
- package/src/coinbase/client/client.d.ts +0 -7
- package/src/coinbase/client/client.js +0 -65
- package/src/coinbase/client/index.d.ts +0 -2
- package/src/coinbase/client/types.d.ts +0 -17
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
import { __awaiter } from '../_virtual/_tslib.js';
|
|
2
3
|
import { formatEther } from 'viem';
|
|
3
4
|
import { toAccount } from 'viem/accounts';
|
|
4
5
|
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
5
6
|
import { parseEvmNetworks, retryableFn, FALLBACK_UNDEFINED, DynamicError, getOrMapViemChain } from '@dynamic-labs/utils';
|
|
6
7
|
import { findEvmNetwork } from './utils/findEvmNetwork.js';
|
|
8
|
+
import { getNameservice } from './utils/getNameservice.js';
|
|
7
9
|
|
|
8
10
|
class EthWalletConnector extends WalletConnectorBase {
|
|
9
11
|
getPublicClient() {
|
|
10
|
-
var _a, _b, _c;
|
|
11
12
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13
|
+
var _a, _b, _c;
|
|
12
14
|
const networkId = (_a = (yield this.getNetwork())) !== null && _a !== void 0 ? _a : 1;
|
|
13
15
|
if (this.evmNetworks.length === 0) {
|
|
14
16
|
return undefined;
|
|
@@ -63,19 +65,7 @@ class EthWalletConnector extends WalletConnectorBase {
|
|
|
63
65
|
if (!address || !rpcProvider) {
|
|
64
66
|
return;
|
|
65
67
|
}
|
|
66
|
-
|
|
67
|
-
address: address,
|
|
68
|
-
});
|
|
69
|
-
const ensAvatar = ensName
|
|
70
|
-
? yield rpcProvider.getEnsAvatar({
|
|
71
|
-
name: ensName,
|
|
72
|
-
})
|
|
73
|
-
: undefined;
|
|
74
|
-
const ensData = {
|
|
75
|
-
avatar: ensAvatar !== null && ensAvatar !== void 0 ? ensAvatar : undefined,
|
|
76
|
-
name: ensName !== null && ensName !== void 0 ? ensName : undefined,
|
|
77
|
-
};
|
|
78
|
-
return ensData;
|
|
68
|
+
return getNameservice({ address, rpcProvider });
|
|
79
69
|
});
|
|
80
70
|
}
|
|
81
71
|
getSigner() {
|
|
@@ -102,8 +92,8 @@ class EthWalletConnector extends WalletConnectorBase {
|
|
|
102
92
|
supportsNetworkSwitching() {
|
|
103
93
|
return true;
|
|
104
94
|
}
|
|
105
|
-
switchNetwork(
|
|
106
|
-
return __awaiter(this,
|
|
95
|
+
switchNetwork(_a) {
|
|
96
|
+
return __awaiter(this, arguments, void 0, function* ({ networkName, networkChainId, }) {
|
|
107
97
|
const network = findEvmNetwork({
|
|
108
98
|
chainId: networkChainId,
|
|
109
99
|
name: networkName,
|
|
@@ -137,9 +127,9 @@ class EthWalletConnector extends WalletConnectorBase {
|
|
|
137
127
|
return addresses;
|
|
138
128
|
});
|
|
139
129
|
}
|
|
140
|
-
providerSwitchNetwork(
|
|
141
|
-
|
|
142
|
-
|
|
130
|
+
providerSwitchNetwork(_a) {
|
|
131
|
+
return __awaiter(this, arguments, void 0, function* ({ network, provider, }) {
|
|
132
|
+
var _b, _c, _d, _e;
|
|
143
133
|
const { chainId } = network;
|
|
144
134
|
const currentNetworkId = yield this.getNetwork();
|
|
145
135
|
if (currentNetworkId && currentNetworkId === chainId) {
|
|
@@ -154,14 +144,14 @@ class EthWalletConnector extends WalletConnectorBase {
|
|
|
154
144
|
catch (error) {
|
|
155
145
|
// we need to check for unrecognized chain error first because it also contains 'rejected' in message
|
|
156
146
|
if (error.code === 4902 ||
|
|
157
|
-
((
|
|
147
|
+
((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('Unrecognized chain')) ||
|
|
158
148
|
// https://github.com/MetaMask/metamask-mobile/issues/3312#issuecomment-1065923294
|
|
159
|
-
((
|
|
149
|
+
((_d = (_c = error.data) === null || _c === void 0 ? void 0 : _c.orginalError) === null || _d === void 0 ? void 0 : _d.code) === 4902) {
|
|
160
150
|
// error code indicates the chain has not been added yet
|
|
161
151
|
// https://docs.metamask.io/guide/rpc-api.html#usage-with-wallet-switchethereumchain
|
|
162
152
|
return this.providerAddNetwork({ network, provider });
|
|
163
153
|
}
|
|
164
|
-
else if (((
|
|
154
|
+
else if (((_e = error.message) === null || _e === void 0 ? void 0 : _e.includes('rejected')) ||
|
|
165
155
|
(typeof error === 'string' && error.includes('rejected'))) {
|
|
166
156
|
throw new DynamicError("User rejected the wallet's request to switch network");
|
|
167
157
|
}
|
|
@@ -171,14 +161,14 @@ class EthWalletConnector extends WalletConnectorBase {
|
|
|
171
161
|
}
|
|
172
162
|
});
|
|
173
163
|
}
|
|
174
|
-
providerAddNetwork(
|
|
175
|
-
|
|
176
|
-
|
|
164
|
+
providerAddNetwork(_a) {
|
|
165
|
+
return __awaiter(this, arguments, void 0, function* ({ network, provider, }) {
|
|
166
|
+
var _b;
|
|
177
167
|
try {
|
|
178
168
|
return yield provider.addChain({ chain: getOrMapViemChain(network) });
|
|
179
169
|
}
|
|
180
170
|
catch (error) {
|
|
181
|
-
if (((
|
|
171
|
+
if (((_b = error.message) === null || _b === void 0 ? void 0 : _b.includes('rejected')) ||
|
|
182
172
|
(typeof error === 'string' && error.includes('rejected'))) {
|
|
183
173
|
throw new DynamicError("User rejected the wallet's request to add network");
|
|
184
174
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
'use strict';
|
|
2
3
|
|
|
3
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
5
|
|
|
5
6
|
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
6
7
|
var viem = require('viem');
|
|
7
|
-
var walletBook = require('@dynamic-labs/wallet-book');
|
|
8
8
|
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
9
|
-
var ethProviderHelper = require('../ethProviderHelper.cjs');
|
|
10
9
|
var EthWalletConnector = require('../EthWalletConnector.cjs');
|
|
11
|
-
var
|
|
10
|
+
var helpers = require('./helpers.cjs');
|
|
12
11
|
|
|
13
12
|
class Coinbase extends EthWalletConnector.EthWalletConnector {
|
|
14
13
|
constructor(_a) {
|
|
@@ -18,89 +17,57 @@ class Coinbase extends EthWalletConnector.EthWalletConnector {
|
|
|
18
17
|
this.overrideKey = 'coinbase';
|
|
19
18
|
this.supportedChains = ['EVM', 'ETH'];
|
|
20
19
|
this.connectedChain = 'EVM';
|
|
21
|
-
this.canConnectViaQrCode =
|
|
22
|
-
this.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
return;
|
|
30
|
-
this.ethProviderHelper = new ethProviderHelper.EthProviderHelper(wallet, this);
|
|
31
|
-
}
|
|
32
|
-
setupEventListeners() {
|
|
33
|
-
var _a, _b, _c;
|
|
34
|
-
if (!this.isInstalledOnBrowser()) {
|
|
35
|
-
this.setupCoinbaseProviderEventListeners();
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const provider = (_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.findProvider();
|
|
39
|
-
if (!provider) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
const setupResponse = (_c = (_b = this.ethProviderHelper) === null || _b === void 0 ? void 0 : _b._setupEventListeners) === null || _c === void 0 ? void 0 : _c.call(_b, this);
|
|
43
|
-
if (!(setupResponse === null || setupResponse === void 0 ? void 0 : setupResponse.tearDownEventListeners))
|
|
44
|
-
return;
|
|
45
|
-
this.teardownEventListeners = setupResponse.tearDownEventListeners;
|
|
46
|
-
}
|
|
47
|
-
getWalletClient(chainId) {
|
|
48
|
-
var _a;
|
|
49
|
-
if (this.isInstalledOnBrowser()) {
|
|
50
|
-
return (_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.findWalletClient(chainId);
|
|
51
|
-
}
|
|
52
|
-
return viem.createWalletClient({
|
|
53
|
-
transport: viem.custom(client.getCoinbaseClient({
|
|
54
|
-
opts: this.coinbaseProviderOpts,
|
|
55
|
-
}).provider),
|
|
20
|
+
this.canConnectViaQrCode = false;
|
|
21
|
+
this.canConnectViaCustodialService = true;
|
|
22
|
+
this.coinbaseProvider = helpers.getCoinbaseProvider({
|
|
23
|
+
opts: {
|
|
24
|
+
appLogoUrl: appLogoUrl,
|
|
25
|
+
appName: appName,
|
|
26
|
+
evmNetworks: evmNetworks,
|
|
27
|
+
},
|
|
56
28
|
});
|
|
57
29
|
}
|
|
58
|
-
|
|
59
|
-
var _a;
|
|
60
|
-
return ((_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.findProvider()) !== undefined;
|
|
61
|
-
}
|
|
62
|
-
getAddress(opts) {
|
|
63
|
-
var _a;
|
|
30
|
+
getAddress() {
|
|
64
31
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
return
|
|
32
|
+
const [address] = yield this.coinbaseProvider.request({
|
|
33
|
+
method: 'eth_requestAccounts',
|
|
34
|
+
});
|
|
35
|
+
return address;
|
|
69
36
|
});
|
|
70
37
|
}
|
|
71
38
|
signMessage(messageToSign) {
|
|
72
|
-
var _a;
|
|
73
39
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
74
|
-
|
|
75
|
-
|
|
40
|
+
const [address] = yield this.coinbaseProvider.request({
|
|
41
|
+
method: 'eth_requestAccounts',
|
|
42
|
+
});
|
|
43
|
+
try {
|
|
44
|
+
return yield this.coinbaseProvider.request({
|
|
45
|
+
method: 'personal_sign',
|
|
46
|
+
params: [viem.toHex(viem.toBytes(messageToSign)), address.toLowerCase()],
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
return undefined;
|
|
76
51
|
}
|
|
77
|
-
return client.signMessage(this.coinbaseProviderOpts, messageToSign);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
endSession() {
|
|
81
|
-
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
82
|
-
if (this.isInstalledOnBrowser())
|
|
83
|
-
return;
|
|
84
|
-
client.killCoinbaseSession();
|
|
85
52
|
});
|
|
86
53
|
}
|
|
87
|
-
|
|
88
|
-
const { provider } = client.getCoinbaseClient({
|
|
89
|
-
opts: this.coinbaseProviderOpts,
|
|
90
|
-
});
|
|
91
|
-
if (!provider) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
54
|
+
setupEventListeners() {
|
|
94
55
|
const { handleAccountChange, handleChainChange, handleDisconnect } = walletConnectorCore.eventListenerHandlers(this);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
56
|
+
this.coinbaseProvider.on('accountsChanged', handleAccountChange);
|
|
57
|
+
this.coinbaseProvider.on('chainChanged', handleChainChange);
|
|
58
|
+
this.coinbaseProvider.on('disconnect', handleDisconnect);
|
|
98
59
|
this.teardownEventListeners = () => {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
60
|
+
this.coinbaseProvider.removeListener('accountsChanged', handleAccountChange);
|
|
61
|
+
this.coinbaseProvider.removeListener('chainChanged', handleChainChange);
|
|
62
|
+
this.coinbaseProvider.removeListener('disconnect', handleDisconnect);
|
|
102
63
|
};
|
|
103
64
|
}
|
|
65
|
+
getWalletClient() {
|
|
66
|
+
return viem.createWalletClient({
|
|
67
|
+
// add account and chain
|
|
68
|
+
transport: viem.custom(this.coinbaseProvider),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
104
71
|
}
|
|
105
72
|
|
|
106
73
|
exports.Coinbase = Coinbase;
|