cross-tab-worker-databus 0.20.20 → 0.20.21

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
@@ -2,6 +2,12 @@
2
2
 
3
3
  本项目遵循 [Semantic Versioning](https://semver.org/);变更记录格式参考 [Keep a Changelog](https://keepachangelog.com/)。
4
4
 
5
+ ## [0.20.21] - 2026-09-03
6
+
7
+ ### Fixed
8
+
9
+ - Recovery exhaustion diagnostics are now emitted at most once per failed recovery sequence and reset after a successful reopen.
10
+
5
11
  ## [0.20.20] - 2026-09-03
6
12
 
7
13
  ### Added
@@ -2,7 +2,7 @@ import {
2
2
  CrossTabDataBus,
3
3
  parseDataBusPublication,
4
4
  selectWorkerBackend
5
- } from "./chunk-2PUSQWOL.js";
5
+ } from "./chunk-UMMKMXOT.js";
6
6
 
7
7
  // src/centrifuge-session.ts
8
8
  import { Centrifuge } from "centrifuge";
@@ -1275,6 +1275,7 @@ var CrossTabDataBus = class {
1275
1275
  // Monotonic attempt number within one runtime recovery sequence; reset once
1276
1276
  // a transport reopen succeeds so traces can correlate repeated failures.
1277
1277
  recoveryAttempt = 0;
1278
+ recoveryExhausted = false;
1278
1279
  // True while the tab is hidden so an in-flight transport start does not mark
1279
1280
  // the transport ready after suspendTransport() has stopped it.
1280
1281
  suspended = false;
@@ -1883,7 +1884,10 @@ var CrossTabDataBus = class {
1883
1884
  this.lastRecoveryAt = now;
1884
1885
  const attempt = ++this.recoveryAttempt;
1885
1886
  if (attempt > this.recoveryMaxAttempts) {
1886
- this.trace.event({ type: "reliability", operation: "transport_recovery", attempt: this.recoveryMaxAttempts, outcome: "exhausted" });
1887
+ if (!this.recoveryExhausted) {
1888
+ this.recoveryExhausted = true;
1889
+ this.trace.event({ type: "reliability", operation: "transport_recovery", attempt: this.recoveryMaxAttempts, outcome: "exhausted" });
1890
+ }
1887
1891
  return;
1888
1892
  }
1889
1893
  this.trace.event({ type: "reliability", operation: "transport_recovery", attempt, outcome: "scheduled" });
@@ -1997,6 +2001,7 @@ var CrossTabDataBus = class {
1997
2001
  if (traceAttempt !== void 0) {
1998
2002
  this.trace.event({ type: "reliability", operation: "transport_recovery", attempt: traceAttempt, outcome: "succeeded" });
1999
2003
  this.recoveryAttempt = 0;
2004
+ this.recoveryExhausted = false;
2000
2005
  }
2001
2006
  if (this.startPromise === opening) this.startPromise = null;
2002
2007
  },
@@ -2104,4 +2109,4 @@ export {
2104
2109
  parseDataBusPublication,
2105
2110
  selectWorkerBackend
2106
2111
  };
2107
- //# sourceMappingURL=chunk-2PUSQWOL.js.map
2112
+ //# sourceMappingURL=chunk-UMMKMXOT.js.map