@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.
- package/LICENSE +166 -0
- package/README.md +54 -2
- package/lib/authoring.d.ts +112 -0
- package/lib/authoring.d.ts.map +1 -0
- package/lib/authoring.js +107 -0
- package/lib/authoring.js.map +1 -0
- package/lib/expression.d.ts +21 -0
- package/lib/expression.d.ts.map +1 -0
- package/lib/expression.js +196 -0
- package/lib/expression.js.map +1 -0
- package/lib/graph.d.ts +291 -0
- package/lib/graph.d.ts.map +1 -0
- package/lib/graph.js +72 -0
- package/lib/graph.js.map +1 -0
- package/lib/hooks.d.ts +38 -0
- package/lib/hooks.d.ts.map +1 -0
- package/lib/hooks.js +23 -0
- package/lib/hooks.js.map +1 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +15 -0
- package/lib/index.js.map +1 -0
- package/lib/interpreter.d.ts +63 -0
- package/lib/interpreter.d.ts.map +1 -0
- package/lib/interpreter.js +330 -0
- package/lib/interpreter.js.map +1 -0
- package/lib/models/workflow.model.d.ts +71 -0
- package/lib/models/workflow.model.d.ts.map +1 -0
- package/lib/models/workflow.model.js +70 -0
- package/lib/models/workflow.model.js.map +1 -0
- package/lib/models/workflowinstance.model.d.ts +132 -0
- package/lib/models/workflowinstance.model.d.ts.map +1 -0
- package/lib/models/workflowinstance.model.js +168 -0
- package/lib/models/workflowinstance.model.js.map +1 -0
- package/lib/models/workflowsignal.model.d.ts +51 -0
- package/lib/models/workflowsignal.model.d.ts.map +1 -0
- package/lib/models/workflowsignal.model.js +53 -0
- package/lib/models/workflowsignal.model.js.map +1 -0
- package/lib/models/workflowtask.model.d.ts +103 -0
- package/lib/models/workflowtask.model.d.ts.map +1 -0
- package/lib/models/workflowtask.model.js +104 -0
- package/lib/models/workflowtask.model.js.map +1 -0
- package/lib/workflow.service.d.ts +670 -0
- package/lib/workflow.service.d.ts.map +1 -0
- package/lib/workflow.service.js +1950 -0
- package/lib/workflow.service.js.map +1 -0
- package/package.json +68 -3
- 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
|
package/lib/graph.js.map
ADDED
|
@@ -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
|
package/lib/hooks.js.map
ADDED
|
@@ -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
|
package/lib/index.js.map
ADDED
|
@@ -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"}
|