@vuer-ai/vuer-rtc-server 0.2.3 → 0.4.1

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 (104) hide show
  1. package/.env +1 -1
  2. package/README.md +56 -0
  3. package/dist/archive/ArchivalService.js +1 -1
  4. package/dist/archive/ArchivalService.js.map +1 -1
  5. package/dist/broker/InMemoryBroker.d.ts +2 -2
  6. package/dist/broker/InMemoryBroker.d.ts.map +1 -1
  7. package/dist/broker/InMemoryBroker.js +4 -4
  8. package/dist/broker/InMemoryBroker.js.map +1 -1
  9. package/dist/broker/types.d.ts +3 -3
  10. package/dist/broker/types.d.ts.map +1 -1
  11. package/dist/journal/CoalescingService.d.ts.map +1 -1
  12. package/dist/journal/CoalescingService.js +18 -208
  13. package/dist/journal/CoalescingService.js.map +1 -1
  14. package/dist/journal/GraphJournalService.d.ts +127 -0
  15. package/dist/journal/GraphJournalService.d.ts.map +1 -0
  16. package/dist/journal/GraphJournalService.js +491 -0
  17. package/dist/journal/GraphJournalService.js.map +1 -0
  18. package/dist/journal/JournalRLE.d.ts +2 -2
  19. package/dist/journal/JournalRLE.js +14 -14
  20. package/dist/journal/JournalRLE.js.map +1 -1
  21. package/dist/journal/JournalRepository.js +7 -7
  22. package/dist/journal/JournalRepository.js.map +1 -1
  23. package/dist/journal/JournalService.d.ts.map +1 -1
  24. package/dist/journal/JournalService.js +6 -40
  25. package/dist/journal/JournalService.js.map +1 -1
  26. package/dist/journal/RLECompression.d.ts +9 -9
  27. package/dist/journal/RLECompression.d.ts.map +1 -1
  28. package/dist/journal/RLECompression.js +22 -22
  29. package/dist/journal/RLECompression.js.map +1 -1
  30. package/dist/journal/TextJournalService.d.ts +98 -0
  31. package/dist/journal/TextJournalService.d.ts.map +1 -0
  32. package/dist/journal/TextJournalService.js +401 -0
  33. package/dist/journal/TextJournalService.js.map +1 -0
  34. package/dist/journal/index.d.ts +3 -1
  35. package/dist/journal/index.d.ts.map +1 -1
  36. package/dist/journal/index.js +4 -1
  37. package/dist/journal/index.js.map +1 -1
  38. package/dist/journal/rle-demo.js +11 -11
  39. package/dist/journal/rle-demo.js.map +1 -1
  40. package/dist/serve.d.ts +29 -11
  41. package/dist/serve.d.ts.map +1 -1
  42. package/dist/serve.js +558 -93
  43. package/dist/serve.js.map +1 -1
  44. package/dist/transport/RTCServer.d.ts +2 -2
  45. package/dist/transport/RTCServer.d.ts.map +1 -1
  46. package/dist/transport/RTCServer.js +22 -22
  47. package/dist/transport/RTCServer.js.map +1 -1
  48. package/docs/API.md +642 -0
  49. package/examples/compression-example.ts +3 -3
  50. package/package.json +2 -2
  51. package/prisma/schema.prisma +124 -6
  52. package/src/archive/ArchivalService.ts +1 -1
  53. package/src/broker/InMemoryBroker.ts +4 -4
  54. package/src/broker/types.ts +3 -3
  55. package/src/journal/CoalescingService.ts +18 -235
  56. package/src/journal/{JournalService.ts → GraphJournalService.ts} +34 -74
  57. package/src/journal/JournalRLE.ts +15 -15
  58. package/src/journal/JournalRepository.ts +7 -7
  59. package/src/journal/RLECompression.ts +24 -24
  60. package/src/journal/TextJournalService.ts +483 -0
  61. package/src/journal/index.ts +10 -2
  62. package/src/journal/rle-demo.ts +11 -11
  63. package/src/serve.ts +598 -94
  64. package/src/transport/RTCServer.ts +23 -23
  65. package/tests/benchmark/journal-optimization-benchmark.test.ts +14 -14
  66. package/tests/compression/compression.test.ts +8 -8
  67. package/tests/demo.ts +88 -88
  68. package/tests/e2e/convergence.test.ts +9 -9
  69. package/tests/e2e/helpers/assertions.ts +22 -0
  70. package/tests/e2e/helpers/createTestServer.ts +4 -4
  71. package/tests/e2e/latency.test.ts +47 -41
  72. package/tests/e2e/packet-loss.test.ts +6 -6
  73. package/tests/e2e/relay.test.ts +9 -9
  74. package/tests/e2e/sync-perf.test.ts +5 -5
  75. package/tests/e2e/sync-reconciliation.test.ts +6 -6
  76. package/tests/e2e/text-sync.test.ts +14 -14
  77. package/tests/e2e/tombstone-convergence.test.ts +22 -22
  78. package/tests/fixtures/array-ops.jsonl +6 -6
  79. package/tests/fixtures/boolean-ops.jsonl +6 -6
  80. package/tests/fixtures/color-ops.jsonl +4 -4
  81. package/tests/fixtures/edit-buffer.jsonl +3 -3
  82. package/tests/fixtures/messages.jsonl +4 -4
  83. package/tests/fixtures/node-ops.jsonl +6 -6
  84. package/tests/fixtures/number-ops.jsonl +7 -7
  85. package/tests/fixtures/object-ops.jsonl +4 -4
  86. package/tests/fixtures/operations.jsonl +7 -7
  87. package/tests/fixtures/string-ops.jsonl +4 -4
  88. package/tests/fixtures/undo-redo.jsonl +3 -3
  89. package/tests/fixtures/vector-ops.jsonl +9 -9
  90. package/tests/integration/repositories.test.ts +8 -9
  91. package/tests/journal/compaction-load-bug.test.ts +31 -31
  92. package/tests/journal/compaction.test.ts +26 -26
  93. package/tests/journal/journal-rle.test.ts +38 -38
  94. package/tests/journal/journal-service.test.ts +13 -13
  95. package/tests/journal/lww-ordering-bug.test.ts +39 -39
  96. package/tests/journal/rle-compression.test.ts +71 -71
  97. package/tests/journal/text-coalescing.test.ts +34 -34
  98. package/tests/test-data/datatypes.ts +85 -85
  99. package/tests/test-data/operations-example.ts +62 -62
  100. package/tests/test-data/scene-example.ts +11 -11
  101. package/tests/unit/operations.test.ts +7 -7
  102. package/tests/unit/s3-compression.test.ts +5 -3
  103. package/tests/unit/vectorClock.test.ts +2 -2
  104. package/tests/journal/multi-session-coalescing.test.ts +0 -871
@@ -0,0 +1,401 @@
1
+ /**
2
+ * Text Journal Service - Business logic for text document journal operations
3
+ *
4
+ * Handles:
5
+ * - Receiving and validating CRDTMessages for text documents
6
+ * - Storing messages in journal
7
+ * - Processing meta.undo/meta.redo operations
8
+ * - Computing current text state (TextRope)
9
+ * - Providing snapshot + journal for new clients
10
+ */
11
+ import { create, insert, remove as deleteText, compactRope, fromRaw, } from '@vuer-ai/vuer-rtc';
12
+ /** How often the compaction loop runs (ms). */
13
+ const COMPACTION_INTERVAL_MS = 30_000;
14
+ /** Number of journal entries that triggers compaction for a document. */
15
+ const COMPACTION_THRESHOLD_ENTRIES = 500;
16
+ /**
17
+ * Safely parse a TextDocument.currentText (Json) into a TextRope.
18
+ * Text is stored as plain strings and lazy-upgraded to TextRope on edit.
19
+ */
20
+ function parseTextSnapshot(currentText, agentId) {
21
+ if (typeof currentText === 'string') {
22
+ const rope = create(agentId);
23
+ if (currentText.length > 0) {
24
+ // Insert initial text
25
+ insert(rope, 0, currentText);
26
+ }
27
+ return rope;
28
+ }
29
+ // If it's already a TextRope object, reconstruct it
30
+ if (currentText && typeof currentText === 'object') {
31
+ try {
32
+ // Attempt to hydrate from serialized format
33
+ const hydrated = fromRaw(currentText);
34
+ hydrated.agentId = agentId;
35
+ return hydrated;
36
+ }
37
+ catch {
38
+ // Fall back to empty rope
39
+ return create(agentId);
40
+ }
41
+ }
42
+ return create(agentId);
43
+ }
44
+ export class TextJournalService {
45
+ prisma;
46
+ // In-memory state per document (for fast access)
47
+ documentStates = new Map();
48
+ /** Handle returned by setInterval for the compaction loop. */
49
+ compactionTimer = null;
50
+ /** Mutex set to prevent concurrent compact + processMessage races. */
51
+ compactionLocks = new Set();
52
+ /** Callback for fetching connected member vector clocks per document. */
53
+ memberClockProvider = null;
54
+ constructor(prisma) {
55
+ this.prisma = prisma;
56
+ }
57
+ // ── Compaction loop ──────────────────────────────────────────────
58
+ /**
59
+ * Start the periodic compaction loop.
60
+ * Should be called once after the service is created.
61
+ */
62
+ startCompactionLoop() {
63
+ if (this.compactionTimer)
64
+ return; // already running
65
+ this.compactionTimer = setInterval(() => {
66
+ this.compactAllLoadedDocuments().catch((err) => console.error('[text-compaction-loop]', err));
67
+ }, COMPACTION_INTERVAL_MS);
68
+ }
69
+ /**
70
+ * Stop the periodic compaction loop (for graceful shutdown).
71
+ */
72
+ stopCompactionLoop() {
73
+ if (this.compactionTimer) {
74
+ clearInterval(this.compactionTimer);
75
+ this.compactionTimer = null;
76
+ }
77
+ }
78
+ /**
79
+ * Store a callback for fetching connected member vector clocks per document.
80
+ * Used by the compaction loop to compute safe watermarks.
81
+ */
82
+ setMemberClockProvider(fn) {
83
+ this.memberClockProvider = fn;
84
+ }
85
+ /**
86
+ * Compute safe compaction point: the component-wise minimum of all
87
+ * connected clients' vector clocks.
88
+ */
89
+ computeCompactionWatermark(memberClocks) {
90
+ if (memberClocks.length === 0)
91
+ return {};
92
+ const result = { ...memberClocks[0] };
93
+ for (let i = 1; i < memberClocks.length; i++) {
94
+ const clock = memberClocks[i];
95
+ for (const client of Object.keys(result)) {
96
+ result[client] = Math.min(result[client], clock[client] ?? 0);
97
+ }
98
+ }
99
+ return result;
100
+ }
101
+ /**
102
+ * Check if a message's vector clock is dominated by the watermark.
103
+ */
104
+ isDominatedByWatermark(msgClock, watermark) {
105
+ for (const [client, time] of Object.entries(msgClock)) {
106
+ if ((watermark[client] ?? 0) < time) {
107
+ return false;
108
+ }
109
+ }
110
+ return true;
111
+ }
112
+ /**
113
+ * Iterate all in-memory document states and compact those whose
114
+ * journal exceeds COMPACTION_THRESHOLD_ENTRIES.
115
+ */
116
+ async compactAllLoadedDocuments() {
117
+ for (const [documentId, state] of this.documentStates) {
118
+ if (state.journal.length >= COMPACTION_THRESHOLD_ENTRIES) {
119
+ try {
120
+ let watermark;
121
+ if (this.memberClockProvider) {
122
+ const clocks = await this.memberClockProvider(documentId);
123
+ if (clocks.length > 0) {
124
+ watermark = this.computeCompactionWatermark(clocks);
125
+ }
126
+ }
127
+ await this.compact(documentId, watermark);
128
+ }
129
+ catch (err) {
130
+ console.error(`[text-compaction] failed for ${documentId}:`, err);
131
+ }
132
+ }
133
+ }
134
+ }
135
+ // ── Document loading ─────────────────────────────────────────────
136
+ /**
137
+ * Load text document state from database.
138
+ */
139
+ async loadDocument(documentId) {
140
+ // Check in-memory cache first
141
+ if (this.documentStates.has(documentId)) {
142
+ return this.documentStates.get(documentId);
143
+ }
144
+ // Load from database
145
+ const doc = await this.prisma.textDocument.findUnique({ where: { id: documentId } });
146
+ if (!doc)
147
+ return null;
148
+ // Parse text rope
149
+ const textRope = parseTextSnapshot(doc.currentText, 'system');
150
+ // Load journal entries after the snapshot
151
+ const batches = await this.prisma.textJournalBatch.findMany({
152
+ where: { textDocumentId: documentId },
153
+ orderBy: { lamportTime: 'asc' },
154
+ });
155
+ const journal = batches.flatMap((batch) => {
156
+ const ops = Array.isArray(batch.operations) ? batch.operations : [];
157
+ return ops.map((op) => ({
158
+ msg: {
159
+ id: batch.batchId,
160
+ client: batch.client,
161
+ ops: [op],
162
+ clock: batch.vectorClock || {},
163
+ lt: batch.lamportTime || 0,
164
+ ts: new Date(batch.persistedAt).getTime() / 1000,
165
+ },
166
+ deletedAt: batch.deletedAt ? new Date(batch.deletedAt).getTime() / 1000 : undefined,
167
+ }));
168
+ });
169
+ const state = {
170
+ snapshot: {
171
+ text: textRope,
172
+ vectorClock: {},
173
+ lt: 0,
174
+ },
175
+ journal,
176
+ };
177
+ this.documentStates.set(documentId, state);
178
+ return state;
179
+ }
180
+ /**
181
+ * Process incoming message from client
182
+ */
183
+ async processMessage(documentId, msg) {
184
+ // Load state
185
+ const state = await this.loadDocument(documentId);
186
+ if (!state) {
187
+ return { success: false, error: 'Text document not found' };
188
+ }
189
+ // Check for duplicate
190
+ const exists = await this.prisma.textJournalBatch.findFirst({
191
+ where: { textDocumentId: documentId, batchId: msg.id },
192
+ });
193
+ if (exists) {
194
+ return { success: true }; // Already processed
195
+ }
196
+ // Process meta operations (undo/redo)
197
+ for (const op of msg.ops) {
198
+ if (op.ot === 'meta.undo') {
199
+ const targetId = op.targetMsgId;
200
+ const target = state.journal.find((e) => e.msg.id === targetId);
201
+ if (target) {
202
+ target.deletedAt = msg.ts;
203
+ // Update in DB
204
+ await this.prisma.textJournalBatch.updateMany({
205
+ where: { textDocumentId: documentId, batchId: targetId },
206
+ data: { deletedAt: new Date(msg.ts * 1000) },
207
+ });
208
+ }
209
+ }
210
+ else if (op.ot === 'meta.redo') {
211
+ const targetId = op.targetMsgId;
212
+ const target = state.journal.find((e) => e.msg.id === targetId);
213
+ if (target) {
214
+ delete target.deletedAt;
215
+ // Clear in DB
216
+ await this.prisma.textJournalBatch.updateMany({
217
+ where: { textDocumentId: documentId, batchId: targetId },
218
+ data: { deletedAt: null },
219
+ });
220
+ }
221
+ }
222
+ }
223
+ // Add to journal
224
+ state.journal.push({ msg });
225
+ // Persist to database
226
+ await this.prisma.textJournalBatch.create({
227
+ data: {
228
+ textDocumentId: documentId,
229
+ client: msg.client,
230
+ batchId: msg.id,
231
+ operations: msg.ops,
232
+ vectorClock: msg.clock,
233
+ lamportTime: msg.lt,
234
+ startTime: new Date(msg.ts * 1000),
235
+ endTime: new Date(msg.ts * 1000),
236
+ },
237
+ });
238
+ return { success: true };
239
+ }
240
+ /**
241
+ * Get state for new client (snapshot + journal).
242
+ */
243
+ async getStateForClient(documentId) {
244
+ const state = await this.loadDocument(documentId);
245
+ if (!state)
246
+ return null;
247
+ // Filter journal entries using vector clock comparison
248
+ const postSnapshotJournal = state.journal
249
+ .filter((e) => {
250
+ for (const [client, time] of Object.entries(e.msg.clock)) {
251
+ if (time > (state.snapshot.vectorClock[client] ?? 0)) {
252
+ return true;
253
+ }
254
+ }
255
+ return false;
256
+ })
257
+ .map((e) => e.msg);
258
+ // Serialize TextRope to plain string via toJSON()
259
+ const serializedText = state.snapshot.text.toString();
260
+ return {
261
+ snapshot: {
262
+ text: serializedText,
263
+ vectorClock: state.snapshot.vectorClock,
264
+ lt: state.snapshot.lt,
265
+ },
266
+ journal: postSnapshotJournal,
267
+ };
268
+ }
269
+ /**
270
+ * Compact journal (create new snapshot from acknowledged entries).
271
+ */
272
+ async compact(documentId, watermark) {
273
+ // Acquire compaction lock
274
+ if (this.compactionLocks.has(documentId))
275
+ return;
276
+ this.compactionLocks.add(documentId);
277
+ try {
278
+ const state = await this.loadDocument(documentId);
279
+ if (!state || state.journal.length === 0)
280
+ return;
281
+ // Determine compaction boundary
282
+ let compactUpToIndex = -1;
283
+ if (watermark) {
284
+ for (let i = 0; i < state.journal.length; i++) {
285
+ if (this.isDominatedByWatermark(state.journal[i].msg.clock, watermark)) {
286
+ compactUpToIndex = i;
287
+ }
288
+ else {
289
+ break;
290
+ }
291
+ }
292
+ }
293
+ else {
294
+ compactUpToIndex = state.journal.length - 1;
295
+ }
296
+ if (compactUpToIndex < 0)
297
+ return;
298
+ // Build new snapshot
299
+ let newText = state.snapshot.text;
300
+ let mergedClock = { ...state.snapshot.vectorClock };
301
+ let maxLamport = state.snapshot.lt;
302
+ for (let i = 0; i <= compactUpToIndex; i++) {
303
+ const entry = state.journal[i];
304
+ if (!entry.deletedAt) {
305
+ // Apply text operations to rope
306
+ for (const op of entry.msg.ops) {
307
+ if (op.ot.startsWith('text.')) {
308
+ // Apply text operation
309
+ if (op.ot === 'text.insert') {
310
+ insert(newText, op.position, op.value);
311
+ }
312
+ else if (op.ot === 'text.delete') {
313
+ deleteText(newText, op.position, op.length || 1);
314
+ }
315
+ }
316
+ }
317
+ }
318
+ // Merge clock and lamport
319
+ for (const [client, time] of Object.entries(entry.msg.clock)) {
320
+ mergedClock[client] = Math.max(mergedClock[client] || 0, time);
321
+ }
322
+ maxLamport = Math.max(maxLamport, entry.msg.lt);
323
+ }
324
+ // Compact TextRope (merge spans, remove tombstones)
325
+ newText = compactRope(newText);
326
+ // Collect batchIds of compacted entries
327
+ const compactedBatchIds = state.journal
328
+ .slice(0, compactUpToIndex + 1)
329
+ .map((e) => e.msg.id);
330
+ // Update snapshot
331
+ state.snapshot = {
332
+ text: newText,
333
+ vectorClock: mergedClock,
334
+ lt: maxLamport,
335
+ };
336
+ // Remove compacted entries from in-memory journal
337
+ state.journal = state.journal.slice(compactUpToIndex + 1);
338
+ // Persist snapshot (TextRope.toJSON() returns plain string)
339
+ const serializedText = newText.toJSON();
340
+ await this.prisma.textDocument.update({
341
+ where: { id: documentId },
342
+ data: { currentText: serializedText },
343
+ });
344
+ // Delete compacted batches from DB
345
+ if (compactedBatchIds.length > 0) {
346
+ const deletedCount = await this.prisma.textJournalBatch.deleteMany({
347
+ where: {
348
+ textDocumentId: documentId,
349
+ batchId: { in: compactedBatchIds },
350
+ },
351
+ });
352
+ console.log(`[text-compact] Deleted ${deletedCount.count} journal batches for doc ${documentId}`);
353
+ }
354
+ }
355
+ finally {
356
+ this.compactionLocks.delete(documentId);
357
+ }
358
+ }
359
+ /**
360
+ * Create a new text document
361
+ */
362
+ async createDocument(name, ownerId) {
363
+ const doc = await this.prisma.textDocument.create({
364
+ data: {
365
+ name,
366
+ ownerId,
367
+ currentText: '',
368
+ version: 0,
369
+ },
370
+ });
371
+ // Initialize in-memory state
372
+ this.documentStates.set(doc.id, {
373
+ snapshot: {
374
+ text: create('system'),
375
+ vectorClock: {},
376
+ lt: 0,
377
+ },
378
+ journal: [],
379
+ });
380
+ return doc.id;
381
+ }
382
+ /**
383
+ * Clear all journal entries for a document (keep document record).
384
+ */
385
+ async clearDocument(documentId) {
386
+ await this.prisma.textJournalBatch.deleteMany({
387
+ where: { textDocumentId: documentId },
388
+ });
389
+ // Reset in-memory state
390
+ const state = this.documentStates.get(documentId);
391
+ if (state) {
392
+ state.journal = [];
393
+ state.snapshot = {
394
+ text: create('system'),
395
+ vectorClock: {},
396
+ lt: 0,
397
+ };
398
+ }
399
+ }
400
+ }
401
+ //# sourceMappingURL=TextJournalService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextJournalService.js","sourceRoot":"","sources":["../../src/journal/TextJournalService.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,7 @@
2
2
  * Journal module exports
3
3
  */
4
4
  export { JournalRepository } from './JournalRepository.js';
5
- export { JournalService, type JournalEntry as ServerJournalEntry, type DocumentState, } from './JournalService.js';
5
+ export { GraphJournalService, type JournalEntry as ServerJournalEntry, type DocumentState, } from './GraphJournalService.js';
6
+ export { TextJournalService, type TextJournalEntry as ServerTextJournalEntry, type TextDocumentState as ServerTextDocumentState, } from './TextJournalService.js';
7
+ export { GraphJournalService as JournalService } from './GraphJournalService.js';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/journal/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,KAAK,YAAY,IAAI,kBAAkB,EACvC,KAAK,aAAa,GACnB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/journal/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,KAAK,YAAY,IAAI,kBAAkB,EACvC,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,gBAAgB,IAAI,sBAAsB,EAC/C,KAAK,iBAAiB,IAAI,uBAAuB,GAClD,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,mBAAmB,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -2,5 +2,8 @@
2
2
  * Journal module exports
3
3
  */
4
4
  export { JournalRepository } from './JournalRepository.js';
5
- export { JournalService, } from './JournalService.js';
5
+ export { GraphJournalService, } from './GraphJournalService.js';
6
+ export { TextJournalService, } from './TextJournalService.js';
7
+ // Backward compatibility export
8
+ export { GraphJournalService as JournalService } from './GraphJournalService.js';
6
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/journal/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,cAAc,GAGf,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/journal/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,GAGnB,MAAM,yBAAyB,CAAC;AAEjC,gCAAgC;AAChC,OAAO,EAAE,mBAAmB,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -8,17 +8,17 @@ import { encodeJournalRLE, getCompressionStats, verifyRLEIntegrity, } from './Jo
8
8
  /**
9
9
  * Create a test message
10
10
  */
11
- function createMessage(id, sessionId, lamportTime, timestamp, key = 'cube-1', value = [lamportTime, 0, 0]) {
11
+ function createMessage(id, client, lamportTime, timestamp, key = 'cube-1', value = [lamportTime, 0, 0]) {
12
12
  return {
13
13
  id,
14
- sessionId,
15
- clock: { [sessionId]: lamportTime },
16
- lamportTime,
17
- timestamp,
14
+ client,
15
+ clock: { [client]: lamportTime },
16
+ lt: lamportTime,
17
+ ts: timestamp,
18
18
  ops: [
19
19
  {
20
20
  key,
21
- otype: 'vector3.set',
21
+ ot: 'vector3.set',
22
22
  path: 'position',
23
23
  value,
24
24
  },
@@ -99,14 +99,14 @@ function main() {
99
99
  const user = i < 15 ? 'user-1' : 'user-2';
100
100
  const msg = {
101
101
  id: `msg-${i}`,
102
- sessionId: user,
102
+ client: user,
103
103
  clock: { [user]: i },
104
- lamportTime: i,
105
- timestamp: 1000 + i,
104
+ lt: i,
105
+ ts: 1000 + i,
106
106
  ops: [
107
107
  {
108
108
  key: `node-${i % 5}`,
109
- otype: 'node.insert',
109
+ ot: 'node.insert',
110
110
  path: 'children',
111
111
  value: {
112
112
  key: `child-${i}`,
@@ -119,7 +119,7 @@ function main() {
119
119
  },
120
120
  {
121
121
  key: `node-${i % 5}`,
122
- otype: 'vector3.set',
122
+ ot: 'vector3.set',
123
123
  path: 'color',
124
124
  value: [Math.random(), Math.random(), Math.random()],
125
125
  },
@@ -1 +1 @@
1
- {"version":3,"file":"rle-demo.js","sourceRoot":"","sources":["../../src/journal/rle-demo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rle-demo.js","sourceRoot":"","sources":["../../src/journal/rle-demo.ts"],"names":[],"mappings":"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"}
package/dist/serve.d.ts CHANGED
@@ -2,19 +2,37 @@
2
2
  * serve.ts — HTTP + WebSocket entry point.
3
3
  *
4
4
  * Wires real WS connections to RTCServer + InMemoryBroker.
5
- * URL pattern: ws://localhost:{PORT}/ws/{roomId}?sessionId={sessionId}
6
5
  *
7
- * Also serves REST API for inspecting the MongoDB database:
6
+ * WebSocket URL patterns:
7
+ * ws://localhost:{PORT}/ws/graph/{roomId}?client={client}
8
+ * ws://localhost:{PORT}/ws/text/{docId}?client={client}
9
+ *
10
+ * REST API for inspecting the MongoDB database:
8
11
  * GET /api/stats
9
- * GET /api/documents
10
- * GET /api/documents/:id
11
- * GET /api/documents/:id/journal
12
- * GET /api/documents/:id/operations
13
- * GET /api/documents/:id/sessions
14
- * GET /api/rooms/:roomId/state
15
- * DELETE /api/rooms/:roomId
16
- * POST /api/documents/:id/compact — trigger journal compaction
17
- * POST /api/documents/:id/coalesce — operation coalescing (placeholder)
12
+ *
13
+ * Graph Documents (Scene Graphs):
14
+ * GET /api/graph
15
+ * GET /api/graph/:id
16
+ * GET /api/graph/:id/journal
17
+ * GET /api/graph/:id/operations
18
+ * GET /api/graph/:id/sessions
19
+ * POST /api/graph/:id/compact
20
+ * POST /api/graph/:id/coalesce
21
+ * DELETE /api/graph/:id
22
+ *
23
+ * Text Documents (Standalone Text CRDTs):
24
+ * GET /api/text
25
+ * GET /api/text/:id
26
+ * GET /api/text/:id/journal
27
+ * GET /api/text/:id/operations
28
+ * GET /api/text/:id/sessions
29
+ * POST /api/text/:id/compact
30
+ * POST /api/text/:id/coalesce
31
+ * DELETE /api/text/:id
32
+ *
33
+ * Legacy endpoints (redirect to /api/graph/):
34
+ * GET /api/documents -> /api/graph
35
+ * GET /api/rooms/:roomId/state -> /api/graph/:id/state
18
36
  */
19
37
  export {};
20
38
  //# sourceMappingURL=serve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG"}