@vuer-ai/vuer-rtc 0.4.2 → 0.5.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 (90) hide show
  1. package/CLAUDE.md +29 -0
  2. package/COALESCE_FIX_VERIFICATION.md +81 -0
  3. package/REFACTORING_NOTES.md +229 -0
  4. package/dist/client/EditBuffer.d.ts +13 -1
  5. package/dist/client/EditBuffer.d.ts.map +1 -1
  6. package/dist/client/EditBuffer.js +47 -3
  7. package/dist/client/EditBuffer.js.map +1 -1
  8. package/dist/client/actions.d.ts +5 -1
  9. package/dist/client/actions.d.ts.map +1 -1
  10. package/dist/client/actions.js +12 -9
  11. package/dist/client/actions.js.map +1 -1
  12. package/dist/client/coalesceGraphOps.d.ts +34 -0
  13. package/dist/client/coalesceGraphOps.d.ts.map +1 -0
  14. package/dist/client/coalesceGraphOps.js +35 -0
  15. package/dist/client/coalesceGraphOps.js.map +1 -0
  16. package/dist/client/coalesceTextOperations.d.ts +42 -0
  17. package/dist/client/coalesceTextOperations.d.ts.map +1 -0
  18. package/dist/client/coalesceTextOperations.js +158 -0
  19. package/dist/client/coalesceTextOperations.js.map +1 -0
  20. package/dist/client/coalescence/index.d.ts +9 -0
  21. package/dist/client/coalescence/index.d.ts.map +1 -0
  22. package/dist/client/coalescence/index.js +9 -0
  23. package/dist/client/coalescence/index.js.map +1 -0
  24. package/dist/client/coalescence/registry.d.ts +48 -0
  25. package/dist/client/coalescence/registry.d.ts.map +1 -0
  26. package/dist/client/coalescence/registry.js +95 -0
  27. package/dist/client/coalescence/registry.js.map +1 -0
  28. package/dist/client/coalescence/textDeletes.d.ts +38 -0
  29. package/dist/client/coalescence/textDeletes.d.ts.map +1 -0
  30. package/dist/client/coalescence/textDeletes.js +68 -0
  31. package/dist/client/coalescence/textDeletes.js.map +1 -0
  32. package/dist/client/coalescence/textInserts.d.ts +45 -0
  33. package/dist/client/coalescence/textInserts.d.ts.map +1 -0
  34. package/dist/client/coalescence/textInserts.js +96 -0
  35. package/dist/client/coalescence/textInserts.js.map +1 -0
  36. package/dist/client/createGraph.d.ts.map +1 -1
  37. package/dist/client/createGraph.js +9 -2
  38. package/dist/client/createGraph.js.map +1 -1
  39. package/dist/client/createTextDocument.d.ts.map +1 -1
  40. package/dist/client/createTextDocument.js +2 -1
  41. package/dist/client/createTextDocument.js.map +1 -1
  42. package/dist/client/index.d.ts +4 -0
  43. package/dist/client/index.d.ts.map +1 -1
  44. package/dist/client/index.js +4 -0
  45. package/dist/client/index.js.map +1 -1
  46. package/dist/client/textActions.d.ts +1 -1
  47. package/dist/client/textActions.d.ts.map +1 -1
  48. package/dist/client/textActions.js +7 -2
  49. package/dist/client/textActions.js.map +1 -1
  50. package/dist/client/types.d.ts +3 -0
  51. package/dist/client/types.d.ts.map +1 -1
  52. package/dist/crdt/GraphTextCRDT.d.ts +0 -4
  53. package/dist/crdt/GraphTextCRDT.d.ts.map +1 -1
  54. package/dist/crdt/GraphTextCRDT.js +3 -0
  55. package/dist/crdt/GraphTextCRDT.js.map +1 -1
  56. package/dist/crdt/Rope.d.ts +27 -6
  57. package/dist/crdt/Rope.d.ts.map +1 -1
  58. package/dist/crdt/Rope.js +137 -69
  59. package/dist/crdt/Rope.js.map +1 -1
  60. package/dist/operations/OperationTypes.d.ts +10 -26
  61. package/dist/operations/OperationTypes.d.ts.map +1 -1
  62. package/dist/operations/apply/text.d.ts.map +1 -1
  63. package/dist/operations/apply/text.js +8 -16
  64. package/dist/operations/apply/text.js.map +1 -1
  65. package/examples/05-coalescence-usage.ts +189 -0
  66. package/package.json +1 -1
  67. package/src/client/EditBuffer.ts +51 -3
  68. package/src/client/actions.ts +13 -9
  69. package/src/client/coalesceGraphOps.ts +40 -0
  70. package/src/client/coalesceTextOperations.ts +172 -0
  71. package/src/client/coalescence/index.ts +18 -0
  72. package/src/client/coalescence/registry.ts +137 -0
  73. package/src/client/coalescence/textDeletes.ts +94 -0
  74. package/src/client/coalescence/textInserts.ts +128 -0
  75. package/src/client/createGraph.ts +11 -2
  76. package/src/client/createTextDocument.ts +2 -1
  77. package/src/client/index.ts +14 -0
  78. package/src/client/textActions.ts +9 -2
  79. package/src/client/types.ts +4 -1
  80. package/src/crdt/GraphTextCRDT.ts +0 -5
  81. package/src/crdt/Rope.ts +155 -79
  82. package/src/operations/OperationTypes.ts +10 -8
  83. package/src/operations/apply/text.ts +8 -20
  84. package/test-coalescence.ts +201 -0
  85. package/tests/client/actions.test.ts +156 -0
  86. package/tests/client/coalesce-graph-operations.test.ts +321 -0
  87. package/tests/client/coalesce-text-operations.test.ts +326 -0
  88. package/tests/client/edit-buffer.test.ts +137 -1
  89. package/tests/crdt/graph-text-crdt.test.ts +29 -17
  90. package/tests/crdt/rope.test.ts +13 -11
@@ -24,6 +24,7 @@ import {
24
24
  getStats,
25
25
  itemIdEquals,
26
26
  itemIdCompare,
27
+ parseItemId,
27
28
  toRaw,
28
29
  fromRaw,
29
30
  hydrateRope,
@@ -276,28 +277,28 @@ describe('TextRope', () => {
276
277
 
277
278
  describe('ItemId Utilities', () => {
278
279
  it('should compare equal ItemIds', () => {
279
- const id1: ItemId = { agent: 'a', seq: 1 };
280
- const id2: ItemId = { agent: 'a', seq: 1 };
280
+ const id1: ItemId = 'a:1';
281
+ const id2: ItemId = 'a:1';
281
282
  expect(itemIdEquals(id1, id2)).toBe(true);
282
283
  });
283
284
 
284
285
  it('should compare different ItemIds', () => {
285
- const id1: ItemId = { agent: 'a', seq: 1 };
286
- const id2: ItemId = { agent: 'a', seq: 2 };
286
+ const id1: ItemId = 'a:1';
287
+ const id2: ItemId = 'a:2';
287
288
  expect(itemIdEquals(id1, id2)).toBe(false);
288
289
  });
289
290
 
290
291
  it('should handle null ItemIds', () => {
291
- const id1: ItemId = { agent: 'a', seq: 1 };
292
+ const id1: ItemId = 'a:1';
292
293
  expect(itemIdEquals(null, null)).toBe(true);
293
294
  expect(itemIdEquals(id1, null)).toBe(false);
294
295
  expect(itemIdEquals(null, id1)).toBe(false);
295
296
  });
296
297
 
297
298
  it('should compare ItemIds for ordering', () => {
298
- const id1: ItemId = { agent: 'a', seq: 1 };
299
- const id2: ItemId = { agent: 'b', seq: 1 };
300
- const id3: ItemId = { agent: 'a', seq: 2 };
299
+ const id1: ItemId = 'a:1';
300
+ const id2: ItemId = 'b:1';
301
+ const id3: ItemId = 'a:2';
301
302
 
302
303
  expect(itemIdCompare(id1, id2)).toBeLessThan(0);
303
304
  expect(itemIdCompare(id2, id1)).toBeGreaterThan(0);
@@ -384,7 +385,7 @@ describe('TextRope', () => {
384
385
 
385
386
  it('should return -1 for non-existent ID', () => {
386
387
  const rope = create('agent-1');
387
- const index = findItemById(rope, { agent: 'unknown', seq: 999 });
388
+ const index = findItemById(rope, 'unknown:999');
388
389
  expect(index).toBe(-1);
389
390
  });
390
391
  });
@@ -1090,7 +1091,7 @@ describe('TextRope', () => {
1090
1091
  apply(rope1, ins2);
1091
1092
  apply(rope2, ins1);
1092
1093
  // Also need to sync the delete
1093
- const delOp = { deletions: [{ id: { agent: 'agent-1', seq: 2 }, length: 2 }] };
1094
+ const delOp = { deletions: [{ id: 'agent-1:2', length: 2 }] };
1094
1095
  applyDelete(rope2, delOp);
1095
1096
 
1096
1097
  expect(getText(rope1)).toBe(getText(rope2));
@@ -1305,7 +1306,8 @@ describe('TextRope', () => {
1305
1306
 
1306
1307
  // New inserts should have seq > maxSeq
1307
1308
  const newOp = insert(restored, 4, ' more');
1308
- expect(newOp.id.seq).toBeGreaterThan(expectedMaxSeq);
1309
+ const parsed = parseItemId(newOp.id);
1310
+ expect(parsed.seq).toBeGreaterThan(expectedMaxSeq);
1309
1311
  });
1310
1312
  });
1311
1313
  });