@pantheon-systems/css-client 0.12.0 → 0.14.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.
Files changed (80) hide show
  1. package/README.md +1 -1
  2. package/dist/auth.js +0 -25
  3. package/dist/auth.js.map +1 -1
  4. package/dist/broker.d.ts +30 -2
  5. package/dist/broker.d.ts.map +1 -1
  6. package/dist/broker.js +92 -33
  7. package/dist/broker.js.map +1 -1
  8. package/dist/client.d.ts +12 -4
  9. package/dist/client.d.ts.map +1 -1
  10. package/dist/client.js +5 -97
  11. package/dist/client.js.map +1 -1
  12. package/dist/content.js +0 -8
  13. package/dist/content.js.map +1 -1
  14. package/dist/endpoints/agent-edit.js +0 -66
  15. package/dist/endpoints/agent-edit.js.map +1 -1
  16. package/dist/endpoints/agent-registry.js +0 -46
  17. package/dist/endpoints/agent-registry.js.map +1 -1
  18. package/dist/endpoints/base.js +1 -56
  19. package/dist/endpoints/base.js.map +1 -1
  20. package/dist/endpoints/branches.js +0 -20
  21. package/dist/endpoints/branches.js.map +1 -1
  22. package/dist/endpoints/checkpoints.js +0 -23
  23. package/dist/endpoints/checkpoints.js.map +1 -1
  24. package/dist/endpoints/documents.d.ts.map +1 -1
  25. package/dist/endpoints/documents.js +3 -32
  26. package/dist/endpoints/documents.js.map +1 -1
  27. package/dist/endpoints/index.d.ts +2 -0
  28. package/dist/endpoints/index.d.ts.map +1 -1
  29. package/dist/endpoints/index.js +2 -7
  30. package/dist/endpoints/index.js.map +1 -1
  31. package/dist/endpoints/merge.d.ts +17 -1
  32. package/dist/endpoints/merge.d.ts.map +1 -1
  33. package/dist/endpoints/merge.js +26 -32
  34. package/dist/endpoints/merge.js.map +1 -1
  35. package/dist/endpoints/migration-conflicts.js +0 -11
  36. package/dist/endpoints/migration-conflicts.js.map +1 -1
  37. package/dist/endpoints/presence.js +0 -44
  38. package/dist/endpoints/presence.js.map +1 -1
  39. package/dist/endpoints/relations.d.ts +20 -0
  40. package/dist/endpoints/relations.d.ts.map +1 -0
  41. package/dist/endpoints/relations.js +10 -0
  42. package/dist/endpoints/relations.js.map +1 -0
  43. package/dist/endpoints/sites.js +0 -11
  44. package/dist/endpoints/sites.js.map +1 -1
  45. package/dist/endpoints/templates.js +0 -41
  46. package/dist/endpoints/templates.js.map +1 -1
  47. package/dist/endpoints/translations.d.ts +44 -0
  48. package/dist/endpoints/translations.d.ts.map +1 -0
  49. package/dist/endpoints/translations.js +39 -0
  50. package/dist/endpoints/translations.js.map +1 -0
  51. package/dist/endpoints/versions.js +0 -25
  52. package/dist/endpoints/versions.js.map +1 -1
  53. package/dist/errors.js +0 -65
  54. package/dist/errors.js.map +1 -1
  55. package/dist/index.d.ts +4 -4
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +1 -13
  58. package/dist/index.js.map +1 -1
  59. package/dist/jwt-utils.js +0 -6
  60. package/dist/jwt-utils.js.map +1 -1
  61. package/dist/oauth.d.ts +2 -1
  62. package/dist/oauth.d.ts.map +1 -1
  63. package/dist/oauth.js +0 -27
  64. package/dist/oauth.js.map +1 -1
  65. package/dist/realtime.d.ts +21 -11
  66. package/dist/realtime.d.ts.map +1 -1
  67. package/dist/realtime.js +57 -232
  68. package/dist/realtime.js.map +1 -1
  69. package/dist/sdk-version.d.ts +1 -1
  70. package/dist/sdk-version.js +1 -9
  71. package/dist/sdk-version.js.map +1 -1
  72. package/dist/telemetry-headers.js +0 -28
  73. package/dist/telemetry-headers.js.map +1 -1
  74. package/dist/types.d.ts +180 -6
  75. package/dist/types.d.ts.map +1 -1
  76. package/dist/types.js +7 -6
  77. package/dist/types.js.map +1 -1
  78. package/dist/utils.js +0 -11
  79. package/dist/utils.js.map +1 -1
  80. package/package.json +3 -3
package/dist/realtime.js CHANGED
@@ -1,45 +1,5 @@
1
- /**
2
- * Phase 2.1: RealtimeClient
3
- *
4
- * WebSocket-based real-time collaboration client using Yjs CRDT.
5
- * Provides bidirectional sync between client and DocumentSession Durable Object.
6
- * Uses ReconnectingWebSocket from partysocket for automatic reconnection with exponential backoff.
7
- */
8
1
  import * as Y from 'yjs';
9
2
  import { WebSocket as ReconnectingWebSocket } from 'partysocket';
10
- /**
11
- * Real-time collaboration client using Yjs CRDT over WebSocket.
12
- * Uses PartySocket for automatic reconnection with exponential backoff.
13
- *
14
- * @example
15
- * ```typescript
16
- * const client = new RealtimeClient({
17
- * baseUrl: 'wss://api.example.com',
18
- * onUpdate: (snapshot) => {
19
- * console.log('Document updated:', snapshot);
20
- * },
21
- * onReconnecting: (attempt) => {
22
- * console.log(`Reconnecting... attempt ${attempt}`);
23
- * },
24
- * reconnection: {
25
- * maxRetries: 10,
26
- * minReconnectionDelay: 1000,
27
- * maxReconnectionDelay: 30000,
28
- * },
29
- * });
30
- *
31
- * client.connect({
32
- * siteId: 'site-123',
33
- * branchId: 'branch-456',
34
- * documentPath: 'pages/home',
35
- * actorId: 'user-789',
36
- * actorType: 'user',
37
- * });
38
- *
39
- * // When done
40
- * client.disconnect();
41
- * ```
42
- */
43
3
  export class RealtimeClient {
44
4
  config;
45
5
  ydoc;
@@ -52,60 +12,42 @@ export class RealtimeClient {
52
12
  lastReportedRetryCount = 0;
53
13
  reconnectCheckInterval = null;
54
14
  visibilityHandler = null;
55
- // Rate limiting state
15
+ hasConnectedToServer = false;
16
+ syncBaselineTimer = null;
17
+ serverGateClosed = false;
18
+ static YJS_EMPTY_UPDATE_LENGTH = 2;
56
19
  sendTimestamps = [];
57
20
  pendingUpdates = [];
58
21
  flushTimer = null;
59
- static RATE_THRESHOLD = 40; // Start buffering at this rate
60
- static RATE_WINDOW_MS = 1000; // 1-second sliding window
61
- // Echo suppression: track the last JSON snapshot sent to the DO.
62
- // If a Y.Doc update produces the same JSON snapshot as we last sent,
63
- // it's a no-op echo (typically from Puck's onChange after receiving
64
- // a remote sync) and should NOT be sent to avoid overwriting newer data.
22
+ static RATE_THRESHOLD = 40;
23
+ static RATE_WINDOW_MS = 1000;
65
24
  lastSentSnapshot = null;
66
- // Delivery acknowledgment state
67
25
  pendingDeliveryAcks = new Map();
68
26
  static DELIVERY_ACK_TIMEOUT_MS = 5000;
69
- // Publish request state
70
27
  pendingPublishRequests = new Map();
71
28
  static PUBLISH_TIMEOUT_MS = 30000;
72
- // Action metadata state — best-effort metadata sent alongside CRDT updates
73
29
  pendingActionMetadata = null;
74
30
  constructor(config) {
75
31
  this.config = config;
76
32
  this.ydoc = new Y.Doc();
77
- // Listen for local changes to broadcast
78
33
  this.ydoc.on('update', (update, origin) => {
79
- // Only broadcast if this update didn't come from remote
80
34
  if (origin !== 'remote' && this.ws && this.ws.readyState === WebSocket.OPEN) {
81
35
  const root = this.ydoc.getMap('root');
82
36
  const currentSnapshot = JSON.stringify(root.toJSON());
83
- // Echo suppression: if the Y.Doc's JSON snapshot hasn't changed since
84
- // the last time we sent (or since the last remote update), this is a
85
- // no-op full-rebuild echo. Don't send it — it would overwrite newer
86
- // data on the DO if another client has edited since.
87
37
  if (currentSnapshot === this.lastSentSnapshot) {
88
38
  this.sendPendingActionMetadata();
89
39
  return;
90
40
  }
91
41
  this.lastSentSnapshot = currentSnapshot;
92
42
  this.rateLimitedSend(update);
93
- // Send any pending action metadata after the CRDT update
94
43
  this.sendPendingActionMetadata();
95
44
  }
96
45
  else if (origin === 'remote') {
97
- // Track the remote snapshot so we can detect echoes
98
46
  const root = this.ydoc.getMap('root');
99
47
  this.lastSentSnapshot = JSON.stringify(root.toJSON());
100
48
  }
101
49
  });
102
50
  }
103
- /**
104
- * Connect to a document session via WebSocket.
105
- * Uses PartySocket for automatic reconnection on connection loss.
106
- *
107
- * @param params - Connection parameters including site, branch, document, and actor info
108
- */
109
51
  connect(params) {
110
52
  if (this.ws) {
111
53
  this.disconnect();
@@ -113,51 +55,33 @@ export class RealtimeClient {
113
55
  this.currentApiKey = this.config.apiKey;
114
56
  this.intentionalDisconnect = false;
115
57
  this.hasConnectedOnce = false;
58
+ this.hasConnectedToServer = false;
116
59
  this.lastReportedRetryCount = 0;
117
- // Build WebSocket URL
118
60
  const baseUrl = this.config.baseUrl.replace(/^http/, 'ws');
119
61
  const encodedPath = encodeURIComponent(params.documentPath);
120
62
  const url = new URL(`/api/sites/${params.siteId}/branches/${params.branchId}/documents/${encodedPath}/connect`, baseUrl);
121
- // Add actor info as query params (WebSocket can't send headers)
122
63
  url.searchParams.set('actorId', params.actorId);
123
64
  url.searchParams.set('actorType', params.actorType);
124
- // Note: apiKey is NOT added to the base URL here — it is injected inside
125
- // urlProvider so that a refreshed token is picked up on each reconnect.
126
- // Add session ID for agent authorization (obtained from startEdit())
127
65
  if (params.sessionId) {
128
66
  url.searchParams.set('sessionId', params.sessionId);
129
67
  }
130
- // Get reconnection config with defaults
131
68
  const reconnection = this.config.reconnection ?? {};
132
69
  const maxRetries = reconnection.maxRetries ?? Infinity;
133
70
  const minReconnectionDelay = reconnection.minReconnectionDelay ?? 1000;
134
71
  const maxReconnectionDelay = reconnection.maxReconnectionDelay ?? 30000;
135
72
  const reconnectionDelayGrowFactor = reconnection.reconnectionDelayGrowFactor ?? 1.5;
136
- // Build the base WebSocket URL (without state vector)
137
73
  const baseWsUrl = url.toString();
138
- // Create a URL provider function for PartySocket.
139
- // On the initial connect the state vector is omitted so the server sends
140
- // the full CRDT history. On every subsequent (re)connect the current Yjs
141
- // state vector is included so the server can respond with only the delta.
142
- // Also injects the current API key on every call so that a refreshed token
143
- // (set by tokenRefresher after an unexpected close) is used for each
144
- // reconnect attempt.
145
74
  const urlProvider = () => {
146
75
  const connectUrl = new URL(baseWsUrl);
147
- // Inject current token — may have been refreshed after an unexpected disconnect
148
76
  if (this.currentApiKey) {
149
77
  connectUrl.searchParams.set('apiKey', this.currentApiKey);
150
78
  }
151
- // Include the state vector on every call after the first successful
152
- // connection so the server can send a delta rather than full history.
153
- if (this.hasConnectedOnce) {
79
+ if (this.hasConnectedToServer) {
154
80
  const sv = Y.encodeStateVector(this.ydoc);
155
- const svBase64 = btoa(String.fromCharCode(...sv));
156
- connectUrl.searchParams.set('stateVector', svBase64);
81
+ connectUrl.searchParams.set('stateVector', btoa(String.fromCharCode(...sv)));
157
82
  }
158
83
  return connectUrl.toString();
159
84
  };
160
- // Create ReconnectingWebSocket with URL provider and reconnection options
161
85
  this.ws = new ReconnectingWebSocket(urlProvider, [], {
162
86
  maxRetries,
163
87
  minReconnectionDelay,
@@ -165,40 +89,40 @@ export class RealtimeClient {
165
89
  reconnectionDelayGrowFactor,
166
90
  });
167
91
  this.ws.binaryType = 'arraybuffer';
168
- // Start monitoring for reconnection attempts
169
92
  this.startReconnectMonitoring();
170
- // Start visibility change monitoring to handle tab backgrounding
171
93
  this.startVisibilityMonitoring();
172
94
  this.ws.addEventListener('open', () => {
173
95
  this.connected = true;
174
- // Send local state when doc has content (seeded or from prior session).
175
- // On initial connect with seeded data, this ensures bidirectional sync.
176
- // On reconnect, this sends any edits made while disconnected.
177
- if (this.ws) {
178
- const root = this.ydoc.getMap('root');
179
- if (root.size > 0) {
180
- const localState = Y.encodeStateAsUpdate(this.ydoc);
181
- this.ws.send(localState);
182
- }
183
- }
184
96
  this.hasConnectedOnce = true;
97
+ this.hasConnectedToServer = true;
185
98
  this.lastReportedRetryCount = 0;
99
+ this.serverGateClosed = false;
186
100
  this.config.onConnect?.();
101
+ if (this.syncBaselineTimer !== null) {
102
+ clearTimeout(this.syncBaselineTimer);
103
+ this.syncBaselineTimer = null;
104
+ }
105
+ this.syncBaselineTimer = setTimeout(() => {
106
+ this.syncBaselineTimer = null;
107
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN)
108
+ return;
109
+ const delta = Y.encodeStateAsUpdate(this.ydoc);
110
+ if (delta.length > RealtimeClient.YJS_EMPTY_UPDATE_LENGTH) {
111
+ this.ws.send(delta);
112
+ }
113
+ }, 5000);
187
114
  });
188
115
  this.ws.addEventListener('message', (event) => {
189
116
  try {
190
- // Distinguish text (presence JSON) from binary (Yjs CRDT) messages
191
117
  if (typeof event.data === 'string') {
192
- // Text frame: JSON presence message
193
118
  this.handleTextMessage(event.data);
194
119
  return;
195
120
  }
196
- // Binary frame: Yjs CRDT update
197
121
  const data = event.data;
198
122
  const update = new Uint8Array(data);
199
- // Apply remote update to local Y.Doc
123
+ if (this.serverGateClosed)
124
+ return;
200
125
  Y.applyUpdate(this.ydoc, update, 'remote');
201
- // Notify listeners of new snapshot
202
126
  const root = this.ydoc.getMap('root');
203
127
  const snapshot = root.toJSON();
204
128
  this.config.onUpdate?.(snapshot);
@@ -211,42 +135,40 @@ export class RealtimeClient {
211
135
  this.ws.addEventListener('close', (event) => {
212
136
  this.connected = false;
213
137
  const closeEvent = event;
214
- // Server-initiated reload (e.g. after migration) — clear the local
215
- // Y.Doc so the reconnect receives fresh state from the server instead
216
- // of sending stale data back and overwriting the migration.
217
138
  if (closeEvent.code === 4001) {
218
139
  const root = this.ydoc.getMap('root');
219
140
  this.ydoc.transact(() => {
220
141
  root.clear();
221
142
  });
222
143
  this.lastSentSnapshot = null;
144
+ this.hasConnectedToServer = false;
223
145
  this.config.onServerReload?.();
224
- // PartySocket will reconnect automatically; the open handler
225
- // skips sending state when root.size === 0
226
146
  }
227
- // Check for authorization failure close codes (4401 Unauthorized, 4403 Forbidden)
147
+ if (closeEvent.code === 4002) {
148
+ this.intentionalDisconnect = true;
149
+ this.stopReconnectMonitoring();
150
+ const ws = this.ws;
151
+ this.ws = null;
152
+ ws?.close();
153
+ this.config.onDisconnect?.();
154
+ this.config.onBaselineReset?.();
155
+ return;
156
+ }
228
157
  if (closeEvent.code === 4401 || closeEvent.code === 4403) {
229
- // Authorization failure - do not attempt to reconnect
230
158
  this.intentionalDisconnect = true;
231
159
  this.stopReconnectMonitoring();
232
160
  this.ws?.close();
233
161
  this.ws = null;
234
- // Call authorization error callback
235
162
  const reason = closeEvent.reason || 'Authorization failed';
236
163
  this.config.onAuthorizationError?.(new Error(reason));
237
164
  this.config.onDisconnect?.();
238
165
  return;
239
166
  }
240
- // Only call onDisconnect for intentional disconnects or when max retries exceeded
241
167
  if (this.intentionalDisconnect) {
242
168
  this.stopReconnectMonitoring();
243
169
  this.ws = null;
244
170
  this.config.onDisconnect?.();
245
171
  }
246
- // PartySocket will automatically attempt to reconnect otherwise
247
- // Fire-and-forget token refresh on unexpected close so the next
248
- // urlProvider call uses a fresh token for the reconnect URL.
249
- // Guard prevents concurrent refreshes when the socket flaps rapidly.
250
172
  if (!this.intentionalDisconnect && this.config.tokenRefresher && !this.tokenRefreshInFlight) {
251
173
  this.tokenRefreshInFlight = true;
252
174
  this.config.tokenRefresher().then((freshToken) => {
@@ -254,7 +176,6 @@ export class RealtimeClient {
254
176
  this.currentApiKey = freshToken;
255
177
  }
256
178
  }).catch(() => {
257
- // Ignore errors — the reconnect will proceed with the stale token
258
179
  }).finally(() => {
259
180
  this.tokenRefreshInFlight = false;
260
181
  });
@@ -264,19 +185,13 @@ export class RealtimeClient {
264
185
  this.config.onError?.(new Error('WebSocket error'));
265
186
  });
266
187
  }
267
- /**
268
- * Start monitoring for reconnection attempts by polling retryCount.
269
- * This is needed because PartySocket doesn't expose a reconnection callback.
270
- */
271
188
  startReconnectMonitoring() {
272
189
  this.stopReconnectMonitoring();
273
- // Poll every 100ms to detect retry count changes
274
190
  this.reconnectCheckInterval = setInterval(() => {
275
191
  if (!this.ws || this.intentionalDisconnect) {
276
192
  return;
277
193
  }
278
194
  const currentRetryCount = this.ws.retryCount;
279
- // If retry count increased and we've connected before, we're reconnecting
280
195
  if (currentRetryCount > this.lastReportedRetryCount &&
281
196
  this.hasConnectedOnce) {
282
197
  this.lastReportedRetryCount = currentRetryCount;
@@ -284,69 +199,49 @@ export class RealtimeClient {
284
199
  }
285
200
  }, 100);
286
201
  }
287
- /**
288
- * Stop the reconnection monitoring interval.
289
- */
290
202
  stopReconnectMonitoring() {
291
203
  if (this.reconnectCheckInterval) {
292
204
  clearInterval(this.reconnectCheckInterval);
293
205
  this.reconnectCheckInterval = null;
294
206
  }
295
207
  }
296
- /**
297
- * Start monitoring for page visibility changes.
298
- * When the page becomes visible after being hidden, check connection health
299
- * and force a reconnection sync if needed.
300
- */
301
208
  startVisibilityMonitoring() {
302
209
  this.stopVisibilityMonitoring();
303
- // Only set up if document is available (browser environment)
304
210
  if (typeof document === 'undefined') {
305
211
  return;
306
212
  }
307
213
  this.visibilityHandler = () => {
308
214
  if (document.visibilityState === 'visible' && !this.intentionalDisconnect && this.ws) {
309
- // Force a reconnection by calling reconnect() on PartySocket.
310
- // This ensures we get a fresh connection even if the old one appears open
311
- // but is actually stale (server closed it while tab was backgrounded).
312
- // PartySocket's reconnect() will close the current connection and open a new one.
313
- // The 'open' event handler will then send local state for bidirectional sync.
314
215
  this.ws.reconnect();
315
216
  }
316
217
  };
317
218
  document.addEventListener('visibilitychange', this.visibilityHandler);
318
219
  }
319
- /**
320
- * Stop visibility change monitoring.
321
- */
322
220
  stopVisibilityMonitoring() {
323
221
  if (this.visibilityHandler && typeof document !== 'undefined') {
324
222
  document.removeEventListener('visibilitychange', this.visibilityHandler);
325
223
  this.visibilityHandler = null;
326
224
  }
327
225
  }
328
- /**
329
- * Disconnect from the current session.
330
- * This permanently closes the connection and stops any reconnection attempts.
331
- */
332
226
  disconnect() {
333
227
  this.intentionalDisconnect = true;
334
228
  this.stopReconnectMonitoring();
335
229
  this.stopVisibilityMonitoring();
336
- // Clean up rate limiting state
230
+ if (this.syncBaselineTimer !== null) {
231
+ clearTimeout(this.syncBaselineTimer);
232
+ this.syncBaselineTimer = null;
233
+ }
337
234
  if (this.flushTimer !== null) {
338
235
  clearTimeout(this.flushTimer);
339
236
  this.flushTimer = null;
340
237
  }
341
238
  this.pendingUpdates = [];
342
239
  this.sendTimestamps = [];
343
- // Reject all pending delivery ack promises
344
240
  for (const [requestId, pending] of this.pendingDeliveryAcks) {
345
241
  clearTimeout(pending.timer);
346
242
  pending.reject(new Error('Disconnected'));
347
243
  this.pendingDeliveryAcks.delete(requestId);
348
244
  }
349
- // Reject all pending publish request promises
350
245
  for (const [requestId, pending] of this.pendingPublishRequests) {
351
246
  clearTimeout(pending.timer);
352
247
  pending.reject(new Error('Disconnected'));
@@ -358,33 +253,14 @@ export class RealtimeClient {
358
253
  this.connected = false;
359
254
  }
360
255
  }
361
- /**
362
- * Apply a local Yjs update.
363
- * This is typically called from Puck-Yjs binding when local edits occur.
364
- * Uses rate-aware sending to avoid exceeding the server's rate limit.
365
- *
366
- * @param update - Raw Yjs update bytes
367
- */
368
256
  applyLocalUpdate(update) {
369
257
  if (this.ws && this.ws.readyState === WebSocket.OPEN) {
370
258
  this.rateLimitedSend(update);
371
259
  }
372
260
  }
373
- /**
374
- * Set pending action metadata to be sent after the next CRDT update.
375
- * The metadata is best-effort — if the WebSocket is not open or the
376
- * send fails, the CRDT update still goes through without metadata.
377
- *
378
- * @param meta - Action type and metadata from Puck's onAction callback
379
- */
380
261
  setActionMetadata(actions) {
381
262
  this.pendingActionMetadata = actions;
382
263
  }
383
- /**
384
- * Send any pending action metadata as a text message and clear it.
385
- * Called after a CRDT update is sent to associate the metadata with
386
- * the most recent edit.
387
- */
388
264
  sendPendingActionMetadata() {
389
265
  if (this.pendingActionMetadata && this.pendingActionMetadata.length > 0 && this.ws && this.ws.readyState === WebSocket.OPEN) {
390
266
  try {
@@ -400,31 +276,20 @@ export class RealtimeClient {
400
276
  this.pendingActionMetadata = null;
401
277
  }
402
278
  }
403
- /**
404
- * Send a Yjs update with rate awareness.
405
- * Sends immediately when under the threshold (40 msgs/sec).
406
- * Buffers and coalesces updates when approaching the server's 50 msg/sec limit.
407
- */
408
279
  rateLimitedSend(update) {
409
280
  if (!this.ws)
410
281
  return;
411
282
  const now = Date.now();
412
- // Prune timestamps outside the sliding window
413
283
  this.sendTimestamps = this.sendTimestamps.filter((ts) => now - ts < RealtimeClient.RATE_WINDOW_MS);
414
284
  if (this.sendTimestamps.length < RealtimeClient.RATE_THRESHOLD) {
415
- // Under threshold — send immediately
416
285
  this.sendTimestamps.push(now);
417
286
  this.ws.send(update);
418
287
  }
419
288
  else {
420
- // At or above threshold — buffer for coalesced flush
421
289
  this.pendingUpdates.push(update);
422
290
  this.scheduleFlush();
423
291
  }
424
292
  }
425
- /**
426
- * Schedule a flush of buffered updates after the rate window resets.
427
- */
428
293
  scheduleFlush() {
429
294
  if (this.flushTimer !== null)
430
295
  return;
@@ -433,9 +298,6 @@ export class RealtimeClient {
433
298
  this.flushPendingUpdates();
434
299
  }, RealtimeClient.RATE_WINDOW_MS);
435
300
  }
436
- /**
437
- * Flush all buffered updates as a single coalesced message.
438
- */
439
301
  flushPendingUpdates() {
440
302
  if (this.pendingUpdates.length === 0)
441
303
  return;
@@ -443,45 +305,24 @@ export class RealtimeClient {
443
305
  this.pendingUpdates = [];
444
306
  return;
445
307
  }
446
- // Merge all pending updates into a single Yjs update
447
308
  const merged = Y.mergeUpdates(this.pendingUpdates);
448
309
  this.pendingUpdates = [];
449
- // Reset window and send
450
310
  this.sendTimestamps = [Date.now()];
451
311
  this.ws.send(merged);
452
312
  }
453
- /**
454
- * Get the current document snapshot as JSON.
455
- */
456
313
  getSnapshot() {
457
314
  const root = this.ydoc.getMap('root');
458
315
  return root.toJSON();
459
316
  }
460
- /**
461
- * Get the underlying Y.Doc for direct manipulation.
462
- * Use with caution - prefer using the Puck-Yjs binding utilities.
463
- */
464
317
  getYDoc() {
465
318
  return this.ydoc;
466
319
  }
467
- /**
468
- * Check if currently connected.
469
- */
470
320
  isConnected() {
471
321
  return this.connected;
472
322
  }
473
- /**
474
- * Check if presence updates are available via WebSocket.
475
- * Returns true when connected and able to send/receive presence messages.
476
- */
477
323
  get presenceViaWebSocket() {
478
324
  return this.connected && this.ws !== null && this.ws.readyState === WebSocket.OPEN;
479
325
  }
480
- /**
481
- * Send focus regions update to the server.
482
- * @param focusRegions - JSON paths the actor is focused on
483
- * @returns true if message was sent, false if not connected
484
- */
485
326
  sendFocusRegions(focusRegions) {
486
327
  if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
487
328
  return false;
@@ -494,10 +335,6 @@ export class RealtimeClient {
494
335
  this.ws.send(JSON.stringify(message));
495
336
  return true;
496
337
  }
497
- /**
498
- * Send a presence heartbeat to keep the connection alive.
499
- * @param state - Optional state update (active, idle, editing)
500
- */
501
338
  sendHeartbeat(state) {
502
339
  if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
503
340
  return;
@@ -509,18 +346,6 @@ export class RealtimeClient {
509
346
  };
510
347
  this.ws.send(JSON.stringify(message));
511
348
  }
512
- /**
513
- * Wait for the server to acknowledge that all preceding WebSocket messages
514
- * have been processed. This uses TCP ordering guarantees: a text frame sent
515
- * after binary CRDT updates is guaranteed to arrive after those updates.
516
- * The server echoes back a delivery_ack with the matching requestId.
517
- *
518
- * Used before publish to ensure the Durable Object has received and applied
519
- * the latest edits before the HTTP publish request arrives.
520
- *
521
- * @returns Promise that resolves when the server confirms delivery
522
- * @throws Error if not connected or if timeout expires (5 seconds)
523
- */
524
349
  waitForDelivery() {
525
350
  if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
526
351
  return Promise.reject(new Error('Not connected'));
@@ -540,17 +365,6 @@ export class RealtimeClient {
540
365
  }));
541
366
  });
542
367
  }
543
- /**
544
- * Request the server to publish the current document via WebSocket.
545
- * TCP ordering guarantees all preceding binary CRDT updates have been
546
- * processed before this message is handled, eliminating stale-version races.
547
- *
548
- * The Durable Object handles the entire flow: flush to Postgres, then
549
- * call /internal/publish to create the checkpoint.
550
- *
551
- * @returns Promise that resolves with the publish result
552
- * @throws Error if not connected or if timeout expires (30 seconds)
553
- */
554
368
  requestPublish() {
555
369
  if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
556
370
  return Promise.reject(new Error('Not connected'));
@@ -570,10 +384,6 @@ export class RealtimeClient {
570
384
  }));
571
385
  });
572
386
  }
573
- /**
574
- * Handle incoming text (JSON) messages for presence protocol.
575
- * @param data - Raw JSON string from WebSocket
576
- */
577
387
  handleTextMessage(data) {
578
388
  try {
579
389
  const message = JSON.parse(data);
@@ -585,7 +395,6 @@ export class RealtimeClient {
585
395
  this.config.onFocusRegionBroadcast?.(message.actorId, message.focusRegions);
586
396
  break;
587
397
  case 'focus_region_ack':
588
- // Acknowledgment received
589
398
  break;
590
399
  case 'delivery_ack': {
591
400
  const pending = this.pendingDeliveryAcks.get(message.requestId);
@@ -610,6 +419,22 @@ export class RealtimeClient {
610
419
  }
611
420
  break;
612
421
  }
422
+ case 'sync_baseline': {
423
+ if (this.syncBaselineTimer !== null) {
424
+ clearTimeout(this.syncBaselineTimer);
425
+ this.syncBaselineTimer = null;
426
+ }
427
+ if (message.gate !== 'open') {
428
+ this.serverGateClosed = true;
429
+ break;
430
+ }
431
+ const serverSv = Uint8Array.from(atob(message.serverStateVector), c => c.charCodeAt(0));
432
+ const delta = Y.encodeStateAsUpdate(this.ydoc, serverSv);
433
+ if (delta.length > RealtimeClient.YJS_EMPTY_UPDATE_LENGTH) {
434
+ this.ws?.send(delta);
435
+ }
436
+ break;
437
+ }
613
438
  case 'presence_error':
614
439
  if (message.code === 'RATE_LIMITED') {
615
440
  this.config.onRateLimited?.();
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,5 @@
7
7
  /** Name half of `x-p1-sdk`. */
8
8
  export declare const SDK_NAME = "css-client";
9
9
  /** Version half of `x-p1-sdk`, matching the published release. */
10
- export declare const SDK_VERSION = "0.12.0";
10
+ export declare const SDK_VERSION = "0.14.0";
11
11
  //# sourceMappingURL=sdk-version.d.ts.map