@powerhousedao/reactor 4.1.0-staging.1 → 5.0.0-staging.10
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/event-bus.bench.js +17 -27
- 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 +42 -35
- package/dist/bench/reactor-throughput.bench.js.map +1 -1
- package/dist/src/events/event-bus.d.ts +3 -3
- package/dist/src/events/event-bus.d.ts.map +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 +45 -5
- package/dist/src/queue/interfaces.d.ts.map +1 -1
- package/dist/src/queue/job-execution-handle.d.ts +24 -0
- package/dist/src/queue/job-execution-handle.d.ts.map +1 -0
- package/dist/src/queue/job-execution-handle.js +62 -0
- package/dist/src/queue/job-execution-handle.js.map +1 -0
- package/dist/src/queue/queue.d.ts +54 -5
- package/dist/src/queue/queue.d.ts.map +1 -1
- package/dist/src/queue/queue.js +237 -23
- package/dist/src/queue/queue.js.map +1 -1
- package/dist/src/queue/types.d.ts +26 -1
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js +12 -0
- package/dist/src/queue/types.js.map +1 -1
- package/dist/src/reactor.d.ts +100 -0
- package/dist/src/reactor.d.ts.map +1 -0
- package/dist/src/reactor.js +591 -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 +31 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/test/event-bus.test.js +19 -10
- package/dist/test/event-bus.test.js.map +1 -1
- package/dist/test/executor/executor-integration.test.d.ts +2 -0
- package/dist/test/executor/executor-integration.test.d.ts.map +1 -0
- package/dist/test/executor/executor-integration.test.js +287 -0
- package/dist/test/executor/executor-integration.test.js.map +1 -0
- package/dist/test/executor/job-execution-handle.test.d.ts +2 -0
- package/dist/test/executor/job-execution-handle.test.d.ts.map +1 -0
- package/dist/test/executor/job-execution-handle.test.js +272 -0
- package/dist/test/executor/job-execution-handle.test.js.map +1 -0
- package/dist/test/executor/simple-job-executor-manager.test.d.ts +2 -0
- package/dist/test/executor/simple-job-executor-manager.test.d.ts.map +1 -0
- package/dist/test/executor/simple-job-executor-manager.test.js +132 -0
- package/dist/test/executor/simple-job-executor-manager.test.js.map +1 -0
- package/dist/test/executor/simple-job-executor.test.d.ts +2 -0
- package/dist/test/executor/simple-job-executor.test.d.ts.map +1 -0
- package/dist/test/executor/simple-job-executor.test.js +139 -0
- package/dist/test/executor/simple-job-executor.test.js.map +1 -0
- package/dist/test/factories.d.ts +123 -0
- package/dist/test/factories.d.ts.map +1 -0
- package/dist/test/factories.js +319 -0
- package/dist/test/factories.js.map +1 -0
- package/dist/test/integration/document-drive-integration.test.d.ts +2 -0
- package/dist/test/integration/document-drive-integration.test.d.ts.map +1 -0
- package/dist/test/integration/document-drive-integration.test.js +1102 -0
- package/dist/test/integration/document-drive-integration.test.js.map +1 -0
- package/dist/test/integration/reactor-read.test.d.ts +2 -0
- package/dist/test/integration/reactor-read.test.d.ts.map +1 -0
- package/dist/test/integration/reactor-read.test.js +291 -0
- package/dist/test/integration/reactor-read.test.js.map +1 -0
- package/dist/test/queue/queue-integration.test.d.ts +2 -0
- package/dist/test/queue/queue-integration.test.d.ts.map +1 -0
- package/dist/test/queue/queue-integration.test.js +322 -0
- package/dist/test/queue/queue-integration.test.js.map +1 -0
- package/dist/test/{queue.test.d.ts.map → queue/queue.test.d.ts.map} +1 -1
- package/dist/test/queue/queue.test.js +770 -0
- package/dist/test/queue/queue.test.js.map +1 -0
- package/dist/test/registry/registry.test.d.ts +2 -0
- package/dist/test/registry/registry.test.d.ts.map +1 -0
- package/dist/test/registry/registry.test.js +182 -0
- package/dist/test/registry/registry.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/bench/end-to-end-flow.bench.d.ts +0 -2
- package/dist/bench/end-to-end-flow.bench.d.ts.map +0 -1
- package/dist/bench/end-to-end-flow.bench.js +0 -256
- package/dist/bench/end-to-end-flow.bench.js.map +0 -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/test/queue.test.js +0 -396
- package/dist/test/queue.test.js.map +0 -1
- /package/dist/test/{queue.test.d.ts → queue/queue.test.d.ts} +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { JobQueueState } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Implementation of the IJobExecutionHandle interface
|
|
4
|
+
*/
|
|
5
|
+
export class JobExecutionHandle {
|
|
6
|
+
_state;
|
|
7
|
+
_job;
|
|
8
|
+
onStart;
|
|
9
|
+
onComplete;
|
|
10
|
+
onFail;
|
|
11
|
+
getStateName(state) {
|
|
12
|
+
switch (state) {
|
|
13
|
+
case JobQueueState.PREPROCESSING:
|
|
14
|
+
return "PREPROCESSING";
|
|
15
|
+
case JobQueueState.PENDING:
|
|
16
|
+
return "PENDING";
|
|
17
|
+
case JobQueueState.READY:
|
|
18
|
+
return "READY";
|
|
19
|
+
case JobQueueState.RUNNING:
|
|
20
|
+
return "RUNNING";
|
|
21
|
+
case JobQueueState.RESOLVED:
|
|
22
|
+
return "RESOLVED";
|
|
23
|
+
default:
|
|
24
|
+
return `UNKNOWN`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
constructor(job, initialState, callbacks) {
|
|
28
|
+
this._job = job;
|
|
29
|
+
this._state = initialState;
|
|
30
|
+
this.onStart = callbacks?.onStart;
|
|
31
|
+
this.onComplete = callbacks?.onComplete;
|
|
32
|
+
this.onFail = callbacks?.onFail;
|
|
33
|
+
}
|
|
34
|
+
get job() {
|
|
35
|
+
return this._job;
|
|
36
|
+
}
|
|
37
|
+
get state() {
|
|
38
|
+
return this._state;
|
|
39
|
+
}
|
|
40
|
+
start() {
|
|
41
|
+
if (this._state !== JobQueueState.READY) {
|
|
42
|
+
throw new Error(`Cannot start job in state ${this.getStateName(this._state)}`);
|
|
43
|
+
}
|
|
44
|
+
this._state = JobQueueState.RUNNING;
|
|
45
|
+
this.onStart?.();
|
|
46
|
+
}
|
|
47
|
+
complete() {
|
|
48
|
+
if (this._state !== JobQueueState.RUNNING) {
|
|
49
|
+
throw new Error(`Cannot complete job in state ${this.getStateName(this._state)}`);
|
|
50
|
+
}
|
|
51
|
+
this._state = JobQueueState.RESOLVED;
|
|
52
|
+
this.onComplete?.();
|
|
53
|
+
}
|
|
54
|
+
fail(reason) {
|
|
55
|
+
if (this._state !== JobQueueState.RUNNING) {
|
|
56
|
+
throw new Error(`Cannot fail job in state ${this.getStateName(this._state)}`);
|
|
57
|
+
}
|
|
58
|
+
this._state = JobQueueState.RESOLVED;
|
|
59
|
+
this.onFail?.(reason);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=job-execution-handle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-execution-handle.js","sourceRoot":"","sources":["../../../src/queue/job-execution-handle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAgB;IACtB,IAAI,CAAM;IACV,OAAO,CAAc;IACrB,UAAU,CAAc;IACxB,MAAM,CAA4B;IAElC,YAAY,CAAC,KAAoB;QACvC,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,aAAa,CAAC,aAAa;gBAC9B,OAAO,eAAe,CAAC;YACzB,KAAK,aAAa,CAAC,OAAO;gBACxB,OAAO,SAAS,CAAC;YACnB,KAAK,aAAa,CAAC,KAAK;gBACtB,OAAO,OAAO,CAAC;YACjB,KAAK,aAAa,CAAC,OAAO;gBACxB,OAAO,SAAS,CAAC;YACnB,KAAK,aAAa,CAAC,QAAQ;gBACzB,OAAO,UAAU,CAAC;YACpB;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAED,YACE,GAAQ,EACR,YAA2B,EAC3B,SAIC;QAED,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,SAAS,EAAE,OAAO,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,SAAS,EAAE,UAAU,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC;IAClC,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC9D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CACjE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC7D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import { IEventBus } from "../events/interfaces.js";
|
|
2
|
-
import { IQueue } from "./interfaces.js";
|
|
3
|
-
import { Job } from "./types.js";
|
|
1
|
+
import type { IEventBus } from "../events/interfaces.js";
|
|
2
|
+
import type { IQueue } from "./interfaces.js";
|
|
3
|
+
import type { IJobExecutionHandle, Job } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* In-memory implementation of the IQueue interface.
|
|
6
6
|
* Organizes jobs by documentId, scope, and branch to ensure proper ordering.
|
|
7
|
+
* Ensures serial execution per document by tracking executing jobs.
|
|
8
|
+
* Implements dependency management through queue hints.
|
|
7
9
|
*/
|
|
8
10
|
export declare class InMemoryQueue implements IQueue {
|
|
9
11
|
private eventBus;
|
|
10
12
|
private queues;
|
|
13
|
+
private jobIdToQueueKey;
|
|
14
|
+
private docIdToJobId;
|
|
15
|
+
private jobIdToDocId;
|
|
16
|
+
private completedJobs;
|
|
11
17
|
private jobIndex;
|
|
18
|
+
private isBlocked;
|
|
19
|
+
private onDrainedCallback?;
|
|
12
20
|
constructor(eventBus: IEventBus);
|
|
13
21
|
/**
|
|
14
22
|
* Creates a unique key for a document/scope/branch combination
|
|
@@ -18,13 +26,54 @@ export declare class InMemoryQueue implements IQueue {
|
|
|
18
26
|
* Gets or creates a queue for the given key
|
|
19
27
|
*/
|
|
20
28
|
private getQueue;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a document has any jobs currently executing
|
|
31
|
+
*/
|
|
32
|
+
private isDocumentExecuting;
|
|
33
|
+
/**
|
|
34
|
+
* Mark a job as executing for its document
|
|
35
|
+
*/
|
|
36
|
+
private markJobExecuting;
|
|
37
|
+
/**
|
|
38
|
+
* Mark a job as no longer executing for its document
|
|
39
|
+
*/
|
|
40
|
+
private markJobComplete;
|
|
41
|
+
/**
|
|
42
|
+
* Check if all dependencies for a job have been completed
|
|
43
|
+
*/
|
|
44
|
+
private areDependenciesMet;
|
|
45
|
+
/**
|
|
46
|
+
* Get the next job that has all its dependencies met
|
|
47
|
+
*/
|
|
48
|
+
private getNextJobWithMetDependencies;
|
|
21
49
|
enqueue(job: Job): Promise<void>;
|
|
22
|
-
dequeue(documentId: string, scope: string, branch: string): Promise<
|
|
23
|
-
dequeueNext(): Promise<
|
|
50
|
+
dequeue(documentId: string, scope: string, branch: string, signal?: AbortSignal): Promise<IJobExecutionHandle | null>;
|
|
51
|
+
dequeueNext(signal?: AbortSignal): Promise<IJobExecutionHandle | null>;
|
|
24
52
|
size(documentId: string, scope: string, branch: string): Promise<number>;
|
|
25
53
|
totalSize(): Promise<number>;
|
|
26
54
|
remove(jobId: string): Promise<boolean>;
|
|
27
55
|
clear(documentId: string, scope: string, branch: string): Promise<void>;
|
|
28
56
|
clearAll(): Promise<void>;
|
|
57
|
+
hasJobs(): Promise<boolean>;
|
|
58
|
+
completeJob(jobId: string): Promise<void>;
|
|
59
|
+
failJob(jobId: string, error?: string): Promise<void>;
|
|
60
|
+
retryJob(jobId: string, error?: string): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Check if the queue is drained and call the callback if it is
|
|
63
|
+
*/
|
|
64
|
+
private checkDrained;
|
|
65
|
+
/**
|
|
66
|
+
* Returns true if and only if all jobs have been resolved.
|
|
67
|
+
*/
|
|
68
|
+
get isDrained(): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Blocks the queue from accepting new jobs.
|
|
71
|
+
* @param onDrained - Optional callback to call when the queue is drained
|
|
72
|
+
*/
|
|
73
|
+
block(onDrained?: () => void): void;
|
|
74
|
+
/**
|
|
75
|
+
* Unblocks the queue from accepting new jobs.
|
|
76
|
+
*/
|
|
77
|
+
unblock(): void;
|
|
29
78
|
}
|
|
30
79
|
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAqB,MAAM,YAAY,CAAC;AAG9E;;;;;GAKG;AACH,qBAAa,aAAc,YAAW,MAAM;IAU9B,OAAO,CAAC,QAAQ;IAT5B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAAC,CAAa;gBAEnB,QAAQ,EAAE,SAAS;IAEvC;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAS/B,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhC,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IA6ChC,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAiDtE,IAAI,CACR,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IAMZ,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAQ5B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqCvC,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAgBV,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAUzB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAO3B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B5D;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAUvB;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAQnC;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|
package/dist/src/queue/queue.js
CHANGED
|
@@ -1,12 +1,21 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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.
|
|
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
|
-
//
|
|
53
|
-
const job =
|
|
54
|
-
|
|
55
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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.
|
|
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
|
|
102
|
-
if (
|
|
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(
|
|
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
|
-
import { Operation } from "
|
|
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,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,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"}
|
package/dist/src/queue/types.js
CHANGED
|
@@ -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":"
|
|
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"}
|