66 * npx nodemon -q -x ts-node src/json-crdt-patch/__demos__/PatchBuilder-json.ts
77 */
88
9- import { PatchBuilder , Patch } from '..' ;
9+ import { PatchBuilder , Patch , schema } from '..' ;
1010import { LogicalClock } from '../clock' ;
1111
1212console . clear ( ) ;
@@ -18,14 +18,15 @@ const json = {
1818 foo : 'bar' ,
1919 baz : 123 ,
2020 bools : [ true , false ] ,
21+ tuple : schema . vec ( schema . con ( 123 ) , schema . con ( true ) ) ,
2122} ;
2223
2324builder . root ( builder . json ( json ) ) ;
2425
2526const patch = builder . flush ( ) ;
2627console . log ( patch . toString ( ) ) ;
2728
28- // Patch 123.456!17
29+ // Patch 123.456!21
2930// ├─ new_obj 123.456
3031// ├─ new_str 123.457
3132// ├─ ins_str 123.458!3, obj = 123.457 { 123.457 ← "bar" }
@@ -38,24 +39,37 @@ console.log(patch.toString());
3839// ├─ new_con 123.467 { false }
3940// ├─ ins_val 123.468!1, obj = 123.466, val = 123.467
4041// ├─ ins_arr 123.469!2, obj = 123.462 { 123.462 ← 123.463, 123.466 }
41- // ├─ ins_obj 123.471!1, obj = 123.456
42- // │ ├─ "foo": 123.457
43- // │ ├─ "baz": 123.461
44- // │ └─ "bools": 123.462
45- // └─ ins_val 123.472!1, obj = 0.0, val = 123.456
42+ // ├─ new_vec 123.471
43+ // ├─ new_con 123.472 { 123 }
44+ // ├─ new_con 123.473 { true }
45+ // ├─ ins_vec 123.474!1, obj = 123.471
46+ // │ ├─ 0: 123.472
47+ // │ └─ 1: 123.473
48+ // ├─ ins_obj 123.475!1, obj = 123.456
49+ // │ ├─ "foo": 123.457
50+ // │ ├─ "baz": 123.461
51+ // │ ├─ "bools": 123.462
52+ // │ └─ "tuple": 123.471
53+ // └─ ins_val 123.476!1, obj = 0.0, val = 123.456
4654
4755const buf = patch . toBinary ( ) ;
4856console . log ( buf ) ;
49- // Uint8Array(38) [
50- // 123, 1, 200, 3, 246, 2, 4, 108, 1, 1,
51- // 1, 1, 98, 97, 114, 0, 24, 123, 74, 1,
52- // 0, 99, 102, 111, 111, 1, 1, 99, 98, 97,
53- // 122, 1, 5, 9, 0, 0, 1, 0
57+
58+ // Uint8Array(95) [
59+ // 123, 200, 3, 247, 18, 16, 32, 99, 73, 7, 73, 7,
60+ // 98, 97, 114, 0, 24, 123, 48, 8, 0, 245, 72, 79,
61+ // 7, 80, 7, 8, 0, 244, 72, 82, 7, 83, 7, 114,
62+ // 78, 7, 78, 7, 79, 7, 82, 7, 24, 0, 24, 123,
63+ // 0, 245, 90, 87, 7, 0, 88, 7, 1, 89, 7, 84,
64+ // 72, 7, 99, 102, 111, 111, 73, 7, 99, 98, 97, 122,
65+ // 77, 7, 101, 98, 111, 111, 108, 115, 78, 7, 101, 116,
66+ // 117, 112, 108, 101, 87, 7, 72, 128, 0, 72, 7
5467// ]
5568
5669const patch2 = Patch . fromBinary ( buf ) ;
5770console . log ( patch2 . toString ( ) ) ;
58- // Patch 123.456!17
71+
72+ // Patch 123.456!21
5973// ├─ new_obj 123.456
6074// ├─ new_str 123.457
6175// ├─ ins_str 123.458!3, obj = 123.457 { 123.457 ← "bar" }
@@ -68,8 +82,15 @@ console.log(patch2.toString());
6882// ├─ new_con 123.467 { false }
6983// ├─ ins_val 123.468!1, obj = 123.466, val = 123.467
7084// ├─ ins_arr 123.469!2, obj = 123.462 { 123.462 ← 123.463, 123.466 }
71- // ├─ ins_obj 123.471!1, obj = 123.456
72- // │ ├─ "foo": 123.457
73- // │ ├─ "baz": 123.461
74- // │ └─ "bools": 123.462
75- // └─ ins_val 123.472!1, obj = 0.0, val = 123.456
85+ // ├─ new_vec 123.471
86+ // ├─ new_con 123.472 { 123 }
87+ // ├─ new_con 123.473 { true }
88+ // ├─ ins_vec 123.474!1, obj = 123.471
89+ // │ ├─ 0: 123.472
90+ // │ └─ 1: 123.473
91+ // ├─ ins_obj 123.475!1, obj = 123.456
92+ // │ ├─ "foo": 123.457
93+ // │ ├─ "baz": 123.461
94+ // │ ├─ "bools": 123.462
95+ // │ └─ "tuple": 123.471
96+ // └─ ins_val 123.476!1, obj = 0.0, val = 123.456
0 commit comments