openworkflow 0.4.0 → 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.
- package/README.md +57 -46
- package/dist/backend-postgres/index.d.ts +44 -0
- package/dist/backend-postgres/index.d.ts.map +1 -0
- package/dist/backend-postgres/index.js +535 -0
- package/dist/backend-postgres/index.js.map +1 -0
- package/dist/backend-postgres/postgres.d.ts +42 -0
- package/dist/backend-postgres/postgres.d.ts.map +1 -0
- package/dist/backend-postgres/postgres.js +234 -0
- package/dist/backend-postgres/postgres.js.map +1 -0
- package/dist/backend-sqlite/index.d.ts +42 -0
- package/dist/backend-sqlite/index.d.ts.map +1 -0
- package/dist/backend-sqlite/index.js +655 -0
- package/dist/backend-sqlite/index.js.map +1 -0
- package/dist/backend-sqlite/sqlite.d.ts +61 -0
- package/dist/backend-sqlite/sqlite.d.ts.map +1 -0
- package/dist/backend-sqlite/sqlite.js +247 -0
- package/dist/backend-sqlite/sqlite.js.map +1 -0
- package/dist/backend.d.ts +21 -89
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +0 -21
- package/dist/backend.js.map +1 -1
- package/dist/bin/openworkflow.d.ts +3 -0
- package/dist/bin/openworkflow.d.ts.map +1 -0
- package/dist/bin/openworkflow.js +44 -0
- package/dist/bin/openworkflow.js.map +1 -0
- package/dist/client.d.ts +68 -80
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +83 -53
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +34 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +49 -0
- package/dist/config.js.map +1 -0
- package/dist/{duration.d.ts → core/duration.d.ts} +5 -2
- package/dist/core/duration.d.ts.map +1 -0
- package/dist/{duration.js → core/duration.js} +9 -6
- package/dist/core/duration.js.map +1 -0
- package/dist/core/error.d.ts +14 -0
- package/dist/core/error.d.ts.map +1 -0
- package/dist/core/error.js +18 -0
- package/dist/core/error.js.map +1 -0
- package/dist/core/json.d.ts +5 -0
- package/dist/core/json.d.ts.map +1 -0
- package/dist/core/json.js +2 -0
- package/dist/core/json.js.map +1 -0
- package/dist/core/result.d.ts +22 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js +17 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/retry.d.ts +7 -0
- package/dist/core/retry.d.ts.map +1 -0
- package/dist/core/retry.js +7 -0
- package/dist/core/retry.js.map +1 -0
- package/dist/core/schema.d.ts.map +1 -0
- package/dist/core/schema.js.map +1 -0
- package/dist/core/step.d.ts +89 -0
- package/dist/core/step.d.ts.map +1 -0
- package/dist/core/step.js +66 -0
- package/dist/core/step.js.map +1 -0
- package/dist/core/workflow.d.ts +63 -0
- package/dist/core/workflow.d.ts.map +1 -0
- package/dist/core/workflow.js +35 -0
- package/dist/core/workflow.js.map +1 -0
- package/dist/execution.d.ts +69 -0
- package/dist/execution.d.ts.map +1 -0
- package/dist/execution.js +188 -0
- package/dist/execution.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +8 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +5 -0
- package/dist/internal.js.map +1 -0
- package/dist/pg/backend.d.ts +42 -0
- package/dist/pg/backend.d.ts.map +1 -0
- package/dist/pg/backend.js +534 -0
- package/dist/pg/backend.js.map +1 -0
- package/dist/pg/index.d.ts +3 -0
- package/dist/pg/index.d.ts.map +1 -0
- package/dist/pg/index.js +3 -0
- package/dist/pg/index.js.map +1 -0
- package/dist/pg/postgres.d.ts +42 -0
- package/dist/pg/postgres.d.ts.map +1 -0
- package/dist/pg/postgres.js +234 -0
- package/dist/pg/postgres.js.map +1 -0
- package/dist/pg/scripts/db-migrate.d.ts +2 -0
- package/dist/pg/scripts/db-migrate.d.ts.map +1 -0
- package/dist/pg/scripts/db-migrate.js +5 -0
- package/dist/pg/scripts/db-migrate.js.map +1 -0
- package/dist/pg/scripts/db-reset.d.ts +2 -0
- package/dist/pg/scripts/db-reset.d.ts.map +1 -0
- package/dist/pg/scripts/db-reset.js +6 -0
- package/dist/pg/scripts/db-reset.js.map +1 -0
- package/dist/pg/scripts/squawk.d.ts +2 -0
- package/dist/pg/scripts/squawk.d.ts.map +1 -0
- package/dist/pg/scripts/squawk.js +17 -0
- package/dist/pg/scripts/squawk.js.map +1 -0
- package/dist/pg/vitest.global-setup.d.ts +3 -0
- package/dist/pg/vitest.global-setup.d.ts.map +1 -0
- package/dist/pg/vitest.global-setup.js +8 -0
- package/dist/pg/vitest.global-setup.js.map +1 -0
- package/dist/registry.d.ts +27 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +49 -0
- package/dist/registry.js.map +1 -0
- package/dist/sqlite/backend.d.ts +40 -0
- package/dist/sqlite/backend.d.ts.map +1 -0
- package/dist/sqlite/backend.js +654 -0
- package/dist/sqlite/backend.js.map +1 -0
- package/dist/sqlite/index.d.ts +3 -0
- package/dist/sqlite/index.d.ts.map +1 -0
- package/dist/sqlite/index.js +3 -0
- package/dist/sqlite/index.js.map +1 -0
- package/dist/sqlite/sqlite.d.ts +61 -0
- package/dist/sqlite/sqlite.d.ts.map +1 -0
- package/dist/sqlite/sqlite.js +247 -0
- package/dist/sqlite/sqlite.js.map +1 -0
- package/dist/testing/backend.testsuite.d.ts +20 -0
- package/dist/testing/backend.testsuite.d.ts.map +1 -0
- package/dist/testing/backend.testsuite.js +1091 -0
- package/dist/testing/backend.testsuite.js.map +1 -0
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +2 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/worker.d.ts +10 -3
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +29 -195
- package/dist/worker.js.map +1 -1
- package/dist/workflow.d.ts +60 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +49 -0
- package/dist/workflow.js.map +1 -0
- package/package.json +16 -6
- package/dist/duration.d.ts.map +0 -1
- package/dist/duration.js.map +0 -1
- package/dist/schema.d.ts.map +0 -1
- package/dist/schema.js.map +0 -1
- /package/dist/{schema.d.ts → core/schema.d.ts} +0 -0
- /package/dist/{schema.js → core/schema.js} +0 -0
package/dist/worker.js
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { executeWorkflow } from "./execution.js";
|
|
2
|
+
import { WorkflowRegistry } from "./registry.js";
|
|
2
3
|
import { randomUUID } from "node:crypto";
|
|
3
4
|
const DEFAULT_LEASE_DURATION_MS = 30 * 1000; // 30s
|
|
4
5
|
const DEFAULT_POLL_INTERVAL_MS = 100; // 100ms
|
|
5
6
|
const DEFAULT_CONCURRENCY = 1;
|
|
6
|
-
/**
|
|
7
|
-
* Signal thrown when a workflow needs to sleep. Contains the time when the
|
|
8
|
-
* workflow should resume.
|
|
9
|
-
*/
|
|
10
|
-
class SleepSignal extends Error {
|
|
11
|
-
resumeAt;
|
|
12
|
-
constructor(resumeAt) {
|
|
13
|
-
super("SleepSignal");
|
|
14
|
-
this.name = "SleepSignal";
|
|
15
|
-
this.resumeAt = resumeAt;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
7
|
/**
|
|
19
8
|
* Runs workflows by polling the backend, dispatching runs across a concurrency
|
|
20
9
|
* pool, and heartbeating/extending leases.
|
|
@@ -22,22 +11,22 @@ class SleepSignal extends Error {
|
|
|
22
11
|
export class Worker {
|
|
23
12
|
backend;
|
|
24
13
|
workerIds;
|
|
25
|
-
|
|
14
|
+
registry = new WorkflowRegistry();
|
|
26
15
|
activeExecutions = new Set();
|
|
27
16
|
running = false;
|
|
28
17
|
loopPromise = null;
|
|
29
18
|
constructor(options) {
|
|
30
19
|
this.backend = options.backend;
|
|
20
|
+
for (const workflow of options.workflows) {
|
|
21
|
+
this.registry.register(workflow);
|
|
22
|
+
}
|
|
31
23
|
const concurrency = Math.max(DEFAULT_CONCURRENCY, options.concurrency ?? DEFAULT_CONCURRENCY);
|
|
32
24
|
// generate worker IDs for every concurrency slot
|
|
33
25
|
this.workerIds = Array.from({ length: concurrency }, () => randomUUID());
|
|
34
|
-
// register workflows
|
|
35
|
-
for (const workflow of options.workflows) {
|
|
36
|
-
this.registeredWorkflows.set(workflow.name, workflow);
|
|
37
|
-
}
|
|
38
26
|
}
|
|
39
27
|
/**
|
|
40
28
|
* Start the worker. It will begin polling for and executing workflows.
|
|
29
|
+
* @returns Promise resolved when started
|
|
41
30
|
*/
|
|
42
31
|
async start() {
|
|
43
32
|
if (this.running)
|
|
@@ -49,6 +38,7 @@ export class Worker {
|
|
|
49
38
|
/**
|
|
50
39
|
* Stop the worker gracefully. Waits for all active workflow runs to complete
|
|
51
40
|
* before returning.
|
|
41
|
+
* @returns Promise resolved when stopped
|
|
52
42
|
*/
|
|
53
43
|
async stop() {
|
|
54
44
|
this.running = false;
|
|
@@ -62,6 +52,7 @@ export class Worker {
|
|
|
62
52
|
/**
|
|
63
53
|
* Processes one round of work claims and execution. Exposed for testing.
|
|
64
54
|
* Returns the number of workflow runs claimed.
|
|
55
|
+
* @returns Number of workflow runs claimed
|
|
65
56
|
*/
|
|
66
57
|
async tick() {
|
|
67
58
|
const availableSlots = this.concurrency - this.activeExecutions.size;
|
|
@@ -79,6 +70,7 @@ export class Worker {
|
|
|
79
70
|
}
|
|
80
71
|
/**
|
|
81
72
|
* Get the configured concurrency limit.
|
|
73
|
+
* @returns Concurrency limit
|
|
82
74
|
*/
|
|
83
75
|
get concurrency() {
|
|
84
76
|
return this.workerIds.length;
|
|
@@ -103,7 +95,7 @@ export class Worker {
|
|
|
103
95
|
}
|
|
104
96
|
}
|
|
105
97
|
/*
|
|
106
|
-
*
|
|
98
|
+
* Claim and process a workflow run for the given worker ID. Do not await the
|
|
107
99
|
* processing here to avoid blocking the caller.
|
|
108
100
|
* Returns the claimed workflow run, or null if none was available.
|
|
109
101
|
*/
|
|
@@ -115,14 +107,16 @@ export class Worker {
|
|
|
115
107
|
});
|
|
116
108
|
if (!workflowRun)
|
|
117
109
|
return null;
|
|
118
|
-
|
|
119
|
-
const workflow = this.registeredWorkflows.get(workflowRun.workflowName);
|
|
110
|
+
const workflow = this.registry.get(workflowRun.workflowName, workflowRun.version);
|
|
120
111
|
if (!workflow) {
|
|
112
|
+
const versionStr = workflowRun.version
|
|
113
|
+
? ` (version: ${workflowRun.version})`
|
|
114
|
+
: "";
|
|
121
115
|
await this.backend.failWorkflowRun({
|
|
122
116
|
workflowRunId: workflowRun.id,
|
|
123
117
|
workerId,
|
|
124
118
|
error: {
|
|
125
|
-
message: `Workflow "${workflowRun.workflowName}" is not registered`,
|
|
119
|
+
message: `Workflow "${workflowRun.workflowName}"${versionStr} is not registered`,
|
|
126
120
|
},
|
|
127
121
|
});
|
|
128
122
|
return null;
|
|
@@ -147,87 +141,26 @@ export class Worker {
|
|
|
147
141
|
/**
|
|
148
142
|
* Process a workflow execution, handling heartbeats, step execution, and
|
|
149
143
|
* marking success or failure.
|
|
144
|
+
* @param execution - Workflow execution
|
|
145
|
+
* @param workflow - Workflow to execute
|
|
146
|
+
* @returns Promise resolved when processing completes
|
|
150
147
|
*/
|
|
151
148
|
async processExecutionInBackground(execution, workflow) {
|
|
152
149
|
// start heartbeating
|
|
153
150
|
execution.startHeartbeat();
|
|
154
151
|
try {
|
|
155
|
-
|
|
156
|
-
const attempts = [];
|
|
157
|
-
let cursor;
|
|
158
|
-
do {
|
|
159
|
-
const response = await this.backend.listStepAttempts({
|
|
160
|
-
workflowRunId: execution.workflowRun.id,
|
|
161
|
-
...(cursor ? { after: cursor } : {}),
|
|
162
|
-
limit: 1000,
|
|
163
|
-
});
|
|
164
|
-
attempts.push(...response.data);
|
|
165
|
-
cursor = response.pagination.next ?? undefined;
|
|
166
|
-
} while (cursor);
|
|
167
|
-
// mark any sleep steps as completed if their sleep duration has elapsed,
|
|
168
|
-
// or rethrow SleepSignal if still sleeping
|
|
169
|
-
for (let i = 0; i < attempts.length; i++) {
|
|
170
|
-
const attempt = attempts[i];
|
|
171
|
-
if (!attempt)
|
|
172
|
-
continue;
|
|
173
|
-
if (attempt.status === "running" &&
|
|
174
|
-
attempt.kind === "sleep" &&
|
|
175
|
-
attempt.context?.kind === "sleep") {
|
|
176
|
-
const now = Date.now();
|
|
177
|
-
const resumeAt = new Date(attempt.context.resumeAt);
|
|
178
|
-
const resumeAtMs = resumeAt.getTime();
|
|
179
|
-
if (now < resumeAtMs) {
|
|
180
|
-
// sleep duration HAS NOT elapsed yet, throw signal to put workflow
|
|
181
|
-
// back to sleep
|
|
182
|
-
throw new SleepSignal(resumeAt);
|
|
183
|
-
}
|
|
184
|
-
// sleep duration HAS elapsed, mark the step as completed and continue
|
|
185
|
-
const completed = await this.backend.completeStepAttempt({
|
|
186
|
-
workflowRunId: execution.workflowRun.id,
|
|
187
|
-
stepAttemptId: attempt.id,
|
|
188
|
-
workerId: execution.workerId,
|
|
189
|
-
output: null,
|
|
190
|
-
});
|
|
191
|
-
// update cache w/ completed attempt
|
|
192
|
-
attempts[i] = completed;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
// create step executor
|
|
196
|
-
const executor = new StepExecutor({
|
|
152
|
+
await executeWorkflow({
|
|
197
153
|
backend: this.backend,
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
});
|
|
202
|
-
// execute workflow
|
|
203
|
-
const output = await workflow.fn({
|
|
204
|
-
input: execution.workflowRun.input,
|
|
205
|
-
step: executor,
|
|
206
|
-
version: execution.workflowRun.version,
|
|
207
|
-
});
|
|
208
|
-
// mark success
|
|
209
|
-
await this.backend.completeWorkflowRun({
|
|
210
|
-
workflowRunId: execution.workflowRun.id,
|
|
154
|
+
workflowRun: execution.workflowRun,
|
|
155
|
+
workflowFn: workflow.fn,
|
|
156
|
+
workflowVersion: execution.workflowRun.version,
|
|
211
157
|
workerId: execution.workerId,
|
|
212
|
-
output: (output ?? null),
|
|
213
158
|
});
|
|
214
159
|
}
|
|
215
160
|
catch (error) {
|
|
216
|
-
//
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
workflowRunId: execution.workflowRun.id,
|
|
220
|
-
workerId: execution.workerId,
|
|
221
|
-
availableAt: error.resumeAt,
|
|
222
|
-
});
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
// mark failure
|
|
226
|
-
await this.backend.failWorkflowRun({
|
|
227
|
-
workflowRunId: execution.workflowRun.id,
|
|
228
|
-
workerId: execution.workerId,
|
|
229
|
-
error: serializeError(error),
|
|
230
|
-
});
|
|
161
|
+
// specifically for unexpected errors in the execution wrapper itself, not
|
|
162
|
+
// for business logic errors (those are handled inside executeWorkflow)
|
|
163
|
+
console.error(`Critical error during workflow execution for run ${execution.workflowRun.id}:`, error);
|
|
231
164
|
}
|
|
232
165
|
}
|
|
233
166
|
}
|
|
@@ -275,109 +208,10 @@ class WorkflowExecution {
|
|
|
275
208
|
}
|
|
276
209
|
}
|
|
277
210
|
/**
|
|
278
|
-
*
|
|
279
|
-
*
|
|
280
|
-
|
|
281
|
-
class StepExecutor {
|
|
282
|
-
backend;
|
|
283
|
-
workflowRunId;
|
|
284
|
-
workerId;
|
|
285
|
-
successfulAttemptsByName = new Map();
|
|
286
|
-
constructor(options) {
|
|
287
|
-
this.backend = options.backend;
|
|
288
|
-
this.workflowRunId = options.workflowRunId;
|
|
289
|
-
this.workerId = options.workerId;
|
|
290
|
-
// load successful attempts into history
|
|
291
|
-
for (const attempt of options.attempts) {
|
|
292
|
-
// 'succeeded' status is deprecated
|
|
293
|
-
if (attempt.status === "succeeded" || attempt.status === "completed") {
|
|
294
|
-
this.successfulAttemptsByName.set(attempt.stepName, attempt);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
async run(config, fn) {
|
|
299
|
-
const { name } = config;
|
|
300
|
-
// return cached result if available
|
|
301
|
-
const existingAttempt = this.successfulAttemptsByName.get(name);
|
|
302
|
-
if (existingAttempt) {
|
|
303
|
-
return existingAttempt.output;
|
|
304
|
-
}
|
|
305
|
-
// not in cache, create new step attempt
|
|
306
|
-
const attempt = await this.backend.createStepAttempt({
|
|
307
|
-
workflowRunId: this.workflowRunId,
|
|
308
|
-
workerId: this.workerId,
|
|
309
|
-
stepName: name,
|
|
310
|
-
kind: "function",
|
|
311
|
-
config: {},
|
|
312
|
-
context: null,
|
|
313
|
-
});
|
|
314
|
-
try {
|
|
315
|
-
// execute step function
|
|
316
|
-
const result = await fn();
|
|
317
|
-
// convert undefined to null for JSON compatibility
|
|
318
|
-
const output = (result ?? null);
|
|
319
|
-
// mark success
|
|
320
|
-
const savedAttempt = await this.backend.completeStepAttempt({
|
|
321
|
-
workflowRunId: this.workflowRunId,
|
|
322
|
-
stepAttemptId: attempt.id,
|
|
323
|
-
workerId: this.workerId,
|
|
324
|
-
output,
|
|
325
|
-
});
|
|
326
|
-
// cache result
|
|
327
|
-
this.successfulAttemptsByName.set(name, savedAttempt);
|
|
328
|
-
return savedAttempt.output;
|
|
329
|
-
}
|
|
330
|
-
catch (error) {
|
|
331
|
-
// mark failure
|
|
332
|
-
await this.backend.failStepAttempt({
|
|
333
|
-
workflowRunId: this.workflowRunId,
|
|
334
|
-
stepAttemptId: attempt.id,
|
|
335
|
-
workerId: this.workerId,
|
|
336
|
-
error: serializeError(error),
|
|
337
|
-
});
|
|
338
|
-
throw error;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
async sleep(name, duration) {
|
|
342
|
-
// return cached result if this sleep already completed
|
|
343
|
-
const existingAttempt = this.successfulAttemptsByName.get(name);
|
|
344
|
-
if (existingAttempt)
|
|
345
|
-
return;
|
|
346
|
-
// create new step attempt for the sleep
|
|
347
|
-
const durationMs = parseDuration(duration);
|
|
348
|
-
const resumeAt = new Date(Date.now() + durationMs);
|
|
349
|
-
await this.backend.createStepAttempt({
|
|
350
|
-
workflowRunId: this.workflowRunId,
|
|
351
|
-
workerId: this.workerId,
|
|
352
|
-
stepName: name,
|
|
353
|
-
kind: "sleep",
|
|
354
|
-
config: {},
|
|
355
|
-
context: {
|
|
356
|
-
kind: "sleep",
|
|
357
|
-
resumeAt: resumeAt.toISOString(),
|
|
358
|
-
},
|
|
359
|
-
});
|
|
360
|
-
// throw sleep signal to trigger postponement
|
|
361
|
-
// we do not mark the step as completed here; it will be updated
|
|
362
|
-
// when the workflow resumes
|
|
363
|
-
throw new SleepSignal(resumeAt);
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Serialize an error to a JSON-compatible format.
|
|
211
|
+
* Sleep for a given duration.
|
|
212
|
+
* @param ms - Milliseconds to sleep
|
|
213
|
+
* @returns Promise resolved after sleeping
|
|
368
214
|
*/
|
|
369
|
-
function serializeError(error) {
|
|
370
|
-
if (error instanceof Error) {
|
|
371
|
-
return {
|
|
372
|
-
name: error.name,
|
|
373
|
-
message: error.message,
|
|
374
|
-
stack: error.stack ?? null,
|
|
375
|
-
};
|
|
376
|
-
}
|
|
377
|
-
return {
|
|
378
|
-
message: String(error),
|
|
379
|
-
};
|
|
380
|
-
}
|
|
381
215
|
function sleep(ms) {
|
|
382
216
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
383
217
|
}
|
package/dist/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from "./core/schema.js";
|
|
2
|
+
import { WorkflowFunction } from "./execution.js";
|
|
3
|
+
/**
|
|
4
|
+
* A workflow spec.
|
|
5
|
+
*/
|
|
6
|
+
export interface WorkflowSpec<Input, Output, RawInput> {
|
|
7
|
+
/** The name of the workflow. */
|
|
8
|
+
readonly name: string;
|
|
9
|
+
/** The version of the workflow. */
|
|
10
|
+
readonly version?: string;
|
|
11
|
+
/** The schema used to validate inputs. */
|
|
12
|
+
readonly schema?: StandardSchemaV1<RawInput, Input>;
|
|
13
|
+
/** Phantom type carrier - won't exist at runtime. */
|
|
14
|
+
readonly __types?: {
|
|
15
|
+
output: Output;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Define a workflow spec.
|
|
20
|
+
* @param spec - The workflow spec
|
|
21
|
+
* @returns The workflow spec
|
|
22
|
+
*/
|
|
23
|
+
export declare function defineWorkflowSpec<Input, Output = unknown, RawInput = Input>(spec: WorkflowSpec<Input, Output, RawInput>): WorkflowSpec<Input, Output, RawInput>;
|
|
24
|
+
/**
|
|
25
|
+
* Define a workflow spec.
|
|
26
|
+
* @param spec - The workflow spec
|
|
27
|
+
* @returns The workflow spec
|
|
28
|
+
* @deprecated use `defineWorkflowSpec` instead
|
|
29
|
+
*/
|
|
30
|
+
export declare const declareWorkflow: typeof defineWorkflowSpec;
|
|
31
|
+
/**
|
|
32
|
+
* A workflow spec and implementation.
|
|
33
|
+
*/
|
|
34
|
+
export interface Workflow<Input, Output, RawInput> {
|
|
35
|
+
/** The workflow spec. */
|
|
36
|
+
readonly spec: WorkflowSpec<Input, Output, RawInput>;
|
|
37
|
+
/** The workflow implementation function. */
|
|
38
|
+
readonly fn: WorkflowFunction<Input, Output>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Define a workflow.
|
|
42
|
+
* @param spec - The workflow spec
|
|
43
|
+
* @param fn - The workflow implementation function
|
|
44
|
+
* @returns The workflow
|
|
45
|
+
*/
|
|
46
|
+
export declare function defineWorkflow<Input, Output, RawInput = Input>(spec: WorkflowSpec<Input, Output, RawInput>, fn: WorkflowFunction<Input, Output>): Workflow<Input, Output, RawInput>;
|
|
47
|
+
/**
|
|
48
|
+
* Define a workflow.
|
|
49
|
+
* @param spec - The workflow spec
|
|
50
|
+
* @param fn - The workflow implementation function
|
|
51
|
+
* @returns The workflow
|
|
52
|
+
*/
|
|
53
|
+
export declare function defineWorkflow<Input, WorkflowFn extends WorkflowFunction<Input, unknown> = WorkflowFunction<Input, unknown>, RawInput = Input>(spec: WorkflowSpec<Input, Awaited<ReturnType<WorkflowFn>>, RawInput>, fn: WorkflowFn): Workflow<Input, Awaited<ReturnType<WorkflowFn>>, RawInput>;
|
|
54
|
+
/**
|
|
55
|
+
* Type guard to check if a value is a Workflow object.
|
|
56
|
+
* @param value - The value to check
|
|
57
|
+
* @returns True if the value is a Workflow
|
|
58
|
+
*/
|
|
59
|
+
export declare function isWorkflow(value: unknown): boolean;
|
|
60
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ;IACnD,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpD,qDAAqD;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,QAAQ,GAAG,KAAK,EAC1E,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,GAC1C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAEvC;AAED;;;;;GAKG;AACH,eAAO,MAAM,eAAe,2BAAqB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ;IAC/C,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrD,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AAIH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,KAAK,EAC5D,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAC3C,EAAE,EAAE,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,GAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAErC;;;;;GAKG;AAGH,wBAAgB,cAAc,CAC5B,KAAK,EACL,UAAU,SAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,gBAAgB,CACpE,KAAK,EACL,OAAO,CACR,EACD,QAAQ,GAAG,KAAK,EAEhB,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,EACpE,EAAE,EAAE,UAAU,GACb,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAmB9D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,WAkBxC"}
|
package/dist/workflow.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Define a workflow spec.
|
|
3
|
+
* @param spec - The workflow spec
|
|
4
|
+
* @returns The workflow spec
|
|
5
|
+
*/
|
|
6
|
+
export function defineWorkflowSpec(spec) {
|
|
7
|
+
return spec;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Define a workflow spec.
|
|
11
|
+
* @param spec - The workflow spec
|
|
12
|
+
* @returns The workflow spec
|
|
13
|
+
* @deprecated use `defineWorkflowSpec` instead
|
|
14
|
+
*/
|
|
15
|
+
export const declareWorkflow = defineWorkflowSpec;
|
|
16
|
+
/**
|
|
17
|
+
* Define a workflow.
|
|
18
|
+
* @internal
|
|
19
|
+
* @param spec - The workflow spec
|
|
20
|
+
* @param fn - The workflow implementation function
|
|
21
|
+
* @returns The workflow
|
|
22
|
+
*/
|
|
23
|
+
export function defineWorkflow(spec, fn) {
|
|
24
|
+
return {
|
|
25
|
+
spec,
|
|
26
|
+
fn,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Type guard to check if a value is a Workflow object.
|
|
31
|
+
* @param value - The value to check
|
|
32
|
+
* @returns True if the value is a Workflow
|
|
33
|
+
*/
|
|
34
|
+
export function isWorkflow(value) {
|
|
35
|
+
if (typeof value !== "object" || value === null) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const maybeWorkflow = value;
|
|
39
|
+
if (!("spec" in maybeWorkflow) || !("fn" in maybeWorkflow)) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const { spec, fn } = maybeWorkflow;
|
|
43
|
+
return (typeof spec === "object" &&
|
|
44
|
+
spec !== null &&
|
|
45
|
+
"name" in spec &&
|
|
46
|
+
typeof spec.name === "string" &&
|
|
47
|
+
typeof fn === "function");
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../workflow.ts"],"names":[],"mappings":"AAmBA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA2C;IAE3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC;AA8ClD;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,IAA2C,EAC3C,EAAmC;IAEnC,OAAO;QACL,IAAI;QACJ,EAAE;KACH,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,KAAgC,CAAC;IACvD,IAAI,CAAC,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,aAAa,CAAC;IACnC,OAAO,CACL,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,MAAM,IAAI,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAC7B,OAAO,EAAE,KAAK,UAAU,CACzB,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openworkflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Open-source TypeScript framework for building durable, resumable workflows",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"durable execution",
|
|
@@ -27,11 +27,20 @@
|
|
|
27
27
|
"type": "module",
|
|
28
28
|
"exports": {
|
|
29
29
|
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
30
31
|
"development": "./index.ts",
|
|
31
|
-
"default": "./dist/index.js"
|
|
32
|
-
|
|
32
|
+
"default": "./dist/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./internal": {
|
|
35
|
+
"types": "./dist/internal.d.ts",
|
|
36
|
+
"development": "./internal.ts",
|
|
37
|
+
"default": "./dist/internal.js"
|
|
33
38
|
}
|
|
34
39
|
},
|
|
40
|
+
"bin": {
|
|
41
|
+
"openworkflow": "./dist/bin/openworkflow.js",
|
|
42
|
+
"ow": "./dist/bin/openworkflow.js"
|
|
43
|
+
},
|
|
35
44
|
"files": [
|
|
36
45
|
"dist"
|
|
37
46
|
],
|
|
@@ -40,10 +49,11 @@
|
|
|
40
49
|
"prepublishOnly": "npm run build"
|
|
41
50
|
},
|
|
42
51
|
"devDependencies": {
|
|
43
|
-
"arktype": "^2.1.
|
|
44
|
-
"valibot": "^1.
|
|
52
|
+
"arktype": "^2.1.29",
|
|
53
|
+
"valibot": "^1.2.0",
|
|
54
|
+
"vitest": "^4.0.16",
|
|
45
55
|
"yup": "^1.7.1",
|
|
46
|
-
"zod": "^4.
|
|
56
|
+
"zod": "^4.3.5"
|
|
47
57
|
},
|
|
48
58
|
"engines": {
|
|
49
59
|
"node": ">=20"
|
package/dist/duration.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../duration.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACnD,KAAK,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AACxC,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC;AACpC,KAAK,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC;AACjC,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;AACnD,KAAK,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC;AAC3D,KAAK,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,CAAC;AAC3D,KAAK,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;AAC7E,KAAK,IAAI,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,IAAI,GACJ,KAAK,GACL,OAAO,GACP,OAAO,GACP,YAAY,CAAC;AACjB,KAAK,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACxE,MAAM,MAAM,cAAc,GACtB,GAAG,MAAM,EAAE,GACX,GAAG,MAAM,GAAG,WAAW,EAAE,GACzB,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC;AAE/B;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CA+DzD"}
|
package/dist/duration.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../duration.ts"],"names":[],"mappings":"AAuBA;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAmB;IAC/C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CACjB,0DAA0D,GAAG,OAAO,GAAG,CACxE,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,GAAG,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9D,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,gCAAgC;IAE9E,MAAM,WAAW,GAA2B;QAC1C,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,EAAE,EAAE,CAAC;QACL,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,IAAI;QACV,CAAC,EAAE,IAAI;QACP,MAAM,EAAE,EAAE,GAAG,IAAI;QACjB,OAAO,EAAE,EAAE,GAAG,IAAI;QAClB,GAAG,EAAE,EAAE,GAAG,IAAI;QACd,IAAI,EAAE,EAAE,GAAG,IAAI;QACf,CAAC,EAAE,EAAE,GAAG,IAAI;QACZ,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QACpB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QACrB,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QAClB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QACnB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;QACjB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QACxB,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QACzB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QACtB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAC7B,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAC9B,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAC1B,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,aAAa;QACrB,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc;QACrB,EAAE,EAAE,cAAc;QAClB,GAAG,EAAE,cAAc;QACnB,CAAC,EAAE,cAAc;KAClB,CAAC;IAEF,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,QAAQ,GAAG,UAAU,CAAC;AAC/B,CAAC"}
|
package/dist/schema.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,WAAW,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;IAC/D,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CAC7D;AAGD,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC,gDAAgD;IAChD,MAAM,WAAW,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;QACpD,0CAA0C;QAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpB,6CAA6C;QAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,sCAAsC;QACtC,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,OAAO,KACX,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,iDAAiD;QACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;KACnD;IAED,qDAAqD;IACrD,MAAM,MAAM,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;IAEnE,mDAAmD;IACnD,MAAM,WAAW,aAAa,CAAC,MAAM;QACnC,8BAA8B;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,+BAA+B;QAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;KAC7B;IAED,gDAAgD;IAChD,MAAM,WAAW,aAAa;QAC5B,uCAAuC;QACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;KACnC;IAED,iDAAiD;IACjD,MAAM,WAAW,KAAK;QACpB,sCAAsC;QACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,qCAAqC;QACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC,EAAE,GAAG,SAAS,CAAC;KACpE;IAED,+CAA+C;IAC/C,MAAM,WAAW,WAAW;QAC1B,2CAA2C;QAC3C,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;KAC3B;IAED,2CAA2C;IAC3C,MAAM,WAAW,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK;QACpD,oCAAoC;QACpC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;QACtB,qCAAqC;QACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB;IAED,kDAAkD;IAClD,MAAM,MAAM,UAAU,CAAC,MAAM,SAAS,gBAAgB,IAAI,WAAW,CACnE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAC7B,CAAC,OAAO,CAAC,CAAC;IAEX,mDAAmD;IACnD,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,gBAAgB,IAAI,WAAW,CACpE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAC7B,CAAC,QAAQ,CAAC,CAAC;IAIZ,OAAO,EAAE,CAAC;CACX"}
|
package/dist/schema.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../schema.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
File without changes
|