@dynamic-labs-wallet/browser 1.0.81 → 1.0.82

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/index.cjs CHANGED
@@ -7,8 +7,8 @@ var primitives = require('@dynamic-labs-wallet/primitives');
7
7
  var sdkApiCore = require('@dynamic-labs/sdk-api-core');
8
8
  var loadArgon2idWasm = require('argon2id');
9
9
  var axios = require('axios');
10
- var PQueue = require('p-queue');
11
10
  var gte = require('semver/functions/gte');
11
+ var PQueue = require('p-queue');
12
12
 
13
13
  function _extends() {
14
14
  _extends = Object.assign || function assign(target) {
@@ -463,6 +463,237 @@ class EncryptionSelfTestFailedError extends Error {
463
463
  }
464
464
  }
465
465
 
466
+ /**
467
+ * Extracts the HTTP status from an `AxiosError`, or `undefined` for non-HTTP
468
+ * errors. Lives in its own leaf module (no `#internal/web` / WASM imports) so
469
+ * lightweight consumers like `services/signedSession.ts` can use it without
470
+ * pulling the MPC WASM bundle that `utils.ts` loads.
471
+ */ const getHttpStatus = (error)=>{
472
+ var _error_response;
473
+ return error instanceof axios.AxiosError ? (_error_response = error.response) == null ? void 0 : _error_response.status : undefined;
474
+ };
475
+
476
+ const STORAGE_KEY = 'dynamic-waas-wallet-client';
477
+ const BACKUP_FILENAME = 'dynamicWalletKeyShareBackup.json';
478
+ const CLIENT_KEYSHARE_EXPORT_FILENAME_PREFIX = 'dynamicWalletKeyShareBackup';
479
+ const SIGNED_SESSION_ID_MIN_VERSION = '4.25.4';
480
+ // Namespace-specific version requirements
481
+ const SIGNED_SESSION_ID_MIN_VERSION_BY_NAMESPACE = {
482
+ WalletKit: '4.25.4',
483
+ ClientSDK: '0.1.0-alpha.0'
484
+ };
485
+ // Minimum SDK version that forwards `getSignedSessionId` to the iframe's postMessage
486
+ // reverse channel, distinct from SIGNED_SESSION_ID_MIN_VERSION above (which only
487
+ // gates whether a signed session value is sent at all).
488
+ // WalletKit: dynamic-auth#10577 (v4.74.0). ClientSDK: dynamic-js-sdk#1937 (v1.12.1).
489
+ const SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION = '4.74.0';
490
+ const SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION_BY_NAMESPACE = {
491
+ WalletKit: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION,
492
+ ClientSDK: '1.12.1'
493
+ };
494
+ const ROOM_EXPIRATION_TIME = 1000 * 60 * 10; // 10 minutes
495
+ const ROOM_CACHE_COUNT = 5;
496
+ const ENVIRONMENT_SETTINGS_STORAGE_KEY = 'dynamic_environment_settings';
497
+
498
+ function meetsMinVersion(sdkVersion, { minVersionByNamespace, fallbackMinVersion, label }, logger) {
499
+ if (!sdkVersion) {
500
+ return false;
501
+ }
502
+ try {
503
+ const parsedVersion = core.parseNamespacedVersion(sdkVersion);
504
+ if (!parsedVersion) {
505
+ return false;
506
+ }
507
+ const { namespace, version } = parsedVersion;
508
+ var _minVersionByNamespace_namespace;
509
+ return gte(version, (_minVersionByNamespace_namespace = minVersionByNamespace[namespace]) != null ? _minVersionByNamespace_namespace : fallbackMinVersion);
510
+ } catch (error) {
511
+ logger.warn(`[DynamicWaasWalletClient] Error checking ${label} for version ${sdkVersion}`, {
512
+ error: error instanceof Error ? error.message : String(error)
513
+ });
514
+ return false;
515
+ }
516
+ }
517
+ /** Whether the given SDK version requires a signed session ID to be sent at all. */ function isRequiresSignedSessionId(sdkVersion, logger) {
518
+ return meetsMinVersion(sdkVersion, {
519
+ minVersionByNamespace: SIGNED_SESSION_ID_MIN_VERSION_BY_NAMESPACE,
520
+ fallbackMinVersion: SIGNED_SESSION_ID_MIN_VERSION,
521
+ label: 'requiresSignedSessionId'
522
+ }, logger);
523
+ }
524
+ /**
525
+ * Whether the SDK version is known to forward `getSignedSessionId` to the iframe's
526
+ * postMessage reverse channel — stricter than {@link isRequiresSignedSessionId},
527
+ * which only checks whether a session value is sent at all.
528
+ */ function isReverseChannelSupported(sdkVersion, logger) {
529
+ return meetsMinVersion(sdkVersion, {
530
+ minVersionByNamespace: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION_BY_NAMESPACE,
531
+ fallbackMinVersion: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION,
532
+ label: 'supportsReverseChannel'
533
+ }, logger);
534
+ }
535
+
536
+ /**
537
+ * Datadog event name emitted on every signed-session nonce rejection (a 400 or
538
+ * 401 from the backup/recovery endpoints). Log-only: lets us split the failure
539
+ * bucket by `reason` and measure the true per-wallet unrecoverable rate
540
+ * without changing any retry behavior. See DYNT-1599.
541
+ */ const NONCE_FAILURE_EVENT = 'waas.signed_session.nonce_failure';
542
+ /**
543
+ * Reasons that represent a genuine session-key signature mismatch (the 401 the
544
+ * server returns per DYNT-1282). Used to gate 401 instrumentation so callers
545
+ * that reuse 401 for unrelated rejections don't pollute the failure metric.
546
+ */ const SESSION_SIGNATURE_FAILURE_REASONS = new Set([
547
+ 'invalid_nonce_signature',
548
+ 'invalid_session_signature'
549
+ ]);
550
+ /** Best-effort extraction of the server error `code`/`message` from a 4xx body. */ const readErrorBody = (error)=>{
551
+ var _error_response;
552
+ if (!(error instanceof axios.AxiosError)) {
553
+ return {};
554
+ }
555
+ const data = (_error_response = error.response) == null ? void 0 : _error_response.data;
556
+ if (typeof data === 'string') {
557
+ return {
558
+ message: data
559
+ };
560
+ }
561
+ if (!data || typeof data !== 'object') {
562
+ return {};
563
+ }
564
+ const record = data;
565
+ // Prefer a string `code`, else fall back to `error_code` (the field the Key
566
+ // Share Service emits, see KSS #271) or a bare `error`.
567
+ const code = [
568
+ record['code'],
569
+ record['error_code'],
570
+ record['error']
571
+ ].find((value)=>typeof value === 'string');
572
+ const message = typeof record['message'] === 'string' ? record['message'] : undefined;
573
+ return {
574
+ code,
575
+ message
576
+ };
577
+ };
578
+ /** Maps the server error `code`/`message` onto a {@link NonceFailureReason}. */ const classifyNonceFailure = ({ code, message })=>{
579
+ const haystack = `${code != null ? code : ''} ${message != null ? message : ''}`.toLowerCase();
580
+ if (haystack.includes('already_used') || haystack.includes('already used') || haystack.includes('consumption failed')) {
581
+ return 'nonce_already_used';
582
+ }
583
+ if (haystack.includes('invalid_nonce_signature') || haystack.includes('invalid nonce signature')) {
584
+ return 'invalid_nonce_signature';
585
+ }
586
+ if (haystack.includes('invalid_session_signature') || haystack.includes('invalid session public key') || haystack.includes('invalid session signature')) {
587
+ return 'invalid_session_signature';
588
+ }
589
+ return 'other';
590
+ };
591
+ /**
592
+ * Owns everything about signed sessions and their single-use replay nonces:
593
+ * resolving a session from an explicit value or the host reverse channel,
594
+ * deciding whether the SDK version requires one, and building the
595
+ * refresh-on-replay-400 retry predicate shared by the backup and recovery
596
+ * flows.
597
+ *
598
+ * Extracted from `DynamicWalletClient` so this logic can be exercised in
599
+ * isolation. The host callback is read lazily (`getCallback`) so it stays in
600
+ * sync with the owning client even if reassigned after construction.
601
+ */ class SignedSessionManager {
602
+ /** True when a reverse channel is configured to mint fresh signed sessions. */ get canRefresh() {
603
+ return this.getCallback() !== undefined;
604
+ }
605
+ /**
606
+ * Resolves the signed session ID from an explicit value or falls back to the
607
+ * host reverse channel. Throws if neither source provides a value.
608
+ */ async resolve(signedSessionId) {
609
+ const callback = this.getCallback();
610
+ const resolved = signedSessionId != null ? signedSessionId : await (callback == null ? void 0 : callback());
611
+ if (!resolved) {
612
+ throw new Error(signedSessionId === undefined && callback ? 'signedSessionId callback returned an invalid value' : 'signedSessionId is required for backup but was not provided and no callback is configured');
613
+ }
614
+ return resolved;
615
+ }
616
+ /** Whether the configured SDK version requires a signed session ID. */ isRequired() {
617
+ return this.required;
618
+ }
619
+ /** Whether the host SDK version supports the getSignedSessionId reverse channel (see version-check.ts). */ supportsReverseChannel() {
620
+ return this.reverseChannelSupported;
621
+ }
622
+ /**
623
+ * Builds a `retryPromise` `shouldRetry` predicate that refreshes a consumed
624
+ * single-use nonce via the reverse channel on a replay 400 and retries once.
625
+ * The signed session carries a single-use replay nonce: it is valid on its
626
+ * first use, but once consumed (e.g. by a preceding operation) the server
627
+ * rejects with a 400, at which point a fresh session is fetched and the call
628
+ * retried. `alsoRetry` lets callers opt into additional retryable statuses
629
+ * (e.g. 429 / 5xx) on top of the nonce refresh.
630
+ */ refreshShouldRetry({ onRefreshed, operationName, logContext, alsoRetry }) {
631
+ return async (error, attempt)=>{
632
+ const status = getHttpStatus(error);
633
+ // A 400 is a refreshable replay nonce; a 401 is a session-key mismatch the
634
+ // server returns to break the refresh loop (DYNT-1282) — logged only when the
635
+ // body classifies as a genuine session-signature failure so unrelated 401s
636
+ // (e.g. an exhausted add-signer grant) don't pollute the DYNT-1599 metric.
637
+ // Only the 400 can actually refresh.
638
+ const isSessionSignatureFailure = status === 401 && SESSION_SIGNATURE_FAILURE_REASONS.has(classifyNonceFailure(readErrorBody(error)));
639
+ const shouldInstrument = status === 400 || isSessionSignatureFailure;
640
+ if (shouldInstrument) {
641
+ const willRefresh = status === 400 && attempt === 1 && this.canRefresh && this.supportsReverseChannel();
642
+ this.instrumentNonceFailure({
643
+ error,
644
+ attempt,
645
+ status,
646
+ operationName,
647
+ willRefresh,
648
+ logContext
649
+ });
650
+ }
651
+ if (status === 400 && attempt === 1 && this.canRefresh) {
652
+ // canRefresh only proves a local callback exists, not that the host answers it.
653
+ if (!this.supportsReverseChannel()) {
654
+ this.logger.warn(`[${operationName}] host SDK version predates the signed-session reverse channel, declining nonce refresh`, _extends({
655
+ status
656
+ }, logContext));
657
+ return alsoRetry ? alsoRetry(status) : false;
658
+ }
659
+ onRefreshed(await this.resolve());
660
+ this.logger.info(`[${operationName}] refreshed signed session, retrying`, _extends({
661
+ status
662
+ }, logContext));
663
+ return true;
664
+ }
665
+ return alsoRetry ? alsoRetry(status) : false;
666
+ };
667
+ }
668
+ /**
669
+ * Emits a single Datadog log per signed-session nonce rejection so the
670
+ * failure bucket can be split by `reason` and correlated per wallet/request.
671
+ * Purely observational — it never alters the retry decision.
672
+ */ instrumentNonceFailure({ error, attempt, status, operationName, willRefresh, logContext }) {
673
+ const body = readErrorBody(error);
674
+ this.logger.info(NONCE_FAILURE_EVENT, _extends({}, logContext, {
675
+ operationName,
676
+ attempt,
677
+ status,
678
+ reason: classifyNonceFailure(body),
679
+ errorCode: body.code,
680
+ errorMessage: body.message,
681
+ willRefresh,
682
+ canRefresh: this.canRefresh,
683
+ reverseChannelSupported: this.reverseChannelSupported,
684
+ required: this.required,
685
+ sdkVersion: this.sdkVersion
686
+ }));
687
+ }
688
+ constructor({ logger, sdkVersion, getCallback }){
689
+ this.logger = logger;
690
+ this.getCallback = getCallback;
691
+ this.sdkVersion = sdkVersion;
692
+ this.required = isRequiresSignedSessionId(sdkVersion, this.logger);
693
+ this.reverseChannelSupported = isReverseChannelSupported(sdkVersion, this.logger);
694
+ }
695
+ }
696
+
466
697
  const ERROR_NO_KEY_SHARES_BACKED_UP = 'No key shares were backed up to Dynamic backend';
467
698
  const ERROR_KEYGEN_FAILED = '[DynamicWaasWalletClient]: Error with keygen';
468
699
  const ERROR_CREATE_WALLET_ACCOUNT = '[DynamicWaasWalletClient]: Error creating wallet account';
@@ -555,6 +786,10 @@ const ERROR_WALLETS_ALREADY_ENCRYPTED = '[DynamicWaasWalletClient]: Cannot set p
555
786
  */ const USER_ACTIONABLE_PASSWORD_BACKUP_ERROR_REASONS = {
556
787
  wrong_password: true,
557
788
  stale_local_shares: false,
789
+ nonce_already_used: false,
790
+ invalid_nonce_signature: false,
791
+ invalid_session_signature: false,
792
+ signed_session: false,
558
793
  encryption_failure: false,
559
794
  decryption_failure: false,
560
795
  upload_failure: false,
@@ -577,6 +812,30 @@ const FETCH_NETWORK_ERROR_REGEX = /failed to fetch|networkerror|load failed|netw
577
812
  const ENCRYPTION_FAILURE_MESSAGE_PREFIX = 'Error encrypting data:';
578
813
  const DECRYPTION_FAILURE_MESSAGE_PREFIX = 'Decryption failed:';
579
814
  const isStaleSharesError = (error)=>error instanceof StaleLocalSharesError || error instanceof Error && error.name === 'StaleLocalSharesError';
815
+ // The backup/recovery endpoints reject the chaining signature with a 400
816
+ // (stale signed session / replay nonce) or 401 (session-key mismatch,
817
+ // DYNT-1282); the preserved backend code splits those into their precise
818
+ // cause so the failure is actionable instead of a generic `unknown`.
819
+ const SIGNED_SESSION_FAILURE_STATUSES = new Set([
820
+ 400,
821
+ 401
822
+ ]);
823
+ const NONCE_REASON_TO_BACKUP_REASON = {
824
+ nonce_already_used: 'nonce_already_used',
825
+ invalid_nonce_signature: 'invalid_nonce_signature',
826
+ invalid_session_signature: 'invalid_session_signature',
827
+ other: 'signed_session'
828
+ };
829
+ const classifyWalletApiError = (error)=>{
830
+ if (!SIGNED_SESSION_FAILURE_STATUSES.has(error.status)) {
831
+ return 'upload_failure';
832
+ }
833
+ const nonceReason = classifyNonceFailure({
834
+ code: error.code,
835
+ message: error.message
836
+ });
837
+ return NONCE_REASON_TO_BACKUP_REASON[nonceReason];
838
+ };
580
839
  const isNetworkLikeError = (error)=>{
581
840
  if (typeof error !== 'object' || error === null) {
582
841
  return false;
@@ -628,6 +887,12 @@ const computeReason = (error)=>{
628
887
  if (isStaleSharesError(error)) {
629
888
  return 'stale_local_shares';
630
889
  }
890
+ // WalletApiError is a wrapped HTTP failure carrying the resolved status; its
891
+ // message is a generic status string ('Invalid request', etc.) so classify
892
+ // by status ahead of the message-based checks below.
893
+ if (error instanceof core.WalletApiError) {
894
+ return classifyWalletApiError(error);
895
+ }
631
896
  if (error instanceof Error) {
632
897
  if (error.message.includes(ERROR_PASSWORD_MISMATCH) || error.message.includes(ERROR_INCORRECT_PASSWORD)) {
633
898
  return 'wrong_password';
@@ -995,38 +1260,6 @@ const downloadFileFromGoogleDrive = async ({ accessToken, fileName })=>{
995
1260
  }
996
1261
  };
997
1262
 
998
- /**
999
- * Extracts the HTTP status from an `AxiosError`, or `undefined` for non-HTTP
1000
- * errors. Lives in its own leaf module (no `#internal/web` / WASM imports) so
1001
- * lightweight consumers like `services/signedSession.ts` can use it without
1002
- * pulling the MPC WASM bundle that `utils.ts` loads.
1003
- */ const getHttpStatus = (error)=>{
1004
- var _error_response;
1005
- return error instanceof axios.AxiosError ? (_error_response = error.response) == null ? void 0 : _error_response.status : undefined;
1006
- };
1007
-
1008
- const STORAGE_KEY = 'dynamic-waas-wallet-client';
1009
- const BACKUP_FILENAME = 'dynamicWalletKeyShareBackup.json';
1010
- const CLIENT_KEYSHARE_EXPORT_FILENAME_PREFIX = 'dynamicWalletKeyShareBackup';
1011
- const SIGNED_SESSION_ID_MIN_VERSION = '4.25.4';
1012
- // Namespace-specific version requirements
1013
- const SIGNED_SESSION_ID_MIN_VERSION_BY_NAMESPACE = {
1014
- WalletKit: '4.25.4',
1015
- ClientSDK: '0.1.0-alpha.0'
1016
- };
1017
- // Minimum SDK version that forwards `getSignedSessionId` to the iframe's postMessage
1018
- // reverse channel, distinct from SIGNED_SESSION_ID_MIN_VERSION above (which only
1019
- // gates whether a signed session value is sent at all).
1020
- // WalletKit: dynamic-auth#10577 (v4.74.0). ClientSDK: dynamic-js-sdk#1937 (v1.12.1).
1021
- const SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION = '4.74.0';
1022
- const SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION_BY_NAMESPACE = {
1023
- WalletKit: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION,
1024
- ClientSDK: '1.12.1'
1025
- };
1026
- const ROOM_EXPIRATION_TIME = 1000 * 60 * 10; // 10 minutes
1027
- const ROOM_CACHE_COUNT = 5;
1028
- const ENVIRONMENT_SETTINGS_STORAGE_KEY = 'dynamic_environment_settings';
1029
-
1030
1263
  /**
1031
1264
  * Normalizes an address to lowercase for consistent map key lookups.
1032
1265
  * This ensures that addresses with different casing (e.g., EIP-55 checksummed vs lowercase)
@@ -2412,6 +2645,22 @@ const createDynamicOnlyDistribution = ({ allShares })=>({
2412
2645
  /** Track which wallets are currently executing inside a sign operation.
2413
2646
  * Used to prevent deadlocks when recovery is called from within a sign op. */ WalletQueueManager.walletsWithActiveSignOp = new Map();
2414
2647
 
2648
+ // A DYNAMIC backup can persist multiple shares (e.g. 2-of-3); the singular
2649
+ // externalKeyShareId is a fallback for older single-id shapes.
2650
+ const collectDynamicKeyShareIds = (locations)=>{
2651
+ return locations.filter((loc)=>loc.location === core.BackupLocation.DYNAMIC).flatMap((loc)=>{
2652
+ if (loc.externalKeyShareIds && loc.externalKeyShareIds.length > 0) {
2653
+ return loc.externalKeyShareIds;
2654
+ }
2655
+ if (loc.externalKeyShareId) {
2656
+ return [
2657
+ loc.externalKeyShareId
2658
+ ];
2659
+ }
2660
+ return [];
2661
+ });
2662
+ };
2663
+
2415
2664
  // Pure routing helper: maps a completed reshare ceremony's results into the
2416
2665
  // ShareDistribution that storage/publish should follow. Lives outside the
2417
2666
  // client class so it's straightforward to reason about and unit-test
@@ -2612,205 +2861,6 @@ const readEnvironmentSettings = ()=>{
2612
2861
  }
2613
2862
  });
2614
2863
 
2615
- function meetsMinVersion(sdkVersion, { minVersionByNamespace, fallbackMinVersion, label }, logger) {
2616
- if (!sdkVersion) {
2617
- return false;
2618
- }
2619
- try {
2620
- const parsedVersion = core.parseNamespacedVersion(sdkVersion);
2621
- if (!parsedVersion) {
2622
- return false;
2623
- }
2624
- const { namespace, version } = parsedVersion;
2625
- var _minVersionByNamespace_namespace;
2626
- return gte(version, (_minVersionByNamespace_namespace = minVersionByNamespace[namespace]) != null ? _minVersionByNamespace_namespace : fallbackMinVersion);
2627
- } catch (error) {
2628
- logger.warn(`[DynamicWaasWalletClient] Error checking ${label} for version ${sdkVersion}`, {
2629
- error: error instanceof Error ? error.message : String(error)
2630
- });
2631
- return false;
2632
- }
2633
- }
2634
- /** Whether the given SDK version requires a signed session ID to be sent at all. */ function isRequiresSignedSessionId(sdkVersion, logger) {
2635
- return meetsMinVersion(sdkVersion, {
2636
- minVersionByNamespace: SIGNED_SESSION_ID_MIN_VERSION_BY_NAMESPACE,
2637
- fallbackMinVersion: SIGNED_SESSION_ID_MIN_VERSION,
2638
- label: 'requiresSignedSessionId'
2639
- }, logger);
2640
- }
2641
- /**
2642
- * Whether the SDK version is known to forward `getSignedSessionId` to the iframe's
2643
- * postMessage reverse channel — stricter than {@link isRequiresSignedSessionId},
2644
- * which only checks whether a session value is sent at all.
2645
- */ function isReverseChannelSupported(sdkVersion, logger) {
2646
- return meetsMinVersion(sdkVersion, {
2647
- minVersionByNamespace: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION_BY_NAMESPACE,
2648
- fallbackMinVersion: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION,
2649
- label: 'supportsReverseChannel'
2650
- }, logger);
2651
- }
2652
-
2653
- /**
2654
- * Datadog event name emitted on every signed-session nonce rejection (a 400 or
2655
- * 401 from the backup/recovery endpoints). Log-only: lets us split the failure
2656
- * bucket by `reason` and measure the true per-wallet unrecoverable rate
2657
- * without changing any retry behavior. See DYNT-1599.
2658
- */ const NONCE_FAILURE_EVENT = 'waas.signed_session.nonce_failure';
2659
- /**
2660
- * Reasons that represent a genuine session-key signature mismatch (the 401 the
2661
- * server returns per DYNT-1282). Used to gate 401 instrumentation so callers
2662
- * that reuse 401 for unrelated rejections don't pollute the failure metric.
2663
- */ const SESSION_SIGNATURE_FAILURE_REASONS = new Set([
2664
- 'invalid_nonce_signature',
2665
- 'invalid_session_signature'
2666
- ]);
2667
- /** Best-effort extraction of the server error `code`/`message` from a 4xx body. */ const readErrorBody = (error)=>{
2668
- var _error_response;
2669
- if (!(error instanceof axios.AxiosError)) {
2670
- return {};
2671
- }
2672
- const data = (_error_response = error.response) == null ? void 0 : _error_response.data;
2673
- if (typeof data === 'string') {
2674
- return {
2675
- message: data
2676
- };
2677
- }
2678
- if (!data || typeof data !== 'object') {
2679
- return {};
2680
- }
2681
- const record = data;
2682
- // Prefer a string `code`, else fall back to `error_code` (the field the Key
2683
- // Share Service emits, see KSS #271) or a bare `error`.
2684
- const code = [
2685
- record['code'],
2686
- record['error_code'],
2687
- record['error']
2688
- ].find((value)=>typeof value === 'string');
2689
- const message = typeof record['message'] === 'string' ? record['message'] : undefined;
2690
- return {
2691
- code,
2692
- message
2693
- };
2694
- };
2695
- /** Maps the server error `code`/`message` onto a {@link NonceFailureReason}. */ const classifyNonceFailure = ({ code, message })=>{
2696
- const haystack = `${code != null ? code : ''} ${message != null ? message : ''}`.toLowerCase();
2697
- if (haystack.includes('already_used') || haystack.includes('already used') || haystack.includes('consumption failed')) {
2698
- return 'nonce_already_used';
2699
- }
2700
- if (haystack.includes('invalid_nonce_signature') || haystack.includes('invalid nonce signature')) {
2701
- return 'invalid_nonce_signature';
2702
- }
2703
- if (haystack.includes('invalid_session_signature') || haystack.includes('invalid session public key') || haystack.includes('invalid session signature')) {
2704
- return 'invalid_session_signature';
2705
- }
2706
- return 'other';
2707
- };
2708
- /**
2709
- * Owns everything about signed sessions and their single-use replay nonces:
2710
- * resolving a session from an explicit value or the host reverse channel,
2711
- * deciding whether the SDK version requires one, and building the
2712
- * refresh-on-replay-400 retry predicate shared by the backup and recovery
2713
- * flows.
2714
- *
2715
- * Extracted from `DynamicWalletClient` so this logic can be exercised in
2716
- * isolation. The host callback is read lazily (`getCallback`) so it stays in
2717
- * sync with the owning client even if reassigned after construction.
2718
- */ class SignedSessionManager {
2719
- /** True when a reverse channel is configured to mint fresh signed sessions. */ get canRefresh() {
2720
- return this.getCallback() !== undefined;
2721
- }
2722
- /**
2723
- * Resolves the signed session ID from an explicit value or falls back to the
2724
- * host reverse channel. Throws if neither source provides a value.
2725
- */ async resolve(signedSessionId) {
2726
- const callback = this.getCallback();
2727
- const resolved = signedSessionId != null ? signedSessionId : await (callback == null ? void 0 : callback());
2728
- if (!resolved) {
2729
- throw new Error(signedSessionId === undefined && callback ? 'signedSessionId callback returned an invalid value' : 'signedSessionId is required for backup but was not provided and no callback is configured');
2730
- }
2731
- return resolved;
2732
- }
2733
- /** Whether the configured SDK version requires a signed session ID. */ isRequired() {
2734
- return this.required;
2735
- }
2736
- /** Whether the host SDK version supports the getSignedSessionId reverse channel (see version-check.ts). */ supportsReverseChannel() {
2737
- return this.reverseChannelSupported;
2738
- }
2739
- /**
2740
- * Builds a `retryPromise` `shouldRetry` predicate that refreshes a consumed
2741
- * single-use nonce via the reverse channel on a replay 400 and retries once.
2742
- * The signed session carries a single-use replay nonce: it is valid on its
2743
- * first use, but once consumed (e.g. by a preceding operation) the server
2744
- * rejects with a 400, at which point a fresh session is fetched and the call
2745
- * retried. `alsoRetry` lets callers opt into additional retryable statuses
2746
- * (e.g. 429 / 5xx) on top of the nonce refresh.
2747
- */ refreshShouldRetry({ onRefreshed, operationName, logContext, alsoRetry }) {
2748
- return async (error, attempt)=>{
2749
- const status = getHttpStatus(error);
2750
- // A 400 is a refreshable replay nonce; a 401 is a session-key mismatch the
2751
- // server returns to break the refresh loop (DYNT-1282) — logged only when the
2752
- // body classifies as a genuine session-signature failure so unrelated 401s
2753
- // (e.g. an exhausted add-signer grant) don't pollute the DYNT-1599 metric.
2754
- // Only the 400 can actually refresh.
2755
- const isSessionSignatureFailure = status === 401 && SESSION_SIGNATURE_FAILURE_REASONS.has(classifyNonceFailure(readErrorBody(error)));
2756
- const shouldInstrument = status === 400 || isSessionSignatureFailure;
2757
- if (shouldInstrument) {
2758
- const willRefresh = status === 400 && attempt === 1 && this.canRefresh && this.supportsReverseChannel();
2759
- this.instrumentNonceFailure({
2760
- error,
2761
- attempt,
2762
- status,
2763
- operationName,
2764
- willRefresh,
2765
- logContext
2766
- });
2767
- }
2768
- if (status === 400 && attempt === 1 && this.canRefresh) {
2769
- // canRefresh only proves a local callback exists, not that the host answers it.
2770
- if (!this.supportsReverseChannel()) {
2771
- this.logger.warn(`[${operationName}] host SDK version predates the signed-session reverse channel, declining nonce refresh`, _extends({
2772
- status
2773
- }, logContext));
2774
- return alsoRetry ? alsoRetry(status) : false;
2775
- }
2776
- onRefreshed(await this.resolve());
2777
- this.logger.info(`[${operationName}] refreshed signed session, retrying`, _extends({
2778
- status
2779
- }, logContext));
2780
- return true;
2781
- }
2782
- return alsoRetry ? alsoRetry(status) : false;
2783
- };
2784
- }
2785
- /**
2786
- * Emits a single Datadog log per signed-session nonce rejection so the
2787
- * failure bucket can be split by `reason` and correlated per wallet/request.
2788
- * Purely observational — it never alters the retry decision.
2789
- */ instrumentNonceFailure({ error, attempt, status, operationName, willRefresh, logContext }) {
2790
- const body = readErrorBody(error);
2791
- this.logger.info(NONCE_FAILURE_EVENT, _extends({}, logContext, {
2792
- operationName,
2793
- attempt,
2794
- status,
2795
- reason: classifyNonceFailure(body),
2796
- errorCode: body.code,
2797
- errorMessage: body.message,
2798
- willRefresh,
2799
- canRefresh: this.canRefresh,
2800
- reverseChannelSupported: this.reverseChannelSupported,
2801
- required: this.required,
2802
- sdkVersion: this.sdkVersion
2803
- }));
2804
- }
2805
- constructor({ logger, sdkVersion, getCallback }){
2806
- this.logger = logger;
2807
- this.getCallback = getCallback;
2808
- this.sdkVersion = sdkVersion;
2809
- this.required = isRequiresSignedSessionId(sdkVersion, this.logger);
2810
- this.reverseChannelSupported = isReverseChannelSupported(sdkVersion, this.logger);
2811
- }
2812
- }
2813
-
2814
2864
  /**
2815
2865
  * Determines the recovery state of a wallet based on backup info and local shares.
2816
2866
  *
@@ -6372,6 +6422,7 @@ class DynamicWalletClient {
6372
6422
  return {
6373
6423
  location: core.BackupLocation.DYNAMIC,
6374
6424
  externalKeyShareId: data.keyShareIds[0],
6425
+ externalKeyShareIds: data.keyShareIds,
6375
6426
  passwordEncrypted: isPasswordEncrypted,
6376
6427
  keygenId
6377
6428
  };
@@ -6668,7 +6719,7 @@ class DynamicWalletClient {
6668
6719
  // aborts the backup before activation, so an unrecoverable share is never
6669
6720
  // marked active; the local share is never touched.
6670
6721
  if (this.featureFlags[core.FEATURE_FLAGS.VERIFY_BACKUP_RECOVERABILITY_FLAG] === true) {
6671
- const dynamicKeyShareIds = locations.filter((loc)=>loc.location === core.BackupLocation.DYNAMIC && loc.externalKeyShareId).map((loc)=>loc.externalKeyShareId);
6722
+ const dynamicKeyShareIds = collectDynamicKeyShareIds(locations);
6672
6723
  await this.assertServerCopyRecoverable({
6673
6724
  walletId: walletData.walletId,
6674
6725
  shareSetId: targetShareSetId,
package/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { BitcoinAddressType, MPC_RELAY_PROD_API_URL, getMPCChainConfig, BackupLocation, ENCRYPTED_SHARES_STORAGE_SUFFIX, Logger, WalletApiError, handleAxiosError, WalletOperation, parseNamespacedVersion, WalletReadyState, classifyForwardMpcError, isRecoveredForwardMpcConnectionChurn, FEATURE_FLAGS, ThresholdSignatureScheme, getClientThreshold, MPC_CONFIG, getTSSConfig, serializeMessageForForwardMPC, isEvmCompatibleChain, serializeError, getReshareConfig, getRequiredExternalKeyShareId, verifiedCredentialNameToChainEnum, AuthMode, NoopLogger, DynamicApiClient, BusinessAccountClient, getEnvironmentFromUrl, IFRAME_DOMAIN_MAP } from '@dynamic-labs-wallet/core';
1
+ import { BitcoinAddressType, MPC_RELAY_PROD_API_URL, getMPCChainConfig, parseNamespacedVersion, WalletApiError, BackupLocation, ENCRYPTED_SHARES_STORAGE_SUFFIX, Logger, handleAxiosError, WalletOperation, WalletReadyState, classifyForwardMpcError, isRecoveredForwardMpcConnectionChurn, FEATURE_FLAGS, ThresholdSignatureScheme, getClientThreshold, MPC_CONFIG, getTSSConfig, serializeMessageForForwardMPC, isEvmCompatibleChain, serializeError, getReshareConfig, getRequiredExternalKeyShareId, verifiedCredentialNameToChainEnum, AuthMode, NoopLogger, DynamicApiClient, BusinessAccountClient, getEnvironmentFromUrl, IFRAME_DOMAIN_MAP } from '@dynamic-labs-wallet/core';
2
2
  export * from '@dynamic-labs-wallet/core';
3
3
  export { Logger } from '@dynamic-labs-wallet/core';
4
4
  import { EdBls12377, BIP340, ExportableEd25519, Ecdsa, MessageHash, EcdsaSignature, EcdsaKeygenResult, ExportableEd25519KeygenResult, BIP340KeygenResult } from '#internal/web';
@@ -8,8 +8,8 @@ import { SigningAlgorithm } from '@dynamic-labs-wallet/primitives';
8
8
  import { ProviderEnum, RoomTypeEnum } from '@dynamic-labs/sdk-api-core';
9
9
  import loadArgon2idWasm from 'argon2id';
10
10
  import { AxiosError } from 'axios';
11
- import PQueue from 'p-queue';
12
11
  import gte from 'semver/functions/gte';
12
+ import PQueue from 'p-queue';
13
13
 
14
14
  function _extends() {
15
15
  _extends = Object.assign || function assign(target) {
@@ -464,6 +464,237 @@ class EncryptionSelfTestFailedError extends Error {
464
464
  }
465
465
  }
466
466
 
467
+ /**
468
+ * Extracts the HTTP status from an `AxiosError`, or `undefined` for non-HTTP
469
+ * errors. Lives in its own leaf module (no `#internal/web` / WASM imports) so
470
+ * lightweight consumers like `services/signedSession.ts` can use it without
471
+ * pulling the MPC WASM bundle that `utils.ts` loads.
472
+ */ const getHttpStatus = (error)=>{
473
+ var _error_response;
474
+ return error instanceof AxiosError ? (_error_response = error.response) == null ? void 0 : _error_response.status : undefined;
475
+ };
476
+
477
+ const STORAGE_KEY = 'dynamic-waas-wallet-client';
478
+ const BACKUP_FILENAME = 'dynamicWalletKeyShareBackup.json';
479
+ const CLIENT_KEYSHARE_EXPORT_FILENAME_PREFIX = 'dynamicWalletKeyShareBackup';
480
+ const SIGNED_SESSION_ID_MIN_VERSION = '4.25.4';
481
+ // Namespace-specific version requirements
482
+ const SIGNED_SESSION_ID_MIN_VERSION_BY_NAMESPACE = {
483
+ WalletKit: '4.25.4',
484
+ ClientSDK: '0.1.0-alpha.0'
485
+ };
486
+ // Minimum SDK version that forwards `getSignedSessionId` to the iframe's postMessage
487
+ // reverse channel, distinct from SIGNED_SESSION_ID_MIN_VERSION above (which only
488
+ // gates whether a signed session value is sent at all).
489
+ // WalletKit: dynamic-auth#10577 (v4.74.0). ClientSDK: dynamic-js-sdk#1937 (v1.12.1).
490
+ const SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION = '4.74.0';
491
+ const SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION_BY_NAMESPACE = {
492
+ WalletKit: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION,
493
+ ClientSDK: '1.12.1'
494
+ };
495
+ const ROOM_EXPIRATION_TIME = 1000 * 60 * 10; // 10 minutes
496
+ const ROOM_CACHE_COUNT = 5;
497
+ const ENVIRONMENT_SETTINGS_STORAGE_KEY = 'dynamic_environment_settings';
498
+
499
+ function meetsMinVersion(sdkVersion, { minVersionByNamespace, fallbackMinVersion, label }, logger) {
500
+ if (!sdkVersion) {
501
+ return false;
502
+ }
503
+ try {
504
+ const parsedVersion = parseNamespacedVersion(sdkVersion);
505
+ if (!parsedVersion) {
506
+ return false;
507
+ }
508
+ const { namespace, version } = parsedVersion;
509
+ var _minVersionByNamespace_namespace;
510
+ return gte(version, (_minVersionByNamespace_namespace = minVersionByNamespace[namespace]) != null ? _minVersionByNamespace_namespace : fallbackMinVersion);
511
+ } catch (error) {
512
+ logger.warn(`[DynamicWaasWalletClient] Error checking ${label} for version ${sdkVersion}`, {
513
+ error: error instanceof Error ? error.message : String(error)
514
+ });
515
+ return false;
516
+ }
517
+ }
518
+ /** Whether the given SDK version requires a signed session ID to be sent at all. */ function isRequiresSignedSessionId(sdkVersion, logger) {
519
+ return meetsMinVersion(sdkVersion, {
520
+ minVersionByNamespace: SIGNED_SESSION_ID_MIN_VERSION_BY_NAMESPACE,
521
+ fallbackMinVersion: SIGNED_SESSION_ID_MIN_VERSION,
522
+ label: 'requiresSignedSessionId'
523
+ }, logger);
524
+ }
525
+ /**
526
+ * Whether the SDK version is known to forward `getSignedSessionId` to the iframe's
527
+ * postMessage reverse channel — stricter than {@link isRequiresSignedSessionId},
528
+ * which only checks whether a session value is sent at all.
529
+ */ function isReverseChannelSupported(sdkVersion, logger) {
530
+ return meetsMinVersion(sdkVersion, {
531
+ minVersionByNamespace: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION_BY_NAMESPACE,
532
+ fallbackMinVersion: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION,
533
+ label: 'supportsReverseChannel'
534
+ }, logger);
535
+ }
536
+
537
+ /**
538
+ * Datadog event name emitted on every signed-session nonce rejection (a 400 or
539
+ * 401 from the backup/recovery endpoints). Log-only: lets us split the failure
540
+ * bucket by `reason` and measure the true per-wallet unrecoverable rate
541
+ * without changing any retry behavior. See DYNT-1599.
542
+ */ const NONCE_FAILURE_EVENT = 'waas.signed_session.nonce_failure';
543
+ /**
544
+ * Reasons that represent a genuine session-key signature mismatch (the 401 the
545
+ * server returns per DYNT-1282). Used to gate 401 instrumentation so callers
546
+ * that reuse 401 for unrelated rejections don't pollute the failure metric.
547
+ */ const SESSION_SIGNATURE_FAILURE_REASONS = new Set([
548
+ 'invalid_nonce_signature',
549
+ 'invalid_session_signature'
550
+ ]);
551
+ /** Best-effort extraction of the server error `code`/`message` from a 4xx body. */ const readErrorBody = (error)=>{
552
+ var _error_response;
553
+ if (!(error instanceof AxiosError)) {
554
+ return {};
555
+ }
556
+ const data = (_error_response = error.response) == null ? void 0 : _error_response.data;
557
+ if (typeof data === 'string') {
558
+ return {
559
+ message: data
560
+ };
561
+ }
562
+ if (!data || typeof data !== 'object') {
563
+ return {};
564
+ }
565
+ const record = data;
566
+ // Prefer a string `code`, else fall back to `error_code` (the field the Key
567
+ // Share Service emits, see KSS #271) or a bare `error`.
568
+ const code = [
569
+ record['code'],
570
+ record['error_code'],
571
+ record['error']
572
+ ].find((value)=>typeof value === 'string');
573
+ const message = typeof record['message'] === 'string' ? record['message'] : undefined;
574
+ return {
575
+ code,
576
+ message
577
+ };
578
+ };
579
+ /** Maps the server error `code`/`message` onto a {@link NonceFailureReason}. */ const classifyNonceFailure = ({ code, message })=>{
580
+ const haystack = `${code != null ? code : ''} ${message != null ? message : ''}`.toLowerCase();
581
+ if (haystack.includes('already_used') || haystack.includes('already used') || haystack.includes('consumption failed')) {
582
+ return 'nonce_already_used';
583
+ }
584
+ if (haystack.includes('invalid_nonce_signature') || haystack.includes('invalid nonce signature')) {
585
+ return 'invalid_nonce_signature';
586
+ }
587
+ if (haystack.includes('invalid_session_signature') || haystack.includes('invalid session public key') || haystack.includes('invalid session signature')) {
588
+ return 'invalid_session_signature';
589
+ }
590
+ return 'other';
591
+ };
592
+ /**
593
+ * Owns everything about signed sessions and their single-use replay nonces:
594
+ * resolving a session from an explicit value or the host reverse channel,
595
+ * deciding whether the SDK version requires one, and building the
596
+ * refresh-on-replay-400 retry predicate shared by the backup and recovery
597
+ * flows.
598
+ *
599
+ * Extracted from `DynamicWalletClient` so this logic can be exercised in
600
+ * isolation. The host callback is read lazily (`getCallback`) so it stays in
601
+ * sync with the owning client even if reassigned after construction.
602
+ */ class SignedSessionManager {
603
+ /** True when a reverse channel is configured to mint fresh signed sessions. */ get canRefresh() {
604
+ return this.getCallback() !== undefined;
605
+ }
606
+ /**
607
+ * Resolves the signed session ID from an explicit value or falls back to the
608
+ * host reverse channel. Throws if neither source provides a value.
609
+ */ async resolve(signedSessionId) {
610
+ const callback = this.getCallback();
611
+ const resolved = signedSessionId != null ? signedSessionId : await (callback == null ? void 0 : callback());
612
+ if (!resolved) {
613
+ throw new Error(signedSessionId === undefined && callback ? 'signedSessionId callback returned an invalid value' : 'signedSessionId is required for backup but was not provided and no callback is configured');
614
+ }
615
+ return resolved;
616
+ }
617
+ /** Whether the configured SDK version requires a signed session ID. */ isRequired() {
618
+ return this.required;
619
+ }
620
+ /** Whether the host SDK version supports the getSignedSessionId reverse channel (see version-check.ts). */ supportsReverseChannel() {
621
+ return this.reverseChannelSupported;
622
+ }
623
+ /**
624
+ * Builds a `retryPromise` `shouldRetry` predicate that refreshes a consumed
625
+ * single-use nonce via the reverse channel on a replay 400 and retries once.
626
+ * The signed session carries a single-use replay nonce: it is valid on its
627
+ * first use, but once consumed (e.g. by a preceding operation) the server
628
+ * rejects with a 400, at which point a fresh session is fetched and the call
629
+ * retried. `alsoRetry` lets callers opt into additional retryable statuses
630
+ * (e.g. 429 / 5xx) on top of the nonce refresh.
631
+ */ refreshShouldRetry({ onRefreshed, operationName, logContext, alsoRetry }) {
632
+ return async (error, attempt)=>{
633
+ const status = getHttpStatus(error);
634
+ // A 400 is a refreshable replay nonce; a 401 is a session-key mismatch the
635
+ // server returns to break the refresh loop (DYNT-1282) — logged only when the
636
+ // body classifies as a genuine session-signature failure so unrelated 401s
637
+ // (e.g. an exhausted add-signer grant) don't pollute the DYNT-1599 metric.
638
+ // Only the 400 can actually refresh.
639
+ const isSessionSignatureFailure = status === 401 && SESSION_SIGNATURE_FAILURE_REASONS.has(classifyNonceFailure(readErrorBody(error)));
640
+ const shouldInstrument = status === 400 || isSessionSignatureFailure;
641
+ if (shouldInstrument) {
642
+ const willRefresh = status === 400 && attempt === 1 && this.canRefresh && this.supportsReverseChannel();
643
+ this.instrumentNonceFailure({
644
+ error,
645
+ attempt,
646
+ status,
647
+ operationName,
648
+ willRefresh,
649
+ logContext
650
+ });
651
+ }
652
+ if (status === 400 && attempt === 1 && this.canRefresh) {
653
+ // canRefresh only proves a local callback exists, not that the host answers it.
654
+ if (!this.supportsReverseChannel()) {
655
+ this.logger.warn(`[${operationName}] host SDK version predates the signed-session reverse channel, declining nonce refresh`, _extends({
656
+ status
657
+ }, logContext));
658
+ return alsoRetry ? alsoRetry(status) : false;
659
+ }
660
+ onRefreshed(await this.resolve());
661
+ this.logger.info(`[${operationName}] refreshed signed session, retrying`, _extends({
662
+ status
663
+ }, logContext));
664
+ return true;
665
+ }
666
+ return alsoRetry ? alsoRetry(status) : false;
667
+ };
668
+ }
669
+ /**
670
+ * Emits a single Datadog log per signed-session nonce rejection so the
671
+ * failure bucket can be split by `reason` and correlated per wallet/request.
672
+ * Purely observational — it never alters the retry decision.
673
+ */ instrumentNonceFailure({ error, attempt, status, operationName, willRefresh, logContext }) {
674
+ const body = readErrorBody(error);
675
+ this.logger.info(NONCE_FAILURE_EVENT, _extends({}, logContext, {
676
+ operationName,
677
+ attempt,
678
+ status,
679
+ reason: classifyNonceFailure(body),
680
+ errorCode: body.code,
681
+ errorMessage: body.message,
682
+ willRefresh,
683
+ canRefresh: this.canRefresh,
684
+ reverseChannelSupported: this.reverseChannelSupported,
685
+ required: this.required,
686
+ sdkVersion: this.sdkVersion
687
+ }));
688
+ }
689
+ constructor({ logger, sdkVersion, getCallback }){
690
+ this.logger = logger;
691
+ this.getCallback = getCallback;
692
+ this.sdkVersion = sdkVersion;
693
+ this.required = isRequiresSignedSessionId(sdkVersion, this.logger);
694
+ this.reverseChannelSupported = isReverseChannelSupported(sdkVersion, this.logger);
695
+ }
696
+ }
697
+
467
698
  const ERROR_NO_KEY_SHARES_BACKED_UP = 'No key shares were backed up to Dynamic backend';
468
699
  const ERROR_KEYGEN_FAILED = '[DynamicWaasWalletClient]: Error with keygen';
469
700
  const ERROR_CREATE_WALLET_ACCOUNT = '[DynamicWaasWalletClient]: Error creating wallet account';
@@ -556,6 +787,10 @@ const ERROR_WALLETS_ALREADY_ENCRYPTED = '[DynamicWaasWalletClient]: Cannot set p
556
787
  */ const USER_ACTIONABLE_PASSWORD_BACKUP_ERROR_REASONS = {
557
788
  wrong_password: true,
558
789
  stale_local_shares: false,
790
+ nonce_already_used: false,
791
+ invalid_nonce_signature: false,
792
+ invalid_session_signature: false,
793
+ signed_session: false,
559
794
  encryption_failure: false,
560
795
  decryption_failure: false,
561
796
  upload_failure: false,
@@ -578,6 +813,30 @@ const FETCH_NETWORK_ERROR_REGEX = /failed to fetch|networkerror|load failed|netw
578
813
  const ENCRYPTION_FAILURE_MESSAGE_PREFIX = 'Error encrypting data:';
579
814
  const DECRYPTION_FAILURE_MESSAGE_PREFIX = 'Decryption failed:';
580
815
  const isStaleSharesError = (error)=>error instanceof StaleLocalSharesError || error instanceof Error && error.name === 'StaleLocalSharesError';
816
+ // The backup/recovery endpoints reject the chaining signature with a 400
817
+ // (stale signed session / replay nonce) or 401 (session-key mismatch,
818
+ // DYNT-1282); the preserved backend code splits those into their precise
819
+ // cause so the failure is actionable instead of a generic `unknown`.
820
+ const SIGNED_SESSION_FAILURE_STATUSES = new Set([
821
+ 400,
822
+ 401
823
+ ]);
824
+ const NONCE_REASON_TO_BACKUP_REASON = {
825
+ nonce_already_used: 'nonce_already_used',
826
+ invalid_nonce_signature: 'invalid_nonce_signature',
827
+ invalid_session_signature: 'invalid_session_signature',
828
+ other: 'signed_session'
829
+ };
830
+ const classifyWalletApiError = (error)=>{
831
+ if (!SIGNED_SESSION_FAILURE_STATUSES.has(error.status)) {
832
+ return 'upload_failure';
833
+ }
834
+ const nonceReason = classifyNonceFailure({
835
+ code: error.code,
836
+ message: error.message
837
+ });
838
+ return NONCE_REASON_TO_BACKUP_REASON[nonceReason];
839
+ };
581
840
  const isNetworkLikeError = (error)=>{
582
841
  if (typeof error !== 'object' || error === null) {
583
842
  return false;
@@ -629,6 +888,12 @@ const computeReason = (error)=>{
629
888
  if (isStaleSharesError(error)) {
630
889
  return 'stale_local_shares';
631
890
  }
891
+ // WalletApiError is a wrapped HTTP failure carrying the resolved status; its
892
+ // message is a generic status string ('Invalid request', etc.) so classify
893
+ // by status ahead of the message-based checks below.
894
+ if (error instanceof WalletApiError) {
895
+ return classifyWalletApiError(error);
896
+ }
632
897
  if (error instanceof Error) {
633
898
  if (error.message.includes(ERROR_PASSWORD_MISMATCH) || error.message.includes(ERROR_INCORRECT_PASSWORD)) {
634
899
  return 'wrong_password';
@@ -996,38 +1261,6 @@ const downloadFileFromGoogleDrive = async ({ accessToken, fileName })=>{
996
1261
  }
997
1262
  };
998
1263
 
999
- /**
1000
- * Extracts the HTTP status from an `AxiosError`, or `undefined` for non-HTTP
1001
- * errors. Lives in its own leaf module (no `#internal/web` / WASM imports) so
1002
- * lightweight consumers like `services/signedSession.ts` can use it without
1003
- * pulling the MPC WASM bundle that `utils.ts` loads.
1004
- */ const getHttpStatus = (error)=>{
1005
- var _error_response;
1006
- return error instanceof AxiosError ? (_error_response = error.response) == null ? void 0 : _error_response.status : undefined;
1007
- };
1008
-
1009
- const STORAGE_KEY = 'dynamic-waas-wallet-client';
1010
- const BACKUP_FILENAME = 'dynamicWalletKeyShareBackup.json';
1011
- const CLIENT_KEYSHARE_EXPORT_FILENAME_PREFIX = 'dynamicWalletKeyShareBackup';
1012
- const SIGNED_SESSION_ID_MIN_VERSION = '4.25.4';
1013
- // Namespace-specific version requirements
1014
- const SIGNED_SESSION_ID_MIN_VERSION_BY_NAMESPACE = {
1015
- WalletKit: '4.25.4',
1016
- ClientSDK: '0.1.0-alpha.0'
1017
- };
1018
- // Minimum SDK version that forwards `getSignedSessionId` to the iframe's postMessage
1019
- // reverse channel, distinct from SIGNED_SESSION_ID_MIN_VERSION above (which only
1020
- // gates whether a signed session value is sent at all).
1021
- // WalletKit: dynamic-auth#10577 (v4.74.0). ClientSDK: dynamic-js-sdk#1937 (v1.12.1).
1022
- const SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION = '4.74.0';
1023
- const SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION_BY_NAMESPACE = {
1024
- WalletKit: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION,
1025
- ClientSDK: '1.12.1'
1026
- };
1027
- const ROOM_EXPIRATION_TIME = 1000 * 60 * 10; // 10 minutes
1028
- const ROOM_CACHE_COUNT = 5;
1029
- const ENVIRONMENT_SETTINGS_STORAGE_KEY = 'dynamic_environment_settings';
1030
-
1031
1264
  /**
1032
1265
  * Normalizes an address to lowercase for consistent map key lookups.
1033
1266
  * This ensures that addresses with different casing (e.g., EIP-55 checksummed vs lowercase)
@@ -2413,6 +2646,22 @@ const createDynamicOnlyDistribution = ({ allShares })=>({
2413
2646
  /** Track which wallets are currently executing inside a sign operation.
2414
2647
  * Used to prevent deadlocks when recovery is called from within a sign op. */ WalletQueueManager.walletsWithActiveSignOp = new Map();
2415
2648
 
2649
+ // A DYNAMIC backup can persist multiple shares (e.g. 2-of-3); the singular
2650
+ // externalKeyShareId is a fallback for older single-id shapes.
2651
+ const collectDynamicKeyShareIds = (locations)=>{
2652
+ return locations.filter((loc)=>loc.location === BackupLocation.DYNAMIC).flatMap((loc)=>{
2653
+ if (loc.externalKeyShareIds && loc.externalKeyShareIds.length > 0) {
2654
+ return loc.externalKeyShareIds;
2655
+ }
2656
+ if (loc.externalKeyShareId) {
2657
+ return [
2658
+ loc.externalKeyShareId
2659
+ ];
2660
+ }
2661
+ return [];
2662
+ });
2663
+ };
2664
+
2416
2665
  // Pure routing helper: maps a completed reshare ceremony's results into the
2417
2666
  // ShareDistribution that storage/publish should follow. Lives outside the
2418
2667
  // client class so it's straightforward to reason about and unit-test
@@ -2613,205 +2862,6 @@ const readEnvironmentSettings = ()=>{
2613
2862
  }
2614
2863
  });
2615
2864
 
2616
- function meetsMinVersion(sdkVersion, { minVersionByNamespace, fallbackMinVersion, label }, logger) {
2617
- if (!sdkVersion) {
2618
- return false;
2619
- }
2620
- try {
2621
- const parsedVersion = parseNamespacedVersion(sdkVersion);
2622
- if (!parsedVersion) {
2623
- return false;
2624
- }
2625
- const { namespace, version } = parsedVersion;
2626
- var _minVersionByNamespace_namespace;
2627
- return gte(version, (_minVersionByNamespace_namespace = minVersionByNamespace[namespace]) != null ? _minVersionByNamespace_namespace : fallbackMinVersion);
2628
- } catch (error) {
2629
- logger.warn(`[DynamicWaasWalletClient] Error checking ${label} for version ${sdkVersion}`, {
2630
- error: error instanceof Error ? error.message : String(error)
2631
- });
2632
- return false;
2633
- }
2634
- }
2635
- /** Whether the given SDK version requires a signed session ID to be sent at all. */ function isRequiresSignedSessionId(sdkVersion, logger) {
2636
- return meetsMinVersion(sdkVersion, {
2637
- minVersionByNamespace: SIGNED_SESSION_ID_MIN_VERSION_BY_NAMESPACE,
2638
- fallbackMinVersion: SIGNED_SESSION_ID_MIN_VERSION,
2639
- label: 'requiresSignedSessionId'
2640
- }, logger);
2641
- }
2642
- /**
2643
- * Whether the SDK version is known to forward `getSignedSessionId` to the iframe's
2644
- * postMessage reverse channel — stricter than {@link isRequiresSignedSessionId},
2645
- * which only checks whether a session value is sent at all.
2646
- */ function isReverseChannelSupported(sdkVersion, logger) {
2647
- return meetsMinVersion(sdkVersion, {
2648
- minVersionByNamespace: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION_BY_NAMESPACE,
2649
- fallbackMinVersion: SIGNED_SESSION_REVERSE_CHANNEL_MIN_VERSION,
2650
- label: 'supportsReverseChannel'
2651
- }, logger);
2652
- }
2653
-
2654
- /**
2655
- * Datadog event name emitted on every signed-session nonce rejection (a 400 or
2656
- * 401 from the backup/recovery endpoints). Log-only: lets us split the failure
2657
- * bucket by `reason` and measure the true per-wallet unrecoverable rate
2658
- * without changing any retry behavior. See DYNT-1599.
2659
- */ const NONCE_FAILURE_EVENT = 'waas.signed_session.nonce_failure';
2660
- /**
2661
- * Reasons that represent a genuine session-key signature mismatch (the 401 the
2662
- * server returns per DYNT-1282). Used to gate 401 instrumentation so callers
2663
- * that reuse 401 for unrelated rejections don't pollute the failure metric.
2664
- */ const SESSION_SIGNATURE_FAILURE_REASONS = new Set([
2665
- 'invalid_nonce_signature',
2666
- 'invalid_session_signature'
2667
- ]);
2668
- /** Best-effort extraction of the server error `code`/`message` from a 4xx body. */ const readErrorBody = (error)=>{
2669
- var _error_response;
2670
- if (!(error instanceof AxiosError)) {
2671
- return {};
2672
- }
2673
- const data = (_error_response = error.response) == null ? void 0 : _error_response.data;
2674
- if (typeof data === 'string') {
2675
- return {
2676
- message: data
2677
- };
2678
- }
2679
- if (!data || typeof data !== 'object') {
2680
- return {};
2681
- }
2682
- const record = data;
2683
- // Prefer a string `code`, else fall back to `error_code` (the field the Key
2684
- // Share Service emits, see KSS #271) or a bare `error`.
2685
- const code = [
2686
- record['code'],
2687
- record['error_code'],
2688
- record['error']
2689
- ].find((value)=>typeof value === 'string');
2690
- const message = typeof record['message'] === 'string' ? record['message'] : undefined;
2691
- return {
2692
- code,
2693
- message
2694
- };
2695
- };
2696
- /** Maps the server error `code`/`message` onto a {@link NonceFailureReason}. */ const classifyNonceFailure = ({ code, message })=>{
2697
- const haystack = `${code != null ? code : ''} ${message != null ? message : ''}`.toLowerCase();
2698
- if (haystack.includes('already_used') || haystack.includes('already used') || haystack.includes('consumption failed')) {
2699
- return 'nonce_already_used';
2700
- }
2701
- if (haystack.includes('invalid_nonce_signature') || haystack.includes('invalid nonce signature')) {
2702
- return 'invalid_nonce_signature';
2703
- }
2704
- if (haystack.includes('invalid_session_signature') || haystack.includes('invalid session public key') || haystack.includes('invalid session signature')) {
2705
- return 'invalid_session_signature';
2706
- }
2707
- return 'other';
2708
- };
2709
- /**
2710
- * Owns everything about signed sessions and their single-use replay nonces:
2711
- * resolving a session from an explicit value or the host reverse channel,
2712
- * deciding whether the SDK version requires one, and building the
2713
- * refresh-on-replay-400 retry predicate shared by the backup and recovery
2714
- * flows.
2715
- *
2716
- * Extracted from `DynamicWalletClient` so this logic can be exercised in
2717
- * isolation. The host callback is read lazily (`getCallback`) so it stays in
2718
- * sync with the owning client even if reassigned after construction.
2719
- */ class SignedSessionManager {
2720
- /** True when a reverse channel is configured to mint fresh signed sessions. */ get canRefresh() {
2721
- return this.getCallback() !== undefined;
2722
- }
2723
- /**
2724
- * Resolves the signed session ID from an explicit value or falls back to the
2725
- * host reverse channel. Throws if neither source provides a value.
2726
- */ async resolve(signedSessionId) {
2727
- const callback = this.getCallback();
2728
- const resolved = signedSessionId != null ? signedSessionId : await (callback == null ? void 0 : callback());
2729
- if (!resolved) {
2730
- throw new Error(signedSessionId === undefined && callback ? 'signedSessionId callback returned an invalid value' : 'signedSessionId is required for backup but was not provided and no callback is configured');
2731
- }
2732
- return resolved;
2733
- }
2734
- /** Whether the configured SDK version requires a signed session ID. */ isRequired() {
2735
- return this.required;
2736
- }
2737
- /** Whether the host SDK version supports the getSignedSessionId reverse channel (see version-check.ts). */ supportsReverseChannel() {
2738
- return this.reverseChannelSupported;
2739
- }
2740
- /**
2741
- * Builds a `retryPromise` `shouldRetry` predicate that refreshes a consumed
2742
- * single-use nonce via the reverse channel on a replay 400 and retries once.
2743
- * The signed session carries a single-use replay nonce: it is valid on its
2744
- * first use, but once consumed (e.g. by a preceding operation) the server
2745
- * rejects with a 400, at which point a fresh session is fetched and the call
2746
- * retried. `alsoRetry` lets callers opt into additional retryable statuses
2747
- * (e.g. 429 / 5xx) on top of the nonce refresh.
2748
- */ refreshShouldRetry({ onRefreshed, operationName, logContext, alsoRetry }) {
2749
- return async (error, attempt)=>{
2750
- const status = getHttpStatus(error);
2751
- // A 400 is a refreshable replay nonce; a 401 is a session-key mismatch the
2752
- // server returns to break the refresh loop (DYNT-1282) — logged only when the
2753
- // body classifies as a genuine session-signature failure so unrelated 401s
2754
- // (e.g. an exhausted add-signer grant) don't pollute the DYNT-1599 metric.
2755
- // Only the 400 can actually refresh.
2756
- const isSessionSignatureFailure = status === 401 && SESSION_SIGNATURE_FAILURE_REASONS.has(classifyNonceFailure(readErrorBody(error)));
2757
- const shouldInstrument = status === 400 || isSessionSignatureFailure;
2758
- if (shouldInstrument) {
2759
- const willRefresh = status === 400 && attempt === 1 && this.canRefresh && this.supportsReverseChannel();
2760
- this.instrumentNonceFailure({
2761
- error,
2762
- attempt,
2763
- status,
2764
- operationName,
2765
- willRefresh,
2766
- logContext
2767
- });
2768
- }
2769
- if (status === 400 && attempt === 1 && this.canRefresh) {
2770
- // canRefresh only proves a local callback exists, not that the host answers it.
2771
- if (!this.supportsReverseChannel()) {
2772
- this.logger.warn(`[${operationName}] host SDK version predates the signed-session reverse channel, declining nonce refresh`, _extends({
2773
- status
2774
- }, logContext));
2775
- return alsoRetry ? alsoRetry(status) : false;
2776
- }
2777
- onRefreshed(await this.resolve());
2778
- this.logger.info(`[${operationName}] refreshed signed session, retrying`, _extends({
2779
- status
2780
- }, logContext));
2781
- return true;
2782
- }
2783
- return alsoRetry ? alsoRetry(status) : false;
2784
- };
2785
- }
2786
- /**
2787
- * Emits a single Datadog log per signed-session nonce rejection so the
2788
- * failure bucket can be split by `reason` and correlated per wallet/request.
2789
- * Purely observational — it never alters the retry decision.
2790
- */ instrumentNonceFailure({ error, attempt, status, operationName, willRefresh, logContext }) {
2791
- const body = readErrorBody(error);
2792
- this.logger.info(NONCE_FAILURE_EVENT, _extends({}, logContext, {
2793
- operationName,
2794
- attempt,
2795
- status,
2796
- reason: classifyNonceFailure(body),
2797
- errorCode: body.code,
2798
- errorMessage: body.message,
2799
- willRefresh,
2800
- canRefresh: this.canRefresh,
2801
- reverseChannelSupported: this.reverseChannelSupported,
2802
- required: this.required,
2803
- sdkVersion: this.sdkVersion
2804
- }));
2805
- }
2806
- constructor({ logger, sdkVersion, getCallback }){
2807
- this.logger = logger;
2808
- this.getCallback = getCallback;
2809
- this.sdkVersion = sdkVersion;
2810
- this.required = isRequiresSignedSessionId(sdkVersion, this.logger);
2811
- this.reverseChannelSupported = isReverseChannelSupported(sdkVersion, this.logger);
2812
- }
2813
- }
2814
-
2815
2865
  /**
2816
2866
  * Determines the recovery state of a wallet based on backup info and local shares.
2817
2867
  *
@@ -6373,6 +6423,7 @@ class DynamicWalletClient {
6373
6423
  return {
6374
6424
  location: BackupLocation.DYNAMIC,
6375
6425
  externalKeyShareId: data.keyShareIds[0],
6426
+ externalKeyShareIds: data.keyShareIds,
6376
6427
  passwordEncrypted: isPasswordEncrypted,
6377
6428
  keygenId
6378
6429
  };
@@ -6669,7 +6720,7 @@ class DynamicWalletClient {
6669
6720
  // aborts the backup before activation, so an unrecoverable share is never
6670
6721
  // marked active; the local share is never touched.
6671
6722
  if (this.featureFlags[FEATURE_FLAGS.VERIFY_BACKUP_RECOVERABILITY_FLAG] === true) {
6672
- const dynamicKeyShareIds = locations.filter((loc)=>loc.location === BackupLocation.DYNAMIC && loc.externalKeyShareId).map((loc)=>loc.externalKeyShareId);
6723
+ const dynamicKeyShareIds = collectDynamicKeyShareIds(locations);
6673
6724
  await this.assertServerCopyRecoverable({
6674
6725
  walletId: walletData.walletId,
6675
6726
  shareSetId: targetShareSetId,
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/browser",
3
- "version": "1.0.81",
3
+ "version": "1.0.82",
4
4
  "license": "Licensed under the Dynamic Labs, Inc. Terms Of Service (https://www.dynamic.xyz/terms-conditions)",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@dynamic-labs-wallet/core": "1.0.81",
7
+ "@dynamic-labs-wallet/core": "1.0.82",
8
8
  "@dynamic-labs-wallet/forward-mpc-client": "1.0.1",
9
- "@dynamic-labs-wallet/primitives": "1.0.81",
9
+ "@dynamic-labs-wallet/primitives": "1.0.82",
10
10
  "@dynamic-labs/sdk-api-core": "^0.0.1083",
11
11
  "argon2id": "1.0.1",
12
12
  "axios": "1.16.0",
@@ -11,7 +11,7 @@ export type PasswordOperation = 'setPassword' | 'updatePassword' | 'unlockWallet
11
11
  * Mirrors the convention established by GoogleDriveBackupErrorReason
12
12
  * (backup/providers/googleDrive.ts) — see PR #958.
13
13
  */
14
- export type PasswordBackupErrorReason = 'wrong_password' | 'stale_local_shares' | 'encryption_failure' | 'decryption_failure' | 'upload_failure' | 'activation_failure' | 'already_encrypted' | 'network' | 'unknown';
14
+ export type PasswordBackupErrorReason = 'wrong_password' | 'stale_local_shares' | 'nonce_already_used' | 'invalid_nonce_signature' | 'invalid_session_signature' | 'signed_session' | 'encryption_failure' | 'decryption_failure' | 'upload_failure' | 'activation_failure' | 'already_encrypted' | 'network' | 'unknown';
15
15
  /**
16
16
  * Failures classified as user-actionable are caused by end-user input or
17
17
  * local state and are not actionable by oncall. They are emitted at log
@@ -26,6 +26,10 @@ export type PasswordBackupErrorReason = 'wrong_password' | 'stale_local_shares'
26
26
  export declare const USER_ACTIONABLE_PASSWORD_BACKUP_ERROR_REASONS: {
27
27
  readonly wrong_password: true;
28
28
  readonly stale_local_shares: false;
29
+ readonly nonce_already_used: false;
30
+ readonly invalid_nonce_signature: false;
31
+ readonly invalid_session_signature: false;
32
+ readonly signed_session: false;
29
33
  readonly encryption_failure: false;
30
34
  readonly decryption_failure: false;
31
35
  readonly upload_failure: false;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/backup/password/errors.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,GACjC,gBAAgB,GAChB,oBAAoB,GACpB,oBAAoB,GACpB,oBAAoB,GACpB,gBAAgB,GAChB,oBAAoB,GACpB,mBAAmB,GACnB,SAAS,GACT,SAAS,CAAC;AAEd;;;;;;;;;;GAUG;AACH,eAAO,MAAM,6CAA6C;;;;;;;;;;CAUK,CAAC;AAEhE,eAAO,MAAM,yCAAyC,WAAY,yBAAyB,KAAG,OACvC,CAAC;AAmGxD;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,UAAW,OAAO,KAAG,yBAM5D,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/backup/password/errors.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,MAAM,yBAAyB,GACjC,gBAAgB,GAChB,oBAAoB,GACpB,oBAAoB,GACpB,yBAAyB,GACzB,2BAA2B,GAC3B,gBAAgB,GAChB,oBAAoB,GACpB,oBAAoB,GACpB,gBAAgB,GAChB,oBAAoB,GACpB,mBAAmB,GACnB,SAAS,GACT,SAAS,CAAC;AAEd;;;;;;;;;;GAUG;AACH,eAAO,MAAM,6CAA6C;;;;;;;;;;;;;;CAcK,CAAC;AAEhE,eAAO,MAAM,yCAAyC,WAAY,yBAAyB,KAAG,OACvC,CAAC;AA8HxD;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,UAAW,OAAO,KAAG,yBAM5D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type BackupLocationWithExternalKeyShareId } from '@dynamic-labs-wallet/core';
2
+ export declare const collectDynamicKeyShareIds: (locations: BackupLocationWithExternalKeyShareId[]) => string[];
3
+ //# sourceMappingURL=collectDynamicKeyShareIds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectDynamicKeyShareIds.d.ts","sourceRoot":"","sources":["../../packages/src/collectDynamicKeyShareIds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,oCAAoC,EAAE,MAAM,2BAA2B,CAAC;AAItG,eAAO,MAAM,yBAAyB,cAAe,oCAAoC,EAAE,KAAG,MAAM,EAYnG,CAAC"}