@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.
Files changed (56) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/_virtual/_tslib.cjs +1 -0
  3. package/_virtual/_tslib.js +1 -0
  4. package/package.json +10 -9
  5. package/src/EthWalletConnector.cjs +16 -26
  6. package/src/EthWalletConnector.d.ts +2785 -5
  7. package/src/EthWalletConnector.js +16 -26
  8. package/src/coinbase/coinbase.cjs +39 -72
  9. package/src/coinbase/coinbase.d.ts +2806 -291
  10. package/src/coinbase/coinbase.js +40 -73
  11. package/src/coinbase/helpers.cjs +29 -0
  12. package/src/coinbase/helpers.d.ts +3 -0
  13. package/src/coinbase/helpers.js +25 -0
  14. package/src/coinbase/types.d.ts +19 -0
  15. package/src/constants.cjs +1 -0
  16. package/src/constants.js +1 -0
  17. package/src/eip6963Provider.cjs +1 -0
  18. package/src/eip6963Provider.js +1 -0
  19. package/src/ethProviderHelper.cjs +1 -0
  20. package/src/ethProviderHelper.js +1 -0
  21. package/src/index.cjs +3 -0
  22. package/src/index.js +2 -0
  23. package/src/injected/ExodusEvm.cjs +1 -0
  24. package/src/injected/ExodusEvm.js +1 -0
  25. package/src/injected/InjectedWalletBase.cjs +5 -4
  26. package/src/injected/InjectedWalletBase.js +5 -4
  27. package/src/injected/PhantomEvm.cjs +1 -0
  28. package/src/injected/PhantomEvm.js +1 -0
  29. package/src/injected/Zerion.cjs +1 -0
  30. package/src/injected/Zerion.js +1 -0
  31. package/src/injected/fetchInjectedWalletConnectors.cjs +2 -1
  32. package/src/injected/fetchInjectedWalletConnectors.js +2 -1
  33. package/src/polyfills.cjs +1 -0
  34. package/src/polyfills.js +1 -0
  35. package/src/types.d.ts +1 -0
  36. package/src/utils/findEvmNetwork.cjs +1 -0
  37. package/src/utils/findEvmNetwork.d.ts +2 -2
  38. package/src/utils/findEvmNetwork.js +1 -0
  39. package/src/utils/getNameservice.cjs +46 -0
  40. package/src/utils/getNameservice.d.ts +6 -0
  41. package/src/utils/getNameservice.js +42 -0
  42. package/src/utils/index.d.ts +1 -0
  43. package/src/utils/isEthWalletConnector/isEthWalletConnector.cjs +1 -0
  44. package/src/utils/isEthWalletConnector/isEthWalletConnector.js +1 -0
  45. package/src/utils/parseIntSafe.cjs +1 -0
  46. package/src/utils/parseIntSafe.js +1 -0
  47. package/src/walletConnect/fetchWalletConnectWallets.cjs +1 -0
  48. package/src/walletConnect/fetchWalletConnectWallets.js +1 -0
  49. package/src/walletConnect/walletConnect.cjs +6 -5
  50. package/src/walletConnect/walletConnect.d.ts +6883 -17
  51. package/src/walletConnect/walletConnect.js +6 -5
  52. package/src/coinbase/client/client.cjs +0 -72
  53. package/src/coinbase/client/client.d.ts +0 -7
  54. package/src/coinbase/client/client.js +0 -65
  55. package/src/coinbase/client/index.d.ts +0 -2
  56. 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
- const ensName = yield rpcProvider.getEnsName({
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({ networkName, networkChainId, }) {
106
- return __awaiter(this, void 0, void 0, function* () {
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({ network, provider, }) {
141
- var _a, _b, _c, _d;
142
- return __awaiter(this, void 0, void 0, function* () {
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
- ((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('Unrecognized chain')) ||
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
- ((_c = (_b = error.data) === null || _b === void 0 ? void 0 : _b.orginalError) === null || _c === void 0 ? void 0 : _c.code) === 4902) {
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 (((_d = error.message) === null || _d === void 0 ? void 0 : _d.includes('rejected')) ||
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({ network, provider, }) {
175
- var _a;
176
- return __awaiter(this, void 0, void 0, function* () {
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 (((_a = error.message) === null || _a === void 0 ? void 0 : _a.includes('rejected')) ||
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 client = require('./client/client.cjs');
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 = true;
22
- this.coinbaseProviderOpts = {
23
- appLogoUrl: appLogoUrl,
24
- appName: appName,
25
- evmNetworks: evmNetworks,
26
- };
27
- const wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
28
- if (!wallet)
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
- isInstalledOnBrowser() {
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
- if (this.isInstalledOnBrowser()) {
66
- return (_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.getAddress();
67
- }
68
- return client.getAddress(this.coinbaseProviderOpts, opts);
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
- if (this.isInstalledOnBrowser()) {
75
- return (_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.signMessage(messageToSign);
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
- setupCoinbaseProviderEventListeners() {
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
- provider.on('accountsChanged', handleAccountChange);
96
- provider.on('chainChanged', handleChainChange);
97
- provider.on('disconnect', handleDisconnect);
56
+ this.coinbaseProvider.on('accountsChanged', handleAccountChange);
57
+ this.coinbaseProvider.on('chainChanged', handleChainChange);
58
+ this.coinbaseProvider.on('disconnect', handleDisconnect);
98
59
  this.teardownEventListeners = () => {
99
- provider.removeListener('accountsChanged', handleAccountChange);
100
- provider.removeListener('chainChanged', handleChainChange);
101
- provider.removeListener('disconnect', handleDisconnect);
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;