@dynamic-labs/solana-core 4.100.3 → 4.100.5
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 +17 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +8 -8
- package/src/connector/SolanaWalletConnector.cjs +6 -0
- package/src/connector/SolanaWalletConnector.d.ts +1 -0
- package/src/connector/SolanaWalletConnector.js +6 -0
- package/src/index.d.ts +1 -1
- package/src/rpc/RpcProviderSolana/RpcProviderSolana.cjs +9 -3
- package/src/rpc/RpcProviderSolana/RpcProviderSolana.js +9 -3
- package/src/types.d.ts +8 -3
- package/src/utils/SolanaUiTransaction/SolanaUiTransaction.cjs +2 -1
- package/src/utils/SolanaUiTransaction/SolanaUiTransaction.d.ts +4 -1
- package/src/utils/SolanaUiTransaction/SolanaUiTransaction.js +2 -1
- package/src/utils/getBackwardsCompatibleSolNetworks/getBackwardsCompatibleSolNetworks.cjs +3 -0
- package/src/utils/getBackwardsCompatibleSolNetworks/getBackwardsCompatibleSolNetworks.js +3 -0
- package/src/utils/getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.cjs +4 -2
- package/src/utils/getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.js +4 -2
- package/src/wallet/SolanaWallet.cjs +13 -4
- package/src/wallet/SolanaWallet.d.ts +1 -0
- package/src/wallet/SolanaWallet.js +14 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
|
|
2
|
+
### [4.100.5](https://github.com/dynamic-labs/dynamic-auth/compare/v4.100.4...v4.100.5) (2026-10-14)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* **react-native:** fall back to a TEE-backed key when StrongBox key generation fails on Android [v4] ([#12485](https://github.com/dynamic-labs/dynamic-auth/issues/12485)) ([54dcc96](https://github.com/dynamic-labs/dynamic-auth/commit/54dcc9651cdce9b8e5bb509087ffddb627fd9d83))
|
|
8
|
+
|
|
9
|
+
### [4.100.4](https://github.com/dynamic-labs/dynamic-auth/compare/v4.100.3...v4.100.4) (2026-10-08)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* **embedded-webview:** connect Coinbase Wallet via a real popup window [V4 backport] ([#12429](https://github.com/dynamic-labs/dynamic-auth/issues/12429)) ([82368fd](https://github.com/dynamic-labs/dynamic-auth/commit/82368fd41791e3a6e2ffec4dc6a0b401a7bec82f))
|
|
15
|
+
* **rpc-providers:** skip networks without an RPC URL instead of throwing [v4 backport] ([#12431](https://github.com/dynamic-labs/dynamic-auth/issues/12431)) ([95f05c5](https://github.com/dynamic-labs/dynamic-auth/commit/95f05c5c0c5195cc02f4dbc9969e90fc2e41eae0))
|
|
16
|
+
* unblock v4 CI (Playwright password/sign-message tests, shell-quote critical advisory) [V4 backport] ([#12475](https://github.com/dynamic-labs/dynamic-auth/issues/12475)) ([c4ad2ba](https://github.com/dynamic-labs/dynamic-auth/commit/c4ad2ba52a5d329a6b324b27c4ccfb3b48970223)), closes [#12468](https://github.com/dynamic-labs/dynamic-auth/issues/12468) [#1936](https://github.com/dynamic-labs/dynamic-auth/issues/1936) [#12476](https://github.com/dynamic-labs/dynamic-auth/issues/12476)
|
|
17
|
+
* **waas:** fall back when crypto.randomUUID is unavailable (v4 backport) ([#12436](https://github.com/dynamic-labs/dynamic-auth/issues/12436)) ([c72781e](https://github.com/dynamic-labs/dynamic-auth/commit/c72781ebf4269b356a98f3fc167bbd643a601bfd))
|
|
18
|
+
|
|
2
19
|
### [4.100.3](https://github.com/dynamic-labs/dynamic-auth/compare/v4.100.2...v4.100.3) (2026-09-18)
|
|
3
20
|
|
|
4
21
|
|
package/package.cjs
CHANGED
package/package.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/solana-core",
|
|
3
|
-
"version": "4.100.
|
|
3
|
+
"version": "4.100.5",
|
|
4
4
|
"description": "Core package for utilities and types for solana",
|
|
5
5
|
"author": "Dynamic Labs, Inc.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,15 +18,15 @@
|
|
|
18
18
|
},
|
|
19
19
|
"homepage": "https://www.dynamic.xyz/",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@dynamic-labs/sdk-api-core": "0.
|
|
22
|
-
"@dynamic-labs/utils": "4.100.
|
|
21
|
+
"@dynamic-labs/sdk-api-core": "0.92.0",
|
|
22
|
+
"@dynamic-labs/utils": "4.100.5",
|
|
23
23
|
"@solana/web3.js": "1.98.1",
|
|
24
24
|
"@solana/spl-token": "0.4.14",
|
|
25
|
-
"@dynamic-labs/assert-package-version": "4.100.
|
|
26
|
-
"@dynamic-labs/rpc-providers": "4.100.
|
|
27
|
-
"@dynamic-labs/types": "4.100.
|
|
28
|
-
"@dynamic-labs/wallet-book": "4.100.
|
|
29
|
-
"@dynamic-labs/wallet-connector-core": "4.100.
|
|
25
|
+
"@dynamic-labs/assert-package-version": "4.100.5",
|
|
26
|
+
"@dynamic-labs/rpc-providers": "4.100.5",
|
|
27
|
+
"@dynamic-labs/types": "4.100.5",
|
|
28
|
+
"@dynamic-labs/wallet-book": "4.100.5",
|
|
29
|
+
"@dynamic-labs/wallet-connector-core": "4.100.5",
|
|
30
30
|
"eventemitter3": "5.0.1"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {}
|
|
@@ -25,6 +25,9 @@ class SolanaWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
25
25
|
this.ChainWallet = SolanaWallet.SolanaWallet;
|
|
26
26
|
this.supportedChains = ['SOL'];
|
|
27
27
|
this.connectedChain = 'SOL';
|
|
28
|
+
// Whether the connector can sponsor Solana transactions (overridden by
|
|
29
|
+
// connectors with a sponsorship implementation, e.g. WaaS SVM)
|
|
30
|
+
this.supportsSvmGasSponsorship = false;
|
|
28
31
|
this.solNetworks = getBackwardsCompatibleSolNetworks.getBackwardsCompatibleSolNetworks(opts.solNetworks, opts.connectionConfig);
|
|
29
32
|
this.chainRpcProviders = opts.chainRpcProviders;
|
|
30
33
|
this.connectionConfig = opts.connectionConfig;
|
|
@@ -106,6 +109,9 @@ class SolanaWalletConnector extends walletConnectorCore.WalletConnectorBase {
|
|
|
106
109
|
throw new utils.DynamicError('No enabled networks', 'no_enabled_networks');
|
|
107
110
|
}
|
|
108
111
|
const rpcUrl = getOverrideRpcUrlForNetwork.getOverrideRpcUrlForNetwork(this.connectionConfig, network);
|
|
112
|
+
if (!rpcUrl) {
|
|
113
|
+
throw new utils.DynamicError('Provider not found', 'provider_not_found');
|
|
114
|
+
}
|
|
109
115
|
return new web3_js.Connection(rpcUrl, (_a = this.connectionConfig) !== null && _a !== void 0 ? _a : 'confirmed');
|
|
110
116
|
}
|
|
111
117
|
getPublicClient() {
|
|
@@ -23,6 +23,7 @@ export declare abstract class SolanaWalletConnector extends WalletConnectorBase<
|
|
|
23
23
|
ChainWallet: typeof SolanaWallet;
|
|
24
24
|
supportedChains: Chain[];
|
|
25
25
|
connectedChain: Chain;
|
|
26
|
+
readonly supportsSvmGasSponsorship: boolean;
|
|
26
27
|
protected connectionConfig: SolanaConnectionConfig | undefined;
|
|
27
28
|
constructor(opts: SolanaWalletConnectorOpts);
|
|
28
29
|
getNetworkId(): string;
|
|
@@ -21,6 +21,9 @@ class SolanaWalletConnector extends WalletConnectorBase {
|
|
|
21
21
|
this.ChainWallet = SolanaWallet;
|
|
22
22
|
this.supportedChains = ['SOL'];
|
|
23
23
|
this.connectedChain = 'SOL';
|
|
24
|
+
// Whether the connector can sponsor Solana transactions (overridden by
|
|
25
|
+
// connectors with a sponsorship implementation, e.g. WaaS SVM)
|
|
26
|
+
this.supportsSvmGasSponsorship = false;
|
|
24
27
|
this.solNetworks = getBackwardsCompatibleSolNetworks(opts.solNetworks, opts.connectionConfig);
|
|
25
28
|
this.chainRpcProviders = opts.chainRpcProviders;
|
|
26
29
|
this.connectionConfig = opts.connectionConfig;
|
|
@@ -102,6 +105,9 @@ class SolanaWalletConnector extends WalletConnectorBase {
|
|
|
102
105
|
throw new DynamicError('No enabled networks', 'no_enabled_networks');
|
|
103
106
|
}
|
|
104
107
|
const rpcUrl = getOverrideRpcUrlForNetwork(this.connectionConfig, network);
|
|
108
|
+
if (!rpcUrl) {
|
|
109
|
+
throw new DynamicError('Provider not found', 'provider_not_found');
|
|
110
|
+
}
|
|
105
111
|
return new Connection(rpcUrl, (_a = this.connectionConfig) !== null && _a !== void 0 ? _a : 'confirmed');
|
|
106
112
|
}
|
|
107
113
|
getPublicClient() {
|
package/src/index.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export * from './rpc';
|
|
|
3
3
|
export * from './utils';
|
|
4
4
|
export * from './wallet';
|
|
5
5
|
export { SOLANA_GENESIS_HASH, DYNAMIC_SVM_NETWORK_ID_LS_KEY, } from './constants';
|
|
6
|
-
export type { ConnectionResult, ExtensionLocator, ISolana, IBackpackSolanaSigner, SignedMessage, ISolanaSigner, SolanaConnectionConfig, ISolanaEvents, } from './types';
|
|
6
|
+
export type { ConnectionResult, ExtensionLocator, ISolana, IBackpackSolanaSigner, SignedMessage, ISolanaSigner, GasSponsorshipMode, SolanaSendOptions, SolanaTransactionOptions, SolanaConnectionConfig, ISolanaEvents, } from './types';
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
var web3_js = require('@solana/web3.js');
|
|
5
5
|
var rpcProviders = require('@dynamic-labs/rpc-providers');
|
|
6
|
+
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
6
7
|
require('../../../_virtual/_tslib.cjs');
|
|
7
8
|
require('@solana/spl-token');
|
|
8
9
|
require('@dynamic-labs/utils');
|
|
9
10
|
var getOverrideRpcUrlForNetwork = require('../../utils/getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.cjs');
|
|
10
11
|
require('@dynamic-labs/types');
|
|
11
|
-
require('@dynamic-labs/wallet-connector-core');
|
|
12
12
|
|
|
13
13
|
rpcProviders.ChainRpcProviders.getSolanaProviderByChainId = (rpcProviders, chainId) => {
|
|
14
14
|
var _a;
|
|
@@ -19,15 +19,21 @@ rpcProviders.ChainRpcProviders.registerSolanaProviders = (connectionConfig) => {
|
|
|
19
19
|
rpcProviders.ChainRpcProviders.registerChainProviders(rpcProviders.ProviderChain.SOLANA, (config) => {
|
|
20
20
|
const rpcProviders = {};
|
|
21
21
|
if (config === null || config === void 0 ? void 0 : config.solana) {
|
|
22
|
-
rpcProviders.solana = config.solana
|
|
22
|
+
rpcProviders.solana = config.solana
|
|
23
|
+
.map((network) => {
|
|
23
24
|
const rpcUrl = getOverrideRpcUrlForNetwork.getOverrideRpcUrlForNetwork(connectionConfig, network);
|
|
25
|
+
if (!rpcUrl) {
|
|
26
|
+
walletConnectorCore.logger.warn(`Skipping Solana provider registration for chain ${network.chainId}: no RPC URL configured`);
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
24
29
|
const provider = new web3_js.Connection(rpcUrl, connectionConfig);
|
|
25
30
|
return {
|
|
26
31
|
chainId: network.chainId.toString(),
|
|
27
32
|
chainName: network.name,
|
|
28
33
|
provider,
|
|
29
34
|
};
|
|
30
|
-
})
|
|
35
|
+
})
|
|
36
|
+
.filter((rpcProvider) => rpcProvider !== undefined);
|
|
31
37
|
}
|
|
32
38
|
return rpcProviders.solana;
|
|
33
39
|
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { Connection } from '@solana/web3.js';
|
|
3
3
|
import { ChainRpcProviders, ProviderChain } from '@dynamic-labs/rpc-providers';
|
|
4
|
+
import { logger } from '@dynamic-labs/wallet-connector-core';
|
|
4
5
|
import '../../../_virtual/_tslib.js';
|
|
5
6
|
import '@solana/spl-token';
|
|
6
7
|
import '@dynamic-labs/utils';
|
|
7
8
|
import { getOverrideRpcUrlForNetwork } from '../../utils/getOverrideRpcUrlForNetwork/getOverrideRpcUrlForNetwork.js';
|
|
8
9
|
import '@dynamic-labs/types';
|
|
9
|
-
import '@dynamic-labs/wallet-connector-core';
|
|
10
10
|
|
|
11
11
|
ChainRpcProviders.getSolanaProviderByChainId = (rpcProviders, chainId) => {
|
|
12
12
|
var _a;
|
|
@@ -17,15 +17,21 @@ ChainRpcProviders.registerSolanaProviders = (connectionConfig) => {
|
|
|
17
17
|
ChainRpcProviders.registerChainProviders(ProviderChain.SOLANA, (config) => {
|
|
18
18
|
const rpcProviders = {};
|
|
19
19
|
if (config === null || config === void 0 ? void 0 : config.solana) {
|
|
20
|
-
rpcProviders.solana = config.solana
|
|
20
|
+
rpcProviders.solana = config.solana
|
|
21
|
+
.map((network) => {
|
|
21
22
|
const rpcUrl = getOverrideRpcUrlForNetwork(connectionConfig, network);
|
|
23
|
+
if (!rpcUrl) {
|
|
24
|
+
logger.warn(`Skipping Solana provider registration for chain ${network.chainId}: no RPC URL configured`);
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
22
27
|
const provider = new Connection(rpcUrl, connectionConfig);
|
|
23
28
|
return {
|
|
24
29
|
chainId: network.chainId.toString(),
|
|
25
30
|
chainName: network.name,
|
|
26
31
|
provider,
|
|
27
32
|
};
|
|
28
|
-
})
|
|
33
|
+
})
|
|
34
|
+
.filter((rpcProvider) => rpcProvider !== undefined);
|
|
29
35
|
}
|
|
30
36
|
return rpcProviders.solana;
|
|
31
37
|
});
|
package/src/types.d.ts
CHANGED
|
@@ -32,6 +32,11 @@ export interface ISolanaEvents {
|
|
|
32
32
|
export type SignedMessage = {
|
|
33
33
|
signature: Uint8Array;
|
|
34
34
|
};
|
|
35
|
+
export type GasSponsorshipMode = 'auto' | 'off' | 'required';
|
|
36
|
+
export type SolanaTransactionOptions = {
|
|
37
|
+
sponsorshipMode?: GasSponsorshipMode;
|
|
38
|
+
};
|
|
39
|
+
export type SolanaSendOptions = SendOptions & SolanaTransactionOptions;
|
|
35
40
|
type ExtensionLocators = {
|
|
36
41
|
[key in ExtensionLocator]: boolean;
|
|
37
42
|
};
|
|
@@ -41,9 +46,9 @@ export type ISolanaSigner = ExtensionLocators & EventEmitter<ISolanaEvents> & {
|
|
|
41
46
|
};
|
|
42
47
|
isConnected: boolean;
|
|
43
48
|
providers: ISolanaSigner[];
|
|
44
|
-
signTransaction<T extends Transaction | VersionedTransaction>(transaction: T): Promise<T>;
|
|
45
|
-
signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[]): Promise<T[]>;
|
|
46
|
-
signAndSendTransaction<T extends Transaction | VersionedTransaction>(transaction: T, options?:
|
|
49
|
+
signTransaction<T extends Transaction | VersionedTransaction>(transaction: T, options?: SolanaTransactionOptions): Promise<T>;
|
|
50
|
+
signAllTransactions<T extends Transaction | VersionedTransaction>(transactions: T[], options?: SolanaTransactionOptions): Promise<T[]>;
|
|
51
|
+
signAndSendTransaction<T extends Transaction | VersionedTransaction>(transaction: T, options?: SolanaSendOptions): Promise<{
|
|
47
52
|
signature: TransactionSignature;
|
|
48
53
|
}>;
|
|
49
54
|
signMessage(message: Uint8Array, encoding?: string): Promise<SignedMessage>;
|
|
@@ -10,7 +10,7 @@ var utils = require('@dynamic-labs/utils');
|
|
|
10
10
|
|
|
11
11
|
const LAMPORTS_PER_SOL = 1000000000;
|
|
12
12
|
class SolanaUiTransaction {
|
|
13
|
-
constructor({ onSubmit, from, connection, multipleTransactions, }) {
|
|
13
|
+
constructor({ onSubmit, from, connection, multipleTransactions, sponsorshipMode, }) {
|
|
14
14
|
this.chain = 'SOL';
|
|
15
15
|
this.data = undefined;
|
|
16
16
|
this.fee = { gas: undefined };
|
|
@@ -19,6 +19,7 @@ class SolanaUiTransaction {
|
|
|
19
19
|
this.onSubmit = onSubmit;
|
|
20
20
|
this.connection = connection;
|
|
21
21
|
this.multipleTransactions = multipleTransactions;
|
|
22
|
+
this.sponsorshipMode = sponsorshipMode;
|
|
22
23
|
}
|
|
23
24
|
fetchFee() {
|
|
24
25
|
return _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Connection, Transaction, VersionedTransaction } from '@solana/web3.js';
|
|
2
2
|
import { IUITransaction, IUITransactionFormatOptions } from '@dynamic-labs/types';
|
|
3
|
+
import { GasSponsorshipMode } from '../../types';
|
|
3
4
|
export declare const LAMPORTS_PER_SOL = 1000000000;
|
|
4
5
|
type SolanaUiTransactionProps = {
|
|
5
6
|
from: string;
|
|
6
7
|
connection: Connection;
|
|
7
8
|
onSubmit: (transaction?: Transaction | VersionedTransaction) => Promise<any>;
|
|
8
9
|
multipleTransactions?: (Transaction | VersionedTransaction)[];
|
|
10
|
+
sponsorshipMode?: GasSponsorshipMode;
|
|
9
11
|
};
|
|
10
12
|
export declare class SolanaUiTransaction implements IUITransaction {
|
|
11
13
|
to: string | undefined;
|
|
@@ -21,9 +23,10 @@ export declare class SolanaUiTransaction implements IUITransaction {
|
|
|
21
23
|
nonNativeAddress?: string;
|
|
22
24
|
nonNativeDecimal?: number;
|
|
23
25
|
nonNativeValue?: bigint;
|
|
26
|
+
sponsorshipMode?: GasSponsorshipMode;
|
|
24
27
|
private onSubmit;
|
|
25
28
|
private connection;
|
|
26
|
-
constructor({ onSubmit, from, connection, multipleTransactions, }: SolanaUiTransactionProps);
|
|
29
|
+
constructor({ onSubmit, from, connection, multipleTransactions, sponsorshipMode, }: SolanaUiTransactionProps);
|
|
27
30
|
nativePrice?: number | undefined;
|
|
28
31
|
fetchFee(): Promise<void>;
|
|
29
32
|
isGasSponsored(): boolean;
|
|
@@ -6,7 +6,7 @@ import { formatNumberText } from '@dynamic-labs/utils';
|
|
|
6
6
|
|
|
7
7
|
const LAMPORTS_PER_SOL = 1000000000;
|
|
8
8
|
class SolanaUiTransaction {
|
|
9
|
-
constructor({ onSubmit, from, connection, multipleTransactions, }) {
|
|
9
|
+
constructor({ onSubmit, from, connection, multipleTransactions, sponsorshipMode, }) {
|
|
10
10
|
this.chain = 'SOL';
|
|
11
11
|
this.data = undefined;
|
|
12
12
|
this.fee = { gas: undefined };
|
|
@@ -15,6 +15,7 @@ class SolanaUiTransaction {
|
|
|
15
15
|
this.onSubmit = onSubmit;
|
|
16
16
|
this.connection = connection;
|
|
17
17
|
this.multipleTransactions = multipleTransactions;
|
|
18
|
+
this.sponsorshipMode = sponsorshipMode;
|
|
18
19
|
}
|
|
19
20
|
fetchFee() {
|
|
20
21
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -77,6 +77,9 @@ const getBackwardsCompatibleSolNetworks = (originalSolNetworks, connectionConfig
|
|
|
77
77
|
// customer would just pass in testnet/devnet rpc urls to the mainnet network
|
|
78
78
|
// so we need to check the rpc and return the correct/expected network data
|
|
79
79
|
const rpcUrl = getOverrideRpcUrlForNetwork.getOverrideRpcUrlForNetwork(connectionConfig, originalSolNetworks[0]);
|
|
80
|
+
if (!rpcUrl) {
|
|
81
|
+
return originalSolNetworks;
|
|
82
|
+
}
|
|
80
83
|
if (rpcUrl.includes('testnet')) {
|
|
81
84
|
return [
|
|
82
85
|
Object.assign(Object.assign({}, SOLANA_TESTNET_NETWORK), { privateCustomerRpcUrls: [rpcUrl] }),
|
|
@@ -73,6 +73,9 @@ const getBackwardsCompatibleSolNetworks = (originalSolNetworks, connectionConfig
|
|
|
73
73
|
// customer would just pass in testnet/devnet rpc urls to the mainnet network
|
|
74
74
|
// so we need to check the rpc and return the correct/expected network data
|
|
75
75
|
const rpcUrl = getOverrideRpcUrlForNetwork(connectionConfig, originalSolNetworks[0]);
|
|
76
|
+
if (!rpcUrl) {
|
|
77
|
+
return originalSolNetworks;
|
|
78
|
+
}
|
|
76
79
|
if (rpcUrl.includes('testnet')) {
|
|
77
80
|
return [
|
|
78
81
|
Object.assign(Object.assign({}, SOLANA_TESTNET_NETWORK), { privateCustomerRpcUrls: [rpcUrl] }),
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
6
|
const getOverrideRpcUrlForNetwork = (connectionConfig, network) => {
|
|
7
|
-
var _a, _b, _c, _d, _e;
|
|
7
|
+
var _a, _b, _c, _d, _e, _f;
|
|
8
8
|
const isSolanaNetwork = network.name.toLowerCase().includes('solana');
|
|
9
9
|
const isEclipseNetwork = network.name.toLowerCase().includes('eclipse');
|
|
10
10
|
let overrideRpcUrl;
|
|
@@ -14,7 +14,9 @@ const getOverrideRpcUrlForNetwork = (connectionConfig, network) => {
|
|
|
14
14
|
if (isEclipseNetwork) {
|
|
15
15
|
overrideRpcUrl = (_d = (_c = connectionConfig === null || connectionConfig === void 0 ? void 0 : connectionConfig.customRpcUrls) === null || _c === void 0 ? void 0 : _c.eclipse) === null || _d === void 0 ? void 0 : _d[0];
|
|
16
16
|
}
|
|
17
|
-
return (overrideRpcUrl ||
|
|
17
|
+
return (overrideRpcUrl ||
|
|
18
|
+
((_e = network.privateCustomerRpcUrls) === null || _e === void 0 ? void 0 : _e[0]) ||
|
|
19
|
+
((_f = network.rpcUrls) === null || _f === void 0 ? void 0 : _f[0]));
|
|
18
20
|
};
|
|
19
21
|
|
|
20
22
|
exports.getOverrideRpcUrlForNetwork = getOverrideRpcUrlForNetwork;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
const getOverrideRpcUrlForNetwork = (connectionConfig, network) => {
|
|
3
|
-
var _a, _b, _c, _d, _e;
|
|
3
|
+
var _a, _b, _c, _d, _e, _f;
|
|
4
4
|
const isSolanaNetwork = network.name.toLowerCase().includes('solana');
|
|
5
5
|
const isEclipseNetwork = network.name.toLowerCase().includes('eclipse');
|
|
6
6
|
let overrideRpcUrl;
|
|
@@ -10,7 +10,9 @@ const getOverrideRpcUrlForNetwork = (connectionConfig, network) => {
|
|
|
10
10
|
if (isEclipseNetwork) {
|
|
11
11
|
overrideRpcUrl = (_d = (_c = connectionConfig === null || connectionConfig === void 0 ? void 0 : connectionConfig.customRpcUrls) === null || _c === void 0 ? void 0 : _c.eclipse) === null || _d === void 0 ? void 0 : _d[0];
|
|
12
12
|
}
|
|
13
|
-
return (overrideRpcUrl ||
|
|
13
|
+
return (overrideRpcUrl ||
|
|
14
|
+
((_e = network.privateCustomerRpcUrls) === null || _e === void 0 ? void 0 : _e[0]) ||
|
|
15
|
+
((_f = network.rpcUrls) === null || _f === void 0 ? void 0 : _f[0]));
|
|
14
16
|
};
|
|
15
17
|
|
|
16
18
|
export { getOverrideRpcUrlForNetwork };
|
|
@@ -78,6 +78,12 @@ class SolanaWallet extends walletConnectorCore.Wallet {
|
|
|
78
78
|
return signature;
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
|
+
assertSponsorshipSupported(options) {
|
|
82
|
+
if ((options === null || options === void 0 ? void 0 : options.sponsorshipMode) === 'required' &&
|
|
83
|
+
!this._connector.supportsSvmGasSponsorship) {
|
|
84
|
+
throw new utils.DynamicError('This wallet does not support gas sponsorship', 'sponsorship_not_supported');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
81
87
|
/**
|
|
82
88
|
* Retrieves the RPC connection
|
|
83
89
|
* @returns A promise that resolves to the RPC connection
|
|
@@ -100,16 +106,18 @@ class SolanaWallet extends walletConnectorCore.Wallet {
|
|
|
100
106
|
}
|
|
101
107
|
try {
|
|
102
108
|
return utils.cloneObjectWithOverrides(signer, {
|
|
103
|
-
signAllTransactions: (transactions) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
signAllTransactions: (transactions, ...args) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
this.assertSponsorshipSupported(args[0]);
|
|
104
111
|
yield this.sync();
|
|
105
112
|
yield screenSolanaTransactions.screenSolanaTransactions({
|
|
106
113
|
senderAddress: this.address,
|
|
107
114
|
transactionScreening: this._connector.transactionScreening,
|
|
108
115
|
transactions,
|
|
109
116
|
});
|
|
110
|
-
return signer.signAllTransactions(transactions);
|
|
117
|
+
return signer.signAllTransactions(transactions, ...args);
|
|
111
118
|
}),
|
|
112
119
|
signAndSendTransaction: (transaction, ...args) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
this.assertSponsorshipSupported(args[0]);
|
|
113
121
|
yield this.sync();
|
|
114
122
|
yield screenSolanaTransactions.screenSolanaTransactions({
|
|
115
123
|
senderAddress: this.address,
|
|
@@ -122,14 +130,15 @@ class SolanaWallet extends walletConnectorCore.Wallet {
|
|
|
122
130
|
yield this.sync();
|
|
123
131
|
return signer.signMessage(message, ...args);
|
|
124
132
|
}),
|
|
125
|
-
signTransaction: (transaction) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
signTransaction: (transaction, ...args) => _tslib.__awaiter(this, void 0, void 0, function* () {
|
|
134
|
+
this.assertSponsorshipSupported(args[0]);
|
|
126
135
|
yield this.sync();
|
|
127
136
|
yield screenSolanaTransactions.screenSolanaTransactions({
|
|
128
137
|
senderAddress: this.address,
|
|
129
138
|
transactionScreening: this._connector.transactionScreening,
|
|
130
139
|
transactions: [transaction],
|
|
131
140
|
});
|
|
132
|
-
return signer.signTransaction(transaction);
|
|
141
|
+
return signer.signTransaction(transaction, ...args);
|
|
133
142
|
}),
|
|
134
143
|
});
|
|
135
144
|
}
|
|
@@ -29,6 +29,7 @@ export declare class SolanaWallet extends Wallet<SolanaWalletConnector> {
|
|
|
29
29
|
createAssociatedTokenAccount({ tokenAddress, }: {
|
|
30
30
|
tokenAddress: string;
|
|
31
31
|
}): Promise<string | undefined>;
|
|
32
|
+
private assertSponsorshipSupported;
|
|
32
33
|
/**
|
|
33
34
|
* Retrieves the RPC connection
|
|
34
35
|
* @returns A promise that resolves to the RPC connection
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
3
3
|
import { Wallet, logger } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
-
import { cloneObjectWithOverrides } from '@dynamic-labs/utils';
|
|
4
|
+
import { DynamicError, cloneObjectWithOverrides } from '@dynamic-labs/utils';
|
|
5
5
|
import '@solana/web3.js';
|
|
6
6
|
import '@solana/spl-token';
|
|
7
7
|
import { createNonNativeTokenTransfer } from '../utils/createNonNativeTokenTransfer/createNonNativeTokenTransfer.js';
|
|
@@ -74,6 +74,12 @@ class SolanaWallet extends Wallet {
|
|
|
74
74
|
return signature;
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
+
assertSponsorshipSupported(options) {
|
|
78
|
+
if ((options === null || options === void 0 ? void 0 : options.sponsorshipMode) === 'required' &&
|
|
79
|
+
!this._connector.supportsSvmGasSponsorship) {
|
|
80
|
+
throw new DynamicError('This wallet does not support gas sponsorship', 'sponsorship_not_supported');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
77
83
|
/**
|
|
78
84
|
* Retrieves the RPC connection
|
|
79
85
|
* @returns A promise that resolves to the RPC connection
|
|
@@ -96,16 +102,18 @@ class SolanaWallet extends Wallet {
|
|
|
96
102
|
}
|
|
97
103
|
try {
|
|
98
104
|
return cloneObjectWithOverrides(signer, {
|
|
99
|
-
signAllTransactions: (transactions) => __awaiter(this, void 0, void 0, function* () {
|
|
105
|
+
signAllTransactions: (transactions, ...args) => __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
this.assertSponsorshipSupported(args[0]);
|
|
100
107
|
yield this.sync();
|
|
101
108
|
yield screenSolanaTransactions({
|
|
102
109
|
senderAddress: this.address,
|
|
103
110
|
transactionScreening: this._connector.transactionScreening,
|
|
104
111
|
transactions,
|
|
105
112
|
});
|
|
106
|
-
return signer.signAllTransactions(transactions);
|
|
113
|
+
return signer.signAllTransactions(transactions, ...args);
|
|
107
114
|
}),
|
|
108
115
|
signAndSendTransaction: (transaction, ...args) => __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
this.assertSponsorshipSupported(args[0]);
|
|
109
117
|
yield this.sync();
|
|
110
118
|
yield screenSolanaTransactions({
|
|
111
119
|
senderAddress: this.address,
|
|
@@ -118,14 +126,15 @@ class SolanaWallet extends Wallet {
|
|
|
118
126
|
yield this.sync();
|
|
119
127
|
return signer.signMessage(message, ...args);
|
|
120
128
|
}),
|
|
121
|
-
signTransaction: (transaction) => __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
signTransaction: (transaction, ...args) => __awaiter(this, void 0, void 0, function* () {
|
|
130
|
+
this.assertSponsorshipSupported(args[0]);
|
|
122
131
|
yield this.sync();
|
|
123
132
|
yield screenSolanaTransactions({
|
|
124
133
|
senderAddress: this.address,
|
|
125
134
|
transactionScreening: this._connector.transactionScreening,
|
|
126
135
|
transactions: [transaction],
|
|
127
136
|
});
|
|
128
|
-
return signer.signTransaction(transaction);
|
|
137
|
+
return signer.signTransaction(transaction, ...args);
|
|
129
138
|
}),
|
|
130
139
|
});
|
|
131
140
|
}
|