@edryslabs/genericprovider 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -88,6 +88,7 @@ export declare class GenericProvider extends Observable<string> {
88
88
  readonly doc: Y.Doc;
89
89
  readonly transport: Transport;
90
90
  readonly awareness: awarenessProtocol.Awareness;
91
+ readonly appAwareness: awarenessProtocol.Awareness;
91
92
  readonly pubsub: PubSubChannel;
92
93
  private _status;
93
94
  private _synced;
@@ -99,15 +100,20 @@ export declare class GenericProvider extends Observable<string> {
99
100
  private _bcChannel;
100
101
  private _bcConnected;
101
102
  private _bcSubscriber?;
102
- private _hashMismatchCount;
103
- private _lastHashMismatchTime;
103
+ private _resyncAttemptCount;
104
+ private _lastResyncAttemptTime;
105
+ private _pendingResyncTimeoutId?;
104
106
  private _syncRequestTimes;
105
107
  private _maxSyncRequestsPerWindow;
106
108
  private _syncRequestWindowMs;
109
+ private _pendingSyncReply;
110
+ private _pendingSyncReplyTimeoutId?;
111
+ private _syncReplySuppressionMs;
107
112
  private _localSeqNum;
108
- private _remoteSeqNums;
109
- private _corruptedMessageCount;
110
- private _lastCorruptedMessageTime;
113
+ private _remoteSeqInfo;
114
+ private _gapCheckTimers;
115
+ private _seqWindowSize;
116
+ private _gapGraceMs;
111
117
  private _batchUpdates;
112
118
  private _pendingUpdate;
113
119
  private _batchTimeoutId?;
@@ -115,11 +121,15 @@ export declare class GenericProvider extends Observable<string> {
115
121
  private _pendingAwarenessClients;
116
122
  private _awarenessTimeoutId?;
117
123
  private _lastAwarenessTime;
124
+ private _pendingAppAwarenessClients;
125
+ private _appAwarenessTimeoutId?;
126
+ private _lastAppAwarenessTime;
118
127
  private _excludeOrigins;
119
128
  private _localId?;
120
129
  private _syncMode;
121
130
  private _updateHandler?;
122
131
  private _awarenessUpdateHandler?;
132
+ private _appAwarenessUpdateHandler?;
123
133
  private _unsubscribeTransport?;
124
134
  private _beforeUnloadHandler?;
125
135
  /**
@@ -131,6 +141,7 @@ export declare class GenericProvider extends Observable<string> {
131
141
  */
132
142
  constructor(doc: Y.Doc, transport: Transport, options?: {
133
143
  awareness?: awarenessProtocol.Awareness;
144
+ appAwareness?: awarenessProtocol.Awareness;
134
145
  /**
135
146
  * Interval in milliseconds for periodic sync retries.
136
147
  * Helps recover from packet loss. Set to 0 to disable.
@@ -148,7 +159,8 @@ export declare class GenericProvider extends Observable<string> {
148
159
  * Updates are collected and sent after this delay in milliseconds.
149
160
  * Set to 0 to send updates immediately (no batching).
150
161
  * Recommended: 50-200ms for good balance between latency and efficiency.
151
- * @default 0 (disabled - immediate transmission)
162
+ * @default the transport's `preferredBatchMs` hint if it declares one,
163
+ * otherwise 0 (disabled - immediate transmission)
152
164
  */
153
165
  batchUpdates?: number;
154
166
  /**
@@ -191,6 +203,47 @@ export declare class GenericProvider extends Observable<string> {
191
203
  * @default 'push-pull'
192
204
  */
193
205
  syncMode?: 'push-pull' | 'pull';
206
+ /**
207
+ * Max number of sync requests (SyncStep1 pulls and syncNow() pushes
208
+ * combined) this provider will send within `syncRequestWindowMs`.
209
+ * Protects against self-inflicted resync storms (e.g. many hash
210
+ * mismatches firing in a short window under packet loss). Raise this
211
+ * if legitimate resyncs are being throttled under heavy loss; lower
212
+ * it to bound worst-case traffic more aggressively per peer.
213
+ * @default 20
214
+ */
215
+ maxSyncRequestsPerWindow?: number;
216
+ /**
217
+ * Rolling time window (ms) over which `maxSyncRequestsPerWindow` is
218
+ * enforced.
219
+ * @default 10000
220
+ */
221
+ syncRequestWindowMs?: number;
222
+ /**
223
+ * Max random delay (ms) before replying to a SyncStep1 request, used
224
+ * to let other peers' replies pre-empt a redundant one (NACK-style
225
+ * suppression). Only engages once at least 2 other peers are known via
226
+ * awareness. Larger values suppress more redundant traffic in large
227
+ * rooms at the cost of higher requester-perceived latency.
228
+ * @default 30
229
+ */
230
+ syncReplySuppressionMs?: number;
231
+ /**
232
+ * Grace period (ms) after detecting a suspected sequence-number gap
233
+ * before requesting a resync. Tolerates mere network reordering
234
+ * without treating it as loss; lower it to detect genuine packet loss
235
+ * faster at the risk of more false-positive resyncs under jitter.
236
+ * @default 300
237
+ */
238
+ gapGraceMs?: number;
239
+ /**
240
+ * Number of recent sequence numbers retained per remote peer for
241
+ * duplicate/gap detection. Raise if a transport can deliver messages
242
+ * extremely out of order across a wide window; the default is ample
243
+ * for typical reordering/jitter.
244
+ * @default 64
245
+ */
246
+ seqWindowSize?: number;
194
247
  });
195
248
  /**
196
249
  * Connect to the backend and start syncing.
@@ -251,6 +304,93 @@ export declare class GenericProvider extends Observable<string> {
251
304
  * Corrupt messages are rejected immediately without attempting to decode.
252
305
  */
253
306
  private _handleIncomingMessage;
307
+ /**
308
+ * Schedule a SyncStep2 reply after a short random delay instead of
309
+ * sending immediately. If another peer's reply is overheard in the
310
+ * meantime (`_cancelPendingSyncReply`), this reply is dropped as
311
+ * redundant - the requester likely already got what it needed.
312
+ *
313
+ * A reply that is already pending when this is called answers a
314
+ * *different* SyncStep1 request (e.g. peer A's request, followed 5ms
315
+ * later by peer B's) - it must not be silently overwritten by the new
316
+ * one. Flush it immediately, then schedule the new reply fresh. The only
317
+ * sanctioned way a reply gets dropped is `_cancelPendingSyncReply()`,
318
+ * because we overheard someone else's SyncStep2 for the SAME request.
319
+ */
320
+ private _scheduleSyncReply;
321
+ /** Cancel a pending suppressed reply, if any. */
322
+ private _cancelPendingSyncReply;
323
+ /**
324
+ * Send a SyncStep2 reply, gated by the same shared per-peer budget as
325
+ * SyncStep1 requests/syncNow() pushes (`_tryReserveSyncSlot()`).
326
+ *
327
+ * Previously SyncStep2 replies were completely unrated - the only
328
+ * defense against redundant replies was the best-effort NACK-style
329
+ * suppression in `_scheduleSyncReply()`/`_cancelPendingSyncReply()`,
330
+ * which itself is just an ordinary broadcast message subject to the same
331
+ * wire corruption as everything else. Under sustained corruption, more
332
+ * competing repliers independently miss the "someone already answered"
333
+ * signal as peer count grows, and none of that traffic was bounded.
334
+ * Measured in test/dummy/bench-corruption-storm.ts: SyncStep2/SyncStep1
335
+ * ratio grew from ~1.1-1.3 at N=2 to ~4.5-5.9 at N=10 (should stay near
336
+ * 1 if suppression alone were sufficient). This is a hard backstop on
337
+ * top of that suppression, not a replacement for it - a rate-limited
338
+ * reply is dropped silently (no warn) since under normal, uncorrupted
339
+ * operation this path is rarely exercised and logging every drop here
340
+ * would itself become log spam exactly when things are already noisy.
341
+ */
342
+ private _sendSyncReply;
343
+ /**
344
+ * Track a received sequence number for reordering-tolerant gap detection.
345
+ * Does not gate whether the update gets applied — only decides whether a
346
+ * gap looks suspicious enough to (eventually) request a resync.
347
+ */
348
+ private _trackRemoteSeq;
349
+ /**
350
+ * Re-check a suspected sequence gap after a short grace period instead of
351
+ * requesting a resync immediately. Pure network reordering (a message
352
+ * that's merely late, not lost) typically resolves itself within the
353
+ * grace window, so this avoids the resync storms that immediate gap
354
+ * detection caused under jitter. Real packet loss still gets caught —
355
+ * just `_gapGraceMs` later — and the periodic sync interval / hash
356
+ * verification remain as further safety nets regardless.
357
+ */
358
+ private _scheduleGapCheck;
359
+ /**
360
+ * Unified entry point for ALL resync triggers (hash mismatch, corrupted
361
+ * message, confirmed sequence gap). Coalesces them behind a single
362
+ * pending timer and a single shared escalation counter, so a burst of
363
+ * triggers from different causes in a short window schedules exactly one
364
+ * resync instead of three independent ones each able to draw on the
365
+ * shared `_tryReserveSyncSlot()` budget on their own.
366
+ *
367
+ * Always resolves to `syncNow()` (push + pull) rather than distinguishing
368
+ * a push-only/pull-only variant per trigger. `syncNow()`'s push half is
369
+ * already a no-op when there's nothing to send (it only calls
370
+ * `_sendUpdate()` when `update.length > 0`), so unifying on push+pull is
371
+ * strictly simpler than threading a `push` flag through a *shared*
372
+ * coordinator (where the "right" answer for an absorbed trigger is
373
+ * ambiguous anyway - was it push-worthy or not?). It also closes a latent
374
+ * gap where the corrupted-message and gap-confirmed triggers previously
375
+ * called pull-only `_sendSyncStep1()` and could never deliver this peer's
376
+ * own surplus edits made during a divergence window.
377
+ */
378
+ private _requestResync;
379
+ /**
380
+ * Reserve a slot in the sync rate limiter (max `_maxSyncRequestsPerWindow`
381
+ * per `_syncRequestWindowMs`), recording the request if there's room.
382
+ * Shared by `_sendSyncStep1()` and `syncNow()` so a burst of triggers from
383
+ * different sources (periodic sync, hash-mismatch resyncs, gap-check
384
+ * confirmations) draws from one combined budget instead of each having
385
+ * its own uncapped or separately-capped allowance.
386
+ */
387
+ private _tryReserveSyncSlot;
388
+ /**
389
+ * Encode and send a SyncStep1 message requesting missing updates.
390
+ * Does not check the rate limiter itself - callers must reserve a slot
391
+ * via `_tryReserveSyncSlot()` first.
392
+ */
393
+ private _writeSyncStep1;
254
394
  /**
255
395
  * Send SyncStep1 message to request missing updates.
256
396
  * This is sent when first connecting to sync with remote peers.
@@ -263,10 +403,6 @@ export declare class GenericProvider extends Observable<string> {
263
403
  * If verifyUpdates is enabled, includes sequence number and document hash for ordering and desync detection.
264
404
  */
265
405
  private _sendUpdate;
266
- /**
267
- * Send awareness update to the transport.
268
- */
269
- private _sendAwarenessUpdate;
270
406
  /**
271
407
  * Send a pub/sub message.
272
408
  * Internal method called by PubSubChannel.
@@ -294,6 +430,10 @@ export declare class GenericProvider extends Observable<string> {
294
430
  * Automatically disabled in non-browser environments.
295
431
  */
296
432
  private _setupBroadcastChannel;
433
+ /**
434
+ * Encode and publish an awareness update for the local client to the BroadcastChannel.
435
+ */
436
+ private _publishAwarenessToBroadcastChannel;
297
437
  /**
298
438
  * Disconnect from BroadcastChannel and mark local client as offline.
299
439
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}