@wagmi/core 0.4.0-test.2 → 0.4.2

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 (83) hide show
  1. package/chains/dist/wagmi-core-chains.cjs.dev.js +2 -2
  2. package/chains/dist/wagmi-core-chains.cjs.prod.js +2 -2
  3. package/chains/dist/wagmi-core-chains.esm.js +2 -2
  4. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +9 -7
  5. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +9 -7
  6. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +9 -7
  7. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +7 -5
  8. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +7 -5
  9. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +7 -5
  10. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +12 -8
  11. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +12 -8
  12. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +7 -7
  13. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +19 -18
  14. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +19 -18
  15. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +19 -18
  16. package/dist/base-2d484f6c.cjs.prod.js +329 -0
  17. package/dist/base-e66f9622.esm.js +303 -0
  18. package/dist/base-e71ae4b2.cjs.dev.js +329 -0
  19. package/dist/{chains-7e369752.cjs.dev.js → chains-865492ea.cjs.prod.js} +79 -16
  20. package/dist/{chains-fa406563.esm.js → chains-c389721d.esm.js} +79 -16
  21. package/dist/{chains-d045862c.cjs.prod.js → chains-d970ee8d.cjs.dev.js} +79 -16
  22. package/dist/{client-42cf11b7.cjs.dev.js → client-1feb9121.cjs.prod.js} +29 -46
  23. package/dist/{client-ed3aaa6a.cjs.prod.js → client-53f2119c.cjs.dev.js} +29 -46
  24. package/dist/{client-60ee0298.esm.js → client-ffba0e25.esm.js} +29 -46
  25. package/dist/declarations/src/actions/accounts/getAccount.d.ts +31 -2
  26. package/dist/declarations/src/actions/accounts/getNetwork.d.ts +1 -2
  27. package/dist/declarations/src/actions/accounts/signTypedData.d.ts +17 -15
  28. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +9 -1
  29. package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +8 -1
  30. package/dist/declarations/src/actions/contracts/index.d.ts +5 -3
  31. package/dist/declarations/src/actions/contracts/multicall.d.ts +21 -0
  32. package/dist/declarations/src/actions/contracts/readContract.d.ts +7 -4
  33. package/dist/declarations/src/actions/contracts/readContracts.d.ts +19 -0
  34. package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +3 -3
  35. package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +2 -3
  36. package/dist/declarations/src/actions/contracts/watchReadContracts.d.ts +6 -0
  37. package/dist/declarations/src/actions/contracts/writeContract.d.ts +10 -4
  38. package/dist/declarations/src/actions/index.d.ts +1 -1
  39. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +6 -1
  40. package/dist/declarations/src/client.d.ts +6 -11
  41. package/dist/declarations/src/connectors/base.d.ts +4 -3
  42. package/dist/declarations/src/connectors/mock/connector.d.ts +2 -9
  43. package/dist/declarations/src/connectors/mock/provider.d.ts +2 -1
  44. package/dist/declarations/src/connectors/walletConnect.d.ts +5 -4
  45. package/dist/declarations/src/constants/index.d.ts +2 -1
  46. package/dist/declarations/src/constants/multicall.d.ts +25 -0
  47. package/dist/declarations/src/constants/rpcs.d.ts +3 -1
  48. package/dist/declarations/src/errors.d.ts +27 -5
  49. package/dist/declarations/src/index.d.ts +5 -5
  50. package/dist/declarations/src/providers/alchemy.d.ts +2 -2
  51. package/dist/declarations/src/providers/infura.d.ts +2 -2
  52. package/dist/declarations/src/providers/jsonRpc.d.ts +2 -2
  53. package/dist/declarations/src/providers/public.d.ts +2 -2
  54. package/dist/declarations/src/types/index.d.ts +17 -5
  55. package/dist/declarations/src/utils/configureChains.d.ts +10 -4
  56. package/dist/declarations/src/utils/normalizeChainId.d.ts +1 -1
  57. package/dist/{rpcs-9c4eb960.cjs.dev.js → rpcs-1fd0a12f.cjs.prod.js} +14 -0
  58. package/dist/{rpcs-7cfbd91c.esm.js → rpcs-b73a8f60.esm.js} +14 -1
  59. package/dist/{rpcs-b3c52116.cjs.prod.js → rpcs-f1d24f0e.cjs.dev.js} +14 -0
  60. package/dist/wagmi-core.cjs.dev.js +611 -234
  61. package/dist/wagmi-core.cjs.prod.js +611 -234
  62. package/dist/wagmi-core.esm.js +608 -242
  63. package/package.json +15 -3
  64. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.dev.js +1 -1
  65. package/providers/alchemy/dist/wagmi-core-providers-alchemy.cjs.prod.js +1 -1
  66. package/providers/alchemy/dist/wagmi-core-providers-alchemy.esm.js +1 -1
  67. package/providers/infura/dist/wagmi-core-providers-infura.cjs.dev.js +1 -1
  68. package/providers/infura/dist/wagmi-core-providers-infura.cjs.prod.js +1 -1
  69. package/providers/infura/dist/wagmi-core-providers-infura.esm.js +1 -1
  70. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.dev.js +3 -1
  71. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.cjs.prod.js +3 -1
  72. package/providers/jsonRpc/dist/wagmi-core-providers-jsonRpc.esm.js +3 -1
  73. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.d.ts +0 -1
  74. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.dev.js +0 -200
  75. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.js +0 -7
  76. package/connectors/injected/dist/wagmi-core-connectors-injected.cjs.prod.js +0 -200
  77. package/connectors/injected/dist/wagmi-core-connectors-injected.esm.js +0 -196
  78. package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.d.ts +0 -11
  79. package/connectors/walletLink/dist/wagmi-core-connectors-walletLink.cjs.js +0 -16
  80. package/dist/base-7f682723.cjs.prod.js +0 -623
  81. package/dist/base-ae774f26.cjs.dev.js +0 -623
  82. package/dist/base-c546f171.esm.js +0 -603
  83. package/dist/declarations/src/utils/eventemitter.d.ts +0 -135
package/package.json CHANGED
@@ -2,13 +2,24 @@
2
2
  "name": "@wagmi/core",
3
3
  "description": "Vanilla JS library for Ethereum",
4
4
  "license": "WAGMIT",
5
- "version": "0.4.0-test.2",
5
+ "version": "0.4.2",
6
6
  "repository": "tmm/wagmi",
7
7
  "author": "awkweb.eth",
8
8
  "ethereum": "awkweb.eth",
9
+ "funding": [
10
+ {
11
+ "type": "gitcoin",
12
+ "url": "https://gitcoin.co/grants/4493/wagmi-react-hooks-library-for-ethereum"
13
+ },
14
+ {
15
+ "type": "github",
16
+ "url": "https://github.com/sponsors/tmm"
17
+ }
18
+ ],
9
19
  "sideEffects": false,
10
20
  "main": "dist/wagmi-core.cjs.js",
11
21
  "module": "dist/wagmi-core.esm.js",
22
+ "types": "dist/wagmi-core.cjs.d.ts",
12
23
  "exports": {
13
24
  "./package.json": "./package.json",
14
25
  ".": {
@@ -73,7 +84,7 @@
73
84
  ]
74
85
  },
75
86
  "peerDependencies": {
76
- "@coinbase/wallet-sdk": ">=3.2.0",
87
+ "@coinbase/wallet-sdk": ">=3.3.0",
77
88
  "@walletconnect/ethereum-provider": ">=1.7.5",
78
89
  "ethers": ">=5.5.1"
79
90
  },
@@ -86,10 +97,11 @@
86
97
  }
87
98
  },
88
99
  "dependencies": {
100
+ "eventemitter3": "^4.0.7",
89
101
  "zustand": "^4.0.0-rc.1"
90
102
  },
91
103
  "devDependencies": {
92
- "@coinbase/wallet-sdk": "^3.2.0",
104
+ "@coinbase/wallet-sdk": "^3.3.0",
93
105
  "@walletconnect/ethereum-provider": "^1.7.8",
94
106
  "ethers": "^5.6.5"
95
107
  },
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var ethers = require('ethers');
6
- var rpcs = require('../../../dist/rpcs-9c4eb960.cjs.dev.js');
6
+ var rpcs = require('../../../dist/rpcs-f1d24f0e.cjs.dev.js');
7
7
 
8
8
  function alchemyProvider() {
9
9
  let {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var ethers = require('ethers');
6
- var rpcs = require('../../../dist/rpcs-b3c52116.cjs.prod.js');
6
+ var rpcs = require('../../../dist/rpcs-1fd0a12f.cjs.prod.js');
7
7
 
8
8
  function alchemyProvider() {
9
9
  let {
@@ -1,5 +1,5 @@
1
1
  import { providers } from 'ethers';
2
- import { d as defaultAlchemyId } from '../../../dist/rpcs-7cfbd91c.esm.js';
2
+ import { d as defaultAlchemyId } from '../../../dist/rpcs-b73a8f60.esm.js';
3
3
 
4
4
  function alchemyProvider() {
5
5
  let {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var ethers = require('ethers');
6
- var rpcs = require('../../../dist/rpcs-9c4eb960.cjs.dev.js');
6
+ var rpcs = require('../../../dist/rpcs-f1d24f0e.cjs.dev.js');
7
7
 
8
8
  function infuraProvider() {
9
9
  let {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var ethers = require('ethers');
6
- var rpcs = require('../../../dist/rpcs-b3c52116.cjs.prod.js');
6
+ var rpcs = require('../../../dist/rpcs-1fd0a12f.cjs.prod.js');
7
7
 
8
8
  function infuraProvider() {
9
9
  let {
@@ -1,5 +1,5 @@
1
1
  import { providers } from 'ethers';
2
- import { b as defaultInfuraId } from '../../../dist/rpcs-7cfbd91c.esm.js';
2
+ import { b as defaultInfuraId } from '../../../dist/rpcs-b73a8f60.esm.js';
3
3
 
4
4
  function infuraProvider() {
5
5
  let {
@@ -23,9 +23,11 @@ function jsonRpcProvider(_ref) {
23
23
  }
24
24
  },
25
25
  provider: () => {
26
+ var _chain$ens;
27
+
26
28
  const RpcProvider = static_ ? ethers.providers.StaticJsonRpcProvider : ethers.providers.JsonRpcProvider;
27
29
  const provider = new RpcProvider(rpcConfig.http, {
28
- ensAddress: chain.ensAddress,
30
+ ensAddress: (_chain$ens = chain.ens) === null || _chain$ens === void 0 ? void 0 : _chain$ens.address,
29
31
  chainId: chain.id,
30
32
  name: chain.network
31
33
  });
@@ -23,9 +23,11 @@ function jsonRpcProvider(_ref) {
23
23
  }
24
24
  },
25
25
  provider: () => {
26
+ var _chain$ens;
27
+
26
28
  const RpcProvider = static_ ? ethers.providers.StaticJsonRpcProvider : ethers.providers.JsonRpcProvider;
27
29
  const provider = new RpcProvider(rpcConfig.http, {
28
- ensAddress: chain.ensAddress,
30
+ ensAddress: (_chain$ens = chain.ens) === null || _chain$ens === void 0 ? void 0 : _chain$ens.address,
29
31
  chainId: chain.id,
30
32
  name: chain.network
31
33
  });
@@ -19,9 +19,11 @@ function jsonRpcProvider(_ref) {
19
19
  }
20
20
  },
21
21
  provider: () => {
22
+ var _chain$ens;
23
+
22
24
  const RpcProvider = static_ ? providers.StaticJsonRpcProvider : providers.JsonRpcProvider;
23
25
  const provider = new RpcProvider(rpcConfig.http, {
24
- ensAddress: chain.ensAddress,
26
+ ensAddress: (_chain$ens = chain.ens) === null || _chain$ens === void 0 ? void 0 : _chain$ens.address,
25
27
  chainId: chain.id,
26
28
  name: chain.network
27
29
  });
@@ -1 +0,0 @@
1
- export * from "../../../dist/declarations/src/connectors/injected";
@@ -1,200 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var providers = require('@ethersproject/providers');
6
- var base = require('../../../dist/base-0167f1e7.cjs.dev.js');
7
- var utils = require('ethers/lib/utils');
8
- require('eventemitter3');
9
-
10
- const getInjectedName = ethereum => {
11
- if (!ethereum) return 'Injected';
12
- if (ethereum.isMetaMask) return 'MetaMask';
13
- if (ethereum.isCoinbaseWallet) return 'Coinbase Wallet';
14
- if (ethereum.isFrame) return 'Frame';
15
- if (ethereum.isTally) return 'Tally';
16
- return 'Injected';
17
- };
18
-
19
- const shimKey = 'wagmi.shimDisconnect';
20
- class InjectedConnector extends base.Connector {
21
- id = 'injected';
22
- ready = typeof window != 'undefined' && !!window.ethereum;
23
- #provider;
24
-
25
- constructor(config) {
26
- // TODO(note): Should shimDisconnect be default truthy??
27
- super({ ...config,
28
- options: config?.options
29
- });
30
- let name = 'Injected';
31
- if (typeof window !== 'undefined') name = getInjectedName(window.ethereum);
32
- this.name = name;
33
- }
34
-
35
- async connect() {
36
- try {
37
- const provider = this.getProvider();
38
- if (!provider) throw new base.ConnectorNotFoundError();
39
-
40
- if (provider.on) {
41
- provider.on('accountsChanged', this.onAccountsChanged);
42
- provider.on('chainChanged', this.onChainChanged);
43
- provider.on('disconnect', this.onDisconnect);
44
- }
45
-
46
- const account = await this.getAccount();
47
- const id = await this.getChainId();
48
- const unsupported = this.isChainUnsupported(id);
49
- if (this.options?.shimDisconnect) typeof localStorage !== 'undefined' && localStorage.setItem(shimKey, 'true');
50
- return {
51
- account,
52
- chain: {
53
- id,
54
- unsupported
55
- },
56
- provider
57
- };
58
- } catch (error) {
59
- if (error.code === 4001) throw new base.UserRejectedRequestError();
60
- throw error;
61
- }
62
- }
63
-
64
- async disconnect() {
65
- const provider = this.getProvider();
66
- if (!provider?.removeListener) return;
67
- provider.removeListener('accountsChanged', this.onAccountsChanged);
68
- provider.removeListener('chainChanged', this.onChainChanged);
69
- provider.removeListener('disconnect', this.onDisconnect);
70
- if (this.options?.shimDisconnect) typeof localStorage !== 'undefined' && localStorage.removeItem(shimKey);
71
- }
72
-
73
- async getAccount() {
74
- const provider = this.getProvider();
75
- if (!provider) throw new base.ConnectorNotFoundError();
76
- const accounts = await provider.request({
77
- method: 'eth_requestAccounts'
78
- }); // return checksum address
79
-
80
- return utils.getAddress(accounts[0]);
81
- }
82
-
83
- async getChainId() {
84
- const provider = this.getProvider();
85
- if (!provider) throw new base.ConnectorNotFoundError();
86
- return await provider.request({
87
- method: 'eth_chainId'
88
- }).then(base.normalizeChainId);
89
- }
90
-
91
- getProvider() {
92
- if (typeof window !== 'undefined' && !!window.ethereum) this.#provider = window.ethereum;
93
- return this.#provider;
94
- }
95
-
96
- async getSigner() {
97
- const provider = this.getProvider();
98
- const account = await this.getAccount();
99
- return new providers.Web3Provider(provider).getSigner(account);
100
- }
101
-
102
- async isAuthorized() {
103
- try {
104
- if (this.options?.shimDisconnect && typeof localStorage !== 'undefined' && !localStorage.getItem(shimKey)) return false;
105
- const provider = this.getProvider();
106
- if (!provider) throw new base.ConnectorNotFoundError();
107
- const accounts = await provider.request({
108
- method: 'eth_accounts'
109
- });
110
- const account = accounts[0];
111
- return !!account;
112
- } catch {
113
- return false;
114
- }
115
- }
116
-
117
- async switchChain(chainId) {
118
- const provider = this.getProvider();
119
- if (!provider) throw new base.ConnectorNotFoundError();
120
- const id = utils.hexValue(chainId);
121
-
122
- try {
123
- await provider.request({
124
- method: 'wallet_switchEthereumChain',
125
- params: [{
126
- chainId: id
127
- }]
128
- });
129
- const chains = [...this.chains, ...base.allChains];
130
- return chains.find(x => x.id === chainId);
131
- } catch (error) {
132
- // Indicates chain is not added to MetaMask
133
- if (error.code === 4902) {
134
- try {
135
- const chain = this.chains.find(x => x.id === chainId);
136
- if (!chain) throw new base.ChainNotConfiguredError();
137
- await provider.request({
138
- method: 'wallet_addEthereumChain',
139
- params: [{
140
- chainId: id,
141
- chainName: chain.name,
142
- nativeCurrency: chain.nativeCurrency,
143
- rpcUrls: chain.rpcUrls,
144
- blockExplorerUrls: chain.blockExplorers?.map(x => x.url)
145
- }]
146
- });
147
- } catch (addError) {
148
- throw new base.AddChainError();
149
- }
150
- } else if (error.code === 4001) throw new base.UserRejectedRequestError();else throw new base.SwitchChainError();
151
- }
152
- }
153
-
154
- async watchAsset({
155
- address,
156
- decimals = 18,
157
- image,
158
- symbol
159
- }) {
160
- const provider = this.getProvider();
161
- if (!provider) throw new base.ConnectorNotFoundError();
162
- await provider.request({
163
- method: 'wallet_watchAsset',
164
- params: {
165
- type: 'ERC20',
166
- options: {
167
- address,
168
- decimals,
169
- image,
170
- symbol
171
- }
172
- }
173
- });
174
- }
175
-
176
- onAccountsChanged = accounts => {
177
- if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
178
- account: utils.getAddress(accounts[0])
179
- });
180
- };
181
- onChainChanged = chainId => {
182
- const id = base.normalizeChainId(chainId);
183
- const unsupported = this.isChainUnsupported(id);
184
- this.emit('change', {
185
- chain: {
186
- id,
187
- unsupported
188
- }
189
- });
190
- };
191
- onDisconnect = err => {
192
- // TODO: this is a hack, probs better way to deal
193
- if (!err.message.includes('Attempting to connect.')) {
194
- this.emit('disconnect');
195
- if (this.options?.shimDisconnect) typeof localStorage !== 'undefined' && localStorage.removeItem(shimKey);
196
- }
197
- };
198
- }
199
-
200
- exports.InjectedConnector = InjectedConnector;
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- if (process.env.NODE_ENV === "production") {
4
- module.exports = require("./wagmi-core-connectors-injected.cjs.prod.js");
5
- } else {
6
- module.exports = require("./wagmi-core-connectors-injected.cjs.dev.js");
7
- }
@@ -1,200 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var providers = require('@ethersproject/providers');
6
- var base = require('../../../dist/base-677c6ead.cjs.prod.js');
7
- var utils = require('ethers/lib/utils');
8
- require('eventemitter3');
9
-
10
- const getInjectedName = ethereum => {
11
- if (!ethereum) return 'Injected';
12
- if (ethereum.isMetaMask) return 'MetaMask';
13
- if (ethereum.isCoinbaseWallet) return 'Coinbase Wallet';
14
- if (ethereum.isFrame) return 'Frame';
15
- if (ethereum.isTally) return 'Tally';
16
- return 'Injected';
17
- };
18
-
19
- const shimKey = 'wagmi.shimDisconnect';
20
- class InjectedConnector extends base.Connector {
21
- id = 'injected';
22
- ready = typeof window != 'undefined' && !!window.ethereum;
23
- #provider;
24
-
25
- constructor(config) {
26
- // TODO(note): Should shimDisconnect be default truthy??
27
- super({ ...config,
28
- options: config?.options
29
- });
30
- let name = 'Injected';
31
- if (typeof window !== 'undefined') name = getInjectedName(window.ethereum);
32
- this.name = name;
33
- }
34
-
35
- async connect() {
36
- try {
37
- const provider = this.getProvider();
38
- if (!provider) throw new base.ConnectorNotFoundError();
39
-
40
- if (provider.on) {
41
- provider.on('accountsChanged', this.onAccountsChanged);
42
- provider.on('chainChanged', this.onChainChanged);
43
- provider.on('disconnect', this.onDisconnect);
44
- }
45
-
46
- const account = await this.getAccount();
47
- const id = await this.getChainId();
48
- const unsupported = this.isChainUnsupported(id);
49
- if (this.options?.shimDisconnect) typeof localStorage !== 'undefined' && localStorage.setItem(shimKey, 'true');
50
- return {
51
- account,
52
- chain: {
53
- id,
54
- unsupported
55
- },
56
- provider
57
- };
58
- } catch (error) {
59
- if (error.code === 4001) throw new base.UserRejectedRequestError();
60
- throw error;
61
- }
62
- }
63
-
64
- async disconnect() {
65
- const provider = this.getProvider();
66
- if (!provider?.removeListener) return;
67
- provider.removeListener('accountsChanged', this.onAccountsChanged);
68
- provider.removeListener('chainChanged', this.onChainChanged);
69
- provider.removeListener('disconnect', this.onDisconnect);
70
- if (this.options?.shimDisconnect) typeof localStorage !== 'undefined' && localStorage.removeItem(shimKey);
71
- }
72
-
73
- async getAccount() {
74
- const provider = this.getProvider();
75
- if (!provider) throw new base.ConnectorNotFoundError();
76
- const accounts = await provider.request({
77
- method: 'eth_requestAccounts'
78
- }); // return checksum address
79
-
80
- return utils.getAddress(accounts[0]);
81
- }
82
-
83
- async getChainId() {
84
- const provider = this.getProvider();
85
- if (!provider) throw new base.ConnectorNotFoundError();
86
- return await provider.request({
87
- method: 'eth_chainId'
88
- }).then(base.normalizeChainId);
89
- }
90
-
91
- getProvider() {
92
- if (typeof window !== 'undefined' && !!window.ethereum) this.#provider = window.ethereum;
93
- return this.#provider;
94
- }
95
-
96
- async getSigner() {
97
- const provider = this.getProvider();
98
- const account = await this.getAccount();
99
- return new providers.Web3Provider(provider).getSigner(account);
100
- }
101
-
102
- async isAuthorized() {
103
- try {
104
- if (this.options?.shimDisconnect && typeof localStorage !== 'undefined' && !localStorage.getItem(shimKey)) return false;
105
- const provider = this.getProvider();
106
- if (!provider) throw new base.ConnectorNotFoundError();
107
- const accounts = await provider.request({
108
- method: 'eth_accounts'
109
- });
110
- const account = accounts[0];
111
- return !!account;
112
- } catch {
113
- return false;
114
- }
115
- }
116
-
117
- async switchChain(chainId) {
118
- const provider = this.getProvider();
119
- if (!provider) throw new base.ConnectorNotFoundError();
120
- const id = utils.hexValue(chainId);
121
-
122
- try {
123
- await provider.request({
124
- method: 'wallet_switchEthereumChain',
125
- params: [{
126
- chainId: id
127
- }]
128
- });
129
- const chains = [...this.chains, ...base.allChains];
130
- return chains.find(x => x.id === chainId);
131
- } catch (error) {
132
- // Indicates chain is not added to MetaMask
133
- if (error.code === 4902) {
134
- try {
135
- const chain = this.chains.find(x => x.id === chainId);
136
- if (!chain) throw new base.ChainNotConfiguredError();
137
- await provider.request({
138
- method: 'wallet_addEthereumChain',
139
- params: [{
140
- chainId: id,
141
- chainName: chain.name,
142
- nativeCurrency: chain.nativeCurrency,
143
- rpcUrls: chain.rpcUrls,
144
- blockExplorerUrls: chain.blockExplorers?.map(x => x.url)
145
- }]
146
- });
147
- } catch (addError) {
148
- throw new base.AddChainError();
149
- }
150
- } else if (error.code === 4001) throw new base.UserRejectedRequestError();else throw new base.SwitchChainError();
151
- }
152
- }
153
-
154
- async watchAsset({
155
- address,
156
- decimals = 18,
157
- image,
158
- symbol
159
- }) {
160
- const provider = this.getProvider();
161
- if (!provider) throw new base.ConnectorNotFoundError();
162
- await provider.request({
163
- method: 'wallet_watchAsset',
164
- params: {
165
- type: 'ERC20',
166
- options: {
167
- address,
168
- decimals,
169
- image,
170
- symbol
171
- }
172
- }
173
- });
174
- }
175
-
176
- onAccountsChanged = accounts => {
177
- if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
178
- account: utils.getAddress(accounts[0])
179
- });
180
- };
181
- onChainChanged = chainId => {
182
- const id = base.normalizeChainId(chainId);
183
- const unsupported = this.isChainUnsupported(id);
184
- this.emit('change', {
185
- chain: {
186
- id,
187
- unsupported
188
- }
189
- });
190
- };
191
- onDisconnect = err => {
192
- // TODO: this is a hack, probs better way to deal
193
- if (!err.message.includes('Attempting to connect.')) {
194
- this.emit('disconnect');
195
- if (this.options?.shimDisconnect) typeof localStorage !== 'undefined' && localStorage.removeItem(shimKey);
196
- }
197
- };
198
- }
199
-
200
- exports.InjectedConnector = InjectedConnector;