@dynamic-labs/stellar 4.91.2 → 4.91.4

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,24 @@
1
1
 
2
+ ### [4.91.4](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.3...v4.91.4) (2026-07-01)
3
+
4
+
5
+ ### Bug Fixes
6
+
7
+ * 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))
8
+ * 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))
9
+
10
+ ### [4.91.3](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.2...v4.91.3) (2026-06-30)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **bitcoin:** detect late-registering wallet-standard wallets (DYNT-1210) ([#11747](https://github.com/dynamic-labs/dynamic-auth/issues/11747)) ([17809f6](https://github.com/dynamic-labs/dynamic-auth/commit/17809f6e811fe101367cc31a2d899a8d0b0d107e))
16
+ * fetch onramp providers lazily instead of eagerly on mount ([#11767](https://github.com/dynamic-labs/dynamic-auth/issues/11767)) ([3ee6708](https://github.com/dynamic-labs/dynamic-auth/commit/3ee67087142ae1942f865e0ab37b7108700b3327))
17
+ * **iframe-setup:** sync parent URL to iframe on pushState/replaceState ([#11751](https://github.com/dynamic-labs/dynamic-auth/issues/11751)) ([c8be3af](https://github.com/dynamic-labs/dynamic-auth/commit/c8be3afc301f77b349f23398bed940ce40f93b73))
18
+ * **nonce:** fetch nonce on demand when missing before wallet verification ([#11753](https://github.com/dynamic-labs/dynamic-auth/issues/11753)) ([4f01a21](https://github.com/dynamic-labs/dynamic-auth/commit/4f01a21b6081c852f32868c8a5e04d70aaf280a2)), closes [#1](https://github.com/dynamic-labs/dynamic-auth/issues/1)
19
+ * **react-native-extension:** arm loading timer before setUrl to cover pre-onLoadStart gap ([#11764](https://github.com/dynamic-labs/dynamic-auth/issues/11764)) ([31f2015](https://github.com/dynamic-labs/dynamic-auth/commit/31f20151a4b59279f9c133b723e50de771b06436))
20
+ * **webview-controller:** unwrap ZeroDev smart wallet for native gasless ([#11758](https://github.com/dynamic-labs/dynamic-auth/issues/11758)) ([989714e](https://github.com/dynamic-labs/dynamic-auth/commit/989714e414556868c8e0c54401aac1ed7354331b))
21
+
2
22
  ### [4.91.2](https://github.com/dynamic-labs/dynamic-auth/compare/v4.91.1...v4.91.2) (2026-06-26)
3
23
 
4
24
 
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.2";
6
+ var version = "4.91.4";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.91.2";
2
+ var version = "4.91.4";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/stellar",
3
- "version": "4.91.2",
3
+ "version": "4.91.4",
4
4
  "description": "A React SDK for implementing Stellar wallet web3 authentication and authorization to your website.",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -21,15 +21,15 @@
21
21
  "@dynamic-labs-sdk/client": "1.12.1",
22
22
  "@dynamic-labs/sdk-api-core": "0.0.1046",
23
23
  "@stellar/stellar-sdk": "14.4.3",
24
- "@dynamic-labs/wallet-connector-core": "4.91.2",
25
- "@dynamic-labs/assert-package-version": "4.91.2",
24
+ "@dynamic-labs/wallet-connector-core": "4.91.4",
25
+ "@dynamic-labs/assert-package-version": "4.91.4",
26
26
  "@lobstrco/signer-extension-api": "2.0.0",
27
27
  "@stellar/freighter-api": "6.0.1",
28
- "@dynamic-labs/logger": "4.91.2",
29
- "@dynamic-labs/types": "4.91.2",
30
- "@dynamic-labs/utils": "4.91.2",
31
- "@dynamic-labs/waas": "4.91.2",
32
- "@dynamic-labs/wallet-book": "4.91.2",
28
+ "@dynamic-labs/logger": "4.91.4",
29
+ "@dynamic-labs/types": "4.91.4",
30
+ "@dynamic-labs/utils": "4.91.4",
31
+ "@dynamic-labs/waas": "4.91.4",
32
+ "@dynamic-labs/wallet-book": "4.91.4",
33
33
  "eventemitter3": "5.0.1"
34
34
  },
35
35
  "peerDependencies": {}
@@ -100,7 +100,7 @@ class DynamicWaasStellarConnector extends waas.withDynamicWaas(StellarWalletConn
100
100
  var _a;
101
101
  const signedSessionId = yield ((_a = this.getSignedSessionId) === null || _a === void 0 ? void 0 : _a.call(this));
102
102
  if (!signedSessionId) {
103
- throw new utils.DynamicError('Signed session ID is required');
103
+ throw new utils.DynamicError('Signed session ID is required', 'signed_session_id_is_required');
104
104
  }
105
105
  return signedSessionId;
106
106
  });
@@ -122,7 +122,7 @@ class DynamicWaasStellarConnector extends waas.withDynamicWaas(StellarWalletConn
122
122
  signedSessionId,
123
123
  });
124
124
  if (!targetWallet) {
125
- throw new utils.DynamicError('Account not found');
125
+ throw new utils.DynamicError('Account not found', 'account_not_found');
126
126
  }
127
127
  const isWalletActive = walletConnectorCore.isSameAddress(targetWallet.accountAddress, this.activeAccountAddress || '', this.connectedChain);
128
128
  if (!isWalletActive) {
@@ -189,7 +189,7 @@ class DynamicWaasStellarConnector extends waas.withDynamicWaas(StellarWalletConn
189
189
  this.ensureActiveAccountFromVerifiedCredentials();
190
190
  const walletClient = yield this.getWaasWalletClient();
191
191
  if (!this.activeAccountAddress) {
192
- throw new utils.DynamicError('Active account address is required');
192
+ throw new utils.DynamicError('Active account address is required', 'active_account_address_is_required');
193
193
  }
194
194
  const signedSessionId = yield this.requireSignedSessionId();
195
195
  const mfaToken = yield ((_a = this.getMfaToken) === null || _a === void 0 ? void 0 : _a.call(this, {
@@ -248,7 +248,7 @@ class DynamicWaasStellarConnector extends waas.withDynamicWaas(StellarWalletConn
248
248
  return _tslib.__awaiter(this, void 0, void 0, function* () {
249
249
  var _a, _b, _c;
250
250
  if (!this.activeAccountAddress) {
251
- throw new utils.DynamicError('Active account address is required');
251
+ throw new utils.DynamicError('Active account address is required', 'active_account_address_is_required');
252
252
  }
253
253
  const walletClient = yield this.getWaasWalletClient();
254
254
  const signedSessionId = yield this.requireSignedSessionId();
@@ -296,7 +296,7 @@ class DynamicWaasStellarConnector extends waas.withDynamicWaas(StellarWalletConn
296
296
  const horizonServer = yield this.getHorizonServer();
297
297
  const networkPassphrase = yield this.getNetworkPassphrase();
298
298
  if (!horizonServer) {
299
- throw new utils.DynamicError('No Horizon server available');
299
+ throw new utils.DynamicError('No Horizon server available', 'no_horizon_server_available');
300
300
  }
301
301
  return new StellarUiTransaction.StellarUiTransaction({
302
302
  from,
@@ -304,7 +304,7 @@ class DynamicWaasStellarConnector extends waas.withDynamicWaas(StellarWalletConn
304
304
  networkPassphrase,
305
305
  onSubmit: (transaction) => _tslib.__awaiter(this, void 0, void 0, function* () {
306
306
  if (!transaction) {
307
- throw new utils.DynamicError('Transaction must be provided');
307
+ throw new utils.DynamicError('Transaction must be provided', 'transaction_must_be_provided');
308
308
  }
309
309
  const signedXdr = yield this.signTransaction(transaction.toXDR());
310
310
  const signedTransaction = stellarSdk.TransactionBuilder.fromXDR(signedXdr, networkPassphrase);
@@ -80,7 +80,12 @@ declare const DynamicWaasStellarConnector_base: (abstract new (...args: any[]) =
80
80
  thresholdSignatureScheme?: string | undefined;
81
81
  publicAddressCheck?: string | undefined;
82
82
  addressType?: string | undefined;
83
- legacyWalletId?: string | undefined;
83
+ legacyWalletId?: string | undefined; /**
84
+ * Validates that the expected wallet address matches the active wallet
85
+ * Updates the active account address if it doesn't match
86
+ * @param expectedAddress - The expected wallet address to validate
87
+ * @throws {DynamicError} If signed session ID is not available or account is not found
88
+ */
84
89
  password?: string | undefined;
85
90
  }): Promise<void>;
86
91
  migrateFromFireblocks({ deviceId, jwt, walletPassword, ncwStorage, expectedAddresses, coinTypes, password, }: {
@@ -142,6 +147,13 @@ declare const DynamicWaasStellarConnector_base: (abstract new (...args: any[]) =
142
147
  }): Promise<void>;
143
148
  setPassword({ accountAddress, newPassword, }: {
144
149
  accountAddress: string;
150
+ /**
151
+ * Internal method to sign a message with MFA token
152
+ * @param message - The message to sign
153
+ * @returns The signed message as a string
154
+ * @throws {DynamicError} If active account address is not set
155
+ * @throws {DynamicError} If signed session ID is not available
156
+ */
145
157
  newPassword: string;
146
158
  }): Promise<void>;
147
159
  signRawMessage({ accountAddress, message, password, }: {
@@ -96,7 +96,7 @@ class DynamicWaasStellarConnector extends withDynamicWaas(StellarWalletConnector
96
96
  var _a;
97
97
  const signedSessionId = yield ((_a = this.getSignedSessionId) === null || _a === void 0 ? void 0 : _a.call(this));
98
98
  if (!signedSessionId) {
99
- throw new DynamicError('Signed session ID is required');
99
+ throw new DynamicError('Signed session ID is required', 'signed_session_id_is_required');
100
100
  }
101
101
  return signedSessionId;
102
102
  });
@@ -118,7 +118,7 @@ class DynamicWaasStellarConnector extends withDynamicWaas(StellarWalletConnector
118
118
  signedSessionId,
119
119
  });
120
120
  if (!targetWallet) {
121
- throw new DynamicError('Account not found');
121
+ throw new DynamicError('Account not found', 'account_not_found');
122
122
  }
123
123
  const isWalletActive = isSameAddress(targetWallet.accountAddress, this.activeAccountAddress || '', this.connectedChain);
124
124
  if (!isWalletActive) {
@@ -185,7 +185,7 @@ class DynamicWaasStellarConnector extends withDynamicWaas(StellarWalletConnector
185
185
  this.ensureActiveAccountFromVerifiedCredentials();
186
186
  const walletClient = yield this.getWaasWalletClient();
187
187
  if (!this.activeAccountAddress) {
188
- throw new DynamicError('Active account address is required');
188
+ throw new DynamicError('Active account address is required', 'active_account_address_is_required');
189
189
  }
190
190
  const signedSessionId = yield this.requireSignedSessionId();
191
191
  const mfaToken = yield ((_a = this.getMfaToken) === null || _a === void 0 ? void 0 : _a.call(this, {
@@ -244,7 +244,7 @@ class DynamicWaasStellarConnector extends withDynamicWaas(StellarWalletConnector
244
244
  return __awaiter(this, void 0, void 0, function* () {
245
245
  var _a, _b, _c;
246
246
  if (!this.activeAccountAddress) {
247
- throw new DynamicError('Active account address is required');
247
+ throw new DynamicError('Active account address is required', 'active_account_address_is_required');
248
248
  }
249
249
  const walletClient = yield this.getWaasWalletClient();
250
250
  const signedSessionId = yield this.requireSignedSessionId();
@@ -292,7 +292,7 @@ class DynamicWaasStellarConnector extends withDynamicWaas(StellarWalletConnector
292
292
  const horizonServer = yield this.getHorizonServer();
293
293
  const networkPassphrase = yield this.getNetworkPassphrase();
294
294
  if (!horizonServer) {
295
- throw new DynamicError('No Horizon server available');
295
+ throw new DynamicError('No Horizon server available', 'no_horizon_server_available');
296
296
  }
297
297
  return new StellarUiTransaction({
298
298
  from,
@@ -300,7 +300,7 @@ class DynamicWaasStellarConnector extends withDynamicWaas(StellarWalletConnector
300
300
  networkPassphrase,
301
301
  onSubmit: (transaction) => __awaiter(this, void 0, void 0, function* () {
302
302
  if (!transaction) {
303
- throw new DynamicError('Transaction must be provided');
303
+ throw new DynamicError('Transaction must be provided', 'transaction_must_be_provided');
304
304
  }
305
305
  const signedXdr = yield this.signTransaction(transaction.toXDR());
306
306
  const signedTransaction = TransactionBuilder.fromXDR(signedXdr, networkPassphrase);
@@ -139,7 +139,7 @@ class StellarWalletConnector extends walletConnectorCore.WalletConnectorBase {
139
139
  try {
140
140
  const provider = this.getProvider();
141
141
  if (!provider) {
142
- throw new utils.DynamicError('No Stellar provider found');
142
+ throw new utils.DynamicError('No Stellar provider found', 'no_stellar_provider_found');
143
143
  }
144
144
  const publicKey = yield provider.connect();
145
145
  // Check if disconnect was called while we were waiting for provider.connect()
@@ -160,7 +160,7 @@ class StellarWalletConnector extends walletConnectorCore.WalletConnectorBase {
160
160
  }
161
161
  catch (error) {
162
162
  this.logger.error('[connect] Connection failed:', error);
163
- throw new utils.DynamicError('Failed to connect to Stellar wallet');
163
+ throw new utils.DynamicError('Failed to connect to Stellar wallet', 'connect_to_stellar_wallet');
164
164
  }
165
165
  finally {
166
166
  this.isConnecting = false;
@@ -211,7 +211,7 @@ class StellarWalletConnector extends walletConnectorCore.WalletConnectorBase {
211
211
  return _tslib.__awaiter(this, void 0, void 0, function* () {
212
212
  const provider = this.getProvider();
213
213
  if (!provider) {
214
- throw new utils.DynamicError('No Stellar provider found');
214
+ throw new utils.DynamicError('No Stellar provider found', 'no_stellar_provider_found');
215
215
  }
216
216
  const network = yield this.getNetwork();
217
217
  const networkPassphrase = yield this.getNetworkPassphrase();
@@ -230,7 +230,7 @@ class StellarWalletConnector extends walletConnectorCore.WalletConnectorBase {
230
230
  return _tslib.__awaiter(this, void 0, void 0, function* () {
231
231
  const address = yield this.getAddress();
232
232
  if (!address) {
233
- throw new utils.DynamicError('No connected address for hardware wallet signing');
233
+ throw new utils.DynamicError('No connected address for hardware wallet signing', 'no_connected_address_for_hardware_wallet');
234
234
  }
235
235
  const horizonServer = yield this.getHorizonServer();
236
236
  const networkPassphrase = yield this.getNetworkPassphrase();
@@ -516,7 +516,7 @@ class StellarWalletConnector extends walletConnectorCore.WalletConnectorBase {
516
516
  const horizonServer = yield this.getHorizonServer();
517
517
  const networkPassphrase = yield this.getNetworkPassphrase();
518
518
  if (!horizonServer) {
519
- throw new utils.DynamicError('No Horizon server available');
519
+ throw new utils.DynamicError('No Horizon server available', 'no_horizon_server_available');
520
520
  }
521
521
  return new StellarUiTransaction.StellarUiTransaction({
522
522
  from,
@@ -524,7 +524,7 @@ class StellarWalletConnector extends walletConnectorCore.WalletConnectorBase {
524
524
  networkPassphrase,
525
525
  onSubmit: (transaction) => _tslib.__awaiter(this, void 0, void 0, function* () {
526
526
  if (!transaction) {
527
- throw new utils.DynamicError('Transaction must be provided');
527
+ throw new utils.DynamicError('Transaction must be provided', 'transaction_must_be_provided');
528
528
  }
529
529
  const signedXdr = yield this.signTransaction(transaction.toXDR());
530
530
  const signedTransaction = stellarSdk.TransactionBuilder.fromXDR(signedXdr, networkPassphrase);
@@ -135,7 +135,7 @@ class StellarWalletConnector extends WalletConnectorBase {
135
135
  try {
136
136
  const provider = this.getProvider();
137
137
  if (!provider) {
138
- throw new DynamicError('No Stellar provider found');
138
+ throw new DynamicError('No Stellar provider found', 'no_stellar_provider_found');
139
139
  }
140
140
  const publicKey = yield provider.connect();
141
141
  // Check if disconnect was called while we were waiting for provider.connect()
@@ -156,7 +156,7 @@ class StellarWalletConnector extends WalletConnectorBase {
156
156
  }
157
157
  catch (error) {
158
158
  this.logger.error('[connect] Connection failed:', error);
159
- throw new DynamicError('Failed to connect to Stellar wallet');
159
+ throw new DynamicError('Failed to connect to Stellar wallet', 'connect_to_stellar_wallet');
160
160
  }
161
161
  finally {
162
162
  this.isConnecting = false;
@@ -207,7 +207,7 @@ class StellarWalletConnector extends WalletConnectorBase {
207
207
  return __awaiter(this, void 0, void 0, function* () {
208
208
  const provider = this.getProvider();
209
209
  if (!provider) {
210
- throw new DynamicError('No Stellar provider found');
210
+ throw new DynamicError('No Stellar provider found', 'no_stellar_provider_found');
211
211
  }
212
212
  const network = yield this.getNetwork();
213
213
  const networkPassphrase = yield this.getNetworkPassphrase();
@@ -226,7 +226,7 @@ class StellarWalletConnector extends WalletConnectorBase {
226
226
  return __awaiter(this, void 0, void 0, function* () {
227
227
  const address = yield this.getAddress();
228
228
  if (!address) {
229
- throw new DynamicError('No connected address for hardware wallet signing');
229
+ throw new DynamicError('No connected address for hardware wallet signing', 'no_connected_address_for_hardware_wallet');
230
230
  }
231
231
  const horizonServer = yield this.getHorizonServer();
232
232
  const networkPassphrase = yield this.getNetworkPassphrase();
@@ -512,7 +512,7 @@ class StellarWalletConnector extends WalletConnectorBase {
512
512
  const horizonServer = yield this.getHorizonServer();
513
513
  const networkPassphrase = yield this.getNetworkPassphrase();
514
514
  if (!horizonServer) {
515
- throw new DynamicError('No Horizon server available');
515
+ throw new DynamicError('No Horizon server available', 'no_horizon_server_available');
516
516
  }
517
517
  return new StellarUiTransaction({
518
518
  from,
@@ -520,7 +520,7 @@ class StellarWalletConnector extends WalletConnectorBase {
520
520
  networkPassphrase,
521
521
  onSubmit: (transaction) => __awaiter(this, void 0, void 0, function* () {
522
522
  if (!transaction) {
523
- throw new DynamicError('Transaction must be provided');
523
+ throw new DynamicError('Transaction must be provided', 'transaction_must_be_provided');
524
524
  }
525
525
  const signedXdr = yield this.signTransaction(transaction.toXDR());
526
526
  const signedTransaction = TransactionBuilder.fromXDR(signedXdr, networkPassphrase);