@powerhousedao/reactor 4.1.0-staging.1 → 5.0.0-staging.2
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 +64 -36
- package/dist/bench/end-to-end-flow.bench.js.map +1 -1
- package/dist/bench/event-bus.bench.js.map +1 -1
- package/dist/bench/queue-only.bench.js +8 -2
- package/dist/bench/queue-only.bench.js.map +1 -1
- package/dist/bench/reactor-throughput.bench.js +43 -16
- 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 +31 -54
- package/dist/src/executor/interfaces.d.ts.map +1 -1
- package/dist/src/executor/simple-job-executor-manager.d.ts +27 -0
- package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -0
- package/dist/src/executor/simple-job-executor-manager.js +128 -0
- package/dist/src/executor/simple-job-executor-manager.js.map +1 -0
- package/dist/src/executor/simple-job-executor.d.ts +19 -0
- package/dist/src/executor/simple-job-executor.d.ts.map +1 -0
- package/dist/src/executor/simple-job-executor.js +69 -0
- package/dist/src/executor/simple-job-executor.js.map +1 -0
- package/dist/src/executor/types.d.ts +23 -8
- package/dist/src/executor/types.d.ts.map +1 -1
- package/dist/src/executor/types.js.map +1 -1
- package/dist/src/index.d.ts +9 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -2
- 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 +26 -1
- package/dist/src/queue/interfaces.d.ts.map +1 -1
- package/dist/src/queue/queue.d.ts +33 -3
- package/dist/src/queue/queue.d.ts.map +1 -1
- package/dist/src/queue/queue.js +164 -17
- package/dist/src/queue/queue.js.map +1 -1
- package/dist/src/queue/types.d.ts +5 -1
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js.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/registry/implementation.d.ts +62 -0
- package/dist/src/registry/implementation.d.ts.map +1 -0
- package/dist/src/registry/implementation.js +96 -0
- package/dist/src/registry/implementation.js.map +1 -0
- package/dist/src/registry/index.d.ts +3 -0
- package/dist/src/registry/index.d.ts.map +1 -0
- package/dist/src/registry/index.js +2 -0
- package/dist/src/registry/index.js.map +1 -0
- package/dist/src/registry/interfaces.d.ts +39 -0
- package/dist/src/registry/interfaces.d.ts.map +1 -0
- package/dist/src/registry/interfaces.js +2 -0
- package/dist/src/registry/interfaces.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/executor-integration.test.d.ts +2 -0
- package/dist/test/executor-integration.test.d.ts.map +1 -0
- package/dist/test/executor-integration.test.js +290 -0
- package/dist/test/executor-integration.test.js.map +1 -0
- package/dist/test/factories.d.ts +131 -0
- package/dist/test/factories.d.ts.map +1 -0
- package/dist/test/factories.js +347 -0
- package/dist/test/factories.js.map +1 -0
- package/dist/test/queue.test.js +219 -28
- package/dist/test/queue.test.js.map +1 -1
- package/dist/test/reactor-queue.test.d.ts +2 -0
- package/dist/test/reactor-queue.test.d.ts.map +1 -0
- package/dist/test/reactor-queue.test.js +328 -0
- package/dist/test/reactor-queue.test.js.map +1 -0
- 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 +355 -0
- package/dist/test/reactor-read.test.js.map +1 -0
- package/dist/test/registry.test.d.ts +2 -0
- package/dist/test/registry.test.d.ts.map +1 -0
- package/dist/test/registry.test.js +182 -0
- package/dist/test/registry.test.js.map +1 -0
- package/dist/test/simple-job-executor-manager.test.d.ts +2 -0
- package/dist/test/simple-job-executor-manager.test.d.ts.map +1 -0
- package/dist/test/simple-job-executor-manager.test.js +132 -0
- package/dist/test/simple-job-executor-manager.test.js.map +1 -0
- package/dist/test/simple-job-executor.test.d.ts +2 -0
- package/dist/test/simple-job-executor.test.d.ts.map +1 -0
- package/dist/test/simple-job-executor.test.js +139 -0
- package/dist/test/simple-job-executor.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/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +11 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +6 -1
- package/dist/src/executor/job-executor.d.ts +0 -62
- package/dist/src/executor/job-executor.d.ts.map +0 -1
- package/dist/src/executor/job-executor.js +0 -325
- package/dist/src/executor/job-executor.js.map +0 -1
- package/dist/test/job-executor.test.d.ts +0 -2
- package/dist/test/job-executor.test.d.ts.map +0 -1
- package/dist/test/job-executor.test.js +0 -581
- package/dist/test/job-executor.test.js.map +0 -1
package/dist/src/queue/queue.js
CHANGED
|
@@ -2,11 +2,17 @@ import { QueueEventTypes } from "./types.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* In-memory implementation of the IQueue interface.
|
|
4
4
|
* Organizes jobs by documentId, scope, and branch to ensure proper ordering.
|
|
5
|
+
* Ensures serial execution per document by tracking executing jobs.
|
|
6
|
+
* Implements dependency management through queue hints.
|
|
5
7
|
*/
|
|
6
8
|
export class InMemoryQueue {
|
|
7
9
|
eventBus;
|
|
8
10
|
queues = new Map();
|
|
9
|
-
|
|
11
|
+
jobIdToQueueKey = new Map();
|
|
12
|
+
docIdToJobId = new Map();
|
|
13
|
+
jobIdToDocId = new Map();
|
|
14
|
+
completedJobs = new Set();
|
|
15
|
+
jobIndex = new Map();
|
|
10
16
|
constructor(eventBus) {
|
|
11
17
|
this.eventBus = eventBus;
|
|
12
18
|
}
|
|
@@ -27,13 +33,66 @@ export class InMemoryQueue {
|
|
|
27
33
|
}
|
|
28
34
|
return queue;
|
|
29
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Check if a document has any jobs currently executing
|
|
38
|
+
*/
|
|
39
|
+
isDocumentExecuting(documentId) {
|
|
40
|
+
const executingSet = this.docIdToJobId.get(documentId);
|
|
41
|
+
return executingSet ? executingSet.size > 0 : false;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Mark a job as executing for its document
|
|
45
|
+
*/
|
|
46
|
+
markJobExecuting(job) {
|
|
47
|
+
let executingSet = this.docIdToJobId.get(job.documentId);
|
|
48
|
+
if (!executingSet) {
|
|
49
|
+
executingSet = new Set();
|
|
50
|
+
this.docIdToJobId.set(job.documentId, executingSet);
|
|
51
|
+
}
|
|
52
|
+
executingSet.add(job.id);
|
|
53
|
+
this.jobIdToDocId.set(job.id, job.documentId);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Mark a job as no longer executing for its document
|
|
57
|
+
*/
|
|
58
|
+
markJobComplete(jobId, documentId) {
|
|
59
|
+
const executingSet = this.docIdToJobId.get(documentId);
|
|
60
|
+
if (executingSet) {
|
|
61
|
+
executingSet.delete(jobId);
|
|
62
|
+
if (executingSet.size === 0) {
|
|
63
|
+
this.docIdToJobId.delete(documentId);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
this.jobIdToDocId.delete(jobId);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Check if all dependencies for a job have been completed
|
|
70
|
+
*/
|
|
71
|
+
areDependenciesMet(job) {
|
|
72
|
+
if (!job.queueHint || job.queueHint.length === 0) {
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
return job.queueHint.every((depId) => this.completedJobs.has(depId));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the next job that has all its dependencies met
|
|
79
|
+
*/
|
|
80
|
+
getNextJobWithMetDependencies(queue) {
|
|
81
|
+
for (const job of queue) {
|
|
82
|
+
if (this.areDependenciesMet(job)) {
|
|
83
|
+
return job;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
30
88
|
async enqueue(job) {
|
|
31
89
|
const queueKey = this.createQueueKey(job.documentId, job.scope, job.branch);
|
|
32
90
|
const queue = this.getQueue(queueKey);
|
|
33
91
|
// Add job to the end of the queue (FIFO)
|
|
34
92
|
queue.push(job);
|
|
35
|
-
// Track job location for removal
|
|
36
|
-
this.
|
|
93
|
+
// Track job location for removal and dependency resolution
|
|
94
|
+
this.jobIdToQueueKey.set(job.id, queueKey);
|
|
95
|
+
this.jobIndex.set(job.id, job);
|
|
37
96
|
// Emit job available event
|
|
38
97
|
const eventData = {
|
|
39
98
|
documentId: job.documentId,
|
|
@@ -49,9 +108,16 @@ export class InMemoryQueue {
|
|
|
49
108
|
if (!queue || queue.length === 0) {
|
|
50
109
|
return null;
|
|
51
110
|
}
|
|
52
|
-
//
|
|
53
|
-
const job =
|
|
111
|
+
// Find the first job with met dependencies
|
|
112
|
+
const job = this.getNextJobWithMetDependencies(queue);
|
|
113
|
+
if (!job) {
|
|
114
|
+
return null; // No job with met dependencies
|
|
115
|
+
}
|
|
116
|
+
// Remove job from queue
|
|
117
|
+
const jobIndex = queue.indexOf(job);
|
|
118
|
+
queue.splice(jobIndex, 1);
|
|
54
119
|
// Remove from job index
|
|
120
|
+
this.jobIdToQueueKey.delete(job.id);
|
|
55
121
|
this.jobIndex.delete(job.id);
|
|
56
122
|
// Clean up empty queue
|
|
57
123
|
if (queue.length === 0) {
|
|
@@ -60,17 +126,30 @@ export class InMemoryQueue {
|
|
|
60
126
|
return job;
|
|
61
127
|
}
|
|
62
128
|
async dequeueNext() {
|
|
63
|
-
// Find the first non-empty queue
|
|
129
|
+
// Find the first non-empty queue for a document that's not currently executing
|
|
64
130
|
for (const [queueKey, queue] of this.queues.entries()) {
|
|
65
131
|
if (queue.length > 0) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
132
|
+
// Find the first job with met dependencies
|
|
133
|
+
const job = this.getNextJobWithMetDependencies(queue);
|
|
134
|
+
if (!job) {
|
|
135
|
+
continue; // No job with met dependencies in this queue
|
|
136
|
+
}
|
|
137
|
+
// Only dequeue if the document is not currently executing jobs
|
|
138
|
+
if (!this.isDocumentExecuting(job.documentId)) {
|
|
139
|
+
// Remove job from queue
|
|
140
|
+
const jobIdx = queue.indexOf(job);
|
|
141
|
+
queue.splice(jobIdx, 1);
|
|
142
|
+
// Remove from job index
|
|
143
|
+
this.jobIdToQueueKey.delete(job.id);
|
|
144
|
+
this.jobIndex.delete(job.id);
|
|
145
|
+
// Mark this job as executing for its document
|
|
146
|
+
this.markJobExecuting(job);
|
|
147
|
+
// Clean up empty queue
|
|
148
|
+
if (queue.length === 0) {
|
|
149
|
+
this.queues.delete(queueKey);
|
|
150
|
+
}
|
|
151
|
+
return job;
|
|
72
152
|
}
|
|
73
|
-
return job;
|
|
74
153
|
}
|
|
75
154
|
}
|
|
76
155
|
return null;
|
|
@@ -88,25 +167,28 @@ export class InMemoryQueue {
|
|
|
88
167
|
return total;
|
|
89
168
|
}
|
|
90
169
|
async remove(jobId) {
|
|
91
|
-
const queueKey = this.
|
|
170
|
+
const queueKey = this.jobIdToQueueKey.get(jobId);
|
|
92
171
|
if (!queueKey) {
|
|
93
172
|
return false;
|
|
94
173
|
}
|
|
95
174
|
const queue = this.queues.get(queueKey);
|
|
96
175
|
if (!queue) {
|
|
97
176
|
// Clean up orphaned index entry
|
|
177
|
+
this.jobIdToQueueKey.delete(jobId);
|
|
98
178
|
this.jobIndex.delete(jobId);
|
|
99
179
|
return false;
|
|
100
180
|
}
|
|
101
|
-
const
|
|
102
|
-
if (
|
|
181
|
+
const jobIdx = queue.findIndex((job) => job.id === jobId);
|
|
182
|
+
if (jobIdx === -1) {
|
|
103
183
|
// Clean up orphaned index entry
|
|
184
|
+
this.jobIdToQueueKey.delete(jobId);
|
|
104
185
|
this.jobIndex.delete(jobId);
|
|
105
186
|
return false;
|
|
106
187
|
}
|
|
107
188
|
// Remove job from queue
|
|
108
|
-
queue.splice(
|
|
189
|
+
queue.splice(jobIdx, 1);
|
|
109
190
|
// Remove from job index
|
|
191
|
+
this.jobIdToQueueKey.delete(jobId);
|
|
110
192
|
this.jobIndex.delete(jobId);
|
|
111
193
|
// Clean up empty queue
|
|
112
194
|
if (queue.length === 0) {
|
|
@@ -120,6 +202,7 @@ export class InMemoryQueue {
|
|
|
120
202
|
if (queue) {
|
|
121
203
|
// Remove all jobs from the job index
|
|
122
204
|
for (const job of queue) {
|
|
205
|
+
this.jobIdToQueueKey.delete(job.id);
|
|
123
206
|
this.jobIndex.delete(job.id);
|
|
124
207
|
}
|
|
125
208
|
// Remove the queue
|
|
@@ -128,9 +211,73 @@ export class InMemoryQueue {
|
|
|
128
211
|
}
|
|
129
212
|
async clearAll() {
|
|
130
213
|
// Clear all job indices
|
|
214
|
+
this.jobIdToQueueKey.clear();
|
|
131
215
|
this.jobIndex.clear();
|
|
216
|
+
this.completedJobs.clear();
|
|
132
217
|
// Clear all queues
|
|
133
218
|
this.queues.clear();
|
|
134
219
|
}
|
|
220
|
+
async hasJobs() {
|
|
221
|
+
return (this.queues.size > 0 &&
|
|
222
|
+
Array.from(this.queues.values()).some((q) => q.length > 0));
|
|
223
|
+
}
|
|
224
|
+
async completeJob(jobId) {
|
|
225
|
+
// Get the documentId for the executing job
|
|
226
|
+
const documentId = this.jobIdToDocId.get(jobId);
|
|
227
|
+
if (documentId) {
|
|
228
|
+
// Mark the job as no longer executing
|
|
229
|
+
this.markJobComplete(jobId, documentId);
|
|
230
|
+
}
|
|
231
|
+
// Track the job as completed for dependency resolution
|
|
232
|
+
this.completedJobs.add(jobId);
|
|
233
|
+
// For in-memory queue, completing just removes the job
|
|
234
|
+
// In a persistent queue, this would update the job status
|
|
235
|
+
await this.remove(jobId);
|
|
236
|
+
}
|
|
237
|
+
async failJob(jobId, error) {
|
|
238
|
+
// Get the documentId for the executing job
|
|
239
|
+
const documentId = this.jobIdToDocId.get(jobId);
|
|
240
|
+
if (documentId) {
|
|
241
|
+
// Mark the job as no longer executing
|
|
242
|
+
this.markJobComplete(jobId, documentId);
|
|
243
|
+
}
|
|
244
|
+
// For in-memory queue, failing just removes the job
|
|
245
|
+
// In a persistent queue, this would update the job status and store the error
|
|
246
|
+
await this.remove(jobId);
|
|
247
|
+
}
|
|
248
|
+
async retryJob(jobId, error) {
|
|
249
|
+
// Get the documentId for the executing job and mark it as complete
|
|
250
|
+
const documentId = this.jobIdToDocId.get(jobId);
|
|
251
|
+
if (documentId) {
|
|
252
|
+
// Mark the job as no longer executing
|
|
253
|
+
this.markJobComplete(jobId, documentId);
|
|
254
|
+
}
|
|
255
|
+
// For in-memory queue, we need to find the job and re-enqueue it
|
|
256
|
+
// In a real implementation, this would update retry count and delay
|
|
257
|
+
const queueKey = this.jobIdToQueueKey.get(jobId);
|
|
258
|
+
if (!queueKey) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const queue = this.queues.get(queueKey);
|
|
262
|
+
if (!queue) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const jobIndex = queue.findIndex((job) => job.id === jobId);
|
|
266
|
+
if (jobIndex === -1) {
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const job = queue[jobIndex];
|
|
270
|
+
// Update retry count
|
|
271
|
+
const updatedJob = {
|
|
272
|
+
...job,
|
|
273
|
+
retryCount: (job.retryCount || 0) + 1,
|
|
274
|
+
lastError: error,
|
|
275
|
+
};
|
|
276
|
+
// Remove old job
|
|
277
|
+
queue.splice(jobIndex, 1);
|
|
278
|
+
this.jobIdToQueueKey.delete(jobId);
|
|
279
|
+
// Re-enqueue with updated retry count
|
|
280
|
+
await this.enqueue(updatedJob);
|
|
281
|
+
}
|
|
135
282
|
}
|
|
136
283
|
//# sourceMappingURL=queue.js.map
|
|
@@ -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":"AAEA,OAAO,EAAE,eAAe,EAAoC,MAAM,YAAY,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAQJ;IAPZ,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;IAClC,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;IAE1C,YAAoB,QAAmB;QAAnB,aAAQ,GAAR,QAAQ,CAAW;IAAG,CAAC;IAE3C;;OAEG;IACK,cAAc,CACpB,UAAkB,EAClB,KAAa,EACb,MAAc;QAEd,OAAO,GAAG,UAAU,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,QAAgB;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAkB;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtD,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,GAAQ;QAC/B,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAa,EAAE,UAAkB;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,GAAQ;QACjC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACK,6BAA6B,CAAC,KAAY;QAChD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtC,yCAAyC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhB,2DAA2D;QAC3D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAE/B,2BAA2B;QAC3B,MAAM,SAAS,GAAsB;YACnC,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC;QAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,OAAO,CACX,UAAkB,EAClB,KAAa,EACb,MAAc;QAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2CAA2C;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC,CAAC,+BAA+B;QAC9C,CAAC;QAED,wBAAwB;QACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE1B,wBAAwB;QACxB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE7B,uBAAuB;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,WAAW;QACf,+EAA+E;QAC/E,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,2CAA2C;gBAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;gBACtD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,SAAS,CAAC,6CAA6C;gBACzD,CAAC;gBAED,+DAA+D;gBAC/D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9C,wBAAwB;oBACxB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAExB,wBAAwB;oBACxB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAE7B,8CAA8C;oBAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAE3B,uBAAuB;oBACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC/B,CAAC;oBAED,OAAO,GAAG,CAAC;gBACb,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI,CACR,UAAkB,EAClB,KAAa,EACb,MAAc;QAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,gCAAgC;YAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;QAC1D,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,gCAAgC;YAChC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,wBAAwB;QACxB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAExB,wBAAwB;QACxB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5B,uBAAuB;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CACT,UAAkB,EAClB,KAAa,EACb,MAAc;QAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,KAAK,EAAE,CAAC;YACV,qCAAqC;YACrC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;YAED,mBAAmB;YACnB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,wBAAwB;QACxB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAE3B,mBAAmB;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,CACL,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC3D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,sCAAsC;YACtC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,uDAAuD;QACvD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE9B,uDAAuD;QACvD,0DAA0D;QAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,KAAc;QACzC,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,sCAAsC;YACtC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,oDAAoD;QACpD,8EAA8E;QAC9E,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,KAAc;QAC1C,mEAAmE;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,EAAE,CAAC;YACf,sCAAsC;YACtC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,iEAAiE;QACjE,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;QAC5D,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE5B,qBAAqB;QACrB,MAAM,UAAU,GAAQ;YACtB,GAAG,GAAG;YACN,UAAU,EAAE,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC;YACrC,SAAS,EAAE,KAAK;SACjB,CAAC;QAEF,iBAAiB;QACjB,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnC,sCAAsC;QACtC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Operation } from "
|
|
1
|
+
import type { Operation } from "document-model";
|
|
2
2
|
/**
|
|
3
3
|
* Represents a job to be executed by the job executor
|
|
4
4
|
*/
|
|
@@ -15,10 +15,14 @@ export type Job = {
|
|
|
15
15
|
operation: Operation;
|
|
16
16
|
/** Timestamp when the job was created */
|
|
17
17
|
createdAt: string;
|
|
18
|
+
/** The hint for the queue to use for ordering the job */
|
|
19
|
+
queueHint: string[];
|
|
18
20
|
/** Number of retry attempts */
|
|
19
21
|
retryCount?: number;
|
|
20
22
|
/** Maximum number of retries allowed */
|
|
21
23
|
maxRetries?: number;
|
|
24
|
+
/** Last error message if job failed */
|
|
25
|
+
lastError?: string;
|
|
22
26
|
};
|
|
23
27
|
/**
|
|
24
28
|
* Event types for the queue system
|
|
@@ -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,yDAAyD;IACzD,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/queue/types.ts"],"names":[],"mappings":"AAqCA;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,KAAK;CACZ,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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"}
|