@peerbit/shared-log 13.2.24 → 13.2.25

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.
Files changed (81) hide show
  1. package/dist/src/checked-prune.d.ts +12 -0
  2. package/dist/src/checked-prune.d.ts.map +1 -1
  3. package/dist/src/checked-prune.js +33 -0
  4. package/dist/src/checked-prune.js.map +1 -1
  5. package/dist/src/coordinate-persistence.d.ts +211 -0
  6. package/dist/src/coordinate-persistence.d.ts.map +1 -0
  7. package/dist/src/coordinate-persistence.js +1133 -0
  8. package/dist/src/coordinate-persistence.js.map +1 -0
  9. package/dist/src/errors.d.ts +1 -0
  10. package/dist/src/errors.d.ts.map +1 -1
  11. package/dist/src/errors.js +19 -0
  12. package/dist/src/errors.js.map +1 -1
  13. package/dist/src/index.d.ts +127 -133
  14. package/dist/src/index.d.ts.map +1 -1
  15. package/dist/src/index.js +1400 -4269
  16. package/dist/src/index.js.map +1 -1
  17. package/dist/src/instance-lifecycle.d.ts +117 -0
  18. package/dist/src/instance-lifecycle.d.ts.map +1 -0
  19. package/dist/src/instance-lifecycle.js +254 -0
  20. package/dist/src/instance-lifecycle.js.map +1 -0
  21. package/dist/src/join-warmup.d.ts +86 -0
  22. package/dist/src/join-warmup.d.ts.map +1 -0
  23. package/dist/src/join-warmup.js +351 -0
  24. package/dist/src/join-warmup.js.map +1 -0
  25. package/dist/src/native-write-through-block-store.d.ts +123 -0
  26. package/dist/src/native-write-through-block-store.d.ts.map +1 -0
  27. package/dist/src/native-write-through-block-store.js +989 -0
  28. package/dist/src/native-write-through-block-store.js.map +1 -0
  29. package/dist/src/peer-session.d.ts +117 -0
  30. package/dist/src/peer-session.d.ts.map +1 -0
  31. package/dist/src/peer-session.js +259 -0
  32. package/dist/src/peer-session.js.map +1 -0
  33. package/dist/src/replication-announcement.d.ts +116 -0
  34. package/dist/src/replication-announcement.d.ts.map +1 -0
  35. package/dist/src/replication-announcement.js +515 -0
  36. package/dist/src/replication-announcement.js.map +1 -0
  37. package/dist/src/replicator-liveness.d.ts +59 -0
  38. package/dist/src/replicator-liveness.d.ts.map +1 -0
  39. package/dist/src/replicator-liveness.js +304 -0
  40. package/dist/src/replicator-liveness.js.map +1 -0
  41. package/dist/src/sync/dispatch-lifecycle.d.ts +48 -0
  42. package/dist/src/sync/dispatch-lifecycle.d.ts.map +1 -0
  43. package/dist/src/sync/dispatch-lifecycle.js +141 -0
  44. package/dist/src/sync/dispatch-lifecycle.js.map +1 -0
  45. package/dist/src/sync/factory.d.ts +29 -0
  46. package/dist/src/sync/factory.d.ts.map +1 -0
  47. package/dist/src/sync/factory.js +87 -0
  48. package/dist/src/sync/factory.js.map +1 -0
  49. package/dist/src/sync/pending-sync-store.d.ts +105 -0
  50. package/dist/src/sync/pending-sync-store.d.ts.map +1 -0
  51. package/dist/src/sync/pending-sync-store.js +877 -0
  52. package/dist/src/sync/pending-sync-store.js.map +1 -0
  53. package/dist/src/sync/rateless-iblt.d.ts +4 -1
  54. package/dist/src/sync/rateless-iblt.d.ts.map +1 -1
  55. package/dist/src/sync/rateless-iblt.js +102 -106
  56. package/dist/src/sync/rateless-iblt.js.map +1 -1
  57. package/dist/src/sync/simple.d.ts +10 -41
  58. package/dist/src/sync/simple.d.ts.map +1 -1
  59. package/dist/src/sync/simple.js +259 -952
  60. package/dist/src/sync/simple.js.map +1 -1
  61. package/dist/src/sync/sync-peer-state.d.ts +16 -0
  62. package/dist/src/sync/sync-peer-state.d.ts.map +1 -0
  63. package/dist/src/sync/sync-peer-state.js +82 -0
  64. package/dist/src/sync/sync-peer-state.js.map +1 -0
  65. package/package.json +9 -9
  66. package/src/checked-prune.ts +35 -0
  67. package/src/coordinate-persistence.ts +1796 -0
  68. package/src/errors.ts +21 -0
  69. package/src/index.ts +4014 -7858
  70. package/src/instance-lifecycle.ts +351 -0
  71. package/src/join-warmup.ts +507 -0
  72. package/src/native-write-through-block-store.ts +1170 -0
  73. package/src/peer-session.ts +336 -0
  74. package/src/replication-announcement.ts +744 -0
  75. package/src/replicator-liveness.ts +439 -0
  76. package/src/sync/dispatch-lifecycle.ts +230 -0
  77. package/src/sync/factory.ts +154 -0
  78. package/src/sync/pending-sync-store.ts +1085 -0
  79. package/src/sync/rateless-iblt.ts +122 -132
  80. package/src/sync/simple.ts +334 -1144
  81. package/src/sync/sync-peer-state.ts +107 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-write-through-block-store.js","sourceRoot":"","sources":["../../src/native-write-through-block-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ export type PeerSessionKind = "opening" | "departing";
2
+ export type PeerSessionPhase = "opening" | "open" | "departing" | "superseded";
3
+ export type PeerSessionDeps = {
4
+ isReplicationLifecycleActive: (controller: AbortController | undefined) => boolean;
5
+ getReplicationLifecycleController: () => AbortController | undefined;
6
+ };
7
+ export type PeerReceiveAdmissionOptions = {
8
+ allowReplicationInfoBlocked?: boolean;
9
+ allowCleanupGate?: boolean;
10
+ };
11
+ export declare class PeerSession {
12
+ private readonly registry;
13
+ readonly peerHash: string;
14
+ readonly kind: PeerSessionKind;
15
+ readonly replicationLifecycleController: AbortController | undefined;
16
+ phase: PeerSessionPhase;
17
+ replicatorRemoved: boolean;
18
+ openingBarrierActive: boolean;
19
+ readonly createdAt: number;
20
+ constructor(registry: PeerSessionRegistry, peerHash: string, kind: PeerSessionKind, replicationLifecycleController: AbortController | undefined);
21
+ /** ≡ former SharedLog.isCurrentSubscriptionEpoch(this.peerHash, this). */
22
+ isCurrent(): boolean;
23
+ /** Barrier window opens — ≡ the legacy
24
+ * `_subscriptionOpeningEpochByPeer.set(peerHash, thisSession)`. */
25
+ beginOpeningBarrier(): void;
26
+ /** Barrier window closes — ≡ the legacy identity-guarded
27
+ * `_subscriptionOpeningEpochByPeer.delete(peerHash)`. Unconditional:
28
+ * the map guard only avoided clobbering a NEWER peer-keyed entry, and
29
+ * per-session flags cannot collide (a newer barrier flags its own,
30
+ * already-rotated session). */
31
+ finishOpeningBarrier(): void;
32
+ /** ≡ ownsReplicationLifecycle() && ownsSubscriptionEpoch() with both
33
+ * captured at the epoch-advance. */
34
+ isActive(): boolean;
35
+ /** ≡ former SharedLog.isPeerReceiveAdmissionOpen(peerHash,
36
+ * this.replicationLifecycleController, this, options). */
37
+ isReceiveAdmissionOpen(options?: PeerReceiveAdmissionOptions): boolean;
38
+ }
39
+ export declare class PeerSessionRegistry {
40
+ readonly deps: PeerSessionDeps;
41
+ sessions: Map<string, PeerSession>;
42
+ _replicationInfoReceiveEpochByPeer: Map<string, object>;
43
+ _receiveCleanupGateByPeer: Map<string, number>;
44
+ _replicationInfoBlockedPeers: Set<string>;
45
+ constructor(deps: PeerSessionDeps);
46
+ /** open()-time re-init: REPLACE the map instances, matching today's
47
+ * `= new Map()` re-inits (index.ts ctor / open).
48
+ * The session map is intentionally NOT cleared at _close — tokens must
49
+ * stay current across close so a late continuation's epoch check resolves
50
+ * exactly as it does today (close-safety comes from the paired
51
+ * lifecycle-controller check, not the epoch). There is NO clearForClose()
52
+ * for sessions; the receive-epoch map, by contrast, IS cleared at close. */
53
+ resetForOpen(): void;
54
+ /** ≡ the legacy `this._replicationInfoBlockedPeers.add(peerHash)` (host
55
+ * Set, fence B5). */
56
+ blockReplicationInfo(peerHash: string): void;
57
+ /** ≡ the legacy `this._replicationInfoBlockedPeers.delete(peerHash)`. */
58
+ unblockReplicationInfo(peerHash: string): void;
59
+ /** ≡ the legacy `this._replicationInfoBlockedPeers.has(peerHash)`. */
60
+ isReplicationInfoBlocked(peerHash: string): boolean;
61
+ /** _close counterpart of the legacy
62
+ * `this._replicationInfoReceiveEpochByPeer?.clear()`: a receive-epoch
63
+ * capture held across close must compare against null, never against a
64
+ * surviving token. Sessions deliberately survive close (see
65
+ * resetForOpen); the paired membership-lifecycle term at every
66
+ * receive-epoch check site makes the ordering unobservable either way. */
67
+ clearReceiveEpochsForClose(): void;
68
+ /** _close counterpart of the legacy
69
+ * `this._receiveCleanupGateByPeer?.clear()`: an in-place clear (NOT a
70
+ * map replacement) so an in-flight removal's captured release still
71
+ * drains the instance it incremented — see acquireReceiveCleanupGate. */
72
+ clearCleanupGatesForClose(): void;
73
+ /** ≡ removeReplicator's inline `blockPeerReceiveAdmission` +
74
+ * release-in-`finally` pair (fence B6). Acquire captures the CURRENT
75
+ * gate-map instance and increments once; the returned release is
76
+ * idempotent and decrements the captured map, deleting the entry at 0.
77
+ * The map-instance capture is load-bearing: close/reopen replaces the
78
+ * map (resetForOpen), and a late release must drain the exact map it
79
+ * incremented — a release against a fresh open's map would corrupt that
80
+ * open's refcounts. The `?? 1` mirrors the legacy release: an entry
81
+ * cleared at _close decrements to 0 and stays deleted. */
82
+ acquireReceiveCleanupGate(peerHash: string): () => void;
83
+ /** ≡ the legacy `(this._receiveCleanupGateByPeer.get(peer) ?? 0) === 0`
84
+ * read (receive-admission term and prune final-confirmation filter). */
85
+ isReceiveCleanupGateOpen(peerHash: string): boolean;
86
+ /** ≡ legacy SharedLog.advanceReplicationInfoReceiveEpoch. Advances
87
+ * WITHOUT rotating the session — the recovery fence must survive
88
+ * removeReplicator, where the peer stays subscribed. */
89
+ advanceReceiveEpoch(peerHash: string): object;
90
+ /** ≡ legacy SharedLog.getReplicationInfoReceiveEpoch (`?? null`). */
91
+ receiveEpoch(peerHash: string): object | null;
92
+ /** ≡ legacy SharedLog.isCurrentReplicationInfoReceiveEpoch. */
93
+ isReceiveEpochCurrent(peerHash: string, epoch: object | null): boolean;
94
+ current(peerHash: string): PeerSession | null;
95
+ /** null is a VALID current value: a peer that never subscribed has no
96
+ * session, and the former host predicate admitted
97
+ * isCurrent(peer, null) === true. Preserved exactly. */
98
+ isCurrent(peerHash: string, session: object | null): boolean;
99
+ /** The only creation point. Supersedes (never deletes) the previous
100
+ * session — per-peer entries are never removed, matching today's map. */
101
+ rotate(peerHash: string, kind: PeerSessionKind): PeerSession;
102
+ /** Reconnect barrier completed. Identity-guarded phase mark; no-op when
103
+ * the expected token was superseded meanwhile. */
104
+ markOpen(peerHash: string, expectedSession: object): void;
105
+ /** Destructive removal committed for this peer. Mirrors the removal
106
+ * funnel's epoch scoping: an epoch-scoped removal only stamps the
107
+ * session it was scoped to — a reconnect during the removal's awaited
108
+ * lanes must not inherit the stamp. Undefined = unscoped removal,
109
+ * which stamps the current session as before; null scopes to "peer had
110
+ * no session at capture", so a session created meanwhile is never
111
+ * stamped. */
112
+ noteReplicatorRemoved(peerHash: string, expectedSession?: object | null): void;
113
+ /** Preserves the former SharedLog.isPeerReceiveAdmissionOpen predicate term
114
+ * for term. `session` may be null (pre-session peer). */
115
+ isReceiveAdmissionOpen(peerHash: string, session: object | null, replicationLifecycleController: AbortController | undefined, options?: PeerReceiveAdmissionOptions): boolean;
116
+ }
117
+ //# sourceMappingURL=peer-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-session.d.ts","sourceRoot":"","sources":["../../src/peer-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,259 @@
1
+ // One PeerSession per peer connection-epoch. The session instance IS the
2
+ // opaque subscription-epoch token formerly stored by SharedLog: every `===`
3
+ // epoch comparison keeps working because tokens were always compared by
4
+ // identity and never inspected. Compound predicates now live on
5
+ // isCurrent()/isActive()/isReceiveAdmissionOpen().
6
+ export class PeerSession {
7
+ registry;
8
+ peerHash;
9
+ kind;
10
+ // The lifecycle controller live at rotation. All current seams pair the
11
+ // epoch check with a lifecycle check against a controller captured in the
12
+ // same synchronous window as the epoch advance; capturing it here
13
+ // reproduces that pairing exactly.
14
+ replicationLifecycleController;
15
+ phase;
16
+ // Diagnostics only in stage 2: the destructive removal funnel observed a
17
+ // committed replicator removal under this connection-epoch.
18
+ replicatorRemoved = false;
19
+ // Reconnect-barrier WINDOW sub-state (stage-3 home of the legacy
20
+ // _subscriptionOpeningEpochByPeer map entry, whose value was always this
21
+ // session). True exactly while the barrier window is open: set when
22
+ // handleSubscriptionChange starts the opening barrier (same synchronous
23
+ // window as the rotation that made this session current), cleared in the
24
+ // barrier's `finally` — including the barrier-throw path — where the map
25
+ // entry used to be deleted. Deliberately NOT derived from
26
+ // `phase === "opening"`: phase is "opening" from rotate() — BEFORE the
27
+ // barrier starts — and stays "opening" forever if the barrier throws
28
+ // (markOpen never runs), which would wrongly keep granting the opening
29
+ // lease bypasses that today's window drops.
30
+ openingBarrierActive = false;
31
+ createdAt = Date.now(); // diagnostics only
32
+ constructor(registry, peerHash, kind, replicationLifecycleController) {
33
+ this.registry = registry;
34
+ this.peerHash = peerHash;
35
+ this.kind = kind;
36
+ this.replicationLifecycleController = replicationLifecycleController;
37
+ this.phase = kind;
38
+ }
39
+ /** ≡ former SharedLog.isCurrentSubscriptionEpoch(this.peerHash, this). */
40
+ isCurrent() {
41
+ return this.registry.current(this.peerHash) === this;
42
+ }
43
+ /** Barrier window opens — ≡ the legacy
44
+ * `_subscriptionOpeningEpochByPeer.set(peerHash, thisSession)`. */
45
+ beginOpeningBarrier() {
46
+ this.openingBarrierActive = true;
47
+ }
48
+ /** Barrier window closes — ≡ the legacy identity-guarded
49
+ * `_subscriptionOpeningEpochByPeer.delete(peerHash)`. Unconditional:
50
+ * the map guard only avoided clobbering a NEWER peer-keyed entry, and
51
+ * per-session flags cannot collide (a newer barrier flags its own,
52
+ * already-rotated session). */
53
+ finishOpeningBarrier() {
54
+ this.openingBarrierActive = false;
55
+ }
56
+ /** ≡ ownsReplicationLifecycle() && ownsSubscriptionEpoch() with both
57
+ * captured at the epoch-advance. */
58
+ isActive() {
59
+ return (this.isCurrent() &&
60
+ this.registry.deps.isReplicationLifecycleActive(this.replicationLifecycleController));
61
+ }
62
+ /** ≡ former SharedLog.isPeerReceiveAdmissionOpen(peerHash,
63
+ * this.replicationLifecycleController, this, options). */
64
+ isReceiveAdmissionOpen(options) {
65
+ return this.registry.isReceiveAdmissionOpen(this.peerHash, this, this.replicationLifecycleController, options);
66
+ }
67
+ }
68
+ export class PeerSessionRegistry {
69
+ deps;
70
+ // The per-peer session map (formerly _subscriptionEpochByPeer; renamed
71
+ // once the last raw-token comparison in index.ts was gone — the values
72
+ // ARE the legacy epoch tokens, compared by identity and never inspected).
73
+ // The rename retires the map's fence-ratchet baseline entry: session
74
+ // identity is the mechanism the ratchet drains fences INTO, not a fence.
75
+ sessions;
76
+ // Moved from SharedLog (fence B2, same name — the sanctioned file-to-file
77
+ // ratchet move). Local receive generations fence replication-info handlers
78
+ // that were admitted before a liveness eviction but reach the per-peer
79
+ // apply lane after it. Per-PEER, not per-session, on purpose: the token
80
+ // advances at removeReplicator, where the session does NOT rotate (the
81
+ // peer stays subscribed), and it must also fence a peer that never had a
82
+ // session. Unlike sessions this map IS cleared at _close (see
83
+ // clearReceiveEpochsForClose) and replaced at open.
84
+ _replicationInfoReceiveEpochByPeer;
85
+ // Moved from SharedLog (fence B6, same name — the sanctioned file-to-file
86
+ // ratchet move). Refcount of in-flight destructive peer cleanups: while
87
+ // non-zero, receive admission for the peer is closed and prune final
88
+ // confirmations ignore the peer. Per-PEER, not per-session, on purpose:
89
+ // the gate is held across removeReplicator's awaited lanes while a
90
+ // reconnect may rotate the session; a fresh session with a zero gate
91
+ // would reopen receive admission mid-drain. The map instance is replaced
92
+ // only at open (resetForOpen) and cleared in place at _close.
93
+ _receiveCleanupGateByPeer;
94
+ // Moved from SharedLog (fence B5, same name). Peers whose replication-info
95
+ // is fenced: added when a departure/unsubscribe rotation or a reconnect
96
+ // barrier starts, removed only when an opening barrier commits. Per-PEER,
97
+ // not per-session, on purpose (same reasoning as B2/B6 above): the block
98
+ // is set under one session (the departing rotation) and cleared under a
99
+ // LATER one (the opening barrier), so its lifetime deliberately spans
100
+ // session identities; readers (prune final-confirmation filter,
101
+ // announcement repair targeting, pruneOfflineReplicators) ask about peers
102
+ // that may have no session at all; and the `??`-fallback rotation in
103
+ // handleSubscriptionChange rotates WITHOUT touching blocked state — a
104
+ // per-session flag would silently reset it there. Replaced only at open
105
+ // (resetForOpen); deliberately NOT cleared at _close, matching the legacy
106
+ // host field site-for-site. Kept as a public field so existing tests can
107
+ // keep instrumenting the raw Set instance (events.spec.ts spies on its
108
+ // `delete`).
109
+ _replicationInfoBlockedPeers;
110
+ constructor(deps) {
111
+ this.deps = deps;
112
+ this.resetForOpen();
113
+ }
114
+ /** open()-time re-init: REPLACE the map instances, matching today's
115
+ * `= new Map()` re-inits (index.ts ctor / open).
116
+ * The session map is intentionally NOT cleared at _close — tokens must
117
+ * stay current across close so a late continuation's epoch check resolves
118
+ * exactly as it does today (close-safety comes from the paired
119
+ * lifecycle-controller check, not the epoch). There is NO clearForClose()
120
+ * for sessions; the receive-epoch map, by contrast, IS cleared at close. */
121
+ resetForOpen() {
122
+ this.sessions = new Map();
123
+ this._replicationInfoReceiveEpochByPeer = new Map();
124
+ this._receiveCleanupGateByPeer = new Map();
125
+ this._replicationInfoBlockedPeers = new Set();
126
+ }
127
+ /** ≡ the legacy `this._replicationInfoBlockedPeers.add(peerHash)` (host
128
+ * Set, fence B5). */
129
+ blockReplicationInfo(peerHash) {
130
+ this._replicationInfoBlockedPeers.add(peerHash);
131
+ }
132
+ /** ≡ the legacy `this._replicationInfoBlockedPeers.delete(peerHash)`. */
133
+ unblockReplicationInfo(peerHash) {
134
+ this._replicationInfoBlockedPeers.delete(peerHash);
135
+ }
136
+ /** ≡ the legacy `this._replicationInfoBlockedPeers.has(peerHash)`. */
137
+ isReplicationInfoBlocked(peerHash) {
138
+ return this._replicationInfoBlockedPeers.has(peerHash);
139
+ }
140
+ /** _close counterpart of the legacy
141
+ * `this._replicationInfoReceiveEpochByPeer?.clear()`: a receive-epoch
142
+ * capture held across close must compare against null, never against a
143
+ * surviving token. Sessions deliberately survive close (see
144
+ * resetForOpen); the paired membership-lifecycle term at every
145
+ * receive-epoch check site makes the ordering unobservable either way. */
146
+ clearReceiveEpochsForClose() {
147
+ this._replicationInfoReceiveEpochByPeer.clear();
148
+ }
149
+ /** _close counterpart of the legacy
150
+ * `this._receiveCleanupGateByPeer?.clear()`: an in-place clear (NOT a
151
+ * map replacement) so an in-flight removal's captured release still
152
+ * drains the instance it incremented — see acquireReceiveCleanupGate. */
153
+ clearCleanupGatesForClose() {
154
+ this._receiveCleanupGateByPeer.clear();
155
+ }
156
+ /** ≡ removeReplicator's inline `blockPeerReceiveAdmission` +
157
+ * release-in-`finally` pair (fence B6). Acquire captures the CURRENT
158
+ * gate-map instance and increments once; the returned release is
159
+ * idempotent and decrements the captured map, deleting the entry at 0.
160
+ * The map-instance capture is load-bearing: close/reopen replaces the
161
+ * map (resetForOpen), and a late release must drain the exact map it
162
+ * incremented — a release against a fresh open's map would corrupt that
163
+ * open's refcounts. The `?? 1` mirrors the legacy release: an entry
164
+ * cleared at _close decrements to 0 and stays deleted. */
165
+ acquireReceiveCleanupGate(peerHash) {
166
+ const gates = this._receiveCleanupGateByPeer;
167
+ gates.set(peerHash, (gates.get(peerHash) ?? 0) + 1);
168
+ let released = false;
169
+ return () => {
170
+ if (released) {
171
+ return;
172
+ }
173
+ released = true;
174
+ const remaining = (gates.get(peerHash) ?? 1) - 1;
175
+ if (remaining > 0) {
176
+ gates.set(peerHash, remaining);
177
+ }
178
+ else {
179
+ gates.delete(peerHash);
180
+ }
181
+ };
182
+ }
183
+ /** ≡ the legacy `(this._receiveCleanupGateByPeer.get(peer) ?? 0) === 0`
184
+ * read (receive-admission term and prune final-confirmation filter). */
185
+ isReceiveCleanupGateOpen(peerHash) {
186
+ return (this._receiveCleanupGateByPeer.get(peerHash) ?? 0) === 0;
187
+ }
188
+ /** ≡ legacy SharedLog.advanceReplicationInfoReceiveEpoch. Advances
189
+ * WITHOUT rotating the session — the recovery fence must survive
190
+ * removeReplicator, where the peer stays subscribed. */
191
+ advanceReceiveEpoch(peerHash) {
192
+ const next = {};
193
+ this._replicationInfoReceiveEpochByPeer.set(peerHash, next);
194
+ return next;
195
+ }
196
+ /** ≡ legacy SharedLog.getReplicationInfoReceiveEpoch (`?? null`). */
197
+ receiveEpoch(peerHash) {
198
+ return this._replicationInfoReceiveEpochByPeer.get(peerHash) ?? null;
199
+ }
200
+ /** ≡ legacy SharedLog.isCurrentReplicationInfoReceiveEpoch. */
201
+ isReceiveEpochCurrent(peerHash, epoch) {
202
+ return this.receiveEpoch(peerHash) === epoch;
203
+ }
204
+ current(peerHash) {
205
+ return this.sessions.get(peerHash) ?? null;
206
+ }
207
+ /** null is a VALID current value: a peer that never subscribed has no
208
+ * session, and the former host predicate admitted
209
+ * isCurrent(peer, null) === true. Preserved exactly. */
210
+ isCurrent(peerHash, session) {
211
+ return this.current(peerHash) === session;
212
+ }
213
+ /** The only creation point. Supersedes (never deletes) the previous
214
+ * session — per-peer entries are never removed, matching today's map. */
215
+ rotate(peerHash, kind) {
216
+ const previous = this.sessions.get(peerHash);
217
+ if (previous) {
218
+ previous.phase = "superseded";
219
+ }
220
+ const next = new PeerSession(this, peerHash, kind, this.deps.getReplicationLifecycleController());
221
+ this.sessions.set(peerHash, next);
222
+ return next;
223
+ }
224
+ /** Reconnect barrier completed. Identity-guarded phase mark; no-op when
225
+ * the expected token was superseded meanwhile. */
226
+ markOpen(peerHash, expectedSession) {
227
+ const current = this.sessions.get(peerHash);
228
+ if (current !== undefined &&
229
+ current === expectedSession &&
230
+ current.kind === "opening") {
231
+ current.phase = "open";
232
+ }
233
+ }
234
+ /** Destructive removal committed for this peer. Mirrors the removal
235
+ * funnel's epoch scoping: an epoch-scoped removal only stamps the
236
+ * session it was scoped to — a reconnect during the removal's awaited
237
+ * lanes must not inherit the stamp. Undefined = unscoped removal,
238
+ * which stamps the current session as before; null scopes to "peer had
239
+ * no session at capture", so a session created meanwhile is never
240
+ * stamped. */
241
+ noteReplicatorRemoved(peerHash, expectedSession) {
242
+ const current = this.sessions.get(peerHash);
243
+ if (current &&
244
+ (expectedSession === undefined || current === expectedSession)) {
245
+ current.replicatorRemoved = true;
246
+ }
247
+ }
248
+ /** Preserves the former SharedLog.isPeerReceiveAdmissionOpen predicate term
249
+ * for term. `session` may be null (pre-session peer). */
250
+ isReceiveAdmissionOpen(peerHash, session, replicationLifecycleController, options) {
251
+ return (this.deps.isReplicationLifecycleActive(replicationLifecycleController) &&
252
+ this.isCurrent(peerHash, session) &&
253
+ (options?.allowReplicationInfoBlocked === true ||
254
+ !this.isReplicationInfoBlocked(peerHash)) &&
255
+ (options?.allowCleanupGate === true ||
256
+ this.isReceiveCleanupGateOpen(peerHash)));
257
+ }
258
+ }
259
+ //# sourceMappingURL=peer-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peer-session.js","sourceRoot":"","sources":["../../src/peer-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ import type { PublicSignKey } from "@peerbit/crypto";
2
+ import type { RPC } from "@peerbit/rpc";
3
+ import { debounceFixedInterval } from "@peerbit/time";
4
+ import type { TransportMessage } from "./message.js";
5
+ import type { ReplicationRangeIndexable } from "./ranges.js";
6
+ import { AddedReplicationSegmentMessage, AllReplicatingSegmentsMessage, StoppedReplicating } from "./replication.js";
7
+ /**
8
+ * Replication announcements are best-effort convergence messages. A detached
9
+ * fanout shard can time out even though the shared log itself remains open.
10
+ * Keep retries deliberately limited to concrete TimeoutErrors: abort/close and
11
+ * unexpected programming/data errors must retain their existing semantics.
12
+ *
13
+ * Exact constructor/name checks complement `instanceof` for errors crossing
14
+ * worker or duplicate-package boundaries in browsers.
15
+ */
16
+ export declare const isTransientReplicationAnnouncementError: (error: unknown, seen?: Set<unknown>) => boolean;
17
+ /**
18
+ * One session per announcement window — rotated at exactly the sites that
19
+ * bumped the legacy retry-generation counter: construction, resetForOpen,
20
+ * cancelCurrentReplicationStateAnnouncementRetry, and the pre-send bump in
21
+ * sendReplicationAnnouncement. Identity comparison replaces every numeric
22
+ * generation compare. Unlike the number, identity cannot alias across open
23
+ * cycles (the legacy reset-to-0 was safe only by the convention that a
24
+ * companion controller check accompanied every compare site).
25
+ */
26
+ export declare class AnnouncementWorkerSession {
27
+ readonly createdAt: number;
28
+ }
29
+ type ReplicationAnnouncementRepairTarget = {
30
+ key: PublicSignKey;
31
+ session: AnnouncementWorkerSession;
32
+ attempts: number;
33
+ done: boolean;
34
+ };
35
+ /**
36
+ * Repair-side adoption of a session. Replaces the legacy compound of the
37
+ * repair generation number, its generation controller, and the repair
38
+ * pending / targets / cohort-selected fields. One binding per adopted
39
+ * session; every rotation aborts the old binding's controller FIRST, then
40
+ * reassigns (abort listeners run synchronously and must observe
41
+ * pre-rotation state, as before). The fair cursor hash and max attempts
42
+ * deliberately stay OUTSIDE the binding: the cursor rotates best-effort
43
+ * coverage ACROSS generations, and max-attempts is a setup-scoped tunable.
44
+ */
45
+ export type ReplicationAnnouncementRepairBinding = {
46
+ session: AnnouncementWorkerSession;
47
+ controller: AbortController;
48
+ pending: boolean;
49
+ targets: Map<string, ReplicationAnnouncementRepairTarget>;
50
+ cohortSelected: boolean;
51
+ };
52
+ export type ReplicationAnnouncementRepairWorkerContext = {
53
+ session: AnnouncementWorkerSession;
54
+ lifecycleController: AbortController;
55
+ binding: ReplicationAnnouncementRepairBinding;
56
+ };
57
+ export type ReplicationAnnouncementDeps<R extends "u32" | "u64"> = {
58
+ isClosed: () => boolean;
59
+ getCloseSignal: () => AbortSignal;
60
+ getMyReplicationSegments: () => Promise<ReplicationRangeIndexable<R>[]>;
61
+ validatePersistedReplicationRangeSnapshot: (ranges: readonly {
62
+ mode: unknown;
63
+ }[]) => void;
64
+ getSubscribers: () => Promise<PublicSignKey[] | undefined> | PublicSignKey[] | undefined;
65
+ getSelfHash: () => string;
66
+ isBlockedPeer: (hash: string) => boolean;
67
+ getRpc: () => RPC<TransportMessage, TransportMessage>;
68
+ captureReplicationOwnershipLifecycle: () => AbortController;
69
+ throwIfReplicationOwnershipLifecycleInactive: (controller: AbortController) => void;
70
+ isAdaptiveReplicating: () => boolean;
71
+ callRebalanceParticipationDebounced: () => unknown;
72
+ queueCurrentReplicationStateAnnouncementRepair: () => void;
73
+ queueCurrentReplicationStateAnnouncementRetry: (error: unknown) => boolean;
74
+ };
75
+ export declare class ReplicationAnnouncementCoordinator<R extends "u32" | "u64"> {
76
+ private readonly deps;
77
+ replicationAnnouncementRetryDebounced: ReturnType<typeof debounceFixedInterval> | undefined;
78
+ _replicationAnnouncementRetryPending: boolean;
79
+ _announcementSession: AnnouncementWorkerSession;
80
+ _replicationAnnouncementRetryController: AbortController;
81
+ _replicationAnnouncementSendTails?: WeakMap<AbortController, Promise<void>>;
82
+ replicationAnnouncementRepairDebounced: ReturnType<typeof debounceFixedInterval> | undefined;
83
+ _announcementRepairBinding: ReplicationAnnouncementRepairBinding;
84
+ _replicationAnnouncementRepairFairCursorHash: string | undefined;
85
+ _replicationAnnouncementRepairMaxAttempts: number;
86
+ _replicationAnnouncementRepairController: AbortController;
87
+ constructor(deps: ReplicationAnnouncementDeps<R>);
88
+ private rotateAnnouncementSession;
89
+ private createRepairBinding;
90
+ resetForOpen(): void;
91
+ queueCurrentReplicationStateAnnouncementRetry(error: unknown): boolean;
92
+ setupReplicationAnnouncementRetryFunction(interval?: number): void;
93
+ setupReplicationAnnouncementRepairFunction(interval?: number, maxAttempts?: number): void;
94
+ cancelCurrentReplicationStateAnnouncementRepair(): void;
95
+ advanceCurrentReplicationStateAnnouncementRepairGeneration(): void;
96
+ queueCurrentReplicationStateAnnouncementRepair(): void;
97
+ /**
98
+ * Single validity predicate for announcement-repair workers. "stale":
99
+ * the store closed or a lifecycle controller aborted — exit silently.
100
+ * "superseded": a newer announcement session took over — the worker
101
+ * must requeue so the current session gets serviced. The binding
102
+ * identity comparison stays at the one call site that historically
103
+ * required it; folding it in here is a stage-5 semantic decision, not a
104
+ * consolidation.
105
+ */
106
+ private announcementRepairWorkerStatus;
107
+ runCurrentReplicationStateAnnouncementRepair(): Promise<void>;
108
+ repairCurrentReplicationStateAnnouncement(context?: ReplicationAnnouncementRepairWorkerContext): Promise<void>;
109
+ cancelCurrentReplicationStateAnnouncementRetry(): void;
110
+ sendReplicationAnnouncement(message: AllReplicatingSegmentsMessage | AddedReplicationSegmentMessage | StoppedReplicating, ownershipLifecycleController?: AbortController, options?: {
111
+ shouldSend?: () => boolean;
112
+ }): Promise<void>;
113
+ retryCurrentReplicationStateAnnouncement(): Promise<void>;
114
+ }
115
+ export {};
116
+ //# sourceMappingURL=replication-announcement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-announcement.d.ts","sourceRoot":"","sources":["../../src/replication-announcement.ts"],"names":[],"mappings":"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"}