@powerhousedao/reactor 5.0.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 +1 -0
- package/dist/bench/queue-only.bench.js.map +1 -1
- package/dist/bench/reactor-throughput.bench.js +42 -45
- 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 +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/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 +5 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +1 -1
- 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 +25 -0
- 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 +3 -12
- package/dist/src/reactor.d.ts.map +1 -1
- package/dist/src/reactor.js +14 -25
- package/dist/src/reactor.js.map +1 -1
- 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 +1 -1
- package/dist/src/shared/factories.d.ts.map +1 -1
- package/dist/src/utils.d.ts +2 -2
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +3 -1
- package/dist/src/utils.js.map +1 -1
- 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.map +1 -0
- package/dist/test/{reactor-read.test.js → integration/reactor-read.test.js} +28 -67
- 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/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 +3 -3
- 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 -266
- 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 -587
- package/dist/test/job-executor.test.js.map +0 -1
- package/dist/test/queue.test.js +0 -407
- package/dist/test/queue.test.js.map +0 -1
- package/dist/test/reactor-read.test.d.ts.map +0 -1
- package/dist/test/reactor-read.test.js.map +0 -1
- package/dist/test/reactor-write.test.d.ts +0 -2
- package/dist/test/reactor-write.test.d.ts.map +0 -1
- package/dist/test/reactor-write.test.js +0 -232
- package/dist/test/reactor-write.test.js.map +0 -1
- /package/dist/test/{reactor-read.test.d.ts → integration/reactor-read.test.d.ts} +0 -0
- /package/dist/test/{queue.test.d.ts → queue/queue.test.d.ts} +0 -0
|
@@ -9,38 +9,30 @@ const TEST_DATA = { message: "test event", timestampUtcMs: Date.now() };
|
|
|
9
9
|
/**
|
|
10
10
|
* Creates a synchronous subscriber that performs minimal work
|
|
11
11
|
*/
|
|
12
|
-
function createSyncSubscriber(
|
|
13
|
-
return (
|
|
14
|
-
//
|
|
15
|
-
const result = data.timestampUtcMs + id.length;
|
|
16
|
-
return result;
|
|
12
|
+
function createSyncSubscriber() {
|
|
13
|
+
return () => {
|
|
14
|
+
//
|
|
17
15
|
};
|
|
18
16
|
}
|
|
19
17
|
/**
|
|
20
18
|
* Creates an asynchronous subscriber with configurable delay
|
|
21
19
|
*/
|
|
22
|
-
function createAsyncSubscriber(
|
|
23
|
-
return async (
|
|
20
|
+
function createAsyncSubscriber(delayMs = 0) {
|
|
21
|
+
return async () => {
|
|
24
22
|
// Simulate async work
|
|
25
23
|
if (delayMs > 0) {
|
|
26
24
|
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
27
25
|
}
|
|
28
|
-
return data.timestampUtcMs + id.length;
|
|
29
26
|
};
|
|
30
27
|
}
|
|
31
28
|
/**
|
|
32
29
|
* Creates a subscriber that randomly decides to be sync or async
|
|
33
30
|
*/
|
|
34
|
-
function createMixedSubscriber(
|
|
35
|
-
return async (
|
|
31
|
+
function createMixedSubscriber(asyncProbability = 0.5) {
|
|
32
|
+
return async () => {
|
|
36
33
|
if (Math.random() < asyncProbability) {
|
|
37
34
|
// Async path with minimal delay
|
|
38
35
|
await new Promise((resolve) => setImmediate(resolve));
|
|
39
|
-
return data.timestampUtcMs + id.length;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
// Sync path
|
|
43
|
-
return data.timestampUtcMs + id.length;
|
|
44
36
|
}
|
|
45
37
|
};
|
|
46
38
|
}
|
|
@@ -50,7 +42,7 @@ function createMixedSubscriber(id, asyncProbability = 0.5) {
|
|
|
50
42
|
function setupSyncEventBus(subscriberCount) {
|
|
51
43
|
const eventBus = new EventBus();
|
|
52
44
|
for (let i = 0; i < subscriberCount; i++) {
|
|
53
|
-
eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber(
|
|
45
|
+
eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber());
|
|
54
46
|
}
|
|
55
47
|
return eventBus;
|
|
56
48
|
}
|
|
@@ -60,7 +52,7 @@ function setupSyncEventBus(subscriberCount) {
|
|
|
60
52
|
function setupAsyncEventBus(subscriberCount, delayMs = 0) {
|
|
61
53
|
const eventBus = new EventBus();
|
|
62
54
|
for (let i = 0; i < subscriberCount; i++) {
|
|
63
|
-
eventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncSubscriber(
|
|
55
|
+
eventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncSubscriber(delayMs));
|
|
64
56
|
}
|
|
65
57
|
return eventBus;
|
|
66
58
|
}
|
|
@@ -70,7 +62,7 @@ function setupAsyncEventBus(subscriberCount, delayMs = 0) {
|
|
|
70
62
|
function setupMixedEventBus(subscriberCount, asyncProbability = 0.5) {
|
|
71
63
|
const eventBus = new EventBus();
|
|
72
64
|
for (let i = 0; i < subscriberCount; i++) {
|
|
73
|
-
eventBus.subscribe(EVENT_TYPE_MIXED, createMixedSubscriber(
|
|
65
|
+
eventBus.subscribe(EVENT_TYPE_MIXED, createMixedSubscriber(asyncProbability));
|
|
74
66
|
}
|
|
75
67
|
return eventBus;
|
|
76
68
|
}
|
|
@@ -167,14 +159,14 @@ describe("EventBus Mixed Sync/Async Emission Throughput", () => {
|
|
|
167
159
|
describe("EventBus Subscription Management Performance", () => {
|
|
168
160
|
bench("Subscribe and unsubscribe (single)", () => {
|
|
169
161
|
const eventBus = new EventBus();
|
|
170
|
-
const unsubscribe = eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber(
|
|
162
|
+
const unsubscribe = eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber());
|
|
171
163
|
unsubscribe();
|
|
172
164
|
}, { time: 500 });
|
|
173
165
|
bench("Subscribe and unsubscribe (batch of 10)", () => {
|
|
174
166
|
const eventBus = new EventBus();
|
|
175
167
|
const unsubscribes = [];
|
|
176
168
|
for (let i = 0; i < 10; i++) {
|
|
177
|
-
unsubscribes.push(eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber(
|
|
169
|
+
unsubscribes.push(eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber()));
|
|
178
170
|
}
|
|
179
171
|
for (const unsubscribe of unsubscribes) {
|
|
180
172
|
unsubscribe();
|
|
@@ -184,7 +176,7 @@ describe("EventBus Subscription Management Performance", () => {
|
|
|
184
176
|
const eventBus = new EventBus();
|
|
185
177
|
const unsubscribes = [];
|
|
186
178
|
for (let i = 0; i < 100; i++) {
|
|
187
|
-
unsubscribes.push(eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber(
|
|
179
|
+
unsubscribes.push(eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber()));
|
|
188
180
|
}
|
|
189
181
|
for (const unsubscribe of unsubscribes) {
|
|
190
182
|
unsubscribe();
|
|
@@ -193,20 +185,18 @@ describe("EventBus Subscription Management Performance", () => {
|
|
|
193
185
|
});
|
|
194
186
|
describe("EventBus Error Handling Performance", () => {
|
|
195
187
|
function createErrorSubscriber(shouldError) {
|
|
196
|
-
return (
|
|
188
|
+
return () => {
|
|
197
189
|
if (shouldError) {
|
|
198
190
|
throw new Error("Test error");
|
|
199
191
|
}
|
|
200
|
-
return data.timestampUtcMs;
|
|
201
192
|
};
|
|
202
193
|
}
|
|
203
194
|
function createAsyncErrorSubscriber(shouldError) {
|
|
204
|
-
return async (
|
|
195
|
+
return async () => {
|
|
205
196
|
await new Promise((resolve) => setTimeout(resolve, 1));
|
|
206
197
|
if (shouldError) {
|
|
207
198
|
throw new Error("Test async error");
|
|
208
199
|
}
|
|
209
|
-
return data.timestampUtcMs;
|
|
210
200
|
};
|
|
211
201
|
}
|
|
212
202
|
// Test error aggregation performance
|
|
@@ -222,7 +212,7 @@ describe("EventBus Error Handling Performance", () => {
|
|
|
222
212
|
try {
|
|
223
213
|
await errorEventBus.emit(EVENT_TYPE_SYNC, TEST_DATA);
|
|
224
214
|
}
|
|
225
|
-
catch
|
|
215
|
+
catch {
|
|
226
216
|
// Expected error
|
|
227
217
|
}
|
|
228
218
|
}, { time: 500 });
|
|
@@ -230,7 +220,7 @@ describe("EventBus Error Handling Performance", () => {
|
|
|
230
220
|
try {
|
|
231
221
|
await asyncErrorEventBus.emit(EVENT_TYPE_ASYNC, TEST_DATA);
|
|
232
222
|
}
|
|
233
|
-
catch
|
|
223
|
+
catch {
|
|
234
224
|
// Expected error
|
|
235
225
|
}
|
|
236
226
|
}, { time: 500 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.bench.js","sourceRoot":"","sources":["../../bench/event-bus.bench.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,0BAA0B;AAC1B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,YAAY;AACZ,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAExE;;GAEG;AACH,SAAS,oBAAoB
|
|
1
|
+
{"version":3,"file":"event-bus.bench.js","sourceRoot":"","sources":["../../bench/event-bus.bench.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-only.bench.js","sourceRoot":"","sources":["../../bench/queue-only.bench.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,gDAAgD;AAChD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;AAE1C,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,SAAS,gBAAgB;IACvB,OAAO;QACL,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;QACzB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,MAAM;QACd,SAAS,EAAE;YACT,MAAM,EAAE;gBACN,EAAE,EAAE,UAAU,UAAU,EAAE;gBAC1B,IAAI,EAAE,QAAQ;gBACd,cAAc,EAAE,0BAA0B;gBAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACvB,KAAK,EAAE,SAAS;aACjB;YACD,KAAK,EAAE,CAAC;YACR,cAAc,EAAE,0BAA0B;YAC1C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,CAAC;SACR;QACD,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,0BAA0B;
|
|
1
|
+
{"version":3,"file":"queue-only.bench.js","sourceRoot":"","sources":["../../bench/queue-only.bench.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,gDAAgD;AAChD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAChC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;AAE1C,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,SAAS,gBAAgB;IACvB,OAAO;QACL,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;QACzB,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,MAAM;QACd,SAAS,EAAE;YACT,MAAM,EAAE;gBACN,EAAE,EAAE,UAAU,UAAU,EAAE;gBAC1B,IAAI,EAAE,QAAQ;gBACd,cAAc,EAAE,0BAA0B;gBAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACvB,KAAK,EAAE,SAAS;aACjB;YACD,KAAK,EAAE,CAAC;YACR,cAAc,EAAE,0BAA0B;YAC1C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,CAAC;SACR;QACD,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,0BAA0B;QACrC,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,KAAK,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC/B,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,64 +1,66 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MemoryStorage } from "document-drive";
|
|
2
|
+
import { documentModelDocumentModelModule } from "document-model";
|
|
3
|
+
import { beforeAll, bench, describe } from "vitest";
|
|
2
4
|
import { EventBus } from "../src/events/event-bus.js";
|
|
3
|
-
import {
|
|
5
|
+
import { SimpleJobExecutor } from "../src/executor/simple-job-executor.js";
|
|
4
6
|
import { InMemoryQueue } from "../src/queue/queue.js";
|
|
7
|
+
import { DocumentModelRegistry } from "../src/registry/implementation.js";
|
|
8
|
+
import { createDocumentModelAction, createTestOperation, } from "../test/factories.js";
|
|
5
9
|
// Pre-create shared components to avoid setup overhead
|
|
6
10
|
const eventBus = new EventBus();
|
|
7
11
|
const queue = new InMemoryQueue(eventBus);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
// Create registry with real document model
|
|
13
|
+
const registry = new DocumentModelRegistry();
|
|
14
|
+
registry.registerModules(documentModelDocumentModelModule);
|
|
15
|
+
// Use real storage
|
|
16
|
+
const storage = new MemoryStorage();
|
|
17
|
+
// Create real executor with real storage
|
|
18
|
+
const executor = new SimpleJobExecutor(registry, storage, storage);
|
|
19
|
+
// Pre-create a document for benchmarks
|
|
20
|
+
const testDocument = documentModelDocumentModelModule.utils.createDocument();
|
|
21
|
+
testDocument.header.id = "doc1";
|
|
11
22
|
let jobCounter = 0;
|
|
12
23
|
function createSimpleJob() {
|
|
24
|
+
const action = createDocumentModelAction("SET_NAME", {
|
|
25
|
+
input: { name: `Test Name ${++jobCounter}` },
|
|
26
|
+
});
|
|
27
|
+
const operation = createTestOperation({ action });
|
|
13
28
|
return {
|
|
14
|
-
id: `job-${
|
|
29
|
+
id: `job-${jobCounter}`,
|
|
15
30
|
documentId: "doc1",
|
|
16
|
-
scope: "
|
|
31
|
+
scope: "global",
|
|
17
32
|
branch: "main",
|
|
18
|
-
operation
|
|
19
|
-
action: {
|
|
20
|
-
id: `action-${jobCounter}`,
|
|
21
|
-
type: "CREATE",
|
|
22
|
-
timestampUtcMs: "2023-01-01T00:00:00.000Z",
|
|
23
|
-
input: { data: "simple data" },
|
|
24
|
-
scope: "default",
|
|
25
|
-
},
|
|
26
|
-
index: 0,
|
|
27
|
-
timestampUtcMs: "2023-01-01T00:00:00.000Z",
|
|
28
|
-
hash: "hash-123",
|
|
29
|
-
skip: 0,
|
|
30
|
-
},
|
|
33
|
+
operation,
|
|
31
34
|
maxRetries: 0,
|
|
32
|
-
createdAt:
|
|
35
|
+
createdAt: new Date().toISOString(),
|
|
36
|
+
queueHint: [],
|
|
33
37
|
};
|
|
34
38
|
}
|
|
35
39
|
function createComplexJob() {
|
|
40
|
+
const action = createDocumentModelAction("SET_DESCRIPTION", {
|
|
41
|
+
input: {
|
|
42
|
+
description: Array.from({ length: 100 }, (_, i) => `Description line ${i}`).join("\n"),
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
const operation = createTestOperation({
|
|
46
|
+
action,
|
|
47
|
+
index: Math.floor(Math.random() * 1000),
|
|
48
|
+
});
|
|
36
49
|
return {
|
|
37
50
|
id: `job-${++jobCounter}`,
|
|
38
51
|
documentId: "doc1",
|
|
39
|
-
scope: "
|
|
52
|
+
scope: "global",
|
|
40
53
|
branch: "main",
|
|
41
|
-
operation
|
|
42
|
-
action: {
|
|
43
|
-
id: `action-${jobCounter}`,
|
|
44
|
-
type: "UPDATE",
|
|
45
|
-
timestampUtcMs: "2023-01-01T00:00:00.000Z",
|
|
46
|
-
input: {
|
|
47
|
-
data: Array.from({ length: 100 }, (_, i) => `item ${i}`),
|
|
48
|
-
metadata: { timestampUtcMs: Date.now(), user: "test" },
|
|
49
|
-
},
|
|
50
|
-
scope: "default",
|
|
51
|
-
},
|
|
52
|
-
index: Math.floor(Math.random() * 1000),
|
|
53
|
-
timestampUtcMs: "2023-01-01T00:00:00.000Z",
|
|
54
|
-
hash: "hash-456",
|
|
55
|
-
skip: 0,
|
|
56
|
-
},
|
|
54
|
+
operation,
|
|
57
55
|
maxRetries: 0,
|
|
58
|
-
createdAt:
|
|
56
|
+
createdAt: new Date().toISOString(),
|
|
57
|
+
queueHint: [],
|
|
59
58
|
};
|
|
60
59
|
}
|
|
61
60
|
describe("Queue Throughput", () => {
|
|
61
|
+
beforeAll(async () => {
|
|
62
|
+
await storage.create(testDocument);
|
|
63
|
+
});
|
|
62
64
|
bench("enqueue simple job", async () => {
|
|
63
65
|
const job = createSimpleJob();
|
|
64
66
|
await queue.enqueue(job);
|
|
@@ -91,12 +93,7 @@ describe("Job Executor Throughput", () => {
|
|
|
91
93
|
const job = createComplexJob();
|
|
92
94
|
await executor.executeJob(job);
|
|
93
95
|
});
|
|
94
|
-
|
|
95
|
-
await executor.getStatus();
|
|
96
|
-
});
|
|
97
|
-
bench("executor stats check", async () => {
|
|
98
|
-
await executor.getStats();
|
|
99
|
-
});
|
|
96
|
+
// Status and stats checks are now on the manager, not individual executors
|
|
100
97
|
});
|
|
101
98
|
describe("End-to-End Throughput", () => {
|
|
102
99
|
bench("enqueue with event emission", async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactor-throughput.bench.js","sourceRoot":"","sources":["../../bench/reactor-throughput.bench.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"reactor-throughput.bench.js","sourceRoot":"","sources":["../../bench/reactor-throughput.bench.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { IEventBus } from "./interfaces.js";
|
|
2
|
+
import type { Subscriber, Unsubscribe } from "./types.js";
|
|
3
3
|
export declare class EventBus implements IEventBus {
|
|
4
|
-
|
|
4
|
+
readonly eventTypeToSubscribers: Map<number, Subscriber[]>;
|
|
5
5
|
subscribe<K>(type: number, subscriber: (type: number, event: K) => void | Promise<void>): Unsubscribe;
|
|
6
6
|
emit(type: number, data: any): Promise<void>;
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../../src/events/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../../src/events/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,QAAS,YAAW,SAAS;IACxC,SAAgB,sBAAsB,4BAAmC;IAEzE,SAAS,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC3D,WAAW;IA8BR,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAwBnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/events/event-bus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/events/event-bus.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,OAAO,QAAQ;IACH,sBAAsB,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEzE,SAAS,CACP,IAAY,EACZ,UAA4D;QAE5D,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAC;YACV,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAwB,CAAC,CAAC;QAEpC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,OAAO,GAAG,EAAE;YACV,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YACD,IAAI,GAAG,IAAI,CAAC;YAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;YACT,CAAC;YAED,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAwB,CAAC,CAAC;YAClD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAS;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,kFAAkF;QAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QAE9B,2DAA2D;QAC3D,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/events/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/events/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;;OAQG;IACH,SAAS,CAAC,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC3D,WAAW,CAAC;IAEf;;;;;;;;OAQG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C"}
|
|
@@ -1,72 +1,49 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { Job } from "../queue/types.js";
|
|
2
|
+
import type { ExecutorManagerStatus, JobResult } from "./types.js";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Simple interface for executing a job.
|
|
5
|
+
* A JobExecutor simply takes a job and executes it - nothing more.
|
|
6
6
|
*/
|
|
7
7
|
export interface IJobExecutor {
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
10
|
-
* Begins listening for 'jobAvailable' events from the event bus and executing jobs when capacity allows.
|
|
11
|
-
*
|
|
12
|
-
* @param config - Configuration options for the executor
|
|
13
|
-
* @returns Promise that resolves when the executor is started
|
|
14
|
-
*/
|
|
15
|
-
start(config?: JobExecutorConfig): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Stop the job executor.
|
|
18
|
-
* Gracefully stops listening for events and waits for current jobs to complete.
|
|
19
|
-
* @param graceful - Whether to wait for current jobs to complete
|
|
20
|
-
* @returns Promise that resolves when the executor is stopped
|
|
21
|
-
*/
|
|
22
|
-
stop(graceful?: boolean): Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Execute a single job immediately.
|
|
9
|
+
* Execute a single job.
|
|
25
10
|
* @param job - The job to execute
|
|
26
11
|
* @returns Promise that resolves to the job result
|
|
27
12
|
*/
|
|
28
13
|
executeJob(job: Job): Promise<JobResult>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Interface for managing multiple job executors.
|
|
17
|
+
* Listens for 'jobAvailable' events from the event bus, pulls jobs from the queue,
|
|
18
|
+
* and coordinates the distribution of jobs across multiple executor instances.
|
|
19
|
+
*/
|
|
20
|
+
export interface IJobExecutorManager {
|
|
29
21
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
activeJobs: number;
|
|
36
|
-
totalJobsProcessed: number;
|
|
37
|
-
totalJobsSucceeded: number;
|
|
38
|
-
totalJobsFailed: number;
|
|
39
|
-
lastJobCompletedAt?: string;
|
|
40
|
-
uptime?: number;
|
|
41
|
-
}>;
|
|
42
|
-
/**
|
|
43
|
-
* Get statistics about job execution performance.
|
|
44
|
-
* @returns Promise that resolves to execution statistics
|
|
22
|
+
* Start the executor manager.
|
|
23
|
+
* Begins listening for 'jobAvailable' events and dispatching to executors.
|
|
24
|
+
*
|
|
25
|
+
* @param numExecutors - Number of executor instances to create
|
|
26
|
+
* @returns Promise that resolves when the manager is started
|
|
45
27
|
*/
|
|
46
|
-
|
|
47
|
-
averageExecutionTime: number;
|
|
48
|
-
successRate: number;
|
|
49
|
-
jobsPerSecond: number;
|
|
50
|
-
queueBacklog: number;
|
|
51
|
-
}>;
|
|
28
|
+
start(numExecutors: number): Promise<void>;
|
|
52
29
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* @
|
|
30
|
+
* Stop the executor manager.
|
|
31
|
+
*
|
|
32
|
+
* @param graceful - Whether to wait for current jobs to complete
|
|
33
|
+
* @returns Promise that resolves when the manager is stopped
|
|
56
34
|
*/
|
|
57
|
-
|
|
35
|
+
stop(graceful?: boolean): Promise<void>;
|
|
58
36
|
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* @returns
|
|
37
|
+
* Get all managed executor instances.
|
|
38
|
+
*
|
|
39
|
+
* @returns Array of executor instances
|
|
62
40
|
*/
|
|
63
|
-
|
|
41
|
+
getExecutors(): IJobExecutor[];
|
|
64
42
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* @
|
|
68
|
-
* @returns Function to unsubscribe from the event
|
|
43
|
+
* Get the current status of the manager.
|
|
44
|
+
*
|
|
45
|
+
* @returns The current manager status
|
|
69
46
|
*/
|
|
70
|
-
|
|
47
|
+
getStatus(): ExecutorManagerStatus;
|
|
71
48
|
}
|
|
72
49
|
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/executor/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/executor/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExC;;;;OAIG;IACH,YAAY,IAAI,YAAY,EAAE,CAAC;IAE/B;;;;OAIG;IACH,SAAS,IAAI,qBAAqB,CAAC;CACpC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { IEventBus } from "../events/interfaces.js";
|
|
2
|
+
import type { IQueue } from "../queue/interfaces.js";
|
|
3
|
+
import type { IJobExecutor, IJobExecutorManager } from "./interfaces.js";
|
|
4
|
+
import type { ExecutorManagerStatus } from "./types.js";
|
|
5
|
+
export type JobExecutorFactory = () => IJobExecutor;
|
|
6
|
+
/**
|
|
7
|
+
* Manages multiple job executors and coordinates job distribution.
|
|
8
|
+
* Listens for job available events and dispatches jobs to executors.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SimpleJobExecutorManager implements IJobExecutorManager {
|
|
11
|
+
private executorFactory;
|
|
12
|
+
private eventBus;
|
|
13
|
+
private queue;
|
|
14
|
+
private executors;
|
|
15
|
+
private isRunning;
|
|
16
|
+
private activeJobs;
|
|
17
|
+
private totalJobsProcessed;
|
|
18
|
+
private unsubscribe?;
|
|
19
|
+
constructor(executorFactory: JobExecutorFactory, eventBus: IEventBus, queue: IQueue);
|
|
20
|
+
start(numExecutors: number): Promise<void>;
|
|
21
|
+
stop(graceful?: boolean): Promise<void>;
|
|
22
|
+
getExecutors(): IJobExecutor[];
|
|
23
|
+
getStatus(): ExecutorManagerStatus;
|
|
24
|
+
private processNextJob;
|
|
25
|
+
private processExistingJobs;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=simple-job-executor-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-job-executor-manager.d.ts","sourceRoot":"","sources":["../../../src/executor/simple-job-executor-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,mBAAmB;IAQhE,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;IATf,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAa;gBAGvB,eAAe,EAAE,kBAAkB,EACnC,QAAQ,EAAE,SAAS,EACnB,KAAK,EAAE,MAAM;IAGjB,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC1C,IAAI,CAAC,QAAQ,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB1C,YAAY,IAAI,YAAY,EAAE;IAI9B,SAAS,IAAI,qBAAqB;YASpB,cAAc;YA+Cd,mBAAmB;CAWlC"}
|