@powerhousedao/reactor 5.0.0-staging.1 → 5.0.0-staging.11

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 (133) hide show
  1. package/dist/bench/event-bus.bench.js +17 -27
  2. package/dist/bench/event-bus.bench.js.map +1 -1
  3. package/dist/bench/queue-only.bench.js +1 -0
  4. package/dist/bench/queue-only.bench.js.map +1 -1
  5. package/dist/bench/reactor-throughput.bench.js +42 -45
  6. package/dist/bench/reactor-throughput.bench.js.map +1 -1
  7. package/dist/src/events/event-bus.d.ts +3 -3
  8. package/dist/src/events/event-bus.d.ts.map +1 -1
  9. package/dist/src/events/event-bus.js +1 -1
  10. package/dist/src/events/event-bus.js.map +1 -1
  11. package/dist/src/events/interfaces.d.ts +1 -1
  12. package/dist/src/events/interfaces.d.ts.map +1 -1
  13. package/dist/src/executor/interfaces.d.ts +31 -54
  14. package/dist/src/executor/interfaces.d.ts.map +1 -1
  15. package/dist/src/executor/simple-job-executor-manager.d.ts +27 -0
  16. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -0
  17. package/dist/src/executor/simple-job-executor-manager.js +128 -0
  18. package/dist/src/executor/simple-job-executor-manager.js.map +1 -0
  19. package/dist/src/executor/simple-job-executor.d.ts +19 -0
  20. package/dist/src/executor/simple-job-executor.d.ts.map +1 -0
  21. package/dist/src/executor/simple-job-executor.js +69 -0
  22. package/dist/src/executor/simple-job-executor.js.map +1 -0
  23. package/dist/src/executor/types.d.ts +23 -8
  24. package/dist/src/executor/types.d.ts.map +1 -1
  25. package/dist/src/executor/types.js.map +1 -1
  26. package/dist/src/index.d.ts +5 -1
  27. package/dist/src/index.d.ts.map +1 -1
  28. package/dist/src/index.js +5 -2
  29. package/dist/src/index.js.map +1 -1
  30. package/dist/src/queue/interfaces.d.ts +45 -5
  31. package/dist/src/queue/interfaces.d.ts.map +1 -1
  32. package/dist/src/queue/job-execution-handle.d.ts +24 -0
  33. package/dist/src/queue/job-execution-handle.d.ts.map +1 -0
  34. package/dist/src/queue/job-execution-handle.js +62 -0
  35. package/dist/src/queue/job-execution-handle.js.map +1 -0
  36. package/dist/src/queue/queue.d.ts +54 -5
  37. package/dist/src/queue/queue.d.ts.map +1 -1
  38. package/dist/src/queue/queue.js +237 -23
  39. package/dist/src/queue/queue.js.map +1 -1
  40. package/dist/src/queue/types.d.ts +25 -0
  41. package/dist/src/queue/types.d.ts.map +1 -1
  42. package/dist/src/queue/types.js +12 -0
  43. package/dist/src/queue/types.js.map +1 -1
  44. package/dist/src/reactor.d.ts +3 -12
  45. package/dist/src/reactor.d.ts.map +1 -1
  46. package/dist/src/reactor.js +14 -25
  47. package/dist/src/reactor.js.map +1 -1
  48. package/dist/src/registry/implementation.d.ts +62 -0
  49. package/dist/src/registry/implementation.d.ts.map +1 -0
  50. package/dist/src/registry/implementation.js +96 -0
  51. package/dist/src/registry/implementation.js.map +1 -0
  52. package/dist/src/registry/index.d.ts +3 -0
  53. package/dist/src/registry/index.d.ts.map +1 -0
  54. package/dist/src/registry/index.js +2 -0
  55. package/dist/src/registry/index.js.map +1 -0
  56. package/dist/src/registry/interfaces.d.ts +39 -0
  57. package/dist/src/registry/interfaces.d.ts.map +1 -0
  58. package/dist/src/registry/interfaces.js +2 -0
  59. package/dist/src/registry/interfaces.js.map +1 -0
  60. package/dist/src/shared/factories.d.ts +1 -1
  61. package/dist/src/shared/factories.d.ts.map +1 -1
  62. package/dist/src/utils.d.ts +2 -2
  63. package/dist/src/utils.d.ts.map +1 -1
  64. package/dist/src/utils.js +3 -1
  65. package/dist/src/utils.js.map +1 -1
  66. package/dist/test/event-bus.test.js +19 -10
  67. package/dist/test/event-bus.test.js.map +1 -1
  68. package/dist/test/executor/executor-integration.test.d.ts +2 -0
  69. package/dist/test/executor/executor-integration.test.d.ts.map +1 -0
  70. package/dist/test/executor/executor-integration.test.js +287 -0
  71. package/dist/test/executor/executor-integration.test.js.map +1 -0
  72. package/dist/test/executor/job-execution-handle.test.d.ts +2 -0
  73. package/dist/test/executor/job-execution-handle.test.d.ts.map +1 -0
  74. package/dist/test/executor/job-execution-handle.test.js +272 -0
  75. package/dist/test/executor/job-execution-handle.test.js.map +1 -0
  76. package/dist/test/executor/simple-job-executor-manager.test.d.ts +2 -0
  77. package/dist/test/executor/simple-job-executor-manager.test.d.ts.map +1 -0
  78. package/dist/test/executor/simple-job-executor-manager.test.js +132 -0
  79. package/dist/test/executor/simple-job-executor-manager.test.js.map +1 -0
  80. package/dist/test/executor/simple-job-executor.test.d.ts +2 -0
  81. package/dist/test/executor/simple-job-executor.test.d.ts.map +1 -0
  82. package/dist/test/executor/simple-job-executor.test.js +139 -0
  83. package/dist/test/executor/simple-job-executor.test.js.map +1 -0
  84. package/dist/test/factories.d.ts +123 -0
  85. package/dist/test/factories.d.ts.map +1 -0
  86. package/dist/test/factories.js +319 -0
  87. package/dist/test/factories.js.map +1 -0
  88. package/dist/test/integration/document-drive-integration.test.d.ts +2 -0
  89. package/dist/test/integration/document-drive-integration.test.d.ts.map +1 -0
  90. package/dist/test/integration/document-drive-integration.test.js +1102 -0
  91. package/dist/test/integration/document-drive-integration.test.js.map +1 -0
  92. package/dist/test/integration/reactor-read.test.d.ts.map +1 -0
  93. package/dist/test/{reactor-read.test.js → integration/reactor-read.test.js} +28 -67
  94. package/dist/test/integration/reactor-read.test.js.map +1 -0
  95. package/dist/test/queue/queue-integration.test.d.ts +2 -0
  96. package/dist/test/queue/queue-integration.test.d.ts.map +1 -0
  97. package/dist/test/queue/queue-integration.test.js +322 -0
  98. package/dist/test/queue/queue-integration.test.js.map +1 -0
  99. package/dist/test/{queue.test.d.ts.map → queue/queue.test.d.ts.map} +1 -1
  100. package/dist/test/queue/queue.test.js +770 -0
  101. package/dist/test/queue/queue.test.js.map +1 -0
  102. package/dist/test/registry/registry.test.d.ts +2 -0
  103. package/dist/test/registry/registry.test.d.ts.map +1 -0
  104. package/dist/test/registry/registry.test.js +182 -0
  105. package/dist/test/registry/registry.test.js.map +1 -0
  106. package/dist/tsconfig.tsbuildinfo +1 -1
  107. package/dist/vitest.config.d.ts +3 -0
  108. package/dist/vitest.config.d.ts.map +1 -0
  109. package/dist/vitest.config.js +11 -0
  110. package/dist/vitest.config.js.map +1 -0
  111. package/package.json +3 -3
  112. package/dist/bench/end-to-end-flow.bench.d.ts +0 -2
  113. package/dist/bench/end-to-end-flow.bench.d.ts.map +0 -1
  114. package/dist/bench/end-to-end-flow.bench.js +0 -266
  115. package/dist/bench/end-to-end-flow.bench.js.map +0 -1
  116. package/dist/src/executor/job-executor.d.ts +0 -62
  117. package/dist/src/executor/job-executor.d.ts.map +0 -1
  118. package/dist/src/executor/job-executor.js +0 -325
  119. package/dist/src/executor/job-executor.js.map +0 -1
  120. package/dist/test/job-executor.test.d.ts +0 -2
  121. package/dist/test/job-executor.test.d.ts.map +0 -1
  122. package/dist/test/job-executor.test.js +0 -587
  123. package/dist/test/job-executor.test.js.map +0 -1
  124. package/dist/test/queue.test.js +0 -407
  125. package/dist/test/queue.test.js.map +0 -1
  126. package/dist/test/reactor-read.test.d.ts.map +0 -1
  127. package/dist/test/reactor-read.test.js.map +0 -1
  128. package/dist/test/reactor-write.test.d.ts +0 -2
  129. package/dist/test/reactor-write.test.d.ts.map +0 -1
  130. package/dist/test/reactor-write.test.js +0 -232
  131. package/dist/test/reactor-write.test.js.map +0 -1
  132. /package/dist/test/{reactor-read.test.d.ts → integration/reactor-read.test.d.ts} +0 -0
  133. /package/dist/test/{queue.test.d.ts → queue/queue.test.d.ts} +0 -0
@@ -1,12 +1,21 @@
1
- import { QueueEventTypes } from "./types.js";
1
+ import { JobExecutionHandle } from "./job-execution-handle.js";
2
+ import { JobQueueState, QueueEventTypes } from "./types.js";
2
3
  /**
3
4
  * In-memory implementation of the IQueue interface.
4
5
  * Organizes jobs by documentId, scope, and branch to ensure proper ordering.
6
+ * Ensures serial execution per document by tracking executing jobs.
7
+ * Implements dependency management through queue hints.
5
8
  */
6
9
  export class InMemoryQueue {
7
10
  eventBus;
8
11
  queues = new Map();
9
- jobIndex = new Map(); // jobId -> queueKey mapping
12
+ jobIdToQueueKey = new Map();
13
+ docIdToJobId = new Map();
14
+ jobIdToDocId = new Map();
15
+ completedJobs = new Set();
16
+ jobIndex = new Map();
17
+ isBlocked = false;
18
+ onDrainedCallback;
10
19
  constructor(eventBus) {
11
20
  this.eventBus = eventBus;
12
21
  }
@@ -27,13 +36,70 @@ export class InMemoryQueue {
27
36
  }
28
37
  return queue;
29
38
  }
39
+ /**
40
+ * Check if a document has any jobs currently executing
41
+ */
42
+ isDocumentExecuting(documentId) {
43
+ const executingSet = this.docIdToJobId.get(documentId);
44
+ return executingSet ? executingSet.size > 0 : false;
45
+ }
46
+ /**
47
+ * Mark a job as executing for its document
48
+ */
49
+ markJobExecuting(job) {
50
+ let executingSet = this.docIdToJobId.get(job.documentId);
51
+ if (!executingSet) {
52
+ executingSet = new Set();
53
+ this.docIdToJobId.set(job.documentId, executingSet);
54
+ }
55
+ executingSet.add(job.id);
56
+ this.jobIdToDocId.set(job.id, job.documentId);
57
+ }
58
+ /**
59
+ * Mark a job as no longer executing for its document
60
+ */
61
+ markJobComplete(jobId, documentId) {
62
+ const executingSet = this.docIdToJobId.get(documentId);
63
+ if (executingSet) {
64
+ executingSet.delete(jobId);
65
+ if (executingSet.size === 0) {
66
+ this.docIdToJobId.delete(documentId);
67
+ }
68
+ }
69
+ this.jobIdToDocId.delete(jobId);
70
+ }
71
+ /**
72
+ * Check if all dependencies for a job have been completed
73
+ */
74
+ areDependenciesMet(job) {
75
+ if (job.queueHint.length === 0) {
76
+ return true;
77
+ }
78
+ return job.queueHint.every((depId) => this.completedJobs.has(depId));
79
+ }
80
+ /**
81
+ * Get the next job that has all its dependencies met
82
+ */
83
+ getNextJobWithMetDependencies(queue) {
84
+ for (const job of queue) {
85
+ if (this.areDependenciesMet(job)) {
86
+ return job;
87
+ }
88
+ }
89
+ return null;
90
+ }
30
91
  async enqueue(job) {
92
+ // Throw error if queue is blocked
93
+ if (this.isBlocked) {
94
+ throw new Error("Queue is blocked");
95
+ }
31
96
  const queueKey = this.createQueueKey(job.documentId, job.scope, job.branch);
32
97
  const queue = this.getQueue(queueKey);
33
98
  // Add job to the end of the queue (FIFO)
34
99
  queue.push(job);
35
- // Track job location for removal
36
- this.jobIndex.set(job.id, queueKey);
100
+ // Track job location for removal and dependency resolution
101
+ this.jobIdToQueueKey.set(job.id, queueKey);
102
+ this.jobIndex.set(job.id, job);
37
103
  // Emit job available event
38
104
  const eventData = {
39
105
  documentId: job.documentId,
@@ -43,34 +109,79 @@ export class InMemoryQueue {
43
109
  };
44
110
  await this.eventBus.emit(QueueEventTypes.JOB_AVAILABLE, eventData);
45
111
  }
46
- async dequeue(documentId, scope, branch) {
112
+ async dequeue(documentId, scope, branch, signal) {
47
113
  const queueKey = this.createQueueKey(documentId, scope, branch);
48
114
  const queue = this.queues.get(queueKey);
49
115
  if (!queue || queue.length === 0) {
50
116
  return null;
51
117
  }
52
- // Remove job from the front of the queue (FIFO)
53
- const job = queue.shift();
54
- // Remove from job index
55
- this.jobIndex.delete(job.id);
118
+ // Find the first job with met dependencies
119
+ const job = this.getNextJobWithMetDependencies(queue);
120
+ if (!job) {
121
+ return null; // No job with met dependencies
122
+ }
123
+ // Remove job from queue
124
+ const jobIndex = queue.indexOf(job);
125
+ queue.splice(jobIndex, 1);
126
+ // Remove from queue tracking but keep in job index for retry
127
+ this.jobIdToQueueKey.delete(job.id);
128
+ // Mark this job as executing for its document
129
+ this.markJobExecuting(job);
56
130
  // Clean up empty queue
57
131
  if (queue.length === 0) {
58
132
  this.queues.delete(queueKey);
59
133
  }
60
- return job;
134
+ // Create and return the execution handle
135
+ const handle = new JobExecutionHandle(job, JobQueueState.READY, {
136
+ onStart: () => {
137
+ // Job is now running
138
+ },
139
+ onComplete: () => {
140
+ this.completeJob(job.id);
141
+ },
142
+ onFail: (reason) => {
143
+ this.failJob(job.id, reason);
144
+ },
145
+ });
146
+ return handle;
61
147
  }
62
- async dequeueNext() {
63
- // Find the first non-empty queue and dequeue from it
148
+ async dequeueNext(signal) {
149
+ // Find the first non-empty queue for a document that's not currently executing
64
150
  for (const [queueKey, queue] of this.queues.entries()) {
65
151
  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);
152
+ // Find the first job with met dependencies
153
+ const job = this.getNextJobWithMetDependencies(queue);
154
+ if (!job) {
155
+ continue; // No job with met dependencies in this queue
156
+ }
157
+ // Only dequeue if the document is not currently executing jobs
158
+ if (!this.isDocumentExecuting(job.documentId)) {
159
+ // Remove job from queue
160
+ const jobIdx = queue.indexOf(job);
161
+ queue.splice(jobIdx, 1);
162
+ // Remove from queue tracking but keep in job index for retry
163
+ this.jobIdToQueueKey.delete(job.id);
164
+ // Keep job in jobIndex so we can retry it if needed
165
+ // Mark this job as executing for its document
166
+ this.markJobExecuting(job);
167
+ // Clean up empty queue
168
+ if (queue.length === 0) {
169
+ this.queues.delete(queueKey);
170
+ }
171
+ // Create and return the execution handle
172
+ const handle = new JobExecutionHandle(job, JobQueueState.READY, {
173
+ onStart: () => {
174
+ // Job is now running
175
+ },
176
+ onComplete: () => {
177
+ this.completeJob(job.id);
178
+ },
179
+ onFail: (reason) => {
180
+ this.failJob(job.id, reason);
181
+ },
182
+ });
183
+ return handle;
72
184
  }
73
- return job;
74
185
  }
75
186
  }
76
187
  return null;
@@ -88,25 +199,28 @@ export class InMemoryQueue {
88
199
  return total;
89
200
  }
90
201
  async remove(jobId) {
91
- const queueKey = this.jobIndex.get(jobId);
202
+ const queueKey = this.jobIdToQueueKey.get(jobId);
92
203
  if (!queueKey) {
93
204
  return false;
94
205
  }
95
206
  const queue = this.queues.get(queueKey);
96
207
  if (!queue) {
97
208
  // Clean up orphaned index entry
209
+ this.jobIdToQueueKey.delete(jobId);
98
210
  this.jobIndex.delete(jobId);
99
211
  return false;
100
212
  }
101
- const jobIndex = queue.findIndex((job) => job.id === jobId);
102
- if (jobIndex === -1) {
213
+ const jobIdx = queue.findIndex((job) => job.id === jobId);
214
+ if (jobIdx === -1) {
103
215
  // Clean up orphaned index entry
216
+ this.jobIdToQueueKey.delete(jobId);
104
217
  this.jobIndex.delete(jobId);
105
218
  return false;
106
219
  }
107
220
  // Remove job from queue
108
- queue.splice(jobIndex, 1);
221
+ queue.splice(jobIdx, 1);
109
222
  // Remove from job index
223
+ this.jobIdToQueueKey.delete(jobId);
110
224
  this.jobIndex.delete(jobId);
111
225
  // Clean up empty queue
112
226
  if (queue.length === 0) {
@@ -120,6 +234,7 @@ export class InMemoryQueue {
120
234
  if (queue) {
121
235
  // Remove all jobs from the job index
122
236
  for (const job of queue) {
237
+ this.jobIdToQueueKey.delete(job.id);
123
238
  this.jobIndex.delete(job.id);
124
239
  }
125
240
  // Remove the queue
@@ -128,9 +243,108 @@ export class InMemoryQueue {
128
243
  }
129
244
  async clearAll() {
130
245
  // Clear all job indices
246
+ this.jobIdToQueueKey.clear();
131
247
  this.jobIndex.clear();
248
+ this.completedJobs.clear();
132
249
  // Clear all queues
133
250
  this.queues.clear();
134
251
  }
252
+ async hasJobs() {
253
+ return (this.queues.size > 0 &&
254
+ Array.from(this.queues.values()).some((q) => q.length > 0));
255
+ }
256
+ async completeJob(jobId) {
257
+ // Get the documentId for the executing job
258
+ const documentId = this.jobIdToDocId.get(jobId);
259
+ if (documentId) {
260
+ // Mark the job as no longer executing
261
+ this.markJobComplete(jobId, documentId);
262
+ }
263
+ // Track the job as completed for dependency resolution
264
+ this.completedJobs.add(jobId);
265
+ // Remove from job index
266
+ this.jobIndex.delete(jobId);
267
+ // For in-memory queue, completing just removes the job
268
+ // In a persistent queue, this would update the job status
269
+ await this.remove(jobId);
270
+ // Check if queue is now drained
271
+ this.checkDrained();
272
+ }
273
+ async failJob(jobId, error) {
274
+ // Get the documentId for the executing job
275
+ const documentId = this.jobIdToDocId.get(jobId);
276
+ if (documentId) {
277
+ // Mark the job as no longer executing
278
+ this.markJobComplete(jobId, documentId);
279
+ }
280
+ // Remove from job index
281
+ this.jobIndex.delete(jobId);
282
+ // For in-memory queue, failing just removes the job
283
+ // In a persistent queue, this would update the job status and store the error
284
+ await this.remove(jobId);
285
+ // Check if queue is now drained
286
+ this.checkDrained();
287
+ }
288
+ async retryJob(jobId, error) {
289
+ // Get the job from the index (it might be executing, not in queue)
290
+ const job = this.jobIndex.get(jobId);
291
+ if (!job) {
292
+ return;
293
+ }
294
+ // Mark it as no longer executing if it was
295
+ const documentId = this.jobIdToDocId.get(jobId);
296
+ if (documentId) {
297
+ this.markJobComplete(jobId, documentId);
298
+ }
299
+ // Remove from indices
300
+ this.jobIndex.delete(jobId);
301
+ this.jobIdToQueueKey.delete(jobId);
302
+ // Update retry count
303
+ const updatedJob = {
304
+ ...job,
305
+ retryCount: (job.retryCount || 0) + 1,
306
+ lastError: error,
307
+ };
308
+ // Re-enqueue with updated retry count
309
+ await this.enqueue(updatedJob);
310
+ }
311
+ /**
312
+ * Check if the queue is drained and call the callback if it is
313
+ */
314
+ checkDrained() {
315
+ if (this.isDrained && this.onDrainedCallback) {
316
+ const callback = this.onDrainedCallback;
317
+ this.onDrainedCallback = undefined;
318
+ callback();
319
+ }
320
+ }
321
+ /**
322
+ * Returns true if and only if all jobs have been resolved.
323
+ */
324
+ get isDrained() {
325
+ // Queue is drained if there are no pending jobs and no executing jobs
326
+ const hasPendingJobs = this.queues.size > 0 &&
327
+ Array.from(this.queues.values()).some((q) => q.length > 0);
328
+ const hasExecutingJobs = this.docIdToJobId.size > 0 &&
329
+ Array.from(this.docIdToJobId.values()).some((set) => set.size > 0);
330
+ return !hasPendingJobs && !hasExecutingJobs;
331
+ }
332
+ /**
333
+ * Blocks the queue from accepting new jobs.
334
+ * @param onDrained - Optional callback to call when the queue is drained
335
+ */
336
+ block(onDrained) {
337
+ this.isBlocked = true;
338
+ this.onDrainedCallback = onDrained;
339
+ // Check if already drained
340
+ this.checkDrained();
341
+ }
342
+ /**
343
+ * Unblocks the queue from accepting new jobs.
344
+ */
345
+ unblock() {
346
+ this.isBlocked = false;
347
+ this.onDrainedCallback = undefined;
348
+ }
135
349
  }
136
350
  //# 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,25 @@
1
1
  import type { Operation } from "document-model";
2
+ /**
3
+ * State of a job in the queue
4
+ */
5
+ export declare enum JobQueueState {
6
+ UNKNOWN = -1,
7
+ PREPROCESSING = 0,
8
+ PENDING = 1,
9
+ READY = 2,
10
+ RUNNING = 3,
11
+ RESOLVED = 4
12
+ }
13
+ /**
14
+ * Interface for a job execution handle
15
+ */
16
+ export interface IJobExecutionHandle {
17
+ readonly job: Job;
18
+ readonly state: JobQueueState;
19
+ start(): void;
20
+ complete(): void;
21
+ fail(reason: string): void;
22
+ }
2
23
  /**
3
24
  * Represents a job to be executed by the job executor
4
25
  */
@@ -15,10 +36,14 @@ export type Job = {
15
36
  operation: Operation;
16
37
  /** Timestamp when the job was created */
17
38
  createdAt: string;
39
+ /** The hint for the queue to use for ordering the job */
40
+ queueHint: string[];
18
41
  /** Number of retry attempts */
19
42
  retryCount?: number;
20
43
  /** Maximum number of retries allowed */
21
44
  maxRetries?: number;
45
+ /** Last error message if job failed */
46
+ lastError?: string;
22
47
  };
23
48
  /**
24
49
  * 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,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"}
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,oBAAY,aAAa;IACvB,OAAO,KAAK;IACZ,aAAa,IAAI;IACjB,OAAO,IAAI;IACX,KAAK,IAAI;IACT,OAAO,IAAI;IACX,QAAQ,IAAI;CACb;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAE9B,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,IAAI,IAAI,CAAC;IACjB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;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,3 +1,15 @@
1
+ /**
2
+ * State of a job in the queue
3
+ */
4
+ export var JobQueueState;
5
+ (function (JobQueueState) {
6
+ JobQueueState[JobQueueState["UNKNOWN"] = -1] = "UNKNOWN";
7
+ JobQueueState[JobQueueState["PREPROCESSING"] = 0] = "PREPROCESSING";
8
+ JobQueueState[JobQueueState["PENDING"] = 1] = "PENDING";
9
+ JobQueueState[JobQueueState["READY"] = 2] = "READY";
10
+ JobQueueState[JobQueueState["RUNNING"] = 3] = "RUNNING";
11
+ JobQueueState[JobQueueState["RESOLVED"] = 4] = "RESOLVED";
12
+ })(JobQueueState || (JobQueueState = {}));
1
13
  /**
2
14
  * Event types for the queue system
3
15
  */
@@ -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":"AAEA;;GAEG;AACH,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,wDAAY,CAAA;IACZ,mEAAiB,CAAA;IACjB,uDAAW,CAAA;IACX,mDAAS,CAAA;IACT,uDAAW,CAAA;IACX,yDAAY,CAAA;AACd,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAiDD;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,aAAa,EAAE,KAAK;CACZ,CAAC"}
@@ -1,11 +1,10 @@
1
1
  import type { BaseDocumentDriveServer } from "document-drive";
2
2
  import type { IDocumentStorage } from "document-drive/storage/types";
3
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
4
  import type { IReactor } from "./interfaces/reactor.js";
7
5
  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";
6
+ import type { JobInfo, PagedResults, PagingOptions, PropagationMode, SearchFilter, ShutdownStatus, ViewFilter } from "./shared/types.js";
7
+ import { JobStatus } from "./shared/types.js";
9
8
  /**
10
9
  * The Reactor facade implementation.
11
10
  *
@@ -25,11 +24,8 @@ export declare class Reactor implements IReactor {
25
24
  private documentStorage;
26
25
  private shutdownStatus;
27
26
  private setShutdown;
28
- private eventBus;
29
27
  private queue;
30
- private jobExecutor;
31
- private jobExecutorStarted;
32
- constructor(driveServer: BaseDocumentDriveServer, documentStorage: IDocumentStorage, eventBus: IEventBus, queue: IQueue, jobExecutor: IJobExecutor);
28
+ constructor(driveServer: BaseDocumentDriveServer, documentStorage: IDocumentStorage, queue: IQueue);
33
29
  /**
34
30
  * Signals that the reactor should shutdown.
35
31
  */
@@ -84,11 +80,6 @@ export declare class Reactor implements IReactor {
84
80
  * Retrieves the status of a job
85
81
  */
86
82
  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
83
  /**
93
84
  * Finds documents by their IDs
94
85
  */
@@ -1 +1 @@
1
- {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../src/reactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../src/reactor.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { AbortError } from "document-drive/utils/errors";
2
2
  import { v4 as uuidv4 } from "uuid";
3
3
  import { createMutableShutdownStatus } from "./shared/factories.js";
4
- import { JobStatus, } from "./shared/types.js";
4
+ import { JobStatus } from "./shared/types.js";
5
5
  import { matchesScope } from "./shared/utils.js";
6
6
  import { filterByParentId, filterByType } from "./utils.js";
7
7
  /**
@@ -23,17 +23,12 @@ export class Reactor {
23
23
  documentStorage;
24
24
  shutdownStatus;
25
25
  setShutdown;
26
- eventBus;
27
26
  queue;
28
- jobExecutor;
29
- jobExecutorStarted = false;
30
- constructor(driveServer, documentStorage, eventBus, queue, jobExecutor) {
27
+ constructor(driveServer, documentStorage, queue) {
31
28
  // Store required dependencies
32
29
  this.driveServer = driveServer;
33
30
  this.documentStorage = documentStorage;
34
- this.eventBus = eventBus;
35
31
  this.queue = queue;
36
- this.jobExecutor = jobExecutor;
37
32
  // Create mutable shutdown status using factory method
38
33
  const [status, setter] = createMutableShutdownStatus(false);
39
34
  this.shutdownStatus = status;
@@ -105,6 +100,7 @@ export class Reactor {
105
100
  // to the underlying store, but is here now for the interface.
106
101
  for (const scope in document.state) {
107
102
  if (!matchesScope(view, scope)) {
103
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
108
104
  delete document.state[scope];
109
105
  }
110
106
  }
@@ -258,8 +254,6 @@ export class Reactor {
258
254
  * Applies a list of actions to a document
259
255
  */
260
256
  async mutate(id, actions) {
261
- // Ensure the job executor is running
262
- await this.ensureJobExecutorRunning();
263
257
  // Create jobs for each action/operation
264
258
  const jobs = actions.map((action, index) => ({
265
259
  id: uuidv4(),
@@ -274,6 +268,7 @@ export class Reactor {
274
268
  action: action,
275
269
  },
276
270
  createdAt: new Date().toISOString(),
271
+ queueHint: [],
277
272
  maxRetries: 3,
278
273
  }));
279
274
  // Enqueue all jobs
@@ -373,27 +368,17 @@ export class Reactor {
373
368
  /**
374
369
  * Retrieves the status of a job
375
370
  */
376
- async getJobStatus(jobId, signal) {
371
+ getJobStatus(jobId, signal) {
372
+ if (signal?.aborted) {
373
+ throw new AbortError();
374
+ }
377
375
  // TODO: Phase 3 - Implement once IQueue and job tracking is in place
378
376
  // For now, return a not found status
379
- return {
377
+ return Promise.resolve({
380
378
  id: jobId,
381
379
  status: JobStatus.FAILED,
382
380
  error: "Job tracking not yet implemented",
383
- };
384
- }
385
- /**
386
- * Starts the job executor if not already running.
387
- * Called automatically when the first job is enqueued.
388
- */
389
- async ensureJobExecutorRunning() {
390
- if (!this.jobExecutorStarted) {
391
- await this.jobExecutor.start({
392
- maxConcurrency: 5,
393
- jobTimeout: 30000,
394
- });
395
- this.jobExecutorStarted = true;
396
- }
381
+ });
397
382
  }
398
383
  /**
399
384
  * Finds documents by their IDs
@@ -418,6 +403,7 @@ export class Reactor {
418
403
  // to the underlying store, but is here now for the interface.
419
404
  for (const scope in document.state) {
420
405
  if (!matchesScope(view, scope)) {
406
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
421
407
  delete document.state[scope];
422
408
  }
423
409
  }
@@ -474,6 +460,7 @@ export class Reactor {
474
460
  // to the underlying store, but is here now for the interface.
475
461
  for (const scope in document.state) {
476
462
  if (!matchesScope(view, scope)) {
463
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
477
464
  delete document.state[scope];
478
465
  }
479
466
  }
@@ -527,6 +514,7 @@ export class Reactor {
527
514
  // to the underlying store, but is here now for the interface.
528
515
  for (const scope in document.state) {
529
516
  if (!matchesScope(view, scope)) {
517
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
530
518
  delete document.state[scope];
531
519
  }
532
520
  }
@@ -580,6 +568,7 @@ export class Reactor {
580
568
  // Apply view filter
581
569
  for (const scope in document.state) {
582
570
  if (!matchesScope(view, scope)) {
571
+ // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
583
572
  delete document.state[scope];
584
573
  }
585
574
  }