@powerhousedao/reactor 4.1.0-dev.50 → 4.1.0-dev.52

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 (111) hide show
  1. package/dist/src/events/event-bus.d.ts +2 -2
  2. package/dist/src/events/event-bus.d.ts.map +1 -1
  3. package/dist/src/events/event-bus.js +1 -1
  4. package/dist/src/events/event-bus.js.map +1 -1
  5. package/dist/src/events/interfaces.d.ts +1 -1
  6. package/dist/src/events/interfaces.d.ts.map +1 -1
  7. package/dist/src/executor/interfaces.d.ts +2 -2
  8. package/dist/src/executor/interfaces.d.ts.map +1 -1
  9. package/dist/src/executor/types.d.ts +1 -1
  10. package/dist/src/executor/types.d.ts.map +1 -1
  11. package/dist/src/index.d.ts +3 -0
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +2 -0
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/interfaces/reactor-client.d.ts +191 -0
  16. package/dist/src/interfaces/reactor-client.d.ts.map +1 -0
  17. package/dist/src/interfaces/reactor-client.js +2 -0
  18. package/dist/src/interfaces/reactor-client.js.map +1 -0
  19. package/dist/src/interfaces/reactor.d.ts +2 -2
  20. package/dist/src/interfaces/reactor.d.ts.map +1 -1
  21. package/dist/src/queue/interfaces.d.ts +1 -1
  22. package/dist/src/queue/interfaces.d.ts.map +1 -1
  23. package/dist/src/queue/job-execution-handle.d.ts +2 -1
  24. package/dist/src/queue/job-execution-handle.d.ts.map +1 -1
  25. package/dist/src/queue/job-execution-handle.js.map +1 -1
  26. package/dist/src/queue/queue.d.ts +3 -3
  27. package/dist/src/queue/queue.d.ts.map +1 -1
  28. package/dist/src/queue/queue.js +44 -29
  29. package/dist/src/queue/queue.js.map +1 -1
  30. package/dist/src/reactor-client.d.ts +142 -0
  31. package/dist/src/reactor-client.d.ts.map +1 -0
  32. package/dist/src/reactor-client.js +202 -0
  33. package/dist/src/reactor-client.js.map +1 -0
  34. package/dist/src/reactor.d.ts +3 -13
  35. package/dist/src/reactor.d.ts.map +1 -1
  36. package/dist/src/reactor.js +10 -23
  37. package/dist/src/reactor.js.map +1 -1
  38. package/dist/src/shared/awaiter.d.ts +32 -0
  39. package/dist/src/shared/awaiter.d.ts.map +1 -0
  40. package/dist/src/shared/awaiter.js +132 -0
  41. package/dist/src/shared/awaiter.js.map +1 -0
  42. package/dist/src/shared/factories.d.ts +1 -1
  43. package/dist/src/shared/factories.d.ts.map +1 -1
  44. package/dist/src/utils.d.ts +2 -2
  45. package/dist/src/utils.d.ts.map +1 -1
  46. package/package.json +6 -6
  47. package/dist/bench/event-bus.bench.d.ts +0 -2
  48. package/dist/bench/event-bus.bench.d.ts.map +0 -1
  49. package/dist/bench/event-bus.bench.js +0 -228
  50. package/dist/bench/event-bus.bench.js.map +0 -1
  51. package/dist/bench/queue-only.bench.d.ts +0 -2
  52. package/dist/bench/queue-only.bench.d.ts.map +0 -1
  53. package/dist/bench/queue-only.bench.js +0 -46
  54. package/dist/bench/queue-only.bench.js.map +0 -1
  55. package/dist/bench/reactor-throughput.bench.d.ts +0 -2
  56. package/dist/bench/reactor-throughput.bench.d.ts.map +0 -1
  57. package/dist/bench/reactor-throughput.bench.js +0 -144
  58. package/dist/bench/reactor-throughput.bench.js.map +0 -1
  59. package/dist/test/event-bus.test.d.ts +0 -2
  60. package/dist/test/event-bus.test.d.ts.map +0 -1
  61. package/dist/test/event-bus.test.js +0 -541
  62. package/dist/test/event-bus.test.js.map +0 -1
  63. package/dist/test/executor/executor-integration.test.d.ts +0 -2
  64. package/dist/test/executor/executor-integration.test.d.ts.map +0 -1
  65. package/dist/test/executor/executor-integration.test.js +0 -287
  66. package/dist/test/executor/executor-integration.test.js.map +0 -1
  67. package/dist/test/executor/job-execution-handle.test.d.ts +0 -2
  68. package/dist/test/executor/job-execution-handle.test.d.ts.map +0 -1
  69. package/dist/test/executor/job-execution-handle.test.js +0 -272
  70. package/dist/test/executor/job-execution-handle.test.js.map +0 -1
  71. package/dist/test/executor/simple-job-executor-manager.test.d.ts +0 -2
  72. package/dist/test/executor/simple-job-executor-manager.test.d.ts.map +0 -1
  73. package/dist/test/executor/simple-job-executor-manager.test.js +0 -132
  74. package/dist/test/executor/simple-job-executor-manager.test.js.map +0 -1
  75. package/dist/test/executor/simple-job-executor.test.d.ts +0 -2
  76. package/dist/test/executor/simple-job-executor.test.d.ts.map +0 -1
  77. package/dist/test/executor/simple-job-executor.test.js +0 -139
  78. package/dist/test/executor/simple-job-executor.test.js.map +0 -1
  79. package/dist/test/factories.d.ts +0 -122
  80. package/dist/test/factories.d.ts.map +0 -1
  81. package/dist/test/factories.js +0 -319
  82. package/dist/test/factories.js.map +0 -1
  83. package/dist/test/integration/document-drive-integration.test.d.ts +0 -2
  84. package/dist/test/integration/document-drive-integration.test.d.ts.map +0 -1
  85. package/dist/test/integration/document-drive-integration.test.js +0 -1102
  86. package/dist/test/integration/document-drive-integration.test.js.map +0 -1
  87. package/dist/test/integration/reactor-read.test.d.ts +0 -2
  88. package/dist/test/integration/reactor-read.test.d.ts.map +0 -1
  89. package/dist/test/integration/reactor-read.test.js +0 -300
  90. package/dist/test/integration/reactor-read.test.js.map +0 -1
  91. package/dist/test/queue/queue-integration.test.d.ts +0 -2
  92. package/dist/test/queue/queue-integration.test.d.ts.map +0 -1
  93. package/dist/test/queue/queue-integration.test.js +0 -322
  94. package/dist/test/queue/queue-integration.test.js.map +0 -1
  95. package/dist/test/queue/queue.test.d.ts +0 -2
  96. package/dist/test/queue/queue.test.d.ts.map +0 -1
  97. package/dist/test/queue/queue.test.js +0 -770
  98. package/dist/test/queue/queue.test.js.map +0 -1
  99. package/dist/test/registry/registry.test.d.ts +0 -2
  100. package/dist/test/registry/registry.test.d.ts.map +0 -1
  101. package/dist/test/registry/registry.test.js +0 -182
  102. package/dist/test/registry/registry.test.js.map +0 -1
  103. package/dist/test/utils.test.d.ts +0 -2
  104. package/dist/test/utils.test.d.ts.map +0 -1
  105. package/dist/test/utils.test.js +0 -66
  106. package/dist/test/utils.test.js.map +0 -1
  107. package/dist/tsconfig.tsbuildinfo +0 -1
  108. package/dist/vitest.config.d.ts +0 -3
  109. package/dist/vitest.config.d.ts.map +0 -1
  110. package/dist/vitest.config.js +0 -11
  111. package/dist/vitest.config.js.map +0 -1
@@ -0,0 +1,32 @@
1
+ import { type JobInfo } from "./types.js";
2
+ export interface IJobAwaiter {
3
+ /**
4
+ * Waits for a job to complete: turns a job into a promise.
5
+ *
6
+ * @param jobId - The job id or job object
7
+ * @param signal - Optional abort signal to cancel the request
8
+ * @returns The result of the job
9
+ */
10
+ waitForJob(jobId: string, signal?: AbortSignal): Promise<JobInfo>;
11
+ /**
12
+ * Shuts down the job awaiter. This will synchronously reject all pending jobs.
13
+ */
14
+ shutdown(): void;
15
+ }
16
+ /**
17
+ * Default implementation of IJobAwaiter that polls for job status.
18
+ * Uses a single interval timer to check all pending jobs.
19
+ */
20
+ export declare class JobAwaiter implements IJobAwaiter {
21
+ private getJobStatus;
22
+ private pollIntervalMs;
23
+ private pendingJobs;
24
+ private intervalId;
25
+ constructor(getJobStatus: (jobId: string, signal?: AbortSignal) => Promise<JobInfo>, pollIntervalMs?: number);
26
+ shutdown(): void;
27
+ waitForJob(jobId: string, signal?: AbortSignal): Promise<JobInfo>;
28
+ private startInterval;
29
+ private stopIntervalIfNoJobs;
30
+ private checkPendingJobs;
31
+ }
32
+ //# sourceMappingURL=awaiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awaiter.d.ts","sourceRoot":"","sources":["../../../src/shared/awaiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElE;;OAEG;IACH,QAAQ,IAAI,IAAI,CAAC;CAClB;AAQD;;;GAGG;AACH,qBAAa,UAAW,YAAW,WAAW;IAM1C,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IARxB,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,UAAU,CAA+B;gBAGvC,YAAY,EAAE,CACpB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,OAAO,CAAC,EACb,cAAc,SAAK;IAK7B,QAAQ,IAAI,IAAI;IAcV,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA2CvE,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,oBAAoB;YAOd,gBAAgB;CA+D/B"}
@@ -0,0 +1,132 @@
1
+ import { JobStatus } from "./types.js";
2
+ /**
3
+ * Default implementation of IJobAwaiter that polls for job status.
4
+ * Uses a single interval timer to check all pending jobs.
5
+ */
6
+ export class JobAwaiter {
7
+ getJobStatus;
8
+ pollIntervalMs;
9
+ // Map from job ID to list of waiters (multiple waiters can wait for same job)
10
+ pendingJobs = new Map();
11
+ intervalId = null;
12
+ constructor(getJobStatus, pollIntervalMs = 10) {
13
+ this.getJobStatus = getJobStatus;
14
+ this.pollIntervalMs = pollIntervalMs;
15
+ //
16
+ }
17
+ shutdown() {
18
+ if (this.intervalId !== null) {
19
+ clearInterval(this.intervalId);
20
+ this.intervalId = null;
21
+ }
22
+ // Reject all pending jobs
23
+ for (const [, waiters] of this.pendingJobs) {
24
+ for (const waiter of waiters) {
25
+ waiter.reject(new Error("JobAwaiter destroyed"));
26
+ }
27
+ }
28
+ this.pendingJobs.clear();
29
+ }
30
+ async waitForJob(jobId, signal) {
31
+ // Check if signal is already aborted
32
+ if (signal?.aborted) {
33
+ throw new Error("Operation aborted");
34
+ }
35
+ // Create promise for this job
36
+ const promise = new Promise((resolve, reject) => {
37
+ const waiter = { resolve, reject, signal };
38
+ // Add to the list of waiters for this job
39
+ const existingWaiters = this.pendingJobs.get(jobId) || [];
40
+ existingWaiters.push(waiter);
41
+ this.pendingJobs.set(jobId, existingWaiters);
42
+ // If signal is provided, handle abort
43
+ if (signal) {
44
+ const abortHandler = () => {
45
+ // Find and remove this specific waiter
46
+ const waiters = this.pendingJobs.get(jobId);
47
+ if (waiters) {
48
+ const index = waiters.indexOf(waiter);
49
+ if (index !== -1) {
50
+ waiters.splice(index, 1);
51
+ if (waiters.length === 0) {
52
+ this.pendingJobs.delete(jobId);
53
+ }
54
+ waiter.reject(new Error("Operation aborted"));
55
+ this.stopIntervalIfNoJobs();
56
+ }
57
+ }
58
+ };
59
+ signal.addEventListener("abort", abortHandler, { once: true });
60
+ }
61
+ });
62
+ // Start interval if not already running
63
+ this.startInterval();
64
+ return promise;
65
+ }
66
+ startInterval() {
67
+ if (this.intervalId === null && this.pendingJobs.size > 0) {
68
+ this.intervalId = setInterval(async () => {
69
+ await this.checkPendingJobs();
70
+ }, this.pollIntervalMs);
71
+ // Check immediately as well - schedule it for next tick
72
+ setTimeout(() => this.checkPendingJobs(), 0);
73
+ }
74
+ }
75
+ stopIntervalIfNoJobs() {
76
+ if (this.pendingJobs.size === 0 && this.intervalId !== null) {
77
+ clearInterval(this.intervalId);
78
+ this.intervalId = null;
79
+ }
80
+ }
81
+ async checkPendingJobs() {
82
+ // Get unique job IDs to check
83
+ const jobIds = Array.from(this.pendingJobs.keys());
84
+ // Check each job
85
+ const jobChecks = jobIds.map(async (jobId) => {
86
+ const waiters = this.pendingJobs.get(jobId);
87
+ if (!waiters || waiters.length === 0) {
88
+ return;
89
+ }
90
+ try {
91
+ // Filter out aborted waiters
92
+ const activeWaiters = waiters.filter((w) => !w.signal?.aborted);
93
+ if (activeWaiters.length === 0) {
94
+ // All waiters were aborted
95
+ this.pendingJobs.delete(jobId);
96
+ return;
97
+ }
98
+ // Use the first active waiter's signal for the status check
99
+ const jobInfo = await this.getJobStatus(jobId, activeWaiters[0].signal);
100
+ // Check if job is complete
101
+ if (jobInfo.status === JobStatus.COMPLETED ||
102
+ jobInfo.status === JobStatus.FAILED) {
103
+ // Remove from pending
104
+ this.pendingJobs.delete(jobId);
105
+ // Resolve all active waiters
106
+ for (const waiter of activeWaiters) {
107
+ waiter.resolve(jobInfo);
108
+ }
109
+ // Reject aborted waiters
110
+ for (const waiter of waiters) {
111
+ if (waiter.signal?.aborted) {
112
+ waiter.reject(new Error("Operation aborted"));
113
+ }
114
+ }
115
+ }
116
+ }
117
+ catch (error) {
118
+ // Remove from pending
119
+ this.pendingJobs.delete(jobId);
120
+ // Reject all waiters with the error
121
+ for (const waiter of waiters) {
122
+ waiter.reject(error instanceof Error ? error : new Error(String(error)));
123
+ }
124
+ }
125
+ });
126
+ // Wait for all checks to complete
127
+ await Promise.all(jobChecks);
128
+ // Stop interval if no more jobs
129
+ this.stopIntervalIfNoJobs();
130
+ }
131
+ }
132
+ //# sourceMappingURL=awaiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awaiter.js","sourceRoot":"","sources":["../../../src/shared/awaiter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type ShutdownStatus } from "./types.js";
1
+ import type { ShutdownStatus } from "./types.js";
2
2
  /**
3
3
  * Factory method to create a ShutdownStatus object
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../src/shared/factories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,cAAc,CAQxE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,UAAQ,GACnB,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAc5C"}
1
+ {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../src/shared/factories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,GAAG,cAAc,CAQxE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,UAAQ,GACnB,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAc5C"}
@@ -1,5 +1,5 @@
1
- import { type PHDocument } from "document-model";
2
- import { type PagedResults } from "./shared/types.js";
1
+ import type { PHDocument } from "document-model";
2
+ import type { PagedResults } from "./shared/types.js";
3
3
  /**
4
4
  * Filters paged results by parent ID
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,EAEjC,QAAQ,EAAE,MAAM,GACf,YAAY,CAAC,UAAU,CAAC,CAG1B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,EACjC,IAAI,EAAE,MAAM,GACX,YAAY,CAAC,UAAU,CAAC,CAoB1B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,EAEjC,QAAQ,EAAE,MAAM,GACf,YAAY,CAAC,UAAU,CAAC,CAG1B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,EACjC,IAAI,EAAE,MAAM,GACX,YAAY,CAAC,UAAU,CAAC,CAoB1B"}
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@powerhousedao/reactor",
3
- "version": "4.1.0-dev.50",
3
+ "version": "4.1.0-dev.52",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "url": "https://github.com/powerhouse-inc/powerhouse",
7
7
  "directory": "packages/reactor"
8
8
  },
9
9
  "type": "module",
10
- "types": "./dist/index.d.ts",
10
+ "types": "./dist/src/index.d.ts",
11
11
  "exports": {
12
- ".": "./dist/index.js"
12
+ ".": "./dist/src/index.js"
13
13
  },
14
14
  "imports": {
15
15
  "#*": "./dist/src/*"
16
16
  },
17
17
  "files": [
18
- "./dist"
18
+ "./dist/src"
19
19
  ],
20
20
  "publishConfig": {
21
21
  "access": "public"
@@ -25,8 +25,8 @@
25
25
  "license": "AGPL-3.0-only",
26
26
  "dependencies": {
27
27
  "uuid": "^11.0.5",
28
- "document-drive": "4.1.0-dev.50",
29
- "document-model": "4.1.0-dev.50"
28
+ "document-drive": "4.1.0-dev.52",
29
+ "document-model": "4.1.0-dev.52"
30
30
  },
31
31
  "devDependencies": {
32
32
  "typescript": "^5.7.3",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=event-bus.bench.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-bus.bench.d.ts","sourceRoot":"","sources":["../../bench/event-bus.bench.ts"],"names":[],"mappings":""}
@@ -1,228 +0,0 @@
1
- import { bench, describe } from "vitest";
2
- import { EventBus } from "../src/events/event-bus.js";
3
- // Event types for testing
4
- const EVENT_TYPE_SYNC = 1;
5
- const EVENT_TYPE_ASYNC = 2;
6
- const EVENT_TYPE_MIXED = 3;
7
- // Test data
8
- const TEST_DATA = { message: "test event", timestampUtcMs: Date.now() };
9
- /**
10
- * Creates a synchronous subscriber that performs minimal work
11
- */
12
- function createSyncSubscriber() {
13
- return () => {
14
- //
15
- };
16
- }
17
- /**
18
- * Creates an asynchronous subscriber with configurable delay
19
- */
20
- function createAsyncSubscriber(delayMs = 0) {
21
- return async () => {
22
- // Simulate async work
23
- if (delayMs > 0) {
24
- await new Promise((resolve) => setTimeout(resolve, delayMs));
25
- }
26
- };
27
- }
28
- /**
29
- * Creates a subscriber that randomly decides to be sync or async
30
- */
31
- function createMixedSubscriber(asyncProbability = 0.5) {
32
- return async () => {
33
- if (Math.random() < asyncProbability) {
34
- // Async path with minimal delay
35
- await new Promise((resolve) => setImmediate(resolve));
36
- }
37
- };
38
- }
39
- /**
40
- * Sets up an EventBus with multiple sync subscribers
41
- */
42
- function setupSyncEventBus(subscriberCount) {
43
- const eventBus = new EventBus();
44
- for (let i = 0; i < subscriberCount; i++) {
45
- eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber());
46
- }
47
- return eventBus;
48
- }
49
- /**
50
- * Sets up an EventBus with multiple async subscribers
51
- */
52
- function setupAsyncEventBus(subscriberCount, delayMs = 0) {
53
- const eventBus = new EventBus();
54
- for (let i = 0; i < subscriberCount; i++) {
55
- eventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncSubscriber(delayMs));
56
- }
57
- return eventBus;
58
- }
59
- /**
60
- * Sets up an EventBus with mixed sync/async subscribers
61
- */
62
- function setupMixedEventBus(subscriberCount, asyncProbability = 0.5) {
63
- const eventBus = new EventBus();
64
- for (let i = 0; i < subscriberCount; i++) {
65
- eventBus.subscribe(EVENT_TYPE_MIXED, createMixedSubscriber(asyncProbability));
66
- }
67
- return eventBus;
68
- }
69
- describe("EventBus Sync Emission Throughput", () => {
70
- const syncEventBus1 = setupSyncEventBus(1);
71
- const syncEventBus5 = setupSyncEventBus(5);
72
- const syncEventBus10 = setupSyncEventBus(10);
73
- const syncEventBus25 = setupSyncEventBus(25);
74
- const syncEventBus50 = setupSyncEventBus(50);
75
- const syncEventBus100 = setupSyncEventBus(100);
76
- bench("1 sync subscriber", async () => {
77
- await syncEventBus1.emit(EVENT_TYPE_SYNC, TEST_DATA);
78
- }, { time: 500 });
79
- bench("5 sync subscribers", async () => {
80
- await syncEventBus5.emit(EVENT_TYPE_SYNC, TEST_DATA);
81
- }, { time: 500 });
82
- bench("10 sync subscribers", async () => {
83
- await syncEventBus10.emit(EVENT_TYPE_SYNC, TEST_DATA);
84
- }, { time: 500 });
85
- bench("25 sync subscribers", async () => {
86
- await syncEventBus25.emit(EVENT_TYPE_SYNC, TEST_DATA);
87
- }, { time: 500 });
88
- bench("50 sync subscribers", async () => {
89
- await syncEventBus50.emit(EVENT_TYPE_SYNC, TEST_DATA);
90
- }, { time: 500 });
91
- bench("100 sync subscribers", async () => {
92
- await syncEventBus100.emit(EVENT_TYPE_SYNC, TEST_DATA);
93
- }, { time: 500 });
94
- });
95
- describe("EventBus Async Emission Throughput", () => {
96
- const asyncEventBus1_0ms = setupAsyncEventBus(1, 0);
97
- const asyncEventBus5_0ms = setupAsyncEventBus(5, 0);
98
- const asyncEventBus10_0ms = setupAsyncEventBus(10, 0);
99
- const asyncEventBus1_1ms = setupAsyncEventBus(1, 1);
100
- const asyncEventBus5_1ms = setupAsyncEventBus(5, 1);
101
- const asyncEventBus10_1ms = setupAsyncEventBus(10, 1);
102
- const asyncEventBus1_5ms = setupAsyncEventBus(1, 5);
103
- const asyncEventBus5_5ms = setupAsyncEventBus(5, 5);
104
- bench("1 async subscriber (0ms delay)", async () => {
105
- await asyncEventBus1_0ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
106
- }, { time: 500 });
107
- bench("5 async subscribers (0ms delay)", async () => {
108
- await asyncEventBus5_0ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
109
- }, { time: 500 });
110
- bench("10 async subscribers (0ms delay)", async () => {
111
- await asyncEventBus10_0ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
112
- }, { time: 500 });
113
- bench("1 async subscriber (1ms delay)", async () => {
114
- await asyncEventBus1_1ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
115
- }, { time: 500 });
116
- bench("5 async subscribers (1ms delay)", async () => {
117
- await asyncEventBus5_1ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
118
- }, { time: 500 });
119
- bench("10 async subscribers (1ms delay)", async () => {
120
- await asyncEventBus10_1ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
121
- }, { time: 500 });
122
- bench("1 async subscriber (5ms delay)", async () => {
123
- await asyncEventBus1_5ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
124
- }, { time: 500 });
125
- bench("5 async subscribers (5ms delay)", async () => {
126
- await asyncEventBus5_5ms.emit(EVENT_TYPE_ASYNC, TEST_DATA);
127
- }, { time: 500 });
128
- });
129
- describe("EventBus Mixed Sync/Async Emission Throughput", () => {
130
- const mixedEventBus10_10 = setupMixedEventBus(10, 0.1);
131
- const mixedEventBus10_30 = setupMixedEventBus(10, 0.3);
132
- const mixedEventBus10_50 = setupMixedEventBus(10, 0.5);
133
- const mixedEventBus10_70 = setupMixedEventBus(10, 0.7);
134
- const mixedEventBus10_90 = setupMixedEventBus(10, 0.9);
135
- const mixedEventBus25_50 = setupMixedEventBus(25, 0.5);
136
- const mixedEventBus50_50 = setupMixedEventBus(50, 0.5);
137
- bench("10 subscribers (90% sync, 10% async)", async () => {
138
- await mixedEventBus10_10.emit(EVENT_TYPE_MIXED, TEST_DATA);
139
- }, { time: 500 });
140
- bench("10 subscribers (70% sync, 30% async)", async () => {
141
- await mixedEventBus10_30.emit(EVENT_TYPE_MIXED, TEST_DATA);
142
- }, { time: 500 });
143
- bench("10 subscribers (50% sync, 50% async)", async () => {
144
- await mixedEventBus10_50.emit(EVENT_TYPE_MIXED, TEST_DATA);
145
- }, { time: 500 });
146
- bench("10 subscribers (30% sync, 70% async)", async () => {
147
- await mixedEventBus10_70.emit(EVENT_TYPE_MIXED, TEST_DATA);
148
- }, { time: 500 });
149
- bench("10 subscribers (10% sync, 90% async)", async () => {
150
- await mixedEventBus10_90.emit(EVENT_TYPE_MIXED, TEST_DATA);
151
- }, { time: 500 });
152
- bench("25 subscribers (50% sync, 50% async)", async () => {
153
- await mixedEventBus25_50.emit(EVENT_TYPE_MIXED, TEST_DATA);
154
- }, { time: 500 });
155
- bench("50 subscribers (50% sync, 50% async)", async () => {
156
- await mixedEventBus50_50.emit(EVENT_TYPE_MIXED, TEST_DATA);
157
- }, { time: 500 });
158
- });
159
- describe("EventBus Subscription Management Performance", () => {
160
- bench("Subscribe and unsubscribe (single)", () => {
161
- const eventBus = new EventBus();
162
- const unsubscribe = eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber());
163
- unsubscribe();
164
- }, { time: 500 });
165
- bench("Subscribe and unsubscribe (batch of 10)", () => {
166
- const eventBus = new EventBus();
167
- const unsubscribes = [];
168
- for (let i = 0; i < 10; i++) {
169
- unsubscribes.push(eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber()));
170
- }
171
- for (const unsubscribe of unsubscribes) {
172
- unsubscribe();
173
- }
174
- }, { time: 500 });
175
- bench("Subscribe and unsubscribe (batch of 100)", () => {
176
- const eventBus = new EventBus();
177
- const unsubscribes = [];
178
- for (let i = 0; i < 100; i++) {
179
- unsubscribes.push(eventBus.subscribe(EVENT_TYPE_SYNC, createSyncSubscriber()));
180
- }
181
- for (const unsubscribe of unsubscribes) {
182
- unsubscribe();
183
- }
184
- }, { time: 500 });
185
- });
186
- describe("EventBus Error Handling Performance", () => {
187
- function createErrorSubscriber(shouldError) {
188
- return () => {
189
- if (shouldError) {
190
- throw new Error("Test error");
191
- }
192
- };
193
- }
194
- function createAsyncErrorSubscriber(shouldError) {
195
- return async () => {
196
- await new Promise((resolve) => setTimeout(resolve, 1));
197
- if (shouldError) {
198
- throw new Error("Test async error");
199
- }
200
- };
201
- }
202
- // Test error aggregation performance
203
- const errorEventBus = new EventBus();
204
- errorEventBus.subscribe(EVENT_TYPE_SYNC, createErrorSubscriber(true));
205
- errorEventBus.subscribe(EVENT_TYPE_SYNC, createErrorSubscriber(true));
206
- errorEventBus.subscribe(EVENT_TYPE_SYNC, createErrorSubscriber(false));
207
- const asyncErrorEventBus = new EventBus();
208
- asyncErrorEventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncErrorSubscriber(true));
209
- asyncErrorEventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncErrorSubscriber(true));
210
- asyncErrorEventBus.subscribe(EVENT_TYPE_ASYNC, createAsyncErrorSubscriber(false));
211
- bench("Error aggregation (sync)", async () => {
212
- try {
213
- await errorEventBus.emit(EVENT_TYPE_SYNC, TEST_DATA);
214
- }
215
- catch {
216
- // Expected error
217
- }
218
- }, { time: 500 });
219
- bench("Error aggregation (async)", async () => {
220
- try {
221
- await asyncErrorEventBus.emit(EVENT_TYPE_ASYNC, TEST_DATA);
222
- }
223
- catch {
224
- // Expected error
225
- }
226
- }, { time: 500 });
227
- });
228
- //# sourceMappingURL=event-bus.bench.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-bus.bench.js","sourceRoot":"","sources":["../../bench/event-bus.bench.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=queue-only.bench.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue-only.bench.d.ts","sourceRoot":"","sources":["../../bench/queue-only.bench.ts"],"names":[],"mappings":""}
@@ -1,46 +0,0 @@
1
- import { bench, describe } from "vitest";
2
- import { EventBus } from "../src/events/event-bus.js";
3
- import { InMemoryQueue } from "../src/queue/queue.js";
4
- // Pre-create components to avoid setup overhead
5
- const eventBus = new EventBus();
6
- const queue = new InMemoryQueue(eventBus);
7
- let jobCounter = 0;
8
- function createMinimalJob() {
9
- return {
10
- id: `job-${++jobCounter}`,
11
- documentId: "doc1",
12
- scope: "default",
13
- branch: "main",
14
- operation: {
15
- action: {
16
- id: `action-${jobCounter}`,
17
- type: "CREATE",
18
- timestampUtcMs: "2023-01-01T00:00:00.000Z",
19
- input: { data: "test" },
20
- scope: "default",
21
- },
22
- index: 0,
23
- timestampUtcMs: "2023-01-01T00:00:00.000Z",
24
- hash: "hash-123",
25
- skip: 0,
26
- },
27
- maxRetries: 0,
28
- createdAt: "2023-01-01T00:00:00.000Z",
29
- queueHint: [],
30
- };
31
- }
32
- describe("Queue Only Operations", () => {
33
- bench("enqueue job", async () => {
34
- const job = createMinimalJob();
35
- await queue.enqueue(job);
36
- });
37
- bench("enqueue and dequeue", async () => {
38
- const job = createMinimalJob();
39
- await queue.enqueue(job);
40
- await queue.dequeue(job.documentId, job.scope, job.branch);
41
- });
42
- bench("queue total size", async () => {
43
- await queue.totalSize();
44
- });
45
- });
46
- //# sourceMappingURL=queue-only.bench.js.map
@@ -1 +0,0 @@
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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=reactor-throughput.bench.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactor-throughput.bench.d.ts","sourceRoot":"","sources":["../../bench/reactor-throughput.bench.ts"],"names":[],"mappings":""}