@wagmi/core 0.2.0-next.9 → 0.2.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 (101) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +30 -0
  3. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.d.ts +1 -11
  4. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +234 -0
  5. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.js +6 -15
  6. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +234 -0
  7. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +212 -0
  8. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.d.ts +1 -0
  9. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +62 -0
  10. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js +7 -0
  11. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +62 -0
  12. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +58 -0
  13. package/connectors/metaMask/package.json +4 -0
  14. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.d.ts +1 -11
  15. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.dev.js +250 -0
  16. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.js +6 -15
  17. package/connectors/mock/dist/wagmi-core-connectors-mock.cjs.prod.js +250 -0
  18. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +241 -0
  19. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.d.ts +1 -11
  20. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +183 -0
  21. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.js +6 -15
  22. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +183 -0
  23. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +161 -0
  24. package/dist/base-159de546.esm.js +513 -0
  25. package/dist/base-5812b724.cjs.dev.js +540 -0
  26. package/dist/base-59f3457e.cjs.prod.js +540 -0
  27. package/dist/classPrivateMethodGet-55c9909f.esm.js +16 -0
  28. package/dist/classPrivateMethodGet-976c8120.cjs.dev.js +19 -0
  29. package/dist/classPrivateMethodGet-d7330ed7.cjs.prod.js +19 -0
  30. package/dist/client-4d8337e7.cjs.prod.js +606 -0
  31. package/dist/client-5d456446.esm.js +595 -0
  32. package/dist/client-f77a08e4.cjs.dev.js +606 -0
  33. package/dist/declarations/src/actions/accounts/connect.d.ts +16 -0
  34. package/dist/declarations/src/actions/accounts/disconnect.d.ts +1 -0
  35. package/dist/declarations/src/actions/accounts/fetchBalance.d.ts +20 -0
  36. package/dist/declarations/src/actions/accounts/fetchSigner.d.ts +3 -0
  37. package/dist/declarations/src/actions/accounts/getAccount.d.ts +7 -0
  38. package/dist/declarations/src/actions/accounts/getNetwork.d.ts +9 -0
  39. package/dist/declarations/src/actions/accounts/index.d.ts +12 -0
  40. package/dist/declarations/src/actions/accounts/signMessage.d.ts +9 -0
  41. package/dist/declarations/src/actions/accounts/signTypedData.d.ts +13 -0
  42. package/dist/declarations/src/actions/accounts/switchNetwork.d.ts +6 -0
  43. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +4 -0
  44. package/dist/declarations/src/actions/accounts/watchNetwork.d.ts +3 -0
  45. package/dist/declarations/src/actions/accounts/watchSigner.d.ts +3 -0
  46. package/dist/declarations/src/actions/contracts/getContract.d.ts +11 -0
  47. package/dist/declarations/src/actions/contracts/index.d.ts +5 -0
  48. package/dist/declarations/src/actions/contracts/readContract.d.ts +14 -0
  49. package/dist/declarations/src/actions/contracts/watchContractEvent.d.ts +14 -0
  50. package/dist/declarations/src/actions/contracts/watchReadContract.d.ts +7 -0
  51. package/dist/declarations/src/actions/contracts/writeContract.d.ts +11 -0
  52. package/dist/declarations/src/actions/ens/fetchEnsAddress.d.ts +8 -0
  53. package/dist/declarations/src/actions/ens/fetchEnsAvatar.d.ts +8 -0
  54. package/dist/declarations/src/actions/ens/fetchEnsName.d.ts +8 -0
  55. package/dist/declarations/src/actions/ens/fetchEnsResolver.d.ts +9 -0
  56. package/dist/declarations/src/actions/ens/index.d.ts +4 -0
  57. package/dist/declarations/src/actions/index.d.ts +7 -0
  58. package/dist/declarations/src/actions/network-status/fetchBlockNumber.d.ts +5 -0
  59. package/dist/declarations/src/actions/network-status/fetchFeeData.d.ts +16 -0
  60. package/dist/declarations/src/actions/network-status/index.d.ts +3 -0
  61. package/dist/declarations/src/actions/network-status/watchBlockNumber.d.ts +6 -0
  62. package/dist/declarations/src/actions/providers/getProvider.d.ts +7 -0
  63. package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +7 -0
  64. package/dist/declarations/src/actions/providers/index.d.ts +4 -0
  65. package/dist/declarations/src/actions/providers/watchProvider.d.ts +4 -0
  66. package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +4 -0
  67. package/dist/declarations/src/actions/tokens/fetchToken.d.ts +20 -0
  68. package/dist/declarations/src/actions/tokens/index.d.ts +1 -0
  69. package/dist/declarations/src/actions/transactions/index.d.ts +2 -0
  70. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +7 -0
  71. package/dist/declarations/src/actions/transactions/waitForTransaction.d.ts +17 -0
  72. package/dist/declarations/src/client.d.ts +81 -0
  73. package/dist/declarations/src/connectors/base.d.ts +55 -0
  74. package/dist/declarations/src/connectors/coinbaseWallet.d.ts +52 -0
  75. package/dist/declarations/src/connectors/index.d.ts +2 -0
  76. package/dist/declarations/src/connectors/injected.d.ts +48 -0
  77. package/dist/declarations/src/connectors/metaMask.d.ts +13 -0
  78. package/dist/declarations/src/connectors/mock/connector.d.ts +37 -0
  79. package/dist/declarations/src/connectors/mock/index.d.ts +2 -0
  80. package/dist/declarations/src/connectors/mock/provider.d.ts +42 -0
  81. package/dist/declarations/src/connectors/walletConnect.d.ts +32 -0
  82. package/dist/declarations/src/constants/abis.d.ts +2 -0
  83. package/dist/declarations/src/constants/blockExplorers.d.ts +9 -0
  84. package/dist/declarations/src/constants/chains.d.ts +21 -0
  85. package/dist/declarations/src/constants/index.d.ts +7 -0
  86. package/dist/declarations/src/constants/rpcs.d.ts +9 -0
  87. package/dist/declarations/src/constants/units.d.ts +1 -0
  88. package/dist/declarations/src/errors.d.ts +28 -0
  89. package/dist/declarations/src/index.d.ts +12 -0
  90. package/dist/declarations/src/storage.d.ts +12 -0
  91. package/dist/declarations/src/types/index.d.ts +101 -0
  92. package/dist/declarations/src/utils/getInjectedName.d.ts +1 -0
  93. package/dist/declarations/src/utils/index.d.ts +3 -0
  94. package/dist/declarations/src/utils/normalizeChainId.d.ts +1 -0
  95. package/dist/declarations/src/utils/warn.d.ts +1 -0
  96. package/dist/wagmi-core.cjs.d.ts +1 -11
  97. package/dist/wagmi-core.cjs.dev.js +653 -0
  98. package/dist/wagmi-core.cjs.js +6 -15
  99. package/dist/wagmi-core.cjs.prod.js +653 -0
  100. package/dist/wagmi-core.esm.js +593 -0
  101. package/package.json +24 -12
@@ -0,0 +1,183 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var classPrivateMethodGet = require('../../../dist/classPrivateMethodGet-976c8120.cjs.dev.js');
6
+ var base = require('../../../dist/base-5812b724.cjs.dev.js');
7
+ var ethers = require('ethers');
8
+ var utils = require('ethers/lib/utils');
9
+ require('eventemitter3');
10
+
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
13
+ var n = Object.create(null);
14
+ if (e) {
15
+ Object.keys(e).forEach(function (k) {
16
+ if (k !== 'default') {
17
+ var d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () { return e[k]; }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n["default"] = e;
26
+ return Object.freeze(n);
27
+ }
28
+
29
+ const switchChainAllowedRegex = /(rainbow)/i;
30
+
31
+ var _provider = /*#__PURE__*/new WeakMap();
32
+
33
+ var _switchChain = /*#__PURE__*/new WeakSet();
34
+
35
+ class WalletConnectConnector extends base.Connector {
36
+ constructor(config) {
37
+ super(config);
38
+
39
+ classPrivateMethodGet._classPrivateMethodInitSpec(this, _switchChain);
40
+
41
+ base._defineProperty(this, "id", 'walletConnect');
42
+
43
+ base._defineProperty(this, "name", 'WalletConnect');
44
+
45
+ base._defineProperty(this, "ready", true);
46
+
47
+ base._classPrivateFieldInitSpec(this, _provider, {
48
+ writable: true,
49
+ value: void 0
50
+ });
51
+
52
+ base._defineProperty(this, "onAccountsChanged", accounts => {
53
+ if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
54
+ account: utils.getAddress(accounts[0])
55
+ });
56
+ });
57
+
58
+ base._defineProperty(this, "onChainChanged", chainId => {
59
+ const id = base.normalizeChainId(chainId);
60
+ const unsupported = this.isChainUnsupported(id);
61
+ this.emit('change', {
62
+ chain: {
63
+ id,
64
+ unsupported
65
+ }
66
+ });
67
+ });
68
+
69
+ base._defineProperty(this, "onDisconnect", () => {
70
+ this.emit('disconnect');
71
+ });
72
+ }
73
+
74
+ async connect() {
75
+ try {
76
+ var _provider$connector$p, _provider$connector, _provider$connector$p2;
77
+
78
+ const provider = await this.getProvider(true);
79
+ provider.on('accountsChanged', this.onAccountsChanged);
80
+ provider.on('chainChanged', this.onChainChanged);
81
+ provider.on('disconnect', this.onDisconnect); // Defer message to the next tick to ensure wallet connect data (provided by `.enable()`) is available
82
+
83
+ setTimeout(() => this.emit('message', {
84
+ type: 'connecting'
85
+ }), 0);
86
+ const accounts = await provider.enable();
87
+ const account = utils.getAddress(accounts[0]);
88
+ const id = await this.getChainId();
89
+ const unsupported = this.isChainUnsupported(id); // Not all WalletConnect options support programmatic chain switching
90
+ // Only enable for wallet options that do
91
+
92
+ const walletName = (_provider$connector$p = (_provider$connector = provider.connector) === null || _provider$connector === void 0 ? void 0 : (_provider$connector$p2 = _provider$connector.peerMeta) === null || _provider$connector$p2 === void 0 ? void 0 : _provider$connector$p2.name) !== null && _provider$connector$p !== void 0 ? _provider$connector$p : '';
93
+ if (switchChainAllowedRegex.test(walletName)) this.switchChain = classPrivateMethodGet._classPrivateMethodGet(this, _switchChain, _switchChain2);
94
+ return {
95
+ account,
96
+ chain: {
97
+ id,
98
+ unsupported
99
+ },
100
+ provider: new ethers.providers.Web3Provider(provider)
101
+ };
102
+ } catch (error) {
103
+ if (/user closed modal/i.test(error.message)) throw new base.UserRejectedRequestError();
104
+ throw error;
105
+ }
106
+ }
107
+
108
+ async disconnect() {
109
+ const provider = await this.getProvider();
110
+ await provider.disconnect();
111
+ provider.removeListener('accountsChanged', this.onAccountsChanged);
112
+ provider.removeListener('chainChanged', this.onChainChanged);
113
+ provider.removeListener('disconnect', this.onDisconnect);
114
+ typeof localStorage !== 'undefined' && localStorage.removeItem('walletconnect');
115
+ }
116
+
117
+ async getAccount() {
118
+ const provider = await this.getProvider();
119
+ const accounts = provider.accounts; // return checksum address
120
+
121
+ return utils.getAddress(accounts[0]);
122
+ }
123
+
124
+ async getChainId() {
125
+ const provider = await this.getProvider();
126
+ const chainId = base.normalizeChainId(provider.chainId);
127
+ return chainId;
128
+ }
129
+
130
+ async getProvider(create) {
131
+ if (!base._classPrivateFieldGet(this, _provider) || create) {
132
+ const WalletConnectProvider = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@walletconnect/ethereum-provider')); })).default;
133
+
134
+ base._classPrivateFieldSet(this, _provider, new WalletConnectProvider(this.options));
135
+ }
136
+
137
+ return base._classPrivateFieldGet(this, _provider);
138
+ }
139
+
140
+ async getSigner() {
141
+ const [provider, account] = await Promise.all([this.getProvider(), this.getAccount()]);
142
+ return new ethers.providers.Web3Provider(provider).getSigner(account);
143
+ }
144
+
145
+ async isAuthorized() {
146
+ try {
147
+ const account = await this.getAccount();
148
+ return !!account;
149
+ } catch {
150
+ return false;
151
+ }
152
+ }
153
+
154
+ }
155
+
156
+ async function _switchChain2(chainId) {
157
+ const provider = await this.getProvider();
158
+ const id = utils.hexValue(chainId);
159
+
160
+ try {
161
+ var _chains$find;
162
+
163
+ await provider.request({
164
+ method: 'wallet_switchEthereumChain',
165
+ params: [{
166
+ chainId: id
167
+ }]
168
+ });
169
+ const chains = [...this.chains, ...base.allChains];
170
+ return (_chains$find = chains.find(x => x.id === chainId)) !== null && _chains$find !== void 0 ? _chains$find : {
171
+ id: chainId,
172
+ name: "Chain ".concat(id),
173
+ rpcUrls: {
174
+ default: ''
175
+ }
176
+ };
177
+ } catch (error) {
178
+ const message = typeof error === 'string' ? error : error === null || error === void 0 ? void 0 : error.message;
179
+ if (/user rejected request/i.test(message)) throw new base.UserRejectedRequestError();else throw new base.SwitchChainError();
180
+ }
181
+ }
182
+
183
+ exports.WalletConnectConnector = WalletConnectConnector;
@@ -1,16 +1,7 @@
1
- "use strict";
2
- // this file might look strange and you might be wondering what it's for
3
- // it's lets you import your source files by importing this entrypoint
4
- // as you would import it if it was built with preconstruct build
5
- // this file is slightly different to some others though
6
- // it has a require hook which compiles your code with Babel
7
- // this means that you don't have to set up @babel/register or anything like that
8
- // but you can still require this module and it'll be compiled
1
+ 'use strict';
9
2
 
10
- // this bit of code imports the require hook and registers it
11
- let unregister = require("../../../../../node_modules/.pnpm/@preconstruct+hook@0.4.0/node_modules/@preconstruct/hook").___internalHook(typeof __dirname === 'undefined' ? undefined : __dirname, "../../../../..", "../../..");
12
-
13
- // this re-exports the source file
14
- module.exports = require("../../../src/connectors/walletConnect.ts");
15
-
16
- unregister();
3
+ if (process.env.NODE_ENV === "production") {
4
+ module.exports = require("./wagmi-core-connectors-walletConnect.cjs.prod.js");
5
+ } else {
6
+ module.exports = require("./wagmi-core-connectors-walletConnect.cjs.dev.js");
7
+ }
@@ -0,0 +1,183 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var classPrivateMethodGet = require('../../../dist/classPrivateMethodGet-d7330ed7.cjs.prod.js');
6
+ var base = require('../../../dist/base-59f3457e.cjs.prod.js');
7
+ var ethers = require('ethers');
8
+ var utils = require('ethers/lib/utils');
9
+ require('eventemitter3');
10
+
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
13
+ var n = Object.create(null);
14
+ if (e) {
15
+ Object.keys(e).forEach(function (k) {
16
+ if (k !== 'default') {
17
+ var d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () { return e[k]; }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n["default"] = e;
26
+ return Object.freeze(n);
27
+ }
28
+
29
+ const switchChainAllowedRegex = /(rainbow)/i;
30
+
31
+ var _provider = /*#__PURE__*/new WeakMap();
32
+
33
+ var _switchChain = /*#__PURE__*/new WeakSet();
34
+
35
+ class WalletConnectConnector extends base.Connector {
36
+ constructor(config) {
37
+ super(config);
38
+
39
+ classPrivateMethodGet._classPrivateMethodInitSpec(this, _switchChain);
40
+
41
+ base._defineProperty(this, "id", 'walletConnect');
42
+
43
+ base._defineProperty(this, "name", 'WalletConnect');
44
+
45
+ base._defineProperty(this, "ready", true);
46
+
47
+ base._classPrivateFieldInitSpec(this, _provider, {
48
+ writable: true,
49
+ value: void 0
50
+ });
51
+
52
+ base._defineProperty(this, "onAccountsChanged", accounts => {
53
+ if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
54
+ account: utils.getAddress(accounts[0])
55
+ });
56
+ });
57
+
58
+ base._defineProperty(this, "onChainChanged", chainId => {
59
+ const id = base.normalizeChainId(chainId);
60
+ const unsupported = this.isChainUnsupported(id);
61
+ this.emit('change', {
62
+ chain: {
63
+ id,
64
+ unsupported
65
+ }
66
+ });
67
+ });
68
+
69
+ base._defineProperty(this, "onDisconnect", () => {
70
+ this.emit('disconnect');
71
+ });
72
+ }
73
+
74
+ async connect() {
75
+ try {
76
+ var _provider$connector$p, _provider$connector, _provider$connector$p2;
77
+
78
+ const provider = await this.getProvider(true);
79
+ provider.on('accountsChanged', this.onAccountsChanged);
80
+ provider.on('chainChanged', this.onChainChanged);
81
+ provider.on('disconnect', this.onDisconnect); // Defer message to the next tick to ensure wallet connect data (provided by `.enable()`) is available
82
+
83
+ setTimeout(() => this.emit('message', {
84
+ type: 'connecting'
85
+ }), 0);
86
+ const accounts = await provider.enable();
87
+ const account = utils.getAddress(accounts[0]);
88
+ const id = await this.getChainId();
89
+ const unsupported = this.isChainUnsupported(id); // Not all WalletConnect options support programmatic chain switching
90
+ // Only enable for wallet options that do
91
+
92
+ const walletName = (_provider$connector$p = (_provider$connector = provider.connector) === null || _provider$connector === void 0 ? void 0 : (_provider$connector$p2 = _provider$connector.peerMeta) === null || _provider$connector$p2 === void 0 ? void 0 : _provider$connector$p2.name) !== null && _provider$connector$p !== void 0 ? _provider$connector$p : '';
93
+ if (switchChainAllowedRegex.test(walletName)) this.switchChain = classPrivateMethodGet._classPrivateMethodGet(this, _switchChain, _switchChain2);
94
+ return {
95
+ account,
96
+ chain: {
97
+ id,
98
+ unsupported
99
+ },
100
+ provider: new ethers.providers.Web3Provider(provider)
101
+ };
102
+ } catch (error) {
103
+ if (/user closed modal/i.test(error.message)) throw new base.UserRejectedRequestError();
104
+ throw error;
105
+ }
106
+ }
107
+
108
+ async disconnect() {
109
+ const provider = await this.getProvider();
110
+ await provider.disconnect();
111
+ provider.removeListener('accountsChanged', this.onAccountsChanged);
112
+ provider.removeListener('chainChanged', this.onChainChanged);
113
+ provider.removeListener('disconnect', this.onDisconnect);
114
+ typeof localStorage !== 'undefined' && localStorage.removeItem('walletconnect');
115
+ }
116
+
117
+ async getAccount() {
118
+ const provider = await this.getProvider();
119
+ const accounts = provider.accounts; // return checksum address
120
+
121
+ return utils.getAddress(accounts[0]);
122
+ }
123
+
124
+ async getChainId() {
125
+ const provider = await this.getProvider();
126
+ const chainId = base.normalizeChainId(provider.chainId);
127
+ return chainId;
128
+ }
129
+
130
+ async getProvider(create) {
131
+ if (!base._classPrivateFieldGet(this, _provider) || create) {
132
+ const WalletConnectProvider = (await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@walletconnect/ethereum-provider')); })).default;
133
+
134
+ base._classPrivateFieldSet(this, _provider, new WalletConnectProvider(this.options));
135
+ }
136
+
137
+ return base._classPrivateFieldGet(this, _provider);
138
+ }
139
+
140
+ async getSigner() {
141
+ const [provider, account] = await Promise.all([this.getProvider(), this.getAccount()]);
142
+ return new ethers.providers.Web3Provider(provider).getSigner(account);
143
+ }
144
+
145
+ async isAuthorized() {
146
+ try {
147
+ const account = await this.getAccount();
148
+ return !!account;
149
+ } catch {
150
+ return false;
151
+ }
152
+ }
153
+
154
+ }
155
+
156
+ async function _switchChain2(chainId) {
157
+ const provider = await this.getProvider();
158
+ const id = utils.hexValue(chainId);
159
+
160
+ try {
161
+ var _chains$find;
162
+
163
+ await provider.request({
164
+ method: 'wallet_switchEthereumChain',
165
+ params: [{
166
+ chainId: id
167
+ }]
168
+ });
169
+ const chains = [...this.chains, ...base.allChains];
170
+ return (_chains$find = chains.find(x => x.id === chainId)) !== null && _chains$find !== void 0 ? _chains$find : {
171
+ id: chainId,
172
+ name: "Chain ".concat(id),
173
+ rpcUrls: {
174
+ default: ''
175
+ }
176
+ };
177
+ } catch (error) {
178
+ const message = typeof error === 'string' ? error : error === null || error === void 0 ? void 0 : error.message;
179
+ if (/user rejected request/i.test(message)) throw new base.UserRejectedRequestError();else throw new base.SwitchChainError();
180
+ }
181
+ }
182
+
183
+ exports.WalletConnectConnector = WalletConnectConnector;
@@ -0,0 +1,161 @@
1
+ import { _ as _classPrivateMethodInitSpec, a as _classPrivateMethodGet } from '../../../dist/classPrivateMethodGet-55c9909f.esm.js';
2
+ import { c as Connector, _ as _defineProperty, m as _classPrivateFieldInitSpec, n as normalizeChainId, U as UserRejectedRequestError, p as _classPrivateFieldGet, o as _classPrivateFieldSet, a as allChains, l as SwitchChainError } from '../../../dist/base-159de546.esm.js';
3
+ import { providers } from 'ethers';
4
+ import { getAddress, hexValue } from 'ethers/lib/utils';
5
+ import 'eventemitter3';
6
+
7
+ const switchChainAllowedRegex = /(rainbow)/i;
8
+
9
+ var _provider = /*#__PURE__*/new WeakMap();
10
+
11
+ var _switchChain = /*#__PURE__*/new WeakSet();
12
+
13
+ class WalletConnectConnector extends Connector {
14
+ constructor(config) {
15
+ super(config);
16
+
17
+ _classPrivateMethodInitSpec(this, _switchChain);
18
+
19
+ _defineProperty(this, "id", 'walletConnect');
20
+
21
+ _defineProperty(this, "name", 'WalletConnect');
22
+
23
+ _defineProperty(this, "ready", true);
24
+
25
+ _classPrivateFieldInitSpec(this, _provider, {
26
+ writable: true,
27
+ value: void 0
28
+ });
29
+
30
+ _defineProperty(this, "onAccountsChanged", accounts => {
31
+ if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
32
+ account: getAddress(accounts[0])
33
+ });
34
+ });
35
+
36
+ _defineProperty(this, "onChainChanged", chainId => {
37
+ const id = normalizeChainId(chainId);
38
+ const unsupported = this.isChainUnsupported(id);
39
+ this.emit('change', {
40
+ chain: {
41
+ id,
42
+ unsupported
43
+ }
44
+ });
45
+ });
46
+
47
+ _defineProperty(this, "onDisconnect", () => {
48
+ this.emit('disconnect');
49
+ });
50
+ }
51
+
52
+ async connect() {
53
+ try {
54
+ var _provider$connector$p, _provider$connector, _provider$connector$p2;
55
+
56
+ const provider = await this.getProvider(true);
57
+ provider.on('accountsChanged', this.onAccountsChanged);
58
+ provider.on('chainChanged', this.onChainChanged);
59
+ provider.on('disconnect', this.onDisconnect); // Defer message to the next tick to ensure wallet connect data (provided by `.enable()`) is available
60
+
61
+ setTimeout(() => this.emit('message', {
62
+ type: 'connecting'
63
+ }), 0);
64
+ const accounts = await provider.enable();
65
+ const account = getAddress(accounts[0]);
66
+ const id = await this.getChainId();
67
+ const unsupported = this.isChainUnsupported(id); // Not all WalletConnect options support programmatic chain switching
68
+ // Only enable for wallet options that do
69
+
70
+ const walletName = (_provider$connector$p = (_provider$connector = provider.connector) === null || _provider$connector === void 0 ? void 0 : (_provider$connector$p2 = _provider$connector.peerMeta) === null || _provider$connector$p2 === void 0 ? void 0 : _provider$connector$p2.name) !== null && _provider$connector$p !== void 0 ? _provider$connector$p : '';
71
+ if (switchChainAllowedRegex.test(walletName)) this.switchChain = _classPrivateMethodGet(this, _switchChain, _switchChain2);
72
+ return {
73
+ account,
74
+ chain: {
75
+ id,
76
+ unsupported
77
+ },
78
+ provider: new providers.Web3Provider(provider)
79
+ };
80
+ } catch (error) {
81
+ if (/user closed modal/i.test(error.message)) throw new UserRejectedRequestError();
82
+ throw error;
83
+ }
84
+ }
85
+
86
+ async disconnect() {
87
+ const provider = await this.getProvider();
88
+ await provider.disconnect();
89
+ provider.removeListener('accountsChanged', this.onAccountsChanged);
90
+ provider.removeListener('chainChanged', this.onChainChanged);
91
+ provider.removeListener('disconnect', this.onDisconnect);
92
+ typeof localStorage !== 'undefined' && localStorage.removeItem('walletconnect');
93
+ }
94
+
95
+ async getAccount() {
96
+ const provider = await this.getProvider();
97
+ const accounts = provider.accounts; // return checksum address
98
+
99
+ return getAddress(accounts[0]);
100
+ }
101
+
102
+ async getChainId() {
103
+ const provider = await this.getProvider();
104
+ const chainId = normalizeChainId(provider.chainId);
105
+ return chainId;
106
+ }
107
+
108
+ async getProvider(create) {
109
+ if (!_classPrivateFieldGet(this, _provider) || create) {
110
+ const WalletConnectProvider = (await import('@walletconnect/ethereum-provider')).default;
111
+
112
+ _classPrivateFieldSet(this, _provider, new WalletConnectProvider(this.options));
113
+ }
114
+
115
+ return _classPrivateFieldGet(this, _provider);
116
+ }
117
+
118
+ async getSigner() {
119
+ const [provider, account] = await Promise.all([this.getProvider(), this.getAccount()]);
120
+ return new providers.Web3Provider(provider).getSigner(account);
121
+ }
122
+
123
+ async isAuthorized() {
124
+ try {
125
+ const account = await this.getAccount();
126
+ return !!account;
127
+ } catch {
128
+ return false;
129
+ }
130
+ }
131
+
132
+ }
133
+
134
+ async function _switchChain2(chainId) {
135
+ const provider = await this.getProvider();
136
+ const id = hexValue(chainId);
137
+
138
+ try {
139
+ var _chains$find;
140
+
141
+ await provider.request({
142
+ method: 'wallet_switchEthereumChain',
143
+ params: [{
144
+ chainId: id
145
+ }]
146
+ });
147
+ const chains = [...this.chains, ...allChains];
148
+ return (_chains$find = chains.find(x => x.id === chainId)) !== null && _chains$find !== void 0 ? _chains$find : {
149
+ id: chainId,
150
+ name: "Chain ".concat(id),
151
+ rpcUrls: {
152
+ default: ''
153
+ }
154
+ };
155
+ } catch (error) {
156
+ const message = typeof error === 'string' ? error : error === null || error === void 0 ? void 0 : error.message;
157
+ if (/user rejected request/i.test(message)) throw new UserRejectedRequestError();else throw new SwitchChainError();
158
+ }
159
+ }
160
+
161
+ export { WalletConnectConnector };