Skip to content

Commit 0c568bb

Browse files
committed
refactor(json-crdt): 💡 cleanup verbose encoding imports and method names, const -> con
1 parent e097925 commit 0c568bb

File tree

3 files changed

+58
-90
lines changed

3 files changed

+58
-90
lines changed

‎src/json-crdt/codec/structural/verbose/Decoder.ts‎

Lines changed: 26 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,17 @@ import {fromBase64} from '../../../../util/base64/fromBase64';
33
import {ITimestampStruct, ts, VectorClock} from '../../../../json-crdt-patch/clock';
44
import {Model} from '../../../model';
55
import {SESSION} from '../../../../json-crdt-patch/constants';
6-
import {
7-
JsonCrdtNode,
8-
ObjectJsonCrdtNode,
9-
ArrayJsonCrdtNode,
10-
ArrayJsonCrdtChunk,
11-
JsonCrdtRgaTombstone,
12-
ValueJsonCrdtNode,
13-
StringJsonCrdtNode,
14-
StringJsonCrdtChunk,
15-
ConstantJsonCrdtNode,
16-
BinaryJsonCrdtNode,
17-
BinaryJsonCrdtChunk,
18-
JsonCrdtSnapshot,
19-
JsonCrdtLogicalTimestamp,
20-
JsonCrdtTimestamp,
21-
TupleJsonCrdtNode,
22-
} from './types';
6+
import * as types from './types';
237

248
export class Decoder {
25-
public decode({time, root}: JsonCrdtSnapshot): Model {
9+
public decode({time, root}: types.JsonCrdtSnapshot): Model {
2610
const isServerClock = typeof time === 'number';
2711
const doc = isServerClock ? Model.withServerClock(time) : Model.withLogicalClock(this.cClock(time));
2812
this.cRoot(doc, root);
2913
return doc;
3014
}
3115

32-
protected cClock(timestamps: JsonCrdtLogicalTimestamp[]): VectorClock {
16+
protected cClock(timestamps: types.JsonCrdtLogicalTimestamp[]): VectorClock {
3317
const [stamp] = timestamps;
3418
const vectorClock = new VectorClock(stamp[0], stamp[1]);
3519
const length = timestamps.length;
@@ -41,18 +25,18 @@ export class Decoder {
4125
return vectorClock;
4226
}
4327

44-
protected cTs(stamp: JsonCrdtTimestamp): ITimestampStruct {
28+
protected cTs(stamp: types.JsonCrdtTimestamp): ITimestampStruct {
4529
const isServerClock = typeof stamp === 'number';
4630
return isServerClock ? ts(SESSION.SERVER, stamp) : ts(stamp[0], stamp[1]);
4731
}
4832

49-
protected cRoot(doc: Model, {node}: ValueJsonCrdtNode): void {
33+
protected cRoot(doc: Model, {node}: types.ValueJsonCrdtNode): void {
5034
const val = node ? this.cNode(doc, node) : new nodes.ConNode(doc.clock.tick(0), null);
5135
const root = new nodes.RootNode(doc, val.id);
5236
doc.root = root;
5337
}
5438

55-
protected cNode(doc: Model, node: JsonCrdtNode): nodes.JsonNode {
39+
protected cNode(doc: Model, node: types.JsonCrdtNode): nodes.JsonNode {
5640
switch (node.type) {
5741
case 'obj':
5842
return this.cObj(doc, node);
@@ -62,17 +46,17 @@ export class Decoder {
6246
return this.cStr(doc, node);
6347
case 'val':
6448
return this.cVal(doc, node);
65-
case 'const':
66-
return this.cConst(doc, node);
49+
case 'con':
50+
return this.cCon(doc, node);
6751
case 'tup':
68-
return this.cTup(doc, node);
52+
return this.cVec(doc, node);
6953
case 'bin':
7054
return this.cBin(doc, node);
7155
}
7256
throw new Error('UNKNOWN_NODE');
7357
}
7458

75-
protected cObj(doc: Model, node: ObjectJsonCrdtNode): nodes.ObjNode {
59+
protected cObj(doc: Model, node: types.ObjectJsonCrdtNode): nodes.ObjNode {
7660
const id = this.cTs(node.id);
7761
const obj = new nodes.ObjNode(doc, id);
7862
const keys = Object.keys(node.keys);
@@ -84,7 +68,7 @@ export class Decoder {
8468
return obj;
8569
}
8670

87-
protected cTup(doc: Model, node: TupleJsonCrdtNode): nodes.VecNode {
71+
protected cVec(doc: Model, node: types.TupleJsonCrdtNode): nodes.VecNode {
8872
const id = this.cTs(node.id);
8973
const obj = new nodes.VecNode(doc, id);
9074
const elements = obj.elements;
@@ -99,7 +83,7 @@ export class Decoder {
9983
return obj;
10084
}
10185

102-
protected cArr(doc: Model, node: ArrayJsonCrdtNode): nodes.ArrNode {
86+
protected cArr(doc: Model, node: types.ArrayJsonCrdtNode): nodes.ArrNode {
10387
const id = this.cTs(node.id);
10488
const rga = new nodes.ArrNode(doc, id);
10589
const chunks = node.chunks;
@@ -110,10 +94,10 @@ export class Decoder {
11094
rga.ingest(length, () => {
11195
const c = chunks[i++];
11296
const id = self.cTs(c.id);
113-
if (typeof (c as JsonCrdtRgaTombstone).span === 'number')
114-
return new nodes.ArrChunk(id, (c as JsonCrdtRgaTombstone).span, undefined);
97+
if (typeof (c as types.JsonCrdtRgaTombstone).span === 'number')
98+
return new nodes.ArrChunk(id, (c as types.JsonCrdtRgaTombstone).span, undefined);
11599
else {
116-
const ids = (c as ArrayJsonCrdtChunk).nodes.map((n) => this.cNode(doc, n).id);
100+
const ids = (c as types.ArrayJsonCrdtChunk).nodes.map((n) => this.cNode(doc, n).id);
117101
return new nodes.ArrChunk(id, ids.length, ids);
118102
}
119103
});
@@ -122,7 +106,7 @@ export class Decoder {
122106
return rga;
123107
}
124108

125-
protected cStr(doc: Model, node: StringJsonCrdtNode): nodes.StrNode {
109+
protected cStr(doc: Model, node: types.StringJsonCrdtNode): nodes.StrNode {
126110
const id = this.cTs(node.id);
127111
const rga = new nodes.StrNode(id);
128112
const chunks = node.chunks;
@@ -133,10 +117,10 @@ export class Decoder {
133117
rga.ingest(length, () => {
134118
const c = chunks[i++];
135119
const id = self.cTs(c.id);
136-
if (typeof (c as JsonCrdtRgaTombstone).span === 'number')
137-
return new nodes.StrChunk(id, (c as JsonCrdtRgaTombstone).span, '');
120+
if (typeof (c as types.JsonCrdtRgaTombstone).span === 'number')
121+
return new nodes.StrChunk(id, (c as types.JsonCrdtRgaTombstone).span, '');
138122
else {
139-
const value = (c as StringJsonCrdtChunk).value;
123+
const value = (c as types.StringJsonCrdtChunk).value;
140124
return new nodes.StrChunk(id, value.length, value);
141125
}
142126
});
@@ -145,7 +129,7 @@ export class Decoder {
145129
return rga;
146130
}
147131

148-
protected cBin(doc: Model, node: BinaryJsonCrdtNode): nodes.BinNode {
132+
protected cBin(doc: Model, node: types.BinaryJsonCrdtNode): nodes.BinNode {
149133
const id = this.cTs(node.id);
150134
const rga = new nodes.BinNode(id);
151135
const chunks = node.chunks;
@@ -156,10 +140,10 @@ export class Decoder {
156140
rga.ingest(length, () => {
157141
const c = chunks[i++];
158142
const id = self.cTs(c.id);
159-
if (typeof (c as JsonCrdtRgaTombstone).span === 'number')
160-
return new nodes.BinChunk(id, (c as JsonCrdtRgaTombstone).span, undefined);
143+
if (typeof (c as types.JsonCrdtRgaTombstone).span === 'number')
144+
return new nodes.BinChunk(id, (c as types.JsonCrdtRgaTombstone).span, undefined);
161145
else {
162-
const value = (c as BinaryJsonCrdtChunk).value;
146+
const value = (c as types.BinaryJsonCrdtChunk).value;
163147
const buf = fromBase64(value);
164148
return new nodes.BinChunk(id, buf.length, buf);
165149
}
@@ -169,17 +153,17 @@ export class Decoder {
169153
return rga;
170154
}
171155

172-
protected cVal(doc: Model, node: ValueJsonCrdtNode): nodes.ValNode {
156+
protected cVal(doc: Model, node: types.ValueJsonCrdtNode): nodes.ValNode {
173157
const id = this.cTs(node.id);
174158
const val = this.cNode(doc, node.node);
175159
const obj = new nodes.ValNode(doc, id, val.id);
176160
doc.index.set(id, obj);
177161
return obj;
178162
}
179163

180-
protected cConst(doc: Model, node: ConstantJsonCrdtNode): nodes.ConNode {
164+
protected cCon(doc: Model, node: types.ConstantJsonCrdtNode): nodes.ConNode {
181165
const id = this.cTs(node.id);
182-
const val = node.timestamp ? this.cTs(node.value as JsonCrdtLogicalTimestamp) : node.value;
166+
const val = node.timestamp ? this.cTs(node.value as types.JsonCrdtLogicalTimestamp) : node.value;
183167
const obj = new nodes.ConNode(id, val);
184168
doc.index.set(id, obj);
185169
return obj;

‎src/json-crdt/codec/structural/verbose/Encoder.ts‎

Lines changed: 31 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,12 @@ import {toBase64} from '../../../../util/base64/toBase64';
33
import {SESSION} from '../../../../json-crdt-patch/constants';
44
import {ITimestampStruct, IVectorClock, Timestamp} from '../../../../json-crdt-patch/clock';
55
import {Model} from '../../../model';
6-
import type {
7-
JsonCrdtNode,
8-
ObjectJsonCrdtNode,
9-
ArrayJsonCrdtNode,
10-
ArrayJsonCrdtChunk,
11-
JsonCrdtRgaTombstone,
12-
ValueJsonCrdtNode,
13-
StringJsonCrdtNode,
14-
StringJsonCrdtChunk,
15-
ConstantJsonCrdtNode,
16-
BinaryJsonCrdtNode,
17-
BinaryJsonCrdtChunk,
18-
JsonCrdtLogicalTimestamp,
19-
JsonCrdtServerTimestamp,
20-
JsonCrdtSnapshot,
21-
TupleJsonCrdtNode,
22-
} from './types';
6+
import type * as types from './types';
237

248
export class Encoder {
259
protected model!: Model;
2610

27-
public encode(model: Model): JsonCrdtSnapshot {
11+
public encode(model: Model): types.JsonCrdtSnapshot {
2812
this.model = model;
2913
const clock = model.clock;
3014
const isServerClock = clock.sid === SESSION.SERVER;
@@ -34,32 +18,32 @@ export class Encoder {
3418
};
3519
}
3620

37-
public cClock(clock: IVectorClock): JsonCrdtLogicalTimestamp[] {
38-
const data: JsonCrdtLogicalTimestamp[] = [];
21+
public cClock(clock: IVectorClock): types.JsonCrdtLogicalTimestamp[] {
22+
const data: types.JsonCrdtLogicalTimestamp[] = [];
3923
const sessionId = clock.sid;
4024
const localTs = clock.peers.get(sessionId);
4125
if (!localTs) data.push([sessionId, clock.time]);
4226
for (const c of clock.peers.values()) data.push([c.sid, c.time]);
4327
return data;
4428
}
4529

46-
public cTs(ts: ITimestampStruct): JsonCrdtLogicalTimestamp | JsonCrdtServerTimestamp {
30+
public cTs(ts: ITimestampStruct): types.JsonCrdtLogicalTimestamp | types.JsonCrdtServerTimestamp {
4731
return ts.sid === SESSION.SERVER ? ts.time : [ts.sid, ts.time];
4832
}
4933

50-
public cNode(node: nodes.JsonNode): JsonCrdtNode {
34+
public cNode(node: nodes.JsonNode): types.JsonCrdtNode {
5135
if (node instanceof nodes.ObjNode) return this.cObj(node);
5236
else if (node instanceof nodes.ArrNode) return this.cArr(node);
5337
else if (node instanceof nodes.StrNode) return this.cStr(node);
5438
else if (node instanceof nodes.ValNode) return this.cVal(node);
55-
else if (node instanceof nodes.ConNode) return this.cConst(node);
39+
else if (node instanceof nodes.ConNode) return this.cCon(node);
5640
else if (node instanceof nodes.BinNode) return this.cBin(node);
57-
else if (node instanceof nodes.VecNode) return this.cTup(node);
41+
else if (node instanceof nodes.VecNode) return this.cVec(node);
5842
throw new Error('UNKNOWN_NODE');
5943
}
6044

61-
public cObj(obj: nodes.ObjNode): ObjectJsonCrdtNode {
62-
const keys: Record<string, JsonCrdtNode> = {};
45+
public cObj(obj: nodes.ObjNode): types.ObjectJsonCrdtNode {
46+
const keys: Record<string, types.JsonCrdtNode> = {};
6347
obj.nodes((node, key) => {
6448
keys[key] = this.cNode(node);
6549
});
@@ -70,8 +54,8 @@ export class Encoder {
7054
};
7155
}
7256

73-
public cTup(obj: nodes.VecNode): TupleJsonCrdtNode {
74-
const components: TupleJsonCrdtNode['components'] = [];
57+
public cVec(obj: nodes.VecNode): types.TupleJsonCrdtNode {
58+
const components: types.TupleJsonCrdtNode['components'] = [];
7559
const elements = obj.elements;
7660
const length = elements.length;
7761
const index = this.model.index;
@@ -87,8 +71,8 @@ export class Encoder {
8771
};
8872
}
8973

90-
public cArr(obj: nodes.ArrNode): ArrayJsonCrdtNode {
91-
const chunks: (ArrayJsonCrdtChunk | JsonCrdtRgaTombstone)[] = [];
74+
public cArr(obj: nodes.ArrNode): types.ArrayJsonCrdtNode {
75+
const chunks: (types.ArrayJsonCrdtChunk | types.JsonCrdtRgaTombstone)[] = [];
9276
const iterator = obj.iterator();
9377
let chunk;
9478
while ((chunk = iterator())) chunks.push(this.cArrChunk(chunk));
@@ -99,24 +83,24 @@ export class Encoder {
9983
};
10084
}
10185

102-
public cArrChunk(chunk: nodes.ArrChunk): ArrayJsonCrdtChunk | JsonCrdtRgaTombstone {
86+
public cArrChunk(chunk: nodes.ArrChunk): types.ArrayJsonCrdtChunk | types.JsonCrdtRgaTombstone {
10387
if (chunk.del) {
104-
const tombstone: JsonCrdtRgaTombstone = {
88+
const tombstone: types.JsonCrdtRgaTombstone = {
10589
id: this.cTs(chunk.id),
10690
span: chunk.span,
10791
};
10892
return tombstone;
10993
}
11094
const index = this.model.index;
111-
const res: ArrayJsonCrdtChunk = {
95+
const res: types.ArrayJsonCrdtChunk = {
11296
id: this.cTs(chunk.id),
11397
nodes: chunk.data!.map((n) => this.cNode(index.get(n)!)),
11498
};
11599
return res;
116100
}
117101

118-
public cStr(obj: nodes.StrNode): StringJsonCrdtNode {
119-
const chunks: (StringJsonCrdtChunk | JsonCrdtRgaTombstone)[] = [];
102+
public cStr(obj: nodes.StrNode): types.StringJsonCrdtNode {
103+
const chunks: (types.StringJsonCrdtChunk | types.JsonCrdtRgaTombstone)[] = [];
120104
const iterator = obj.iterator();
121105
let chunk;
122106
while ((chunk = iterator())) chunks.push(this.cStrChunk(chunk as nodes.StrChunk));
@@ -127,23 +111,23 @@ export class Encoder {
127111
};
128112
}
129113

130-
public cStrChunk(chunk: nodes.StrChunk): StringJsonCrdtChunk | JsonCrdtRgaTombstone {
114+
public cStrChunk(chunk: nodes.StrChunk): types.StringJsonCrdtChunk | types.JsonCrdtRgaTombstone {
131115
if (chunk.del) {
132-
const tombstone: JsonCrdtRgaTombstone = {
116+
const tombstone: types.JsonCrdtRgaTombstone = {
133117
id: this.cTs(chunk.id),
134118
span: chunk.span,
135119
};
136120
return tombstone;
137121
}
138-
const res: StringJsonCrdtChunk = {
122+
const res: types.StringJsonCrdtChunk = {
139123
id: this.cTs(chunk.id),
140124
value: chunk.data!,
141125
};
142126
return res;
143127
}
144128

145-
public cBin(obj: nodes.BinNode): BinaryJsonCrdtNode {
146-
const chunks: (BinaryJsonCrdtChunk | JsonCrdtRgaTombstone)[] = [];
129+
public cBin(obj: nodes.BinNode): types.BinaryJsonCrdtNode {
130+
const chunks: (types.BinaryJsonCrdtChunk | types.JsonCrdtRgaTombstone)[] = [];
147131
const iterator = obj.iterator();
148132
let chunk;
149133
while ((chunk = iterator())) chunks.push(this.cBinChunk(chunk as nodes.BinChunk));
@@ -154,32 +138,32 @@ export class Encoder {
154138
};
155139
}
156140

157-
public cBinChunk(chunk: nodes.BinChunk): BinaryJsonCrdtChunk | JsonCrdtRgaTombstone {
141+
public cBinChunk(chunk: nodes.BinChunk): types.BinaryJsonCrdtChunk | types.JsonCrdtRgaTombstone {
158142
if (chunk.del) {
159-
const tombstone: JsonCrdtRgaTombstone = {
143+
const tombstone: types.JsonCrdtRgaTombstone = {
160144
id: this.cTs(chunk.id),
161145
span: chunk.span,
162146
};
163147
return tombstone;
164148
}
165-
const res: StringJsonCrdtChunk = {
149+
const res: types.StringJsonCrdtChunk = {
166150
id: this.cTs(chunk.id),
167151
value: toBase64(chunk.data!),
168152
};
169153
return res;
170154
}
171155

172-
public cVal(obj: nodes.ValNode): ValueJsonCrdtNode {
156+
public cVal(obj: nodes.ValNode): types.ValueJsonCrdtNode {
173157
return {
174158
type: 'val',
175159
id: this.cTs(obj.id),
176160
node: this.cNode(obj.node()),
177161
};
178162
}
179163

180-
public cConst(obj: nodes.ConNode): ConstantJsonCrdtNode {
181-
const node: ConstantJsonCrdtNode = {
182-
type: 'const',
164+
public cCon(obj: nodes.ConNode): types.ConstantJsonCrdtNode {
165+
const node: types.ConstantJsonCrdtNode = {
166+
type: 'con',
183167
id: this.cTs(obj.id),
184168
};
185169
const val = obj.val;

‎src/json-crdt/codec/structural/verbose/types.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ export interface ValueJsonCrdtNode {
107107
* A constant immutable JSON value.
108108
*/
109109
export interface ConstantJsonCrdtNode {
110-
type: 'const';
110+
type: 'con';
111111
id: JsonCrdtTimestamp;
112112
timestamp?: boolean;
113113
value?: unknown | JsonCrdtTimestamp;

0 commit comments

Comments
 (0)