@dynamic-labs-wallet/browser-wallet-client 1.0.11 → 1.0.12

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
@@ -553,7 +553,7 @@ class IframeManager {
553
553
  // timeout calls triggerRecovery. block() must run before we await anything
554
554
  // so the request channel's recursive sendMessage() lands on the queue
555
555
  // instead of the dead bridge.
556
- transport.recoveryManager.onRecoveryRequested(()=>{
556
+ this.cleanupRecoverySubscription = transport.recoveryManager.onRecoveryRequested(()=>{
557
557
  this.logger.info('(recoverIframe) Iframe transport recovery requested — rebuilding iframe');
558
558
  transport.block();
559
559
  void this.recoverIframe(transport).catch((error)=>{
@@ -588,7 +588,15 @@ class IframeManager {
588
588
  // real dead-container case below falls through to the rebuild.
589
589
  if ((_IframeManager_sharedWaasSDKContainer = IframeManager.sharedWaasSDKContainer) == null ? void 0 : _IframeManager_sharedWaasSDKContainer.isAlive()) {
590
590
  this.logger.info('(recoverIframe) Container still alive — request-channel timeout, skipping rebuild');
591
- this.waasSDKContainer = IframeManager.sharedWaasSDKContainer;
591
+ if (this.waasSDKContainer !== IframeManager.sharedWaasSDKContainer) {
592
+ // A concurrent recovery already swapped in a fresh shared container. Our
593
+ // bridge still forwards to the old (now-dead) one, so re-point it before
594
+ // unblock flushes the queued retry — otherwise the flush calls sendMessage
595
+ // on a torn-down iframe ("iframe not loaded").
596
+ this.cleanupBridge == null ? void 0 : this.cleanupBridge.call(this);
597
+ this.waasSDKContainer = IframeManager.sharedWaasSDKContainer;
598
+ this.cleanupBridge = this.setupWaasSDKContainerBridge(transport, this.waasSDKContainer);
599
+ }
592
600
  transport.unblock();
593
601
  return;
594
602
  }
@@ -704,6 +712,8 @@ class IframeManager {
704
712
  */ resetSharedWaasSDKContainer() {
705
713
  this.cleanupBridge == null ? void 0 : this.cleanupBridge.call(this);
706
714
  this.cleanupBridge = null;
715
+ this.cleanupRecoverySubscription == null ? void 0 : this.cleanupRecoverySubscription.call(this);
716
+ this.cleanupRecoverySubscription = null;
707
717
  if (IframeManager.sharedWaasSDKContainer) {
708
718
  IframeManager.sharedWaasSDKContainer.destroy();
709
719
  IframeManager.sharedWaasSDKContainer = null;
@@ -969,14 +979,27 @@ class IframeManager {
969
979
  }
970
980
  if (this.waasSDKContainer) {
971
981
  IframeManager.iframeInstanceCount--;
982
+ // Always detach THIS instance's bridge + recovery subscription, even when
983
+ // other instances keep the shared container alive (multi-chain sessions
984
+ // share one static container). Leaving them attached lets a logged-out
985
+ // transport's retry timer fire recovery and flush a queued message into a
986
+ // torn-down container on the next session — the "iframe not loaded" pageerror.
987
+ this.cleanupBridge == null ? void 0 : this.cleanupBridge.call(this);
988
+ this.cleanupBridge = null;
989
+ this.cleanupRecoverySubscription == null ? void 0 : this.cleanupRecoverySubscription.call(this);
990
+ this.cleanupRecoverySubscription = null;
972
991
  if (IframeManager.sharedWaasSDKContainer && IframeManager.iframeInstanceCount === 0) {
973
- this.cleanupBridge == null ? void 0 : this.cleanupBridge.call(this);
974
- this.cleanupBridge = null;
975
992
  IframeManager.sharedWaasSDKContainer.destroy();
976
993
  IframeManager.sharedWaasSDKContainer = null;
977
994
  IframeManager.iframeLoadPromise = null;
978
995
  }
979
996
  this.waasSDKContainer = null;
997
+ // Drop the transport + handler so the next operation re-inits and rebuilds a
998
+ // fresh bridge instead of short-circuiting on initializeMessageTransport's
999
+ // "already initialized" guard with a now-detached bridge.
1000
+ this.messageTransport = null;
1001
+ this.iframeMessageHandler = null;
1002
+ this.iframeRequestChannel = undefined;
980
1003
  }
981
1004
  }
982
1005
  constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, chainName, sdkVersion, authMode = core.AuthMode.HEADER, authToken, debug, baseClientKeysharesRelayApiUrl, additionalTrustedOrigins, iframeLoadTimeout, maxRetryAttempts }, internalOptions){
@@ -988,6 +1011,9 @@ class IframeManager {
988
1011
  /** Teardown function returned by setupMessageTransportBridge — detaches all
989
1012
  * listeners. Tracked so we can rebuild the bridge on iframe recovery without
990
1013
  * leaking listeners against the dead iframe. */ this.cleanupBridge = null;
1014
+ /** Unsubscribe for the onRecoveryRequested listener. Tracked so logout detaches
1015
+ * it — otherwise the request channel's retry timer keeps firing recovery against
1016
+ * a torn-down transport on the next session. */ this.cleanupRecoverySubscription = null;
991
1017
  this.iframe = null;
992
1018
  this.waasSDKContainer = null;
993
1019
  this.environmentId = environmentId;
package/index.esm.js CHANGED
@@ -552,7 +552,7 @@ class IframeManager {
552
552
  // timeout calls triggerRecovery. block() must run before we await anything
553
553
  // so the request channel's recursive sendMessage() lands on the queue
554
554
  // instead of the dead bridge.
555
- transport.recoveryManager.onRecoveryRequested(()=>{
555
+ this.cleanupRecoverySubscription = transport.recoveryManager.onRecoveryRequested(()=>{
556
556
  this.logger.info('(recoverIframe) Iframe transport recovery requested — rebuilding iframe');
557
557
  transport.block();
558
558
  void this.recoverIframe(transport).catch((error)=>{
@@ -587,7 +587,15 @@ class IframeManager {
587
587
  // real dead-container case below falls through to the rebuild.
588
588
  if ((_IframeManager_sharedWaasSDKContainer = IframeManager.sharedWaasSDKContainer) == null ? void 0 : _IframeManager_sharedWaasSDKContainer.isAlive()) {
589
589
  this.logger.info('(recoverIframe) Container still alive — request-channel timeout, skipping rebuild');
590
- this.waasSDKContainer = IframeManager.sharedWaasSDKContainer;
590
+ if (this.waasSDKContainer !== IframeManager.sharedWaasSDKContainer) {
591
+ // A concurrent recovery already swapped in a fresh shared container. Our
592
+ // bridge still forwards to the old (now-dead) one, so re-point it before
593
+ // unblock flushes the queued retry — otherwise the flush calls sendMessage
594
+ // on a torn-down iframe ("iframe not loaded").
595
+ this.cleanupBridge == null ? void 0 : this.cleanupBridge.call(this);
596
+ this.waasSDKContainer = IframeManager.sharedWaasSDKContainer;
597
+ this.cleanupBridge = this.setupWaasSDKContainerBridge(transport, this.waasSDKContainer);
598
+ }
591
599
  transport.unblock();
592
600
  return;
593
601
  }
@@ -703,6 +711,8 @@ class IframeManager {
703
711
  */ resetSharedWaasSDKContainer() {
704
712
  this.cleanupBridge == null ? void 0 : this.cleanupBridge.call(this);
705
713
  this.cleanupBridge = null;
714
+ this.cleanupRecoverySubscription == null ? void 0 : this.cleanupRecoverySubscription.call(this);
715
+ this.cleanupRecoverySubscription = null;
706
716
  if (IframeManager.sharedWaasSDKContainer) {
707
717
  IframeManager.sharedWaasSDKContainer.destroy();
708
718
  IframeManager.sharedWaasSDKContainer = null;
@@ -968,14 +978,27 @@ class IframeManager {
968
978
  }
969
979
  if (this.waasSDKContainer) {
970
980
  IframeManager.iframeInstanceCount--;
981
+ // Always detach THIS instance's bridge + recovery subscription, even when
982
+ // other instances keep the shared container alive (multi-chain sessions
983
+ // share one static container). Leaving them attached lets a logged-out
984
+ // transport's retry timer fire recovery and flush a queued message into a
985
+ // torn-down container on the next session — the "iframe not loaded" pageerror.
986
+ this.cleanupBridge == null ? void 0 : this.cleanupBridge.call(this);
987
+ this.cleanupBridge = null;
988
+ this.cleanupRecoverySubscription == null ? void 0 : this.cleanupRecoverySubscription.call(this);
989
+ this.cleanupRecoverySubscription = null;
971
990
  if (IframeManager.sharedWaasSDKContainer && IframeManager.iframeInstanceCount === 0) {
972
- this.cleanupBridge == null ? void 0 : this.cleanupBridge.call(this);
973
- this.cleanupBridge = null;
974
991
  IframeManager.sharedWaasSDKContainer.destroy();
975
992
  IframeManager.sharedWaasSDKContainer = null;
976
993
  IframeManager.iframeLoadPromise = null;
977
994
  }
978
995
  this.waasSDKContainer = null;
996
+ // Drop the transport + handler so the next operation re-inits and rebuilds a
997
+ // fresh bridge instead of short-circuiting on initializeMessageTransport's
998
+ // "already initialized" guard with a now-detached bridge.
999
+ this.messageTransport = null;
1000
+ this.iframeMessageHandler = null;
1001
+ this.iframeRequestChannel = undefined;
979
1002
  }
980
1003
  }
981
1004
  constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, chainName, sdkVersion, authMode = AuthMode.HEADER, authToken, debug, baseClientKeysharesRelayApiUrl, additionalTrustedOrigins, iframeLoadTimeout, maxRetryAttempts }, internalOptions){
@@ -987,6 +1010,9 @@ class IframeManager {
987
1010
  /** Teardown function returned by setupMessageTransportBridge — detaches all
988
1011
  * listeners. Tracked so we can rebuild the bridge on iframe recovery without
989
1012
  * leaking listeners against the dead iframe. */ this.cleanupBridge = null;
1013
+ /** Unsubscribe for the onRecoveryRequested listener. Tracked so logout detaches
1014
+ * it — otherwise the request channel's retry timer keeps firing recovery against
1015
+ * a torn-down transport on the next session. */ this.cleanupRecoverySubscription = null;
990
1016
  this.iframe = null;
991
1017
  this.waasSDKContainer = null;
992
1018
  this.environmentId = environmentId;
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/browser-wallet-client",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@dynamic-labs-wallet/core": "1.0.11",
7
+ "@dynamic-labs-wallet/core": "1.0.12",
8
8
  "@dynamic-labs/logger": "^4.45.2",
9
9
  "@dynamic-labs/message-transport": "^4.45.2"
10
10
  },
@@ -17,6 +17,10 @@ export declare class IframeManager {
17
17
  * listeners. Tracked so we can rebuild the bridge on iframe recovery without
18
18
  * leaking listeners against the dead iframe. */
19
19
  private cleanupBridge;
20
+ /** Unsubscribe for the onRecoveryRequested listener. Tracked so logout detaches
21
+ * it — otherwise the request channel's retry timer keeps firing recovery against
22
+ * a torn-down transport on the next session. */
23
+ private cleanupRecoverySubscription;
20
24
  private static iframeLoadPromise;
21
25
  protected iframe: HTMLIFrameElement | null;
22
26
  private readonly debug;
@@ -1 +1 @@
1
- {"version":3,"file":"IframeManager.d.ts","sourceRoot":"","sources":["../../../src/client/iframeManager/IframeManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IframeManager.d.ts","sourceRoot":"","sources":["../../../src/client/iframeManager/IframeManager.ts"],"names":[],"mappings":"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"}