@powerhousedao/reactor 5.0.0-staging.3 → 5.0.0-staging.30

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 (154) hide show
  1. package/dist/src/client/reactor-client.d.ts +103 -0
  2. package/dist/src/client/reactor-client.d.ts.map +1 -0
  3. package/dist/src/client/reactor-client.js +182 -0
  4. package/dist/src/client/reactor-client.js.map +1 -0
  5. package/dist/src/client/types.d.ts +213 -0
  6. package/dist/src/client/types.d.ts.map +1 -0
  7. package/dist/src/client/types.js +14 -0
  8. package/dist/src/client/types.js.map +1 -0
  9. package/dist/src/core/builder.d.ts +20 -0
  10. package/dist/src/core/builder.d.ts.map +1 -0
  11. package/dist/src/core/builder.js +47 -0
  12. package/dist/src/core/builder.js.map +1 -0
  13. package/dist/src/{reactor.d.ts → core/reactor.d.ts} +5 -15
  14. package/dist/src/core/reactor.d.ts.map +1 -0
  15. package/dist/src/{reactor.js → core/reactor.js} +49 -29
  16. package/dist/src/core/reactor.js.map +1 -0
  17. package/dist/src/{interfaces/reactor.d.ts → core/types.d.ts} +3 -3
  18. package/dist/src/core/types.d.ts.map +1 -0
  19. package/dist/src/core/types.js +2 -0
  20. package/dist/src/core/types.js.map +1 -0
  21. package/dist/src/{utils.d.ts → core/utils.d.ts} +2 -2
  22. package/dist/src/core/utils.d.ts.map +1 -0
  23. package/dist/src/{utils.js → core/utils.js} +3 -1
  24. package/dist/src/core/utils.js.map +1 -0
  25. package/dist/src/events/event-bus.d.ts +3 -3
  26. package/dist/src/events/event-bus.d.ts.map +1 -1
  27. package/dist/src/events/event-bus.js +1 -1
  28. package/dist/src/events/event-bus.js.map +1 -1
  29. package/dist/src/events/interfaces.d.ts +1 -1
  30. package/dist/src/events/interfaces.d.ts.map +1 -1
  31. package/dist/src/executor/interfaces.d.ts +2 -2
  32. package/dist/src/executor/interfaces.d.ts.map +1 -1
  33. package/dist/src/executor/simple-job-executor-manager.js +9 -9
  34. package/dist/src/executor/simple-job-executor-manager.js.map +1 -1
  35. package/dist/src/executor/simple-job-executor.d.ts.map +1 -1
  36. package/dist/src/executor/simple-job-executor.js.map +1 -1
  37. package/dist/src/executor/types.d.ts +1 -1
  38. package/dist/src/executor/types.d.ts.map +1 -1
  39. package/dist/src/index.d.ts +9 -2
  40. package/dist/src/index.d.ts.map +1 -1
  41. package/dist/src/index.js +8 -1
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/queue/interfaces.d.ts +20 -5
  44. package/dist/src/queue/interfaces.d.ts.map +1 -1
  45. package/dist/src/queue/job-execution-handle.d.ts +24 -0
  46. package/dist/src/queue/job-execution-handle.d.ts.map +1 -0
  47. package/dist/src/queue/job-execution-handle.js +62 -0
  48. package/dist/src/queue/job-execution-handle.js.map +1 -0
  49. package/dist/src/queue/queue.d.ts +24 -5
  50. package/dist/src/queue/queue.d.ts.map +1 -1
  51. package/dist/src/queue/queue.js +128 -46
  52. package/dist/src/queue/queue.js.map +1 -1
  53. package/dist/src/queue/types.d.ts +21 -0
  54. package/dist/src/queue/types.d.ts.map +1 -1
  55. package/dist/src/queue/types.js +12 -0
  56. package/dist/src/queue/types.js.map +1 -1
  57. package/dist/src/shared/awaiter.d.ts +32 -0
  58. package/dist/src/shared/awaiter.d.ts.map +1 -0
  59. package/dist/src/shared/awaiter.js +132 -0
  60. package/dist/src/shared/awaiter.js.map +1 -0
  61. package/dist/src/shared/factories.d.ts +1 -1
  62. package/dist/src/shared/factories.d.ts.map +1 -1
  63. package/dist/src/shared/types.d.ts +3 -0
  64. package/dist/src/shared/types.d.ts.map +1 -1
  65. package/dist/src/shared/types.js.map +1 -1
  66. package/dist/src/signer/passthrough-signer.d.ts +6 -0
  67. package/dist/src/signer/passthrough-signer.d.ts.map +1 -0
  68. package/dist/src/signer/passthrough-signer.js +6 -0
  69. package/dist/src/signer/passthrough-signer.js.map +1 -0
  70. package/dist/src/signer/types.d.ts +15 -0
  71. package/dist/src/signer/types.d.ts.map +1 -0
  72. package/dist/src/signer/types.js +2 -0
  73. package/dist/src/signer/types.js.map +1 -0
  74. package/dist/src/subs/default-error-handler.d.ts +13 -0
  75. package/dist/src/subs/default-error-handler.d.ts.map +1 -0
  76. package/dist/src/subs/default-error-handler.js +27 -0
  77. package/dist/src/subs/default-error-handler.js.map +1 -0
  78. package/dist/src/subs/react-subscription-manager.d.ts +45 -0
  79. package/dist/src/subs/react-subscription-manager.d.ts.map +1 -0
  80. package/dist/src/subs/react-subscription-manager.js +185 -0
  81. package/dist/src/subs/react-subscription-manager.js.map +1 -0
  82. package/dist/src/subs/types.d.ts +64 -0
  83. package/dist/src/subs/types.d.ts.map +1 -0
  84. package/dist/src/subs/types.js +2 -0
  85. package/dist/src/subs/types.js.map +1 -0
  86. package/package.json +6 -6
  87. package/dist/bench/end-to-end-flow.bench.d.ts +0 -2
  88. package/dist/bench/end-to-end-flow.bench.d.ts.map +0 -1
  89. package/dist/bench/end-to-end-flow.bench.js +0 -284
  90. package/dist/bench/end-to-end-flow.bench.js.map +0 -1
  91. package/dist/bench/event-bus.bench.d.ts +0 -2
  92. package/dist/bench/event-bus.bench.d.ts.map +0 -1
  93. package/dist/bench/event-bus.bench.js +0 -238
  94. package/dist/bench/event-bus.bench.js.map +0 -1
  95. package/dist/bench/queue-only.bench.d.ts +0 -2
  96. package/dist/bench/queue-only.bench.d.ts.map +0 -1
  97. package/dist/bench/queue-only.bench.js +0 -46
  98. package/dist/bench/queue-only.bench.js.map +0 -1
  99. package/dist/bench/reactor-throughput.bench.d.ts +0 -2
  100. package/dist/bench/reactor-throughput.bench.d.ts.map +0 -1
  101. package/dist/bench/reactor-throughput.bench.js +0 -164
  102. package/dist/bench/reactor-throughput.bench.js.map +0 -1
  103. package/dist/src/interfaces/reactor.d.ts.map +0 -1
  104. package/dist/src/interfaces/reactor.js +0 -2
  105. package/dist/src/interfaces/reactor.js.map +0 -1
  106. package/dist/src/reactor.d.ts.map +0 -1
  107. package/dist/src/reactor.js.map +0 -1
  108. package/dist/src/utils.d.ts.map +0 -1
  109. package/dist/src/utils.js.map +0 -1
  110. package/dist/test/event-bus.test.d.ts +0 -2
  111. package/dist/test/event-bus.test.d.ts.map +0 -1
  112. package/dist/test/event-bus.test.js +0 -532
  113. package/dist/test/event-bus.test.js.map +0 -1
  114. package/dist/test/executor-integration.test.d.ts +0 -2
  115. package/dist/test/executor-integration.test.d.ts.map +0 -1
  116. package/dist/test/executor-integration.test.js +0 -290
  117. package/dist/test/executor-integration.test.js.map +0 -1
  118. package/dist/test/factories.d.ts +0 -131
  119. package/dist/test/factories.d.ts.map +0 -1
  120. package/dist/test/factories.js +0 -347
  121. package/dist/test/factories.js.map +0 -1
  122. package/dist/test/queue.test.d.ts +0 -2
  123. package/dist/test/queue.test.d.ts.map +0 -1
  124. package/dist/test/queue.test.js +0 -587
  125. package/dist/test/queue.test.js.map +0 -1
  126. package/dist/test/reactor-queue.test.d.ts +0 -2
  127. package/dist/test/reactor-queue.test.d.ts.map +0 -1
  128. package/dist/test/reactor-queue.test.js +0 -328
  129. package/dist/test/reactor-queue.test.js.map +0 -1
  130. package/dist/test/reactor-read.test.d.ts +0 -2
  131. package/dist/test/reactor-read.test.d.ts.map +0 -1
  132. package/dist/test/reactor-read.test.js +0 -355
  133. package/dist/test/reactor-read.test.js.map +0 -1
  134. package/dist/test/registry.test.d.ts +0 -2
  135. package/dist/test/registry.test.d.ts.map +0 -1
  136. package/dist/test/registry.test.js +0 -182
  137. package/dist/test/registry.test.js.map +0 -1
  138. package/dist/test/simple-job-executor-manager.test.d.ts +0 -2
  139. package/dist/test/simple-job-executor-manager.test.d.ts.map +0 -1
  140. package/dist/test/simple-job-executor-manager.test.js +0 -132
  141. package/dist/test/simple-job-executor-manager.test.js.map +0 -1
  142. package/dist/test/simple-job-executor.test.d.ts +0 -2
  143. package/dist/test/simple-job-executor.test.d.ts.map +0 -1
  144. package/dist/test/simple-job-executor.test.js +0 -139
  145. package/dist/test/simple-job-executor.test.js.map +0 -1
  146. package/dist/test/utils.test.d.ts +0 -2
  147. package/dist/test/utils.test.d.ts.map +0 -1
  148. package/dist/test/utils.test.js +0 -66
  149. package/dist/test/utils.test.js.map +0 -1
  150. package/dist/tsconfig.tsbuildinfo +0 -1
  151. package/dist/vitest.config.d.ts +0 -3
  152. package/dist/vitest.config.d.ts.map +0 -1
  153. package/dist/vitest.config.js +0 -11
  154. package/dist/vitest.config.js.map +0 -1
@@ -1,328 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from "vitest";
2
- import { documentModelDocumentModelModule } from "document-model";
3
- import { driveDocumentModelModule } from "document-drive";
4
- import { v4 as uuidv4 } from "uuid";
5
- import { JobStatus } from "../src/shared/types.js";
6
- import { createMockDocument, createDocumentModelAction, createTestActions, createTestReactorSetup, } from "./factories.js";
7
- describe("Reactor <> Queue Integration", () => {
8
- let reactor;
9
- let driveServer;
10
- let storage;
11
- let eventBus;
12
- let queue;
13
- let jobExecutor;
14
- const documentModels = [
15
- documentModelDocumentModelModule,
16
- driveDocumentModelModule,
17
- ];
18
- beforeEach(async () => {
19
- const setup = await createTestReactorSetup(documentModels);
20
- reactor = setup.reactor;
21
- driveServer = setup.driveServer;
22
- storage = setup.storage;
23
- eventBus = setup.eventBus;
24
- queue = setup.queue;
25
- jobExecutor = setup.jobExecutor;
26
- });
27
- describe("mutate", () => {
28
- it("should enqueue jobs for document mutations", async () => {
29
- // Create a test document
30
- const testDoc = createMockDocument({
31
- id: "test-doc-1",
32
- slug: "test-doc",
33
- });
34
- // Add the document to the drive server
35
- await driveServer.addDocument(testDoc);
36
- // Create a mock action for the documentmodel document type
37
- const action = createDocumentModelAction("SET_NAME", {
38
- input: { name: "Updated Document Model" },
39
- });
40
- // Spy on the queue's enqueue method
41
- const enqueueSpy = vi.spyOn(queue, "enqueue");
42
- const result = await reactor.mutate(testDoc.header.id, [action]);
43
- // Verify that the queue's enqueue method was called
44
- expect(enqueueSpy).toHaveBeenCalledTimes(1);
45
- // Verify the job structure
46
- const enqueuedJob = enqueueSpy.mock.calls[0][0];
47
- expect(enqueuedJob.documentId).toBe(testDoc.header.id);
48
- expect(enqueuedJob.operation.action).toEqual(action);
49
- expect(enqueuedJob.scope).toBe(action.scope || "global");
50
- expect(enqueuedJob.branch).toBe("main");
51
- // Verify the result
52
- expect(result).toBeDefined();
53
- expect(result.id).toBeDefined();
54
- expect(result.status).toBe(JobStatus.PENDING);
55
- });
56
- it("should create proper Job objects from actions", async () => {
57
- // Create a test document
58
- const testDoc = createMockDocument({
59
- id: "test-doc-2",
60
- slug: "test-doc-2",
61
- });
62
- // Add the document to the drive server
63
- await driveServer.addDocument(testDoc);
64
- // Create multiple actions
65
- const actions = [
66
- createDocumentModelAction("SET_NAME", {
67
- input: { name: "First Update" },
68
- }),
69
- createDocumentModelAction("SET_DESCRIPTION", {
70
- input: { description: "Test description" },
71
- timestampUtcMs: String(Date.now() + 1000),
72
- }),
73
- ];
74
- // Capture the jobs that are enqueued
75
- const enqueuedJobs = [];
76
- vi.spyOn(queue, "enqueue").mockImplementation((job) => {
77
- enqueuedJobs.push(job);
78
- return Promise.resolve();
79
- });
80
- const result = await reactor.mutate(testDoc.header.id, actions);
81
- // Verify jobs were enqueued
82
- expect(enqueuedJobs).toHaveLength(actions.length);
83
- enqueuedJobs.forEach((job, index) => {
84
- expect(job.documentId).toBe(testDoc.header.id);
85
- expect(job.operation.action).toEqual(actions[index]);
86
- expect(job.scope).toBe(actions[index].scope || "global");
87
- expect(job.branch).toBe("main");
88
- expect(job.operation.index).toBe(index);
89
- });
90
- // Verify the result
91
- expect(result.status).toBe(JobStatus.PENDING);
92
- });
93
- it("should start the job executor when jobs are enqueued", async () => {
94
- // Create a test document
95
- const testDoc = createMockDocument({
96
- id: "test-doc-3",
97
- slug: "test-doc-3",
98
- });
99
- // Add the document to the drive server
100
- await driveServer.addDocument(testDoc);
101
- // Spy on the executor's executeJob method (start is called internally)
102
- const executorSpy = vi.spyOn(jobExecutor, "executeJob");
103
- const action = createDocumentModelAction("SET_NAME", {
104
- input: { name: "Test Name" },
105
- });
106
- await reactor.mutate(testDoc.header.id, [action]);
107
- // The executor's internal start should have been triggered
108
- // In the shim, start is called automatically on first mutate
109
- // We can't directly test this with the simplified design
110
- });
111
- it("should return JobInfo with pending status when jobs are enqueued", async () => {
112
- // Create a test document
113
- const testDoc = createMockDocument({
114
- id: "test-doc-4",
115
- slug: "test-doc-4",
116
- });
117
- // Add the document to the drive server
118
- await driveServer.addDocument(testDoc);
119
- const action = createDocumentModelAction("SET_NAME", {
120
- input: { name: "Test Name" },
121
- });
122
- const result = await reactor.mutate(testDoc.header.id, [action]);
123
- // Now that we use the queue, it should return PENDING
124
- expect(result).toBeDefined();
125
- expect(result.id).toBeDefined();
126
- expect(result.status).toBe(JobStatus.PENDING);
127
- });
128
- it("should handle multiple actions in sequence", async () => {
129
- // Create a test document
130
- const testDoc = createMockDocument({
131
- id: "test-doc-5",
132
- slug: "test-doc-5",
133
- });
134
- // Add the document to the drive server
135
- await driveServer.addDocument(testDoc);
136
- const actions = createTestActions(3, "SET_NAME");
137
- // Track enqueued jobs
138
- const enqueuedJobs = [];
139
- vi.spyOn(queue, "enqueue").mockImplementation((job) => {
140
- enqueuedJobs.push(job);
141
- return Promise.resolve();
142
- });
143
- const result = await reactor.mutate(testDoc.header.id, actions);
144
- expect(result).toBeDefined();
145
- expect(result.id).toBeDefined();
146
- expect(result.status).toBe(JobStatus.PENDING);
147
- // Verify all jobs were enqueued in order
148
- expect(enqueuedJobs).toHaveLength(3);
149
- // Verify jobs maintain order
150
- enqueuedJobs.forEach((job, index) => {
151
- expect(job.operation.index).toBe(index);
152
- const actionInput = job.operation.action.input;
153
- expect(actionInput.name).toBe(`Action ${index + 1}`);
154
- });
155
- });
156
- describe("serial execution per document", () => {
157
- it("should not dequeue jobs for a document that has executing jobs", async () => {
158
- // Create two test documents
159
- const testDoc1 = createMockDocument({
160
- id: "test-doc-serial-1",
161
- slug: "test-doc-serial-1",
162
- });
163
- const testDoc2 = createMockDocument({
164
- id: "test-doc-serial-2",
165
- slug: "test-doc-serial-2",
166
- });
167
- // Add documents to the drive server
168
- await driveServer.addDocument(testDoc1);
169
- await driveServer.addDocument(testDoc2);
170
- // Create actions for both documents
171
- const action1 = {
172
- id: uuidv4(),
173
- type: "SET_NAME",
174
- scope: "global",
175
- input: { name: "Doc 1 Action 1" },
176
- timestampUtcMs: String(Date.now()),
177
- };
178
- const action2 = {
179
- id: uuidv4(),
180
- type: "SET_NAME",
181
- scope: "global",
182
- input: { name: "Doc 1 Action 2" },
183
- timestampUtcMs: String(Date.now() + 1000),
184
- };
185
- const action3 = {
186
- id: uuidv4(),
187
- type: "SET_NAME",
188
- scope: "global",
189
- input: { name: "Doc 2 Action 1" },
190
- timestampUtcMs: String(Date.now() + 2000),
191
- };
192
- // Enqueue jobs for both documents
193
- await reactor.mutate(testDoc1.header.id, [action1, action2]);
194
- await reactor.mutate(testDoc2.header.id, [action3]);
195
- // First dequeue should get a job from document 1
196
- const job1 = await queue.dequeueNext();
197
- expect(job1).toBeDefined();
198
- expect(job1?.documentId).toBe(testDoc1.header.id);
199
- // Second dequeue should get the job from document 2 (not doc 1's second job)
200
- const job2 = await queue.dequeueNext();
201
- expect(job2).toBeDefined();
202
- expect(job2?.documentId).toBe(testDoc2.header.id);
203
- // Third dequeue should return null since doc 1 is still executing
204
- const job3 = await queue.dequeueNext();
205
- expect(job3).toBeNull();
206
- // Complete the first job
207
- if (job1) {
208
- await queue.completeJob(job1.id);
209
- }
210
- // Now we should be able to dequeue the second job from document 1
211
- const job4 = await queue.dequeueNext();
212
- expect(job4).toBeDefined();
213
- expect(job4?.documentId).toBe(testDoc1.header.id);
214
- });
215
- it("should allow concurrent execution of jobs from different documents", async () => {
216
- // Create three test documents
217
- const docs = await Promise.all([
218
- createMockDocument({ id: "concurrent-1", slug: "concurrent-1" }),
219
- createMockDocument({ id: "concurrent-2", slug: "concurrent-2" }),
220
- createMockDocument({ id: "concurrent-3", slug: "concurrent-3" }),
221
- ]);
222
- // Add documents to the drive server
223
- for (const doc of docs) {
224
- await driveServer.addDocument(doc);
225
- }
226
- // Create actions for each document
227
- const actions = docs.map((doc, index) => ({
228
- id: uuidv4(),
229
- type: "SET_NAME",
230
- scope: "global",
231
- input: { name: `Doc ${index + 1} Action` },
232
- timestampUtcMs: String(Date.now() + index * 1000),
233
- }));
234
- // Enqueue one job per document
235
- for (let i = 0; i < docs.length; i++) {
236
- await reactor.mutate(docs[i].header.id, [actions[i]]);
237
- }
238
- // Should be able to dequeue all three jobs since they're from different documents
239
- const dequeuedJobs = [];
240
- for (let i = 0; i < docs.length; i++) {
241
- const job = await queue.dequeueNext();
242
- expect(job).toBeDefined();
243
- dequeuedJobs.push(job);
244
- }
245
- // Verify we got one job from each document
246
- const documentIds = dequeuedJobs.map((job) => job.documentId).sort();
247
- const expectedIds = docs.map((doc) => doc.header.id).sort();
248
- expect(documentIds).toEqual(expectedIds);
249
- // Fourth dequeue should return null since all documents are executing
250
- const noMoreJobs = await queue.dequeueNext();
251
- expect(noMoreJobs).toBeNull();
252
- });
253
- it("should resume processing after job completion", async () => {
254
- // Create a test document
255
- const testDoc = createMockDocument({
256
- id: "test-resume",
257
- slug: "test-resume",
258
- });
259
- await driveServer.addDocument(testDoc);
260
- // Create multiple actions for the same document
261
- const actions = [1, 2, 3].map((i) => ({
262
- id: uuidv4(),
263
- type: "SET_NAME",
264
- scope: "global",
265
- input: { name: `Action ${i}` },
266
- timestampUtcMs: String(Date.now() + i * 1000),
267
- }));
268
- // Enqueue all actions
269
- await reactor.mutate(testDoc.header.id, actions);
270
- // Dequeue first job
271
- const job1 = await queue.dequeueNext();
272
- expect(job1).toBeDefined();
273
- expect(job1?.operation.index).toBe(0);
274
- // Should not be able to dequeue another job for this document
275
- const blockedJob = await queue.dequeueNext();
276
- expect(blockedJob).toBeNull();
277
- // Complete the first job
278
- if (job1) {
279
- await queue.completeJob(job1.id);
280
- }
281
- // Now should be able to dequeue the second job
282
- const job2 = await queue.dequeueNext();
283
- expect(job2).toBeDefined();
284
- expect(job2?.operation.index).toBe(1);
285
- // Complete second job and get third
286
- if (job2) {
287
- await queue.completeJob(job2.id);
288
- }
289
- const job3 = await queue.dequeueNext();
290
- expect(job3).toBeDefined();
291
- expect(job3?.operation.index).toBe(2);
292
- });
293
- it("should handle job failure and allow next job to proceed", async () => {
294
- // Create a test document
295
- const testDoc = createMockDocument({
296
- id: "test-failure",
297
- slug: "test-failure",
298
- });
299
- await driveServer.addDocument(testDoc);
300
- // Create two actions
301
- const actions = [1, 2].map((i) => ({
302
- id: uuidv4(),
303
- type: "SET_NAME",
304
- scope: "global",
305
- input: { name: `Action ${i}` },
306
- timestampUtcMs: String(Date.now() + i * 1000),
307
- }));
308
- // Enqueue actions
309
- await reactor.mutate(testDoc.header.id, actions);
310
- // Dequeue first job
311
- const job1 = await queue.dequeueNext();
312
- expect(job1).toBeDefined();
313
- // Should not be able to dequeue second job
314
- const blockedJob = await queue.dequeueNext();
315
- expect(blockedJob).toBeNull();
316
- // Fail the first job
317
- if (job1) {
318
- await queue.failJob(job1.id, "Test failure");
319
- }
320
- // Now should be able to dequeue the second job
321
- const job2 = await queue.dequeueNext();
322
- expect(job2).toBeDefined();
323
- expect(job2?.operation.index).toBe(1);
324
- });
325
- });
326
- });
327
- });
328
- //# sourceMappingURL=reactor-queue.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactor-queue.test.js","sourceRoot":"","sources":["../../test/reactor-queue.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=reactor-read.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reactor-read.test.d.ts","sourceRoot":"","sources":["../../test/reactor-read.test.ts"],"names":[],"mappings":""}