@wagmi/core 0.2.1 → 0.2.4

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 (47) hide show
  1. package/README.md +2 -2
  2. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.dev.js +2 -4
  3. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.cjs.prod.js +2 -4
  4. package/connectors/coinbaseWallet/dist/wagmi-core-connectors-coinbaseWallet.esm.js +3 -5
  5. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.d.ts +1 -0
  6. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.dev.js +63 -0
  7. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.js +7 -0
  8. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.cjs.prod.js +63 -0
  9. package/connectors/metaMask/dist/wagmi-core-connectors-metaMask.esm.js +59 -0
  10. package/connectors/metaMask/package.json +4 -0
  11. package/connectors/mock/dist/wagmi-core-connectors-mock.esm.js +2 -2
  12. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.dev.js +1 -1
  13. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.cjs.prod.js +1 -1
  14. package/connectors/walletConnect/dist/wagmi-core-connectors-walletConnect.esm.js +3 -3
  15. package/dist/{base-d5bbf720.esm.js → base-159de546.esm.js} +1 -1
  16. package/dist/{classPrivateMethodGet-93a70bfd.esm.js → classPrivateMethodGet-55c9909f.esm.js} +1 -1
  17. package/dist/client-65157905.cjs.dev.js +607 -0
  18. package/dist/client-7fcff803.esm.js +596 -0
  19. package/dist/client-a06853e2.cjs.prod.js +607 -0
  20. package/dist/declarations/src/actions/accounts/connect.d.ts +4 -4
  21. package/dist/declarations/src/actions/accounts/getAccount.d.ts +3 -3
  22. package/dist/declarations/src/actions/accounts/watchAccount.d.ts +3 -3
  23. package/dist/declarations/src/actions/contracts/getContract.d.ts +2 -3
  24. package/dist/declarations/src/actions/contracts/readContract.d.ts +1 -1
  25. package/dist/declarations/src/actions/contracts/writeContract.d.ts +2 -3
  26. package/dist/declarations/src/actions/ens/fetchEnsResolver.d.ts +2 -2
  27. package/dist/declarations/src/actions/network-status/fetchFeeData.d.ts +2 -2
  28. package/dist/declarations/src/actions/providers/getProvider.d.ts +3 -3
  29. package/dist/declarations/src/actions/providers/getWebSocketProvider.d.ts +3 -3
  30. package/dist/declarations/src/actions/providers/watchProvider.d.ts +3 -3
  31. package/dist/declarations/src/actions/providers/watchWebSocketProvider.d.ts +3 -3
  32. package/dist/declarations/src/actions/transactions/sendTransaction.d.ts +3 -3
  33. package/dist/declarations/src/actions/transactions/waitForTransaction.d.ts +3 -3
  34. package/dist/declarations/src/client.d.ts +8 -8
  35. package/dist/declarations/src/connectors/coinbaseWallet.d.ts +1 -1
  36. package/dist/declarations/src/connectors/injected.d.ts +4 -3
  37. package/dist/declarations/src/connectors/metaMask.d.ts +13 -0
  38. package/dist/declarations/src/connectors/mock/provider.d.ts +5 -7
  39. package/dist/declarations/src/connectors/walletConnect.d.ts +4 -3
  40. package/dist/declarations/src/types/index.d.ts +18 -1
  41. package/dist/declarations/src/utils/getInjectedName.d.ts +1 -1
  42. package/dist/declarations/src/utils/index.d.ts +1 -0
  43. package/dist/declarations/src/utils/warn.d.ts +1 -0
  44. package/dist/wagmi-core.cjs.dev.js +63 -612
  45. package/dist/wagmi-core.cjs.prod.js +63 -612
  46. package/dist/wagmi-core.esm.js +12 -556
  47. package/package.json +11 -8
@@ -0,0 +1,596 @@
1
+ import { _ as _classPrivateMethodInitSpec, a as _classPrivateMethodGet } from './classPrivateMethodGet-55c9909f.esm.js';
2
+ import { c as Connector, _ as _defineProperty, m as _classPrivateFieldInitSpec, n as normalizeChainId, b as ConnectorNotFoundError, U as UserRejectedRequestError, o as _classPrivateFieldSet, p as _classPrivateFieldGet, a as allChains, k as ChainNotConfiguredError, A as AddChainError, l as SwitchChainError } from './base-159de546.esm.js';
3
+ import { providers, getDefaultProvider } from 'ethers';
4
+ import create from 'zustand/vanilla';
5
+ import { subscribeWithSelector, persist } from 'zustand/middleware';
6
+ import { getAddress, hexValue } from 'ethers/lib/utils';
7
+
8
+ function getInjectedName(ethereum) {
9
+ var _ethereum$providers, _getName;
10
+
11
+ if (!ethereum) return 'Injected';
12
+
13
+ const getName = provider => {
14
+ if (provider.isBraveWallet) return 'Brave Wallet';
15
+ if (provider.isCoinbaseWallet) return 'Coinbase Wallet';
16
+ if (provider.isFrame) return 'Frame';
17
+ if (provider.isTally) return 'Tally';
18
+ if (provider.isTokenary) return 'Tokenary';
19
+ if (provider.isTrust) return 'Trust Wallet';
20
+ if (provider.isMetaMask) return 'MetaMask';
21
+ };
22
+
23
+ if ((_ethereum$providers = ethereum.providers) !== null && _ethereum$providers !== void 0 && _ethereum$providers.length) {
24
+ // Deduplicate names using Set
25
+ // Coinbase Wallet puts multiple providers in `ethereum.providers`
26
+ const nameSet = new Set();
27
+ let unknownCount = 1;
28
+
29
+ for (const provider of ethereum.providers) {
30
+ let name = getName(provider);
31
+
32
+ if (!name) {
33
+ name = "Unknown Wallet #".concat(unknownCount);
34
+ unknownCount += 1;
35
+ }
36
+
37
+ nameSet.add(name);
38
+ }
39
+
40
+ const names = [...nameSet];
41
+ return names.length ? names : names[0];
42
+ }
43
+
44
+ return (_getName = getName(ethereum)) !== null && _getName !== void 0 ? _getName : 'Injected';
45
+ }
46
+
47
+ const cache = new Set();
48
+ function warn(message, id) {
49
+ if (!cache.has(id !== null && id !== void 0 ? id : message)) {
50
+ console.warn(message);
51
+ cache.add(message);
52
+ }
53
+ }
54
+
55
+ const shimKey = 'injected.shimDisconnect';
56
+
57
+ var _provider = /*#__PURE__*/new WeakMap();
58
+
59
+ class InjectedConnector extends Connector {
60
+ constructor(config) {
61
+ super({ ...config,
62
+ options: {
63
+ shimDisconnect: true,
64
+ ...(config === null || config === void 0 ? void 0 : config.options)
65
+ }
66
+ });
67
+
68
+ _defineProperty(this, "id", void 0);
69
+
70
+ _defineProperty(this, "name", void 0);
71
+
72
+ _defineProperty(this, "ready", typeof window != 'undefined' && !!window.ethereum);
73
+
74
+ _classPrivateFieldInitSpec(this, _provider, {
75
+ writable: true,
76
+ value: void 0
77
+ });
78
+
79
+ _defineProperty(this, "onAccountsChanged", accounts => {
80
+ if (accounts.length === 0) this.emit('disconnect');else this.emit('change', {
81
+ account: getAddress(accounts[0])
82
+ });
83
+ });
84
+
85
+ _defineProperty(this, "onChainChanged", chainId => {
86
+ const id = normalizeChainId(chainId);
87
+ const unsupported = this.isChainUnsupported(id);
88
+ this.emit('change', {
89
+ chain: {
90
+ id,
91
+ unsupported
92
+ }
93
+ });
94
+ });
95
+
96
+ _defineProperty(this, "onDisconnect", () => {
97
+ var _this$options, _getClient$storage;
98
+
99
+ this.emit('disconnect');
100
+ if ((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.shimDisconnect) (_getClient$storage = getClient().storage) === null || _getClient$storage === void 0 ? void 0 : _getClient$storage.removeItem(shimKey);
101
+ });
102
+
103
+ let name = 'Injected';
104
+
105
+ if (typeof window !== 'undefined') {
106
+ var _config$options;
107
+
108
+ const overrideName = config === null || config === void 0 ? void 0 : (_config$options = config.options) === null || _config$options === void 0 ? void 0 : _config$options.name;
109
+ const detectedName = getInjectedName(window.ethereum);
110
+ if (overrideName) name = typeof overrideName === 'function' ? overrideName(detectedName) : overrideName;else name = typeof detectedName === 'string' ? detectedName : detectedName[0];
111
+ }
112
+
113
+ this.id = 'injected';
114
+ this.name = name;
115
+ }
116
+
117
+ async connect() {
118
+ try {
119
+ var _this$options2, _getClient$storage2;
120
+
121
+ const provider = await this.getProvider();
122
+ if (!provider) throw new ConnectorNotFoundError();
123
+
124
+ if (provider.on) {
125
+ provider.on('accountsChanged', this.onAccountsChanged);
126
+ provider.on('chainChanged', this.onChainChanged);
127
+ provider.on('disconnect', this.onDisconnect);
128
+ }
129
+
130
+ this.emit('message', {
131
+ type: 'connecting'
132
+ });
133
+ const account = await this.getAccount();
134
+ const id = await this.getChainId();
135
+ const unsupported = this.isChainUnsupported(id);
136
+ if ((_this$options2 = this.options) !== null && _this$options2 !== void 0 && _this$options2.shimDisconnect) (_getClient$storage2 = getClient().storage) === null || _getClient$storage2 === void 0 ? void 0 : _getClient$storage2.setItem(shimKey, true);
137
+ return {
138
+ account,
139
+ chain: {
140
+ id,
141
+ unsupported
142
+ },
143
+ provider
144
+ };
145
+ } catch (error) {
146
+ if (error.code === 4001) throw new UserRejectedRequestError();
147
+ throw error;
148
+ }
149
+ }
150
+
151
+ async disconnect() {
152
+ var _this$options3, _getClient$storage3;
153
+
154
+ const provider = await this.getProvider();
155
+ if (!(provider !== null && provider !== void 0 && provider.removeListener)) return;
156
+ provider.removeListener('accountsChanged', this.onAccountsChanged);
157
+ provider.removeListener('chainChanged', this.onChainChanged);
158
+ provider.removeListener('disconnect', this.onDisconnect);
159
+ if ((_this$options3 = this.options) !== null && _this$options3 !== void 0 && _this$options3.shimDisconnect) (_getClient$storage3 = getClient().storage) === null || _getClient$storage3 === void 0 ? void 0 : _getClient$storage3.removeItem(shimKey);
160
+ }
161
+
162
+ async getAccount() {
163
+ const provider = await this.getProvider();
164
+ if (!provider) throw new ConnectorNotFoundError();
165
+ const accounts = await provider.request({
166
+ method: 'eth_requestAccounts'
167
+ }); // return checksum address
168
+
169
+ return getAddress(accounts[0]);
170
+ }
171
+
172
+ async getChainId() {
173
+ const provider = await this.getProvider();
174
+ if (!provider) throw new ConnectorNotFoundError();
175
+ return await provider.request({
176
+ method: 'eth_chainId'
177
+ }).then(normalizeChainId);
178
+ }
179
+
180
+ async getProvider() {
181
+ if (typeof window !== 'undefined' && !!window.ethereum) _classPrivateFieldSet(this, _provider, window.ethereum);
182
+ return _classPrivateFieldGet(this, _provider);
183
+ }
184
+
185
+ async getSigner() {
186
+ const [provider, account] = await Promise.all([this.getProvider(), this.getAccount()]);
187
+ return new providers.Web3Provider(provider).getSigner(account);
188
+ }
189
+
190
+ async isAuthorized() {
191
+ try {
192
+ var _this$options4, _getClient$storage4;
193
+
194
+ if ((_this$options4 = this.options) !== null && _this$options4 !== void 0 && _this$options4.shimDisconnect && !((_getClient$storage4 = getClient().storage) !== null && _getClient$storage4 !== void 0 && _getClient$storage4.getItem(shimKey))) return false;
195
+ const provider = await this.getProvider();
196
+ if (!provider) throw new ConnectorNotFoundError();
197
+ const accounts = await provider.request({
198
+ method: 'eth_accounts'
199
+ });
200
+ const account = accounts[0];
201
+ return !!account;
202
+ } catch {
203
+ return false;
204
+ }
205
+ }
206
+
207
+ async switchChain(chainId) {
208
+ const provider = await this.getProvider();
209
+ if (!provider) throw new ConnectorNotFoundError();
210
+ const id = hexValue(chainId);
211
+
212
+ try {
213
+ var _chains$find;
214
+
215
+ await provider.request({
216
+ method: 'wallet_switchEthereumChain',
217
+ params: [{
218
+ chainId: id
219
+ }]
220
+ });
221
+ const chains = [...this.chains, ...allChains];
222
+ return (_chains$find = chains.find(x => x.id === chainId)) !== null && _chains$find !== void 0 ? _chains$find : {
223
+ id: chainId,
224
+ name: "Chain ".concat(id),
225
+ rpcUrls: {
226
+ default: ''
227
+ }
228
+ };
229
+ } catch (error) {
230
+ // Indicates chain is not added to provider
231
+ if (error.code === 4902) {
232
+ try {
233
+ const chain = this.chains.find(x => x.id === chainId);
234
+ if (!chain) throw new ChainNotConfiguredError();
235
+ await provider.request({
236
+ method: 'wallet_addEthereumChain',
237
+ params: [{
238
+ chainId: id,
239
+ chainName: chain.name,
240
+ nativeCurrency: chain.nativeCurrency,
241
+ rpcUrls: [chain.rpcUrls.default],
242
+ blockExplorerUrls: this.getBlockExplorerUrls(chain)
243
+ }]
244
+ });
245
+ return chain;
246
+ } catch (addError) {
247
+ throw new AddChainError();
248
+ }
249
+ } else if (error.code === 4001) throw new UserRejectedRequestError();else throw new SwitchChainError();
250
+ }
251
+ }
252
+
253
+ async watchAsset(_ref) {
254
+ let {
255
+ address,
256
+ decimals = 18,
257
+ image,
258
+ symbol
259
+ } = _ref;
260
+ const provider = await this.getProvider();
261
+ if (!provider) throw new ConnectorNotFoundError();
262
+ return await provider.request({
263
+ method: 'wallet_watchAsset',
264
+ params: {
265
+ type: 'ERC20',
266
+ options: {
267
+ address,
268
+ decimals,
269
+ image,
270
+ symbol
271
+ }
272
+ }
273
+ });
274
+ }
275
+
276
+ }
277
+
278
+ const noopStorage = {
279
+ getItem: _key => '',
280
+ setItem: (_key, _value) => null,
281
+ removeItem: _key => null
282
+ };
283
+ function createStorage(_ref) {
284
+ let {
285
+ storage,
286
+ key: prefix = 'wagmi'
287
+ } = _ref;
288
+ return { ...storage,
289
+ getItem: function (key) {
290
+ let defaultState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
291
+ const value = storage.getItem("".concat(prefix, ".").concat(key));
292
+
293
+ try {
294
+ return value ? JSON.parse(value) : defaultState;
295
+ } catch (error) {
296
+ console.warn(error);
297
+ return defaultState;
298
+ }
299
+ },
300
+ setItem: (key, value) => {
301
+ if (value === null) {
302
+ storage.removeItem("".concat(prefix, ".").concat(key));
303
+ } else {
304
+ try {
305
+ storage.setItem("".concat(prefix, ".").concat(key), JSON.stringify(value));
306
+ } catch (err) {
307
+ console.error(err);
308
+ }
309
+ }
310
+ },
311
+ removeItem: key => storage.removeItem("".concat(prefix, ".").concat(key))
312
+ };
313
+ }
314
+
315
+ const storeKey = 'store';
316
+
317
+ var _lastUsedConnector = /*#__PURE__*/new WeakMap();
318
+
319
+ var _addEffects = /*#__PURE__*/new WeakSet();
320
+
321
+ class Client {
322
+ constructor() {
323
+ var _config$autoConnect, _config$connectors, _config$provider, _config$storage;
324
+
325
+ let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
326
+
327
+ _classPrivateMethodInitSpec(this, _addEffects);
328
+
329
+ _defineProperty(this, "config", void 0);
330
+
331
+ _defineProperty(this, "storage", void 0);
332
+
333
+ _defineProperty(this, "store", void 0);
334
+
335
+ _classPrivateFieldInitSpec(this, _lastUsedConnector, {
336
+ writable: true,
337
+ value: void 0
338
+ });
339
+
340
+ // Set default values for config
341
+ const autoConnect = (_config$autoConnect = config.autoConnect) !== null && _config$autoConnect !== void 0 ? _config$autoConnect : false;
342
+
343
+ const _connectors = (_config$connectors = config.connectors) !== null && _config$connectors !== void 0 ? _config$connectors : [new InjectedConnector()];
344
+
345
+ const _provider = (_config$provider = config.provider) !== null && _config$provider !== void 0 ? _config$provider : config => {
346
+ try {
347
+ return getDefaultProvider(config.chainId);
348
+ } catch {
349
+ return getDefaultProvider();
350
+ }
351
+ };
352
+
353
+ const storage = (_config$storage = config.storage) !== null && _config$storage !== void 0 ? _config$storage : createStorage({
354
+ storage: typeof window !== 'undefined' ? window.localStorage : noopStorage
355
+ });
356
+ const _webSocketProvider = config.webSocketProvider; // Check status for autoConnect flag
357
+
358
+ let status = 'disconnected';
359
+
360
+ let _chainId;
361
+
362
+ if (autoConnect) {
363
+ try {
364
+ var _JSON$parse, _JSON$parse$state, _data$chain;
365
+
366
+ const rawState = storage.getItem(storeKey, '');
367
+ const data = (_JSON$parse = JSON.parse(rawState || '{}')) === null || _JSON$parse === void 0 ? void 0 : (_JSON$parse$state = _JSON$parse.state) === null || _JSON$parse$state === void 0 ? void 0 : _JSON$parse$state.data; // If account exists in localStorage, set status to reconnecting
368
+
369
+ status = data !== null && data !== void 0 && data.account ? 'reconnecting' : 'connecting';
370
+ _chainId = data === null || data === void 0 ? void 0 : (_data$chain = data.chain) === null || _data$chain === void 0 ? void 0 : _data$chain.id; // eslint-disable-next-line no-empty
371
+ } catch (_error) {}
372
+ } // Evaluate initial store values
373
+
374
+
375
+ const connectors_ = typeof _connectors === 'function' ? _connectors({
376
+ chainId: _chainId
377
+ }) : _connectors;
378
+ const provider_ = typeof _provider === 'function' ? _provider({
379
+ chainId: _chainId
380
+ }) : _provider;
381
+ const webSocketProvider_ = typeof _webSocketProvider === 'function' ? _webSocketProvider({
382
+ chainId: _chainId
383
+ }) : _webSocketProvider; // Create store
384
+
385
+ this.store = create(subscribeWithSelector(persist(() => ({
386
+ connectors: connectors_,
387
+ provider: provider_,
388
+ status,
389
+ webSocketProvider: webSocketProvider_
390
+ }), {
391
+ name: storeKey,
392
+ getStorage: () => storage,
393
+ partialize: state => {
394
+ var _state$data, _state$data2;
395
+
396
+ return { ...(autoConnect && {
397
+ data: {
398
+ account: state === null || state === void 0 ? void 0 : (_state$data = state.data) === null || _state$data === void 0 ? void 0 : _state$data.account,
399
+ chain: state === null || state === void 0 ? void 0 : (_state$data2 = state.data) === null || _state$data2 === void 0 ? void 0 : _state$data2.chain
400
+ }
401
+ }),
402
+ chains: state === null || state === void 0 ? void 0 : state.chains
403
+ };
404
+ },
405
+ version: 1
406
+ })));
407
+ this.config = {
408
+ autoConnect,
409
+ connectors: _connectors,
410
+ provider: _provider,
411
+ storage,
412
+ webSocketProvider: _webSocketProvider
413
+ };
414
+ this.storage = storage;
415
+
416
+ _classPrivateFieldSet(this, _lastUsedConnector, storage === null || storage === void 0 ? void 0 : storage.getItem('wallet'));
417
+
418
+ _classPrivateMethodGet(this, _addEffects, _addEffects2).call(this);
419
+ }
420
+
421
+ get chains() {
422
+ return this.store.getState().chains;
423
+ }
424
+
425
+ get connectors() {
426
+ return this.store.getState().connectors;
427
+ }
428
+
429
+ get connector() {
430
+ return this.store.getState().connector;
431
+ }
432
+
433
+ get data() {
434
+ return this.store.getState().data;
435
+ }
436
+
437
+ get error() {
438
+ return this.store.getState().error;
439
+ }
440
+
441
+ get provider() {
442
+ return this.store.getState().provider;
443
+ }
444
+
445
+ get status() {
446
+ return this.store.getState().status;
447
+ }
448
+
449
+ get subscribe() {
450
+ return this.store.subscribe;
451
+ }
452
+
453
+ get webSocketProvider() {
454
+ return this.store.getState().webSocketProvider;
455
+ }
456
+
457
+ setState(updater) {
458
+ const newState = typeof updater === 'function' ? updater(this.store.getState()) : updater;
459
+ this.store.setState(newState, true);
460
+ }
461
+
462
+ clearState() {
463
+ this.setState(x => ({ ...x,
464
+ connector: undefined,
465
+ data: undefined,
466
+ error: undefined,
467
+ status: 'disconnected'
468
+ }));
469
+ }
470
+
471
+ async destroy() {
472
+ var _this$connector$disco, _this$connector;
473
+
474
+ if (this.connector) await ((_this$connector$disco = (_this$connector = this.connector).disconnect) === null || _this$connector$disco === void 0 ? void 0 : _this$connector$disco.call(_this$connector));
475
+ this.clearState();
476
+ this.store.destroy();
477
+ }
478
+
479
+ async autoConnect() {
480
+ if (!this.connectors.length) return; // Try last used connector first
481
+
482
+ const sorted = _classPrivateFieldGet(this, _lastUsedConnector) ? [...this.connectors].sort(x => x.id === _classPrivateFieldGet(this, _lastUsedConnector) ? -1 : 1) : this.connectors;
483
+ let connected = false;
484
+
485
+ for (const connector of sorted) {
486
+ if (!connector.ready || !connector.isAuthorized) continue;
487
+ const isAuthorized = await connector.isAuthorized();
488
+ if (!isAuthorized) continue;
489
+ const data = await connector.connect();
490
+ this.setState(x => ({ ...x,
491
+ connector,
492
+ chains: connector === null || connector === void 0 ? void 0 : connector.chains,
493
+ data,
494
+ status: 'connected'
495
+ }));
496
+ connected = true;
497
+ break;
498
+ } // If connecting didn't succeed, set to disconnected
499
+
500
+
501
+ if (!connected) this.setState(x => ({ ...x,
502
+ status: 'disconnected'
503
+ }));
504
+ return this.data;
505
+ }
506
+
507
+ setLastUsedConnector() {
508
+ var _this$storage;
509
+
510
+ let lastUsedConnector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
511
+ (_this$storage = this.storage) === null || _this$storage === void 0 ? void 0 : _this$storage.setItem('wallet', lastUsedConnector);
512
+ }
513
+
514
+ }
515
+
516
+ function _addEffects2() {
517
+ const onChange = data => {
518
+ this.setState(x => ({ ...x,
519
+ data: { ...x.data,
520
+ ...data
521
+ }
522
+ }));
523
+ };
524
+
525
+ const onDisconnect = () => {
526
+ this.clearState();
527
+ };
528
+
529
+ const onError = error => {
530
+ this.setState(x => ({ ...x,
531
+ error
532
+ }));
533
+ };
534
+
535
+ this.store.subscribe(_ref => {
536
+ let {
537
+ connector
538
+ } = _ref;
539
+ return connector;
540
+ }, (connector, prevConnector) => {
541
+ var _prevConnector$off, _prevConnector$off2, _prevConnector$off3, _connector$on, _connector$on2, _connector$on3;
542
+
543
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off = prevConnector.off) === null || _prevConnector$off === void 0 ? void 0 : _prevConnector$off.call(prevConnector, 'change', onChange);
544
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off2 = prevConnector.off) === null || _prevConnector$off2 === void 0 ? void 0 : _prevConnector$off2.call(prevConnector, 'disconnect', onDisconnect);
545
+ prevConnector === null || prevConnector === void 0 ? void 0 : (_prevConnector$off3 = prevConnector.off) === null || _prevConnector$off3 === void 0 ? void 0 : _prevConnector$off3.call(prevConnector, 'error', onError);
546
+ if (!connector) return;
547
+ (_connector$on = connector.on) === null || _connector$on === void 0 ? void 0 : _connector$on.call(connector, 'change', onChange);
548
+ (_connector$on2 = connector.on) === null || _connector$on2 === void 0 ? void 0 : _connector$on2.call(connector, 'disconnect', onDisconnect);
549
+ (_connector$on3 = connector.on) === null || _connector$on3 === void 0 ? void 0 : _connector$on3.call(connector, 'error', onError);
550
+ });
551
+ const {
552
+ connectors,
553
+ provider,
554
+ webSocketProvider
555
+ } = this.config;
556
+ const subscribeConnectors = typeof connectors === 'function';
557
+ const subscribeProvider = typeof provider === 'function';
558
+ const subscribeWebSocketProvider = typeof webSocketProvider === 'function';
559
+ if (subscribeConnectors || subscribeProvider || subscribeWebSocketProvider) this.store.subscribe(_ref2 => {
560
+ var _data$chain2;
561
+
562
+ let {
563
+ data
564
+ } = _ref2;
565
+ return data === null || data === void 0 ? void 0 : (_data$chain2 = data.chain) === null || _data$chain2 === void 0 ? void 0 : _data$chain2.id;
566
+ }, chainId => {
567
+ this.setState(x => ({ ...x,
568
+ connectors: subscribeConnectors ? connectors({
569
+ chainId
570
+ }) : x.connectors,
571
+ provider: subscribeProvider ? provider({
572
+ chainId
573
+ }) : x.provider,
574
+ webSocketProvider: subscribeWebSocketProvider ? webSocketProvider({
575
+ chainId
576
+ }) : x.webSocketProvider
577
+ }));
578
+ });
579
+ }
580
+
581
+ let client;
582
+ function createClient(config) {
583
+ const client_ = new Client(config);
584
+ client = client_;
585
+ return client_;
586
+ }
587
+ function getClient() {
588
+ if (!client) {
589
+ warn('No client defined. Falling back to default client.');
590
+ return new Client();
591
+ }
592
+
593
+ return client;
594
+ }
595
+
596
+ export { Client as C, InjectedConnector as I, createClient as a, createStorage as b, client as c, getClient as g, noopStorage as n };