@powerhousedao/reactor 5.0.0-staging.9 → 5.0.1-staging.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/dist/src/cache/buffer/ring-buffer.d.ts +37 -0
- package/dist/src/cache/buffer/ring-buffer.d.ts.map +1 -0
- package/dist/src/cache/buffer/ring-buffer.js +69 -0
- package/dist/src/cache/buffer/ring-buffer.js.map +1 -0
- package/dist/src/cache/kysely-write-cache.d.ts +133 -0
- package/dist/src/cache/kysely-write-cache.d.ts.map +1 -0
- package/dist/src/cache/kysely-write-cache.js +375 -0
- package/dist/src/cache/kysely-write-cache.js.map +1 -0
- package/dist/src/cache/lru/lru-tracker.d.ts +15 -0
- package/dist/src/cache/lru/lru-tracker.d.ts.map +1 -0
- package/dist/src/cache/lru/lru-tracker.js +96 -0
- package/dist/src/cache/lru/lru-tracker.js.map +1 -0
- package/dist/src/cache/types.d.ts +42 -0
- package/dist/src/cache/types.d.ts.map +1 -0
- package/dist/src/cache/types.js +2 -0
- package/dist/src/cache/types.js.map +1 -0
- package/dist/src/cache/write/interfaces.d.ts +83 -0
- package/dist/src/cache/write/interfaces.d.ts.map +1 -0
- package/dist/src/cache/write/interfaces.js +2 -0
- package/dist/src/cache/write/interfaces.js.map +1 -0
- package/dist/src/client/reactor-client.d.ts +103 -0
- package/dist/src/client/reactor-client.d.ts.map +1 -0
- package/dist/src/client/reactor-client.js +184 -0
- package/dist/src/client/reactor-client.js.map +1 -0
- package/dist/src/client/types.d.ts +213 -0
- package/dist/src/client/types.d.ts.map +1 -0
- package/dist/src/client/types.js +14 -0
- package/dist/src/client/types.js.map +1 -0
- package/dist/src/core/builder.d.ts +20 -0
- package/dist/src/core/builder.d.ts.map +1 -0
- package/dist/src/core/builder.js +47 -0
- package/dist/src/core/builder.js.map +1 -0
- package/dist/src/{reactor.d.ts → core/reactor.d.ts} +13 -30
- package/dist/src/core/reactor.d.ts.map +1 -0
- package/dist/src/{reactor.js → core/reactor.js} +147 -111
- package/dist/src/core/reactor.js.map +1 -0
- package/dist/src/{interfaces/reactor.d.ts → core/types.d.ts} +7 -7
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +2 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/{utils.d.ts → core/utils.d.ts} +2 -2
- package/dist/src/core/utils.d.ts.map +1 -0
- package/dist/src/core/utils.js.map +1 -0
- package/dist/src/events/event-bus.d.ts +2 -2
- package/dist/src/events/event-bus.d.ts.map +1 -1
- package/dist/src/events/event-bus.js +1 -1
- package/dist/src/events/event-bus.js.map +1 -1
- package/dist/src/events/interfaces.d.ts +1 -1
- package/dist/src/events/interfaces.d.ts.map +1 -1
- package/dist/src/events/types.d.ts +14 -0
- package/dist/src/events/types.d.ts.map +1 -1
- package/dist/src/events/types.js +6 -0
- package/dist/src/events/types.js.map +1 -1
- package/dist/src/executor/interfaces.d.ts +2 -2
- package/dist/src/executor/interfaces.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts +5 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.js +98 -36
- package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
- package/dist/src/executor/simple-job-executor.d.ts +32 -3
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor.js +436 -17
- package/dist/src/executor/simple-job-executor.js.map +1 -1
- package/dist/src/executor/types.d.ts +10 -3
- package/dist/src/executor/types.d.ts.map +1 -1
- package/dist/src/executor/types.js.map +1 -1
- package/dist/src/executor/util.d.ts +47 -0
- package/dist/src/executor/util.d.ts.map +1 -0
- package/dist/src/executor/util.js +113 -0
- package/dist/src/executor/util.js.map +1 -0
- package/dist/src/index.d.ts +23 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +30 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts +15 -0
- package/dist/src/job-tracker/in-memory-job-tracker.d.ts.map +1 -0
- package/dist/src/job-tracker/in-memory-job-tracker.js +78 -0
- package/dist/src/job-tracker/in-memory-job-tracker.js.map +1 -0
- package/dist/src/job-tracker/index.d.ts +3 -0
- package/dist/src/job-tracker/index.d.ts.map +1 -0
- package/dist/src/job-tracker/index.js +2 -0
- package/dist/src/job-tracker/index.js.map +1 -0
- package/dist/src/job-tracker/interfaces.d.ts +41 -0
- package/dist/src/job-tracker/interfaces.d.ts.map +1 -0
- package/dist/src/job-tracker/interfaces.js +2 -0
- package/dist/src/job-tracker/interfaces.js.map +1 -0
- package/dist/src/queue/interfaces.d.ts +1 -1
- package/dist/src/queue/interfaces.d.ts.map +1 -1
- package/dist/src/queue/job-execution-handle.d.ts +2 -1
- package/dist/src/queue/job-execution-handle.d.ts.map +1 -1
- package/dist/src/queue/job-execution-handle.js.map +1 -1
- package/dist/src/queue/queue.d.ts +3 -3
- package/dist/src/queue/queue.d.ts.map +1 -1
- package/dist/src/queue/queue.js +47 -25
- package/dist/src/queue/queue.js.map +1 -1
- package/dist/src/queue/types.d.ts +7 -5
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js.map +1 -1
- package/dist/src/read-models/coordinator.d.ts +38 -0
- package/dist/src/read-models/coordinator.d.ts.map +1 -0
- package/dist/src/read-models/coordinator.js +62 -0
- package/dist/src/read-models/coordinator.js.map +1 -0
- package/dist/src/read-models/document-view.d.ts +20 -0
- package/dist/src/read-models/document-view.d.ts.map +1 -0
- package/dist/src/read-models/document-view.js +365 -0
- package/dist/src/read-models/document-view.js.map +1 -0
- package/dist/src/read-models/interfaces.d.ts +29 -0
- package/dist/src/read-models/interfaces.d.ts.map +1 -0
- package/dist/src/read-models/interfaces.js +2 -0
- package/dist/src/read-models/interfaces.js.map +1 -0
- package/dist/src/read-models/types.d.ts +46 -0
- package/dist/src/read-models/types.d.ts.map +1 -0
- package/dist/src/read-models/types.js +2 -0
- package/dist/src/read-models/types.js.map +1 -0
- package/dist/src/registry/implementation.js +1 -1
- package/dist/src/registry/implementation.js.map +1 -1
- package/dist/src/shared/awaiter.d.ts +32 -0
- package/dist/src/shared/awaiter.d.ts.map +1 -0
- package/dist/src/shared/awaiter.js +132 -0
- package/dist/src/shared/awaiter.js.map +1 -0
- package/dist/src/shared/errors.d.ts +17 -0
- package/dist/src/shared/errors.d.ts.map +1 -0
- package/dist/src/shared/errors.js +33 -0
- package/dist/src/shared/errors.js.map +1 -0
- package/dist/src/shared/factories.d.ts +1 -1
- package/dist/src/shared/factories.d.ts.map +1 -1
- package/dist/src/shared/types.d.ts +8 -0
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/src/shared/types.js +5 -0
- package/dist/src/shared/types.js.map +1 -1
- package/dist/src/signer/passthrough-signer.d.ts +6 -0
- package/dist/src/signer/passthrough-signer.d.ts.map +1 -0
- package/dist/src/signer/passthrough-signer.js +6 -0
- package/dist/src/signer/passthrough-signer.js.map +1 -0
- package/dist/src/signer/types.d.ts +15 -0
- package/dist/src/signer/types.d.ts.map +1 -0
- package/dist/src/signer/types.js +2 -0
- package/dist/src/signer/types.js.map +1 -0
- package/dist/src/storage/interfaces.d.ts +121 -0
- package/dist/src/storage/interfaces.d.ts.map +1 -0
- package/dist/src/storage/interfaces.js +19 -0
- package/dist/src/storage/interfaces.js.map +1 -0
- package/dist/src/storage/kysely/keyframe-store.d.ts +15 -0
- package/dist/src/storage/kysely/keyframe-store.d.ts.map +1 -0
- package/dist/src/storage/kysely/keyframe-store.js +71 -0
- package/dist/src/storage/kysely/keyframe-store.js.map +1 -0
- package/dist/src/storage/kysely/store.d.ts +15 -0
- package/dist/src/storage/kysely/store.d.ts.map +1 -0
- package/dist/src/storage/kysely/store.js +196 -0
- package/dist/src/storage/kysely/store.js.map +1 -0
- package/dist/src/storage/kysely/types.d.ts +39 -0
- package/dist/src/storage/kysely/types.d.ts.map +1 -0
- package/dist/src/storage/kysely/types.js +2 -0
- package/dist/src/storage/kysely/types.js.map +1 -0
- package/dist/src/storage/txn.d.ts +15 -0
- package/dist/src/storage/txn.d.ts.map +1 -0
- package/dist/src/storage/txn.js +41 -0
- package/dist/src/storage/txn.js.map +1 -0
- package/dist/src/subs/default-error-handler.d.ts +13 -0
- package/dist/src/subs/default-error-handler.d.ts.map +1 -0
- package/dist/src/subs/default-error-handler.js +27 -0
- package/dist/src/subs/default-error-handler.js.map +1 -0
- package/dist/src/subs/react-subscription-manager.d.ts +45 -0
- package/dist/src/subs/react-subscription-manager.d.ts.map +1 -0
- package/dist/src/subs/react-subscription-manager.js +185 -0
- package/dist/src/subs/react-subscription-manager.js.map +1 -0
- package/dist/src/subs/types.d.ts +64 -0
- package/dist/src/subs/types.d.ts.map +1 -0
- package/dist/src/subs/types.js +2 -0
- package/dist/src/subs/types.js.map +1 -0
- package/dist/src/utils/reshuffle.d.ts +30 -0
- package/dist/src/utils/reshuffle.d.ts.map +1 -0
- package/dist/src/utils/reshuffle.js +47 -0
- package/dist/src/utils/reshuffle.js.map +1 -0
- package/package.json +15 -9
- package/dist/bench/event-bus.bench.d.ts +0 -2
- package/dist/bench/event-bus.bench.d.ts.map +0 -1
- package/dist/bench/event-bus.bench.js +0 -228
- package/dist/bench/event-bus.bench.js.map +0 -1
- package/dist/bench/queue-only.bench.d.ts +0 -2
- package/dist/bench/queue-only.bench.d.ts.map +0 -1
- package/dist/bench/queue-only.bench.js +0 -46
- package/dist/bench/queue-only.bench.js.map +0 -1
- package/dist/bench/reactor-throughput.bench.d.ts +0 -2
- package/dist/bench/reactor-throughput.bench.d.ts.map +0 -1
- package/dist/bench/reactor-throughput.bench.js +0 -144
- package/dist/bench/reactor-throughput.bench.js.map +0 -1
- package/dist/src/interfaces/reactor.d.ts.map +0 -1
- package/dist/src/interfaces/reactor.js +0 -2
- package/dist/src/interfaces/reactor.js.map +0 -1
- package/dist/src/reactor.d.ts.map +0 -1
- package/dist/src/reactor.js.map +0 -1
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js.map +0 -1
- package/dist/test/event-bus.test.d.ts +0 -2
- package/dist/test/event-bus.test.d.ts.map +0 -1
- package/dist/test/event-bus.test.js +0 -541
- package/dist/test/event-bus.test.js.map +0 -1
- package/dist/test/executor/executor-integration.test.d.ts +0 -2
- package/dist/test/executor/executor-integration.test.d.ts.map +0 -1
- package/dist/test/executor/executor-integration.test.js +0 -287
- package/dist/test/executor/executor-integration.test.js.map +0 -1
- package/dist/test/executor/job-execution-handle.test.d.ts +0 -2
- package/dist/test/executor/job-execution-handle.test.d.ts.map +0 -1
- package/dist/test/executor/job-execution-handle.test.js +0 -272
- package/dist/test/executor/job-execution-handle.test.js.map +0 -1
- package/dist/test/executor/simple-job-executor-manager.test.d.ts +0 -2
- package/dist/test/executor/simple-job-executor-manager.test.d.ts.map +0 -1
- package/dist/test/executor/simple-job-executor-manager.test.js +0 -132
- package/dist/test/executor/simple-job-executor-manager.test.js.map +0 -1
- package/dist/test/executor/simple-job-executor.test.d.ts +0 -2
- package/dist/test/executor/simple-job-executor.test.d.ts.map +0 -1
- package/dist/test/executor/simple-job-executor.test.js +0 -139
- package/dist/test/executor/simple-job-executor.test.js.map +0 -1
- package/dist/test/factories.d.ts +0 -122
- package/dist/test/factories.d.ts.map +0 -1
- package/dist/test/factories.js +0 -319
- package/dist/test/factories.js.map +0 -1
- package/dist/test/integration/document-drive-integration.test.d.ts +0 -2
- package/dist/test/integration/document-drive-integration.test.d.ts.map +0 -1
- package/dist/test/integration/document-drive-integration.test.js +0 -1102
- package/dist/test/integration/document-drive-integration.test.js.map +0 -1
- package/dist/test/integration/reactor-read.test.d.ts +0 -2
- package/dist/test/integration/reactor-read.test.d.ts.map +0 -1
- package/dist/test/integration/reactor-read.test.js +0 -300
- package/dist/test/integration/reactor-read.test.js.map +0 -1
- package/dist/test/queue/queue-integration.test.d.ts +0 -2
- package/dist/test/queue/queue-integration.test.d.ts.map +0 -1
- package/dist/test/queue/queue-integration.test.js +0 -322
- package/dist/test/queue/queue-integration.test.js.map +0 -1
- package/dist/test/queue/queue.test.d.ts +0 -2
- package/dist/test/queue/queue.test.d.ts.map +0 -1
- package/dist/test/queue/queue.test.js +0 -770
- package/dist/test/queue/queue.test.js.map +0 -1
- package/dist/test/registry/registry.test.d.ts +0 -2
- package/dist/test/registry/registry.test.d.ts.map +0 -1
- package/dist/test/registry/registry.test.js +0 -182
- package/dist/test/registry/registry.test.js.map +0 -1
- package/dist/test/utils.test.d.ts +0 -2
- package/dist/test/utils.test.d.ts.map +0 -1
- package/dist/test/utils.test.js +0 -66
- package/dist/test/utils.test.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -11
- package/dist/vitest.config.js.map +0 -1
- /package/dist/src/{utils.js → core/utils.js} +0 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
class LRUNode {
|
|
2
|
+
key;
|
|
3
|
+
prev;
|
|
4
|
+
next;
|
|
5
|
+
constructor(key) {
|
|
6
|
+
this.key = key;
|
|
7
|
+
this.prev = undefined;
|
|
8
|
+
this.next = undefined;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class LRUTracker {
|
|
12
|
+
map;
|
|
13
|
+
head;
|
|
14
|
+
tail;
|
|
15
|
+
constructor() {
|
|
16
|
+
this.map = new Map();
|
|
17
|
+
this.head = undefined;
|
|
18
|
+
this.tail = undefined;
|
|
19
|
+
}
|
|
20
|
+
get size() {
|
|
21
|
+
return this.map.size;
|
|
22
|
+
}
|
|
23
|
+
touch(key) {
|
|
24
|
+
const node = this.map.get(key);
|
|
25
|
+
if (node) {
|
|
26
|
+
this.moveToFront(node);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
this.addToFront(key);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
evict() {
|
|
33
|
+
if (!this.tail) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const key = this.tail.key;
|
|
37
|
+
this.remove(key);
|
|
38
|
+
return key;
|
|
39
|
+
}
|
|
40
|
+
remove(key) {
|
|
41
|
+
const node = this.map.get(key);
|
|
42
|
+
if (!node) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this.removeNode(node);
|
|
46
|
+
this.map.delete(key);
|
|
47
|
+
}
|
|
48
|
+
clear() {
|
|
49
|
+
this.map.clear();
|
|
50
|
+
this.head = undefined;
|
|
51
|
+
this.tail = undefined;
|
|
52
|
+
}
|
|
53
|
+
addToFront(key) {
|
|
54
|
+
const node = new LRUNode(key);
|
|
55
|
+
this.map.set(key, node);
|
|
56
|
+
if (!this.head) {
|
|
57
|
+
this.head = node;
|
|
58
|
+
this.tail = node;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
node.next = this.head;
|
|
62
|
+
this.head.prev = node;
|
|
63
|
+
this.head = node;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
moveToFront(node) {
|
|
67
|
+
if (node === this.head) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
this.removeNode(node);
|
|
71
|
+
node.prev = undefined;
|
|
72
|
+
node.next = this.head;
|
|
73
|
+
if (this.head) {
|
|
74
|
+
this.head.prev = node;
|
|
75
|
+
}
|
|
76
|
+
this.head = node;
|
|
77
|
+
if (!this.tail) {
|
|
78
|
+
this.tail = node;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
removeNode(node) {
|
|
82
|
+
if (node.prev) {
|
|
83
|
+
node.prev.next = node.next;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.head = node.next;
|
|
87
|
+
}
|
|
88
|
+
if (node.next) {
|
|
89
|
+
node.next.prev = node.prev;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.tail = node.prev;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=lru-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru-tracker.js","sourceRoot":"","sources":["../../../../src/cache/lru/lru-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { PHDocument } from "document-model";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration options for the write cache
|
|
4
|
+
*/
|
|
5
|
+
export type WriteCacheConfig = {
|
|
6
|
+
/** Maximum number of document streams to cache (LRU eviction). Default: 1000 */
|
|
7
|
+
maxDocuments: number;
|
|
8
|
+
/** Number of snapshots to keep in each document's ring buffer. Default: 10 */
|
|
9
|
+
ringBufferSize: number;
|
|
10
|
+
/** Persist a keyframe snapshot every N revisions. Default: 10 */
|
|
11
|
+
keyframeInterval: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Unique identifier for a document stream
|
|
15
|
+
*/
|
|
16
|
+
export type DocumentStreamKey = {
|
|
17
|
+
/** Document identifier */
|
|
18
|
+
documentId: string;
|
|
19
|
+
/** Operation scope */
|
|
20
|
+
scope: string;
|
|
21
|
+
/** Branch name */
|
|
22
|
+
branch: string;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* A cached document snapshot at a specific revision
|
|
26
|
+
*/
|
|
27
|
+
export type CachedSnapshot = {
|
|
28
|
+
/** The revision number of this snapshot */
|
|
29
|
+
revision: number;
|
|
30
|
+
/** The document state at this revision */
|
|
31
|
+
document: PHDocument;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Serialized keyframe snapshot for K/V store persistence
|
|
35
|
+
*/
|
|
36
|
+
export type KeyframeSnapshot = {
|
|
37
|
+
/** The revision number of this keyframe */
|
|
38
|
+
revision: number;
|
|
39
|
+
/** Serialized document state */
|
|
40
|
+
document: string;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cache/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;IAErB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,CAAC;IAEvB,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IAEnB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IAEd,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IAEjB,0CAA0C;IAC1C,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IAEjB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cache/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { PHDocument } from "document-model";
|
|
2
|
+
/**
|
|
3
|
+
* IWriteCache is a write-side projection that optimizes document state retrieval
|
|
4
|
+
* for the job executor. This is separate from IDocumentView (read-side projection) which optimizes
|
|
5
|
+
* queries and searches.
|
|
6
|
+
*/
|
|
7
|
+
export interface IWriteCache {
|
|
8
|
+
/**
|
|
9
|
+
* Retrieves or builds the document at the specified revision.
|
|
10
|
+
* If targetRevision is not provided, retrieves the latest state.
|
|
11
|
+
*
|
|
12
|
+
* @param documentId - The document identifier
|
|
13
|
+
* @param scope - Operation scope
|
|
14
|
+
* @param branch - Branch name
|
|
15
|
+
* @param targetRevision - The exact revision to retrieve (optional, defaults to latest)
|
|
16
|
+
* @param signal - Optional abort signal to cancel the operation
|
|
17
|
+
* @returns The complete document at the specified revision
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Get latest document state
|
|
22
|
+
* const doc = await cache.getState(docId, 'global', 'main');
|
|
23
|
+
*
|
|
24
|
+
* // Get document at specific revision
|
|
25
|
+
* const doc = await cache.getState(docId, 'global', 'main', 42);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
getState(documentId: string, scope: string, branch: string, targetRevision?: number, signal?: AbortSignal): Promise<PHDocument>;
|
|
29
|
+
/**
|
|
30
|
+
* Stores a document snapshot in the cache at the specified revision.
|
|
31
|
+
* The document will be deep copied to prevent external mutations.
|
|
32
|
+
*
|
|
33
|
+
* @param documentId - The document identifier
|
|
34
|
+
* @param scope - Operation scope
|
|
35
|
+
* @param branch - Branch name
|
|
36
|
+
* @param revision - The revision this document represents
|
|
37
|
+
* @param document - The complete document to cache
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* cache.putState(docId, 'global', 'main', 42, document);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
putState(documentId: string, scope: string, branch: string, revision: number, document: PHDocument): void;
|
|
45
|
+
/**
|
|
46
|
+
* Invalidates (removes) cached entries for a document stream.
|
|
47
|
+
*
|
|
48
|
+
* - If only documentId is provided: invalidates all scopes and branches for that document
|
|
49
|
+
* - If documentId + scope provided: invalidates all branches for that document and scope
|
|
50
|
+
* - If all parameters provided: invalidates the specific stream
|
|
51
|
+
*
|
|
52
|
+
* @param documentId - The document identifier
|
|
53
|
+
* @param scope - Optional scope to narrow invalidation
|
|
54
|
+
* @param branch - Optional branch to narrow invalidation
|
|
55
|
+
* @returns Number of ring buffers evicted
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // Invalidate all streams for a document
|
|
60
|
+
* cache.invalidate(docId);
|
|
61
|
+
*
|
|
62
|
+
* // Invalidate all branches for a specific scope
|
|
63
|
+
* cache.invalidate(docId, 'global');
|
|
64
|
+
*
|
|
65
|
+
* // Invalidate specific stream
|
|
66
|
+
* cache.invalidate(docId, 'global', 'main');
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
invalidate(documentId: string, scope?: string, branch?: string): number;
|
|
70
|
+
/**
|
|
71
|
+
* Clears all cached data from the in-memory cache.
|
|
72
|
+
*/
|
|
73
|
+
clear(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Performs startup initialization.
|
|
76
|
+
*/
|
|
77
|
+
startup(): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Performs graceful shutdown.
|
|
80
|
+
*/
|
|
81
|
+
shutdown(): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/cache/write/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CACN,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CACN,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,UAAU,GACnB,IAAI,CAAC;IAER;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExE;;OAEG;IACH,KAAK,IAAI,IAAI,CAAC;IAEd;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/cache/write/interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { Action, DocumentModelModule, PHDocument } from "document-model";
|
|
2
|
+
import type { IReactor } from "../core/types.js";
|
|
3
|
+
import { type IJobAwaiter } from "../shared/awaiter.js";
|
|
4
|
+
import { type JobInfo, type PagedResults, type PagingOptions, type PropagationMode, type SearchFilter, type ViewFilter } from "../shared/types.js";
|
|
5
|
+
import type { ISigner } from "../signer/types.js";
|
|
6
|
+
import type { IReactorSubscriptionManager } from "../subs/types.js";
|
|
7
|
+
import type { DocumentChangeEvent, IReactorClient } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* ReactorClient implementation that wraps lower-level APIs to provide
|
|
10
|
+
* a simpler interface for document operations.
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Wraps Jobs with Promises for easier async handling
|
|
14
|
+
* - Manages signing of submitted Action objects
|
|
15
|
+
* - Provides quality-of-life functions for common tasks
|
|
16
|
+
* - Wraps subscription interface with ViewFilters
|
|
17
|
+
*/
|
|
18
|
+
export declare class ReactorClient implements IReactorClient {
|
|
19
|
+
private reactor;
|
|
20
|
+
private signer;
|
|
21
|
+
private subscriptionManager;
|
|
22
|
+
private jobAwaiter;
|
|
23
|
+
constructor(reactor: IReactor, signer: ISigner, subscriptionManager: IReactorSubscriptionManager, jobAwaiter: IJobAwaiter);
|
|
24
|
+
/**
|
|
25
|
+
* Retrieves a list of document model modules.
|
|
26
|
+
*/
|
|
27
|
+
getDocumentModels(namespace?: string, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<DocumentModelModule>>;
|
|
28
|
+
/**
|
|
29
|
+
* Retrieves a specific PHDocument
|
|
30
|
+
*/
|
|
31
|
+
get<TDocument extends PHDocument>(identifier: string, view?: ViewFilter, signal?: AbortSignal): Promise<{
|
|
32
|
+
document: TDocument;
|
|
33
|
+
childIds: string[];
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Retrieves children of a document
|
|
37
|
+
*/
|
|
38
|
+
getChildren(parentIdentifier: string, view?: ViewFilter, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<PHDocument>>;
|
|
39
|
+
/**
|
|
40
|
+
* Retrieves parents of a document
|
|
41
|
+
*/
|
|
42
|
+
getParents(childIdentifier: string, view?: ViewFilter, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<PHDocument>>;
|
|
43
|
+
/**
|
|
44
|
+
* Filters documents by criteria and returns a list of them
|
|
45
|
+
*/
|
|
46
|
+
find(search: SearchFilter, view?: ViewFilter, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<PHDocument>>;
|
|
47
|
+
/**
|
|
48
|
+
* Creates a document and waits for completion
|
|
49
|
+
*/
|
|
50
|
+
create(document: PHDocument, parentIdentifier?: string, signal?: AbortSignal): Promise<PHDocument>;
|
|
51
|
+
/**
|
|
52
|
+
* Creates an empty document and waits for completion
|
|
53
|
+
*/
|
|
54
|
+
createEmpty<TDocument extends PHDocument>(documentType: string, parentIdentifier?: string, signal?: AbortSignal): Promise<TDocument>;
|
|
55
|
+
/**
|
|
56
|
+
* Applies a list of actions to a document and waits for completion
|
|
57
|
+
*/
|
|
58
|
+
mutate<TDocument extends PHDocument>(documentIdentifier: string, actions: Action[], view?: ViewFilter, signal?: AbortSignal): Promise<TDocument>;
|
|
59
|
+
/**
|
|
60
|
+
* Submits a list of actions to a document
|
|
61
|
+
*/
|
|
62
|
+
mutateAsync(documentIdentifier: string, actions: Action[], view?: ViewFilter, signal?: AbortSignal): Promise<JobInfo>;
|
|
63
|
+
/**
|
|
64
|
+
* Renames a document and waits for completion
|
|
65
|
+
*/
|
|
66
|
+
rename(documentIdentifier: string, name: string, view?: ViewFilter, signal?: AbortSignal): Promise<PHDocument>;
|
|
67
|
+
/**
|
|
68
|
+
* Adds multiple documents as children to another and waits for completion
|
|
69
|
+
*/
|
|
70
|
+
addChildren(parentIdentifier: string, documentIdentifiers: string[], view?: ViewFilter, signal?: AbortSignal): Promise<PHDocument>;
|
|
71
|
+
/**
|
|
72
|
+
* Removes multiple documents as children from another and waits for completion
|
|
73
|
+
*/
|
|
74
|
+
removeChildren(parentIdentifier: string, documentIdentifiers: string[], view?: ViewFilter, signal?: AbortSignal): Promise<PHDocument>;
|
|
75
|
+
/**
|
|
76
|
+
* Moves multiple documents from one parent to another and waits for completion
|
|
77
|
+
*/
|
|
78
|
+
moveChildren(sourceParentIdentifier: string, targetParentIdentifier: string, documentIdentifiers: string[], view?: ViewFilter, signal?: AbortSignal): Promise<{
|
|
79
|
+
source: PHDocument;
|
|
80
|
+
target: PHDocument;
|
|
81
|
+
}>;
|
|
82
|
+
/**
|
|
83
|
+
* Deletes a document and waits for completion
|
|
84
|
+
*/
|
|
85
|
+
deleteDocument(identifier: string, propagate?: PropagationMode, signal?: AbortSignal): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Deletes documents and waits for completion
|
|
88
|
+
*/
|
|
89
|
+
deleteDocuments(identifiers: string[], propagate?: PropagationMode, signal?: AbortSignal): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Retrieves the status of a job
|
|
92
|
+
*/
|
|
93
|
+
getJobStatus(jobId: string, signal?: AbortSignal): Promise<JobInfo>;
|
|
94
|
+
/**
|
|
95
|
+
* Waits for a job to complete
|
|
96
|
+
*/
|
|
97
|
+
waitForJob(jobId: string | JobInfo, signal?: AbortSignal): Promise<JobInfo>;
|
|
98
|
+
/**
|
|
99
|
+
* Subscribes to changes for documents matching specified filters
|
|
100
|
+
*/
|
|
101
|
+
subscribe(search: SearchFilter, callback: (event: DocumentChangeEvent) => void, view?: ViewFilter): () => void;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=reactor-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor-client.d.ts","sourceRoot":"","sources":["../../../src/client/reactor-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import {} from "../shared/awaiter.js";
|
|
2
|
+
import {} from "../shared/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* ReactorClient implementation that wraps lower-level APIs to provide
|
|
5
|
+
* a simpler interface for document operations.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Wraps Jobs with Promises for easier async handling
|
|
9
|
+
* - Manages signing of submitted Action objects
|
|
10
|
+
* - Provides quality-of-life functions for common tasks
|
|
11
|
+
* - Wraps subscription interface with ViewFilters
|
|
12
|
+
*/
|
|
13
|
+
export class ReactorClient {
|
|
14
|
+
reactor;
|
|
15
|
+
signer;
|
|
16
|
+
subscriptionManager;
|
|
17
|
+
jobAwaiter;
|
|
18
|
+
constructor(reactor, signer, subscriptionManager, jobAwaiter) {
|
|
19
|
+
this.reactor = reactor;
|
|
20
|
+
this.signer = signer;
|
|
21
|
+
this.subscriptionManager = subscriptionManager;
|
|
22
|
+
this.jobAwaiter = jobAwaiter;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Retrieves a list of document model modules.
|
|
26
|
+
*/
|
|
27
|
+
async getDocumentModels(namespace, paging, signal) {
|
|
28
|
+
return this.reactor.getDocumentModels(namespace, paging, signal);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Retrieves a specific PHDocument
|
|
32
|
+
*/
|
|
33
|
+
async get(identifier, view, signal) {
|
|
34
|
+
// First try to get by ID
|
|
35
|
+
try {
|
|
36
|
+
return await this.reactor.get(identifier, view, signal);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
// If failed, try to get by slug
|
|
40
|
+
return await this.reactor.getBySlug(identifier, view, signal);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Retrieves children of a document
|
|
45
|
+
*/
|
|
46
|
+
async getChildren(parentIdentifier, view, paging, signal) {
|
|
47
|
+
throw new Error("Method not implemented.");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Retrieves parents of a document
|
|
51
|
+
*/
|
|
52
|
+
async getParents(childIdentifier, view, paging, signal) {
|
|
53
|
+
throw new Error("Method not implemented.");
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Filters documents by criteria and returns a list of them
|
|
57
|
+
*/
|
|
58
|
+
async find(search, view, paging, signal) {
|
|
59
|
+
return this.reactor.find(search, view, paging, signal);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Creates a document and waits for completion
|
|
63
|
+
*/
|
|
64
|
+
async create(document, parentIdentifier, signal) {
|
|
65
|
+
throw new Error("Method not implemented.");
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Creates an empty document and waits for completion
|
|
69
|
+
*/
|
|
70
|
+
async createEmpty(documentType, parentIdentifier, signal) {
|
|
71
|
+
throw new Error("Method not implemented.");
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Applies a list of actions to a document and waits for completion
|
|
75
|
+
*/
|
|
76
|
+
async mutate(documentIdentifier, actions, view, signal) {
|
|
77
|
+
const jobInfo = await this.reactor.mutate(documentIdentifier, actions);
|
|
78
|
+
await this.waitForJob(jobInfo, signal);
|
|
79
|
+
const document = await this.get(documentIdentifier, view, signal);
|
|
80
|
+
return document.document;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Submits a list of actions to a document
|
|
84
|
+
*/
|
|
85
|
+
async mutateAsync(documentIdentifier, actions, view, signal) {
|
|
86
|
+
// Sign actions with the required signer
|
|
87
|
+
const signedActions = await Promise.all(actions.map(async (action) => {
|
|
88
|
+
const signature = await this.signer.sign(action, signal);
|
|
89
|
+
return {
|
|
90
|
+
...action,
|
|
91
|
+
context: {
|
|
92
|
+
...action.context,
|
|
93
|
+
signer: {
|
|
94
|
+
user: {
|
|
95
|
+
address: signature[0],
|
|
96
|
+
networkId: "",
|
|
97
|
+
chainId: 0,
|
|
98
|
+
},
|
|
99
|
+
app: {
|
|
100
|
+
name: "",
|
|
101
|
+
key: "",
|
|
102
|
+
},
|
|
103
|
+
signatures: [signature],
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}));
|
|
108
|
+
// Note: reactor.mutate doesn't use view or signal currently
|
|
109
|
+
return this.reactor.mutate(documentIdentifier, signedActions);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Renames a document and waits for completion
|
|
113
|
+
*/
|
|
114
|
+
async rename(documentIdentifier, name, view, signal) {
|
|
115
|
+
throw new Error("Method not implemented.");
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Adds multiple documents as children to another and waits for completion
|
|
119
|
+
*/
|
|
120
|
+
async addChildren(parentIdentifier, documentIdentifiers, view, signal) {
|
|
121
|
+
// Call reactor.addChildren to get JobInfo
|
|
122
|
+
const jobInfo = await this.reactor.addChildren(parentIdentifier, documentIdentifiers, view, signal);
|
|
123
|
+
// Wait for job completion
|
|
124
|
+
await this.waitForJob(jobInfo, signal);
|
|
125
|
+
// Fetch and return updated parent document
|
|
126
|
+
const result = await this.get(parentIdentifier, view, signal);
|
|
127
|
+
return result.document;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Removes multiple documents as children from another and waits for completion
|
|
131
|
+
*/
|
|
132
|
+
async removeChildren(parentIdentifier, documentIdentifiers, view, signal) {
|
|
133
|
+
// Call reactor.removeChildren to get JobInfo
|
|
134
|
+
const jobInfo = await this.reactor.removeChildren(parentIdentifier, documentIdentifiers, view, signal);
|
|
135
|
+
// Wait for job completion
|
|
136
|
+
await this.waitForJob(jobInfo, signal);
|
|
137
|
+
// Fetch and return updated parent document
|
|
138
|
+
const result = await this.get(parentIdentifier, view, signal);
|
|
139
|
+
return result.document;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Moves multiple documents from one parent to another and waits for completion
|
|
143
|
+
*/
|
|
144
|
+
async moveChildren(sourceParentIdentifier, targetParentIdentifier, documentIdentifiers, view, signal) {
|
|
145
|
+
throw new Error("Method not implemented.");
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Deletes a document and waits for completion
|
|
149
|
+
*/
|
|
150
|
+
async deleteDocument(identifier, propagate, signal) {
|
|
151
|
+
// Call reactor.deleteDocument to get JobInfo
|
|
152
|
+
const jobInfo = await this.reactor.deleteDocument(identifier, propagate, signal);
|
|
153
|
+
// Wait for job completion
|
|
154
|
+
await this.waitForJob(jobInfo, signal);
|
|
155
|
+
// Return void
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Deletes documents and waits for completion
|
|
160
|
+
*/
|
|
161
|
+
async deleteDocuments(identifiers, propagate, signal) {
|
|
162
|
+
throw new Error("Method not implemented.");
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Retrieves the status of a job
|
|
166
|
+
*/
|
|
167
|
+
async getJobStatus(jobId, signal) {
|
|
168
|
+
return this.reactor.getJobStatus(jobId, signal);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Waits for a job to complete
|
|
172
|
+
*/
|
|
173
|
+
async waitForJob(jobId, signal) {
|
|
174
|
+
const id = typeof jobId === "string" ? jobId : jobId.id;
|
|
175
|
+
return this.jobAwaiter.waitForJob(id, signal);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Subscribes to changes for documents matching specified filters
|
|
179
|
+
*/
|
|
180
|
+
subscribe(search, callback, view) {
|
|
181
|
+
throw new Error("Method not implemented.");
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=reactor-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor-client.js","sourceRoot":"","sources":["../../../src/client/reactor-client.ts"],"names":[],"mappings":"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"}
|