@dynamic-labs/ethereum 0.19.0-alpha.7 → 0.19.0-alpha.9

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 (82) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/package.json +8 -8
  3. package/src/ethProviderHelper.cjs +54 -132
  4. package/src/ethProviderHelper.d.ts +20 -29
  5. package/src/ethProviderHelper.js +55 -133
  6. package/src/index.cjs +23 -21
  7. package/src/index.d.ts +1 -0
  8. package/src/index.js +18 -16
  9. package/src/injected/BloctoInjected.cjs +2 -2
  10. package/src/injected/BloctoInjected.d.ts +2 -2
  11. package/src/injected/BloctoInjected.js +2 -2
  12. package/src/injected/BraveEvm.cjs +2 -2
  13. package/src/injected/BraveEvm.d.ts +2 -2
  14. package/src/injected/BraveEvm.js +2 -2
  15. package/src/injected/Dawn.cjs +2 -2
  16. package/src/injected/Dawn.d.ts +2 -2
  17. package/src/injected/Dawn.js +2 -2
  18. package/src/injected/ExodusEvm.cjs +2 -2
  19. package/src/injected/ExodusEvm.d.ts +2 -2
  20. package/src/injected/ExodusEvm.js +2 -2
  21. package/src/injected/Frame.cjs +2 -2
  22. package/src/injected/Frame.d.ts +2 -2
  23. package/src/injected/Frame.js +2 -2
  24. package/src/injected/GameStop.cjs +2 -2
  25. package/src/injected/GameStop.d.ts +2 -2
  26. package/src/injected/GameStop.js +2 -2
  27. package/src/injected/InjectedWalletBase.cjs +23 -10
  28. package/src/injected/InjectedWalletBase.d.ts +6 -1
  29. package/src/injected/InjectedWalletBase.js +23 -10
  30. package/src/injected/LegacyInjectedWalletBase.cjs +77 -0
  31. package/src/injected/LegacyInjectedWalletBase.d.ts +24 -0
  32. package/src/injected/LegacyInjectedWalletBase.js +75 -0
  33. package/src/injected/MetaMask.cjs +2 -2
  34. package/src/injected/MetaMask.d.ts +2 -2
  35. package/src/injected/MetaMask.js +2 -2
  36. package/src/injected/Opera.cjs +2 -2
  37. package/src/injected/Opera.d.ts +2 -2
  38. package/src/injected/Opera.js +2 -2
  39. package/src/injected/PhantomEvm.cjs +2 -2
  40. package/src/injected/PhantomEvm.d.ts +2 -2
  41. package/src/injected/PhantomEvm.js +2 -2
  42. package/src/injected/Rabby.cjs +2 -2
  43. package/src/injected/Rabby.d.ts +2 -2
  44. package/src/injected/Rabby.js +2 -2
  45. package/src/injected/Superb.cjs +2 -2
  46. package/src/injected/Superb.d.ts +2 -2
  47. package/src/injected/Superb.js +2 -2
  48. package/src/injected/Trust.cjs +2 -2
  49. package/src/injected/Trust.d.ts +2 -2
  50. package/src/injected/Trust.js +2 -2
  51. package/src/injected/Zerion.cjs +2 -2
  52. package/src/injected/Zerion.d.ts +2 -2
  53. package/src/injected/Zerion.js +2 -2
  54. package/src/injected/fetchInjectedWalletConnectors.cjs +32 -0
  55. package/src/injected/fetchInjectedWalletConnectors.d.ts +6 -0
  56. package/src/injected/fetchInjectedWalletConnectors.js +28 -0
  57. package/src/injected/index.d.ts +2 -4
  58. package/src/injected/{index.cjs → legacyInjectedWallets.cjs} +19 -21
  59. package/src/injected/legacyInjectedWallets.d.ts +3 -0
  60. package/src/injected/legacyInjectedWallets.js +46 -0
  61. package/src/legacyEthProviderHelper.cjs +193 -0
  62. package/src/legacyEthProviderHelper.d.ts +33 -0
  63. package/src/legacyEthProviderHelper.js +189 -0
  64. package/src/types.d.ts +11 -0
  65. package/src/utils/eventListenerHandlers.cjs +34 -0
  66. package/src/utils/eventListenerHandlers.d.ts +8 -0
  67. package/src/utils/eventListenerHandlers.js +30 -0
  68. package/src/walletConnect/fetchWalletConnectWallets.cjs +1 -16
  69. package/src/walletConnect/fetchWalletConnectWallets.d.ts +0 -1
  70. package/src/walletConnect/fetchWalletConnectWallets.js +2 -16
  71. package/src/walletConnect/walletConnect.cjs +4 -4
  72. package/src/walletConnect/walletConnect.js +4 -4
  73. package/src/walletConnect/walletConnectV2.cjs +16 -9
  74. package/src/walletConnect/walletConnectV2.d.ts +1 -0
  75. package/src/walletConnect/walletConnectV2.js +16 -9
  76. package/src/injected/OKX.cjs +0 -15
  77. package/src/injected/OKX.d.ts +0 -5
  78. package/src/injected/OKX.js +0 -11
  79. package/src/injected/UnknownInjectedWallet.cjs +0 -14
  80. package/src/injected/UnknownInjectedWallet.d.ts +0 -4
  81. package/src/injected/UnknownInjectedWallet.js +0 -10
  82. package/src/injected/index.js +0 -49
@@ -0,0 +1,46 @@
1
+ import { BloctoInjected } from './BloctoInjected.js';
2
+ import { BraveEvm } from './BraveEvm.js';
3
+ import { Dawn } from './Dawn.js';
4
+ import { ExodusEvm } from './ExodusEvm.js';
5
+ import { Frame } from './Frame.js';
6
+ import { GameStop } from './GameStop.js';
7
+ import { MetaMask } from './MetaMask.js';
8
+ import { Opera } from './Opera.js';
9
+ import { PhantomEvm } from './PhantomEvm.js';
10
+ import { Trust } from './Trust.js';
11
+ import { Zerion } from './Zerion.js';
12
+ import { Superb } from './Superb.js';
13
+ import { Rabby } from './Rabby.js';
14
+
15
+ const legacyInjectedWallets = [
16
+ PhantomEvm,
17
+ BloctoInjected,
18
+ BraveEvm,
19
+ Dawn,
20
+ ExodusEvm,
21
+ Frame,
22
+ GameStop,
23
+ MetaMask,
24
+ Opera,
25
+ Trust,
26
+ Zerion,
27
+ Superb,
28
+ Rabby,
29
+ ];
30
+ const filteredLegacyInjectedWalletKeys = [
31
+ 'phantomevm',
32
+ 'coinbase',
33
+ 'bloctoinjected',
34
+ 'dawn',
35
+ 'exodusevm',
36
+ 'frame',
37
+ 'gamestop',
38
+ 'metamask',
39
+ 'opera',
40
+ 'trust',
41
+ 'zerion',
42
+ 'superb',
43
+ 'rabby',
44
+ ];
45
+
46
+ export { filteredLegacyInjectedWalletKeys, legacyInjectedWallets };
@@ -0,0 +1,193 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _tslib = require('../_virtual/_tslib.cjs');
6
+ var ethers = require('ethers');
7
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
+ var isUnsupportedProviderError = require('./utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs');
9
+ var eventListenerHandlers = require('./utils/eventListenerHandlers.cjs');
10
+
11
+ var _a;
12
+ class LegacyEthProviderHelper {
13
+ static installedProviderLookup(providerFlags) {
14
+ const allInstalledProviders = this.allInstalledProviders();
15
+ return walletConnectorCore.ProviderLookup(allInstalledProviders, providerFlags);
16
+ }
17
+ static allInstalledProviders() {
18
+ var _b;
19
+ const ethereumProviders = [];
20
+ if (window.ethereum) {
21
+ if (!window.ethereum.providers) {
22
+ ethereumProviders.push(window.ethereum);
23
+ }
24
+ else {
25
+ window.ethereum.providers.forEach((provider) => {
26
+ ethereumProviders.push(provider);
27
+ });
28
+ }
29
+ }
30
+ if ((_b = window.phantom) === null || _b === void 0 ? void 0 : _b.ethereum) {
31
+ ethereumProviders.push(window.phantom.ethereum);
32
+ }
33
+ if (window.zerionWallet) {
34
+ ethereumProviders.push(window.zerionWallet);
35
+ }
36
+ if (window.coinbaseWalletExtension) {
37
+ ethereumProviders.push(window.coinbaseWalletExtension);
38
+ }
39
+ if (window.superb) {
40
+ ethereumProviders.push(window.superb);
41
+ }
42
+ return ethereumProviders;
43
+ }
44
+ static isInstalledHelper(walletName) {
45
+ return this.findProvider(walletName) !== undefined;
46
+ }
47
+ static findProvider(walletName) {
48
+ var _b, _c;
49
+ try {
50
+ const provider = (_c = (_b = this.providers)[walletConnectorCore.normalizeWalletName(walletName)]) === null || _c === void 0 ? void 0 : _c.call(_b);
51
+ return provider === undefined
52
+ ? undefined
53
+ : new ethers.ethers.providers.Web3Provider(provider, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
54
+ }
55
+ catch (err) {
56
+ if (isUnsupportedProviderError.isUnsupportedProviderError(err)) {
57
+ walletConnectorCore.logger.error(`ETH Provider is not supported ${err.value}`, err);
58
+ return;
59
+ }
60
+ walletConnectorCore.logger.error(`Could not find provider for ${walletName}`, err);
61
+ return undefined;
62
+ }
63
+ }
64
+ static fetchPublicAddressWithName(name) {
65
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
66
+ const provider = this.findProvider(name);
67
+ if (!provider) {
68
+ return Promise.resolve(undefined);
69
+ }
70
+ return this.fetchPublicAddressWithProvider(provider);
71
+ });
72
+ }
73
+ static fetchPublicAddressWithProvider(provider) {
74
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
75
+ try {
76
+ const [lowercaseAddress] = yield provider.send('eth_requestAccounts', []);
77
+ const publicAddress = ethers.utils.getAddress(lowercaseAddress);
78
+ return publicAddress;
79
+ }
80
+ catch (err) {
81
+ walletConnectorCore.logger.error(err);
82
+ return Promise.reject(err);
83
+ }
84
+ });
85
+ }
86
+ static signMessageWithName(messageToSign, name) {
87
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
88
+ const walletAddress = yield this.fetchPublicAddressWithName(name);
89
+ if (!walletAddress) {
90
+ return Promise.resolve(undefined);
91
+ }
92
+ const provider = this.findProvider(name);
93
+ if (!provider) {
94
+ return Promise.resolve(undefined);
95
+ }
96
+ const signer = provider.getSigner();
97
+ const signedMessage = yield signer.signMessage(messageToSign);
98
+ return signedMessage;
99
+ });
100
+ }
101
+ static _setupEventListeners(name, walletConnector, web3Provider) {
102
+ if (!web3Provider) {
103
+ return {
104
+ tearDownEventListeners: () => { },
105
+ };
106
+ }
107
+ const externalProvider = web3Provider.provider;
108
+ const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers.eventListenerHandlers(walletConnector, web3Provider);
109
+ externalProvider.on('accountsChanged', handleAccountChange);
110
+ externalProvider.on('chainChanged', handleChainChange);
111
+ externalProvider.on('disconnect', handleDisconnect);
112
+ const tearDownEventListeners = () => {
113
+ const web3Provider = this.findProvider(name);
114
+ if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
115
+ return;
116
+ }
117
+ const externalProvider = web3Provider.provider;
118
+ if (handleAccountChange) {
119
+ externalProvider.removeListener('accountsChanged', handleAccountChange);
120
+ }
121
+ if (handleChainChange) {
122
+ externalProvider.removeListener('chainChanged', handleChainChange);
123
+ }
124
+ if (handleDisconnect) {
125
+ externalProvider.removeListener('disconnect', handleDisconnect);
126
+ }
127
+ };
128
+ return {
129
+ tearDownEventListeners,
130
+ };
131
+ }
132
+ }
133
+ _a = LegacyEthProviderHelper;
134
+ LegacyEthProviderHelper.MetamaskProvider = () =>
135
+ // Stop these wallets from showing up as MetaMask
136
+ _a.installedProviderLookup([
137
+ { flag: 'isDawn', value: false },
138
+ { flag: 'isBraveWallet', value: false },
139
+ { flag: 'isTrustWallet', value: false },
140
+ { flag: 'isExodus', value: false },
141
+ { flag: 'isPhantom', value: false },
142
+ { flag: 'isZerion', value: false },
143
+ { flag: 'isMetaMask', value: true },
144
+ { flag: 'isSuperb', value: false },
145
+ { flag: 'isRabby', value: false },
146
+ ]);
147
+ LegacyEthProviderHelper.BraveProvider = () => _a.installedProviderLookup([{ flag: 'isBraveWallet', value: true }]);
148
+ LegacyEthProviderHelper.DawnProvider = () => _a.installedProviderLookup([{ flag: 'isDawn', value: true }]);
149
+ LegacyEthProviderHelper.FrameProvider = () => _a.installedProviderLookup([{ flag: 'isFrame', value: true }]);
150
+ LegacyEthProviderHelper.CoinbaseProvider = () => _a.installedProviderLookup([{ flag: 'isCoinbaseWallet', value: true }]);
151
+ LegacyEthProviderHelper.OperaProvider = () => _a.installedProviderLookup([{ flag: 'isOpera', value: true }]);
152
+ LegacyEthProviderHelper.GameStopProvider = () => _a.installedProviderLookup([{ flag: 'isGamestop', value: true }]);
153
+ LegacyEthProviderHelper.ExodusProvider = () => _a.installedProviderLookup([{ flag: 'isExodus', value: true }]);
154
+ LegacyEthProviderHelper.BloctoProvider = () => _a.installedProviderLookup([{ flag: 'isBlocto', value: true }]);
155
+ LegacyEthProviderHelper.TrustWalletProvider = () => _a.installedProviderLookup([{ flag: 'isTrustWallet', value: true }]);
156
+ LegacyEthProviderHelper.PhantomProvider = () => _a.installedProviderLookup([{ flag: 'isPhantom', value: true }]);
157
+ LegacyEthProviderHelper.ZerionProvider = () => _a.installedProviderLookup([{ flag: 'isZerion', value: true }]);
158
+ LegacyEthProviderHelper.SuperbProvider = () => _a.installedProviderLookup([{ flag: 'isSuperb', value: true }]);
159
+ LegacyEthProviderHelper.RabbyProvider = () => _a.installedProviderLookup([{ flag: 'isRabby', value: true }]);
160
+ LegacyEthProviderHelper.UnknownInjectedProvider = () => _a.installedProviderLookup([
161
+ { flag: 'isMetaMask', value: false },
162
+ { flag: 'isExodus', value: false },
163
+ { flag: 'isCoinbaseWallet', value: false },
164
+ { flag: 'isBraveWallet', value: false },
165
+ { flag: 'isGamestop', value: false },
166
+ { flag: 'isFrame', value: false },
167
+ { flag: 'isOpera', value: false },
168
+ { flag: 'isBlocto', value: false },
169
+ { flag: 'isTrustWallet', value: false },
170
+ { flag: 'isPhantom', value: false },
171
+ { flag: 'isZerion', value: false },
172
+ { flag: 'isSuperb', value: false },
173
+ { flag: 'isRabby', value: false },
174
+ ]);
175
+ LegacyEthProviderHelper.providers = {
176
+ bloctoinjected: _a.BloctoProvider,
177
+ braveevm: _a.BraveProvider,
178
+ coinbase: _a.CoinbaseProvider,
179
+ dawn: _a.DawnProvider,
180
+ exodusevm: _a.ExodusProvider,
181
+ frame: _a.FrameProvider,
182
+ gamestop: _a.GameStopProvider,
183
+ injectedwallet: _a.UnknownInjectedProvider,
184
+ metamask: _a.MetamaskProvider,
185
+ opera: _a.OperaProvider,
186
+ phantomevm: _a.PhantomProvider,
187
+ rabby: _a.RabbyProvider,
188
+ superb: _a.SuperbProvider,
189
+ trust: _a.TrustWalletProvider,
190
+ zerion: _a.ZerionProvider,
191
+ };
192
+
193
+ exports.LegacyEthProviderHelper = LegacyEthProviderHelper;
@@ -0,0 +1,33 @@
1
+ import { ethers } from 'ethers';
2
+ import { ProviderCondition, WalletConnector } from '@dynamic-labs/wallet-connector-core';
3
+ import { IEthereum, ProviderFlag, Provider } from './types';
4
+ export declare class LegacyEthProviderHelper {
5
+ static MetamaskProvider: Provider;
6
+ static BraveProvider: Provider;
7
+ static DawnProvider: Provider;
8
+ static FrameProvider: Provider;
9
+ static CoinbaseProvider: Provider;
10
+ static OperaProvider: Provider;
11
+ static GameStopProvider: Provider;
12
+ static ExodusProvider: Provider;
13
+ static BloctoProvider: Provider;
14
+ static TrustWalletProvider: Provider;
15
+ static PhantomProvider: Provider;
16
+ static ZerionProvider: Provider;
17
+ static SuperbProvider: Provider;
18
+ static RabbyProvider: Provider;
19
+ static UnknownInjectedProvider: Provider;
20
+ static providers: {
21
+ [wallet: string]: Provider;
22
+ };
23
+ static installedProviderLookup(providerFlags: Array<ProviderCondition<ProviderFlag>>): IEthereum | undefined;
24
+ static allInstalledProviders(): IEthereum[];
25
+ static isInstalledHelper(walletName: string): boolean;
26
+ static findProvider(walletName: string): ethers.providers.Web3Provider | undefined;
27
+ static fetchPublicAddressWithName(name: string): Promise<string | undefined>;
28
+ static fetchPublicAddressWithProvider(provider: ethers.providers.Web3Provider): Promise<string | undefined>;
29
+ static signMessageWithName(messageToSign: string, name: string): Promise<string | undefined>;
30
+ static _setupEventListeners(name: string, walletConnector: WalletConnector, web3Provider?: ethers.providers.Web3Provider): {
31
+ tearDownEventListeners: () => void;
32
+ };
33
+ }
@@ -0,0 +1,189 @@
1
+ import { __awaiter } from '../_virtual/_tslib.js';
2
+ import { ethers, utils } from 'ethers';
3
+ import { ProviderLookup, normalizeWalletName, logger } from '@dynamic-labs/wallet-connector-core';
4
+ import { isUnsupportedProviderError } from './utils/isUnsupportedProviderError/isUnsupportedProviderError.js';
5
+ import { eventListenerHandlers } from './utils/eventListenerHandlers.js';
6
+
7
+ var _a;
8
+ class LegacyEthProviderHelper {
9
+ static installedProviderLookup(providerFlags) {
10
+ const allInstalledProviders = this.allInstalledProviders();
11
+ return ProviderLookup(allInstalledProviders, providerFlags);
12
+ }
13
+ static allInstalledProviders() {
14
+ var _b;
15
+ const ethereumProviders = [];
16
+ if (window.ethereum) {
17
+ if (!window.ethereum.providers) {
18
+ ethereumProviders.push(window.ethereum);
19
+ }
20
+ else {
21
+ window.ethereum.providers.forEach((provider) => {
22
+ ethereumProviders.push(provider);
23
+ });
24
+ }
25
+ }
26
+ if ((_b = window.phantom) === null || _b === void 0 ? void 0 : _b.ethereum) {
27
+ ethereumProviders.push(window.phantom.ethereum);
28
+ }
29
+ if (window.zerionWallet) {
30
+ ethereumProviders.push(window.zerionWallet);
31
+ }
32
+ if (window.coinbaseWalletExtension) {
33
+ ethereumProviders.push(window.coinbaseWalletExtension);
34
+ }
35
+ if (window.superb) {
36
+ ethereumProviders.push(window.superb);
37
+ }
38
+ return ethereumProviders;
39
+ }
40
+ static isInstalledHelper(walletName) {
41
+ return this.findProvider(walletName) !== undefined;
42
+ }
43
+ static findProvider(walletName) {
44
+ var _b, _c;
45
+ try {
46
+ const provider = (_c = (_b = this.providers)[normalizeWalletName(walletName)]) === null || _c === void 0 ? void 0 : _c.call(_b);
47
+ return provider === undefined
48
+ ? undefined
49
+ : new ethers.providers.Web3Provider(provider, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
50
+ }
51
+ catch (err) {
52
+ if (isUnsupportedProviderError(err)) {
53
+ logger.error(`ETH Provider is not supported ${err.value}`, err);
54
+ return;
55
+ }
56
+ logger.error(`Could not find provider for ${walletName}`, err);
57
+ return undefined;
58
+ }
59
+ }
60
+ static fetchPublicAddressWithName(name) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ const provider = this.findProvider(name);
63
+ if (!provider) {
64
+ return Promise.resolve(undefined);
65
+ }
66
+ return this.fetchPublicAddressWithProvider(provider);
67
+ });
68
+ }
69
+ static fetchPublicAddressWithProvider(provider) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ try {
72
+ const [lowercaseAddress] = yield provider.send('eth_requestAccounts', []);
73
+ const publicAddress = utils.getAddress(lowercaseAddress);
74
+ return publicAddress;
75
+ }
76
+ catch (err) {
77
+ logger.error(err);
78
+ return Promise.reject(err);
79
+ }
80
+ });
81
+ }
82
+ static signMessageWithName(messageToSign, name) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ const walletAddress = yield this.fetchPublicAddressWithName(name);
85
+ if (!walletAddress) {
86
+ return Promise.resolve(undefined);
87
+ }
88
+ const provider = this.findProvider(name);
89
+ if (!provider) {
90
+ return Promise.resolve(undefined);
91
+ }
92
+ const signer = provider.getSigner();
93
+ const signedMessage = yield signer.signMessage(messageToSign);
94
+ return signedMessage;
95
+ });
96
+ }
97
+ static _setupEventListeners(name, walletConnector, web3Provider) {
98
+ if (!web3Provider) {
99
+ return {
100
+ tearDownEventListeners: () => { },
101
+ };
102
+ }
103
+ const externalProvider = web3Provider.provider;
104
+ const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers(walletConnector, web3Provider);
105
+ externalProvider.on('accountsChanged', handleAccountChange);
106
+ externalProvider.on('chainChanged', handleChainChange);
107
+ externalProvider.on('disconnect', handleDisconnect);
108
+ const tearDownEventListeners = () => {
109
+ const web3Provider = this.findProvider(name);
110
+ if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
111
+ return;
112
+ }
113
+ const externalProvider = web3Provider.provider;
114
+ if (handleAccountChange) {
115
+ externalProvider.removeListener('accountsChanged', handleAccountChange);
116
+ }
117
+ if (handleChainChange) {
118
+ externalProvider.removeListener('chainChanged', handleChainChange);
119
+ }
120
+ if (handleDisconnect) {
121
+ externalProvider.removeListener('disconnect', handleDisconnect);
122
+ }
123
+ };
124
+ return {
125
+ tearDownEventListeners,
126
+ };
127
+ }
128
+ }
129
+ _a = LegacyEthProviderHelper;
130
+ LegacyEthProviderHelper.MetamaskProvider = () =>
131
+ // Stop these wallets from showing up as MetaMask
132
+ _a.installedProviderLookup([
133
+ { flag: 'isDawn', value: false },
134
+ { flag: 'isBraveWallet', value: false },
135
+ { flag: 'isTrustWallet', value: false },
136
+ { flag: 'isExodus', value: false },
137
+ { flag: 'isPhantom', value: false },
138
+ { flag: 'isZerion', value: false },
139
+ { flag: 'isMetaMask', value: true },
140
+ { flag: 'isSuperb', value: false },
141
+ { flag: 'isRabby', value: false },
142
+ ]);
143
+ LegacyEthProviderHelper.BraveProvider = () => _a.installedProviderLookup([{ flag: 'isBraveWallet', value: true }]);
144
+ LegacyEthProviderHelper.DawnProvider = () => _a.installedProviderLookup([{ flag: 'isDawn', value: true }]);
145
+ LegacyEthProviderHelper.FrameProvider = () => _a.installedProviderLookup([{ flag: 'isFrame', value: true }]);
146
+ LegacyEthProviderHelper.CoinbaseProvider = () => _a.installedProviderLookup([{ flag: 'isCoinbaseWallet', value: true }]);
147
+ LegacyEthProviderHelper.OperaProvider = () => _a.installedProviderLookup([{ flag: 'isOpera', value: true }]);
148
+ LegacyEthProviderHelper.GameStopProvider = () => _a.installedProviderLookup([{ flag: 'isGamestop', value: true }]);
149
+ LegacyEthProviderHelper.ExodusProvider = () => _a.installedProviderLookup([{ flag: 'isExodus', value: true }]);
150
+ LegacyEthProviderHelper.BloctoProvider = () => _a.installedProviderLookup([{ flag: 'isBlocto', value: true }]);
151
+ LegacyEthProviderHelper.TrustWalletProvider = () => _a.installedProviderLookup([{ flag: 'isTrustWallet', value: true }]);
152
+ LegacyEthProviderHelper.PhantomProvider = () => _a.installedProviderLookup([{ flag: 'isPhantom', value: true }]);
153
+ LegacyEthProviderHelper.ZerionProvider = () => _a.installedProviderLookup([{ flag: 'isZerion', value: true }]);
154
+ LegacyEthProviderHelper.SuperbProvider = () => _a.installedProviderLookup([{ flag: 'isSuperb', value: true }]);
155
+ LegacyEthProviderHelper.RabbyProvider = () => _a.installedProviderLookup([{ flag: 'isRabby', value: true }]);
156
+ LegacyEthProviderHelper.UnknownInjectedProvider = () => _a.installedProviderLookup([
157
+ { flag: 'isMetaMask', value: false },
158
+ { flag: 'isExodus', value: false },
159
+ { flag: 'isCoinbaseWallet', value: false },
160
+ { flag: 'isBraveWallet', value: false },
161
+ { flag: 'isGamestop', value: false },
162
+ { flag: 'isFrame', value: false },
163
+ { flag: 'isOpera', value: false },
164
+ { flag: 'isBlocto', value: false },
165
+ { flag: 'isTrustWallet', value: false },
166
+ { flag: 'isPhantom', value: false },
167
+ { flag: 'isZerion', value: false },
168
+ { flag: 'isSuperb', value: false },
169
+ { flag: 'isRabby', value: false },
170
+ ]);
171
+ LegacyEthProviderHelper.providers = {
172
+ bloctoinjected: _a.BloctoProvider,
173
+ braveevm: _a.BraveProvider,
174
+ coinbase: _a.CoinbaseProvider,
175
+ dawn: _a.DawnProvider,
176
+ exodusevm: _a.ExodusProvider,
177
+ frame: _a.FrameProvider,
178
+ gamestop: _a.GameStopProvider,
179
+ injectedwallet: _a.UnknownInjectedProvider,
180
+ metamask: _a.MetamaskProvider,
181
+ opera: _a.OperaProvider,
182
+ phantomevm: _a.PhantomProvider,
183
+ rabby: _a.RabbyProvider,
184
+ superb: _a.SuperbProvider,
185
+ trust: _a.TrustWalletProvider,
186
+ zerion: _a.ZerionProvider,
187
+ };
188
+
189
+ export { LegacyEthProviderHelper };
package/src/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { ethers } from 'ethers';
1
2
  import { ProviderCondition } from '@dynamic-labs/wallet-connector-core';
2
3
  declare global {
3
4
  interface IWindowPhantom {
@@ -22,3 +23,13 @@ export type IEthereum = {
22
23
  };
23
24
  export type ProviderFlag = 'isDawn' | 'isBraveWallet' | 'isCoinbaseWallet' | 'isFrame' | 'isGamestop' | 'isMetaMask' | 'isExodus' | 'isOpera' | 'isBlocto' | 'isTrustWallet' | 'isZerion' | 'isPhantom' | 'isSuperb' | 'isRabby' | 'isOkxWallet';
24
25
  export type EthProviderCondition = ProviderCondition<ProviderFlag>;
26
+ export type Provider = () => ethers.providers.ExternalProvider | undefined;
27
+ export type AccountChangeEventHandler = (accounts: string[]) => Promise<void>;
28
+ export type ChainChangeEventHandler = (chainId: string | number) => Promise<void>;
29
+ export type DisconnectEventHandler = (error?: {
30
+ code: number;
31
+ }) => Promise<void>;
32
+ export type ExternalProviderEventEmitter = ethers.providers.ExternalProvider & {
33
+ on: (event: string, listener: (...args: Array<any>) => unknown) => void;
34
+ removeListener: (event: string, listener: (...args: Array<any>) => unknown) => void;
35
+ };
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _tslib = require('../../_virtual/_tslib.cjs');
6
+
7
+ const eventListenerHandlers = (walletConnector, web3Provider) => {
8
+ const handleAccountChange = (accounts) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
9
+ if (accounts.length === 0) {
10
+ walletConnector.emit('disconnect');
11
+ return;
12
+ }
13
+ walletConnector.emit('accountChange', { accounts });
14
+ });
15
+ const handleChainChange = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
16
+ const network = yield web3Provider.getNetwork();
17
+ walletConnector.emit('chainChange', {
18
+ chain: network.chainId.toString(),
19
+ });
20
+ });
21
+ const handleDisconnect = (error) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
22
+ if ((error === null || error === void 0 ? void 0 : error.code) === 1013) {
23
+ return;
24
+ }
25
+ walletConnector.emit('disconnect');
26
+ });
27
+ return {
28
+ handleAccountChange,
29
+ handleChainChange,
30
+ handleDisconnect,
31
+ };
32
+ };
33
+
34
+ exports.eventListenerHandlers = eventListenerHandlers;
@@ -0,0 +1,8 @@
1
+ import { Web3Provider } from '@ethersproject/providers';
2
+ import { WalletConnector } from '@dynamic-labs/wallet-connector-core';
3
+ import { AccountChangeEventHandler, ChainChangeEventHandler, DisconnectEventHandler } from '../types';
4
+ export declare const eventListenerHandlers: (walletConnector: WalletConnector, web3Provider: Web3Provider) => {
5
+ handleAccountChange: AccountChangeEventHandler;
6
+ handleChainChange: ChainChangeEventHandler;
7
+ handleDisconnect: DisconnectEventHandler;
8
+ };
@@ -0,0 +1,30 @@
1
+ import { __awaiter } from '../../_virtual/_tslib.js';
2
+
3
+ const eventListenerHandlers = (walletConnector, web3Provider) => {
4
+ const handleAccountChange = (accounts) => __awaiter(void 0, void 0, void 0, function* () {
5
+ if (accounts.length === 0) {
6
+ walletConnector.emit('disconnect');
7
+ return;
8
+ }
9
+ walletConnector.emit('accountChange', { accounts });
10
+ });
11
+ const handleChainChange = () => __awaiter(void 0, void 0, void 0, function* () {
12
+ const network = yield web3Provider.getNetwork();
13
+ walletConnector.emit('chainChange', {
14
+ chain: network.chainId.toString(),
15
+ });
16
+ });
17
+ const handleDisconnect = (error) => __awaiter(void 0, void 0, void 0, function* () {
18
+ if ((error === null || error === void 0 ? void 0 : error.code) === 1013) {
19
+ return;
20
+ }
21
+ walletConnector.emit('disconnect');
22
+ });
23
+ return {
24
+ handleAccountChange,
25
+ handleChainChange,
26
+ handleDisconnect,
27
+ };
28
+ };
29
+
30
+ export { eventListenerHandlers };
@@ -5,24 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var walletConnectV2 = require('./walletConnectV2.cjs');
6
6
  var walletConnect = require('./walletConnect.cjs');
7
7
 
8
- // These wallets are either not supported or implement their
9
- // own WalletConnect connector
10
- const filteredWalletConnectWallets = [
11
- 'MetaMask',
12
- 'Gnosis Safe',
13
- 'Trust',
14
- 'lilico',
15
- 'Keplr',
16
- 'Zerion',
17
- 'Rabby',
18
- 'Exodus',
19
- 'OKX Wallet',
20
- ];
21
8
  const fetchWalletConnectWallets = ({ isWalletConnectV2Enabled, walletBook, }) => {
22
9
  var _a;
23
10
  return Object.values((_a = walletBook === null || walletBook === void 0 ? void 0 : walletBook.wallets) !== null && _a !== void 0 ? _a : {})
24
- .filter((wallet) => wallet.walletConnect &&
25
- !filteredWalletConnectWallets.includes(wallet.shortName || wallet.name))
11
+ .filter((wallet) => wallet.walletConnect && !wallet.filterFromWalletConnect)
26
12
  .map((wallet) => {
27
13
  var _a;
28
14
  const { shortName } = wallet;
@@ -59,5 +45,4 @@ const getWalletConnectConnector = ({ isWalletConnectV2Enabled, }) => isWalletCon
59
45
  };
60
46
 
61
47
  exports.fetchWalletConnectWallets = fetchWalletConnectWallets;
62
- exports.filteredWalletConnectWallets = filteredWalletConnectWallets;
63
48
  exports.getWalletConnectConnector = getWalletConnectConnector;
@@ -1,6 +1,5 @@
1
1
  import { WalletBookSchema } from '@dynamic-labs/wallet-book';
2
2
  import { WalletConnectorConstructor } from '@dynamic-labs/wallet-connector-core';
3
- export declare const filteredWalletConnectWallets: string[];
4
3
  export declare const fetchWalletConnectWallets: ({ isWalletConnectV2Enabled, walletBook, }: {
5
4
  isWalletConnectV2Enabled: boolean;
6
5
  walletBook: WalletBookSchema;
@@ -1,24 +1,10 @@
1
1
  import { WalletConnectV2 } from './walletConnectV2.js';
2
2
  import { WalletConnect } from './walletConnect.js';
3
3
 
4
- // These wallets are either not supported or implement their
5
- // own WalletConnect connector
6
- const filteredWalletConnectWallets = [
7
- 'MetaMask',
8
- 'Gnosis Safe',
9
- 'Trust',
10
- 'lilico',
11
- 'Keplr',
12
- 'Zerion',
13
- 'Rabby',
14
- 'Exodus',
15
- 'OKX Wallet',
16
- ];
17
4
  const fetchWalletConnectWallets = ({ isWalletConnectV2Enabled, walletBook, }) => {
18
5
  var _a;
19
6
  return Object.values((_a = walletBook === null || walletBook === void 0 ? void 0 : walletBook.wallets) !== null && _a !== void 0 ? _a : {})
20
- .filter((wallet) => wallet.walletConnect &&
21
- !filteredWalletConnectWallets.includes(wallet.shortName || wallet.name))
7
+ .filter((wallet) => wallet.walletConnect && !wallet.filterFromWalletConnect)
22
8
  .map((wallet) => {
23
9
  var _a;
24
10
  const { shortName } = wallet;
@@ -54,4 +40,4 @@ const getWalletConnectConnector = ({ isWalletConnectV2Enabled, }) => isWalletCon
54
40
  }
55
41
  };
56
42
 
57
- export { fetchWalletConnectWallets, filteredWalletConnectWallets, getWalletConnectConnector };
43
+ export { fetchWalletConnectWallets, getWalletConnectConnector };
@@ -66,7 +66,7 @@ class WalletConnect extends EthWalletConnector.EthWalletConnector {
66
66
  }
67
67
  fetchPublicAddress(opts) {
68
68
  return _tslib.__awaiter(this, void 0, void 0, function* () {
69
- return client.fetchWalletConnectEVMPublicAddress(walletBook.getWalletBookWallet(this.walletBook, this.name), this.getClient(), this.deepLinkPreference, Object.assign(Object.assign({}, opts), { onConnect: (payload) => {
69
+ return client.fetchWalletConnectEVMPublicAddress(walletBook.getWalletBookWallet(this.walletBook, this.key), this.getClient(), this.deepLinkPreference, Object.assign(Object.assign({}, opts), { onConnect: (payload) => {
70
70
  var _a;
71
71
  (_a = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _a === void 0 ? void 0 : _a.call(opts, payload);
72
72
  this.connectedChain = payload.params[0].chainId ? 'EVM' : 'SOL';
@@ -75,7 +75,7 @@ class WalletConnect extends EthWalletConnector.EthWalletConnector {
75
75
  }
76
76
  getDeepLink() {
77
77
  var _a;
78
- const wallet = walletBook.getWalletBookWallet(this.walletBook, this.name);
78
+ const wallet = walletBook.getWalletBookWallet(this.walletBook, this.key);
79
79
  if (!utils.isMobile() && !((_a = wallet.desktop) === null || _a === void 0 ? void 0 : _a.native)) {
80
80
  return undefined;
81
81
  }
@@ -88,7 +88,7 @@ class WalletConnect extends EthWalletConnector.EthWalletConnector {
88
88
  }
89
89
  signMessage(messageToSign) {
90
90
  return _tslib.__awaiter(this, void 0, void 0, function* () {
91
- return client.signWalletConnectPersonalMessage(messageToSign, walletBook.getWalletBookWallet(this.walletBook, this.name), this.getClient(), this.deepLinkPreference,
91
+ return client.signWalletConnectPersonalMessage(messageToSign, walletBook.getWalletBookWallet(this.walletBook, this.key), this.getClient(), this.deepLinkPreference,
92
92
  // don't call getRpcProvider until we really need to
93
93
  () => _tslib.__awaiter(this, void 0, void 0, function* () { return this.getRpcProvider(); }));
94
94
  });
@@ -120,7 +120,7 @@ class WalletConnect extends EthWalletConnector.EthWalletConnector {
120
120
  }
121
121
  if (utils.isMobile()) {
122
122
  const deepLink = walletConnectorCore.getDeepLink({
123
- metadata: walletBook.getWalletBookWallet(this.walletBook, this.name),
123
+ metadata: walletBook.getWalletBookWallet(this.walletBook, this.key),
124
124
  mode: 'regular',
125
125
  preference: this.deepLinkPreference,
126
126
  uri: client.uri,