@dynamic-labs/ethereum 4.0.0-alpha.3 → 4.0.0-alpha.31
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 +261 -0
- package/package.cjs +8 -0
- package/package.js +4 -0
- package/package.json +12 -17
- package/src/coinbase/coinbase.cjs +1 -3
- package/src/coinbase/coinbase.d.ts +2 -5
- package/src/coinbase/coinbase.js +2 -4
- package/src/coinbase/types.d.ts +2 -2
- package/src/ethProviderHelper.cjs +47 -38
- package/src/ethProviderHelper.d.ts +6 -6
- package/src/ethProviderHelper.js +48 -39
- package/src/index.cjs +11 -0
- package/src/index.d.ts +1 -1
- package/src/index.js +7 -1
- package/src/injected/ExodusEvm.cjs +1 -1
- package/src/injected/ExodusEvm.d.ts +3 -3
- package/src/injected/ExodusEvm.js +1 -1
- package/src/injected/FallbackEvmConnector.cjs +1 -1
- package/src/injected/FallbackEvmConnector.d.ts +3 -3
- package/src/injected/FallbackEvmConnector.js +1 -1
- package/src/injected/InjectedWalletBase.cjs +12 -6
- package/src/injected/InjectedWalletBase.d.ts +4 -6
- package/src/injected/InjectedWalletBase.js +11 -7
- package/src/injected/PhantomEvm.cjs +1 -1
- package/src/injected/PhantomEvm.d.ts +3 -3
- package/src/injected/PhantomEvm.js +1 -1
- package/src/injected/UnknownInjected.cjs +1 -1
- package/src/injected/UnknownInjected.d.ts +3 -3
- package/src/injected/UnknownInjected.js +1 -1
- package/src/injected/fetchInjectedWalletConnectors.cjs +4 -2
- package/src/injected/fetchInjectedWalletConnectors.js +4 -2
- package/src/injected/index.d.ts +1 -0
- package/src/metaMask/MetaMaskConnector.cjs +399 -0
- package/src/metaMask/MetaMaskConnector.d.ts +58 -0
- package/src/metaMask/MetaMaskConnector.js +395 -0
- package/src/metaMask/utils/createMetaMaskSDKDisplayUriState.cjs +58 -0
- package/src/metaMask/utils/createMetaMaskSDKDisplayUriState.d.ts +14 -0
- package/src/metaMask/utils/createMetaMaskSDKDisplayUriState.js +54 -0
- package/src/metaMask/utils/isPendingWalletRequestPermissionError.cjs +11 -0
- package/src/metaMask/utils/isPendingWalletRequestPermissionError.d.ts +1 -0
- package/src/metaMask/utils/isPendingWalletRequestPermissionError.js +7 -0
- package/src/metaMask/utils/waitForConnection.cjs +10 -0
- package/src/metaMask/utils/waitForConnection.d.ts +2 -0
- package/src/metaMask/utils/waitForConnection.js +6 -0
- package/src/types.d.ts +1 -3
- package/src/utils/logger.cjs +10 -0
- package/src/utils/logger.d.ts +2 -0
- package/src/utils/logger.js +6 -0
- package/src/walletConnect/walletConnect.cjs +1 -3
- package/src/walletConnect/walletConnect.d.ts +4 -6
- package/src/walletConnect/walletConnect.js +2 -4
package/src/ethProviderHelper.js
CHANGED
|
@@ -1,23 +1,29 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../_virtual/_tslib.js';
|
|
3
3
|
import { createWalletClient, custom, getAddress } from 'viem';
|
|
4
|
-
import { ProviderLookup,
|
|
4
|
+
import { ProviderLookup, logger, eventListenerHandlers } from '@dynamic-labs/wallet-connector-core';
|
|
5
5
|
import { getProvidersFromWindow, Eip6963ProviderSingleton } from '@dynamic-labs/utils';
|
|
6
6
|
import { chainsMap } from '@dynamic-labs/ethereum-core';
|
|
7
7
|
|
|
8
8
|
class EthProviderHelper {
|
|
9
9
|
constructor(wallet, connector) {
|
|
10
10
|
this.wallet = wallet;
|
|
11
|
-
this.
|
|
11
|
+
this._connector = connector;
|
|
12
|
+
}
|
|
13
|
+
get connector() {
|
|
14
|
+
if (!this._connector) {
|
|
15
|
+
throw new Error('Connect not provided to EthProviderHelper');
|
|
16
|
+
}
|
|
17
|
+
return this._connector;
|
|
12
18
|
}
|
|
13
19
|
getInstalledProvider() {
|
|
14
|
-
const
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
if (eip6963Provider) {
|
|
18
|
-
return eip6963Provider;
|
|
19
|
-
}
|
|
20
|
+
const eip6963Provider = this.getEip6963Provider();
|
|
21
|
+
if (eip6963Provider) {
|
|
22
|
+
return eip6963Provider;
|
|
20
23
|
}
|
|
24
|
+
return this.getInjectedProvider();
|
|
25
|
+
}
|
|
26
|
+
getInjectedProvider() {
|
|
21
27
|
const config = this.getInjectedConfig();
|
|
22
28
|
if (!config ||
|
|
23
29
|
!config.extensionLocators ||
|
|
@@ -25,10 +31,12 @@ class EthProviderHelper {
|
|
|
25
31
|
return undefined;
|
|
26
32
|
return this.installedProviderLookup(config.extensionLocators);
|
|
27
33
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
34
|
+
getEip6963Provider() {
|
|
35
|
+
const { rdns } = this.connector.metadata;
|
|
36
|
+
if (!rdns) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
return this.eip6963ProviderLookup(rdns);
|
|
32
40
|
}
|
|
33
41
|
getInjectedConfig() {
|
|
34
42
|
if (!this.wallet || !this.wallet.injectedConfig)
|
|
@@ -71,7 +79,7 @@ class EthProviderHelper {
|
|
|
71
79
|
return this.findProvider() !== undefined;
|
|
72
80
|
}
|
|
73
81
|
findProvider() {
|
|
74
|
-
return this.
|
|
82
|
+
return this.connector.findProvider();
|
|
75
83
|
}
|
|
76
84
|
findWalletClient(chainId) {
|
|
77
85
|
const provider = this.findProvider();
|
|
@@ -126,43 +134,44 @@ class EthProviderHelper {
|
|
|
126
134
|
}
|
|
127
135
|
_setupEventListeners(walletConnector) {
|
|
128
136
|
const web3Provider = this.findProvider();
|
|
129
|
-
if (web3Provider && 'on' in web3Provider) {
|
|
130
|
-
const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers(walletConnector);
|
|
131
|
-
web3Provider.on('accountsChanged', handleAccountChange);
|
|
132
|
-
web3Provider.on('chainChanged', handleChainChange);
|
|
133
|
-
web3Provider.on('disconnect', handleDisconnect);
|
|
134
|
-
const tearDownEventListeners = () => {
|
|
135
|
-
const web3Provider = this.findProvider();
|
|
136
|
-
if (!web3Provider) {
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
if (handleAccountChange) {
|
|
140
|
-
web3Provider.removeListener('accountsChanged', handleAccountChange);
|
|
141
|
-
}
|
|
142
|
-
if (handleChainChange) {
|
|
143
|
-
web3Provider.removeListener('chainChanged', handleChainChange);
|
|
144
|
-
}
|
|
145
|
-
if (handleDisconnect) {
|
|
146
|
-
web3Provider.removeListener('disconnect', handleDisconnect);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
return {
|
|
150
|
-
tearDownEventListeners,
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
137
|
if (!web3Provider) {
|
|
154
138
|
logger.warn('Provider not found', {
|
|
155
139
|
connector: walletConnector,
|
|
156
140
|
});
|
|
141
|
+
return {
|
|
142
|
+
tearDownEventListeners: () => { },
|
|
143
|
+
};
|
|
157
144
|
}
|
|
158
|
-
|
|
145
|
+
if (!web3Provider.on) {
|
|
159
146
|
logger.warn('Provider does not support event listeners', {
|
|
160
147
|
connector: walletConnector,
|
|
161
148
|
provider: web3Provider,
|
|
162
149
|
});
|
|
150
|
+
return {
|
|
151
|
+
tearDownEventListeners: () => { },
|
|
152
|
+
};
|
|
163
153
|
}
|
|
154
|
+
const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers(walletConnector);
|
|
155
|
+
web3Provider.on('accountsChanged', handleAccountChange);
|
|
156
|
+
web3Provider.on('chainChanged', handleChainChange);
|
|
157
|
+
web3Provider.on('disconnect', handleDisconnect);
|
|
158
|
+
const tearDownEventListeners = () => {
|
|
159
|
+
const web3Provider = this.findProvider();
|
|
160
|
+
if (!web3Provider) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (handleAccountChange) {
|
|
164
|
+
web3Provider.removeListener('accountsChanged', handleAccountChange);
|
|
165
|
+
}
|
|
166
|
+
if (handleChainChange) {
|
|
167
|
+
web3Provider.removeListener('chainChanged', handleChainChange);
|
|
168
|
+
}
|
|
169
|
+
if (handleDisconnect) {
|
|
170
|
+
web3Provider.removeListener('disconnect', handleDisconnect);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
164
173
|
return {
|
|
165
|
-
tearDownEventListeners
|
|
174
|
+
tearDownEventListeners,
|
|
166
175
|
};
|
|
167
176
|
}
|
|
168
177
|
}
|
package/src/index.cjs
CHANGED
|
@@ -5,23 +5,29 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
|
|
6
6
|
require('./polyfills.cjs');
|
|
7
7
|
var embeddedWalletEvm = require('@dynamic-labs/embedded-wallet-evm');
|
|
8
|
+
var assertPackageVersion = require('@dynamic-labs/assert-package-version');
|
|
9
|
+
var _package = require('../package.cjs');
|
|
8
10
|
var PhantomEvm = require('./injected/PhantomEvm.cjs');
|
|
9
11
|
var ExodusEvm = require('./injected/ExodusEvm.cjs');
|
|
10
12
|
var UnknownInjected = require('./injected/UnknownInjected.cjs');
|
|
11
13
|
var FallbackEvmConnector = require('./injected/FallbackEvmConnector.cjs');
|
|
12
14
|
var fetchInjectedWalletConnectors = require('./injected/fetchInjectedWalletConnectors.cjs');
|
|
15
|
+
var InjectedWalletBase = require('./injected/InjectedWalletBase.cjs');
|
|
13
16
|
require('./walletConnect/walletConnect.cjs');
|
|
14
17
|
var fetchWalletConnectWallets = require('./walletConnect/fetchWalletConnectWallets.cjs');
|
|
15
18
|
var coinbase = require('./coinbase/coinbase.cjs');
|
|
16
19
|
var ethereumCore = require('@dynamic-labs/ethereum-core');
|
|
20
|
+
var MetaMaskConnector = require('./metaMask/MetaMaskConnector.cjs');
|
|
17
21
|
var ethProviderHelper = require('./ethProviderHelper.cjs');
|
|
18
22
|
var constants = require('./constants.cjs');
|
|
19
23
|
|
|
24
|
+
assertPackageVersion.assertPackageVersion('@dynamic-labs/ethereum', _package.version);
|
|
20
25
|
const EthereumWalletConnectors = (props) => [
|
|
21
26
|
...fetchInjectedWalletConnectors.injectedWalletOverrides,
|
|
22
27
|
...fetchInjectedWalletConnectors.fetchInjectedWalletConnector(props),
|
|
23
28
|
...fetchWalletConnectWallets.fetchWalletConnectWallets(props),
|
|
24
29
|
...embeddedWalletEvm.TurnkeyEVMWalletConnectors(props),
|
|
30
|
+
MetaMaskConnector.MetaMaskConnector,
|
|
25
31
|
coinbase.Coinbase,
|
|
26
32
|
UnknownInjected.UnknownInjected,
|
|
27
33
|
FallbackEvmConnector.FallbackEvmConnector,
|
|
@@ -34,6 +40,11 @@ exports.UnknownInjected = UnknownInjected.UnknownInjected;
|
|
|
34
40
|
exports.FallbackEvmConnector = FallbackEvmConnector.FallbackEvmConnector;
|
|
35
41
|
exports.fetchInjectedWalletConnector = fetchInjectedWalletConnectors.fetchInjectedWalletConnector;
|
|
36
42
|
exports.injectedWalletOverrides = fetchInjectedWalletConnectors.injectedWalletOverrides;
|
|
43
|
+
exports.EthereumInjectedConnector = InjectedWalletBase.InjectedWalletBase;
|
|
44
|
+
Object.defineProperty(exports, 'EthereumWalletConnector', {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function () { return ethereumCore.EthereumWalletConnector; }
|
|
47
|
+
});
|
|
37
48
|
Object.defineProperty(exports, 'isEthereumWallet', {
|
|
38
49
|
enumerable: true,
|
|
39
50
|
get: function () { return ethereumCore.isEthereumWallet; }
|
package/src/index.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export * from './ethProviderHelper';
|
|
|
6
6
|
export * from './constants';
|
|
7
7
|
export * from './types';
|
|
8
8
|
export declare const EthereumWalletConnectors: (props: any) => WalletConnectorConstructor[];
|
|
9
|
-
export { isEthereumWallet } from '@dynamic-labs/ethereum-core';
|
|
9
|
+
export { isEthereumWallet, EthereumWalletConnector, } from '@dynamic-labs/ethereum-core';
|
package/src/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import './polyfills.js';
|
|
3
3
|
import { TurnkeyEVMWalletConnectors } from '@dynamic-labs/embedded-wallet-evm';
|
|
4
|
+
import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
|
|
5
|
+
import { version } from '../package.js';
|
|
4
6
|
export { PhantomEvm } from './injected/PhantomEvm.js';
|
|
5
7
|
export { ExodusEvm } from './injected/ExodusEvm.js';
|
|
6
8
|
import { UnknownInjected } from './injected/UnknownInjected.js';
|
|
@@ -9,18 +11,22 @@ import { FallbackEvmConnector } from './injected/FallbackEvmConnector.js';
|
|
|
9
11
|
export { FallbackEvmConnector } from './injected/FallbackEvmConnector.js';
|
|
10
12
|
import { injectedWalletOverrides, fetchInjectedWalletConnector } from './injected/fetchInjectedWalletConnectors.js';
|
|
11
13
|
export { fetchInjectedWalletConnector, injectedWalletOverrides } from './injected/fetchInjectedWalletConnectors.js';
|
|
14
|
+
export { InjectedWalletBase as EthereumInjectedConnector } from './injected/InjectedWalletBase.js';
|
|
12
15
|
import './walletConnect/walletConnect.js';
|
|
13
16
|
import { fetchWalletConnectWallets, getWalletConnectConnector } from './walletConnect/fetchWalletConnectWallets.js';
|
|
14
17
|
import { Coinbase } from './coinbase/coinbase.js';
|
|
15
|
-
export { isEthereumWallet } from '@dynamic-labs/ethereum-core';
|
|
18
|
+
export { EthereumWalletConnector, isEthereumWallet } from '@dynamic-labs/ethereum-core';
|
|
19
|
+
import { MetaMaskConnector } from './metaMask/MetaMaskConnector.js';
|
|
16
20
|
export { EthProviderHelper } from './ethProviderHelper.js';
|
|
17
21
|
export { INFURA_ID } from './constants.js';
|
|
18
22
|
|
|
23
|
+
assertPackageVersion('@dynamic-labs/ethereum', version);
|
|
19
24
|
const EthereumWalletConnectors = (props) => [
|
|
20
25
|
...injectedWalletOverrides,
|
|
21
26
|
...fetchInjectedWalletConnector(props),
|
|
22
27
|
...fetchWalletConnectWallets(props),
|
|
23
28
|
...TurnkeyEVMWalletConnectors(props),
|
|
29
|
+
MetaMaskConnector,
|
|
24
30
|
Coinbase,
|
|
25
31
|
UnknownInjected,
|
|
26
32
|
FallbackEvmConnector,
|
|
@@ -7,7 +7,7 @@ var walletBook = require('@dynamic-labs/wallet-book');
|
|
|
7
7
|
var InjectedWalletBase = require('./InjectedWalletBase.cjs');
|
|
8
8
|
|
|
9
9
|
// leaving ExodusEvm in here due to a backwards compatibility issue with this one wallet and v18
|
|
10
|
-
class ExodusEvm extends InjectedWalletBase {
|
|
10
|
+
class ExodusEvm extends InjectedWalletBase.InjectedWalletBase {
|
|
11
11
|
constructor(props) {
|
|
12
12
|
super(props);
|
|
13
13
|
this.name = 'ExodusEvm';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import InjectedWalletBase from './InjectedWalletBase';
|
|
1
|
+
import { EthereumWalletConnectorOpts } from '@dynamic-labs/ethereum-core';
|
|
2
|
+
import { InjectedWalletBase } from './InjectedWalletBase';
|
|
3
3
|
export declare class ExodusEvm extends InjectedWalletBase {
|
|
4
4
|
name: string;
|
|
5
5
|
overrideKey: string;
|
|
6
6
|
walletConnectorFallback: boolean;
|
|
7
|
-
constructor(props:
|
|
7
|
+
constructor(props: EthereumWalletConnectorOpts);
|
|
8
8
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
|
|
3
|
-
import InjectedWalletBase from './InjectedWalletBase.js';
|
|
3
|
+
import { InjectedWalletBase } from './InjectedWalletBase.js';
|
|
4
4
|
|
|
5
5
|
// leaving ExodusEvm in here due to a backwards compatibility issue with this one wallet and v18
|
|
6
6
|
class ExodusEvm extends InjectedWalletBase {
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
6
6
|
var walletBook = require('@dynamic-labs/wallet-book');
|
|
7
7
|
var InjectedWalletBase = require('./InjectedWalletBase.cjs');
|
|
8
8
|
|
|
9
|
-
class FallbackEvmConnector extends InjectedWalletBase {
|
|
9
|
+
class FallbackEvmConnector extends InjectedWalletBase.InjectedWalletBase {
|
|
10
10
|
constructor(props) {
|
|
11
11
|
super(props);
|
|
12
12
|
this.name = 'Fallback Connector';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import InjectedWalletBase from './InjectedWalletBase';
|
|
1
|
+
import { EthereumWalletConnectorOpts } from '@dynamic-labs/ethereum-core';
|
|
2
|
+
import { InjectedWalletBase } from './InjectedWalletBase';
|
|
3
3
|
export declare class FallbackEvmConnector extends InjectedWalletBase {
|
|
4
4
|
name: string;
|
|
5
5
|
overrideKey: string;
|
|
6
6
|
isAvailable: boolean;
|
|
7
|
-
constructor(props:
|
|
7
|
+
constructor(props: EthereumWalletConnectorOpts);
|
|
8
8
|
isInstalledOnBrowser(): boolean;
|
|
9
9
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
|
|
3
|
-
import InjectedWalletBase from './InjectedWalletBase.js';
|
|
3
|
+
import { InjectedWalletBase } from './InjectedWalletBase.js';
|
|
4
4
|
|
|
5
5
|
class FallbackEvmConnector extends InjectedWalletBase {
|
|
6
6
|
constructor(props) {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
4
6
|
var _tslib = require('../../_virtual/_tslib.cjs');
|
|
5
7
|
var walletBook = require('@dynamic-labs/wallet-book');
|
|
6
8
|
var utils = require('@dynamic-labs/utils');
|
|
@@ -8,11 +10,9 @@ var ethereumCore = require('@dynamic-labs/ethereum-core');
|
|
|
8
10
|
var ethProviderHelper = require('../ethProviderHelper.cjs');
|
|
9
11
|
var walletConnect = require('../walletConnect/walletConnect.cjs');
|
|
10
12
|
|
|
11
|
-
class InjectedWalletBase extends ethereumCore.
|
|
13
|
+
class InjectedWalletBase extends ethereumCore.EthereumWalletConnector {
|
|
12
14
|
constructor() {
|
|
13
15
|
super(...arguments);
|
|
14
|
-
this.supportedChains = ['ETH', 'EVM'];
|
|
15
|
-
this.connectedChain = 'EVM';
|
|
16
16
|
this.walletConnectorFallback = false;
|
|
17
17
|
}
|
|
18
18
|
getEthProviderHelper() {
|
|
@@ -28,7 +28,7 @@ class InjectedWalletBase extends ethereumCore.EthWalletConnector {
|
|
|
28
28
|
return this.ethProviderHelper;
|
|
29
29
|
}
|
|
30
30
|
getMobileOrInstalledWallet() {
|
|
31
|
-
var _a
|
|
31
|
+
var _a;
|
|
32
32
|
if (!this.wallet) {
|
|
33
33
|
this.wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
|
|
34
34
|
}
|
|
@@ -38,7 +38,7 @@ class InjectedWalletBase extends ethereumCore.EthWalletConnector {
|
|
|
38
38
|
// this is to handle the case where the user is in a webview.
|
|
39
39
|
// when the user is in a webview, customers should set the deepLinkPreference prop to universal,
|
|
40
40
|
// in which case this condition will be false, and the SDK will use WalletConnect (if available)
|
|
41
|
-
if (((
|
|
41
|
+
if (((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.inAppBrowserUrl) &&
|
|
42
42
|
this.mobileExperience === 'in-app-browser' &&
|
|
43
43
|
utils.isMobile()) {
|
|
44
44
|
return this;
|
|
@@ -51,6 +51,12 @@ class InjectedWalletBase extends ethereumCore.EthWalletConnector {
|
|
|
51
51
|
}
|
|
52
52
|
return new walletConnect.WalletConnect(Object.assign(Object.assign({}, this.constructorProps), { walletName: this.name }));
|
|
53
53
|
}
|
|
54
|
+
findProvider() {
|
|
55
|
+
const ethProviderHelper = this.getEthProviderHelper();
|
|
56
|
+
if (!ethProviderHelper)
|
|
57
|
+
return;
|
|
58
|
+
return ethProviderHelper.getInstalledProvider();
|
|
59
|
+
}
|
|
54
60
|
setupEventListeners() {
|
|
55
61
|
const provider = this.getWalletClient();
|
|
56
62
|
if (!provider)
|
|
@@ -108,4 +114,4 @@ class InjectedWalletBase extends ethereumCore.EthWalletConnector {
|
|
|
108
114
|
}
|
|
109
115
|
}
|
|
110
116
|
|
|
111
|
-
|
|
117
|
+
exports.InjectedWalletBase = InjectedWalletBase;
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { WalletClient, Transport, Account, Chain as ViemChain } from 'viem';
|
|
2
|
-
import { Chain } from '@dynamic-labs/wallet-connector-core';
|
|
3
2
|
import { EvmNetwork } from '@dynamic-labs/types';
|
|
4
3
|
import { WalletSchema } from '@dynamic-labs/wallet-book';
|
|
5
|
-
import {
|
|
4
|
+
import { EthereumWalletConnector } from '@dynamic-labs/ethereum-core';
|
|
6
5
|
import { EthProviderHelper } from '../ethProviderHelper';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
connectedChain: Chain;
|
|
6
|
+
import { IEthereum } from '../types';
|
|
7
|
+
export declare abstract class InjectedWalletBase extends EthereumWalletConnector {
|
|
10
8
|
publicAddress: string | undefined;
|
|
11
9
|
walletConnectorFallback: boolean;
|
|
12
10
|
ethProviderHelper: EthProviderHelper | undefined;
|
|
13
11
|
wallet: WalletSchema | undefined;
|
|
14
12
|
getEthProviderHelper(): EthProviderHelper | undefined;
|
|
15
13
|
getMobileOrInstalledWallet(): InjectedWalletBase;
|
|
14
|
+
findProvider(): IEthereum | undefined;
|
|
16
15
|
setupEventListeners(): void;
|
|
17
16
|
getWalletClient(chainId?: string): WalletClient<Transport, ViemChain, Account> | undefined;
|
|
18
17
|
isInstalledOnBrowser(): boolean;
|
|
@@ -26,4 +25,3 @@ declare abstract class InjectedWalletBase extends EthWalletConnector {
|
|
|
26
25
|
provider: WalletClient;
|
|
27
26
|
}): Promise<void>;
|
|
28
27
|
}
|
|
29
|
-
export default InjectedWalletBase;
|
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
3
|
import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
|
|
4
4
|
import { isMobile } from '@dynamic-labs/utils';
|
|
5
|
-
import {
|
|
5
|
+
import { EthereumWalletConnector } from '@dynamic-labs/ethereum-core';
|
|
6
6
|
import { EthProviderHelper } from '../ethProviderHelper.js';
|
|
7
7
|
import { WalletConnect } from '../walletConnect/walletConnect.js';
|
|
8
8
|
|
|
9
|
-
class InjectedWalletBase extends
|
|
9
|
+
class InjectedWalletBase extends EthereumWalletConnector {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments);
|
|
12
|
-
this.supportedChains = ['ETH', 'EVM'];
|
|
13
|
-
this.connectedChain = 'EVM';
|
|
14
12
|
this.walletConnectorFallback = false;
|
|
15
13
|
}
|
|
16
14
|
getEthProviderHelper() {
|
|
@@ -26,7 +24,7 @@ class InjectedWalletBase extends EthWalletConnector {
|
|
|
26
24
|
return this.ethProviderHelper;
|
|
27
25
|
}
|
|
28
26
|
getMobileOrInstalledWallet() {
|
|
29
|
-
var _a
|
|
27
|
+
var _a;
|
|
30
28
|
if (!this.wallet) {
|
|
31
29
|
this.wallet = findWalletBookWallet(this.walletBook, this.key);
|
|
32
30
|
}
|
|
@@ -36,7 +34,7 @@ class InjectedWalletBase extends EthWalletConnector {
|
|
|
36
34
|
// this is to handle the case where the user is in a webview.
|
|
37
35
|
// when the user is in a webview, customers should set the deepLinkPreference prop to universal,
|
|
38
36
|
// in which case this condition will be false, and the SDK will use WalletConnect (if available)
|
|
39
|
-
if (((
|
|
37
|
+
if (((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.inAppBrowserUrl) &&
|
|
40
38
|
this.mobileExperience === 'in-app-browser' &&
|
|
41
39
|
isMobile()) {
|
|
42
40
|
return this;
|
|
@@ -49,6 +47,12 @@ class InjectedWalletBase extends EthWalletConnector {
|
|
|
49
47
|
}
|
|
50
48
|
return new WalletConnect(Object.assign(Object.assign({}, this.constructorProps), { walletName: this.name }));
|
|
51
49
|
}
|
|
50
|
+
findProvider() {
|
|
51
|
+
const ethProviderHelper = this.getEthProviderHelper();
|
|
52
|
+
if (!ethProviderHelper)
|
|
53
|
+
return;
|
|
54
|
+
return ethProviderHelper.getInstalledProvider();
|
|
55
|
+
}
|
|
52
56
|
setupEventListeners() {
|
|
53
57
|
const provider = this.getWalletClient();
|
|
54
58
|
if (!provider)
|
|
@@ -106,4 +110,4 @@ class InjectedWalletBase extends EthWalletConnector {
|
|
|
106
110
|
}
|
|
107
111
|
}
|
|
108
112
|
|
|
109
|
-
export { InjectedWalletBase
|
|
113
|
+
export { InjectedWalletBase };
|
|
@@ -8,7 +8,7 @@ var utils = require('@dynamic-labs/utils');
|
|
|
8
8
|
var walletBook = require('@dynamic-labs/wallet-book');
|
|
9
9
|
var InjectedWalletBase = require('./InjectedWalletBase.cjs');
|
|
10
10
|
|
|
11
|
-
class PhantomEvm extends InjectedWalletBase {
|
|
11
|
+
class PhantomEvm extends InjectedWalletBase.InjectedWalletBase {
|
|
12
12
|
constructor(props) {
|
|
13
13
|
super(props);
|
|
14
14
|
this.name = 'Phantom';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import InjectedWalletBase from './InjectedWalletBase';
|
|
1
|
+
import { EthereumWalletConnectorOpts } from '@dynamic-labs/ethereum-core';
|
|
2
|
+
import { InjectedWalletBase } from './InjectedWalletBase';
|
|
3
3
|
export declare class PhantomEvm extends InjectedWalletBase {
|
|
4
4
|
name: string;
|
|
5
5
|
overrideKey: string;
|
|
6
|
-
constructor(props:
|
|
6
|
+
constructor(props: EthereumWalletConnectorOpts);
|
|
7
7
|
getAddress(): Promise<string | undefined>;
|
|
8
8
|
canGetChainAddress(): boolean;
|
|
9
9
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
3
|
import { isMobile, handleMobileWalletRedirect } from '@dynamic-labs/utils';
|
|
4
4
|
import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
|
|
5
|
-
import InjectedWalletBase from './InjectedWalletBase.js';
|
|
5
|
+
import { InjectedWalletBase } from './InjectedWalletBase.js';
|
|
6
6
|
|
|
7
7
|
class PhantomEvm extends InjectedWalletBase {
|
|
8
8
|
constructor(props) {
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
6
6
|
var walletBook = require('@dynamic-labs/wallet-book');
|
|
7
7
|
var InjectedWalletBase = require('./InjectedWalletBase.cjs');
|
|
8
8
|
|
|
9
|
-
class UnknownInjected extends InjectedWalletBase {
|
|
9
|
+
class UnknownInjected extends InjectedWalletBase.InjectedWalletBase {
|
|
10
10
|
constructor(props) {
|
|
11
11
|
super(props);
|
|
12
12
|
this.name = 'Unknown';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import InjectedWalletBase from './InjectedWalletBase';
|
|
1
|
+
import { EthereumWalletConnectorOpts } from '@dynamic-labs/ethereum-core';
|
|
2
|
+
import { InjectedWalletBase } from './InjectedWalletBase';
|
|
3
3
|
export declare class UnknownInjected extends InjectedWalletBase {
|
|
4
4
|
name: string;
|
|
5
5
|
overrideKey: string;
|
|
6
|
-
constructor(props:
|
|
6
|
+
constructor(props: EthereumWalletConnectorOpts);
|
|
7
7
|
isInstalledOnBrowser(): boolean;
|
|
8
8
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
|
|
3
|
-
import InjectedWalletBase from './InjectedWalletBase.js';
|
|
3
|
+
import { InjectedWalletBase } from './InjectedWalletBase.js';
|
|
4
4
|
|
|
5
5
|
class UnknownInjected extends InjectedWalletBase {
|
|
6
6
|
constructor(props) {
|
|
@@ -17,6 +17,8 @@ const filteredInjectedWalletKeysOverrides = [
|
|
|
17
17
|
'phantomevm',
|
|
18
18
|
'coinbase',
|
|
19
19
|
'exodusevm',
|
|
20
|
+
'abstract',
|
|
21
|
+
'metamask',
|
|
20
22
|
];
|
|
21
23
|
const fetchInjectedWalletConnector = ({ walletBook, }) => {
|
|
22
24
|
var _a;
|
|
@@ -30,7 +32,7 @@ const fetchInjectedWalletConnector = ({ walletBook, }) => {
|
|
|
30
32
|
const { shortName } = wallet;
|
|
31
33
|
const name = shortName || wallet.name;
|
|
32
34
|
const walletConnectorFallback = Boolean(wallet.walletConnect);
|
|
33
|
-
return class extends InjectedWalletBase {
|
|
35
|
+
return class extends InjectedWalletBase.InjectedWalletBase {
|
|
34
36
|
constructor(props) {
|
|
35
37
|
super(Object.assign({}, props));
|
|
36
38
|
this.name = name;
|
|
@@ -48,7 +50,7 @@ const fetchInjectedWalletConnector = ({ walletBook, }) => {
|
|
|
48
50
|
if (this.isInstalledOnBrowser()) {
|
|
49
51
|
return _super.getAddress.call(this);
|
|
50
52
|
}
|
|
51
|
-
const inAppBrowserBase = (_a = this.
|
|
53
|
+
const inAppBrowserBase = (_a = this.metadata) === null || _a === void 0 ? void 0 : _a.inAppBrowserUrl;
|
|
52
54
|
if (!inAppBrowserBase) {
|
|
53
55
|
const error = new Error(`No inAppBrowserBase found for ${this.name}.`);
|
|
54
56
|
walletConnectorCore.logger.error(error.message);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
3
|
import { logger } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
-
import InjectedWalletBase from './InjectedWalletBase.js';
|
|
4
|
+
import { InjectedWalletBase } from './InjectedWalletBase.js';
|
|
5
5
|
import { PhantomEvm } from './PhantomEvm.js';
|
|
6
6
|
import { ExodusEvm } from './ExodusEvm.js';
|
|
7
7
|
|
|
@@ -13,6 +13,8 @@ const filteredInjectedWalletKeysOverrides = [
|
|
|
13
13
|
'phantomevm',
|
|
14
14
|
'coinbase',
|
|
15
15
|
'exodusevm',
|
|
16
|
+
'abstract',
|
|
17
|
+
'metamask',
|
|
16
18
|
];
|
|
17
19
|
const fetchInjectedWalletConnector = ({ walletBook, }) => {
|
|
18
20
|
var _a;
|
|
@@ -44,7 +46,7 @@ const fetchInjectedWalletConnector = ({ walletBook, }) => {
|
|
|
44
46
|
if (this.isInstalledOnBrowser()) {
|
|
45
47
|
return _super.getAddress.call(this);
|
|
46
48
|
}
|
|
47
|
-
const inAppBrowserBase = (_a = this.
|
|
49
|
+
const inAppBrowserBase = (_a = this.metadata) === null || _a === void 0 ? void 0 : _a.inAppBrowserUrl;
|
|
48
50
|
if (!inAppBrowserBase) {
|
|
49
51
|
const error = new Error(`No inAppBrowserBase found for ${this.name}.`);
|
|
50
52
|
logger.error(error.message);
|
package/src/injected/index.d.ts
CHANGED