@dynamic-labs/ethereum 0.19.0-alpha.8 → 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 (79) hide show
  1. package/CHANGELOG.md +29 -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/walletConnectV2.cjs +5 -3
  72. package/src/walletConnect/walletConnectV2.js +5 -3
  73. package/src/injected/OKX.cjs +0 -15
  74. package/src/injected/OKX.d.ts +0 -5
  75. package/src/injected/OKX.js +0 -11
  76. package/src/injected/UnknownInjectedWallet.cjs +0 -14
  77. package/src/injected/UnknownInjectedWallet.d.ts +0 -4
  78. package/src/injected/UnknownInjectedWallet.js +0 -10
  79. package/src/injected/index.js +0 -49
package/CHANGELOG.md CHANGED
@@ -1,4 +1,33 @@
1
1
 
2
+ ## [0.19.0-alpha.9](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.0-alpha.8...v0.19.0-alpha.9) (2023-09-21)
3
+
4
+
5
+ ### Features
6
+
7
+ * allow enabling multi wallet in connect-only mode ([#3367](https://github.com/dynamic-labs/DynamicAuth/issues/3367)) ([8ef68a2](https://github.com/dynamic-labs/DynamicAuth/commit/8ef68a295738db5353fcddc54985744313a5474b))
8
+ * move injected wallets configuration to the cdn ([#3077](https://github.com/dynamic-labs/DynamicAuth/issues/3077)) ([291183b](https://github.com/dynamic-labs/DynamicAuth/commit/291183b8daf124577d1049152a2556b6f2a85758))
9
+ * passkey setup completed view ([#3358](https://github.com/dynamic-labs/DynamicAuth/issues/3358)) ([020faf6](https://github.com/dynamic-labs/DynamicAuth/commit/020faf63815e232c64ac8626f747b2997adbaa02))
10
+ * **rohithv/gvty-326:** check if email is real before sending ([#3361](https://github.com/dynamic-labs/DynamicAuth/issues/3361)) ([db554f3](https://github.com/dynamic-labs/DynamicAuth/commit/db554f344707e3c3701012ecc09b67be2aaebba4))
11
+ * safe guard wrong locale override keys ([#3329](https://github.com/dynamic-labs/DynamicAuth/issues/3329)) ([b2cf96b](https://github.com/dynamic-labs/DynamicAuth/commit/b2cf96b55fdd2705335ad942fe8e1c1109bf4134))
12
+ * secure account with passkey view ([#3356](https://github.com/dynamic-labs/DynamicAuth/issues/3356)) ([9d58c44](https://github.com/dynamic-labs/DynamicAuth/commit/9d58c4472f1967ff5201bae6556c7d88a33d6276))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * better handling of window opener to mitigate window opener for social linking ([#3379](https://github.com/dynamic-labs/DynamicAuth/issues/3379)) ([e784061](https://github.com/dynamic-labs/DynamicAuth/commit/e784061ab190d314976213e321516bbb256627e7))
18
+ * change buttom copy when cannot link a wallet ([#3364](https://github.com/dynamic-labs/DynamicAuth/issues/3364)) ([5428a60](https://github.com/dynamic-labs/DynamicAuth/commit/5428a60abcbbd9c47e9227a53610ee5975bac379))
19
+ * **DynamicWidget:** goToInitialView when closing send balance ([#3333](https://github.com/dynamic-labs/DynamicAuth/issues/3333)) ([7ea40ec](https://github.com/dynamic-labs/DynamicAuth/commit/7ea40ec3827c40e3340e5ecfa2153e59c05a79f1))
20
+ * **EmailMagicWalletConnector:** to only cancel the verification if user clicks back ([#3374](https://github.com/dynamic-labs/DynamicAuth/issues/3374)) ([1111a18](https://github.com/dynamic-labs/DynamicAuth/commit/1111a186b7b84066e89d385c0bd9c064d0326eae))
21
+ * **embedded-wallet:** display sign typed data message ([#3316](https://github.com/dynamic-labs/DynamicAuth/issues/3316)) ([0014c8b](https://github.com/dynamic-labs/DynamicAuth/commit/0014c8b4250cf9db92b554f02b4e46f3aba2d943))
22
+ * missing translation keys ([#3325](https://github.com/dynamic-labs/DynamicAuth/issues/3325)) ([0e7c383](https://github.com/dynamic-labs/DynamicAuth/commit/0e7c3838a0eb8b49298e59b2919e16994a2d6b19))
23
+ * only set scope/prompt in oauth query params when they're defined ([#3324](https://github.com/dynamic-labs/DynamicAuth/issues/3324)) ([9e8aa2d](https://github.com/dynamic-labs/DynamicAuth/commit/9e8aa2d186fff563607dc836017b918af79718ce))
24
+ * pass the network param on wallet transfers ([#3307](https://github.com/dynamic-labs/DynamicAuth/issues/3307)) ([faf89fd](https://github.com/dynamic-labs/DynamicAuth/commit/faf89fdbfa690a87ae91d7f09c3647b4160b53ad))
25
+ * send primaryWalletId when available to unlinkOauth ([#3342](https://github.com/dynamic-labs/DynamicAuth/issues/3342)) ([0da0ae2](https://github.com/dynamic-labs/DynamicAuth/commit/0da0ae23040f7683000223109446a516c6d7b212))
26
+ * twitter sign-in with dynamic ([#3313](https://github.com/dynamic-labs/DynamicAuth/issues/3313)) ([c77dae4](https://github.com/dynamic-labs/DynamicAuth/commit/c77dae41dbdc02c84f3d3f5f3338136efd5766f9))
27
+ * use social profile photo for profile icon whenever available ([#3298](https://github.com/dynamic-labs/DynamicAuth/issues/3298)) ([143303b](https://github.com/dynamic-labs/DynamicAuth/commit/143303ba5e24d16aaa362f1888e3942bdef59602))
28
+ * wallet transition in the bridge ([#3270](https://github.com/dynamic-labs/DynamicAuth/issues/3270)) ([143cf47](https://github.com/dynamic-labs/DynamicAuth/commit/143cf47e0cd4806780f5b3f527ace2d6c0208534)), closes [#3268](https://github.com/dynamic-labs/DynamicAuth/issues/3268) [#3243](https://github.com/dynamic-labs/DynamicAuth/issues/3243)
29
+ * **wallet-connect:** prevent connector from connecting after logout ([#3345](https://github.com/dynamic-labs/DynamicAuth/issues/3345)) ([9bada77](https://github.com/dynamic-labs/DynamicAuth/commit/9bada7775c5ac7a4fdb5ad8d4d21691335e06936))
30
+
2
31
  ## [0.19.0-alpha.8](https://github.com/dynamic-labs/DynamicAuth/compare/v0.19.0-alpha.7...v0.19.0-alpha.8) (2023-09-11)
3
32
 
4
33
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum",
3
- "version": "0.19.0-alpha.8",
3
+ "version": "0.19.0-alpha.9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -26,18 +26,18 @@
26
26
  "./package.json": "./package.json"
27
27
  },
28
28
  "dependencies": {
29
+ "@ethersproject/providers": "5.7.2",
29
30
  "@walletconnect/client": "1.8.0",
30
31
  "@walletconnect/ethereum-provider": "1.8.0",
31
32
  "@walletconnect/universal-provider": "2.8.3",
33
+ "buffer": "6.0.3",
32
34
  "ethers": "5.7.2",
33
35
  "eventemitter3": "5.0.1",
34
- "buffer": "6.0.3",
35
- "@dynamic-labs/rpc-providers": "0.19.0-alpha.8",
36
- "@dynamic-labs/types": "0.19.0-alpha.8",
37
- "@dynamic-labs/utils": "0.19.0-alpha.8",
38
- "@dynamic-labs/wallet-book": "0.19.0-alpha.8",
39
- "@dynamic-labs/wallet-connector-core": "0.19.0-alpha.8",
40
- "@ethersproject/providers": "5.7.2"
36
+ "@dynamic-labs/rpc-providers": "0.19.0-alpha.9",
37
+ "@dynamic-labs/types": "0.19.0-alpha.9",
38
+ "@dynamic-labs/utils": "0.19.0-alpha.9",
39
+ "@dynamic-labs/wallet-book": "0.19.0-alpha.9",
40
+ "@dynamic-labs/wallet-connector-core": "0.19.0-alpha.9"
41
41
  },
42
42
  "peerDependencies": {}
43
43
  }
@@ -5,74 +5,83 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var _tslib = require('../_virtual/_tslib.cjs');
6
6
  var ethers = require('ethers');
7
7
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
+ var utils = require('@dynamic-labs/utils');
8
9
  var isUnsupportedProviderError = require('./utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs');
10
+ var eventListenerHandlers = require('./utils/eventListenerHandlers.cjs');
9
11
 
10
- var _a;
11
12
  class EthProviderHelper {
12
- static installedProviderLookup(providerFlags) {
13
- const allInstalledProviders = this.allInstalledProviders();
14
- return walletConnectorCore.ProviderLookup(allInstalledProviders, providerFlags);
13
+ constructor(wallet) {
14
+ this.wallet = wallet;
15
+ }
16
+ getInstalledProvider() {
17
+ const config = this.getInjectedConfig();
18
+ if (!config ||
19
+ !config.extensionLocators ||
20
+ !config.extensionLocators.length)
21
+ return undefined;
22
+ return this.installedProviderLookup(config.extensionLocators);
15
23
  }
16
- static allInstalledProviders() {
17
- var _b;
18
- const ethereumProviders = [];
24
+ getInjectedConfig() {
25
+ if (!this.wallet || !this.wallet.injectedConfig)
26
+ return;
27
+ const { injectedConfig } = this.wallet;
28
+ return injectedConfig.find((c) => c.chain === 'evm');
29
+ }
30
+ installedProviders() {
31
+ const config = this.getInjectedConfig();
32
+ if (!config)
33
+ return [];
34
+ const providers = [];
35
+ if (config.windowLocations) {
36
+ for (const windowLocation of config.windowLocations) {
37
+ const foundProviders = utils.getPathFromObject(window, windowLocation);
38
+ if (foundProviders && foundProviders.length)
39
+ providers.push(...foundProviders);
40
+ }
41
+ }
19
42
  if (window.ethereum) {
20
- if (!window.ethereum.providers) {
21
- ethereumProviders.push(window.ethereum);
43
+ if (!window.ethereum.providers || !window.ethereum.providers.length) {
44
+ providers.push(window.ethereum);
22
45
  }
23
46
  else {
24
- window.ethereum.providers.forEach((provider) => {
25
- ethereumProviders.push(provider);
26
- });
47
+ window.ethereum.providers.forEach((p) => providers.push(p));
27
48
  }
28
49
  }
29
- if ((_b = window.phantom) === null || _b === void 0 ? void 0 : _b.ethereum) {
30
- ethereumProviders.push(window.phantom.ethereum);
31
- }
32
- if (window.zerionWallet) {
33
- ethereumProviders.push(window.zerionWallet);
34
- }
35
- if (window.coinbaseWalletExtension) {
36
- ethereumProviders.push(window.coinbaseWalletExtension);
37
- }
38
- if (window.superb) {
39
- ethereumProviders.push(window.superb);
40
- }
41
- if (window.okxwallet) {
42
- ethereumProviders.push(window.okxwallet);
43
- }
44
- return ethereumProviders;
50
+ return providers;
45
51
  }
46
- static isInstalledHelper(walletName) {
47
- return this.findProvider(walletName) !== undefined;
52
+ installedProviderLookup(providerFlags) {
53
+ const allInstalledProviders = this.installedProviders();
54
+ return walletConnectorCore.ProviderLookup(allInstalledProviders, providerFlags);
55
+ }
56
+ isInstalledHelper() {
57
+ return this.findProvider() !== undefined;
48
58
  }
49
- static findProvider(walletName) {
50
- var _b, _c;
59
+ findProvider() {
60
+ const windowReference = this.getInstalledProvider();
51
61
  try {
52
- const provider = (_c = (_b = this.providers)[walletConnectorCore.normalizeWalletName(walletName)]) === null || _c === void 0 ? void 0 : _c.call(_b);
53
- return provider === undefined
62
+ return windowReference === undefined
54
63
  ? undefined
55
- : new ethers.ethers.providers.Web3Provider(provider, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
64
+ : new ethers.ethers.providers.Web3Provider(windowReference, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
56
65
  }
57
66
  catch (err) {
58
67
  if (isUnsupportedProviderError.isUnsupportedProviderError(err)) {
59
68
  walletConnectorCore.logger.error(`ETH Provider is not supported ${err.value}`, err);
60
69
  return;
61
70
  }
62
- walletConnectorCore.logger.error(`Could not find provider for ${walletName}`, err);
71
+ walletConnectorCore.logger.error(`Could not find provider for ${this.wallet.name}`, err);
63
72
  return undefined;
64
73
  }
65
74
  }
66
- static fetchPublicAddressWithName(name) {
75
+ fetchPublicAddress() {
67
76
  return _tslib.__awaiter(this, void 0, void 0, function* () {
68
- const provider = this.findProvider(name);
77
+ const provider = this.findProvider();
69
78
  if (!provider) {
70
79
  return Promise.resolve(undefined);
71
80
  }
72
81
  return this.fetchPublicAddressWithProvider(provider);
73
82
  });
74
83
  }
75
- static fetchPublicAddressWithProvider(provider) {
84
+ fetchPublicAddressWithProvider(provider) {
76
85
  return _tslib.__awaiter(this, void 0, void 0, function* () {
77
86
  try {
78
87
  const [lowercaseAddress] = yield provider.send('eth_requestAccounts', []);
@@ -85,13 +94,13 @@ class EthProviderHelper {
85
94
  }
86
95
  });
87
96
  }
88
- static signMessageWithName(messageToSign, name) {
97
+ signMessage(messageToSign) {
89
98
  return _tslib.__awaiter(this, void 0, void 0, function* () {
90
- const walletAddress = yield this.fetchPublicAddressWithName(name);
99
+ const walletAddress = yield this.fetchPublicAddress();
91
100
  if (!walletAddress) {
92
101
  return Promise.resolve(undefined);
93
102
  }
94
- const provider = this.findProvider(name);
103
+ const provider = this.findProvider();
95
104
  if (!provider) {
96
105
  return Promise.resolve(undefined);
97
106
  }
@@ -100,37 +109,13 @@ class EthProviderHelper {
100
109
  return signedMessage;
101
110
  });
102
111
  }
103
- static _setupEventListeners(name, walletConnector, web3Provider) {
104
- if (!web3Provider) {
105
- return {
106
- tearDownEventListeners: () => { },
107
- };
108
- }
112
+ _setupEventListeners(walletConnector, web3Provider) {
109
113
  const externalProvider = web3Provider.provider;
110
- const handleAccountChange = (accounts) => _tslib.__awaiter(this, void 0, void 0, function* () {
111
- if (accounts.length === 0) {
112
- walletConnector.emit('disconnect');
113
- return;
114
- }
115
- walletConnector.emit('accountChange', { accounts });
116
- });
117
- const handleChainChange = () => _tslib.__awaiter(this, void 0, void 0, function* () {
118
- const network = yield web3Provider.getNetwork();
119
- walletConnector.emit('chainChange', {
120
- chain: network.chainId.toString(),
121
- });
122
- });
123
- const handleDisconnect = (error) => _tslib.__awaiter(this, void 0, void 0, function* () {
124
- if ((error === null || error === void 0 ? void 0 : error.code) === 1013) {
125
- return;
126
- }
127
- walletConnector.emit('disconnect');
128
- });
114
+ const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers.eventListenerHandlers(walletConnector, web3Provider);
129
115
  externalProvider.on('accountsChanged', handleAccountChange);
130
116
  externalProvider.on('chainChanged', handleChainChange);
131
117
  externalProvider.on('disconnect', handleDisconnect);
132
118
  const tearDownEventListeners = () => {
133
- const web3Provider = this.findProvider(name);
134
119
  if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
135
120
  return;
136
121
  }
@@ -149,69 +134,6 @@ class EthProviderHelper {
149
134
  tearDownEventListeners,
150
135
  };
151
136
  }
152
- }
153
- _a = EthProviderHelper;
154
- EthProviderHelper.MetamaskProvider = () =>
155
- // Stop these wallets from showing up as MetaMask
156
- _a.installedProviderLookup([
157
- { flag: 'isDawn', value: false },
158
- { flag: 'isBraveWallet', value: false },
159
- { flag: 'isTrustWallet', value: false },
160
- { flag: 'isExodus', value: false },
161
- { flag: 'isPhantom', value: false },
162
- { flag: 'isZerion', value: false },
163
- { flag: 'isMetaMask', value: true },
164
- { flag: 'isSuperb', value: false },
165
- { flag: 'isRabby', value: false },
166
- { flag: 'isOkxWallet', value: false },
167
- ]);
168
- EthProviderHelper.BraveProvider = () => _a.installedProviderLookup([{ flag: 'isBraveWallet', value: true }]);
169
- EthProviderHelper.DawnProvider = () => _a.installedProviderLookup([{ flag: 'isDawn', value: true }]);
170
- EthProviderHelper.FrameProvider = () => _a.installedProviderLookup([{ flag: 'isFrame', value: true }]);
171
- EthProviderHelper.CoinbaseProvider = () => _a.installedProviderLookup([{ flag: 'isCoinbaseWallet', value: true }]);
172
- EthProviderHelper.OperaProvider = () => _a.installedProviderLookup([{ flag: 'isOpera', value: true }]);
173
- EthProviderHelper.GameStopProvider = () => _a.installedProviderLookup([{ flag: 'isGamestop', value: true }]);
174
- EthProviderHelper.ExodusProvider = () => _a.installedProviderLookup([{ flag: 'isExodus', value: true }]);
175
- EthProviderHelper.BloctoProvider = () => _a.installedProviderLookup([{ flag: 'isBlocto', value: true }]);
176
- EthProviderHelper.TrustWalletProvider = () => _a.installedProviderLookup([{ flag: 'isTrustWallet', value: true }]);
177
- EthProviderHelper.PhantomProvider = () => _a.installedProviderLookup([{ flag: 'isPhantom', value: true }]);
178
- EthProviderHelper.ZerionProvider = () => _a.installedProviderLookup([{ flag: 'isZerion', value: true }]);
179
- EthProviderHelper.SuperbProvider = () => _a.installedProviderLookup([{ flag: 'isSuperb', value: true }]);
180
- EthProviderHelper.RabbyProvider = () => _a.installedProviderLookup([{ flag: 'isRabby', value: true }]);
181
- EthProviderHelper.OKXProvider = () => _a.installedProviderLookup([{ flag: 'isOkxWallet', value: true }]);
182
- EthProviderHelper.UnknownInjectedProvider = () => _a.installedProviderLookup([
183
- { flag: 'isMetaMask', value: false },
184
- { flag: 'isExodus', value: false },
185
- { flag: 'isCoinbaseWallet', value: false },
186
- { flag: 'isBraveWallet', value: false },
187
- { flag: 'isGamestop', value: false },
188
- { flag: 'isFrame', value: false },
189
- { flag: 'isOpera', value: false },
190
- { flag: 'isBlocto', value: false },
191
- { flag: 'isTrustWallet', value: false },
192
- { flag: 'isPhantom', value: false },
193
- { flag: 'isZerion', value: false },
194
- { flag: 'isSuperb', value: false },
195
- { flag: 'isRabby', value: false },
196
- { flag: 'isOkxWallet', value: false },
197
- ]);
198
- EthProviderHelper.providers = {
199
- bloctoinjected: _a.BloctoProvider,
200
- braveevm: _a.BraveProvider,
201
- coinbase: _a.CoinbaseProvider,
202
- dawn: _a.DawnProvider,
203
- exodusevm: _a.ExodusProvider,
204
- frame: _a.FrameProvider,
205
- gamestop: _a.GameStopProvider,
206
- injectedwallet: _a.UnknownInjectedProvider,
207
- metamask: _a.MetamaskProvider,
208
- okxwallet: _a.OKXProvider,
209
- opera: _a.OperaProvider,
210
- phantomevm: _a.PhantomProvider,
211
- rabby: _a.RabbyProvider,
212
- superb: _a.SuperbProvider,
213
- trust: _a.TrustWalletProvider,
214
- zerion: _a.ZerionProvider,
215
- };
137
+ }
216
138
 
217
139
  exports.EthProviderHelper = EthProviderHelper;
@@ -1,36 +1,27 @@
1
1
  import { ethers } from 'ethers';
2
2
  import { ProviderCondition, WalletConnector } from '@dynamic-labs/wallet-connector-core';
3
+ import { WalletSchema } from '@dynamic-labs/wallet-book';
3
4
  import { IEthereum, ProviderFlag } from './types';
4
- type Provider = () => ethers.providers.ExternalProvider | undefined;
5
5
  export declare class EthProviderHelper {
6
- static MetamaskProvider: Provider;
7
- static BraveProvider: Provider;
8
- static DawnProvider: Provider;
9
- static FrameProvider: Provider;
10
- static CoinbaseProvider: Provider;
11
- static OperaProvider: Provider;
12
- static GameStopProvider: Provider;
13
- static ExodusProvider: Provider;
14
- static BloctoProvider: Provider;
15
- static TrustWalletProvider: Provider;
16
- static PhantomProvider: Provider;
17
- static ZerionProvider: Provider;
18
- static SuperbProvider: Provider;
19
- static RabbyProvider: Provider;
20
- static OKXProvider: Provider;
21
- static UnknownInjectedProvider: Provider;
22
- static providers: {
23
- [wallet: string]: Provider;
24
- };
25
- static installedProviderLookup(providerFlags: Array<ProviderCondition<ProviderFlag>>): IEthereum | undefined;
26
- static allInstalledProviders(): IEthereum[];
27
- static isInstalledHelper(walletName: string): boolean;
28
- static findProvider(walletName: string): ethers.providers.Web3Provider | undefined;
29
- static fetchPublicAddressWithName(name: string): Promise<string | undefined>;
30
- static fetchPublicAddressWithProvider(provider: ethers.providers.Web3Provider): Promise<string | undefined>;
31
- static signMessageWithName(messageToSign: string, name: string): Promise<string | undefined>;
32
- static _setupEventListeners(name: string, walletConnector: WalletConnector, web3Provider?: ethers.providers.Web3Provider): {
6
+ private wallet;
7
+ constructor(wallet: WalletSchema);
8
+ getInstalledProvider(): IEthereum | undefined;
9
+ getInjectedConfig(): {
10
+ chain: string;
11
+ extensionLocators: {
12
+ value: boolean;
13
+ flag: string;
14
+ }[];
15
+ windowLocations?: string[] | undefined;
16
+ } | undefined;
17
+ installedProviders(): IEthereum[];
18
+ installedProviderLookup(providerFlags: Array<ProviderCondition<ProviderFlag>>): IEthereum | undefined;
19
+ isInstalledHelper(): boolean;
20
+ findProvider(): ethers.providers.Web3Provider | undefined;
21
+ fetchPublicAddress(): Promise<string | undefined>;
22
+ fetchPublicAddressWithProvider(provider: ethers.providers.Web3Provider): Promise<string | undefined>;
23
+ signMessage(messageToSign: string): Promise<string | undefined>;
24
+ _setupEventListeners(walletConnector: WalletConnector, web3Provider: ethers.providers.Web3Provider): {
33
25
  tearDownEventListeners: () => void;
34
26
  };
35
27
  }
36
- export {};
@@ -1,74 +1,83 @@
1
1
  import { __awaiter } from '../_virtual/_tslib.js';
2
2
  import { ethers, utils } from 'ethers';
3
- import { ProviderLookup, normalizeWalletName, logger } from '@dynamic-labs/wallet-connector-core';
3
+ import { ProviderLookup, logger } from '@dynamic-labs/wallet-connector-core';
4
+ import { getPathFromObject } from '@dynamic-labs/utils';
4
5
  import { isUnsupportedProviderError } from './utils/isUnsupportedProviderError/isUnsupportedProviderError.js';
6
+ import { eventListenerHandlers } from './utils/eventListenerHandlers.js';
5
7
 
6
- var _a;
7
8
  class EthProviderHelper {
8
- static installedProviderLookup(providerFlags) {
9
- const allInstalledProviders = this.allInstalledProviders();
10
- return ProviderLookup(allInstalledProviders, providerFlags);
9
+ constructor(wallet) {
10
+ this.wallet = wallet;
11
+ }
12
+ getInstalledProvider() {
13
+ const config = this.getInjectedConfig();
14
+ if (!config ||
15
+ !config.extensionLocators ||
16
+ !config.extensionLocators.length)
17
+ return undefined;
18
+ return this.installedProviderLookup(config.extensionLocators);
11
19
  }
12
- static allInstalledProviders() {
13
- var _b;
14
- const ethereumProviders = [];
20
+ getInjectedConfig() {
21
+ if (!this.wallet || !this.wallet.injectedConfig)
22
+ return;
23
+ const { injectedConfig } = this.wallet;
24
+ return injectedConfig.find((c) => c.chain === 'evm');
25
+ }
26
+ installedProviders() {
27
+ const config = this.getInjectedConfig();
28
+ if (!config)
29
+ return [];
30
+ const providers = [];
31
+ if (config.windowLocations) {
32
+ for (const windowLocation of config.windowLocations) {
33
+ const foundProviders = getPathFromObject(window, windowLocation);
34
+ if (foundProviders && foundProviders.length)
35
+ providers.push(...foundProviders);
36
+ }
37
+ }
15
38
  if (window.ethereum) {
16
- if (!window.ethereum.providers) {
17
- ethereumProviders.push(window.ethereum);
39
+ if (!window.ethereum.providers || !window.ethereum.providers.length) {
40
+ providers.push(window.ethereum);
18
41
  }
19
42
  else {
20
- window.ethereum.providers.forEach((provider) => {
21
- ethereumProviders.push(provider);
22
- });
43
+ window.ethereum.providers.forEach((p) => providers.push(p));
23
44
  }
24
45
  }
25
- if ((_b = window.phantom) === null || _b === void 0 ? void 0 : _b.ethereum) {
26
- ethereumProviders.push(window.phantom.ethereum);
27
- }
28
- if (window.zerionWallet) {
29
- ethereumProviders.push(window.zerionWallet);
30
- }
31
- if (window.coinbaseWalletExtension) {
32
- ethereumProviders.push(window.coinbaseWalletExtension);
33
- }
34
- if (window.superb) {
35
- ethereumProviders.push(window.superb);
36
- }
37
- if (window.okxwallet) {
38
- ethereumProviders.push(window.okxwallet);
39
- }
40
- return ethereumProviders;
46
+ return providers;
41
47
  }
42
- static isInstalledHelper(walletName) {
43
- return this.findProvider(walletName) !== undefined;
48
+ installedProviderLookup(providerFlags) {
49
+ const allInstalledProviders = this.installedProviders();
50
+ return ProviderLookup(allInstalledProviders, providerFlags);
51
+ }
52
+ isInstalledHelper() {
53
+ return this.findProvider() !== undefined;
44
54
  }
45
- static findProvider(walletName) {
46
- var _b, _c;
55
+ findProvider() {
56
+ const windowReference = this.getInstalledProvider();
47
57
  try {
48
- const provider = (_c = (_b = this.providers)[normalizeWalletName(walletName)]) === null || _c === void 0 ? void 0 : _c.call(_b);
49
- return provider === undefined
58
+ return windowReference === undefined
50
59
  ? undefined
51
- : new ethers.providers.Web3Provider(provider, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
60
+ : new ethers.providers.Web3Provider(windowReference, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
52
61
  }
53
62
  catch (err) {
54
63
  if (isUnsupportedProviderError(err)) {
55
64
  logger.error(`ETH Provider is not supported ${err.value}`, err);
56
65
  return;
57
66
  }
58
- logger.error(`Could not find provider for ${walletName}`, err);
67
+ logger.error(`Could not find provider for ${this.wallet.name}`, err);
59
68
  return undefined;
60
69
  }
61
70
  }
62
- static fetchPublicAddressWithName(name) {
71
+ fetchPublicAddress() {
63
72
  return __awaiter(this, void 0, void 0, function* () {
64
- const provider = this.findProvider(name);
73
+ const provider = this.findProvider();
65
74
  if (!provider) {
66
75
  return Promise.resolve(undefined);
67
76
  }
68
77
  return this.fetchPublicAddressWithProvider(provider);
69
78
  });
70
79
  }
71
- static fetchPublicAddressWithProvider(provider) {
80
+ fetchPublicAddressWithProvider(provider) {
72
81
  return __awaiter(this, void 0, void 0, function* () {
73
82
  try {
74
83
  const [lowercaseAddress] = yield provider.send('eth_requestAccounts', []);
@@ -81,13 +90,13 @@ class EthProviderHelper {
81
90
  }
82
91
  });
83
92
  }
84
- static signMessageWithName(messageToSign, name) {
93
+ signMessage(messageToSign) {
85
94
  return __awaiter(this, void 0, void 0, function* () {
86
- const walletAddress = yield this.fetchPublicAddressWithName(name);
95
+ const walletAddress = yield this.fetchPublicAddress();
87
96
  if (!walletAddress) {
88
97
  return Promise.resolve(undefined);
89
98
  }
90
- const provider = this.findProvider(name);
99
+ const provider = this.findProvider();
91
100
  if (!provider) {
92
101
  return Promise.resolve(undefined);
93
102
  }
@@ -96,37 +105,13 @@ class EthProviderHelper {
96
105
  return signedMessage;
97
106
  });
98
107
  }
99
- static _setupEventListeners(name, walletConnector, web3Provider) {
100
- if (!web3Provider) {
101
- return {
102
- tearDownEventListeners: () => { },
103
- };
104
- }
108
+ _setupEventListeners(walletConnector, web3Provider) {
105
109
  const externalProvider = web3Provider.provider;
106
- const handleAccountChange = (accounts) => __awaiter(this, void 0, void 0, function* () {
107
- if (accounts.length === 0) {
108
- walletConnector.emit('disconnect');
109
- return;
110
- }
111
- walletConnector.emit('accountChange', { accounts });
112
- });
113
- const handleChainChange = () => __awaiter(this, void 0, void 0, function* () {
114
- const network = yield web3Provider.getNetwork();
115
- walletConnector.emit('chainChange', {
116
- chain: network.chainId.toString(),
117
- });
118
- });
119
- const handleDisconnect = (error) => __awaiter(this, void 0, void 0, function* () {
120
- if ((error === null || error === void 0 ? void 0 : error.code) === 1013) {
121
- return;
122
- }
123
- walletConnector.emit('disconnect');
124
- });
110
+ const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers(walletConnector, web3Provider);
125
111
  externalProvider.on('accountsChanged', handleAccountChange);
126
112
  externalProvider.on('chainChanged', handleChainChange);
127
113
  externalProvider.on('disconnect', handleDisconnect);
128
114
  const tearDownEventListeners = () => {
129
- const web3Provider = this.findProvider(name);
130
115
  if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
131
116
  return;
132
117
  }
@@ -145,69 +130,6 @@ class EthProviderHelper {
145
130
  tearDownEventListeners,
146
131
  };
147
132
  }
148
- }
149
- _a = EthProviderHelper;
150
- EthProviderHelper.MetamaskProvider = () =>
151
- // Stop these wallets from showing up as MetaMask
152
- _a.installedProviderLookup([
153
- { flag: 'isDawn', value: false },
154
- { flag: 'isBraveWallet', value: false },
155
- { flag: 'isTrustWallet', value: false },
156
- { flag: 'isExodus', value: false },
157
- { flag: 'isPhantom', value: false },
158
- { flag: 'isZerion', value: false },
159
- { flag: 'isMetaMask', value: true },
160
- { flag: 'isSuperb', value: false },
161
- { flag: 'isRabby', value: false },
162
- { flag: 'isOkxWallet', value: false },
163
- ]);
164
- EthProviderHelper.BraveProvider = () => _a.installedProviderLookup([{ flag: 'isBraveWallet', value: true }]);
165
- EthProviderHelper.DawnProvider = () => _a.installedProviderLookup([{ flag: 'isDawn', value: true }]);
166
- EthProviderHelper.FrameProvider = () => _a.installedProviderLookup([{ flag: 'isFrame', value: true }]);
167
- EthProviderHelper.CoinbaseProvider = () => _a.installedProviderLookup([{ flag: 'isCoinbaseWallet', value: true }]);
168
- EthProviderHelper.OperaProvider = () => _a.installedProviderLookup([{ flag: 'isOpera', value: true }]);
169
- EthProviderHelper.GameStopProvider = () => _a.installedProviderLookup([{ flag: 'isGamestop', value: true }]);
170
- EthProviderHelper.ExodusProvider = () => _a.installedProviderLookup([{ flag: 'isExodus', value: true }]);
171
- EthProviderHelper.BloctoProvider = () => _a.installedProviderLookup([{ flag: 'isBlocto', value: true }]);
172
- EthProviderHelper.TrustWalletProvider = () => _a.installedProviderLookup([{ flag: 'isTrustWallet', value: true }]);
173
- EthProviderHelper.PhantomProvider = () => _a.installedProviderLookup([{ flag: 'isPhantom', value: true }]);
174
- EthProviderHelper.ZerionProvider = () => _a.installedProviderLookup([{ flag: 'isZerion', value: true }]);
175
- EthProviderHelper.SuperbProvider = () => _a.installedProviderLookup([{ flag: 'isSuperb', value: true }]);
176
- EthProviderHelper.RabbyProvider = () => _a.installedProviderLookup([{ flag: 'isRabby', value: true }]);
177
- EthProviderHelper.OKXProvider = () => _a.installedProviderLookup([{ flag: 'isOkxWallet', value: true }]);
178
- EthProviderHelper.UnknownInjectedProvider = () => _a.installedProviderLookup([
179
- { flag: 'isMetaMask', value: false },
180
- { flag: 'isExodus', value: false },
181
- { flag: 'isCoinbaseWallet', value: false },
182
- { flag: 'isBraveWallet', value: false },
183
- { flag: 'isGamestop', value: false },
184
- { flag: 'isFrame', value: false },
185
- { flag: 'isOpera', value: false },
186
- { flag: 'isBlocto', value: false },
187
- { flag: 'isTrustWallet', value: false },
188
- { flag: 'isPhantom', value: false },
189
- { flag: 'isZerion', value: false },
190
- { flag: 'isSuperb', value: false },
191
- { flag: 'isRabby', value: false },
192
- { flag: 'isOkxWallet', value: false },
193
- ]);
194
- EthProviderHelper.providers = {
195
- bloctoinjected: _a.BloctoProvider,
196
- braveevm: _a.BraveProvider,
197
- coinbase: _a.CoinbaseProvider,
198
- dawn: _a.DawnProvider,
199
- exodusevm: _a.ExodusProvider,
200
- frame: _a.FrameProvider,
201
- gamestop: _a.GameStopProvider,
202
- injectedwallet: _a.UnknownInjectedProvider,
203
- metamask: _a.MetamaskProvider,
204
- okxwallet: _a.OKXProvider,
205
- opera: _a.OperaProvider,
206
- phantomevm: _a.PhantomProvider,
207
- rabby: _a.RabbyProvider,
208
- superb: _a.SuperbProvider,
209
- trust: _a.TrustWalletProvider,
210
- zerion: _a.ZerionProvider,
211
- };
133
+ }
212
134
 
213
135
  export { EthProviderHelper };