@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.
Files changed (126) hide show
  1. package/dist/bench/end-to-end-flow.bench.js +64 -36
  2. package/dist/bench/end-to-end-flow.bench.js.map +1 -1
  3. package/dist/bench/event-bus.bench.js.map +1 -1
  4. package/dist/bench/queue-only.bench.js +8 -2
  5. package/dist/bench/queue-only.bench.js.map +1 -1
  6. package/dist/bench/reactor-throughput.bench.js +43 -16
  7. package/dist/bench/reactor-throughput.bench.js.map +1 -1
  8. package/dist/src/events/event-bus.d.ts +2 -2
  9. package/dist/src/events/event-bus.d.ts.map +1 -1
  10. package/dist/src/events/event-bus.js +1 -1
  11. package/dist/src/events/event-bus.js.map +1 -1
  12. package/dist/src/events/interfaces.d.ts +1 -1
  13. package/dist/src/events/interfaces.d.ts.map +1 -1
  14. package/dist/src/events/types.d.ts +1 -1
  15. package/dist/src/events/types.d.ts.map +1 -1
  16. package/dist/src/events/types.js.map +1 -1
  17. package/dist/src/executor/interfaces.d.ts +31 -54
  18. package/dist/src/executor/interfaces.d.ts.map +1 -1
  19. package/dist/src/executor/simple-job-executor-manager.d.ts +27 -0
  20. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -0
  21. package/dist/src/executor/simple-job-executor-manager.js +128 -0
  22. package/dist/src/executor/simple-job-executor-manager.js.map +1 -0
  23. package/dist/src/executor/simple-job-executor.d.ts +19 -0
  24. package/dist/src/executor/simple-job-executor.d.ts.map +1 -0
  25. package/dist/src/executor/simple-job-executor.js +69 -0
  26. package/dist/src/executor/simple-job-executor.js.map +1 -0
  27. package/dist/src/executor/types.d.ts +23 -8
  28. package/dist/src/executor/types.d.ts.map +1 -1
  29. package/dist/src/executor/types.js.map +1 -1
  30. package/dist/src/index.d.ts +9 -2
  31. package/dist/src/index.d.ts.map +1 -1
  32. package/dist/src/index.js +8 -2
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/interfaces/reactor.d.ts +121 -0
  35. package/dist/src/interfaces/reactor.d.ts.map +1 -0
  36. package/dist/src/interfaces/reactor.js +2 -0
  37. package/dist/src/interfaces/reactor.js.map +1 -0
  38. package/dist/src/queue/interfaces.d.ts +26 -1
  39. package/dist/src/queue/interfaces.d.ts.map +1 -1
  40. package/dist/src/queue/queue.d.ts +33 -3
  41. package/dist/src/queue/queue.d.ts.map +1 -1
  42. package/dist/src/queue/queue.js +164 -17
  43. package/dist/src/queue/queue.js.map +1 -1
  44. package/dist/src/queue/types.d.ts +5 -1
  45. package/dist/src/queue/types.d.ts.map +1 -1
  46. package/dist/src/queue/types.js.map +1 -1
  47. package/dist/src/reactor.d.ts +109 -0
  48. package/dist/src/reactor.d.ts.map +1 -0
  49. package/dist/src/reactor.js +602 -0
  50. package/dist/src/reactor.js.map +1 -0
  51. package/dist/src/registry/implementation.d.ts +62 -0
  52. package/dist/src/registry/implementation.d.ts.map +1 -0
  53. package/dist/src/registry/implementation.js +96 -0
  54. package/dist/src/registry/implementation.js.map +1 -0
  55. package/dist/src/registry/index.d.ts +3 -0
  56. package/dist/src/registry/index.d.ts.map +1 -0
  57. package/dist/src/registry/index.js +2 -0
  58. package/dist/src/registry/index.js.map +1 -0
  59. package/dist/src/registry/interfaces.d.ts +39 -0
  60. package/dist/src/registry/interfaces.d.ts.map +1 -0
  61. package/dist/src/registry/interfaces.js +2 -0
  62. package/dist/src/registry/interfaces.js.map +1 -0
  63. package/dist/src/shared/factories.d.ts +16 -0
  64. package/dist/src/shared/factories.d.ts.map +1 -0
  65. package/dist/src/shared/factories.js +33 -0
  66. package/dist/src/shared/factories.js.map +1 -0
  67. package/dist/src/shared/types.d.ts +83 -19
  68. package/dist/src/shared/types.d.ts.map +1 -1
  69. package/dist/src/shared/types.js +30 -1
  70. package/dist/src/shared/types.js.map +1 -1
  71. package/dist/src/shared/utils.d.ts +3 -0
  72. package/dist/src/shared/utils.d.ts.map +1 -0
  73. package/dist/src/shared/utils.js +8 -0
  74. package/dist/src/shared/utils.js.map +1 -0
  75. package/dist/src/utils.d.ts +11 -0
  76. package/dist/src/utils.d.ts.map +1 -0
  77. package/dist/src/utils.js +29 -0
  78. package/dist/src/utils.js.map +1 -0
  79. package/dist/test/executor-integration.test.d.ts +2 -0
  80. package/dist/test/executor-integration.test.d.ts.map +1 -0
  81. package/dist/test/executor-integration.test.js +290 -0
  82. package/dist/test/executor-integration.test.js.map +1 -0
  83. package/dist/test/factories.d.ts +131 -0
  84. package/dist/test/factories.d.ts.map +1 -0
  85. package/dist/test/factories.js +347 -0
  86. package/dist/test/factories.js.map +1 -0
  87. package/dist/test/queue.test.js +219 -28
  88. package/dist/test/queue.test.js.map +1 -1
  89. package/dist/test/reactor-queue.test.d.ts +2 -0
  90. package/dist/test/reactor-queue.test.d.ts.map +1 -0
  91. package/dist/test/reactor-queue.test.js +328 -0
  92. package/dist/test/reactor-queue.test.js.map +1 -0
  93. package/dist/test/reactor-read.test.d.ts +2 -0
  94. package/dist/test/reactor-read.test.d.ts.map +1 -0
  95. package/dist/test/reactor-read.test.js +355 -0
  96. package/dist/test/reactor-read.test.js.map +1 -0
  97. package/dist/test/registry.test.d.ts +2 -0
  98. package/dist/test/registry.test.d.ts.map +1 -0
  99. package/dist/test/registry.test.js +182 -0
  100. package/dist/test/registry.test.js.map +1 -0
  101. package/dist/test/simple-job-executor-manager.test.d.ts +2 -0
  102. package/dist/test/simple-job-executor-manager.test.d.ts.map +1 -0
  103. package/dist/test/simple-job-executor-manager.test.js +132 -0
  104. package/dist/test/simple-job-executor-manager.test.js.map +1 -0
  105. package/dist/test/simple-job-executor.test.d.ts +2 -0
  106. package/dist/test/simple-job-executor.test.d.ts.map +1 -0
  107. package/dist/test/simple-job-executor.test.js +139 -0
  108. package/dist/test/simple-job-executor.test.js.map +1 -0
  109. package/dist/test/utils.test.d.ts +2 -0
  110. package/dist/test/utils.test.d.ts.map +1 -0
  111. package/dist/test/utils.test.js +66 -0
  112. package/dist/test/utils.test.js.map +1 -0
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/dist/vitest.config.d.ts +3 -0
  115. package/dist/vitest.config.d.ts.map +1 -0
  116. package/dist/vitest.config.js +11 -0
  117. package/dist/vitest.config.js.map +1 -0
  118. package/package.json +6 -1
  119. package/dist/src/executor/job-executor.d.ts +0 -62
  120. package/dist/src/executor/job-executor.d.ts.map +0 -1
  121. package/dist/src/executor/job-executor.js +0 -325
  122. package/dist/src/executor/job-executor.js.map +0 -1
  123. package/dist/test/job-executor.test.d.ts +0 -2
  124. package/dist/test/job-executor.test.d.ts.map +0 -1
  125. package/dist/test/job-executor.test.js +0 -581
  126. package/dist/test/job-executor.test.js.map +0 -1
@@ -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
- jobIndex = new Map(); // jobId -> queueKey mapping
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.jobIndex.set(job.id, queueKey);
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
- // Remove job from the front of the queue (FIFO)
53
- const job = queue.shift();
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 and dequeue from it
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
- const job = queue.shift();
67
- // Remove from job index
68
- this.jobIndex.delete(job.id);
69
- // Clean up empty queue
70
- if (queue.length === 0) {
71
- this.queues.delete(queueKey);
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.jobIndex.get(jobId);
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 jobIndex = queue.findIndex((job) => job.id === jobId);
102
- if (jobIndex === -1) {
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(jobIndex, 1);
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":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Operation } from "#shared/types.js";
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,kBAAkB,CAAC;AAE7C;;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"}
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":"AA+BA;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,KAAK;CACZ,CAAC"}
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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"}