@ifc-lite/collab-server 0.5.1 → 0.6.0

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.
@@ -22,6 +22,12 @@ import { noopAuditSink, shortHash, } from './audit-log.js';
22
22
  import { createRateLimiter } from './rate-limit.js';
23
23
  const MESSAGE_SYNC = 0;
24
24
  const MESSAGE_AWARENESS = 1;
25
+ /**
26
+ * An awareness update naming ZERO clients: a single varUint `0` length prefix.
27
+ * `applyAwarenessUpdate` decodes it as a no-op, but it is a real WebSocket
28
+ * message, which is the point. See `Room.sendKeepalive`.
29
+ */
30
+ const EMPTY_AWARENESS_UPDATE = new Uint8Array([0]);
25
31
  // Inner sync-message subtypes (mirror y-protocols/sync constants) used for
26
32
  // the cheap pre-verify frame peek. Kept local so the peek never has to call
27
33
  // the full readSyncMessage (which applies payloads to the doc as a side
@@ -59,6 +65,17 @@ export class Room {
59
65
  this.id = id;
60
66
  this.doc = new Y.Doc();
61
67
  this.awareness = new Awareness(this.doc);
68
+ // y-protocols' Awareness constructor self-registers a local state of `{}`
69
+ // for its own clientID and renews it every ~15s. The server is a relay,
70
+ // not a participant: left in place, that entry is broadcast to every
71
+ // client as a peer, so every room badge read one too high (#2791). It
72
+ // showed "(2)" directly above a roster saying "You're the only one here",
73
+ // because the roster filters on a `user` field and the badge did not.
74
+ // Clearing the state also stops the renewal, which y-protocols guards on
75
+ // `getLocalState() !== null`.
76
+ // This must stay BEFORE the `update` listener is wired up below, so that
77
+ // clearing it cannot broadcast a removal for a peer no client ever saw.
78
+ this.awareness.setLocalState(null);
62
79
  this.persistence = opts.persistence;
63
80
  this.compactEvery = opts.compactEvery ?? 1000;
64
81
  this.auditSink = opts.auditSink ?? noopAuditSink;
@@ -143,6 +160,36 @@ export class Room {
143
160
  safeSend(conn.ws, encoding.toUint8Array(aenc));
144
161
  }
145
162
  }
163
+ /**
164
+ * Send an application-level keepalive to one peer.
165
+ *
166
+ * y-websocket's client closes a connection after
167
+ * `messageReconnectTimeout` (30s, a module-level const, not configurable)
168
+ * with no inbound MESSAGE, and only `websocket.onmessage` refreshes that
169
+ * clock (y-websocket/src/y-websocket.js:186,387-396). WebSocket protocol
170
+ * pings do not count: they are auto-ponged below the message layer, so the
171
+ * `ws.ping()` loop in `server.ts` cannot feed it.
172
+ *
173
+ * This server does not echo a peer's own updates back to it
174
+ * (`if (conn === origin) continue;` below, and the same for doc updates), so
175
+ * a room with ONE occupant produces no server-to-client traffic at all after
176
+ * the initial handshake. y-websocket's own comment says the timeout assumes
177
+ * "not even your own awareness updates (which are updated every 15 seconds)"
178
+ * come back, i.e. the reference server echoes them and ours does not.
179
+ *
180
+ * Until #2791 that gap was masked by an accident: the server's own Awareness
181
+ * ghost state renewed every ~15s and was broadcast to everyone, feeding the
182
+ * watchdog. Clearing the ghost removes the accident, so the keepalive has to
183
+ * be explicit. Measured: with the ghost gone and no keepalive, a lone client
184
+ * closed and reconnected at t=30s and t=63s over a 75s window; with either
185
+ * one present, zero closes.
186
+ */
187
+ sendKeepalive(conn) {
188
+ const enc = encoding.createEncoder();
189
+ encoding.writeVarUint(enc, MESSAGE_AWARENESS);
190
+ encoding.writeVarUint8Array(enc, EMPTY_AWARENESS_UPDATE);
191
+ safeSend(conn.ws, encoding.toUint8Array(enc));
192
+ }
146
193
  removeConnection(conn) {
147
194
  this.conns.delete(conn);
148
195
  if (conn.awarenessClients.size > 0) {
@@ -162,6 +209,7 @@ export class Room {
162
209
  // write-tagged frames (asymmetric CPU/GC DoS). Cheap peeks only here.
163
210
  if (!this.preCheckWriteFrame(conn, msg))
164
211
  return;
212
+ let dispatchable = msg;
165
213
  if (this.verifyMessage) {
166
214
  const decision = this.verifyMessage(msg, conn);
167
215
  if (!decision.ok) {
@@ -170,9 +218,27 @@ export class Room {
170
218
  this.counters.reject?.(reason);
171
219
  return;
172
220
  }
221
+ // A verifier that unwraps an outer envelope (e.g. the anti-replay
222
+ // protector's signed frame) hands back the inner y-protocol frame
223
+ // here; dispatch THAT, not the raw envelope bytes — the envelope
224
+ // isn't itself a valid sync/awareness frame.
225
+ if (decision.payload) {
226
+ dispatchable = decision.payload;
227
+ // The preCheckWriteFrame call above read the ENVELOPE (msg), whose
228
+ // outer varint is the verifier's own tag (e.g. SIGNED_TAG) and never
229
+ // MESSAGE_SYNC, so it returned true without consulting the role, the
230
+ // limiter, or the size cap (see preCheckWriteFrame's early return).
231
+ // decision.payload is a real, unwrapped write frame that peek never
232
+ // saw — re-run the same gate on the bytes we are actually about to
233
+ // dispatch, or a viewer holding a valid signing key can write to the
234
+ // doc, and an oversized/unrate-limited envelope bypasses the caps
235
+ // meant to bound Y.Doc-parse amplification.
236
+ if (!this.preCheckWriteFrame(conn, dispatchable))
237
+ return;
238
+ }
173
239
  }
174
240
  try {
175
- this.dispatchMessage(conn, msg);
241
+ this.dispatchMessage(conn, dispatchable);
176
242
  }
177
243
  catch {
178
244
  // Malformed/truncated frame from a peer. lib0 decoding throws
@@ -340,7 +406,9 @@ export class Room {
340
406
  safeSend(conn.ws, message);
341
407
  }
342
408
  };
343
- async destroy() {
409
+ /** Close connections and detach the doc/awareness listeners. Shared by
410
+ * `destroy()` and `disposeUnloaded()`; does not touch persistence. */
411
+ closeConnsAndListeners() {
344
412
  this.destroyed = true;
345
413
  for (const conn of this.conns) {
346
414
  try {
@@ -351,6 +419,22 @@ export class Room {
351
419
  this.conns.clear();
352
420
  this.doc.off('update', this.onDocUpdate);
353
421
  this.awareness.off('update', this.onAwarenessUpdate);
422
+ }
423
+ /**
424
+ * Tear down a room that never finished loading. Same disposal as
425
+ * `destroy()` MINUS the final compaction: this room's `doc` is empty or
426
+ * partial because `loadFromDisk()` threw, so compacting it would replace
427
+ * the persisted log with that emptiness -- turning a transient disk error
428
+ * (EMFILE, ENOSPC, an NFS blip) or a corrupt log into permanent data loss.
429
+ * Compaction is only ever valid for a doc that loaded successfully.
430
+ */
431
+ async disposeUnloaded() {
432
+ this.closeConnsAndListeners();
433
+ this.awareness.destroy();
434
+ this.doc.destroy();
435
+ }
436
+ async destroy() {
437
+ this.closeConnsAndListeners();
354
438
  // Final compaction so the next load picks up the freshest state.
355
439
  try {
356
440
  await this.persistence.compact(this.id, Y.encodeStateAsUpdate(this.doc));
@@ -396,7 +480,31 @@ export class RoomManager {
396
480
  const verifyMessage = this.options.verifyMessage;
397
481
  pending = (async () => {
398
482
  const room = new Room(roomId, { ...this.options, counters, verifyMessage });
399
- await room.loadFromDisk();
483
+ // `new Room(...)` already started disposables (notably y-protocols'
484
+ // `Awareness`, which self-starts a `setInterval` renewal/eviction
485
+ // timer in its constructor) and wired `doc`/`awareness` listeners.
486
+ // If loadFromDisk() throws, `room` is never returned to any caller,
487
+ // so nothing outside this closure can reach it to dispose those
488
+ // handles — they would otherwise leak for the life of the process.
489
+ // Tear the half-built room down here, where we still hold the only
490
+ // reference, then rethrow so the promise still rejects as before.
491
+ //
492
+ // Use disposeUnloaded(), NOT destroy(): destroy() ends with a final
493
+ // compact() of `room.doc` onto the persisted log, and on this path
494
+ // `room.doc` is empty or partial (that is what loadFromDisk() failing
495
+ // means). A transient EMFILE/ENOSPC blip -- or a corrupt log -- would
496
+ // otherwise be turned into permanent data loss by the "cleanup" that
497
+ // runs right here.
498
+ try {
499
+ await room.loadFromDisk();
500
+ }
501
+ catch (err) {
502
+ await room.disposeUnloaded().catch((disposeErr) => {
503
+ // eslint-disable-next-line no-console
504
+ console.error(`[collab-server] disposeUnloaded error for ${roomId} (original error wins):`, disposeErr);
505
+ });
506
+ throw err;
507
+ }
400
508
  return room;
401
509
  })();
402
510
  // Evict the cached promise if initialization fails so a transient load
@@ -1 +1 @@
1
- {"version":3,"file":"room-manager.js","sourceRoot":"","sources":["../src/room-manager.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACtH,OAAO,KAAK,YAAY,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAIzB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACL,aAAa,EACb,SAAS,GAGV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAA2C,MAAM,iBAAiB,CAAC;AAE7F,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,kEAAkE;AAClE,MAAM,UAAU,GAAG,YAAY,CAAC,mBAAmB,CAAC;AACpD,MAAM,WAAW,GAAG,YAAY,CAAC,gBAAgB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,GAAG,GAAG,IAAI,CAAC;AA+CvC,MAAM,OAAO,IAAI;IACN,EAAE,CAAS;IACX,GAAG,CAAQ;IACX,SAAS,CAAY;IACb,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClC,WAAW,CAAc;IAClC,mBAAmB,GAAG,CAAC,CAAC;IACf,YAAY,CAAS;IACrB,SAAS,CAAY;IACrB,YAAY,CAA6C;IACzD,aAAa,CAAmB;IACzC,QAAQ,CAA6D;IACrE,SAAS,GAAG,KAAK,CAAC;IAE1B,YAAY,EAAU,EAAE,IAAiB;QACvC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;QACnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QAEpC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtD,CAAC;IAED,WAAW,CAAC,QAAoE;QAC9E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CACH,SAAoB,EACpB,MAAmB,EACnB,MAAc,EACd,MAAgC;QAEhC,KAAK,OAAO,CAAC,OAAO,CAClB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,MAAM;YACN,MAAM;YACN,MAAM;SACP,CAAC,CACH,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAClC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,QAAgB;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACxC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/F,IAAI,CAAC;oBACH,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,qCAAqC;gBACvC,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,2CAA2C;IAC3C,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,aAAa,CAAC,IAAoB;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC1C,mEAAmE;QACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACzC,YAAY,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,uCAAuC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;YACtC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAC/C,QAAQ,CAAC,kBAAkB,CACzB,IAAI,EACJ,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CACjE,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,IAAoB;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnC,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,4DAA4D;IAC5D,aAAa,CAAC,IAAoB,EAAE,GAAe;QACjD,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,mEAAmE;QACnE,qEAAqE;QACrE,iEAAiE;QACjE,oEAAoE;QACpE,+DAA+D;QAC/D,sEAAsE;QACtE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,OAAO;QAChD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,eAAe,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;YAC9D,iEAAiE;YACjE,4DAA4D;YAC5D,uDAAuD;YACvD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,kBAAkB,CAAC,IAAoB,EAAE,GAAe;QAC9D,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAC5C,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,SAAS,KAAK,YAAY;gBAAE,OAAO,IAAI,CAAC;YAC5C,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,YAAY,GAAG,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,UAAU,CAAC;QACvE,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YAC/E,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,GAAG,sBAAsB,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IAChE,eAAe,CAAC,IAAoB,EAAE,GAAe;QAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClD,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,mEAAmE;gBACnE,kEAAkE;gBAClE,oEAAoE;gBACpE,oDAAoD;gBACpD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;gBACrC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gBACzC,MAAM,SAAS,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC7E,IAAI,SAAS,KAAK,YAAY,CAAC,gBAAgB,EAAE,CAAC;oBAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;oBAChF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC3B,CAAC;qBAAM,IAAI,SAAS,KAAK,YAAY,CAAC,mBAAmB,EAAE,CAAC;oBAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC/C,CAAC;qBAAM,IAAI,SAAS,KAAK,YAAY,CAAC,mBAAmB,EAAE,CAAC;oBAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBACnD,qEAAqE;gBACrE,kEAAkE;gBAClE,qEAAqE;gBACrE,sEAAsE;gBACtE,mBAAmB;gBACnB,IAAI,MAAM,CAAC,UAAU,GAAG,mBAAmB,EAAE,CAAC;oBAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;oBACtF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC;oBACzC,OAAO;gBACT,CAAC;gBACD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;oBAClF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC;oBACrC,OAAO;gBACT,CAAC;gBACD,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3D,MAAM;YACR,CAAC;YACD;gBACE,yBAAyB;gBACzB,MAAM;QACV,CAAC;IACH,CAAC;IAED,mEAAmE;IAC3D,WAAW,GAAG,CAAC,MAAkB,EAAE,MAAe,EAAE,EAAE;QAC5D,IAAI,MAAM,KAAK,gBAAgB;YAAE,OAAO;QACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACzC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,KAAK,MAAM;gBAAE,SAAS;YAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,MAAkB;QACrD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClD,MAAM,MAAM,GAAG,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC/C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBAChD,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,6DAA6D;YAC7D,iEAAiE;YACjE,wCAAwC;YACxC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,iBAAiB,GAAG,CAC1B,OAAkE,EAClE,MAAe,EACf,EAAE;QACF,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACvE,IAAI,MAAM,IAAK,MAAyB,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAwB,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK;gBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtE,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO;gBAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC7B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QAC9C,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,KAAK,MAAM;gBAAE,SAAS;YAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC;gBAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,qCAAqC,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrD,iEAAiE;QACjE,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,gDAAgD,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;CACF;AAYD,MAAM,OAAO,WAAW;IACL,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1D,2EAA2E;IAC1D,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,OAAO,CAAqB;IACrC,SAAS,GAA0C,IAAI,CAAC;IACxD,QAAQ,GAAiB,EAAE,CAAC;IAEpC,YAAY,OAA2B;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YACrD,uEAAuE;YACvE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;gBAChC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,8DAA8D;YAC9D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1C,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,WAAW,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5E,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CAAC;QACL,uEAAuE;QACvE,uEAAuE;QACvE,2EAA2E;QAC3E,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACpB,yEAAyE;YACzE,sEAAsE;YACtE,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,0CAA0C,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC;YACzE,yEAAyE;YACzE,kEAAkE;YAClE,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,QAAsB;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,yDAAyD;QACzD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;qCAEiC;IACjC,IAAI,CAAC,MAAc;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,KAAK;QACT,MAAM,GAAG,GAAiE,EAAE,CAAC;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,IAAU,CAAC;YACf,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,OAAO,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;gBACjE,sEAAsE;gBACtE,SAAS;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC;gBACP,MAAM;gBACN,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;aACrD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;QAC3B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,SAAS;YAAE,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,IAAU,CAAC;YACf,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,OAAO,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,iEAAiE;gBACjE,qEAAqE;gBACrE,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBACvB,qCAAqC;gBACrC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACnC,SAAS;YACX,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;YACxD,IAAI,GAAG,GAAG,UAAU,IAAI,MAAM;gBAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,UAAU;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,EAAa,EAAE,IAAgB;IAC/C,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,IAAI;YAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"room-manager.js","sourceRoot":"","sources":["../src/room-manager.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -34,6 +34,12 @@ export interface CorsOptions {
34
34
  }
35
35
  export interface StartCollabServerOptions {
36
36
  port?: number;
37
+ /**
38
+ * Application-level keepalive period in ms (default 15s). Exposed so tests
39
+ * can observe the keepalive without waiting on the real cadence; production
40
+ * callers should leave it alone. See `Room.sendKeepalive`.
41
+ */
42
+ keepaliveIntervalMs?: number;
37
43
  host?: string;
38
44
  persistence?: Persistence;
39
45
  authenticate?: AuthenticateFn;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -53,6 +53,53 @@ function applyCors(req, res, cors) {
53
53
  return true;
54
54
  }
55
55
  const PING_INTERVAL_MS = 30_000;
56
+ /**
57
+ * Application-level keepalive period. Must stay comfortably under
58
+ * y-websocket's hardcoded 30s `messageReconnectTimeout`; 15s matches the
59
+ * awareness renewal cadence the client's watchdog was written around.
60
+ * See `Room.sendKeepalive`.
61
+ */
62
+ const KEEPALIVE_INTERVAL_MS = 15_000;
63
+ /**
64
+ * The watchdog this keepalive exists to feed. y-websocket closes a connection
65
+ * after this long with no inbound message, and it is a module-level const there
66
+ * with no per-provider override, so we cannot widen it.
67
+ */
68
+ const CLIENT_RECONNECT_TIMEOUT_MS = 30_000;
69
+ /**
70
+ * Largest keepalive period that can actually keep a connection alive.
71
+ *
72
+ * Merely being under {@link CLIENT_RECONNECT_TIMEOUT_MS} is not enough. A
73
+ * period of 29_999ms against a 30_000ms watchdog leaves 1ms for timer
74
+ * scheduling, serialisation and network transit, so the frame routinely lands
75
+ * after the deadline and the client disconnects anyway. The margin below has
76
+ * to cover a slow hop and an event loop that is busy, or the keepalive is
77
+ * configured and still useless.
78
+ */
79
+ const MAX_KEEPALIVE_INTERVAL_MS = 25_000;
80
+ /**
81
+ * Validate a configured keepalive period, rejecting values that would silently
82
+ * defeat it in EITHER direction.
83
+ *
84
+ * Too small is the classic footgun: `setInterval` coerces 0, negative and
85
+ * non-finite delays to about 1ms, so a typo turns the keepalive into a flood.
86
+ * Too large is the subtler one and is specific to this feature: a period that
87
+ * does not clear the client's watchdog with margin leaves the server looking
88
+ * correctly configured while the disconnect loop it exists to prevent comes
89
+ * back. Both fail loudly instead.
90
+ */
91
+ function resolveKeepaliveMs(configured) {
92
+ if (configured === undefined)
93
+ return KEEPALIVE_INTERVAL_MS;
94
+ if (!Number.isFinite(configured) ||
95
+ configured <= 0 ||
96
+ configured > MAX_KEEPALIVE_INTERVAL_MS) {
97
+ throw new Error(`[collab-server] keepaliveIntervalMs must be a finite number in (0, ${MAX_KEEPALIVE_INTERVAL_MS}]; ` +
98
+ `got ${configured}. The client closes after ${CLIENT_RECONNECT_TIMEOUT_MS}ms of silence, ` +
99
+ 'so the period must clear that with margin for transit and scheduling.');
100
+ }
101
+ return configured;
102
+ }
56
103
  export async function startCollabServer(opts = {}) {
57
104
  const persistence = opts.persistence ?? new MemoryPersistence();
58
105
  const authenticate = opts.authenticate ?? allowAnonymousEditor;
@@ -83,6 +130,10 @@ export async function startCollabServer(opts = {}) {
83
130
  : opts.authorizeRegistry === null
84
131
  ? undefined
85
132
  : opts.authorizeRegistry ?? makeRegistryAuthorizer(authenticate);
133
+ // Validate at STARTUP, not per connection: a throw inside the connection
134
+ // handler is swallowed by its own .catch, so a misconfigured server would
135
+ // come up healthy and only misbehave once someone connected.
136
+ const keepaliveIntervalMs = resolveKeepaliveMs(opts.keepaliveIntervalMs);
86
137
  const metricsToken = opts.metricsToken ?? process.env.COLLAB_METRICS_TOKEN;
87
138
  const metrics = opts.metrics ?? defaultMetrics;
88
139
  const peersGauge = metrics.gauge('collab_room_peers', 'Currently connected peers per room');
@@ -228,7 +279,11 @@ export async function startCollabServer(opts = {}) {
228
279
  // surfacing as a process-level unhandledRejection. Catch the error,
229
280
  // log it, and close the socket with a non-1000 code so the client
230
281
  // sees a deterministic shutdown.
231
- handleConnection(ws, req, { roomManager, authenticate }).catch((err) => {
282
+ handleConnection(ws, req, {
283
+ roomManager,
284
+ authenticate,
285
+ keepaliveIntervalMs,
286
+ }).catch((err) => {
232
287
  // eslint-disable-next-line no-console
233
288
  console.error('[collab-server] connection setup failed:', err);
234
289
  try {
@@ -301,6 +356,11 @@ async function handleConnection(ws, req, ctx) {
301
356
  awarenessClients: new Set(),
302
357
  };
303
358
  room.addConnection(conn);
359
+ // Application-level keepalive. Distinct from the protocol ping below: only
360
+ // a real message refreshes y-websocket's reconnect watchdog.
361
+ const keepalive = setInterval(() => {
362
+ room.sendKeepalive(conn);
363
+ }, ctx.keepaliveIntervalMs ?? KEEPALIVE_INTERVAL_MS);
304
364
  let alive = true;
305
365
  const ping = setInterval(() => {
306
366
  if (!alive) {
@@ -324,6 +384,7 @@ async function handleConnection(ws, req, ctx) {
324
384
  });
325
385
  const cleanup = () => {
326
386
  clearInterval(ping);
387
+ clearInterval(keepalive);
327
388
  room.removeConnection(conn);
328
389
  };
329
390
  ws.on('close', cleanup);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-worker.d.ts","sourceRoot":"","sources":["../src/snapshot-worker.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAC4D;gBAExE,IAAI,EAAE,qBAAqB;IAYvC,KAAK,IAAI,IAAI;IAWb,IAAI,IAAI,IAAI;IAKZ,iFAAiF;IAC3E,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA+B1C,OAAO,CAAC,GAAG;CAGZ"}
1
+ {"version":3,"file":"snapshot-worker.d.ts","sourceRoot":"","sources":["../src/snapshot-worker.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,CAAC;IACzB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAC4D;gBAExE,IAAI,EAAE,qBAAqB;IAYvC,KAAK,IAAI,IAAI;IAWb,IAAI,IAAI,IAAI;IAKZ,iFAAiF;IAC3E,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAsC1C,OAAO,CAAC,GAAG;CAGZ"}
@@ -61,7 +61,14 @@ export class SnapshotWorker {
61
61
  const ifcx = snapshotToIfcx(room.doc);
62
62
  const content = serializeIfcx(ifcx, false);
63
63
  const stamp = new Date(this.now()).toISOString().replace(/[:.]/g, '-');
64
- const safe = t.roomId.replace(/[^a-zA-Z0-9._-]/g, '_');
64
+ // Reversible and collision-free, matching `FilePersistence.logPath`
65
+ // and `S3Persistence.safeRoom`. A lossy `[^a-zA-Z0-9._-] -> _` replace
66
+ // maps distinct rooms (e.g. `a/b` and `a:b`) onto one snapshot path,
67
+ // so two rooms snapshotted in the same millisecond silently overwrite
68
+ // each other while `runOnce` reports both writes as successful. Safe
69
+ // ids (UUIDs, room codes) are unchanged, so existing files keep their
70
+ // names.
71
+ const safe = encodeURIComponent(t.roomId);
65
72
  const filePath = path.join(this.options.outputDir, `${safe}.${stamp}.ifcx`);
66
73
  await fs.promises.writeFile(filePath, content);
67
74
  results.push({
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-worker.js","sourceRoot":"","sources":["../src/snapshot-worker.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAwBjE,MAAM,OAAO,cAAc;IACjB,KAAK,GAA0C,IAAI,CAAC;IACpD,QAAQ,GAAqC,IAAI,CAAC;IACzC,OAAO,CAC4D;IAEpF,YAAY,IAA2B;QACrC,IAAI,CAAC,OAAO,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,MAAM;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;YACpC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;QACF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChC,sCAAsC;gBACtC,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK;YAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,iFAAiF;IACjF,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACrD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACjF,MAAM,OAAO,GAAqB,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAClE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACvE,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;gBACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC;gBAC5E,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC/C,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,QAAQ;oBACR,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC9C,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;iBAC/B,CAAC,CAAC;YACL,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,GAAG;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5D,CAAC;CACF"}
1
+ {"version":3,"file":"snapshot-worker.js","sourceRoot":"","sources":["../src/snapshot-worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/collab-server",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Reference websocket sync server for @ifc-lite/collab",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -21,19 +21,19 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "lib0": "^0.2.99",
24
- "ws": "^8.21.1",
24
+ "ws": "^8.21.3",
25
25
  "y-protocols": "^1.0.6",
26
- "yjs": "^13.6.31",
27
- "@ifc-lite/collab": "^0.4.1",
28
- "@ifc-lite/ifcx": "^2.3.2",
29
- "@ifc-lite/merge": "^0.4.0"
26
+ "yjs": "^13.6.32",
27
+ "@ifc-lite/collab": "^0.5.0",
28
+ "@ifc-lite/ifcx": "^2.3.7",
29
+ "@ifc-lite/merge": "^0.4.3"
30
30
  },
31
31
  "devDependencies": {
32
- "@types/node": "^26.1.2",
32
+ "@types/node": "^26.2.0",
33
33
  "@types/ws": "^8.5.13",
34
34
  "typescript": "^6.0.3",
35
35
  "vitest": "^4.1.10",
36
- "y-websocket": "^3.0.0"
36
+ "y-websocket": "^3.1.0"
37
37
  },
38
38
  "license": "MPL-2.0",
39
39
  "author": "Louis True",
@@ -62,6 +62,7 @@
62
62
  ],
63
63
  "scripts": {
64
64
  "build": "pnpm exec tsc",
65
+ "typecheck": "node ../../scripts/typecheck-tests.mjs",
65
66
  "dev": "pnpm exec tsc --watch",
66
67
  "start": "node ./dist/bin.js",
67
68
  "test": "vitest run"