@dynamic-labs/solana 4.7.2 → 4.8.1
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 +21 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +10 -10
- package/src/index.cjs +0 -2
- package/src/index.d.ts +0 -1
- package/src/index.js +0 -1
- package/src/injected/InjectedWalletBase/InjectedWalletBase.cjs +2 -2
- package/src/injected/InjectedWalletBase/InjectedWalletBase.js +2 -2
- package/src/injected/walletStandard/createSolanaSignerFromWalletStandard/createSolanaSignerFromWalletStandard.cjs +17 -13
- package/src/injected/walletStandard/createSolanaSignerFromWalletStandard/createSolanaSignerFromWalletStandard.d.ts +1 -4
- package/src/injected/walletStandard/createSolanaSignerFromWalletStandard/createSolanaSignerFromWalletStandard.js +17 -13
- package/src/injected/walletStandard/getConnectorConstructorForWalletStandardWallet/getConnectorConstructorForWalletStandardWallet.cjs +0 -1
- package/src/injected/walletStandard/getConnectorConstructorForWalletStandardWallet/getConnectorConstructorForWalletStandardWallet.js +0 -1
- package/src/phantomRedirect/PhantomRedirect/PhantomRedirect.cjs +11 -11
- package/src/phantomRedirect/PhantomRedirect/PhantomRedirect.js +12 -12
- package/src/utils/fetchCluster/fetchCluster.cjs +0 -33
- package/src/utils/fetchCluster/fetchCluster.d.ts +0 -1
- package/src/utils/fetchCluster/fetchCluster.js +0 -29
- package/src/utils/fetchCluster/index.d.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
|
|
2
|
+
### [4.8.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.8.0...v4.8.1) (2025-02-25)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* wc redirect for safari inside iframe ([#8131](https://github.com/dynamic-labs/dynamic-auth/issues/8131)) ([8c74bea](https://github.com/dynamic-labs/dynamic-auth/commit/8c74beae505014eb85be4fd211909709d0a339dd))
|
|
8
|
+
|
|
9
|
+
## [4.8.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.7.2...v4.8.0) (2025-02-25)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* add support for network switching for SOL wallets ([#8095](https://github.com/dynamic-labs/dynamic-auth/issues/8095)) ([8997b39](https://github.com/dynamic-labs/dynamic-auth/commit/8997b399e1e5cd294aad8b719d39928eed5e911d))
|
|
15
|
+
* add support for solNetworks override ([#8138](https://github.com/dynamic-labs/dynamic-auth/issues/8138)) ([8c3f374](https://github.com/dynamic-labs/dynamic-auth/commit/8c3f374a9b2b451f984aed98e7ce506552e2a6c5))
|
|
16
|
+
* **react-native:** add account abstraction multi-chain ([#8132](https://github.com/dynamic-labs/dynamic-auth/issues/8132)) ([c64a26e](https://github.com/dynamic-labs/dynamic-auth/commit/c64a26e16943d913edf4683084f59592a9aeedfc))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* ensure zero dev network cache use project id ([#8133](https://github.com/dynamic-labs/dynamic-auth/issues/8133)) ([408c4ed](https://github.com/dynamic-labs/dynamic-auth/commit/408c4ed764a623b6d870cd24973320e5ca4a74c7))
|
|
22
|
+
|
|
2
23
|
### [4.7.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.7.1...v4.7.2) (2025-02-22)
|
|
3
24
|
|
|
4
25
|
### Features
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/solana",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.8.1",
|
|
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",
|
|
@@ -25,16 +25,16 @@
|
|
|
25
25
|
"@wallet-standard/experimental-features": "0.1.1",
|
|
26
26
|
"bs58": "5.0.0",
|
|
27
27
|
"tweetnacl": "1.0.3",
|
|
28
|
-
"@dynamic-labs/assert-package-version": "4.
|
|
29
|
-
"@dynamic-labs/embedded-wallet-solana": "4.
|
|
30
|
-
"@dynamic-labs/logger": "4.
|
|
31
|
-
"@dynamic-labs/rpc-providers": "4.
|
|
28
|
+
"@dynamic-labs/assert-package-version": "4.8.1",
|
|
29
|
+
"@dynamic-labs/embedded-wallet-solana": "4.8.1",
|
|
30
|
+
"@dynamic-labs/logger": "4.8.1",
|
|
31
|
+
"@dynamic-labs/rpc-providers": "4.8.1",
|
|
32
32
|
"@dynamic-labs/sdk-api-core": "0.0.628",
|
|
33
|
-
"@dynamic-labs/solana-core": "4.
|
|
34
|
-
"@dynamic-labs/types": "4.
|
|
35
|
-
"@dynamic-labs/utils": "4.
|
|
36
|
-
"@dynamic-labs/wallet-book": "4.
|
|
37
|
-
"@dynamic-labs/wallet-connector-core": "4.
|
|
33
|
+
"@dynamic-labs/solana-core": "4.8.1",
|
|
34
|
+
"@dynamic-labs/types": "4.8.1",
|
|
35
|
+
"@dynamic-labs/utils": "4.8.1",
|
|
36
|
+
"@dynamic-labs/wallet-book": "4.8.1",
|
|
37
|
+
"@dynamic-labs/wallet-connector-core": "4.8.1"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {}
|
|
40
40
|
}
|
package/src/index.cjs
CHANGED
|
@@ -20,7 +20,6 @@ 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
|
-
var fetchCluster = require('./utils/fetchCluster/fetchCluster.cjs');
|
|
24
23
|
|
|
25
24
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
26
25
|
assertPackageVersion.assertPackageVersion('@dynamic-labs/solana', _package.version);
|
|
@@ -42,4 +41,3 @@ exports.isSignedMessage = isSignedMessage.isSignedMessage;
|
|
|
42
41
|
exports.createSolanaSignerFromWalletStandard = createSolanaSignerFromWalletStandard.createSolanaSignerFromWalletStandard;
|
|
43
42
|
exports.getWalletStandardWallets = getWalletStandardWallets.getWalletStandardWallets;
|
|
44
43
|
exports.hasAllWalletStandardRequiredFeatures = hasAllWalletStandardRequiredFeatures.hasAllWalletStandardRequiredFeatures;
|
|
45
|
-
exports.fetchCluster = fetchCluster.fetchCluster;
|
package/src/index.d.ts
CHANGED
|
@@ -7,4 +7,3 @@ export { SolanaWalletConnectorsWithConfig } from './SolanaWalletConnectorsWithCo
|
|
|
7
7
|
export { isBackpackSolanaSigner } from './utils/isBackpackSolanaSigner';
|
|
8
8
|
export { isSignedMessage } from './utils/isSignedMessage';
|
|
9
9
|
export { getWalletStandardWallets, createSolanaSignerFromWalletStandard, hasAllWalletStandardRequiredFeatures, } from './injected';
|
|
10
|
-
export { fetchCluster } from './utils/fetchCluster';
|
package/src/index.js
CHANGED
|
@@ -16,7 +16,6 @@ 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
|
-
export { fetchCluster } from './utils/fetchCluster/fetchCluster.js';
|
|
20
19
|
|
|
21
20
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
22
21
|
assertPackageVersion('@dynamic-labs/solana', version);
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
|
|
6
6
|
var _tslib = require('../../../_virtual/_tslib.cjs');
|
|
7
7
|
var web3_js = require('@solana/web3.js');
|
|
8
|
-
var utils = require('@dynamic-labs/utils');
|
|
9
8
|
var solanaCore = require('@dynamic-labs/solana-core');
|
|
9
|
+
var utils = require('@dynamic-labs/utils');
|
|
10
10
|
var SolProviderHelper = require('../../SolProviderHelper/SolProviderHelper.cjs');
|
|
11
11
|
var SignMessageNotSupportedError = require('../../errors/SignMessageNotSupportedError.cjs');
|
|
12
12
|
|
|
@@ -88,7 +88,7 @@ class InjectedWalletBase extends solanaCore.SolanaWalletConnector {
|
|
|
88
88
|
const deepLink = inAppBrowserCompiledTemplate({
|
|
89
89
|
encodedDappURI: encodeURIComponent(window.location.toString()),
|
|
90
90
|
});
|
|
91
|
-
|
|
91
|
+
utils.PlatformService.openURL(deepLink);
|
|
92
92
|
}
|
|
93
93
|
return;
|
|
94
94
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../../_virtual/_tslib.js';
|
|
3
3
|
import { PublicKey } from '@solana/web3.js';
|
|
4
|
-
import { isMobile, template } from '@dynamic-labs/utils';
|
|
5
4
|
import { SolanaWalletConnector, SolanaUiTransaction } from '@dynamic-labs/solana-core';
|
|
5
|
+
import { isMobile, template, PlatformService } from '@dynamic-labs/utils';
|
|
6
6
|
import { SolProviderHelper } from '../../SolProviderHelper/SolProviderHelper.js';
|
|
7
7
|
import { SignMessageNotSupportedError } from '../../errors/SignMessageNotSupportedError.js';
|
|
8
8
|
|
|
@@ -84,7 +84,7 @@ class InjectedWalletBase extends SolanaWalletConnector {
|
|
|
84
84
|
const deepLink = inAppBrowserCompiledTemplate({
|
|
85
85
|
encodedDappURI: encodeURIComponent(window.location.toString()),
|
|
86
86
|
});
|
|
87
|
-
|
|
87
|
+
PlatformService.openURL(deepLink);
|
|
88
88
|
}
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
@@ -6,10 +6,9 @@ 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 logger = require('../../../utils/logger.cjs');
|
|
9
|
-
var fetchCluster = require('../../../utils/fetchCluster/fetchCluster.cjs');
|
|
10
9
|
|
|
11
10
|
const isVersionedTransaction = (transaction) => !('instructions' in transaction);
|
|
12
|
-
const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector,
|
|
11
|
+
const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, }) => {
|
|
13
12
|
const features = wallet.features;
|
|
14
13
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
15
14
|
const connect = (args) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -45,17 +44,21 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
|
|
|
45
44
|
}
|
|
46
45
|
return account;
|
|
47
46
|
});
|
|
48
|
-
const getChain = () =>
|
|
49
|
-
var
|
|
50
|
-
const
|
|
51
|
-
|
|
47
|
+
const getChain = () => {
|
|
48
|
+
var _a;
|
|
49
|
+
const currentNetwork = walletConnector.getSelectedNetwork();
|
|
50
|
+
if (!currentNetwork) {
|
|
51
|
+
throw new Error('Network not found');
|
|
52
|
+
}
|
|
53
|
+
//for SVM netwroks, the cluster name is stored in shortName for now
|
|
54
|
+
const cluster = (_a = currentNetwork.cluster) !== null && _a !== void 0 ? _a : 'mainnet-beta';
|
|
52
55
|
return `solana:${cluster}`;
|
|
53
|
-
}
|
|
56
|
+
};
|
|
54
57
|
const signTransaction = (transaction) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
55
58
|
const account = yield getCurrentAccount();
|
|
56
59
|
const signTransactionResult = yield features['solana:signTransaction'].signTransaction({
|
|
57
60
|
account,
|
|
58
|
-
chain:
|
|
61
|
+
chain: getChain(),
|
|
59
62
|
transaction: transaction.serialize({
|
|
60
63
|
requireAllSignatures: false,
|
|
61
64
|
}),
|
|
@@ -67,8 +70,8 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
|
|
|
67
70
|
});
|
|
68
71
|
const signAllTransactions = (transactions) => _tslib.__awaiter(void 0, void 0, void 0, function* () { return Promise.all(transactions.map(signTransaction)); });
|
|
69
72
|
const signAndSendTransaction = (transaction) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
-
var
|
|
71
|
-
const signAndSendTransactionMethod = (
|
|
73
|
+
var _c;
|
|
74
|
+
const signAndSendTransactionMethod = (_c = features['solana:signAndSendTransaction']) === null || _c === void 0 ? void 0 : _c.signAndSendTransaction;
|
|
72
75
|
if (!signAndSendTransactionMethod) {
|
|
73
76
|
logger.logger.error('signAndSendTransaction - Not implemented');
|
|
74
77
|
throw new Error('signAndSendTransaction - Not implemented by wallet');
|
|
@@ -76,15 +79,15 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
|
|
|
76
79
|
const account = yield getCurrentAccount();
|
|
77
80
|
const signedTransactions = yield signAndSendTransactionMethod({
|
|
78
81
|
account,
|
|
79
|
-
chain:
|
|
82
|
+
chain: getChain(),
|
|
80
83
|
transaction: transaction.serialize(),
|
|
81
84
|
});
|
|
82
85
|
const [{ signature }] = signedTransactions;
|
|
83
86
|
return { signature: new TextDecoder().decode(signature) };
|
|
84
87
|
});
|
|
85
88
|
const signMessage = (message) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
86
|
-
var
|
|
87
|
-
const signMessageMethod = (
|
|
89
|
+
var _d;
|
|
90
|
+
const signMessageMethod = (_d = features['solana:signMessage']) === null || _d === void 0 ? void 0 : _d.signMessage;
|
|
88
91
|
if (!signMessageMethod) {
|
|
89
92
|
logger.logger.error('signMessage - Not implemented');
|
|
90
93
|
throw new Error('signMessage - Not implemented by wallet');
|
|
@@ -103,6 +106,7 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
|
|
|
103
106
|
logger.logger.error('on - Not implemented');
|
|
104
107
|
return;
|
|
105
108
|
}
|
|
109
|
+
logger.logger.debug(`[SolanaWalletStandardConnector] - on: ${event}`);
|
|
106
110
|
if (event !== 'accountChanged') {
|
|
107
111
|
logger.logger.debug(`on - Not implemented for event: ${event}`);
|
|
108
112
|
return;
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { Wallet } from '@wallet-standard/base';
|
|
2
2
|
import { ISolana } from '@dynamic-labs/solana-core';
|
|
3
|
-
import { GenericNetwork } from '@dynamic-labs/types';
|
|
4
3
|
import { InjectedWalletBase } from '../../InjectedWalletBase';
|
|
5
4
|
type CreateSolanaSignerFromWalletStandardProps = {
|
|
6
5
|
wallet: Wallet;
|
|
7
6
|
walletConnector: InjectedWalletBase;
|
|
8
|
-
network: GenericNetwork;
|
|
9
|
-
genesisHashesMap?: Record<string, string>;
|
|
10
7
|
};
|
|
11
|
-
export declare const createSolanaSignerFromWalletStandard: ({ wallet, walletConnector,
|
|
8
|
+
export declare const createSolanaSignerFromWalletStandard: ({ wallet, walletConnector, }: CreateSolanaSignerFromWalletStandardProps) => ISolana;
|
|
12
9
|
export {};
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
import { __awaiter } from '../../../../_virtual/_tslib.js';
|
|
3
3
|
import { PublicKey, VersionedTransaction, Transaction } from '@solana/web3.js';
|
|
4
4
|
import { logger } from '../../../utils/logger.js';
|
|
5
|
-
import { fetchCluster } from '../../../utils/fetchCluster/fetchCluster.js';
|
|
6
5
|
|
|
7
6
|
const isVersionedTransaction = (transaction) => !('instructions' in transaction);
|
|
8
|
-
const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector,
|
|
7
|
+
const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, }) => {
|
|
9
8
|
const features = wallet.features;
|
|
10
9
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
10
|
const connect = (args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -41,17 +40,21 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
|
|
|
41
40
|
}
|
|
42
41
|
return account;
|
|
43
42
|
});
|
|
44
|
-
const getChain = () =>
|
|
45
|
-
var
|
|
46
|
-
const
|
|
47
|
-
|
|
43
|
+
const getChain = () => {
|
|
44
|
+
var _a;
|
|
45
|
+
const currentNetwork = walletConnector.getSelectedNetwork();
|
|
46
|
+
if (!currentNetwork) {
|
|
47
|
+
throw new Error('Network not found');
|
|
48
|
+
}
|
|
49
|
+
//for SVM netwroks, the cluster name is stored in shortName for now
|
|
50
|
+
const cluster = (_a = currentNetwork.cluster) !== null && _a !== void 0 ? _a : 'mainnet-beta';
|
|
48
51
|
return `solana:${cluster}`;
|
|
49
|
-
}
|
|
52
|
+
};
|
|
50
53
|
const signTransaction = (transaction) => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
54
|
const account = yield getCurrentAccount();
|
|
52
55
|
const signTransactionResult = yield features['solana:signTransaction'].signTransaction({
|
|
53
56
|
account,
|
|
54
|
-
chain:
|
|
57
|
+
chain: getChain(),
|
|
55
58
|
transaction: transaction.serialize({
|
|
56
59
|
requireAllSignatures: false,
|
|
57
60
|
}),
|
|
@@ -63,8 +66,8 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
|
|
|
63
66
|
});
|
|
64
67
|
const signAllTransactions = (transactions) => __awaiter(void 0, void 0, void 0, function* () { return Promise.all(transactions.map(signTransaction)); });
|
|
65
68
|
const signAndSendTransaction = (transaction) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
|
-
var
|
|
67
|
-
const signAndSendTransactionMethod = (
|
|
69
|
+
var _c;
|
|
70
|
+
const signAndSendTransactionMethod = (_c = features['solana:signAndSendTransaction']) === null || _c === void 0 ? void 0 : _c.signAndSendTransaction;
|
|
68
71
|
if (!signAndSendTransactionMethod) {
|
|
69
72
|
logger.error('signAndSendTransaction - Not implemented');
|
|
70
73
|
throw new Error('signAndSendTransaction - Not implemented by wallet');
|
|
@@ -72,15 +75,15 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
|
|
|
72
75
|
const account = yield getCurrentAccount();
|
|
73
76
|
const signedTransactions = yield signAndSendTransactionMethod({
|
|
74
77
|
account,
|
|
75
|
-
chain:
|
|
78
|
+
chain: getChain(),
|
|
76
79
|
transaction: transaction.serialize(),
|
|
77
80
|
});
|
|
78
81
|
const [{ signature }] = signedTransactions;
|
|
79
82
|
return { signature: new TextDecoder().decode(signature) };
|
|
80
83
|
});
|
|
81
84
|
const signMessage = (message) => __awaiter(void 0, void 0, void 0, function* () {
|
|
82
|
-
var
|
|
83
|
-
const signMessageMethod = (
|
|
85
|
+
var _d;
|
|
86
|
+
const signMessageMethod = (_d = features['solana:signMessage']) === null || _d === void 0 ? void 0 : _d.signMessage;
|
|
84
87
|
if (!signMessageMethod) {
|
|
85
88
|
logger.error('signMessage - Not implemented');
|
|
86
89
|
throw new Error('signMessage - Not implemented by wallet');
|
|
@@ -99,6 +102,7 @@ const createSolanaSignerFromWalletStandard = ({ wallet, walletConnector, network
|
|
|
99
102
|
logger.error('on - Not implemented');
|
|
100
103
|
return;
|
|
101
104
|
}
|
|
105
|
+
logger.debug(`[SolanaWalletStandardConnector] - on: ${event}`);
|
|
102
106
|
if (event !== 'accountChanged') {
|
|
103
107
|
logger.debug(`on - Not implemented for event: ${event}`);
|
|
104
108
|
return;
|
|
@@ -15,7 +15,6 @@ const getConnectorConstructorForWalletStandardWallet = (wallet, walletBookMetada
|
|
|
15
15
|
this.name = wallet.name;
|
|
16
16
|
this.overrideKey = `${sanitizedName}sol`;
|
|
17
17
|
this._provider = createSolanaSignerFromWalletStandard.createSolanaSignerFromWalletStandard({
|
|
18
|
-
network: this.solNetworks[0],
|
|
19
18
|
wallet,
|
|
20
19
|
walletConnector: this,
|
|
21
20
|
});
|
|
@@ -11,7 +11,6 @@ const getConnectorConstructorForWalletStandardWallet = (wallet, walletBookMetada
|
|
|
11
11
|
this.name = wallet.name;
|
|
12
12
|
this.overrideKey = `${sanitizedName}sol`;
|
|
13
13
|
this._provider = createSolanaSignerFromWalletStandard({
|
|
14
|
-
network: this.solNetworks[0],
|
|
15
14
|
wallet,
|
|
16
15
|
walletConnector: this,
|
|
17
16
|
});
|
|
@@ -13,7 +13,6 @@ var buildUrl = require('../buildUrl/buildUrl.cjs');
|
|
|
13
13
|
var decryptPayload = require('../decryptPayload/decryptPayload.cjs');
|
|
14
14
|
var encryptPayload = require('../encryptPayload/encryptPayload.cjs');
|
|
15
15
|
var storage = require('../storage/storage.cjs');
|
|
16
|
-
var fetchCluster = require('../../utils/fetchCluster/fetchCluster.cjs');
|
|
17
16
|
|
|
18
17
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
18
|
|
|
@@ -41,7 +40,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
|
|
|
41
40
|
}
|
|
42
41
|
connect() {
|
|
43
42
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
var _a
|
|
43
|
+
var _a;
|
|
45
44
|
// Consume the connection type
|
|
46
45
|
const connectionType = utils.StorageService.getItem(utils.PHANTOM_REDIRECT_CONNECTION_TYPE_KEY);
|
|
47
46
|
if (connectionType) {
|
|
@@ -61,15 +60,16 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
|
|
|
61
60
|
const isLocalHost = window.location.href.includes('localhost') ||
|
|
62
61
|
window.location.href.includes('0.0.0.0') ||
|
|
63
62
|
window.location.href.includes('127.0.0.1');
|
|
64
|
-
const
|
|
63
|
+
const currentNetwork = this.getSelectedNetwork();
|
|
64
|
+
const cluster = (_a = currentNetwork === null || currentNetwork === void 0 ? void 0 : currentNetwork.cluster) !== null && _a !== void 0 ? _a : 'mainnet-beta';
|
|
65
65
|
const params = new URLSearchParams({
|
|
66
66
|
app_url: isLocalHost ? 'https://demo.dynamic.xyz' : window.location.href,
|
|
67
|
-
cluster
|
|
67
|
+
cluster,
|
|
68
68
|
dapp_encryption_public_key: bs58__default["default"].encode(keyPair.publicKey),
|
|
69
69
|
redirect_link: window.location.href,
|
|
70
70
|
});
|
|
71
71
|
const url = buildUrl.buildUrl('connect', params);
|
|
72
|
-
|
|
72
|
+
utils.PlatformService.openURL(url);
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
75
|
getSession() {
|
|
@@ -105,7 +105,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
|
|
|
105
105
|
});
|
|
106
106
|
const url = buildUrl.buildUrl('signMessage', params);
|
|
107
107
|
storage.storage.method.set('signMessage');
|
|
108
|
-
|
|
108
|
+
utils.PlatformService.openURL(url);
|
|
109
109
|
// throwing this to prevent local storage from being cleared.
|
|
110
110
|
// when verifying signature, the SDK calls endSession when no
|
|
111
111
|
// signature is returned. in the case of phantom mobile, a signature
|
|
@@ -224,7 +224,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
|
|
|
224
224
|
redirect_link: window.location.href,
|
|
225
225
|
});
|
|
226
226
|
const url = buildUrl.buildUrl('signAllTransactions', params);
|
|
227
|
-
|
|
227
|
+
utils.PlatformService.openURL(url);
|
|
228
228
|
// actual signatures will be retrieved upon redirect back to dapp
|
|
229
229
|
return [];
|
|
230
230
|
}),
|
|
@@ -244,7 +244,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
|
|
|
244
244
|
});
|
|
245
245
|
const url = buildUrl.buildUrl('signAndSendTransaction', params);
|
|
246
246
|
storage.storage.method.set('signAndSendTransaction');
|
|
247
|
-
|
|
247
|
+
utils.PlatformService.openURL(url);
|
|
248
248
|
// actual signature will be retrived upon redirect back to dapp
|
|
249
249
|
return { signature: '' };
|
|
250
250
|
}),
|
|
@@ -262,7 +262,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
|
|
|
262
262
|
redirect_link: window.location.href,
|
|
263
263
|
});
|
|
264
264
|
const url = buildUrl.buildUrl('signMessage', params);
|
|
265
|
-
|
|
265
|
+
utils.PlatformService.openURL(url);
|
|
266
266
|
// actual signature will be retrived upon redirect back to dapp
|
|
267
267
|
return { signature: Buffer.from('') };
|
|
268
268
|
}),
|
|
@@ -283,7 +283,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
|
|
|
283
283
|
redirect_link: window.location.href,
|
|
284
284
|
});
|
|
285
285
|
const url = buildUrl.buildUrl('signTransaction', params);
|
|
286
|
-
|
|
286
|
+
utils.PlatformService.openURL(url);
|
|
287
287
|
return transaction;
|
|
288
288
|
}),
|
|
289
289
|
};
|
|
@@ -315,7 +315,7 @@ class PhantomRedirect extends solanaCore.SolanaWalletConnector {
|
|
|
315
315
|
redirect_link: window.location.href,
|
|
316
316
|
});
|
|
317
317
|
const url = buildUrl.buildUrl('disconnect', params);
|
|
318
|
-
|
|
318
|
+
utils.PlatformService.openURL(url);
|
|
319
319
|
});
|
|
320
320
|
}
|
|
321
321
|
/**
|
|
@@ -4,12 +4,11 @@ import { PublicKey, Transaction } from '@solana/web3.js';
|
|
|
4
4
|
import bs58 from 'bs58';
|
|
5
5
|
import nacl from 'tweetnacl';
|
|
6
6
|
import { SolanaWalletConnector } from '@dynamic-labs/solana-core';
|
|
7
|
-
import { StorageService, PHANTOM_REDIRECT_CONNECTION_TYPE_KEY } from '@dynamic-labs/utils';
|
|
7
|
+
import { StorageService, PHANTOM_REDIRECT_CONNECTION_TYPE_KEY, PlatformService } from '@dynamic-labs/utils';
|
|
8
8
|
import { buildUrl } from '../buildUrl/buildUrl.js';
|
|
9
9
|
import { decryptPayload } from '../decryptPayload/decryptPayload.js';
|
|
10
10
|
import { encryptPayload } from '../encryptPayload/encryptPayload.js';
|
|
11
11
|
import { storage, clearStorage } from '../storage/storage.js';
|
|
12
|
-
import { fetchCluster } from '../../utils/fetchCluster/fetchCluster.js';
|
|
13
12
|
|
|
14
13
|
class PhantomRedirect extends SolanaWalletConnector {
|
|
15
14
|
constructor(props) {
|
|
@@ -32,7 +31,7 @@ class PhantomRedirect extends SolanaWalletConnector {
|
|
|
32
31
|
}
|
|
33
32
|
connect() {
|
|
34
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
var _a
|
|
34
|
+
var _a;
|
|
36
35
|
// Consume the connection type
|
|
37
36
|
const connectionType = StorageService.getItem(PHANTOM_REDIRECT_CONNECTION_TYPE_KEY);
|
|
38
37
|
if (connectionType) {
|
|
@@ -52,15 +51,16 @@ class PhantomRedirect extends SolanaWalletConnector {
|
|
|
52
51
|
const isLocalHost = window.location.href.includes('localhost') ||
|
|
53
52
|
window.location.href.includes('0.0.0.0') ||
|
|
54
53
|
window.location.href.includes('127.0.0.1');
|
|
55
|
-
const
|
|
54
|
+
const currentNetwork = this.getSelectedNetwork();
|
|
55
|
+
const cluster = (_a = currentNetwork === null || currentNetwork === void 0 ? void 0 : currentNetwork.cluster) !== null && _a !== void 0 ? _a : 'mainnet-beta';
|
|
56
56
|
const params = new URLSearchParams({
|
|
57
57
|
app_url: isLocalHost ? 'https://demo.dynamic.xyz' : window.location.href,
|
|
58
|
-
cluster
|
|
58
|
+
cluster,
|
|
59
59
|
dapp_encryption_public_key: bs58.encode(keyPair.publicKey),
|
|
60
60
|
redirect_link: window.location.href,
|
|
61
61
|
});
|
|
62
62
|
const url = buildUrl('connect', params);
|
|
63
|
-
|
|
63
|
+
PlatformService.openURL(url);
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
getSession() {
|
|
@@ -96,7 +96,7 @@ class PhantomRedirect extends SolanaWalletConnector {
|
|
|
96
96
|
});
|
|
97
97
|
const url = buildUrl('signMessage', params);
|
|
98
98
|
storage.method.set('signMessage');
|
|
99
|
-
|
|
99
|
+
PlatformService.openURL(url);
|
|
100
100
|
// throwing this to prevent local storage from being cleared.
|
|
101
101
|
// when verifying signature, the SDK calls endSession when no
|
|
102
102
|
// signature is returned. in the case of phantom mobile, a signature
|
|
@@ -215,7 +215,7 @@ class PhantomRedirect extends SolanaWalletConnector {
|
|
|
215
215
|
redirect_link: window.location.href,
|
|
216
216
|
});
|
|
217
217
|
const url = buildUrl('signAllTransactions', params);
|
|
218
|
-
|
|
218
|
+
PlatformService.openURL(url);
|
|
219
219
|
// actual signatures will be retrieved upon redirect back to dapp
|
|
220
220
|
return [];
|
|
221
221
|
}),
|
|
@@ -235,7 +235,7 @@ class PhantomRedirect extends SolanaWalletConnector {
|
|
|
235
235
|
});
|
|
236
236
|
const url = buildUrl('signAndSendTransaction', params);
|
|
237
237
|
storage.method.set('signAndSendTransaction');
|
|
238
|
-
|
|
238
|
+
PlatformService.openURL(url);
|
|
239
239
|
// actual signature will be retrived upon redirect back to dapp
|
|
240
240
|
return { signature: '' };
|
|
241
241
|
}),
|
|
@@ -253,7 +253,7 @@ class PhantomRedirect extends SolanaWalletConnector {
|
|
|
253
253
|
redirect_link: window.location.href,
|
|
254
254
|
});
|
|
255
255
|
const url = buildUrl('signMessage', params);
|
|
256
|
-
|
|
256
|
+
PlatformService.openURL(url);
|
|
257
257
|
// actual signature will be retrived upon redirect back to dapp
|
|
258
258
|
return { signature: Buffer.from('') };
|
|
259
259
|
}),
|
|
@@ -274,7 +274,7 @@ class PhantomRedirect extends SolanaWalletConnector {
|
|
|
274
274
|
redirect_link: window.location.href,
|
|
275
275
|
});
|
|
276
276
|
const url = buildUrl('signTransaction', params);
|
|
277
|
-
|
|
277
|
+
PlatformService.openURL(url);
|
|
278
278
|
return transaction;
|
|
279
279
|
}),
|
|
280
280
|
};
|
|
@@ -306,7 +306,7 @@ class PhantomRedirect extends SolanaWalletConnector {
|
|
|
306
306
|
redirect_link: window.location.href,
|
|
307
307
|
});
|
|
308
308
|
const url = buildUrl('disconnect', params);
|
|
309
|
-
|
|
309
|
+
PlatformService.openURL(url);
|
|
310
310
|
});
|
|
311
311
|
}
|
|
312
312
|
/**
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
-
|
|
6
|
-
var _tslib = require('../../../_virtual/_tslib.cjs');
|
|
7
|
-
|
|
8
|
-
const GENESIS_HASHES = {
|
|
9
|
-
'4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY': 'testnet',
|
|
10
|
-
'5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d': 'mainnet-beta',
|
|
11
|
-
EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG: 'devnet',
|
|
12
|
-
};
|
|
13
|
-
const fetchCluster = (rpc_1, ...args_1) => _tslib.__awaiter(void 0, [rpc_1, ...args_1], void 0, function* (rpc, genesisHashesMap = GENESIS_HASHES) {
|
|
14
|
-
try {
|
|
15
|
-
const { result } = yield (yield fetch(rpc, {
|
|
16
|
-
body: JSON.stringify({
|
|
17
|
-
id: 1,
|
|
18
|
-
jsonrpc: '2.0',
|
|
19
|
-
method: 'getGenesisHash',
|
|
20
|
-
}),
|
|
21
|
-
headers: {
|
|
22
|
-
'Content-Type': 'application/json',
|
|
23
|
-
},
|
|
24
|
-
method: 'POST',
|
|
25
|
-
})).json();
|
|
26
|
-
return genesisHashesMap[result];
|
|
27
|
-
}
|
|
28
|
-
catch (err) {
|
|
29
|
-
return 'mainnet-beta';
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
exports.fetchCluster = fetchCluster;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const fetchCluster: (rpc: string, genesisHashesMap?: Record<string, string>) => Promise<string>;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
import { __awaiter } from '../../../_virtual/_tslib.js';
|
|
3
|
-
|
|
4
|
-
const GENESIS_HASHES = {
|
|
5
|
-
'4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY': 'testnet',
|
|
6
|
-
'5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d': 'mainnet-beta',
|
|
7
|
-
EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG: 'devnet',
|
|
8
|
-
};
|
|
9
|
-
const fetchCluster = (rpc_1, ...args_1) => __awaiter(void 0, [rpc_1, ...args_1], void 0, function* (rpc, genesisHashesMap = GENESIS_HASHES) {
|
|
10
|
-
try {
|
|
11
|
-
const { result } = yield (yield fetch(rpc, {
|
|
12
|
-
body: JSON.stringify({
|
|
13
|
-
id: 1,
|
|
14
|
-
jsonrpc: '2.0',
|
|
15
|
-
method: 'getGenesisHash',
|
|
16
|
-
}),
|
|
17
|
-
headers: {
|
|
18
|
-
'Content-Type': 'application/json',
|
|
19
|
-
},
|
|
20
|
-
method: 'POST',
|
|
21
|
-
})).json();
|
|
22
|
-
return genesisHashesMap[result];
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
return 'mainnet-beta';
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
export { fetchCluster };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './fetchCluster';
|