@powerhousedao/reactor 5.0.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 (93) hide show
  1. package/dist/bench/end-to-end-flow.bench.js +45 -27
  2. package/dist/bench/end-to-end-flow.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 +27 -10
  6. package/dist/bench/reactor-throughput.bench.js.map +1 -1
  7. package/dist/src/executor/interfaces.d.ts +30 -53
  8. package/dist/src/executor/interfaces.d.ts.map +1 -1
  9. package/dist/src/executor/simple-job-executor-manager.d.ts +27 -0
  10. package/dist/src/executor/simple-job-executor-manager.d.ts.map +1 -0
  11. package/dist/src/executor/simple-job-executor-manager.js +128 -0
  12. package/dist/src/executor/simple-job-executor-manager.js.map +1 -0
  13. package/dist/src/executor/simple-job-executor.d.ts +19 -0
  14. package/dist/src/executor/simple-job-executor.d.ts.map +1 -0
  15. package/dist/src/executor/simple-job-executor.js +69 -0
  16. package/dist/src/executor/simple-job-executor.js.map +1 -0
  17. package/dist/src/executor/types.d.ts +22 -7
  18. package/dist/src/executor/types.d.ts.map +1 -1
  19. package/dist/src/executor/types.js.map +1 -1
  20. package/dist/src/index.d.ts +5 -1
  21. package/dist/src/index.d.ts.map +1 -1
  22. package/dist/src/index.js +5 -2
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/queue/interfaces.d.ts +25 -0
  25. package/dist/src/queue/interfaces.d.ts.map +1 -1
  26. package/dist/src/queue/queue.d.ts +30 -0
  27. package/dist/src/queue/queue.d.ts.map +1 -1
  28. package/dist/src/queue/queue.js +164 -17
  29. package/dist/src/queue/queue.js.map +1 -1
  30. package/dist/src/queue/types.d.ts +4 -0
  31. package/dist/src/queue/types.d.ts.map +1 -1
  32. package/dist/src/queue/types.js.map +1 -1
  33. package/dist/src/reactor.d.ts.map +1 -1
  34. package/dist/src/reactor.js +4 -4
  35. package/dist/src/reactor.js.map +1 -1
  36. package/dist/src/registry/implementation.d.ts +62 -0
  37. package/dist/src/registry/implementation.d.ts.map +1 -0
  38. package/dist/src/registry/implementation.js +96 -0
  39. package/dist/src/registry/implementation.js.map +1 -0
  40. package/dist/src/registry/index.d.ts +3 -0
  41. package/dist/src/registry/index.d.ts.map +1 -0
  42. package/dist/src/registry/index.js +2 -0
  43. package/dist/src/registry/index.js.map +1 -0
  44. package/dist/src/registry/interfaces.d.ts +39 -0
  45. package/dist/src/registry/interfaces.d.ts.map +1 -0
  46. package/dist/src/registry/interfaces.js +2 -0
  47. package/dist/src/registry/interfaces.js.map +1 -0
  48. package/dist/test/executor-integration.test.d.ts +2 -0
  49. package/dist/test/executor-integration.test.d.ts.map +1 -0
  50. package/dist/test/executor-integration.test.js +290 -0
  51. package/dist/test/executor-integration.test.js.map +1 -0
  52. package/dist/test/factories.d.ts +131 -0
  53. package/dist/test/factories.d.ts.map +1 -0
  54. package/dist/test/factories.js +347 -0
  55. package/dist/test/factories.js.map +1 -0
  56. package/dist/test/queue.test.js +212 -32
  57. package/dist/test/queue.test.js.map +1 -1
  58. package/dist/test/reactor-queue.test.d.ts +2 -0
  59. package/dist/test/reactor-queue.test.d.ts.map +1 -0
  60. package/dist/test/reactor-queue.test.js +328 -0
  61. package/dist/test/reactor-queue.test.js.map +1 -0
  62. package/dist/test/reactor-read.test.js +28 -3
  63. package/dist/test/reactor-read.test.js.map +1 -1
  64. package/dist/test/registry.test.d.ts +2 -0
  65. package/dist/test/registry.test.d.ts.map +1 -0
  66. package/dist/test/registry.test.js +182 -0
  67. package/dist/test/registry.test.js.map +1 -0
  68. package/dist/test/simple-job-executor-manager.test.d.ts +2 -0
  69. package/dist/test/simple-job-executor-manager.test.d.ts.map +1 -0
  70. package/dist/test/simple-job-executor-manager.test.js +132 -0
  71. package/dist/test/simple-job-executor-manager.test.js.map +1 -0
  72. package/dist/test/simple-job-executor.test.d.ts +2 -0
  73. package/dist/test/simple-job-executor.test.d.ts.map +1 -0
  74. package/dist/test/simple-job-executor.test.js +139 -0
  75. package/dist/test/simple-job-executor.test.js.map +1 -0
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/dist/vitest.config.d.ts +3 -0
  78. package/dist/vitest.config.d.ts.map +1 -0
  79. package/dist/vitest.config.js +11 -0
  80. package/dist/vitest.config.js.map +1 -0
  81. package/package.json +3 -3
  82. package/dist/src/executor/job-executor.d.ts +0 -62
  83. package/dist/src/executor/job-executor.d.ts.map +0 -1
  84. package/dist/src/executor/job-executor.js +0 -325
  85. package/dist/src/executor/job-executor.js.map +0 -1
  86. package/dist/test/job-executor.test.d.ts +0 -2
  87. package/dist/test/job-executor.test.d.ts.map +0 -1
  88. package/dist/test/job-executor.test.js +0 -587
  89. package/dist/test/job-executor.test.js.map +0 -1
  90. package/dist/test/reactor-write.test.d.ts +0 -2
  91. package/dist/test/reactor-write.test.d.ts.map +0 -1
  92. package/dist/test/reactor-write.test.js +0 -232
  93. package/dist/test/reactor-write.test.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
3
+ //# sourceMappingURL=vitest.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":";AAEA,wBAQG"}
@@ -0,0 +1,11 @@
1
+ import { defineConfig } from "vitest/config";
2
+ export default defineConfig({
3
+ test: {
4
+ include: ["test/**/*.test.ts"],
5
+ globals: true,
6
+ alias: {
7
+ "#": new URL("./src/", import.meta.url).pathname,
8
+ },
9
+ },
10
+ });
11
+ //# sourceMappingURL=vitest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,mBAAmB,CAAC;QAC9B,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ;SACjD;KACF;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/reactor",
3
- "version": "5.0.0-staging.1",
3
+ "version": "5.0.0-staging.2",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "url": "https://github.com/powerhouse-inc/powerhouse",
@@ -25,8 +25,8 @@
25
25
  "license": "AGPL-3.0-only",
26
26
  "dependencies": {
27
27
  "uuid": "^11.0.5",
28
- "document-drive": "5.0.0-staging.1",
29
- "document-model": "5.0.0-staging.1"
28
+ "document-drive": "5.0.0-staging.2",
29
+ "document-model": "5.0.0-staging.2"
30
30
  },
31
31
  "devDependencies": {
32
32
  "typescript": "^5.7.3",
@@ -1,62 +0,0 @@
1
- import { type IEventBus } from "../events/interfaces.js";
2
- import { type IQueue } from "../queue/interfaces.js";
3
- import { type Job } from "../queue/types.js";
4
- import { type IJobExecutor } from "./interfaces.js";
5
- import { type JobExecutorConfig, type JobResult } from "./types.js";
6
- /**
7
- * In-memory implementation of the IJobExecutor interface.
8
- * Listens for job available events and executes jobs with concurrency control and retry logic.
9
- */
10
- export declare class InMemoryJobExecutor implements IJobExecutor {
11
- private eventBus;
12
- private queue;
13
- private isRunning;
14
- private isPaused;
15
- private config;
16
- private activeJobs;
17
- private jobAvailableUnsubscribe?;
18
- private startedAt?;
19
- private totalJobsProcessed;
20
- private totalJobsSucceeded;
21
- private totalJobsFailed;
22
- private lastJobCompletedAt?;
23
- private executionTimes;
24
- private jobPromises;
25
- private abortControllers;
26
- constructor(eventBus: IEventBus, queue: IQueue);
27
- start(config?: JobExecutorConfig): Promise<void>;
28
- stop(graceful?: boolean): Promise<void>;
29
- executeJob(job: Job): Promise<JobResult>;
30
- getStatus(): Promise<{
31
- isRunning: boolean;
32
- activeJobs: number;
33
- totalJobsProcessed: number;
34
- totalJobsSucceeded: number;
35
- totalJobsFailed: number;
36
- lastJobCompletedAt: string | undefined;
37
- uptime: number | undefined;
38
- }>;
39
- getStats(): Promise<{
40
- averageExecutionTime: number;
41
- successRate: number;
42
- jobsPerSecond: number;
43
- queueBacklog: number;
44
- }>;
45
- pause(): Promise<void>;
46
- resume(): Promise<void>;
47
- on(event: "jobStarted" | "jobCompleted" | "jobFailed" | "executorStarted" | "executorStopped", handler: (data: any) => void): () => void;
48
- private getEventType;
49
- private handleJobAvailable;
50
- private processAvailableJobs;
51
- private executeJobWithRetry;
52
- private executeJobInternal;
53
- private executeJobWithTimeout;
54
- private performJobExecution;
55
- private shouldRetryJob;
56
- private calculateRetryDelay;
57
- private sleep;
58
- }
59
- export type { IJobExecutor } from "./interfaces.js";
60
- export { JobExecutorEventTypes } from "./types.js";
61
- export type { ExecutorStartedEvent, ExecutorStoppedEvent, JobCompletedEvent, JobExecutorConfig, JobFailedEvent, JobResult, JobStartedEvent, } from "./types.js";
62
- //# sourceMappingURL=job-executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job-executor.d.ts","sourceRoot":"","sources":["../../../src/executor/job-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAEL,KAAK,GAAG,EAET,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAKL,KAAK,iBAAiB,EAEtB,KAAK,SAAS,EAEf,MAAM,YAAY,CAAC;AAYpB;;;GAGG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IAoBpD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IApBf,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,uBAAuB,CAAC,CAAa;IAC7C,OAAO,CAAC,SAAS,CAAC,CAAO;IAGzB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,cAAc,CAAgB;IAGtC,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,gBAAgB,CAAsC;gBAGpD,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,MAAM;IAGjB,KAAK,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhD,IAAI,CAAC,QAAQ,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCpC,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAIxC,SAAS;;;;;;;;;IAgBT,QAAQ;;;;;;IA2BR,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B,EAAE,CACA,KAAK,EACD,YAAY,GACZ,cAAc,GACd,WAAW,GACX,iBAAiB,GACjB,iBAAiB,EACrB,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAC3B,MAAM,IAAI;IAKb,OAAO,CAAC,YAAY;YAiBN,kBAAkB;YAWlB,oBAAoB;YAyBpB,mBAAmB;YAwBnB,kBAAkB;YA0FlB,qBAAqB;YA4BrB,mBAAmB;IA8BjC,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,KAAK;CAGd;AAGD,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,eAAe,GAChB,MAAM,YAAY,CAAC"}
@@ -1,325 +0,0 @@
1
- import { QueueEventTypes, } from "../queue/types.js";
2
- import { JobExecutorEventTypes, } from "./types.js";
3
- /**
4
- * Default configuration for the job executor
5
- */
6
- const DEFAULT_CONFIG = {
7
- maxConcurrency: 5,
8
- jobTimeout: 30000, // 30 seconds
9
- retryBaseDelay: 1000, // 1 second
10
- retryMaxDelay: 30000, // 30 seconds
11
- };
12
- /**
13
- * In-memory implementation of the IJobExecutor interface.
14
- * Listens for job available events and executes jobs with concurrency control and retry logic.
15
- */
16
- export class InMemoryJobExecutor {
17
- eventBus;
18
- queue;
19
- isRunning = false;
20
- isPaused = false;
21
- config = DEFAULT_CONFIG;
22
- activeJobs = new Set();
23
- jobAvailableUnsubscribe;
24
- startedAt;
25
- // Statistics
26
- totalJobsProcessed = 0;
27
- totalJobsSucceeded = 0;
28
- totalJobsFailed = 0;
29
- lastJobCompletedAt;
30
- executionTimes = [];
31
- // Job execution tracking
32
- jobPromises = new Map();
33
- abortControllers = new Map();
34
- constructor(eventBus, queue) {
35
- this.eventBus = eventBus;
36
- this.queue = queue;
37
- }
38
- async start(config) {
39
- if (this.isRunning) {
40
- throw new Error("Job executor is already running");
41
- }
42
- this.config = { ...DEFAULT_CONFIG, ...config };
43
- this.isRunning = true;
44
- this.isPaused = false;
45
- this.startedAt = new Date();
46
- // Subscribe to job available events
47
- this.jobAvailableUnsubscribe = this.eventBus.subscribe(QueueEventTypes.JOB_AVAILABLE, this.handleJobAvailable.bind(this));
48
- // Emit executor started event
49
- const startedEvent = {
50
- config: this.config,
51
- startedAt: this.startedAt.toISOString(),
52
- };
53
- await this.eventBus.emit(JobExecutorEventTypes.EXECUTOR_STARTED, startedEvent);
54
- // Check for existing jobs in the queue
55
- await this.processAvailableJobs();
56
- }
57
- async stop(graceful = true) {
58
- if (!this.isRunning) {
59
- return;
60
- }
61
- this.isRunning = false;
62
- // Unsubscribe from job available events
63
- if (this.jobAvailableUnsubscribe) {
64
- this.jobAvailableUnsubscribe();
65
- this.jobAvailableUnsubscribe = undefined;
66
- }
67
- if (graceful) {
68
- // Wait for all active jobs to complete
69
- await Promise.allSettled(Array.from(this.jobPromises.values()));
70
- }
71
- else {
72
- // Abort all active jobs
73
- for (const controller of this.abortControllers.values()) {
74
- controller.abort();
75
- }
76
- }
77
- // Clean up
78
- this.activeJobs.clear();
79
- this.jobPromises.clear();
80
- this.abortControllers.clear();
81
- // Emit executor stopped event
82
- const stoppedEvent = {
83
- stoppedAt: new Date().toISOString(),
84
- graceful,
85
- };
86
- await this.eventBus.emit(JobExecutorEventTypes.EXECUTOR_STOPPED, stoppedEvent);
87
- }
88
- async executeJob(job) {
89
- return this.executeJobInternal(job);
90
- }
91
- async getStatus() {
92
- const uptime = this.startedAt
93
- ? Date.now() - this.startedAt.getTime()
94
- : undefined;
95
- return {
96
- isRunning: this.isRunning,
97
- activeJobs: this.activeJobs.size,
98
- totalJobsProcessed: this.totalJobsProcessed,
99
- totalJobsSucceeded: this.totalJobsSucceeded,
100
- totalJobsFailed: this.totalJobsFailed,
101
- lastJobCompletedAt: this.lastJobCompletedAt,
102
- uptime,
103
- };
104
- }
105
- async getStats() {
106
- const averageExecutionTime = this.executionTimes.length > 0
107
- ? this.executionTimes.reduce((sum, time) => sum + time, 0) /
108
- this.executionTimes.length
109
- : 0;
110
- const successRate = this.totalJobsProcessed > 0
111
- ? this.totalJobsSucceeded / this.totalJobsProcessed
112
- : 0;
113
- const uptime = this.startedAt
114
- ? (Date.now() - this.startedAt.getTime()) / 1000
115
- : 0;
116
- const jobsPerSecond = uptime > 0 ? this.totalJobsProcessed / uptime : 0;
117
- const queueBacklog = await this.queue.totalSize();
118
- return {
119
- averageExecutionTime,
120
- successRate,
121
- jobsPerSecond,
122
- queueBacklog,
123
- };
124
- }
125
- async pause() {
126
- this.isPaused = true;
127
- }
128
- async resume() {
129
- this.isPaused = false;
130
- // Process any available jobs
131
- await this.processAvailableJobs();
132
- }
133
- on(event, handler) {
134
- const eventType = this.getEventType(event);
135
- return this.eventBus.subscribe(eventType, (_, data) => handler(data));
136
- }
137
- getEventType(event) {
138
- switch (event) {
139
- case "jobStarted":
140
- return JobExecutorEventTypes.JOB_STARTED;
141
- case "jobCompleted":
142
- return JobExecutorEventTypes.JOB_COMPLETED;
143
- case "jobFailed":
144
- return JobExecutorEventTypes.JOB_FAILED;
145
- case "executorStarted":
146
- return JobExecutorEventTypes.EXECUTOR_STARTED;
147
- case "executorStopped":
148
- return JobExecutorEventTypes.EXECUTOR_STOPPED;
149
- default:
150
- throw new Error(`Unknown event type: ${event}`);
151
- }
152
- }
153
- async handleJobAvailable(_, event) {
154
- if (!this.isRunning || this.isPaused) {
155
- return;
156
- }
157
- await this.processAvailableJobs();
158
- }
159
- async processAvailableJobs() {
160
- if (!this.isRunning || this.isPaused) {
161
- return;
162
- }
163
- // Check if we have capacity for more jobs
164
- while (this.activeJobs.size < this.config.maxConcurrency) {
165
- const job = await this.queue.dequeueNext();
166
- if (!job) {
167
- break; // No more jobs available
168
- }
169
- // Start executing the job (don't await - run concurrently)
170
- const jobPromise = this.executeJobWithRetry(job);
171
- this.jobPromises.set(job.id, jobPromise);
172
- // Handle job completion asynchronously
173
- jobPromise.finally(() => {
174
- this.jobPromises.delete(job.id);
175
- // Try to process more jobs when this one completes
176
- void this.processAvailableJobs().catch(console.error);
177
- });
178
- }
179
- }
180
- async executeJobWithRetry(job) {
181
- let lastResult;
182
- do {
183
- lastResult = await this.executeJobInternal(job);
184
- if (lastResult.success) {
185
- return lastResult;
186
- }
187
- // Check if we should retry before incrementing
188
- if (!this.shouldRetryJob(job)) {
189
- return lastResult;
190
- }
191
- // Increment retry count after deciding to retry
192
- job.retryCount = (job.retryCount || 0) + 1;
193
- // Wait before retrying
194
- const delay = this.calculateRetryDelay(job.retryCount);
195
- await this.sleep(delay);
196
- } while (true); // We'll break out when shouldRetryJob returns false
197
- }
198
- async executeJobInternal(job) {
199
- const startTime = Date.now();
200
- const abortController = new AbortController();
201
- try {
202
- // Track the job
203
- this.activeJobs.add(job.id);
204
- this.abortControllers.set(job.id, abortController);
205
- // Emit job started event
206
- const startedEvent = {
207
- job,
208
- startedAt: new Date().toISOString(),
209
- };
210
- await this.eventBus.emit(JobExecutorEventTypes.JOB_STARTED, startedEvent);
211
- // Execute the job with timeout
212
- const result = await this.executeJobWithTimeout(job, abortController.signal);
213
- const endTime = Date.now();
214
- const duration = endTime - startTime;
215
- // Update statistics
216
- this.totalJobsProcessed++;
217
- this.totalJobsSucceeded++;
218
- this.lastJobCompletedAt = new Date().toISOString();
219
- this.executionTimes.push(duration);
220
- // Keep only last 1000 execution times for average calculation
221
- if (this.executionTimes.length > 1000) {
222
- this.executionTimes = this.executionTimes.slice(-1000);
223
- }
224
- const jobResult = {
225
- job,
226
- success: true,
227
- completedAt: this.lastJobCompletedAt,
228
- duration,
229
- metadata: result.metadata,
230
- };
231
- // Emit job completed event
232
- const completedEvent = {
233
- job,
234
- result: jobResult,
235
- };
236
- await this.eventBus.emit(JobExecutorEventTypes.JOB_COMPLETED, completedEvent);
237
- return jobResult;
238
- }
239
- catch (error) {
240
- const endTime = Date.now();
241
- const duration = endTime - startTime;
242
- const errorMessage = error instanceof Error ? error.message : String(error);
243
- // Update statistics
244
- this.totalJobsProcessed++;
245
- this.totalJobsFailed++;
246
- const jobResult = {
247
- job,
248
- success: false,
249
- error: errorMessage,
250
- completedAt: new Date().toISOString(),
251
- duration,
252
- };
253
- // Emit job failed event
254
- const failedEvent = {
255
- job,
256
- error: errorMessage,
257
- willRetry: this.shouldRetryJob(job),
258
- retryCount: job.retryCount || 0,
259
- };
260
- await this.eventBus.emit(JobExecutorEventTypes.JOB_FAILED, failedEvent);
261
- return jobResult;
262
- }
263
- finally {
264
- // Clean up
265
- this.activeJobs.delete(job.id);
266
- this.abortControllers.delete(job.id);
267
- }
268
- }
269
- async executeJobWithTimeout(job, signal) {
270
- // Create a timeout promise
271
- const timeoutPromise = new Promise((_, reject) => {
272
- const timeout = setTimeout(() => {
273
- reject(new Error(`Job ${job.id} timed out after ${this.config.jobTimeout}ms`));
274
- }, this.config.jobTimeout);
275
- // Clear timeout if aborted
276
- signal.addEventListener("abort", () => {
277
- clearTimeout(timeout);
278
- reject(new Error(`Job ${job.id} was aborted`));
279
- });
280
- });
281
- // Create the actual job execution promise
282
- const jobPromise = this.performJobExecution(job, signal);
283
- // Race between job execution and timeout
284
- return Promise.race([jobPromise, timeoutPromise]);
285
- }
286
- async performJobExecution(job, signal) {
287
- // This is where the actual job execution logic would go
288
- // For now, we'll simulate job execution
289
- // Check if aborted
290
- if (signal.aborted) {
291
- throw new Error("Job was aborted");
292
- }
293
- // Simulate some work
294
- await this.sleep(Math.random() * 100 + 50); // 50-150ms (reduced for faster tests)
295
- // Check if aborted again
296
- if (signal.aborted) {
297
- throw new Error("Job was aborted");
298
- }
299
- // Always succeed unless explicitly mocked in tests
300
- return {
301
- metadata: {
302
- operationType: job.operation.action.type,
303
- documentId: job.documentId,
304
- executedAt: new Date().toISOString(),
305
- },
306
- };
307
- }
308
- shouldRetryJob(job) {
309
- const retryCount = job.retryCount || 0;
310
- const maxRetries = job.maxRetries || 3;
311
- return retryCount < maxRetries;
312
- }
313
- calculateRetryDelay(retryCount) {
314
- // Exponential backoff with jitter
315
- const exponentialDelay = this.config.retryBaseDelay * Math.pow(2, retryCount - 1);
316
- const jitter = Math.random() * 0.1 * exponentialDelay; // 10% jitter
317
- const delay = Math.min(exponentialDelay + jitter, this.config.retryMaxDelay);
318
- return Math.floor(delay);
319
- }
320
- sleep(ms) {
321
- return new Promise((resolve) => setTimeout(resolve, ms));
322
- }
323
- }
324
- export { JobExecutorEventTypes } from "./types.js";
325
- //# sourceMappingURL=job-executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job-executor.js","sourceRoot":"","sources":["../../../src/executor/job-executor.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=job-executor.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"job-executor.test.d.ts","sourceRoot":"","sources":["../../test/job-executor.test.ts"],"names":[],"mappings":""}