@cr_docs_t/dts 0.0.5 → 0.0.7-alpha.0
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/dist/Fugue/FugueList.d.ts +7 -3
- package/dist/Fugue/FugueList.d.ts.map +1 -1
- package/dist/Fugue/FugueList.js +35 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/types/Fugue.d.ts +3 -0
- package/dist/types/Fugue.d.ts.map +1 -0
- package/dist/types/Fugue.js +1 -0
- package/dist/types/Message.d.ts +12 -0
- package/dist/types/Message.d.ts.map +1 -0
- package/dist/types/Message.js +5 -0
- package/package.json +8 -6
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { FugueState } from "../types/Fugue";
|
|
2
2
|
import UniquelyDenseTotalOrder from "../TotalOrder/UniquelyDenseTotalOrder";
|
|
3
|
+
import { FugueMessage } from "../types/Message";
|
|
3
4
|
/**
|
|
4
5
|
* A Fugue List CRDT, with insert and delete operations
|
|
5
6
|
*/
|
|
6
7
|
declare class FugueList<P> {
|
|
7
|
-
state:
|
|
8
|
+
state: FugueState<P>;
|
|
8
9
|
totalOrder: UniquelyDenseTotalOrder<P>;
|
|
9
10
|
positionCounter: number;
|
|
10
|
-
|
|
11
|
+
ws: WebSocket | null;
|
|
12
|
+
constructor(totalOrder: UniquelyDenseTotalOrder<P>, ws: WebSocket | null);
|
|
13
|
+
private propagate;
|
|
11
14
|
/**
|
|
12
15
|
* Inserts new element with 'value' at 'index' in the list
|
|
13
16
|
* @param index - Index to insert 'value' at
|
|
@@ -20,6 +23,7 @@ declare class FugueList<P> {
|
|
|
20
23
|
*/
|
|
21
24
|
delete(index: number): void;
|
|
22
25
|
observe(): string;
|
|
26
|
+
effect(msg: FugueMessage<P>): void;
|
|
23
27
|
}
|
|
24
28
|
export default FugueList;
|
|
25
29
|
//# sourceMappingURL=FugueList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FugueList.d.ts","sourceRoot":"","sources":["../../src/Fugue/FugueList.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FugueList.d.ts","sourceRoot":"","sources":["../../src/Fugue/FugueList.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,uBAAuB,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAa,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,cAAM,SAAS,CAAC,CAAC;IACb,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAM;IAC1B,UAAU,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACvC,eAAe,SAAK;IACpB,EAAE,EAAE,SAAS,GAAG,IAAI,CAAC;gBAET,UAAU,EAAE,uBAAuB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,GAAG,IAAI;IAKxE,OAAO,CAAC,SAAS;IAMjB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAsCnC;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM;IAgBpB,OAAO,IAAI,MAAM;IAgBjB,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;CAc9B;AAED,eAAe,SAAS,CAAC"}
|
package/dist/Fugue/FugueList.js
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import FNode from "./FNode";
|
|
2
|
+
import { Operation } from "../types/Message";
|
|
2
3
|
/**
|
|
3
4
|
* A Fugue List CRDT, with insert and delete operations
|
|
4
5
|
*/
|
|
5
6
|
class FugueList {
|
|
6
|
-
constructor(totalOrder) {
|
|
7
|
+
constructor(totalOrder, ws) {
|
|
7
8
|
this.state = [];
|
|
8
9
|
this.positionCounter = 0;
|
|
9
10
|
this.totalOrder = totalOrder;
|
|
11
|
+
this.ws = ws;
|
|
12
|
+
}
|
|
13
|
+
propagate(msg) {
|
|
14
|
+
if (!this.ws)
|
|
15
|
+
return;
|
|
16
|
+
this.ws.send(JSON.stringify(msg));
|
|
10
17
|
}
|
|
11
18
|
/**
|
|
12
19
|
* Inserts new element with 'value' at 'index' in the list
|
|
@@ -42,6 +49,12 @@ class FugueList {
|
|
|
42
49
|
atIndex.push(new FNode(this.totalOrder.createBetween(a.position), value));
|
|
43
50
|
}
|
|
44
51
|
}
|
|
52
|
+
// Send to replicas
|
|
53
|
+
this.propagate({
|
|
54
|
+
operation: Operation.INSERT,
|
|
55
|
+
position: index,
|
|
56
|
+
data: value,
|
|
57
|
+
});
|
|
45
58
|
}
|
|
46
59
|
/**
|
|
47
60
|
* Delete value in the list at index
|
|
@@ -54,6 +67,12 @@ class FugueList {
|
|
|
54
67
|
i++;
|
|
55
68
|
}
|
|
56
69
|
this.state.pop();
|
|
70
|
+
// Send to replicas
|
|
71
|
+
this.propagate({
|
|
72
|
+
operation: Operation.DELETE,
|
|
73
|
+
position: index,
|
|
74
|
+
data: null,
|
|
75
|
+
});
|
|
57
76
|
}
|
|
58
77
|
observe() {
|
|
59
78
|
let res = new String();
|
|
@@ -70,5 +89,20 @@ class FugueList {
|
|
|
70
89
|
}
|
|
71
90
|
return res.toString();
|
|
72
91
|
}
|
|
92
|
+
effect(msg) {
|
|
93
|
+
// On
|
|
94
|
+
const { operation, data, position } = msg;
|
|
95
|
+
switch (operation) {
|
|
96
|
+
// Operation.INSERT -> insert
|
|
97
|
+
case Operation.INSERT:
|
|
98
|
+
if (!data)
|
|
99
|
+
throw Error("Data is required for Operation.INSERT");
|
|
100
|
+
this.insert(position, data);
|
|
101
|
+
// Operation.DELETE -> delete
|
|
102
|
+
case Operation.DELETE:
|
|
103
|
+
this.delete(position);
|
|
104
|
+
}
|
|
105
|
+
throw Error("Invalid operation");
|
|
106
|
+
}
|
|
73
107
|
}
|
|
74
108
|
export default FugueList;
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,7 @@ import FugueList from "./Fugue/FugueList";
|
|
|
2
2
|
import CausalTree from "./CausalTree/CausalTree";
|
|
3
3
|
import UniquelyDenseTotalOrder from "./TotalOrder/UniquelyDenseTotalOrder";
|
|
4
4
|
import StringTotalOrder from "./TotalOrder/StringTotalOrder";
|
|
5
|
-
|
|
5
|
+
import { FugueMessage } from "./types/Message";
|
|
6
|
+
import { FugueState } from "./types/Fugue";
|
|
7
|
+
export { FugueList, CausalTree, UniquelyDenseTotalOrder, StringTotalOrder, FugueMessage, FugueState, };
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,uBAAuB,MAAM,sCAAsC,CAAC;AAC3E,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,uBAAuB,MAAM,sCAAsC,CAAC;AAC3E,OAAO,gBAAgB,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAEH,SAAS,EACT,UAAU,EAEV,uBAAuB,EACvB,gBAAgB,EAGhB,YAAY,EACZ,UAAU,GACb,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Fugue.d.ts","sourceRoot":"","sources":["../../src/types/Fugue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAEnC,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare enum Operation {
|
|
2
|
+
INSERT = 0,
|
|
3
|
+
DELETE = 1
|
|
4
|
+
}
|
|
5
|
+
export type Position = number;
|
|
6
|
+
export type Data = string;
|
|
7
|
+
export interface FugueMessage<P> {
|
|
8
|
+
operation: Operation;
|
|
9
|
+
position: number;
|
|
10
|
+
data: Data | null;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=Message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Message.d.ts","sourceRoot":"","sources":["../../src/types/Message.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACjB,MAAM,IAAA;IACN,MAAM,IAAA;CACT;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAE1B,MAAM,WAAW,YAAY,CAAC,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACrB"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cr_docs_t/dts",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7-alpha.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"prepublishOnly": "npm run build"
|
|
10
|
+
},
|
|
7
11
|
"exports": {
|
|
8
12
|
".": {
|
|
9
13
|
"import": "./dist/index.js",
|
|
@@ -16,14 +20,12 @@
|
|
|
16
20
|
"Tanitoluwa Olamiji Adebayo"
|
|
17
21
|
],
|
|
18
22
|
"license": "ISC",
|
|
23
|
+
"packageManager": "pnpm@10.20.0",
|
|
19
24
|
"devDependencies": {
|
|
20
25
|
"@types/node": "^24.10.1",
|
|
21
26
|
"typescript": "^5.9.3"
|
|
22
27
|
},
|
|
23
28
|
"files": [
|
|
24
29
|
"dist"
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
"build": "tsc"
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
+
]
|
|
31
|
+
}
|