@webda/workflow 0.0.0-stage → 4.0.0-beta.13

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 (48) hide show
  1. package/LICENSE +166 -0
  2. package/README.md +54 -2
  3. package/lib/authoring.d.ts +112 -0
  4. package/lib/authoring.d.ts.map +1 -0
  5. package/lib/authoring.js +107 -0
  6. package/lib/authoring.js.map +1 -0
  7. package/lib/expression.d.ts +21 -0
  8. package/lib/expression.d.ts.map +1 -0
  9. package/lib/expression.js +196 -0
  10. package/lib/expression.js.map +1 -0
  11. package/lib/graph.d.ts +291 -0
  12. package/lib/graph.d.ts.map +1 -0
  13. package/lib/graph.js +72 -0
  14. package/lib/graph.js.map +1 -0
  15. package/lib/hooks.d.ts +38 -0
  16. package/lib/hooks.d.ts.map +1 -0
  17. package/lib/hooks.js +23 -0
  18. package/lib/hooks.js.map +1 -0
  19. package/lib/index.d.ts +11 -0
  20. package/lib/index.d.ts.map +1 -0
  21. package/lib/index.js +15 -0
  22. package/lib/index.js.map +1 -0
  23. package/lib/interpreter.d.ts +63 -0
  24. package/lib/interpreter.d.ts.map +1 -0
  25. package/lib/interpreter.js +330 -0
  26. package/lib/interpreter.js.map +1 -0
  27. package/lib/models/workflow.model.d.ts +71 -0
  28. package/lib/models/workflow.model.d.ts.map +1 -0
  29. package/lib/models/workflow.model.js +70 -0
  30. package/lib/models/workflow.model.js.map +1 -0
  31. package/lib/models/workflowinstance.model.d.ts +132 -0
  32. package/lib/models/workflowinstance.model.d.ts.map +1 -0
  33. package/lib/models/workflowinstance.model.js +168 -0
  34. package/lib/models/workflowinstance.model.js.map +1 -0
  35. package/lib/models/workflowsignal.model.d.ts +51 -0
  36. package/lib/models/workflowsignal.model.d.ts.map +1 -0
  37. package/lib/models/workflowsignal.model.js +53 -0
  38. package/lib/models/workflowsignal.model.js.map +1 -0
  39. package/lib/models/workflowtask.model.d.ts +103 -0
  40. package/lib/models/workflowtask.model.d.ts.map +1 -0
  41. package/lib/models/workflowtask.model.js +104 -0
  42. package/lib/models/workflowtask.model.js.map +1 -0
  43. package/lib/workflow.service.d.ts +670 -0
  44. package/lib/workflow.service.d.ts.map +1 -0
  45. package/lib/workflow.service.js +1950 -0
  46. package/lib/workflow.service.js.map +1 -0
  47. package/package.json +68 -3
  48. package/webda.module.json +2670 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression.js","sources":["../src/expression.ts"],"names":[],"mappings":"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"}
package/lib/graph.d.ts ADDED
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Binary operators of a flow expression
3
+ *
4
+ * `&&`, `||` and `??` short-circuit, as in JavaScript.
5
+ */
6
+ export type BinaryOp = "==" | "!=" | "===" | "!==" | "<" | "<=" | ">" | ">=" | "+" | "-" | "*" | "/" | "%" | "&&" | "||" | "??";
7
+ /**
8
+ * Every binary operator, to validate an expression
9
+ */
10
+ export declare const BINARY_OPS: readonly BinaryOp[];
11
+ /**
12
+ * A pure expression of a flow, JSON only: no `eval` ever runs it
13
+ */
14
+ export type Expr = {
15
+ lit: any;
16
+ } | {
17
+ var: string;
18
+ } | {
19
+ get: [Expr, Expr];
20
+ } | {
21
+ op: BinaryOp;
22
+ args: [Expr, Expr];
23
+ } | {
24
+ not: Expr;
25
+ } | {
26
+ neg: Expr;
27
+ } | {
28
+ cond: [Expr, Expr, Expr];
29
+ } | {
30
+ obj: Record<string, Expr>;
31
+ } | {
32
+ arr: Expr[];
33
+ } | {
34
+ tpl: (string | Expr)[];
35
+ };
36
+ /**
37
+ * Options of a task, and defaults of a flow
38
+ */
39
+ export interface TaskOptions {
40
+ /**
41
+ * Retries after the first attempt
42
+ * @default 0
43
+ */
44
+ retries?: number;
45
+ /**
46
+ * Delay growth between attempts
47
+ * @default "exponential"
48
+ */
49
+ backoff?: "fixed" | "exponential";
50
+ /**
51
+ * Delay before the first retry (Duration syntax)
52
+ * @default "1s"
53
+ */
54
+ delay?: string;
55
+ /**
56
+ * Maximum duration of one attempt (Duration syntax)
57
+ */
58
+ timeout?: string;
59
+ /**
60
+ * Run the task as the system instead of the launcher
61
+ */
62
+ useSystem?: boolean;
63
+ }
64
+ /**
65
+ * Run an operation (or a built-in)
66
+ */
67
+ export interface TaskStmt {
68
+ kind: "task";
69
+ id: string;
70
+ /**
71
+ * Operation id, or a built-in (`Date.Now`, `Workflow.Sleep`...)
72
+ */
73
+ operation: string;
74
+ input: Expr;
75
+ options?: TaskOptions;
76
+ /**
77
+ * Variable receiving the task result
78
+ */
79
+ assign?: string;
80
+ }
81
+ /**
82
+ * Assign a variable
83
+ */
84
+ export interface AssignStmt {
85
+ kind: "assign";
86
+ id: string;
87
+ name: string;
88
+ value: Expr;
89
+ }
90
+ /**
91
+ * Conditional
92
+ */
93
+ export interface IfStmt {
94
+ kind: "if";
95
+ id: string;
96
+ cond: Expr;
97
+ then: Stmt[];
98
+ else?: Stmt[];
99
+ }
100
+ /**
101
+ * Loop over the items of an array
102
+ */
103
+ export interface ForOfStmt {
104
+ kind: "forOf";
105
+ id: string;
106
+ item: string;
107
+ items: Expr;
108
+ body: Stmt[];
109
+ }
110
+ /**
111
+ * Loop while a condition holds
112
+ */
113
+ export interface WhileStmt {
114
+ kind: "while";
115
+ id: string;
116
+ cond: Expr;
117
+ body: Stmt[];
118
+ }
119
+ /**
120
+ * Catch the errors of a block
121
+ */
122
+ export interface TryStmt {
123
+ kind: "try";
124
+ id: string;
125
+ body: Stmt[];
126
+ /**
127
+ * Variable receiving the {@link FlowError}
128
+ */
129
+ catchVar?: string;
130
+ catch?: Stmt[];
131
+ finally?: Stmt[];
132
+ }
133
+ /**
134
+ * Run branches concurrently
135
+ */
136
+ export interface ParallelStmt {
137
+ kind: "parallel";
138
+ id: string;
139
+ branches: Stmt[][];
140
+ /**
141
+ * Variable receiving the array of branch return values
142
+ */
143
+ assign?: string;
144
+ }
145
+ /**
146
+ * Run a body for each item concurrently
147
+ */
148
+ export interface MapStmt {
149
+ kind: "map";
150
+ id: string;
151
+ items: Expr;
152
+ item: string;
153
+ body: Stmt[];
154
+ /**
155
+ * Maximum number of items running at once
156
+ */
157
+ concurrency?: number;
158
+ /**
159
+ * Variable receiving the array of item return values
160
+ */
161
+ assign?: string;
162
+ }
163
+ /**
164
+ * End the flow (or the branch) with a value
165
+ */
166
+ export interface ReturnStmt {
167
+ kind: "return";
168
+ id: string;
169
+ value?: Expr;
170
+ }
171
+ /**
172
+ * Throw a {@link FlowError} with code `FlowError`
173
+ */
174
+ export interface ThrowStmt {
175
+ kind: "throw";
176
+ id: string;
177
+ value: Expr;
178
+ }
179
+ /**
180
+ * A statement of a flow, each one with a structural `id`
181
+ */
182
+ export type Stmt = TaskStmt | AssignStmt | IfStmt | ForOfStmt | WhileStmt | TryStmt | ParallelStmt | MapStmt | ReturnStmt | ThrowStmt;
183
+ /**
184
+ * Kinds of statement
185
+ */
186
+ export type StmtKind = Stmt["kind"];
187
+ /**
188
+ * A flow: its graph, input schema and defaults
189
+ */
190
+ export interface FlowDefinition {
191
+ /**
192
+ * Operation id `<Class>.<Method>`
193
+ */
194
+ id: string;
195
+ /**
196
+ * {@link flowVersion} of the definition
197
+ */
198
+ version: string;
199
+ /**
200
+ * Names of the flow parameters, in order
201
+ */
202
+ params: string[];
203
+ /**
204
+ * JSON schema of the input
205
+ */
206
+ input: object;
207
+ /**
208
+ * JSON schema of the output
209
+ */
210
+ output?: object;
211
+ body: Stmt[];
212
+ /**
213
+ * Default options of every task
214
+ */
215
+ options?: TaskOptions;
216
+ source: "code" | "stored";
217
+ }
218
+ /**
219
+ * A {@link FlowDefinition} as models and configuration hold it
220
+ *
221
+ * The statements are recursive: describing them in a JSON schema makes the schema generator explode, so they are
222
+ * plain JSON there. {@link validateExpr} checks untrusted expressions.
223
+ */
224
+ export interface FlowDefinitionData extends Omit<FlowDefinition, "body" | "version" | "source"> {
225
+ /**
226
+ * The statements ({@link Stmt}[])
227
+ */
228
+ body: any[];
229
+ /**
230
+ * {@link flowVersion} of the definition, computed when missing
231
+ */
232
+ version?: string;
233
+ /**
234
+ * Where the flow comes from
235
+ * @default "code"
236
+ */
237
+ source?: "code" | "stored";
238
+ }
239
+ /**
240
+ * An error, as seen by the flow: plain data
241
+ */
242
+ export interface FlowError {
243
+ code: string;
244
+ message: string;
245
+ operation: string;
246
+ }
247
+ /**
248
+ * Outcome of a task
249
+ */
250
+ export type JournalEntry = ({
251
+ result: any;
252
+ } | {
253
+ error: FlowError;
254
+ }) & {
255
+ /**
256
+ * When the outcome was journaled (ms)
257
+ */
258
+ at?: number;
259
+ /**
260
+ * Instance revision that journaled it: the order of the outcomes
261
+ */
262
+ seq?: number;
263
+ };
264
+ /**
265
+ * Outcome of each finished task, keyed by task key (`<statement id>@<iteration path>`)
266
+ */
267
+ export type Journal = Record<string, JournalEntry>;
268
+ /**
269
+ * Built-in operations, run by the engine
270
+ */
271
+ export declare const BUILTINS: {
272
+ readonly DateNow: "Date.Now";
273
+ readonly RandomNumber: "Random.Number";
274
+ readonly RandomUuid: "Random.Uuid";
275
+ readonly Sleep: "Workflow.Sleep";
276
+ readonly WaitForEvent: "Wait.ForEvent";
277
+ readonly Start: "Workflow.Start";
278
+ };
279
+ /**
280
+ * Canonical JSON: object keys sorted, undefined values dropped
281
+ * @param value - the value
282
+ * @returns the JSON text
283
+ */
284
+ export declare function canonicalJson(value: any): string;
285
+ /**
286
+ * Version of a flow: hex SHA-256 of the canonical JSON of its params, body and options
287
+ * @param def - the flow definition
288
+ * @returns the version
289
+ */
290
+ export declare function flowVersion(def: Pick<FlowDefinition, "params" | "body" | "options">): string;
291
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
package/lib/graph.js ADDED
@@ -0,0 +1,72 @@
1
+ import { createHash } from "node:crypto";
2
+ /**
3
+ * Every binary operator, to validate an expression
4
+ */
5
+ export const BINARY_OPS = [
6
+ "==",
7
+ "!=",
8
+ "===",
9
+ "!==",
10
+ "<",
11
+ "<=",
12
+ ">",
13
+ ">=",
14
+ "+",
15
+ "-",
16
+ "*",
17
+ "/",
18
+ "%",
19
+ "&&",
20
+ "||",
21
+ "??"
22
+ ];
23
+ /**
24
+ * Built-in operations, run by the engine
25
+ */
26
+ export const BUILTINS = {
27
+ DateNow: "Date.Now",
28
+ RandomNumber: "Random.Number",
29
+ RandomUuid: "Random.Uuid",
30
+ Sleep: "Workflow.Sleep",
31
+ WaitForEvent: "Wait.ForEvent",
32
+ Start: "Workflow.Start"
33
+ };
34
+ /**
35
+ * Canonical JSON: object keys sorted, undefined values dropped
36
+ * @param value - the value
37
+ * @returns the JSON text
38
+ */
39
+ export function canonicalJson(value) {
40
+ return JSON.stringify(sortKeys(value));
41
+ }
42
+ /**
43
+ * Copy a value with its object keys sorted
44
+ * @param value - the value
45
+ * @returns the sorted copy
46
+ */
47
+ function sortKeys(value) {
48
+ if (Array.isArray(value)) {
49
+ return value.map(sortKeys);
50
+ }
51
+ if (value && typeof value === "object") {
52
+ const res = {};
53
+ for (const key of Object.keys(value).sort()) {
54
+ if (value[key] !== undefined) {
55
+ res[key] = sortKeys(value[key]);
56
+ }
57
+ }
58
+ return res;
59
+ }
60
+ return value;
61
+ }
62
+ /**
63
+ * Version of a flow: hex SHA-256 of the canonical JSON of its params, body and options
64
+ * @param def - the flow definition
65
+ * @returns the version
66
+ */
67
+ export function flowVersion(def) {
68
+ return createHash("sha256")
69
+ .update(canonicalJson({ params: def.params, body: def.body, options: def.options }))
70
+ .digest("hex");
71
+ }
72
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAwB;IAC7C,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,KAAK;IACL,GAAG;IACH,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;CACL,CAAC;AAwQF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,UAAU;IACnB,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IACzB,KAAK,EAAE,gBAAgB;IACvB,YAAY,EAAE,eAAe;IAC7B,KAAK,EAAE,gBAAgB;CACf,CAAC;AAEX;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAU;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,KAAU;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAAwB,EAAE,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAwD;IAClF,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SACnF,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC"}
package/lib/hooks.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ /**
2
+ * The controls of the workflow engine, called by the WorkflowInstance actions
3
+ */
4
+ export interface WorkflowControls {
5
+ /**
6
+ * Cancel an instance, its live tasks and its awaited children
7
+ * @param uuid - the instance uuid
8
+ */
9
+ cancelInstance(uuid: string): Promise<void>;
10
+ /**
11
+ * Restart a failed instance from its failed task
12
+ * @param uuid - the instance uuid
13
+ */
14
+ retryInstance(uuid: string): Promise<void>;
15
+ /**
16
+ * Move an instance to another version of its flow
17
+ * @param uuid - the instance uuid
18
+ * @param version - the target version, the latest registered when undefined
19
+ */
20
+ migrateInstance(uuid: string, version?: string): Promise<void>;
21
+ /**
22
+ * Role needed to write a stored workflow
23
+ * @returns the role
24
+ */
25
+ getStoredWorkflowRole(): string;
26
+ }
27
+ /**
28
+ * Set the WorkflowService serving the instance actions (the configured one, at resolve)
29
+ * @param service - the service
30
+ */
31
+ export declare function setWorkflowControls(service: WorkflowControls | undefined): void;
32
+ /**
33
+ * The WorkflowService serving the instance actions
34
+ * @returns the service
35
+ * @throws Error when no WorkflowService is configured
36
+ */
37
+ export declare function useWorkflowControls(): WorkflowControls;
38
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C;;;OAGG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D;;;OAGG;IACH,qBAAqB,IAAI,MAAM,CAAC;CACjC;AAOD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAKtD"}
package/lib/hooks.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The WorkflowService serving the controls
3
+ */
4
+ let controls;
5
+ /**
6
+ * Set the WorkflowService serving the instance actions (the configured one, at resolve)
7
+ * @param service - the service
8
+ */
9
+ export function setWorkflowControls(service) {
10
+ controls = service;
11
+ }
12
+ /**
13
+ * The WorkflowService serving the instance actions
14
+ * @returns the service
15
+ * @throws Error when no WorkflowService is configured
16
+ */
17
+ export function useWorkflowControls() {
18
+ if (!controls) {
19
+ throw new Error("No WorkflowService is configured");
20
+ }
21
+ return controls;
22
+ }
23
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sources":["../src/hooks.ts"],"names":[],"mappings":"AA2BA;;GAEG;AACH,IAAI,QAAsC,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAqC;IACvE,QAAQ,GAAG,OAAO,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export * from "./graph.js";
2
+ export * from "./expression.js";
3
+ export * from "./interpreter.js";
4
+ export * from "./models/workflowinstance.model.js";
5
+ export * from "./models/workflowtask.model.js";
6
+ export * from "./models/workflowsignal.model.js";
7
+ export { Workflow as StoredWorkflow, type StoredWorkflowCron } from "./models/workflow.model.js";
8
+ export * from "./workflow.service.js";
9
+ export * from "./hooks.js";
10
+ export * from "./authoring.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AAEjD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACjG,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,15 @@
1
+ import { registerWebdaPackage } from "@webda/utils";
2
+ export * from "./graph.js";
3
+ export * from "./expression.js";
4
+ export * from "./interpreter.js";
5
+ export * from "./models/workflowinstance.model.js";
6
+ export * from "./models/workflowtask.model.js";
7
+ export * from "./models/workflowsignal.model.js";
8
+ // The model is exported as StoredWorkflow: `Workflow` is the authoring base class of .flow.ts files
9
+ export { Workflow as StoredWorkflow } from "./models/workflow.model.js";
10
+ export * from "./workflow.service.js";
11
+ export * from "./hooks.js";
12
+ export * from "./authoring.js";
13
+ // Refuse a second copy of the package, see registerWebdaPackage
14
+ registerWebdaPackage("@webda/workflow", import.meta.url);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,oGAAoG;AACpG,OAAO,EAAE,QAAQ,IAAI,cAAc,EAA2B,MAAM,4BAA4B,CAAC;AACjG,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAE/B,gEAAgE;AAChE,oBAAoB,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { FlowDefinition, FlowError, Journal, TaskOptions } from "./graph.js";
2
+ /**
3
+ * Maximum number of iterations of a `while`
4
+ */
5
+ export declare const MAX_LOOP_ITERATIONS = 10000;
6
+ /**
7
+ * A task the engine has to run: the next missing outcome of the journal
8
+ */
9
+ export interface ScheduledTask {
10
+ /**
11
+ * Task key: `<statement id>@<iteration path>`
12
+ */
13
+ key: string;
14
+ operation: string;
15
+ input: any;
16
+ /**
17
+ * Flow defaults merged with the task options
18
+ */
19
+ options: TaskOptions;
20
+ }
21
+ /**
22
+ * Result of a replay
23
+ */
24
+ export type RunResult = {
25
+ status: "done";
26
+ output: any;
27
+ } | {
28
+ status: "error";
29
+ error: FlowError;
30
+ } | {
31
+ status: "pending";
32
+ schedule: ScheduledTask[];
33
+ };
34
+ /**
35
+ * Task key of a statement at an iteration path
36
+ * @param id - the statement id
37
+ * @param path - indexes of the enclosing loops and branches
38
+ * @returns the key
39
+ */
40
+ export declare function taskKey(id: string, path: number[]): string;
41
+ /**
42
+ * Statement id of a task key
43
+ * @param key - the task key
44
+ * @returns the statement id
45
+ */
46
+ export declare function statementIdOf(key: string): string;
47
+ /**
48
+ * Replay a flow against its journal
49
+ *
50
+ * Pure: no I/O, the same arguments always give the same result.
51
+ * @param def - the flow definition
52
+ * @param input - the flow input, by parameter name
53
+ * @param journal - outcomes of the finished tasks
54
+ * @returns done with the output, error with the uncaught error, or pending with the tasks to run
55
+ */
56
+ export declare function run(def: FlowDefinition, input: Record<string, any>, journal: Journal): RunResult;
57
+ /**
58
+ * Statement ids of a definition, nested ones included
59
+ * @param def - the flow definition
60
+ * @returns the ids
61
+ */
62
+ export declare function keysOf(def: Pick<FlowDefinition, "body">): Set<string>;
63
+ //# sourceMappingURL=interpreter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpreter.d.ts","sources":["../src/interpreter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,cAAc,EAAE,SAAS,EAAE,OAAO,EAAQ,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9F;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;IACX;;OAEG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,GAC/B;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC;AAmBrD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAmQD;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,CAchG;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAgBrE"}