@dynamic-labs/ethereum 4.0.1 → 4.2.0

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 CHANGED
@@ -1,4 +1,31 @@
1
1
 
2
+ ## [4.2.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.1.0...v4.2.0) (2025-01-14)
3
+
4
+
5
+ ### Features
6
+
7
+ * add EthereumWalletConnectorsWithConfig ([#7796](https://github.com/dynamic-labs/dynamic-auth/issues/7796)) ([52146c3](https://github.com/dynamic-labs/dynamic-auth/commit/52146c38acbbe9ad31d5f047527b06ea44846065))
8
+ * add new userWalletsChanged event that aggregates all user wallet events ([#7797](https://github.com/dynamic-labs/dynamic-auth/issues/7797)) ([058e629](https://github.com/dynamic-labs/dynamic-auth/commit/058e629f0e760ad9dff2b03f86354355c6f8bffe))
9
+ * add support for connect with OKX Wallet on Eclipse ([#7793](https://github.com/dynamic-labs/dynamic-auth/issues/7793)) ([b6cd047](https://github.com/dynamic-labs/dynamic-auth/commit/b6cd04781402868443b02cbce269dd3c02c358b5))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * getWalletClient method not returning client with chain for Coinbase ([#7799](https://github.com/dynamic-labs/dynamic-auth/issues/7799)) ([e075493](https://github.com/dynamic-labs/dynamic-auth/commit/e0754936582c19850c905fc3d62c3621df7c274c))
15
+
16
+ ## [4.1.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.1...v4.1.0) (2025-01-14)
17
+
18
+
19
+ ### Features
20
+
21
+ * add hook for upgrading embedded wallets ([#7743](https://github.com/dynamic-labs/dynamic-auth/issues/7743)) ([f0f49b3](https://github.com/dynamic-labs/dynamic-auth/commit/f0f49b335fcf99402fcd8722ae0af137d6f313d1))
22
+ * add setting to require transaction confirmation ([#7770](https://github.com/dynamic-labs/dynamic-auth/issues/7770)) ([0a92485](https://github.com/dynamic-labs/dynamic-auth/commit/0a924852b241e786ad608c55e593d7363c1661c1))
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * correctly detect MetaMask installation in the browser ([#7789](https://github.com/dynamic-labs/dynamic-auth/issues/7789)) ([d499497](https://github.com/dynamic-labs/dynamic-auth/commit/d499497c0b9e052962b3f16fc418a7de99e3bb34))
28
+
2
29
  ### [4.0.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.0.0...v4.0.1) (2025-01-10)
3
30
 
4
31
 
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.0.1";
6
+ var version = "4.2.0";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.0.1";
2
+ var version = "4.2.0";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum",
3
- "version": "4.0.1",
3
+ "version": "4.2.0",
4
4
  "description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -24,14 +24,14 @@
24
24
  "eventemitter3": "5.0.1",
25
25
  "buffer": "6.0.3",
26
26
  "@metamask/sdk": "0.30.1",
27
- "@dynamic-labs/assert-package-version": "4.0.1",
28
- "@dynamic-labs/embedded-wallet-evm": "4.0.1",
29
- "@dynamic-labs/ethereum-core": "4.0.1",
30
- "@dynamic-labs/logger": "4.0.1",
31
- "@dynamic-labs/types": "4.0.1",
32
- "@dynamic-labs/utils": "4.0.1",
33
- "@dynamic-labs/wallet-book": "4.0.1",
34
- "@dynamic-labs/wallet-connector-core": "4.0.1"
27
+ "@dynamic-labs/assert-package-version": "4.2.0",
28
+ "@dynamic-labs/embedded-wallet-evm": "4.2.0",
29
+ "@dynamic-labs/ethereum-core": "4.2.0",
30
+ "@dynamic-labs/logger": "4.2.0",
31
+ "@dynamic-labs/types": "4.2.0",
32
+ "@dynamic-labs/utils": "4.2.0",
33
+ "@dynamic-labs/wallet-book": "4.2.0",
34
+ "@dynamic-labs/wallet-connector-core": "4.2.0"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "viem": "^2.21.55"
@@ -0,0 +1,31 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var embeddedWalletEvm = require('@dynamic-labs/embedded-wallet-evm');
7
+ require('../_virtual/_tslib.cjs');
8
+ require('@dynamic-labs/utils');
9
+ require('@dynamic-labs/ethereum-core');
10
+ require('viem');
11
+ require('@dynamic-labs/wallet-connector-core');
12
+ require('@dynamic-labs/wallet-book');
13
+ require('./walletConnect/walletConnect.cjs');
14
+ var fetchWalletConnectWallets = require('./walletConnect/fetchWalletConnectWallets.cjs');
15
+ var FallbackEvmConnector = require('./injected/FallbackEvmConnector.cjs');
16
+ var fetchInjectedWalletConnectors = require('./injected/fetchInjectedWalletConnectors.cjs');
17
+ var coinbase = require('./coinbase/coinbase.cjs');
18
+ var MetaMaskConnector = require('./metaMask/MetaMaskConnector.cjs');
19
+
20
+ const EthereumWalletConnectors = (props) => [
21
+ ...fetchInjectedWalletConnectors.injectedWalletOverrides,
22
+ ...fetchInjectedWalletConnectors.fetchInjectedWalletConnector(props),
23
+ ...fetchWalletConnectWallets.fetchWalletConnectWallets(props),
24
+ ...embeddedWalletEvm.TurnkeyEVMWalletConnectors(props),
25
+ MetaMaskConnector.MetaMaskConnector,
26
+ coinbase.Coinbase,
27
+ FallbackEvmConnector.FallbackEvmConnector,
28
+ fetchWalletConnectWallets.getWalletConnectConnector(),
29
+ ];
30
+
31
+ exports.EthereumWalletConnectors = EthereumWalletConnectors;
@@ -0,0 +1,2 @@
1
+ import { WalletConnectorConstructor } from '@dynamic-labs/wallet-connector-core';
2
+ export declare const EthereumWalletConnectors: (props: any) => WalletConnectorConstructor[];
@@ -0,0 +1,27 @@
1
+ 'use client'
2
+ import { TurnkeyEVMWalletConnectors } from '@dynamic-labs/embedded-wallet-evm';
3
+ import '../_virtual/_tslib.js';
4
+ import '@dynamic-labs/utils';
5
+ import '@dynamic-labs/ethereum-core';
6
+ import 'viem';
7
+ import '@dynamic-labs/wallet-connector-core';
8
+ import '@dynamic-labs/wallet-book';
9
+ import './walletConnect/walletConnect.js';
10
+ import { fetchWalletConnectWallets, getWalletConnectConnector } from './walletConnect/fetchWalletConnectWallets.js';
11
+ import { FallbackEvmConnector } from './injected/FallbackEvmConnector.js';
12
+ import { injectedWalletOverrides, fetchInjectedWalletConnector } from './injected/fetchInjectedWalletConnectors.js';
13
+ import { Coinbase } from './coinbase/coinbase.js';
14
+ import { MetaMaskConnector } from './metaMask/MetaMaskConnector.js';
15
+
16
+ const EthereumWalletConnectors = (props) => [
17
+ ...injectedWalletOverrides,
18
+ ...fetchInjectedWalletConnector(props),
19
+ ...fetchWalletConnectWallets(props),
20
+ ...TurnkeyEVMWalletConnectors(props),
21
+ MetaMaskConnector,
22
+ Coinbase,
23
+ FallbackEvmConnector,
24
+ getWalletConnectConnector(),
25
+ ];
26
+
27
+ export { EthereumWalletConnectors };
@@ -0,0 +1,20 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var EthereumWalletConnectors = require('./EthereumWalletConnectors.cjs');
7
+
8
+ const EthereumWalletConnectorsWithConfig = (providersConfig) => {
9
+ const classWithConfig = (className) => class extends className {
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ constructor(...args) {
12
+ const [opts] = args;
13
+ super(Object.assign(Object.assign({}, opts), { providersConfig }));
14
+ }
15
+ };
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ return (props) => EthereumWalletConnectors.EthereumWalletConnectors(props).map(classWithConfig);
18
+ };
19
+
20
+ exports.EthereumWalletConnectorsWithConfig = EthereumWalletConnectorsWithConfig;
@@ -0,0 +1,5 @@
1
+ import { WalletConnectorConstructor } from '@dynamic-labs/wallet-connector-core';
2
+ import { RegisterEvmProvidersConfig } from '@dynamic-labs/ethereum-core';
3
+ type EthereumWalletConnectorsWithConfigProps = RegisterEvmProvidersConfig;
4
+ export declare const EthereumWalletConnectorsWithConfig: (providersConfig: EthereumWalletConnectorsWithConfigProps) => (props: any) => WalletConnectorConstructor[];
5
+ export {};
@@ -0,0 +1,16 @@
1
+ 'use client'
2
+ import { EthereumWalletConnectors } from './EthereumWalletConnectors.js';
3
+
4
+ const EthereumWalletConnectorsWithConfig = (providersConfig) => {
5
+ const classWithConfig = (className) => class extends className {
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ constructor(...args) {
8
+ const [opts] = args;
9
+ super(Object.assign(Object.assign({}, opts), { providersConfig }));
10
+ }
11
+ };
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
+ return (props) => EthereumWalletConnectors(props).map(classWithConfig);
14
+ };
15
+
16
+ export { EthereumWalletConnectorsWithConfig };
@@ -86,7 +86,7 @@ class Coinbase extends ethereumCore.EthereumWalletConnector {
86
86
  getWalletClient(chainId) {
87
87
  return viem.createWalletClient({
88
88
  account: this.getActiveAccount(),
89
- chain: chainId ? ethereumCore.chainsMap[chainId] : undefined,
89
+ chain: chainId ? ethereumCore.chainsMap[chainId] : this.getActiveChain(),
90
90
  transport: viem.custom(this.coinbaseProvider),
91
91
  });
92
92
  }
@@ -82,7 +82,7 @@ class Coinbase extends EthereumWalletConnector {
82
82
  getWalletClient(chainId) {
83
83
  return createWalletClient({
84
84
  account: this.getActiveAccount(),
85
- chain: chainId ? chainsMap[chainId] : undefined,
85
+ chain: chainId ? chainsMap[chainId] : this.getActiveChain(),
86
86
  transport: custom(this.coinbaseProvider),
87
87
  });
88
88
  }
package/src/index.cjs CHANGED
@@ -4,41 +4,22 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  require('./polyfills.cjs');
7
- var embeddedWalletEvm = require('@dynamic-labs/embedded-wallet-evm');
8
7
  var assertPackageVersion = require('@dynamic-labs/assert-package-version');
9
8
  var _package = require('../package.cjs');
9
+ var ethereumCore = require('@dynamic-labs/ethereum-core');
10
10
  var PhantomEvm = require('./injected/PhantomEvm.cjs');
11
11
  var ExodusEvm = require('./injected/ExodusEvm.cjs');
12
12
  var FallbackEvmConnector = require('./injected/FallbackEvmConnector.cjs');
13
13
  var fetchInjectedWalletConnectors = require('./injected/fetchInjectedWalletConnectors.cjs');
14
14
  var InjectedWalletBase = require('./injected/InjectedWalletBase.cjs');
15
- require('./walletConnect/walletConnect.cjs');
16
- var fetchWalletConnectWallets = require('./walletConnect/fetchWalletConnectWallets.cjs');
17
- var coinbase = require('./coinbase/coinbase.cjs');
18
- var ethereumCore = require('@dynamic-labs/ethereum-core');
19
- var MetaMaskConnector = require('./metaMask/MetaMaskConnector.cjs');
20
15
  var ethProviderHelper = require('./ethProviderHelper.cjs');
21
16
  var constants = require('./constants.cjs');
22
17
  var createInjectedConnector = require('./utils/createInjectedConnector/createInjectedConnector.cjs');
18
+ var EthereumWalletConnectors = require('./EthereumWalletConnectors.cjs');
19
+ var EthereumWalletConnectorsWithConfig = require('./EthereumWalletConnectorsWithConfig.cjs');
23
20
 
24
21
  assertPackageVersion.assertPackageVersion('@dynamic-labs/ethereum', _package.version);
25
- const EthereumWalletConnectors = (props) => [
26
- ...fetchInjectedWalletConnectors.injectedWalletOverrides,
27
- ...fetchInjectedWalletConnectors.fetchInjectedWalletConnector(props),
28
- ...fetchWalletConnectWallets.fetchWalletConnectWallets(props),
29
- ...embeddedWalletEvm.TurnkeyEVMWalletConnectors(props),
30
- MetaMaskConnector.MetaMaskConnector,
31
- coinbase.Coinbase,
32
- FallbackEvmConnector.FallbackEvmConnector,
33
- fetchWalletConnectWallets.getWalletConnectConnector(),
34
- ];
35
22
 
36
- exports.PhantomEvm = PhantomEvm.PhantomEvm;
37
- exports.ExodusEvm = ExodusEvm.ExodusEvm;
38
- exports.FallbackEvmConnector = FallbackEvmConnector.FallbackEvmConnector;
39
- exports.fetchInjectedWalletConnector = fetchInjectedWalletConnectors.fetchInjectedWalletConnector;
40
- exports.injectedWalletOverrides = fetchInjectedWalletConnectors.injectedWalletOverrides;
41
- exports.EthereumInjectedConnector = InjectedWalletBase.InjectedWalletBase;
42
23
  Object.defineProperty(exports, 'EthereumWalletConnector', {
43
24
  enumerable: true,
44
25
  get: function () { return ethereumCore.EthereumWalletConnector; }
@@ -51,7 +32,14 @@ Object.defineProperty(exports, 'isEthereumWallet', {
51
32
  enumerable: true,
52
33
  get: function () { return ethereumCore.isEthereumWallet; }
53
34
  });
35
+ exports.PhantomEvm = PhantomEvm.PhantomEvm;
36
+ exports.ExodusEvm = ExodusEvm.ExodusEvm;
37
+ exports.FallbackEvmConnector = FallbackEvmConnector.FallbackEvmConnector;
38
+ exports.fetchInjectedWalletConnector = fetchInjectedWalletConnectors.fetchInjectedWalletConnector;
39
+ exports.injectedWalletOverrides = fetchInjectedWalletConnectors.injectedWalletOverrides;
40
+ exports.EthereumInjectedConnector = InjectedWalletBase.InjectedWalletBase;
54
41
  exports.EthProviderHelper = ethProviderHelper.EthProviderHelper;
55
42
  exports.INFURA_ID = constants.INFURA_ID;
56
43
  exports.createInjectedConnector = createInjectedConnector.createInjectedConnector;
57
- exports.EthereumWalletConnectors = EthereumWalletConnectors;
44
+ exports.EthereumWalletConnectors = EthereumWalletConnectors.EthereumWalletConnectors;
45
+ exports.EthereumWalletConnectorsWithConfig = EthereumWalletConnectorsWithConfig.EthereumWalletConnectorsWithConfig;
package/src/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import './polyfills';
2
- import { WalletConnectorConstructor } from '@dynamic-labs/wallet-connector-core';
3
2
  import '@dynamic-labs/ethereum-core';
4
3
  export * from './injected';
5
4
  export * from './ethProviderHelper';
6
5
  export * from './constants';
7
6
  export * from './types';
8
7
  export { createInjectedConnector } from './utils/createInjectedConnector';
9
- export declare const EthereumWalletConnectors: (props: any) => WalletConnectorConstructor[];
8
+ export { EthereumWalletConnectors } from './EthereumWalletConnectors';
9
+ export { EthereumWalletConnectorsWithConfig } from './EthereumWalletConnectorsWithConfig';
10
10
  export { isEthereumWallet, EthereumWalletConnector, createConnector, } from '@dynamic-labs/ethereum-core';
package/src/index.js CHANGED
@@ -1,34 +1,17 @@
1
1
  'use client'
2
2
  import './polyfills.js';
3
- import { TurnkeyEVMWalletConnectors } from '@dynamic-labs/embedded-wallet-evm';
4
3
  import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
5
4
  import { version } from '../package.js';
5
+ export { EthereumWalletConnector, createConnector, isEthereumWallet } from '@dynamic-labs/ethereum-core';
6
6
  export { PhantomEvm } from './injected/PhantomEvm.js';
7
7
  export { ExodusEvm } from './injected/ExodusEvm.js';
8
- import { FallbackEvmConnector } from './injected/FallbackEvmConnector.js';
9
8
  export { FallbackEvmConnector } from './injected/FallbackEvmConnector.js';
10
- import { injectedWalletOverrides, fetchInjectedWalletConnector } from './injected/fetchInjectedWalletConnectors.js';
11
9
  export { fetchInjectedWalletConnector, injectedWalletOverrides } from './injected/fetchInjectedWalletConnectors.js';
12
10
  export { InjectedWalletBase as EthereumInjectedConnector } from './injected/InjectedWalletBase.js';
13
- import './walletConnect/walletConnect.js';
14
- import { fetchWalletConnectWallets, getWalletConnectConnector } from './walletConnect/fetchWalletConnectWallets.js';
15
- import { Coinbase } from './coinbase/coinbase.js';
16
- export { EthereumWalletConnector, createConnector, isEthereumWallet } from '@dynamic-labs/ethereum-core';
17
- import { MetaMaskConnector } from './metaMask/MetaMaskConnector.js';
18
11
  export { EthProviderHelper } from './ethProviderHelper.js';
19
12
  export { INFURA_ID } from './constants.js';
20
13
  export { createInjectedConnector } from './utils/createInjectedConnector/createInjectedConnector.js';
14
+ export { EthereumWalletConnectors } from './EthereumWalletConnectors.js';
15
+ export { EthereumWalletConnectorsWithConfig } from './EthereumWalletConnectorsWithConfig.js';
21
16
 
22
17
  assertPackageVersion('@dynamic-labs/ethereum', version);
23
- const EthereumWalletConnectors = (props) => [
24
- ...injectedWalletOverrides,
25
- ...fetchInjectedWalletConnector(props),
26
- ...fetchWalletConnectWallets(props),
27
- ...TurnkeyEVMWalletConnectors(props),
28
- MetaMaskConnector,
29
- Coinbase,
30
- FallbackEvmConnector,
31
- getWalletConnectConnector(),
32
- ];
33
-
34
- export { EthereumWalletConnectors };
@@ -48,6 +48,12 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
48
48
  this.createMetaMaskSDK();
49
49
  }
50
50
  }
51
+ isInstalledOnBrowser() {
52
+ var _a;
53
+ const metaMaskEip6963Provider = (_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.eip6963ProviderLookup(this.rdns);
54
+ const isInstalled = Boolean(metaMaskEip6963Provider);
55
+ return isInstalled;
56
+ }
51
57
  getSupportedNetworks() {
52
58
  return _tslib.__awaiter(this, void 0, void 0, function* () {
53
59
  return this.evmNetworks.map((network) => network.chainId.toString());
@@ -343,9 +349,12 @@ class MetaMaskConnector extends InjectedWalletBase.InjectedWalletBase {
343
349
  * on a mobile device
344
350
  */
345
351
  getIsInAppBrowser() {
352
+ var _a, _b;
346
353
  if (!utils.isMobile())
347
354
  return false;
348
- return this.isInstalledOnBrowser();
355
+ const provider = ((_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.eip6963ProviderLookup(this.rdns)) ||
356
+ ((_b = this.ethProviderHelper) === null || _b === void 0 ? void 0 : _b.getInjectedProvider());
357
+ return Boolean(provider);
349
358
  }
350
359
  shouldDeepLinkToMetaMaskInAppBrowser() {
351
360
  // Not in an in-app browser
@@ -17,6 +17,7 @@ export declare class MetaMaskConnector extends InjectedWalletBase implements IWa
17
17
  private appLogoUrl;
18
18
  private isInAppBrowser;
19
19
  constructor(props: MetaMaskConnectorProps);
20
+ isInstalledOnBrowser(): boolean;
20
21
  getSupportedNetworks(): Promise<string[]>;
21
22
  get metaMaskSDK(): MetaMaskSDK;
22
23
  set metaMaskSDK(metaMaskSDK: MetaMaskSDK);
@@ -44,6 +44,12 @@ class MetaMaskConnector extends InjectedWalletBase {
44
44
  this.createMetaMaskSDK();
45
45
  }
46
46
  }
47
+ isInstalledOnBrowser() {
48
+ var _a;
49
+ const metaMaskEip6963Provider = (_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.eip6963ProviderLookup(this.rdns);
50
+ const isInstalled = Boolean(metaMaskEip6963Provider);
51
+ return isInstalled;
52
+ }
47
53
  getSupportedNetworks() {
48
54
  return __awaiter(this, void 0, void 0, function* () {
49
55
  return this.evmNetworks.map((network) => network.chainId.toString());
@@ -339,9 +345,12 @@ class MetaMaskConnector extends InjectedWalletBase {
339
345
  * on a mobile device
340
346
  */
341
347
  getIsInAppBrowser() {
348
+ var _a, _b;
342
349
  if (!isMobile())
343
350
  return false;
344
- return this.isInstalledOnBrowser();
351
+ const provider = ((_a = this.ethProviderHelper) === null || _a === void 0 ? void 0 : _a.eip6963ProviderLookup(this.rdns)) ||
352
+ ((_b = this.ethProviderHelper) === null || _b === void 0 ? void 0 : _b.getInjectedProvider());
353
+ return Boolean(provider);
345
354
  }
346
355
  shouldDeepLinkToMetaMaskInAppBrowser() {
347
356
  // Not in an in-app browser