@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.
- package/CHANGELOG.md +29 -0
- package/package.json +8 -8
- package/src/ethProviderHelper.cjs +54 -132
- package/src/ethProviderHelper.d.ts +20 -29
- package/src/ethProviderHelper.js +55 -133
- package/src/index.cjs +23 -21
- package/src/index.d.ts +1 -0
- package/src/index.js +18 -16
- package/src/injected/BloctoInjected.cjs +2 -2
- package/src/injected/BloctoInjected.d.ts +2 -2
- package/src/injected/BloctoInjected.js +2 -2
- package/src/injected/BraveEvm.cjs +2 -2
- package/src/injected/BraveEvm.d.ts +2 -2
- package/src/injected/BraveEvm.js +2 -2
- package/src/injected/Dawn.cjs +2 -2
- package/src/injected/Dawn.d.ts +2 -2
- package/src/injected/Dawn.js +2 -2
- package/src/injected/ExodusEvm.cjs +2 -2
- package/src/injected/ExodusEvm.d.ts +2 -2
- package/src/injected/ExodusEvm.js +2 -2
- package/src/injected/Frame.cjs +2 -2
- package/src/injected/Frame.d.ts +2 -2
- package/src/injected/Frame.js +2 -2
- package/src/injected/GameStop.cjs +2 -2
- package/src/injected/GameStop.d.ts +2 -2
- package/src/injected/GameStop.js +2 -2
- package/src/injected/InjectedWalletBase.cjs +23 -10
- package/src/injected/InjectedWalletBase.d.ts +6 -1
- package/src/injected/InjectedWalletBase.js +23 -10
- package/src/injected/LegacyInjectedWalletBase.cjs +77 -0
- package/src/injected/LegacyInjectedWalletBase.d.ts +24 -0
- package/src/injected/LegacyInjectedWalletBase.js +75 -0
- package/src/injected/MetaMask.cjs +2 -2
- package/src/injected/MetaMask.d.ts +2 -2
- package/src/injected/MetaMask.js +2 -2
- package/src/injected/Opera.cjs +2 -2
- package/src/injected/Opera.d.ts +2 -2
- package/src/injected/Opera.js +2 -2
- package/src/injected/PhantomEvm.cjs +2 -2
- package/src/injected/PhantomEvm.d.ts +2 -2
- package/src/injected/PhantomEvm.js +2 -2
- package/src/injected/Rabby.cjs +2 -2
- package/src/injected/Rabby.d.ts +2 -2
- package/src/injected/Rabby.js +2 -2
- package/src/injected/Superb.cjs +2 -2
- package/src/injected/Superb.d.ts +2 -2
- package/src/injected/Superb.js +2 -2
- package/src/injected/Trust.cjs +2 -2
- package/src/injected/Trust.d.ts +2 -2
- package/src/injected/Trust.js +2 -2
- package/src/injected/Zerion.cjs +2 -2
- package/src/injected/Zerion.d.ts +2 -2
- package/src/injected/Zerion.js +2 -2
- package/src/injected/fetchInjectedWalletConnectors.cjs +32 -0
- package/src/injected/fetchInjectedWalletConnectors.d.ts +6 -0
- package/src/injected/fetchInjectedWalletConnectors.js +28 -0
- package/src/injected/index.d.ts +2 -4
- package/src/injected/{index.cjs → legacyInjectedWallets.cjs} +19 -21
- package/src/injected/legacyInjectedWallets.d.ts +3 -0
- package/src/injected/legacyInjectedWallets.js +46 -0
- package/src/legacyEthProviderHelper.cjs +193 -0
- package/src/legacyEthProviderHelper.d.ts +33 -0
- package/src/legacyEthProviderHelper.js +189 -0
- package/src/types.d.ts +11 -0
- package/src/utils/eventListenerHandlers.cjs +34 -0
- package/src/utils/eventListenerHandlers.d.ts +8 -0
- package/src/utils/eventListenerHandlers.js +30 -0
- package/src/walletConnect/fetchWalletConnectWallets.cjs +1 -16
- package/src/walletConnect/fetchWalletConnectWallets.d.ts +0 -1
- package/src/walletConnect/fetchWalletConnectWallets.js +2 -16
- package/src/walletConnect/walletConnectV2.cjs +5 -3
- package/src/walletConnect/walletConnectV2.js +5 -3
- package/src/injected/OKX.cjs +0 -15
- package/src/injected/OKX.d.ts +0 -5
- package/src/injected/OKX.js +0 -11
- package/src/injected/UnknownInjectedWallet.cjs +0 -14
- package/src/injected/UnknownInjectedWallet.d.ts +0 -4
- package/src/injected/UnknownInjectedWallet.js +0 -10
- package/src/injected/index.js +0 -49
|
@@ -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,
|
|
43
|
+
export { fetchWalletConnectWallets, getWalletConnectConnector };
|
|
@@ -373,9 +373,11 @@ class WalletConnectV2 extends EthWalletConnector.EthWalletConnector {
|
|
|
373
373
|
}
|
|
374
374
|
getConnectedAccounts() {
|
|
375
375
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
376
|
+
if (this.isInitialized === false) {
|
|
377
|
+
yield this.initProvider();
|
|
378
|
+
this.refreshSession();
|
|
379
|
+
this.isInitialized = true;
|
|
380
|
+
}
|
|
379
381
|
if (!this.activeAccount) {
|
|
380
382
|
return [];
|
|
381
383
|
}
|
|
@@ -364,9 +364,11 @@ class WalletConnectV2 extends EthWalletConnector {
|
|
|
364
364
|
}
|
|
365
365
|
getConnectedAccounts() {
|
|
366
366
|
return __awaiter(this, void 0, void 0, function* () {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
367
|
+
if (this.isInitialized === false) {
|
|
368
|
+
yield this.initProvider();
|
|
369
|
+
this.refreshSession();
|
|
370
|
+
this.isInitialized = true;
|
|
371
|
+
}
|
|
370
372
|
if (!this.activeAccount) {
|
|
371
373
|
return [];
|
|
372
374
|
}
|
package/src/injected/OKX.cjs
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var InjectedWalletBase = require('./InjectedWalletBase.cjs');
|
|
6
|
-
|
|
7
|
-
class OKX extends InjectedWalletBase {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this.name = 'OKX Wallet';
|
|
11
|
-
this.walletConnectorFallback = true;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
exports.OKX = OKX;
|
package/src/injected/OKX.d.ts
DELETED
package/src/injected/OKX.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var InjectedWalletBase = require('./InjectedWalletBase.cjs');
|
|
6
|
-
|
|
7
|
-
class UnknownInjectedWallet extends InjectedWalletBase {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(...arguments);
|
|
10
|
-
this.name = 'InjectedWallet';
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
exports.UnknownInjectedWallet = UnknownInjectedWallet;
|