@dynamic-labs/embedded-wallet-solana 4.91.3 → 4.91.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 CHANGED
@@ -1,4 +1,21 @@
1
1
 
2
+ ### [4.91.5](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.4...v4.91.5) (2026-07-02)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * revoke WaaS signed-session callback on client rebuild to stop iOS nonce race ([#11766](https://github.com/dynamic-labs/dynamic-auth/issues/11766)) ([c895b5d](https://github.com/dynamic-labs/dynamic-auth/commit/c895b5d0987d62a9f5597741dbeae0ec7fedfe5b))
8
+ * **sdk-react-core:** allow sendOneTimeCode to target non-primary chain wallets ([#11777](https://github.com/dynamic-labs/dynamic-auth/issues/11777)) ([63f82af](https://github.com/dynamic-labs/dynamic-auth/commit/63f82af7c52be595bc2948ec88ee9c919ac9275a))
9
+ * **webview-controller:** resolve post-login wallet race in Viem and ZeroDev controllers ([#11774](https://github.com/dynamic-labs/dynamic-auth/issues/11774)) ([95ed26e](https://github.com/dynamic-labs/dynamic-auth/commit/95ed26eee09d9aff5a5af6517ab7e1360ef5f337))
10
+
11
+ ### [4.91.4](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.3...v4.91.4) (2026-07-01)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * conditionally use /op/ route for AA transactions based on block explorer support ([#11628](https://github.com/dynamic-labs/dynamic-auth/issues/11628)) ([95822dc](https://github.com/dynamic-labs/dynamic-auth/commit/95822dc0edbcd739afe870f0b3881555fdb17eb6))
17
+ * require error codes in all SDK error classes ([#11761](https://github.com/dynamic-labs/dynamic-auth/issues/11761)) ([5744811](https://github.com/dynamic-labs/dynamic-auth/commit/5744811efdd1e415aaf51eec5b3300b323ec1347))
18
+
2
19
  ### [4.91.3](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.2...v4.91.3) (2026-06-30)
3
20
 
4
21
 
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.91.3";
6
+ var version = "4.91.5";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.91.3";
2
+ var version = "4.91.5";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/embedded-wallet-solana",
3
- "version": "4.91.3",
3
+ "version": "4.91.5",
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,21 +18,21 @@
18
18
  },
19
19
  "homepage": "https://www.dynamic.xyz/",
20
20
  "dependencies": {
21
- "@dynamic-labs/utils": "4.91.3",
22
- "@dynamic-labs/types": "4.91.3",
21
+ "@dynamic-labs/utils": "4.91.5",
22
+ "@dynamic-labs/types": "4.91.5",
23
23
  "@dynamic-labs/sdk-api-core": "0.0.1046",
24
24
  "@dynamic-labs-sdk/client": "1.12.1",
25
25
  "@solana/web3.js": "1.98.1",
26
26
  "@turnkey/iframe-stamper": "2.5.0",
27
27
  "@turnkey/solana": "1.0.42",
28
28
  "@turnkey/webauthn-stamper": "0.5.1",
29
- "@dynamic-labs/assert-package-version": "4.91.3",
30
- "@dynamic-labs/embedded-wallet": "4.91.3",
31
- "@dynamic-labs/rpc-providers": "4.91.3",
32
- "@dynamic-labs/solana-core": "4.91.3",
33
- "@dynamic-labs/wallet-book": "4.91.3",
34
- "@dynamic-labs/wallet-connector-core": "4.91.3",
35
- "@dynamic-labs/webauthn": "4.91.3",
29
+ "@dynamic-labs/assert-package-version": "4.91.5",
30
+ "@dynamic-labs/embedded-wallet": "4.91.5",
31
+ "@dynamic-labs/rpc-providers": "4.91.5",
32
+ "@dynamic-labs/solana-core": "4.91.5",
33
+ "@dynamic-labs/wallet-book": "4.91.5",
34
+ "@dynamic-labs/wallet-connector-core": "4.91.5",
35
+ "@dynamic-labs/webauthn": "4.91.5",
36
36
  "viem": "2.46.3"
37
37
  },
38
38
  "peerDependencies": {}
@@ -55,14 +55,14 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
55
55
  getRpcUrl() {
56
56
  const network = this.getSelectedNetwork();
57
57
  if (!network) {
58
- throw new utils.DynamicError('No enabled networks');
58
+ throw new utils.DynamicError('No enabled networks', 'no_enabled_networks');
59
59
  }
60
60
  return solanaCore.getOverrideRpcUrlForNetwork(this.connectionConfig, network);
61
61
  }
62
62
  getConnection(commitmentOrConfig) {
63
63
  const rpcUrl = this.getRpcUrl();
64
64
  if (!rpcUrl)
65
- throw new utils.DynamicError('No rpcUrl');
65
+ throw new utils.DynamicError('No rpcUrl', 'no_rpc_url');
66
66
  const config = typeof commitmentOrConfig === 'string'
67
67
  ? Object.assign(Object.assign({}, this.connectionConfig), { commitment: commitmentOrConfig }) : Object.assign(Object.assign({}, this.connectionConfig), commitmentOrConfig);
68
68
  return createSolanaConnection.createSolanaConnection(rpcUrl, config);
@@ -173,7 +173,7 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
173
173
  if (!isWalletActive) {
174
174
  const targetActiveAccount = (_b = this.verifiedCredentials) === null || _b === void 0 ? void 0 : _b.find((vc) => (vc === null || vc === void 0 ? void 0 : vc.address) === expectedAddress);
175
175
  if (!targetActiveAccount) {
176
- throw new utils.DynamicError('Account not found');
176
+ throw new utils.DynamicError('Account not found', 'account_not_found');
177
177
  }
178
178
  this.verifiedCredential = targetActiveAccount;
179
179
  this.refreshTurnkeyAccount();
@@ -241,7 +241,7 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
241
241
  signUint8ArrayMessage(encodedMessage) {
242
242
  return _tslib.__awaiter(this, void 0, void 0, function* () {
243
243
  if (!this.turnkeyAddress) {
244
- throw new utils.DynamicError('No turnkey account');
244
+ throw new utils.DynamicError('No turnkey account', 'no_turnkey_account');
245
245
  }
246
246
  const address = this.turnkeyAddress;
247
247
  let signedMessageRaw;
@@ -330,7 +330,7 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
330
330
  signTransaction(transaction) {
331
331
  return _tslib.__awaiter(this, void 0, void 0, function* () {
332
332
  if (!this.turnkeyAddress)
333
- throw new utils.DynamicError('No turnkey account');
333
+ throw new utils.DynamicError('No turnkey account', 'no_turnkey_account');
334
334
  const uiTransaction = new solanaCore.SolanaUiTransaction({
335
335
  connection: this.getConnection('confirmed'),
336
336
  from: this.turnkeyAddress,
@@ -403,7 +403,7 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
403
403
  signAllTransactions(transactions) {
404
404
  return _tslib.__awaiter(this, void 0, void 0, function* () {
405
405
  if (!this.turnkeyAddress)
406
- throw new utils.DynamicError('No turnkey account');
406
+ throw new utils.DynamicError('No turnkey account', 'no_turnkey_account');
407
407
  const uiTransaction = new solanaCore.SolanaUiTransaction({
408
408
  connection: this.getConnection('confirmed'),
409
409
  from: this.turnkeyAddress,
@@ -417,7 +417,7 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
417
417
  return _tslib.__awaiter(this, void 0, void 0, function* () {
418
418
  var _a, _b;
419
419
  if (!this.turnkeyAddress)
420
- throw new utils.DynamicError('Solana wallet not found');
420
+ throw new utils.DynamicError('Solana wallet not found', 'solana_wallet_not_found');
421
421
  const currentConnection = this.getConnection((_b = (_a = this.connectionConfig) === null || _a === void 0 ? void 0 : _a.commitment) !== null && _b !== void 0 ? _b : 'confirmed');
422
422
  // Refresh the blockhash right before signing so the tx is submitted with
423
423
  // a fresh validity window AND so confirmTransaction's expiration check
@@ -458,7 +458,7 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
458
458
  signAndSendTransaction(transaction, options) {
459
459
  return _tslib.__awaiter(this, void 0, void 0, function* () {
460
460
  if (!this.turnkeyAddress)
461
- throw new utils.DynamicError('Solana wallet not found');
461
+ throw new utils.DynamicError('Solana wallet not found', 'solana_wallet_not_found');
462
462
  const optimizedTransaction = yield this.optimizeTransaction(transaction);
463
463
  const uiTransaction = new solanaCore.SolanaUiTransaction({
464
464
  connection: this.getConnection('confirmed'),
@@ -474,9 +474,9 @@ class TurnkeySolanaWalletConnector extends embeddedWallet.TurnkeyWalletConnector
474
474
  return _tslib.__awaiter(this, arguments, void 0, function* (transaction, connection, options = {}) {
475
475
  var _a;
476
476
  if (!this.turnkeyAddress)
477
- throw new utils.DynamicError('Solana wallet not found');
477
+ throw new utils.DynamicError('Solana wallet not found', 'solana_wallet_not_found');
478
478
  if (!transaction || !connection) {
479
- throw new utils.DynamicError('Transaction and connection are required');
479
+ throw new utils.DynamicError('Transaction and connection are required', 'transaction_and_connection_are_required');
480
480
  }
481
481
  const { signers } = options, sendOptions = _tslib.__rest(options, ["signers"]);
482
482
  const blockhash = yield connection.getLatestBlockhash({
@@ -51,14 +51,14 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
51
51
  getRpcUrl() {
52
52
  const network = this.getSelectedNetwork();
53
53
  if (!network) {
54
- throw new DynamicError('No enabled networks');
54
+ throw new DynamicError('No enabled networks', 'no_enabled_networks');
55
55
  }
56
56
  return getOverrideRpcUrlForNetwork(this.connectionConfig, network);
57
57
  }
58
58
  getConnection(commitmentOrConfig) {
59
59
  const rpcUrl = this.getRpcUrl();
60
60
  if (!rpcUrl)
61
- throw new DynamicError('No rpcUrl');
61
+ throw new DynamicError('No rpcUrl', 'no_rpc_url');
62
62
  const config = typeof commitmentOrConfig === 'string'
63
63
  ? Object.assign(Object.assign({}, this.connectionConfig), { commitment: commitmentOrConfig }) : Object.assign(Object.assign({}, this.connectionConfig), commitmentOrConfig);
64
64
  return createSolanaConnection(rpcUrl, config);
@@ -169,7 +169,7 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
169
169
  if (!isWalletActive) {
170
170
  const targetActiveAccount = (_b = this.verifiedCredentials) === null || _b === void 0 ? void 0 : _b.find((vc) => (vc === null || vc === void 0 ? void 0 : vc.address) === expectedAddress);
171
171
  if (!targetActiveAccount) {
172
- throw new DynamicError('Account not found');
172
+ throw new DynamicError('Account not found', 'account_not_found');
173
173
  }
174
174
  this.verifiedCredential = targetActiveAccount;
175
175
  this.refreshTurnkeyAccount();
@@ -237,7 +237,7 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
237
237
  signUint8ArrayMessage(encodedMessage) {
238
238
  return __awaiter(this, void 0, void 0, function* () {
239
239
  if (!this.turnkeyAddress) {
240
- throw new DynamicError('No turnkey account');
240
+ throw new DynamicError('No turnkey account', 'no_turnkey_account');
241
241
  }
242
242
  const address = this.turnkeyAddress;
243
243
  let signedMessageRaw;
@@ -326,7 +326,7 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
326
326
  signTransaction(transaction) {
327
327
  return __awaiter(this, void 0, void 0, function* () {
328
328
  if (!this.turnkeyAddress)
329
- throw new DynamicError('No turnkey account');
329
+ throw new DynamicError('No turnkey account', 'no_turnkey_account');
330
330
  const uiTransaction = new SolanaUiTransaction({
331
331
  connection: this.getConnection('confirmed'),
332
332
  from: this.turnkeyAddress,
@@ -399,7 +399,7 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
399
399
  signAllTransactions(transactions) {
400
400
  return __awaiter(this, void 0, void 0, function* () {
401
401
  if (!this.turnkeyAddress)
402
- throw new DynamicError('No turnkey account');
402
+ throw new DynamicError('No turnkey account', 'no_turnkey_account');
403
403
  const uiTransaction = new SolanaUiTransaction({
404
404
  connection: this.getConnection('confirmed'),
405
405
  from: this.turnkeyAddress,
@@ -413,7 +413,7 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
413
413
  return __awaiter(this, void 0, void 0, function* () {
414
414
  var _a, _b;
415
415
  if (!this.turnkeyAddress)
416
- throw new DynamicError('Solana wallet not found');
416
+ throw new DynamicError('Solana wallet not found', 'solana_wallet_not_found');
417
417
  const currentConnection = this.getConnection((_b = (_a = this.connectionConfig) === null || _a === void 0 ? void 0 : _a.commitment) !== null && _b !== void 0 ? _b : 'confirmed');
418
418
  // Refresh the blockhash right before signing so the tx is submitted with
419
419
  // a fresh validity window AND so confirmTransaction's expiration check
@@ -454,7 +454,7 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
454
454
  signAndSendTransaction(transaction, options) {
455
455
  return __awaiter(this, void 0, void 0, function* () {
456
456
  if (!this.turnkeyAddress)
457
- throw new DynamicError('Solana wallet not found');
457
+ throw new DynamicError('Solana wallet not found', 'solana_wallet_not_found');
458
458
  const optimizedTransaction = yield this.optimizeTransaction(transaction);
459
459
  const uiTransaction = new SolanaUiTransaction({
460
460
  connection: this.getConnection('confirmed'),
@@ -470,9 +470,9 @@ class TurnkeySolanaWalletConnector extends TurnkeyWalletConnectorBase {
470
470
  return __awaiter(this, arguments, void 0, function* (transaction, connection, options = {}) {
471
471
  var _a;
472
472
  if (!this.turnkeyAddress)
473
- throw new DynamicError('Solana wallet not found');
473
+ throw new DynamicError('Solana wallet not found', 'solana_wallet_not_found');
474
474
  if (!transaction || !connection) {
475
- throw new DynamicError('Transaction and connection are required');
475
+ throw new DynamicError('Transaction and connection are required', 'transaction_and_connection_are_required');
476
476
  }
477
477
  const { signers } = options, sendOptions = __rest(options, ["signers"]);
478
478
  const blockhash = yield connection.getLatestBlockhash({