@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.
- package/CLAUDE.md +29 -0
- package/COALESCE_FIX_VERIFICATION.md +81 -0
- package/REFACTORING_NOTES.md +229 -0
- package/dist/client/EditBuffer.d.ts +13 -1
- package/dist/client/EditBuffer.d.ts.map +1 -1
- package/dist/client/EditBuffer.js +47 -3
- package/dist/client/EditBuffer.js.map +1 -1
- package/dist/client/actions.d.ts +5 -1
- package/dist/client/actions.d.ts.map +1 -1
- package/dist/client/actions.js +12 -9
- package/dist/client/actions.js.map +1 -1
- package/dist/client/coalesceGraphOps.d.ts +34 -0
- package/dist/client/coalesceGraphOps.d.ts.map +1 -0
- package/dist/client/coalesceGraphOps.js +35 -0
- package/dist/client/coalesceGraphOps.js.map +1 -0
- package/dist/client/coalesceTextOperations.d.ts +42 -0
- package/dist/client/coalesceTextOperations.d.ts.map +1 -0
- package/dist/client/coalesceTextOperations.js +158 -0
- package/dist/client/coalesceTextOperations.js.map +1 -0
- package/dist/client/coalescence/index.d.ts +9 -0
- package/dist/client/coalescence/index.d.ts.map +1 -0
- package/dist/client/coalescence/index.js +9 -0
- package/dist/client/coalescence/index.js.map +1 -0
- package/dist/client/coalescence/registry.d.ts +48 -0
- package/dist/client/coalescence/registry.d.ts.map +1 -0
- package/dist/client/coalescence/registry.js +95 -0
- package/dist/client/coalescence/registry.js.map +1 -0
- package/dist/client/coalescence/textDeletes.d.ts +38 -0
- package/dist/client/coalescence/textDeletes.d.ts.map +1 -0
- package/dist/client/coalescence/textDeletes.js +68 -0
- package/dist/client/coalescence/textDeletes.js.map +1 -0
- package/dist/client/coalescence/textInserts.d.ts +45 -0
- package/dist/client/coalescence/textInserts.d.ts.map +1 -0
- package/dist/client/coalescence/textInserts.js +96 -0
- package/dist/client/coalescence/textInserts.js.map +1 -0
- package/dist/client/createGraph.d.ts.map +1 -1
- package/dist/client/createGraph.js +9 -2
- package/dist/client/createGraph.js.map +1 -1
- package/dist/client/createTextDocument.d.ts.map +1 -1
- package/dist/client/createTextDocument.js +2 -1
- package/dist/client/createTextDocument.js.map +1 -1
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/textActions.d.ts +1 -1
- package/dist/client/textActions.d.ts.map +1 -1
- package/dist/client/textActions.js +7 -2
- package/dist/client/textActions.js.map +1 -1
- package/dist/client/types.d.ts +3 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/crdt/GraphTextCRDT.d.ts +0 -4
- package/dist/crdt/GraphTextCRDT.d.ts.map +1 -1
- package/dist/crdt/GraphTextCRDT.js +3 -0
- package/dist/crdt/GraphTextCRDT.js.map +1 -1
- package/dist/crdt/Rope.d.ts +27 -6
- package/dist/crdt/Rope.d.ts.map +1 -1
- package/dist/crdt/Rope.js +137 -69
- package/dist/crdt/Rope.js.map +1 -1
- package/dist/operations/OperationTypes.d.ts +10 -26
- package/dist/operations/OperationTypes.d.ts.map +1 -1
- package/dist/operations/apply/text.d.ts.map +1 -1
- package/dist/operations/apply/text.js +8 -16
- package/dist/operations/apply/text.js.map +1 -1
- package/examples/05-coalescence-usage.ts +189 -0
- package/package.json +1 -1
- package/src/client/EditBuffer.ts +51 -3
- package/src/client/actions.ts +13 -9
- package/src/client/coalesceGraphOps.ts +40 -0
- package/src/client/coalesceTextOperations.ts +172 -0
- package/src/client/coalescence/index.ts +18 -0
- package/src/client/coalescence/registry.ts +137 -0
- package/src/client/coalescence/textDeletes.ts +94 -0
- package/src/client/coalescence/textInserts.ts +128 -0
- package/src/client/createGraph.ts +11 -2
- package/src/client/createTextDocument.ts +2 -1
- package/src/client/index.ts +14 -0
- package/src/client/textActions.ts +9 -2
- package/src/client/types.ts +4 -1
- package/src/crdt/GraphTextCRDT.ts +0 -5
- package/src/crdt/Rope.ts +155 -79
- package/src/operations/OperationTypes.ts +10 -8
- package/src/operations/apply/text.ts +8 -20
- package/test-coalescence.ts +201 -0
- package/tests/client/actions.test.ts +156 -0
- package/tests/client/coalesce-graph-operations.test.ts +321 -0
- package/tests/client/coalesce-text-operations.test.ts +326 -0
- package/tests/client/edit-buffer.test.ts +137 -1
- package/tests/crdt/graph-text-crdt.test.ts +29 -17
- package/tests/crdt/rope.test.ts +13 -11
package/tests/crdt/rope.test.ts
CHANGED
|
@@ -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 =
|
|
280
|
-
const id2: ItemId =
|
|
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 =
|
|
286
|
-
const id2: ItemId =
|
|
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 =
|
|
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 =
|
|
299
|
-
const id2: ItemId =
|
|
300
|
-
const id3: ItemId =
|
|
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,
|
|
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:
|
|
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
|
-
|
|
1309
|
+
const parsed = parseItemId(newOp.id);
|
|
1310
|
+
expect(parsed.seq).toBeGreaterThan(expectedMaxSeq);
|
|
1309
1311
|
});
|
|
1310
1312
|
});
|
|
1311
1313
|
});
|