@powerhousedao/reactor 5.0.0-staging.1 → 5.0.0-staging.11

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