@dynamic-labs/solana 4.40.0 → 4.40.2

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 (41) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +12 -12
  5. package/src/CoinbaseSolana/CoinbaseSolana.cjs +4 -0
  6. package/src/CoinbaseSolana/CoinbaseSolana.js +4 -0
  7. package/src/Phantom/Phantom.cjs +4 -0
  8. package/src/Phantom/Phantom.js +4 -0
  9. package/src/SolanaWalletConnectors.cjs +16 -9
  10. package/src/SolanaWalletConnectors.js +16 -9
  11. package/src/Solflare/Solflare.cjs +8 -2
  12. package/src/Solflare/Solflare.d.ts +2 -0
  13. package/src/Solflare/Solflare.js +8 -2
  14. package/src/index.cjs +3 -2
  15. package/src/index.js +3 -2
  16. package/src/injected/BackpackSol/BackpackSol.cjs +8 -2
  17. package/src/injected/BackpackSol/BackpackSol.d.ts +2 -0
  18. package/src/injected/BackpackSol/BackpackSol.js +8 -2
  19. package/src/injected/FallbackSolanaConnector/FallbackSolanaConnector.cjs +4 -0
  20. package/src/injected/FallbackSolanaConnector/FallbackSolanaConnector.js +4 -0
  21. package/src/injected/InjectedWalletBase/InjectedWalletBase.cjs +34 -14
  22. package/src/injected/InjectedWalletBase/InjectedWalletBase.d.ts +8 -0
  23. package/src/injected/InjectedWalletBase/InjectedWalletBase.js +34 -14
  24. package/src/injected/fetchInjectedWalletConnectors.cjs +14 -21
  25. package/src/injected/fetchInjectedWalletConnectors.js +10 -17
  26. package/src/injected/walletStandard/getConnectorConstructorForWalletStandardWallet/getConnectorConstructorForWalletStandardWallet.cjs +7 -2
  27. package/src/injected/walletStandard/getConnectorConstructorForWalletStandardWallet/getConnectorConstructorForWalletStandardWallet.d.ts +1 -1
  28. package/src/injected/walletStandard/getConnectorConstructorForWalletStandardWallet/getConnectorConstructorForWalletStandardWallet.js +7 -2
  29. package/src/utils/getConnectorConstructorInjectedWallet/getConnectorConstructorInjectedWallet.cjs +46 -0
  30. package/src/utils/getConnectorConstructorInjectedWallet/getConnectorConstructorInjectedWallet.d.ts +9 -0
  31. package/src/utils/getConnectorConstructorInjectedWallet/getConnectorConstructorInjectedWallet.js +42 -0
  32. package/src/utils/getConnectorConstructorInjectedWallet/index.d.ts +1 -0
  33. package/src/walletConnect/SolanaWalletConnectConnector/SolanaWalletConnectConnector.cjs +46 -32
  34. package/src/walletConnect/SolanaWalletConnectConnector/SolanaWalletConnectConnector.d.ts +4 -3
  35. package/src/walletConnect/SolanaWalletConnectConnector/SolanaWalletConnectConnector.js +47 -33
  36. package/src/walletConnect/utils/addSolanaWalletConnectConnectors/addSolanaWalletConnectConnectors.cjs +64 -0
  37. package/src/walletConnect/utils/addSolanaWalletConnectConnectors/addSolanaWalletConnectConnectors.d.ts +12 -0
  38. package/src/walletConnect/utils/addSolanaWalletConnectConnectors/addSolanaWalletConnectConnectors.js +60 -0
  39. package/src/walletConnect/utils/addSolanaWalletConnectConnectors/index.d.ts +1 -0
  40. package/src/walletConnect/utils/getSolanaWalletConnectConnector/getSolanaWalletConnectConnector.cjs +11 -4
  41. package/src/walletConnect/utils/getSolanaWalletConnectConnector/getSolanaWalletConnectConnector.js +11 -4
package/CHANGELOG.md CHANGED
@@ -1,4 +1,17 @@
1
1
 
2
+ ### [4.40.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.40.1...v4.40.2) (2025-10-28)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * upgrade node to 20.20 in sanity-yarn-add-sdk job for compatibility ([#9743](https://github.com/dynamic-labs/dynamic-auth/issues/9743)) ([58d7e32](https://github.com/dynamic-labs/dynamic-auth/commit/58d7e32cd3965fba983c91c6345eae3bfe8dd1d5))
8
+
9
+ ### [4.40.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.40.0...v4.40.1) (2025-10-24)
10
+
11
+ ### Bug Fixes
12
+
13
+ * add support for Keplr in-app browser redirect for cosmos chain ([#9770](https://github.com/dynamic-labs/dynamic-auth/issues/9770)) ([35652f3](https://github.com/dynamic-labs/dynamic-auth/commit/35652f3167a4e768f5d4c634ab1b4f127fd5076a))
14
+
2
15
  ## [4.40.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.39.0...v4.40.0) (2025-10-22)
3
16
 
4
17
 
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.40.0";
6
+ var version = "4.40.2";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.40.0";
2
+ var version = "4.40.2";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/solana",
3
- "version": "4.40.0",
3
+ "version": "4.40.2",
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",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "homepage": "https://www.dynamic.xyz/",
20
20
  "dependencies": {
21
- "@dynamic-labs/wallet-connect": "4.40.0",
21
+ "@dynamic-labs/wallet-connect": "4.40.2",
22
22
  "@solana/web3.js": "1.98.1",
23
23
  "@wallet-standard/app": "1.0.1",
24
24
  "@wallet-standard/base": "1.0.1",
@@ -29,17 +29,17 @@
29
29
  "@walletconnect/sign-client": "2.21.5",
30
30
  "@walletconnect/utils": "2.21.5",
31
31
  "@walletconnect/types": "2.21.5",
32
- "@dynamic-labs/assert-package-version": "4.40.0",
33
- "@dynamic-labs/embedded-wallet-solana": "4.40.0",
34
- "@dynamic-labs/logger": "4.40.0",
35
- "@dynamic-labs/rpc-providers": "4.40.0",
32
+ "@dynamic-labs/assert-package-version": "4.40.2",
33
+ "@dynamic-labs/embedded-wallet-solana": "4.40.2",
34
+ "@dynamic-labs/logger": "4.40.2",
35
+ "@dynamic-labs/rpc-providers": "4.40.2",
36
36
  "@dynamic-labs/sdk-api-core": "0.0.813",
37
- "@dynamic-labs/solana-core": "4.40.0",
38
- "@dynamic-labs/types": "4.40.0",
39
- "@dynamic-labs/utils": "4.40.0",
40
- "@dynamic-labs/waas-svm": "4.40.0",
41
- "@dynamic-labs/wallet-book": "4.40.0",
42
- "@dynamic-labs/wallet-connector-core": "4.40.0",
37
+ "@dynamic-labs/solana-core": "4.40.2",
38
+ "@dynamic-labs/types": "4.40.2",
39
+ "@dynamic-labs/utils": "4.40.2",
40
+ "@dynamic-labs/waas-svm": "4.40.2",
41
+ "@dynamic-labs/wallet-book": "4.40.2",
42
+ "@dynamic-labs/wallet-connector-core": "4.40.2",
43
43
  "eventemitter3": "5.0.1"
44
44
  },
45
45
  "peerDependencies": {}
@@ -39,5 +39,9 @@ class CoinbaseSolana extends InjectedWalletBase.InjectedWalletBase {
39
39
  });
40
40
  }
41
41
  }
42
+ Object.defineProperty(CoinbaseSolana, 'key', {
43
+ value: 'coinbasesolana',
44
+ writable: false,
45
+ });
42
46
 
43
47
  exports.CoinbaseSolana = CoinbaseSolana;
@@ -35,5 +35,9 @@ class CoinbaseSolana extends InjectedWalletBase {
35
35
  });
36
36
  }
37
37
  }
38
+ Object.defineProperty(CoinbaseSolana, 'key', {
39
+ value: 'coinbasesolana',
40
+ writable: false,
41
+ });
38
42
 
39
43
  export { CoinbaseSolana };
@@ -38,5 +38,9 @@ class Phantom extends solanaCore.SolanaWalletConnector {
38
38
  }
39
39
  }
40
40
  }
41
+ Object.defineProperty(Phantom, 'key', {
42
+ value: 'phantom',
43
+ writable: false,
44
+ });
41
45
 
42
46
  exports.Phantom = Phantom;
@@ -34,5 +34,9 @@ class Phantom extends SolanaWalletConnector {
34
34
  }
35
35
  }
36
36
  }
37
+ Object.defineProperty(Phantom, 'key', {
38
+ value: 'phantom',
39
+ writable: false,
40
+ });
37
41
 
38
42
  export { Phantom };
@@ -14,17 +14,24 @@ require('@solana/web3.js');
14
14
  require('bs58');
15
15
  require('./utils/logger.cjs');
16
16
  var getSolanaWalletConnectConnector = require('./walletConnect/utils/getSolanaWalletConnectConnector/getSolanaWalletConnectConnector.cjs');
17
+ var addSolanaWalletConnectConnectors = require('./walletConnect/utils/addSolanaWalletConnectConnectors/addSolanaWalletConnectConnectors.cjs');
17
18
 
18
19
  const SolanaWalletConnectors = (
19
20
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
- props) => [
21
- ...fetchInjectedWalletConnectors.injectedWalletOverrides,
22
- ...fetchInjectedWalletConnectors.fetchInjectedWalletConnectors(props),
23
- ...embeddedWalletSolana.TurnkeySolanaWalletConnectors(props),
24
- ...waasSvm.DynamicWaasSVMConnectors(),
25
- Phantom.Phantom,
26
- FallbackSolanaConnector.FallbackSolanaConnector,
27
- getSolanaWalletConnectConnector.getSolanaWalletConnectConnector(),
28
- ];
21
+ props) => {
22
+ const initialConnectors = [
23
+ ...fetchInjectedWalletConnectors.injectedWalletOverrides,
24
+ ...fetchInjectedWalletConnectors.fetchInjectedWalletConnectors(props),
25
+ ...embeddedWalletSolana.TurnkeySolanaWalletConnectors(props),
26
+ ...waasSvm.DynamicWaasSVMConnectors(),
27
+ Phantom.Phantom,
28
+ FallbackSolanaConnector.FallbackSolanaConnector,
29
+ getSolanaWalletConnectConnector.getSolanaWalletConnectConnector(),
30
+ ];
31
+ return addSolanaWalletConnectConnectors.addSolanaWalletConnectConnectors({
32
+ connectors: initialConnectors,
33
+ walletBook: props.walletBook,
34
+ });
35
+ };
29
36
 
30
37
  exports.SolanaWalletConnectors = SolanaWalletConnectors;
@@ -10,17 +10,24 @@ import '@solana/web3.js';
10
10
  import 'bs58';
11
11
  import './utils/logger.js';
12
12
  import { getSolanaWalletConnectConnector } from './walletConnect/utils/getSolanaWalletConnectConnector/getSolanaWalletConnectConnector.js';
13
+ import { addSolanaWalletConnectConnectors } from './walletConnect/utils/addSolanaWalletConnectConnectors/addSolanaWalletConnectConnectors.js';
13
14
 
14
15
  const SolanaWalletConnectors = (
15
16
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
- props) => [
17
- ...injectedWalletOverrides,
18
- ...fetchInjectedWalletConnectors(props),
19
- ...TurnkeySolanaWalletConnectors(props),
20
- ...DynamicWaasSVMConnectors(),
21
- Phantom,
22
- FallbackSolanaConnector,
23
- getSolanaWalletConnectConnector(),
24
- ];
17
+ props) => {
18
+ const initialConnectors = [
19
+ ...injectedWalletOverrides,
20
+ ...fetchInjectedWalletConnectors(props),
21
+ ...TurnkeySolanaWalletConnectors(props),
22
+ ...DynamicWaasSVMConnectors(),
23
+ Phantom,
24
+ FallbackSolanaConnector,
25
+ getSolanaWalletConnectConnector(),
26
+ ];
27
+ return addSolanaWalletConnectConnectors({
28
+ connectors: initialConnectors,
29
+ walletBook: props.walletBook,
30
+ });
31
+ };
25
32
 
26
33
  export { SolanaWalletConnectors };
@@ -5,13 +5,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../_virtual/_tslib.cjs');
7
7
  var utils = require('@dynamic-labs/utils');
8
+ var walletBook = require('@dynamic-labs/wallet-book');
8
9
  var InjectedWalletBase = require('../injected/InjectedWalletBase/InjectedWalletBase.cjs');
9
10
 
10
11
  class Solflare extends InjectedWalletBase.InjectedWalletBase {
11
- constructor() {
12
- super(...arguments);
12
+ constructor(props) {
13
+ super(props);
13
14
  this.name = 'Solflare';
14
15
  this.overrideKey = 'solflare';
16
+ this.walletConnectWalletBookEntry = walletBook.findWalletBookWallet(props.walletBook, this.key);
15
17
  }
16
18
  getAddress() {
17
19
  return _tslib.__awaiter(this, void 0, void 0, function* () {
@@ -58,5 +60,9 @@ class Solflare extends InjectedWalletBase.InjectedWalletBase {
58
60
  });
59
61
  }
60
62
  }
63
+ Object.defineProperty(Solflare, 'key', {
64
+ value: 'solflare',
65
+ writable: false,
66
+ });
61
67
 
62
68
  exports.Solflare = Solflare;
@@ -1,7 +1,9 @@
1
+ import { SolanaWalletConnectorOpts } from '@dynamic-labs/solana-core';
1
2
  import { InjectedWalletBase } from '../injected/InjectedWalletBase';
2
3
  export declare class Solflare extends InjectedWalletBase {
3
4
  name: string;
4
5
  overrideKey: string;
6
+ constructor(props: SolanaWalletConnectorOpts);
5
7
  getAddress(): Promise<string | undefined>;
6
8
  signMessage(messageToSign: string): Promise<string | undefined>;
7
9
  }
@@ -1,13 +1,15 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../_virtual/_tslib.js';
3
3
  import { isMobile, handleMobileWalletRedirect, bufferToBase64 } from '@dynamic-labs/utils';
4
+ import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
4
5
  import { InjectedWalletBase } from '../injected/InjectedWalletBase/InjectedWalletBase.js';
5
6
 
6
7
  class Solflare extends InjectedWalletBase {
7
- constructor() {
8
- super(...arguments);
8
+ constructor(props) {
9
+ super(props);
9
10
  this.name = 'Solflare';
10
11
  this.overrideKey = 'solflare';
12
+ this.walletConnectWalletBookEntry = findWalletBookWallet(props.walletBook, this.key);
11
13
  }
12
14
  getAddress() {
13
15
  return __awaiter(this, void 0, void 0, function* () {
@@ -54,5 +56,9 @@ class Solflare extends InjectedWalletBase {
54
56
  });
55
57
  }
56
58
  }
59
+ Object.defineProperty(Solflare, 'key', {
60
+ value: 'solflare',
61
+ writable: false,
62
+ });
57
63
 
58
64
  export { Solflare };
package/src/index.cjs CHANGED
@@ -12,14 +12,15 @@ var SolanaWalletConnectors = require('./SolanaWalletConnectors.cjs');
12
12
  var SolanaWalletConnectorsWithConfig = require('./SolanaWalletConnectorsWithConfig/SolanaWalletConnectorsWithConfig.cjs');
13
13
  var isBackpackSolanaSigner = require('./utils/isBackpackSolanaSigner.cjs');
14
14
  var isSignedMessage = require('./utils/isSignedMessage.cjs');
15
- require('@dynamic-labs/wallet-book');
16
15
  require('@dynamic-labs/wallet-connector-core');
17
16
  require('@dynamic-labs/utils');
18
- require('../_virtual/_tslib.cjs');
17
+ require('./CoinbaseSolana/CoinbaseSolana.cjs');
18
+ require('./Solflare/Solflare.cjs');
19
19
  require('./utils/logger.cjs');
20
20
  var createSolanaSignerFromWalletStandard = require('./injected/walletStandard/createSolanaSignerFromWalletStandard/createSolanaSignerFromWalletStandard.cjs');
21
21
  var getWalletStandardWallets = require('./injected/walletStandard/getWalletStandardWallets/getWalletStandardWallets.cjs');
22
22
  var hasAllWalletStandardRequiredFeatures = require('./injected/walletStandard/hasAllWalletStandardRequiredFeatures/hasAllWalletStandardRequiredFeatures.cjs');
23
+ require('./injected/FallbackSolanaConnector/FallbackSolanaConnector.cjs');
23
24
 
24
25
  /* eslint-disable @typescript-eslint/no-unused-vars */
25
26
  assertPackageVersion.assertPackageVersion('@dynamic-labs/solana', _package.version);
package/src/index.js CHANGED
@@ -8,14 +8,15 @@ export { SolanaWalletConnectors } from './SolanaWalletConnectors.js';
8
8
  export { SolanaWalletConnectorsWithConfig } from './SolanaWalletConnectorsWithConfig/SolanaWalletConnectorsWithConfig.js';
9
9
  export { isBackpackSolanaSigner } from './utils/isBackpackSolanaSigner.js';
10
10
  export { isSignedMessage } from './utils/isSignedMessage.js';
11
- import '@dynamic-labs/wallet-book';
12
11
  import '@dynamic-labs/wallet-connector-core';
13
12
  import '@dynamic-labs/utils';
14
- import '../_virtual/_tslib.js';
13
+ import './CoinbaseSolana/CoinbaseSolana.js';
14
+ import './Solflare/Solflare.js';
15
15
  import './utils/logger.js';
16
16
  export { createSolanaSignerFromWalletStandard } from './injected/walletStandard/createSolanaSignerFromWalletStandard/createSolanaSignerFromWalletStandard.js';
17
17
  export { getWalletStandardWallets } from './injected/walletStandard/getWalletStandardWallets/getWalletStandardWallets.js';
18
18
  export { hasAllWalletStandardRequiredFeatures } from './injected/walletStandard/hasAllWalletStandardRequiredFeatures/hasAllWalletStandardRequiredFeatures.js';
19
+ import './injected/FallbackSolanaConnector/FallbackSolanaConnector.js';
19
20
 
20
21
  /* eslint-disable @typescript-eslint/no-unused-vars */
21
22
  assertPackageVersion('@dynamic-labs/solana', version);
@@ -5,13 +5,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../_virtual/_tslib.cjs');
7
7
  var utils = require('@dynamic-labs/utils');
8
+ var walletBook = require('@dynamic-labs/wallet-book');
8
9
  var InjectedWalletBase = require('../InjectedWalletBase/InjectedWalletBase.cjs');
9
10
 
10
11
  class BackpackSol extends InjectedWalletBase.InjectedWalletBase {
11
- constructor() {
12
- super(...arguments);
12
+ constructor(props) {
13
+ super(props);
13
14
  this.name = 'Backpack';
14
15
  this.overrideKey = 'backpacksol';
16
+ this.walletConnectWalletBookEntry = walletBook.findWalletBookWallet(props.walletBook, this.key);
15
17
  }
16
18
  getSigner() {
17
19
  return _tslib.__awaiter(this, void 0, void 0, function* () {
@@ -40,5 +42,9 @@ class BackpackSol extends InjectedWalletBase.InjectedWalletBase {
40
42
  });
41
43
  }
42
44
  }
45
+ Object.defineProperty(BackpackSol, 'key', {
46
+ value: 'backpacksol',
47
+ writable: false,
48
+ });
43
49
 
44
50
  exports.BackpackSol = BackpackSol;
@@ -1,7 +1,9 @@
1
+ import { SolanaWalletConnectorOpts } from '@dynamic-labs/solana-core';
1
2
  import { InjectedWalletBase } from '../InjectedWalletBase';
2
3
  export declare class BackpackSol extends InjectedWalletBase {
3
4
  name: string;
4
5
  overrideKey: string;
6
+ constructor(props: SolanaWalletConnectorOpts);
5
7
  getSigner<IBackpackSolanaSigner>(): Promise<IBackpackSolanaSigner | undefined>;
6
8
  signMessage(messageToSign: string): Promise<string | undefined>;
7
9
  }
@@ -1,13 +1,15 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../_virtual/_tslib.js';
3
3
  import { bufferToBase64 } from '@dynamic-labs/utils';
4
+ import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
4
5
  import { InjectedWalletBase } from '../InjectedWalletBase/InjectedWalletBase.js';
5
6
 
6
7
  class BackpackSol extends InjectedWalletBase {
7
- constructor() {
8
- super(...arguments);
8
+ constructor(props) {
9
+ super(props);
9
10
  this.name = 'Backpack';
10
11
  this.overrideKey = 'backpacksol';
12
+ this.walletConnectWalletBookEntry = findWalletBookWallet(props.walletBook, this.key);
11
13
  }
12
14
  getSigner() {
13
15
  return __awaiter(this, void 0, void 0, function* () {
@@ -36,5 +38,9 @@ class BackpackSol extends InjectedWalletBase {
36
38
  });
37
39
  }
38
40
  }
41
+ Object.defineProperty(BackpackSol, 'key', {
42
+ value: 'backpacksol',
43
+ writable: false,
44
+ });
39
45
 
40
46
  export { BackpackSol };
@@ -16,5 +16,9 @@ class FallbackSolanaConnector extends InjectedWalletBase.InjectedWalletBase {
16
16
  return false;
17
17
  }
18
18
  }
19
+ Object.defineProperty(FallbackSolanaConnector, 'key', {
20
+ value: 'fallbackconnector',
21
+ writable: false,
22
+ });
19
23
 
20
24
  exports.FallbackSolanaConnector = FallbackSolanaConnector;
@@ -12,5 +12,9 @@ class FallbackSolanaConnector extends InjectedWalletBase {
12
12
  return false;
13
13
  }
14
14
  }
15
+ Object.defineProperty(FallbackSolanaConnector, 'key', {
16
+ value: 'fallbackconnector',
17
+ writable: false,
18
+ });
15
19
 
16
20
  export { FallbackSolanaConnector };
@@ -6,11 +6,40 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  var _tslib = require('../../../_virtual/_tslib.cjs');
7
7
  var web3_js = require('@solana/web3.js');
8
8
  var solanaCore = require('@dynamic-labs/solana-core');
9
- var utils = require('@dynamic-labs/utils');
9
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
10
10
  var SolProviderHelper = require('../../SolProviderHelper/SolProviderHelper.cjs');
11
11
  var SignMessageNotSupportedError = require('../../errors/SignMessageNotSupportedError.cjs');
12
+ var logger = require('../../utils/logger.cjs');
13
+ var SolanaWalletConnectConnector = require('../../walletConnect/SolanaWalletConnectConnector/SolanaWalletConnectConnector.cjs');
12
14
 
13
15
  class InjectedWalletBase extends solanaCore.SolanaWalletConnector {
16
+ constructor() {
17
+ super(...arguments);
18
+ /**
19
+ * For historical reasons, all wallet connect data for wallets reside in the EVM entry for the wallet in wallet book.
20
+ * Therefore, for Solana wallets that support wallet connect, we must also hold the reference to the wallet book
21
+ * entry that has the wallet connect data for it.
22
+ */
23
+ this.walletConnectWalletBookEntry = undefined;
24
+ }
25
+ getMobileOrInstalledWallet() {
26
+ // can use WC if the wallet has WC setting in wallet book and projectId is set
27
+ const canUseWalletConnect = this.walletConnectWalletBookEntry && this.constructorProps.projectId;
28
+ logger.logger.logVerboseTroubleshootingMessage('[SOL InjectedWalletBase] getMobileOrInstalledWallet', {
29
+ canUseWalletConnect,
30
+ isInstalledOnBrowser: this.isInstalledOnBrowser(),
31
+ projectId: this.constructorProps.projectId,
32
+ walletConnectWalletBookEntry: this.walletConnectWalletBookEntry,
33
+ });
34
+ // if the wallet is installed on the browser or WC is not available, return the injected connector
35
+ if (this.isInstalledOnBrowser() || !canUseWalletConnect) {
36
+ return this;
37
+ }
38
+ // if the wallet is not installed on the browser and WC is available, return the WC connector
39
+ const wcConnector = new SolanaWalletConnectConnector.SolanaWalletConnectConnector(Object.assign(Object.assign({}, this.constructorProps), { metadata: walletConnectorCore.getWalletMetadataFromWalletBook(Object.assign(Object.assign({}, this.metadata), { walletBookWallet: this.walletConnectWalletBookEntry, walletKey: this.key })), overrideKey: this.key, walletName: this.name }));
40
+ wcConnector.init();
41
+ return wcConnector;
42
+ }
14
43
  get solProviderHelper() {
15
44
  if (!this._solProviderHelper) {
16
45
  this._solProviderHelper = new SolProviderHelper.SolProviderHelper(this);
@@ -79,21 +108,12 @@ class InjectedWalletBase extends solanaCore.SolanaWalletConnector {
79
108
  }
80
109
  getAddress() {
81
110
  return _tslib.__awaiter(this, void 0, void 0, function* () {
82
- var _a, _b;
83
- if (!this.isInstalledOnBrowser()) {
84
- if (utils.isMobile() &&
85
- ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.inAppBrowserUrl) &&
86
- this.mobileExperience === 'in-app-browser') {
87
- const inAppBrowserCompiledTemplate = utils.template(this.metadata.inAppBrowserUrl);
88
- const { href } = utils.PlatformService.getUrl();
89
- const deepLink = inAppBrowserCompiledTemplate({
90
- encodedDappURI: encodeURIComponent(href),
91
- });
92
- utils.PlatformService.openURL(deepLink);
93
- }
111
+ var _a;
112
+ const didOpenInAppBrowser = this.openInAppBrowserIfRequired();
113
+ if (didOpenInAppBrowser) {
94
114
  return;
95
115
  }
96
- return (_b = this.solProviderHelper) === null || _b === void 0 ? void 0 : _b.getAddress();
116
+ return (_a = this.solProviderHelper) === null || _a === void 0 ? void 0 : _a.getAddress();
97
117
  });
98
118
  }
99
119
  signMessage(messageToSign) {
@@ -1,9 +1,17 @@
1
1
  import { SolanaWalletConnector, type ISolana } from '@dynamic-labs/solana-core';
2
2
  import { IUITransaction } from '@dynamic-labs/types';
3
3
  import { ISendBalanceWalletConnector } from '@dynamic-labs/wallet-connector-core';
4
+ import { WalletSchema } from '@dynamic-labs/wallet-book';
4
5
  import { SolProviderHelper } from '../../SolProviderHelper';
5
6
  export declare abstract class InjectedWalletBase extends SolanaWalletConnector implements ISendBalanceWalletConnector {
6
7
  _solProviderHelper: SolProviderHelper | undefined;
8
+ /**
9
+ * For historical reasons, all wallet connect data for wallets reside in the EVM entry for the wallet in wallet book.
10
+ * Therefore, for Solana wallets that support wallet connect, we must also hold the reference to the wallet book
11
+ * entry that has the wallet connect data for it.
12
+ */
13
+ walletConnectWalletBookEntry: WalletSchema | undefined;
14
+ getMobileOrInstalledWallet(): InjectedWalletBase;
7
15
  get solProviderHelper(): SolProviderHelper | undefined;
8
16
  findProvider(): ISolana | undefined;
9
17
  setupEventListeners(): void;
@@ -2,11 +2,40 @@
2
2
  import { __awaiter } from '../../../_virtual/_tslib.js';
3
3
  import { PublicKey } from '@solana/web3.js';
4
4
  import { SolanaWalletConnector, SolanaUiTransaction } from '@dynamic-labs/solana-core';
5
- import { isMobile, template, PlatformService } from '@dynamic-labs/utils';
5
+ import { getWalletMetadataFromWalletBook } from '@dynamic-labs/wallet-connector-core';
6
6
  import { SolProviderHelper } from '../../SolProviderHelper/SolProviderHelper.js';
7
7
  import { SignMessageNotSupportedError } from '../../errors/SignMessageNotSupportedError.js';
8
+ import { logger } from '../../utils/logger.js';
9
+ import { SolanaWalletConnectConnector } from '../../walletConnect/SolanaWalletConnectConnector/SolanaWalletConnectConnector.js';
8
10
 
9
11
  class InjectedWalletBase extends SolanaWalletConnector {
12
+ constructor() {
13
+ super(...arguments);
14
+ /**
15
+ * For historical reasons, all wallet connect data for wallets reside in the EVM entry for the wallet in wallet book.
16
+ * Therefore, for Solana wallets that support wallet connect, we must also hold the reference to the wallet book
17
+ * entry that has the wallet connect data for it.
18
+ */
19
+ this.walletConnectWalletBookEntry = undefined;
20
+ }
21
+ getMobileOrInstalledWallet() {
22
+ // can use WC if the wallet has WC setting in wallet book and projectId is set
23
+ const canUseWalletConnect = this.walletConnectWalletBookEntry && this.constructorProps.projectId;
24
+ logger.logVerboseTroubleshootingMessage('[SOL InjectedWalletBase] getMobileOrInstalledWallet', {
25
+ canUseWalletConnect,
26
+ isInstalledOnBrowser: this.isInstalledOnBrowser(),
27
+ projectId: this.constructorProps.projectId,
28
+ walletConnectWalletBookEntry: this.walletConnectWalletBookEntry,
29
+ });
30
+ // if the wallet is installed on the browser or WC is not available, return the injected connector
31
+ if (this.isInstalledOnBrowser() || !canUseWalletConnect) {
32
+ return this;
33
+ }
34
+ // if the wallet is not installed on the browser and WC is available, return the WC connector
35
+ const wcConnector = new SolanaWalletConnectConnector(Object.assign(Object.assign({}, this.constructorProps), { metadata: getWalletMetadataFromWalletBook(Object.assign(Object.assign({}, this.metadata), { walletBookWallet: this.walletConnectWalletBookEntry, walletKey: this.key })), overrideKey: this.key, walletName: this.name }));
36
+ wcConnector.init();
37
+ return wcConnector;
38
+ }
10
39
  get solProviderHelper() {
11
40
  if (!this._solProviderHelper) {
12
41
  this._solProviderHelper = new SolProviderHelper(this);
@@ -75,21 +104,12 @@ class InjectedWalletBase extends SolanaWalletConnector {
75
104
  }
76
105
  getAddress() {
77
106
  return __awaiter(this, void 0, void 0, function* () {
78
- var _a, _b;
79
- if (!this.isInstalledOnBrowser()) {
80
- if (isMobile() &&
81
- ((_a = this.metadata) === null || _a === void 0 ? void 0 : _a.inAppBrowserUrl) &&
82
- this.mobileExperience === 'in-app-browser') {
83
- const inAppBrowserCompiledTemplate = template(this.metadata.inAppBrowserUrl);
84
- const { href } = PlatformService.getUrl();
85
- const deepLink = inAppBrowserCompiledTemplate({
86
- encodedDappURI: encodeURIComponent(href),
87
- });
88
- PlatformService.openURL(deepLink);
89
- }
107
+ var _a;
108
+ const didOpenInAppBrowser = this.openInAppBrowserIfRequired();
109
+ if (didOpenInAppBrowser) {
90
110
  return;
91
111
  }
92
- return (_b = this.solProviderHelper) === null || _b === void 0 ? void 0 : _b.getAddress();
112
+ return (_a = this.solProviderHelper) === null || _a === void 0 ? void 0 : _a.getAddress();
93
113
  });
94
114
  }
95
115
  signMessage(messageToSign) {
@@ -3,13 +3,12 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var walletBook = require('@dynamic-labs/wallet-book');
7
6
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
7
  var utils = require('@dynamic-labs/utils');
9
8
  var CoinbaseSolana = require('../CoinbaseSolana/CoinbaseSolana.cjs');
10
9
  var Solflare = require('../Solflare/Solflare.cjs');
11
10
  var logger = require('../utils/logger.cjs');
12
- var InjectedWalletBase = require('./InjectedWalletBase/InjectedWalletBase.cjs');
11
+ var getConnectorConstructorInjectedWallet = require('../utils/getConnectorConstructorInjectedWallet/getConnectorConstructorInjectedWallet.cjs');
13
12
  var BackpackSol = require('./BackpackSol/BackpackSol.cjs');
14
13
  var getConnectorConstructorForWalletStandardWallet = require('./walletStandard/getConnectorConstructorForWalletStandardWallet/getConnectorConstructorForWalletStandardWallet.cjs');
15
14
  var getWalletStandardWallets = require('./walletStandard/getWalletStandardWallets/getWalletStandardWallets.cjs');
@@ -53,9 +52,9 @@ const shouldAddWalletStandardConnector = (wallet, walletBook, authMode) => {
53
52
  });
54
53
  return !shouldHandleFromWalletBook && hasAllFeatures;
55
54
  };
56
- const fetchInjectedWalletConnectors = ({ walletBook: walletBook$1, authMode, }) => {
55
+ const fetchInjectedWalletConnectors = ({ walletBook, authMode, }) => {
57
56
  var _a;
58
- const walletBookConnectors = Object.entries((_a = walletBook$1 === null || walletBook$1 === void 0 ? void 0 : walletBook$1.wallets) !== null && _a !== void 0 ? _a : {})
57
+ const walletBookConnectors = Object.entries((_a = walletBook === null || walletBook === void 0 ? void 0 : walletBook.wallets) !== null && _a !== void 0 ? _a : {})
59
58
  .filter(([key, wallet]) => {
60
59
  var _a, _b, _c;
61
60
  const injectedConfig = (_a = wallet.injectedConfig) === null || _a === void 0 ? void 0 : _a.find((config) => config.chain === 'sol');
@@ -66,32 +65,26 @@ const fetchInjectedWalletConnectors = ({ walletBook: walletBook$1, authMode, })
66
65
  ((_c = (_b = injectedConfig === null || injectedConfig === void 0 ? void 0 : injectedConfig.walletStandard) === null || _b === void 0 ? void 0 : _b.features) === null || _c === void 0 ? void 0 : _c.length);
67
66
  return isSolanaWallet && !shouldBeFiltered;
68
67
  })
69
- .map(([key, wallet]) => {
70
- const { shortName } = wallet;
71
- const name = shortName || wallet.name;
72
- return class extends InjectedWalletBase.InjectedWalletBase {
73
- constructor() {
74
- super(...arguments);
75
- this.name = name;
76
- // this is the key from the wallet book entry so that we don't purely rely on the normalized name
77
- this.overrideKey = key;
78
- }
79
- };
80
- });
68
+ .map(([key, wallet]) => getConnectorConstructorInjectedWallet.getConnectorConstructorInjectedWallet({ key, wallet, walletBook }));
81
69
  const walletStandardWallets = getWalletStandardWallets.getWalletStandardWallets();
82
70
  const walletStandardConnectors = walletStandardWallets
83
- .filter((wallet) => shouldAddWalletStandardConnector(wallet, walletBook$1, authMode))
71
+ .filter((wallet) => shouldAddWalletStandardConnector(wallet, walletBook, authMode))
84
72
  .map((wallet) => {
85
- const walletBookWallet = walletBook.findWalletBookWalletByNameAndChain(walletBook$1, wallet.name, 'sol');
73
+ var _a, _b;
74
+ const [walletBookKey, walletBookWallet] = (_b = Object.entries((_a = walletBook === null || walletBook === void 0 ? void 0 : walletBook.wallets) !== null && _a !== void 0 ? _a : {}).find(([, walletBookEntry]) => {
75
+ var _a, _b;
76
+ return walletBookEntry.name === wallet.name &&
77
+ ((_b = (_a = walletBookEntry.injectedConfig) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.chain) === 'sol';
78
+ })) !== null && _b !== void 0 ? _b : [];
86
79
  // if the wallet book wallet is found, we want to use it to get the metadata
87
80
  // to merge with the wallet standard metadata, specially the supportedHardwareWallets prop
88
81
  const walletBookMetadata = walletBookWallet &&
89
82
  walletConnectorCore.getWalletMetadataFromWalletBook({
90
- walletBook: walletBook$1,
83
+ walletBook,
91
84
  walletBookWallet,
92
- walletKey: `sanitizeName(${wallet.name})sol`,
85
+ walletKey: walletBookKey !== null && walletBookKey !== void 0 ? walletBookKey : `${utils.sanitizeName(wallet.name)}sol`,
93
86
  });
94
- return getConnectorConstructorForWalletStandardWallet.getConnectorConstructorForWalletStandardWallet(wallet, walletBookMetadata);
87
+ return getConnectorConstructorForWalletStandardWallet.getConnectorConstructorForWalletStandardWallet(wallet, walletBookMetadata, walletBookKey);
95
88
  });
96
89
  logger.logger.logVerboseTroubleshootingMessage('[SOL fetchInjectedWalletConnectors] walletStandardConnectors', walletStandardConnectors.map((w) => w.name));
97
90
  return [...walletBookConnectors, ...walletStandardConnectors];