openworkflow 0.4.1 → 0.5.0

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 (193) hide show
  1. package/README.md +53 -48
  2. package/dist/backend-postgres/index.d.ts +44 -0
  3. package/dist/backend-postgres/index.d.ts.map +1 -0
  4. package/dist/backend-postgres/index.js +535 -0
  5. package/dist/backend-postgres/index.js.map +1 -0
  6. package/dist/backend-postgres/postgres.d.ts +42 -0
  7. package/dist/backend-postgres/postgres.d.ts.map +1 -0
  8. package/dist/backend-postgres/postgres.js +234 -0
  9. package/dist/backend-postgres/postgres.js.map +1 -0
  10. package/dist/backend-sqlite/index.d.ts +41 -1
  11. package/dist/backend-sqlite/index.d.ts.map +1 -1
  12. package/dist/backend-sqlite/index.js +654 -1
  13. package/dist/backend-sqlite/index.js.map +1 -1
  14. package/dist/backend-sqlite/sqlite.d.ts +18 -2
  15. package/dist/backend-sqlite/sqlite.d.ts.map +1 -1
  16. package/dist/backend-sqlite/sqlite.js +20 -2
  17. package/dist/backend-sqlite/sqlite.js.map +1 -1
  18. package/dist/{core/backend.d.ts → backend.d.ts} +7 -5
  19. package/dist/backend.d.ts.map +1 -0
  20. package/dist/backend.js.map +1 -0
  21. package/dist/bin/openworkflow.d.ts +3 -0
  22. package/dist/bin/openworkflow.d.ts.map +1 -0
  23. package/dist/bin/openworkflow.js +44 -0
  24. package/dist/bin/openworkflow.js.map +1 -0
  25. package/dist/client.d.ts +141 -0
  26. package/dist/client.d.ts.map +1 -0
  27. package/dist/{sdk/sdk.js → client.js} +44 -71
  28. package/dist/client.js.map +1 -0
  29. package/dist/config.d.ts +27 -21
  30. package/dist/config.d.ts.map +1 -1
  31. package/dist/config.js +44 -36
  32. package/dist/config.js.map +1 -1
  33. package/dist/core/duration.d.ts +4 -2
  34. package/dist/core/duration.d.ts.map +1 -1
  35. package/dist/core/duration.js +3 -1
  36. package/dist/core/duration.js.map +1 -1
  37. package/dist/core/error.d.ts +14 -0
  38. package/dist/core/error.d.ts.map +1 -0
  39. package/dist/core/error.js +18 -0
  40. package/dist/core/error.js.map +1 -0
  41. package/dist/core/result.d.ts +14 -4
  42. package/dist/core/result.d.ts.map +1 -1
  43. package/dist/core/result.js +10 -0
  44. package/dist/core/result.js.map +1 -1
  45. package/dist/core/retry.d.ts +0 -9
  46. package/dist/core/retry.d.ts.map +1 -1
  47. package/dist/core/retry.js +0 -14
  48. package/dist/core/retry.js.map +1 -1
  49. package/dist/core/step.d.ts +1 -32
  50. package/dist/core/step.d.ts.map +1 -1
  51. package/dist/core/step.js +0 -35
  52. package/dist/core/step.js.map +1 -1
  53. package/dist/core/workflow.d.ts +2 -47
  54. package/dist/core/workflow.d.ts.map +1 -1
  55. package/dist/core/workflow.js +0 -44
  56. package/dist/core/workflow.js.map +1 -1
  57. package/dist/{execution/execution.d.ts → execution.d.ts} +4 -26
  58. package/dist/execution.d.ts.map +1 -0
  59. package/dist/{execution/execution.js → execution.js} +4 -4
  60. package/dist/execution.js.map +1 -0
  61. package/dist/index.d.ts +6 -9
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +4 -4
  64. package/dist/index.js.map +1 -1
  65. package/dist/internal.d.ts +8 -0
  66. package/dist/internal.d.ts.map +1 -0
  67. package/dist/internal.js +5 -0
  68. package/dist/internal.js.map +1 -0
  69. package/dist/pg/backend.d.ts +42 -0
  70. package/dist/pg/backend.d.ts.map +1 -0
  71. package/dist/pg/backend.js +534 -0
  72. package/dist/pg/backend.js.map +1 -0
  73. package/dist/pg/index.d.ts +3 -0
  74. package/dist/pg/index.d.ts.map +1 -0
  75. package/dist/pg/index.js +3 -0
  76. package/dist/pg/index.js.map +1 -0
  77. package/dist/pg/postgres.d.ts +42 -0
  78. package/dist/pg/postgres.d.ts.map +1 -0
  79. package/dist/pg/postgres.js +234 -0
  80. package/dist/pg/postgres.js.map +1 -0
  81. package/dist/pg/scripts/db-migrate.d.ts +2 -0
  82. package/dist/pg/scripts/db-migrate.d.ts.map +1 -0
  83. package/dist/pg/scripts/db-migrate.js +5 -0
  84. package/dist/pg/scripts/db-migrate.js.map +1 -0
  85. package/dist/pg/scripts/db-reset.d.ts +2 -0
  86. package/dist/pg/scripts/db-reset.d.ts.map +1 -0
  87. package/dist/pg/scripts/db-reset.js +6 -0
  88. package/dist/pg/scripts/db-reset.js.map +1 -0
  89. package/dist/pg/scripts/squawk.d.ts +2 -0
  90. package/dist/pg/scripts/squawk.d.ts.map +1 -0
  91. package/dist/pg/scripts/squawk.js +17 -0
  92. package/dist/pg/scripts/squawk.js.map +1 -0
  93. package/dist/pg/vitest.global-setup.d.ts +3 -0
  94. package/dist/pg/vitest.global-setup.d.ts.map +1 -0
  95. package/dist/pg/vitest.global-setup.js +8 -0
  96. package/dist/pg/vitest.global-setup.js.map +1 -0
  97. package/dist/registry.d.ts +27 -0
  98. package/dist/registry.d.ts.map +1 -0
  99. package/dist/registry.js +49 -0
  100. package/dist/registry.js.map +1 -0
  101. package/dist/{backend-sqlite → sqlite}/backend.d.ts +6 -4
  102. package/dist/sqlite/backend.d.ts.map +1 -0
  103. package/dist/{backend-sqlite → sqlite}/backend.js +31 -5
  104. package/dist/sqlite/backend.js.map +1 -0
  105. package/dist/sqlite/index.d.ts +3 -0
  106. package/dist/sqlite/index.d.ts.map +1 -0
  107. package/dist/sqlite/index.js +3 -0
  108. package/dist/sqlite/index.js.map +1 -0
  109. package/dist/sqlite/sqlite.d.ts +61 -0
  110. package/dist/sqlite/sqlite.d.ts.map +1 -0
  111. package/dist/sqlite/sqlite.js +247 -0
  112. package/dist/sqlite/sqlite.js.map +1 -0
  113. package/dist/testing/backend.testsuite.d.ts +20 -0
  114. package/dist/testing/backend.testsuite.d.ts.map +1 -0
  115. package/dist/{core → testing}/backend.testsuite.js +186 -53
  116. package/dist/testing/backend.testsuite.js.map +1 -0
  117. package/dist/testing/index.d.ts +2 -0
  118. package/dist/testing/index.d.ts.map +1 -0
  119. package/dist/testing/index.js +2 -0
  120. package/dist/testing/index.js.map +1 -0
  121. package/dist/tsconfig.tsbuildinfo +1 -1
  122. package/dist/{worker/worker.d.ts → worker.d.ts} +11 -4
  123. package/dist/worker.d.ts.map +1 -0
  124. package/dist/{worker/worker.js → worker.js} +20 -10
  125. package/dist/worker.js.map +1 -0
  126. package/dist/workflow.d.ts +60 -0
  127. package/dist/workflow.d.ts.map +1 -0
  128. package/dist/workflow.js +49 -0
  129. package/dist/workflow.js.map +1 -0
  130. package/package.json +13 -3
  131. package/dist/backend-sqlite/backend.d.ts.map +0 -1
  132. package/dist/backend-sqlite/backend.js.map +0 -1
  133. package/dist/config/config.d.ts +0 -102
  134. package/dist/config/config.d.ts.map +0 -1
  135. package/dist/config/config.js +0 -29
  136. package/dist/config/config.js.map +0 -1
  137. package/dist/config/index.d.ts +0 -3
  138. package/dist/config/index.d.ts.map +0 -1
  139. package/dist/config/index.js +0 -2
  140. package/dist/config/index.js.map +0 -1
  141. package/dist/core/backend-test-suite.d.ts +0 -22
  142. package/dist/core/backend-test-suite.d.ts.map +0 -1
  143. package/dist/core/backend-test-suite.js +0 -960
  144. package/dist/core/backend-test-suite.js.map +0 -1
  145. package/dist/core/backend.d.ts.map +0 -1
  146. package/dist/core/backend.js.map +0 -1
  147. package/dist/core/backend.testsuite.d.ts +0 -21
  148. package/dist/core/backend.testsuite.d.ts.map +0 -1
  149. package/dist/core/backend.testsuite.js.map +0 -1
  150. package/dist/core/duration.test.d.ts +0 -2
  151. package/dist/core/duration.test.d.ts.map +0 -1
  152. package/dist/core/duration.test.js +0 -264
  153. package/dist/core/duration.test.js.map +0 -1
  154. package/dist/core/result.test.d.ts +0 -2
  155. package/dist/core/result.test.d.ts.map +0 -1
  156. package/dist/core/result.test.js +0 -11
  157. package/dist/core/result.test.js.map +0 -1
  158. package/dist/core/retry.test.d.ts +0 -2
  159. package/dist/core/retry.test.d.ts.map +0 -1
  160. package/dist/core/retry.test.js +0 -36
  161. package/dist/core/retry.test.js.map +0 -1
  162. package/dist/core/step.test.d.ts +0 -2
  163. package/dist/core/step.test.d.ts.map +0 -1
  164. package/dist/core/step.test.js +0 -340
  165. package/dist/core/step.test.js.map +0 -1
  166. package/dist/core/workflow.test.d.ts +0 -2
  167. package/dist/core/workflow.test.d.ts.map +0 -1
  168. package/dist/core/workflow.test.js +0 -216
  169. package/dist/core/workflow.test.js.map +0 -1
  170. package/dist/execution/execution.d.ts.map +0 -1
  171. package/dist/execution/execution.js.map +0 -1
  172. package/dist/execution/execution.test.d.ts +0 -2
  173. package/dist/execution/execution.test.d.ts.map +0 -1
  174. package/dist/execution/execution.test.js +0 -382
  175. package/dist/execution/execution.test.js.map +0 -1
  176. package/dist/global.d.ts +0 -62
  177. package/dist/global.d.ts.map +0 -1
  178. package/dist/global.js +0 -78
  179. package/dist/global.js.map +0 -1
  180. package/dist/sdk/sdk.d.ts +0 -182
  181. package/dist/sdk/sdk.d.ts.map +0 -1
  182. package/dist/sdk/sdk.js.map +0 -1
  183. package/dist/sdk/sdk.test.d.ts +0 -2
  184. package/dist/sdk/sdk.test.d.ts.map +0 -1
  185. package/dist/sdk/sdk.test.js +0 -195
  186. package/dist/sdk/sdk.test.js.map +0 -1
  187. package/dist/worker/worker.d.ts.map +0 -1
  188. package/dist/worker/worker.js.map +0 -1
  189. package/dist/worker/worker.test.d.ts +0 -2
  190. package/dist/worker/worker.test.d.ts.map +0 -1
  191. package/dist/worker/worker.test.js +0 -786
  192. package/dist/worker/worker.test.js.map +0 -1
  193. /package/dist/{core/backend.js → backend.js} +0 -0
@@ -1,382 +0,0 @@
1
- import { BackendPostgres } from "../../backend-postgres/backend.js";
2
- import { DEFAULT_DATABASE_URL } from "../../backend-postgres/postgres.js";
3
- import { OpenWorkflow } from "../sdk/sdk.js";
4
- import { randomUUID } from "node:crypto";
5
- import { describe, test, expect } from "vitest";
6
- describe("StepExecutor", () => {
7
- test("executes step and returns result", async () => {
8
- const backend = await createBackend();
9
- const client = new OpenWorkflow({ backend });
10
- const workflow = client.defineWorkflow({ name: "executor-basic" }, async ({ step }) => {
11
- const result = await step.run({ name: "add" }, () => 5 + 3);
12
- return result;
13
- });
14
- const worker = client.newWorker();
15
- const handle = await workflow.run();
16
- await worker.tick();
17
- const result = await handle.result();
18
- expect(result).toBe(8);
19
- });
20
- test("caches step results for same step name", async () => {
21
- const backend = await createBackend();
22
- const client = new OpenWorkflow({ backend });
23
- let executionCount = 0;
24
- const workflow = client.defineWorkflow({ name: "executor-cached" }, async ({ step }) => {
25
- const first = await step.run({ name: "cached-step" }, () => {
26
- executionCount++;
27
- return "first-execution";
28
- });
29
- const second = await step.run({ name: "cached-step" }, () => {
30
- executionCount++;
31
- return "second-execution";
32
- });
33
- return { first, second };
34
- });
35
- const worker = client.newWorker();
36
- const handle = await workflow.run();
37
- await worker.tick();
38
- const result = await handle.result();
39
- expect(result).toEqual({
40
- first: "first-execution",
41
- second: "first-execution",
42
- });
43
- expect(executionCount).toBe(1);
44
- });
45
- test("different step names execute independently", async () => {
46
- const backend = await createBackend();
47
- const client = new OpenWorkflow({ backend });
48
- let executionCount = 0;
49
- const workflow = client.defineWorkflow({ name: "executor-different-steps" }, async ({ step }) => {
50
- const first = await step.run({ name: "step-1" }, () => {
51
- executionCount++;
52
- return "a";
53
- });
54
- const second = await step.run({ name: "step-2" }, () => {
55
- executionCount++;
56
- return "b";
57
- });
58
- return { first, second };
59
- });
60
- const worker = client.newWorker();
61
- const handle = await workflow.run();
62
- await worker.tick();
63
- const result = await handle.result();
64
- expect(result).toEqual({ first: "a", second: "b" });
65
- expect(executionCount).toBe(2);
66
- });
67
- test("propagates step errors with deadline exceeded", async () => {
68
- const backend = await createBackend();
69
- const client = new OpenWorkflow({ backend });
70
- const workflow = client.defineWorkflow({ name: "executor-error" }, async ({ step }) => {
71
- await step.run({ name: "failing-step" }, () => {
72
- throw new Error("Step failed intentionally");
73
- });
74
- return "should not reach";
75
- });
76
- const worker = client.newWorker();
77
- // Use deadline to force immediate failure without retries
78
- const handle = await workflow.run({}, { deadlineAt: new Date() });
79
- await worker.tick();
80
- await sleep(100);
81
- await expect(handle.result()).rejects.toThrow(/deadline exceeded/);
82
- });
83
- test("sleep puts workflow in sleeping status", async () => {
84
- const backend = await createBackend();
85
- const client = new OpenWorkflow({ backend });
86
- const workflow = client.defineWorkflow({ name: "executor-sleep" }, async ({ step }) => {
87
- await step.sleep("sleep-1", "5s");
88
- return "after sleep";
89
- });
90
- const handle = await workflow.run();
91
- const worker = client.newWorker();
92
- await worker.tick();
93
- const workflowRun = await backend.getWorkflowRun({
94
- workflowRunId: handle.workflowRun.id,
95
- });
96
- expect(workflowRun?.status).toBe("sleeping");
97
- expect(workflowRun?.availableAt).not.toBeNull();
98
- });
99
- test("workflow resumes after sleep duration", async () => {
100
- const backend = await createBackend();
101
- const client = new OpenWorkflow({ backend });
102
- const workflow = client.defineWorkflow({ name: "resume-after-sleep" }, async ({ step }) => {
103
- const value = await step.run({ name: "before" }, () => 5);
104
- await step.sleep("wait", "10ms");
105
- return value + 10;
106
- });
107
- const handle = await workflow.run();
108
- const worker = client.newWorker();
109
- // First tick - hits sleep
110
- await worker.tick();
111
- await sleep(50); // Wait for tick to complete
112
- const sleeping = await backend.getWorkflowRun({
113
- workflowRunId: handle.workflowRun.id,
114
- });
115
- expect(sleeping?.status).toBe("sleeping");
116
- // Wait for sleep to elapse
117
- await sleep(50);
118
- // Second tick - completes
119
- await worker.tick();
120
- const result = await handle.result();
121
- expect(result).toBe(15);
122
- });
123
- });
124
- describe("executeWorkflow", () => {
125
- describe("successful execution", () => {
126
- test("executes a simple workflow", async () => {
127
- const backend = await createBackend();
128
- const client = new OpenWorkflow({ backend });
129
- const workflow = client.defineWorkflow({ name: "simple-workflow" }, ({ input }) => {
130
- return input.a + input.b;
131
- });
132
- const worker = client.newWorker();
133
- const handle = await workflow.run({ a: 10, b: 5 });
134
- await worker.tick();
135
- const result = await handle.result();
136
- expect(result).toBe(15);
137
- });
138
- test("executes a multi-step workflow", async () => {
139
- const backend = await createBackend();
140
- const client = new OpenWorkflow({ backend });
141
- const workflow = client.defineWorkflow({ name: "multi-step-workflow" }, async ({ input, step }) => {
142
- const sum = await step.run({ name: "add" }, () => input.value + 5);
143
- const product = await step.run({ name: "multiply" }, () => sum * 2);
144
- return product;
145
- });
146
- const worker = client.newWorker();
147
- const handle = await workflow.run({ value: 10 });
148
- await worker.tick();
149
- const result = await handle.result();
150
- expect(result).toBe(30);
151
- });
152
- test("returns null for workflows without return", async () => {
153
- const backend = await createBackend();
154
- const client = new OpenWorkflow({ backend });
155
- const workflow = client.defineWorkflow({ name: "void-workflow" }, () => null);
156
- const worker = client.newWorker();
157
- const handle = await workflow.run();
158
- await worker.tick();
159
- const result = await handle.result();
160
- expect(result).toBeNull();
161
- });
162
- test("returns null from workflow", async () => {
163
- const backend = await createBackend();
164
- const client = new OpenWorkflow({ backend });
165
- const workflow = client.defineWorkflow({ name: "null-workflow" }, () => null);
166
- const worker = client.newWorker();
167
- const handle = await workflow.run();
168
- await worker.tick();
169
- const result = await handle.result();
170
- expect(result).toBeNull();
171
- });
172
- });
173
- describe("error handling", () => {
174
- test("handles workflow errors with deadline exceeded", async () => {
175
- const backend = await createBackend();
176
- const client = new OpenWorkflow({ backend });
177
- const workflow = client.defineWorkflow({ name: "failing-workflow" }, () => {
178
- throw new Error("Workflow error");
179
- });
180
- const worker = client.newWorker();
181
- // Use deadline to skip retries - fails with deadline exceeded
182
- const handle = await workflow.run({}, { deadlineAt: new Date() });
183
- await worker.tick();
184
- await sleep(100);
185
- await expect(handle.result()).rejects.toThrow(/deadline exceeded/);
186
- });
187
- test("handles step errors with deadline exceeded", async () => {
188
- const backend = await createBackend();
189
- const client = new OpenWorkflow({ backend });
190
- const workflow = client.defineWorkflow({ name: "step-error-workflow" }, async ({ step }) => {
191
- await step.run({ name: "failing" }, () => {
192
- throw new Error("Step error");
193
- });
194
- return "unreachable";
195
- });
196
- const worker = client.newWorker();
197
- const handle = await workflow.run({}, { deadlineAt: new Date() });
198
- await worker.tick();
199
- await sleep(100);
200
- await expect(handle.result()).rejects.toThrow(/deadline exceeded/);
201
- });
202
- test("serializes non-Error exceptions", async () => {
203
- const backend = await createBackend();
204
- const client = new OpenWorkflow({ backend });
205
- const workflow = client.defineWorkflow({ name: "non-error-workflow" }, async ({ step }) => {
206
- await step.run({ name: "throw-object" }, () => {
207
- // eslint-disable-next-line @typescript-eslint/only-throw-error
208
- throw { custom: "error", code: 500 };
209
- });
210
- return "nope";
211
- });
212
- const worker = client.newWorker();
213
- const handle = await workflow.run({}, { deadlineAt: new Date() });
214
- await worker.tick();
215
- await sleep(100);
216
- await expect(handle.result()).rejects.toThrow();
217
- });
218
- });
219
- describe("sleep handling", () => {
220
- test("workflow enters sleeping status", async () => {
221
- const backend = await createBackend();
222
- const client = new OpenWorkflow({ backend });
223
- const workflow = client.defineWorkflow({ name: "sleep-workflow" }, async ({ step }) => {
224
- await step.sleep("wait", "5s");
225
- return "after sleep";
226
- });
227
- const handle = await workflow.run();
228
- const worker = client.newWorker();
229
- await worker.tick();
230
- const workflowRun = await backend.getWorkflowRun({
231
- workflowRunId: handle.workflowRun.id,
232
- });
233
- expect(workflowRun?.status).toBe("sleeping");
234
- });
235
- test("resumes workflow after sleep duration", async () => {
236
- const backend = await createBackend();
237
- const client = new OpenWorkflow({ backend });
238
- const workflow = client.defineWorkflow({ name: "resume-after-sleep" }, async ({ input, step }) => {
239
- const sum = await step.run({ name: "add" }, () => input.value + 1);
240
- await step.sleep("wait", "10ms");
241
- return sum + 10;
242
- });
243
- const handle = await workflow.run({ value: 5 });
244
- const worker = client.newWorker();
245
- // first tick - hits sleep
246
- await worker.tick();
247
- await sleep(50);
248
- const sleeping = await backend.getWorkflowRun({
249
- workflowRunId: handle.workflowRun.id,
250
- });
251
- expect(sleeping?.status).toBe("sleeping");
252
- // wait for sleep
253
- await sleep(50);
254
- await worker.tick();
255
- const result = await handle.result();
256
- expect(result).toBe(16);
257
- });
258
- });
259
- describe("workflow with complex data", () => {
260
- test("handles objects as input and output", async () => {
261
- const backend = await createBackend();
262
- const client = new OpenWorkflow({ backend });
263
- const workflow = client.defineWorkflow({ name: "user-workflow" }, ({ input }) => {
264
- return {
265
- greeting: `Hello, ${input.name}! You are ${String(input.age)} years old.`,
266
- processed: true,
267
- };
268
- });
269
- const worker = client.newWorker();
270
- const handle = await workflow.run({ name: "Alice", age: 30 });
271
- await worker.tick();
272
- const result = await handle.result();
273
- expect(result).toEqual({
274
- greeting: "Hello, Alice! You are 30 years old.",
275
- processed: true,
276
- });
277
- });
278
- test("handles arrays in workflow", async () => {
279
- const backend = await createBackend();
280
- const client = new OpenWorkflow({ backend });
281
- const workflow = client.defineWorkflow({ name: "array-workflow" }, ({ input }) => {
282
- return input.numbers.reduce((a, b) => a + b, 0);
283
- });
284
- const worker = client.newWorker();
285
- const handle = await workflow.run({ numbers: [1, 2, 3, 4, 5] });
286
- await worker.tick();
287
- const result = await handle.result();
288
- expect(result).toBe(15);
289
- });
290
- });
291
- describe("result type handling", () => {
292
- test("returns success with numeric result", async () => {
293
- const backend = await createBackend();
294
- const client = new OpenWorkflow({ backend });
295
- const workflow = client.defineWorkflow({ name: "numeric-result" }, async ({ step }) => {
296
- return await step.run({ name: "compute" }, () => 100 + 200);
297
- });
298
- const worker = client.newWorker();
299
- const handle = await workflow.run();
300
- await worker.tick();
301
- const result = await handle.result();
302
- expect(result).toBe(300);
303
- });
304
- test("returns success with string result", async () => {
305
- const backend = await createBackend();
306
- const client = new OpenWorkflow({ backend });
307
- const workflow = client.defineWorkflow({ name: "string-result" }, ({ input }) => {
308
- return input.text.toUpperCase();
309
- });
310
- const worker = client.newWorker();
311
- const handle = await workflow.run({ text: "hello world" });
312
- await worker.tick();
313
- const result = await handle.result();
314
- expect(result).toBe("HELLO WORLD");
315
- });
316
- test("returns success with boolean result", async () => {
317
- const backend = await createBackend();
318
- const client = new OpenWorkflow({ backend });
319
- const workflow = client.defineWorkflow({ name: "bool-result" }, ({ input }) => {
320
- return input.value > 0;
321
- });
322
- const worker = client.newWorker();
323
- const handle = await workflow.run({ value: 42 });
324
- await worker.tick();
325
- const result = await handle.result();
326
- expect(result).toBe(true);
327
- });
328
- });
329
- describe("step execution order", () => {
330
- test("executes steps in sequence", async () => {
331
- const backend = await createBackend();
332
- const client = new OpenWorkflow({ backend });
333
- const order = [];
334
- const workflow = client.defineWorkflow({ name: "sequence-workflow" }, async ({ step }) => {
335
- await step.run({ name: "first" }, () => order.push("first"));
336
- await step.run({ name: "second" }, () => order.push("second"));
337
- await step.run({ name: "third" }, () => order.push("third"));
338
- return order;
339
- });
340
- const worker = client.newWorker();
341
- const handle = await workflow.run();
342
- await worker.tick();
343
- const result = await handle.result();
344
- expect(result).toEqual(["first", "second", "third"]);
345
- });
346
- });
347
- describe("version handling", () => {
348
- test("passes version to workflow function", async () => {
349
- const backend = await createBackend();
350
- const client = new OpenWorkflow({ backend });
351
- const workflow = client.defineWorkflow({ name: "version-workflow", version: "1.0.0" }, ({ version }) => {
352
- return { receivedVersion: version };
353
- });
354
- const worker = client.newWorker();
355
- const handle = await workflow.run();
356
- await worker.tick();
357
- const result = await handle.result();
358
- expect(result).toEqual({ receivedVersion: "1.0.0" });
359
- });
360
- test("passes null version when not specified", async () => {
361
- const backend = await createBackend();
362
- const client = new OpenWorkflow({ backend });
363
- const workflow = client.defineWorkflow({ name: "no-version-workflow" }, ({ version }) => {
364
- return { receivedVersion: version };
365
- });
366
- const worker = client.newWorker();
367
- const handle = await workflow.run();
368
- await worker.tick();
369
- const result = await handle.result();
370
- expect(result).toEqual({ receivedVersion: null });
371
- });
372
- });
373
- });
374
- async function createBackend() {
375
- return await BackendPostgres.connect(DEFAULT_DATABASE_URL, {
376
- namespaceId: randomUUID(),
377
- });
378
- }
379
- function sleep(ms) {
380
- return new Promise((resolve) => setTimeout(resolve, ms));
381
- }
382
- //# sourceMappingURL=execution.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"execution.test.js","sourceRoot":"","sources":["../../execution/execution.test.ts"],"names":[],"mappings":"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"}
package/dist/global.d.ts DELETED
@@ -1,62 +0,0 @@
1
- import type { OpenWorkflow } from "./sdk/sdk.js";
2
- /**
3
- * Get the global OpenWorkflow client instance.
4
- * This function lazily loads the configuration file and creates a singleton
5
- * instance on first access.
6
- *
7
- * The global client is useful for:
8
- * - Zero-config DX where you want a single shared client
9
- * - CLI tools that need to access the configured client
10
- * - Testing scenarios where you can override the client with setGlobalClient()
11
- *
12
- * Note: This function requires Node.js and will only work in Node environments.
13
- * For non-Node environments (browser, edge), create OpenWorkflow instances manually.
14
- *
15
- * @returns The global OpenWorkflow client instance
16
- * @throws Error if config file is not found or invalid
17
- *
18
- * @example
19
- * ```typescript
20
- * import { getGlobalClient } from 'openworkflow';
21
- *
22
- * const ow = await getGlobalClient();
23
- * await ow.run(myWorkflow, { input: 'data' });
24
- * ```
25
- */
26
- export declare function getGlobalClient(): Promise<OpenWorkflow>;
27
- /**
28
- * Set the global OpenWorkflow client instance.
29
- * This is primarily useful for testing scenarios where you want to override
30
- * the default client with a mock or test instance.
31
- *
32
- * @param client - The OpenWorkflow instance to set as the global client
33
- *
34
- * @example
35
- * ```typescript
36
- * import { setGlobalClient, OpenWorkflow } from 'openworkflow';
37
- * import { BackendSqlite } from '@openworkflow/backend-sqlite';
38
- *
39
- * // In tests
40
- * const testClient = new OpenWorkflow({
41
- * backend: BackendSqlite.connect(':memory:')
42
- * });
43
- * setGlobalClient(testClient);
44
- * ```
45
- */
46
- export declare function setGlobalClient(client: OpenWorkflow): void;
47
- /**
48
- * Reset the global client to null.
49
- * This is primarily useful for testing to ensure a clean state between tests.
50
- *
51
- * @example
52
- * ```typescript
53
- * import { resetGlobalClient } from 'openworkflow';
54
- *
55
- * // In test cleanup
56
- * afterEach(() => {
57
- * resetGlobalClient();
58
- * });
59
- * ```
60
- */
61
- export declare function resetGlobalClient(): void;
62
- //# sourceMappingURL=global.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../global.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AASjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAQ7D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAE1D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
package/dist/global.js DELETED
@@ -1,78 +0,0 @@
1
- import { loadConfig } from "./config.js";
2
- /**
3
- * Global singleton OpenWorkflow client instance.
4
- * This is lazily initialized when getGlobalClient() is first called.
5
- */
6
- let globalClient = null;
7
- /**
8
- * Get the global OpenWorkflow client instance.
9
- * This function lazily loads the configuration file and creates a singleton
10
- * instance on first access.
11
- *
12
- * The global client is useful for:
13
- * - Zero-config DX where you want a single shared client
14
- * - CLI tools that need to access the configured client
15
- * - Testing scenarios where you can override the client with setGlobalClient()
16
- *
17
- * Note: This function requires Node.js and will only work in Node environments.
18
- * For non-Node environments (browser, edge), create OpenWorkflow instances manually.
19
- *
20
- * @returns The global OpenWorkflow client instance
21
- * @throws Error if config file is not found or invalid
22
- *
23
- * @example
24
- * ```typescript
25
- * import { getGlobalClient } from 'openworkflow';
26
- *
27
- * const ow = await getGlobalClient();
28
- * await ow.run(myWorkflow, { input: 'data' });
29
- * ```
30
- */
31
- export async function getGlobalClient() {
32
- if (globalClient) {
33
- return globalClient;
34
- }
35
- const config = await loadConfig();
36
- globalClient = config.ow;
37
- return globalClient;
38
- }
39
- /**
40
- * Set the global OpenWorkflow client instance.
41
- * This is primarily useful for testing scenarios where you want to override
42
- * the default client with a mock or test instance.
43
- *
44
- * @param client - The OpenWorkflow instance to set as the global client
45
- *
46
- * @example
47
- * ```typescript
48
- * import { setGlobalClient, OpenWorkflow } from 'openworkflow';
49
- * import { BackendSqlite } from '@openworkflow/backend-sqlite';
50
- *
51
- * // In tests
52
- * const testClient = new OpenWorkflow({
53
- * backend: BackendSqlite.connect(':memory:')
54
- * });
55
- * setGlobalClient(testClient);
56
- * ```
57
- */
58
- export function setGlobalClient(client) {
59
- globalClient = client;
60
- }
61
- /**
62
- * Reset the global client to null.
63
- * This is primarily useful for testing to ensure a clean state between tests.
64
- *
65
- * @example
66
- * ```typescript
67
- * import { resetGlobalClient } from 'openworkflow';
68
- *
69
- * // In test cleanup
70
- * afterEach(() => {
71
- * resetGlobalClient();
72
- * });
73
- * ```
74
- */
75
- export function resetGlobalClient() {
76
- globalClient = null;
77
- }
78
- //# sourceMappingURL=global.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"global.js","sourceRoot":"","sources":["../global.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,IAAI,YAAY,GAAwB,IAAI,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC;IACzB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB;IAC/B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC"}