-
Notifications
You must be signed in to change notification settings - Fork 0
/
enums.ts
55 lines (46 loc) · 1019 Bytes
/
enums.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { CRDTToken } from "./CRDTStructure";
export enum CRDTCommand {
LOAD = 'load',
REPLAY = 'replay',
APPLY = 'apply',
}
export enum Operation {
INSERT = 'insert',
DELETE = 'delete'
}
interface CRDTLoadRequest {
command: CRDTCommand.LOAD
value: {
id: string,
},
};
interface CRDTLoadResponse {
command: CRDTCommand.LOAD
value: {
tokens: CRDTToken[],
text: string,
},
};
interface CRDTReplayRequest {
command: CRDTCommand.REPLAY,
value: {
offset: number,
},
}
interface CRDTReplayResponse {
command: CRDTCommand.REPLAY,
value: {
operation: Operation,
crdtToken: CRDTToken,
}[],
}
interface CRDTApplyRequest {
command: CRDTCommand.APPLY,
value: {
operation: Operation,
crdtToken: CRDTToken,
}
}
interface CRDTApplyResponse extends CRDTApplyRequest { }
export type CRDTWebSocketRequest = CRDTLoadRequest | CRDTReplayRequest | CRDTApplyRequest;
export type CRDTWebSocketResponse = CRDTLoadResponse | CRDTReplayResponse | CRDTApplyResponse;