@powerhousedao/reactor 4.1.0-dev.9 → 5.0.0-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/bench/end-to-end-flow.bench.js +21 -11
- package/dist/bench/end-to-end-flow.bench.js.map +1 -1
- package/dist/bench/event-bus.bench.js +7 -7
- package/dist/bench/event-bus.bench.js.map +1 -1
- package/dist/bench/queue-only.bench.js +8 -3
- package/dist/bench/queue-only.bench.js.map +1 -1
- package/dist/bench/reactor-throughput.bench.js +18 -8
- package/dist/bench/reactor-throughput.bench.js.map +1 -1
- 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 +1 -1
- package/dist/src/events/types.d.ts.map +1 -1
- 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/job-executor.d.ts +5 -5
- package/dist/src/executor/job-executor.d.ts.map +1 -1
- package/dist/src/executor/job-executor.js +2 -2
- package/dist/src/executor/job-executor.js.map +1 -1
- package/dist/src/executor/types.d.ts +1 -1
- package/dist/src/executor/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +4 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces/reactor.d.ts +121 -0
- package/dist/src/interfaces/reactor.d.ts.map +1 -0
- package/dist/src/interfaces/reactor.js +2 -0
- package/dist/src/interfaces/reactor.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/queue.d.ts +3 -3
- package/dist/src/queue/queue.d.ts.map +1 -1
- package/dist/src/queue/queue.js.map +1 -1
- package/dist/src/queue/types.d.ts +1 -1
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/reactor.d.ts +109 -0
- package/dist/src/reactor.d.ts.map +1 -0
- package/dist/src/reactor.js +602 -0
- package/dist/src/reactor.js.map +1 -0
- package/dist/src/shared/factories.d.ts +16 -0
- package/dist/src/shared/factories.d.ts.map +1 -0
- package/dist/src/shared/factories.js +33 -0
- package/dist/src/shared/factories.js.map +1 -0
- package/dist/src/shared/types.d.ts +83 -19
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/src/shared/types.js +30 -1
- package/dist/src/shared/types.js.map +1 -1
- package/dist/src/shared/utils.d.ts +3 -0
- package/dist/src/shared/utils.d.ts.map +1 -0
- package/dist/src/shared/utils.js +8 -0
- package/dist/src/shared/utils.js.map +1 -0
- package/dist/src/utils.d.ts +11 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +29 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/test/event-bus.test.js +4 -4
- package/dist/test/event-bus.test.js.map +1 -1
- package/dist/test/job-executor.test.js +9 -3
- package/dist/test/job-executor.test.js.map +1 -1
- package/dist/test/queue.test.js +17 -6
- package/dist/test/queue.test.js.map +1 -1
- package/dist/test/reactor-read.test.d.ts +2 -0
- package/dist/test/reactor-read.test.d.ts.map +1 -0
- package/dist/test/reactor-read.test.js +330 -0
- package/dist/test/reactor-read.test.js.map +1 -0
- package/dist/test/reactor-write.test.d.ts +2 -0
- package/dist/test/reactor-write.test.d.ts.map +1 -0
- package/dist/test/reactor-write.test.js +232 -0
- package/dist/test/reactor-write.test.js.map +1 -0
- package/dist/test/utils.test.d.ts +2 -0
- package/dist/test/utils.test.d.ts.map +1 -0
- package/dist/test/utils.test.js +66 -0
- package/dist/test/utils.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { Action, DocumentModelState, Operation, PHDocument } from "document-model";
|
|
2
|
+
import type { JobInfo, JobStatus, PagedResults, PagingOptions, PropagationMode, SearchFilter, ShutdownStatus, ViewFilter } from "../shared/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* The main Reactor interface that serves as a facade for document operations.
|
|
5
|
+
* This interface provides a unified API for document management, including
|
|
6
|
+
* creation, retrieval, mutation, and deletion operations.
|
|
7
|
+
*
|
|
8
|
+
* Phase 2 of the refactoring plan: IReactor Facade (Strangler Fig Pattern)
|
|
9
|
+
*/
|
|
10
|
+
export interface IReactor {
|
|
11
|
+
/**
|
|
12
|
+
* Signals that the reactor should shutdown.
|
|
13
|
+
*/
|
|
14
|
+
kill(): ShutdownStatus;
|
|
15
|
+
/**
|
|
16
|
+
* Retrieves a list of document model specifications
|
|
17
|
+
*
|
|
18
|
+
* @param namespace - Optional namespace like "powerhouse" or "sky", defaults to ""
|
|
19
|
+
* @param paging - Optional options for paging data in large queries.
|
|
20
|
+
* @param signal - Optional abort signal to cancel the request
|
|
21
|
+
* @returns List of document models
|
|
22
|
+
*/
|
|
23
|
+
getDocumentModels(namespace?: string, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<DocumentModelState>>;
|
|
24
|
+
/**
|
|
25
|
+
* Retrieves a specific PHDocument by id
|
|
26
|
+
*
|
|
27
|
+
* @param id - Required, this is the document id
|
|
28
|
+
* @param view - Optional filter containing branch and scopes information
|
|
29
|
+
* @param signal - Optional abort signal to cancel the request
|
|
30
|
+
* @returns The up-to-date PHDocument with scopes and list of child document ids
|
|
31
|
+
*/
|
|
32
|
+
get<TDocument extends PHDocument>(id: string, view?: ViewFilter, signal?: AbortSignal): Promise<{
|
|
33
|
+
document: TDocument;
|
|
34
|
+
childIds: string[];
|
|
35
|
+
}>;
|
|
36
|
+
/**
|
|
37
|
+
* Retrieves a specific PHDocument by slug
|
|
38
|
+
*
|
|
39
|
+
* @param slug - Required, this is the document slug
|
|
40
|
+
* @param view - Optional filter containing branch and scopes information
|
|
41
|
+
* @param signal - Optional abort signal to cancel the request
|
|
42
|
+
* @returns The up-to-date PHDocument with scopes and list of child document ids
|
|
43
|
+
*/
|
|
44
|
+
getBySlug<TDocument extends PHDocument>(slug: string, view?: ViewFilter, signal?: AbortSignal): Promise<{
|
|
45
|
+
document: TDocument;
|
|
46
|
+
childIds: string[];
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Retrieves the operations for a document
|
|
50
|
+
*
|
|
51
|
+
* @param documentId - The document id
|
|
52
|
+
* @param view - Optional filter containing branch and scopes information
|
|
53
|
+
* @param paging - Optional pagination options
|
|
54
|
+
* @param signal - Optional abort signal to cancel the request
|
|
55
|
+
* @returns The list of operations
|
|
56
|
+
*/
|
|
57
|
+
getOperations(documentId: string, view?: ViewFilter, paging?: PagingOptions, signal?: AbortSignal): Promise<Record<string, PagedResults<Operation>>>;
|
|
58
|
+
/**
|
|
59
|
+
* Filters documents by criteria and returns a list of them
|
|
60
|
+
*
|
|
61
|
+
* @param search - Search filter options (type, parentId, identifiers)
|
|
62
|
+
* @param view - Optional filter containing branch and scopes information
|
|
63
|
+
* @param paging - Optional pagination options
|
|
64
|
+
* @param signal - Optional abort signal to cancel the request
|
|
65
|
+
* @returns List of documents matching criteria and pagination cursor
|
|
66
|
+
*/
|
|
67
|
+
find(search: SearchFilter, view?: ViewFilter, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<PHDocument>>;
|
|
68
|
+
/**
|
|
69
|
+
* Creates a document
|
|
70
|
+
*
|
|
71
|
+
* @param document - Document with optional id, slug, parent, model type, and initial state
|
|
72
|
+
* @param signal - Optional abort signal to cancel the request
|
|
73
|
+
* @returns The job status
|
|
74
|
+
*/
|
|
75
|
+
create(document: PHDocument, signal?: AbortSignal): Promise<JobStatus>;
|
|
76
|
+
/**
|
|
77
|
+
* Deletes a document
|
|
78
|
+
*
|
|
79
|
+
* @param id - Document id
|
|
80
|
+
* @param propagate - Optional mode for handling children, CASCADE deletes child documents
|
|
81
|
+
* @param signal - Optional abort signal to cancel the request
|
|
82
|
+
* @returns The job id and status
|
|
83
|
+
*/
|
|
84
|
+
deleteDocument(id: string, propagate?: PropagationMode, signal?: AbortSignal): Promise<JobInfo>;
|
|
85
|
+
/**
|
|
86
|
+
* Applies a list of actions to a document.
|
|
87
|
+
*
|
|
88
|
+
* @param id - Document id
|
|
89
|
+
* @param actions - List of actions to apply
|
|
90
|
+
* @returns The job id and status
|
|
91
|
+
*/
|
|
92
|
+
mutate(id: string, actions: Action[]): Promise<JobInfo>;
|
|
93
|
+
/**
|
|
94
|
+
* Adds multiple documents as children to another
|
|
95
|
+
*
|
|
96
|
+
* @param parentId - Parent document id
|
|
97
|
+
* @param documentIds - List of document ids to add as children
|
|
98
|
+
* @param view - Optional filter containing branch and scopes information
|
|
99
|
+
* @param signal - Optional abort signal to cancel the request
|
|
100
|
+
* @returns The job id and status
|
|
101
|
+
*/
|
|
102
|
+
addChildren(parentId: string, documentIds: string[], view?: ViewFilter, signal?: AbortSignal): Promise<JobInfo>;
|
|
103
|
+
/**
|
|
104
|
+
* Removes multiple documents as children from another
|
|
105
|
+
*
|
|
106
|
+
* @param parentId - Parent document id
|
|
107
|
+
* @param documentIds - List of document ids to remove as children
|
|
108
|
+
* @param view - Optional filter containing branch and scopes information
|
|
109
|
+
* @param signal - Optional abort signal to cancel the request
|
|
110
|
+
* @returns The job id and status
|
|
111
|
+
*/
|
|
112
|
+
removeChildren(parentId: string, documentIds: string[], view?: ViewFilter, signal?: AbortSignal): Promise<JobInfo>;
|
|
113
|
+
/**
|
|
114
|
+
* Retrieves the status of a job
|
|
115
|
+
*
|
|
116
|
+
* @param jobId - The job id
|
|
117
|
+
* @returns The job status
|
|
118
|
+
*/
|
|
119
|
+
getJobStatus(jobId: string, signal?: AbortSignal): Promise<JobInfo>;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=reactor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../../src/interfaces/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,kBAAkB,EAClB,SAAS,EACT,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EACT,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,IAAI,IAAI,cAAc,CAAC;IAEvB;;;;;;;OAOG;IACH,iBAAiB,CACf,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE7C;;;;;;;OAOG;IACH,GAAG,CAAC,SAAS,SAAS,UAAU,EAC9B,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QACT,QAAQ,EAAE,SAAS,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;IAEH;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,SAAS,UAAU,EACpC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QACT,QAAQ,EAAE,SAAS,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;IAEH;;;;;;;;OAQG;IACH,aAAa,CACX,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEpD;;;;;;;;OAQG;IACH,IAAI,CACF,MAAM,EAAE,YAAY,EACpB,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IAErC;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvE;;;;;;;OAOG;IACH,cAAc,CACZ,EAAE,EAAE,MAAM,EACV,SAAS,CAAC,EAAE,eAAe,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExD;;;;;;;;OAQG;IACH,WAAW,CACT,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;;;;;OAQG;IACH,cAAc,CACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,EACrB,IAAI,CAAC,EAAE,UAAU,EACjB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../../src/interfaces/reactor.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/queue/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/queue/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjC;;;;;;OAMG;IACH,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAEnC;;;;;;OAMG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzE;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExC;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE;;;OAGG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IEventBus } from "../events/interfaces.js";
|
|
2
|
-
import { IQueue } from "./interfaces.js";
|
|
3
|
-
import { Job } from "./types.js";
|
|
1
|
+
import { type IEventBus } from "../events/interfaces.js";
|
|
2
|
+
import { type IQueue } from "./interfaces.js";
|
|
3
|
+
import { type Job } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* In-memory implementation of the IQueue interface.
|
|
6
6
|
* Organizes jobs by documentId, scope, and branch to ensure proper ordering.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAmB,KAAK,GAAG,EAA0B,MAAM,YAAY,CAAC;AAE/E;;;GAGG;AACH,qBAAa,aAAc,YAAW,MAAM;IAI9B,OAAO,CAAC,QAAQ;IAH5B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,QAAQ,CAA6B;gBAEzB,QAAQ,EAAE,SAAS;IAEvC;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,QAAQ;IASV,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBhC,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAsBhB,WAAW,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAqBlC,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IAMZ,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCvC,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAeV,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAOhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG;IAChB,oCAAoC;IACpC,EAAE,EAAE,MAAM,CAAC;IAEX,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IAEnB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IAEf,mCAAmC;IACnC,SAAS,EAAE,SAAS,CAAC;IAErB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAElB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;CAElB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { BaseDocumentDriveServer } from "document-drive";
|
|
2
|
+
import type { IDocumentStorage } from "document-drive/storage/types";
|
|
3
|
+
import type { Action, DocumentModelState, Operation, PHDocument } from "document-model";
|
|
4
|
+
import type { IEventBus } from "./events/interfaces.js";
|
|
5
|
+
import type { IJobExecutor } from "./executor/interfaces.js";
|
|
6
|
+
import type { IReactor } from "./interfaces/reactor.js";
|
|
7
|
+
import type { IQueue } from "./queue/interfaces.js";
|
|
8
|
+
import { JobStatus, type JobInfo, type PagedResults, type PagingOptions, type PropagationMode, type SearchFilter, type ShutdownStatus, type ViewFilter } from "./shared/types.js";
|
|
9
|
+
/**
|
|
10
|
+
* The Reactor facade implementation.
|
|
11
|
+
*
|
|
12
|
+
* This class implements the IReactor interface and serves as the main entry point
|
|
13
|
+
* for the new Reactor architecture. In Phase 2 of the refactoring plan, it acts
|
|
14
|
+
* as a facade over the existing BaseDocumentDriveServer while we incrementally
|
|
15
|
+
* migrate to the new architecture.
|
|
16
|
+
*
|
|
17
|
+
* The facade pattern allows us to:
|
|
18
|
+
* 1. Present the new IReactor API to clients immediately
|
|
19
|
+
* 2. Internally delegate to the refactored BaseDocumentDriveServer (post Phase 1)
|
|
20
|
+
* 3. Incrementally replace internal implementations without breaking clients
|
|
21
|
+
* 4. Validate the new architecture alongside the existing system
|
|
22
|
+
*/
|
|
23
|
+
export declare class Reactor implements IReactor {
|
|
24
|
+
private driveServer;
|
|
25
|
+
private documentStorage;
|
|
26
|
+
private shutdownStatus;
|
|
27
|
+
private setShutdown;
|
|
28
|
+
private eventBus;
|
|
29
|
+
private queue;
|
|
30
|
+
private jobExecutor;
|
|
31
|
+
private jobExecutorStarted;
|
|
32
|
+
constructor(driveServer: BaseDocumentDriveServer, documentStorage: IDocumentStorage, eventBus: IEventBus, queue: IQueue, jobExecutor: IJobExecutor);
|
|
33
|
+
/**
|
|
34
|
+
* Signals that the reactor should shutdown.
|
|
35
|
+
*/
|
|
36
|
+
kill(): ShutdownStatus;
|
|
37
|
+
/**
|
|
38
|
+
* Retrieves a list of document model specifications
|
|
39
|
+
*/
|
|
40
|
+
getDocumentModels(namespace?: string, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<DocumentModelState>>;
|
|
41
|
+
/**
|
|
42
|
+
* Retrieves a specific PHDocument by id
|
|
43
|
+
*/
|
|
44
|
+
get<TDocument extends PHDocument>(id: string, view?: ViewFilter, signal?: AbortSignal): Promise<{
|
|
45
|
+
document: TDocument;
|
|
46
|
+
childIds: string[];
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Retrieves a specific PHDocument by slug
|
|
50
|
+
*/
|
|
51
|
+
getBySlug<TDocument extends PHDocument>(slug: string, view?: ViewFilter, signal?: AbortSignal): Promise<{
|
|
52
|
+
document: TDocument;
|
|
53
|
+
childIds: string[];
|
|
54
|
+
}>;
|
|
55
|
+
/**
|
|
56
|
+
* Retrieves the operations for a document
|
|
57
|
+
*/
|
|
58
|
+
getOperations(documentId: string, view?: ViewFilter, paging?: PagingOptions, signal?: AbortSignal): Promise<Record<string, PagedResults<Operation>>>;
|
|
59
|
+
/**
|
|
60
|
+
* Filters documents by criteria and returns a list of them
|
|
61
|
+
*/
|
|
62
|
+
find(search: SearchFilter, view?: ViewFilter, paging?: PagingOptions, signal?: AbortSignal): Promise<PagedResults<PHDocument>>;
|
|
63
|
+
/**
|
|
64
|
+
* Creates a document
|
|
65
|
+
*/
|
|
66
|
+
create(document: PHDocument, signal?: AbortSignal): Promise<JobStatus>;
|
|
67
|
+
/**
|
|
68
|
+
* Deletes a document
|
|
69
|
+
*/
|
|
70
|
+
deleteDocument(id: string, propagate?: PropagationMode, signal?: AbortSignal): Promise<JobInfo>;
|
|
71
|
+
/**
|
|
72
|
+
* Applies a list of actions to a document
|
|
73
|
+
*/
|
|
74
|
+
mutate(id: string, actions: Action[]): Promise<JobInfo>;
|
|
75
|
+
/**
|
|
76
|
+
* Adds multiple documents as children to another
|
|
77
|
+
*/
|
|
78
|
+
addChildren(parentId: string, documentIds: string[], view?: ViewFilter, signal?: AbortSignal): Promise<JobInfo>;
|
|
79
|
+
/**
|
|
80
|
+
* Removes multiple documents as children from another
|
|
81
|
+
*/
|
|
82
|
+
removeChildren(parentId: string, documentIds: string[], view?: ViewFilter, signal?: AbortSignal): Promise<JobInfo>;
|
|
83
|
+
/**
|
|
84
|
+
* Retrieves the status of a job
|
|
85
|
+
*/
|
|
86
|
+
getJobStatus(jobId: string, signal?: AbortSignal): Promise<JobInfo>;
|
|
87
|
+
/**
|
|
88
|
+
* Starts the job executor if not already running.
|
|
89
|
+
* Called automatically when the first job is enqueued.
|
|
90
|
+
*/
|
|
91
|
+
private ensureJobExecutorRunning;
|
|
92
|
+
/**
|
|
93
|
+
* Finds documents by their IDs
|
|
94
|
+
*/
|
|
95
|
+
private findByIds;
|
|
96
|
+
/**
|
|
97
|
+
* Finds documents by their slugs
|
|
98
|
+
*/
|
|
99
|
+
private findBySlugs;
|
|
100
|
+
/**
|
|
101
|
+
* Finds documents by parent ID
|
|
102
|
+
*/
|
|
103
|
+
private findByParentId;
|
|
104
|
+
/**
|
|
105
|
+
* Finds documents by type
|
|
106
|
+
*/
|
|
107
|
+
private findByType;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=reactor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../src/reactor.ts"],"names":[],"mappings":"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"}
|