ts2workflows 0.1.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/LICENSE +22 -0
- package/README.md +82 -0
- package/dist/ast/expressions.d.ts +57 -0
- package/dist/ast/expressions.d.ts.map +1 -0
- package/dist/ast/expressions.js +300 -0
- package/dist/ast/stepnames.d.ts +9 -0
- package/dist/ast/stepnames.d.ts.map +1 -0
- package/dist/ast/stepnames.js +268 -0
- package/dist/ast/steps.d.ts +176 -0
- package/dist/ast/steps.d.ts.map +1 -0
- package/dist/ast/steps.js +534 -0
- package/dist/ast/validation.d.ts +20 -0
- package/dist/ast/validation.d.ts.map +1 -0
- package/dist/ast/validation.js +214 -0
- package/dist/ast/workflows.d.ts +28 -0
- package/dist/ast/workflows.d.ts.map +1 -0
- package/dist/ast/workflows.js +74 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +114 -0
- package/dist/errors.d.ts +18 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +12 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/transpiler/asserts.d.ts +7 -0
- package/dist/transpiler/asserts.d.ts.map +1 -0
- package/dist/transpiler/asserts.js +11 -0
- package/dist/transpiler/expressions.d.ts +6 -0
- package/dist/transpiler/expressions.d.ts.map +1 -0
- package/dist/transpiler/expressions.js +223 -0
- package/dist/transpiler/generated/functionMetadata.d.ts +2 -0
- package/dist/transpiler/generated/functionMetadata.d.ts.map +1 -0
- package/dist/transpiler/generated/functionMetadata.js +324 -0
- package/dist/transpiler/index.d.ts +2 -0
- package/dist/transpiler/index.d.ts.map +1 -0
- package/dist/transpiler/index.js +74 -0
- package/dist/transpiler/statements.d.ts +7 -0
- package/dist/transpiler/statements.d.ts.map +1 -0
- package/dist/transpiler/statements.js +533 -0
- package/dist/transpiler/transformations.d.ts +28 -0
- package/dist/transpiler/transformations.d.ts.map +1 -0
- package/dist/transpiler/transformations.js +461 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +3 -0
- package/language_reference.md +771 -0
- package/package.json +62 -0
- package/types/workflowslib.d.ts +714 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { ForStepASTNamed, NextStepAST, ParallelStepASTNamed, StepsStepASTNamed, SwitchStepASTNamed, TryStepASTNamed, nestedSteps, } from './steps.js';
|
|
2
|
+
import { Subworkflow, WorkflowApp } from './workflows.js';
|
|
3
|
+
export class StepNameGenerator {
|
|
4
|
+
counters;
|
|
5
|
+
constructor() {
|
|
6
|
+
this.counters = new Map();
|
|
7
|
+
}
|
|
8
|
+
generate(prefix) {
|
|
9
|
+
const i = this.counters.get(prefix) ?? 1;
|
|
10
|
+
this.counters.set(prefix, i + 1);
|
|
11
|
+
return `${prefix}${i}`;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function generateStepNames(ast) {
|
|
15
|
+
const stepNameGenerator = new StepNameGenerator();
|
|
16
|
+
const subworkflows = ast.subworkflows
|
|
17
|
+
.map((subworkflow) => {
|
|
18
|
+
return subworkflow.withStepNames((x) => stepNameGenerator.generate(x));
|
|
19
|
+
})
|
|
20
|
+
.map(fixJumpLabels);
|
|
21
|
+
return new WorkflowApp(subworkflows);
|
|
22
|
+
}
|
|
23
|
+
function fixJumpLabels(subworkflow) {
|
|
24
|
+
const jumpTargetLabels = collectActualJumpTargets(subworkflow);
|
|
25
|
+
const stepsWithoutJumpTargetNodes = removeJumpTargetSteps(subworkflow.steps);
|
|
26
|
+
const relabeledSteps = relabelNextLabels(stepsWithoutJumpTargetNodes, jumpTargetLabels);
|
|
27
|
+
return new Subworkflow(subworkflow.name, relabeledSteps, subworkflow.params);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Find a mapping from jump target labels to step names.
|
|
31
|
+
*
|
|
32
|
+
* Iterate over all steps in the workflow. For JumpTargetAST nodes, find the
|
|
33
|
+
* next node that is not a JumpTargetAST, save its name as the real jump taget
|
|
34
|
+
* name.
|
|
35
|
+
*/
|
|
36
|
+
function collectActualJumpTargets(subworkflow) {
|
|
37
|
+
const replacements = new Map();
|
|
38
|
+
// The processing is done iteratively with an explicit stack because
|
|
39
|
+
// nextNonJumpTargetNode() needs the stack. Note the order of steps on the
|
|
40
|
+
// stack: the first step is the last element of the stack.
|
|
41
|
+
const stack = [];
|
|
42
|
+
stack.push(...stepsToJumpStackElements(subworkflow.steps, 0));
|
|
43
|
+
while (stack.length > 0) {
|
|
44
|
+
// Do not yet pop in case nextNonJumpTargetNode needs to search the stack
|
|
45
|
+
const { namedStep, nestingLevel } = stack[stack.length - 1];
|
|
46
|
+
if (namedStep.step.tag === 'jumptarget') {
|
|
47
|
+
const currentLabel = namedStep.step.label;
|
|
48
|
+
const target = nextNonJumpTargetNode(stack);
|
|
49
|
+
const targetName = target ? target.name : 'end';
|
|
50
|
+
replacements.set(currentLabel, targetName);
|
|
51
|
+
}
|
|
52
|
+
// Now nextNonJumpTargetNode has been executed and it's safe to pop the
|
|
53
|
+
// current element from the stack.
|
|
54
|
+
stack.pop();
|
|
55
|
+
const children = nestedSteps(namedStep.step).map((x) => stepsToJumpStackElements(x, nestingLevel + 1));
|
|
56
|
+
children.reverse();
|
|
57
|
+
children.forEach((children) => {
|
|
58
|
+
stack.push(...children);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return replacements;
|
|
62
|
+
}
|
|
63
|
+
function stepsToJumpStackElements(steps, nestingLevel) {
|
|
64
|
+
const block = steps.map((step, i) => ({
|
|
65
|
+
namedStep: step,
|
|
66
|
+
nestingLevel,
|
|
67
|
+
isLastInBlock: i === steps.length - 1,
|
|
68
|
+
}));
|
|
69
|
+
block.reverse();
|
|
70
|
+
return block;
|
|
71
|
+
}
|
|
72
|
+
function nextNonJumpTargetNode(stack) {
|
|
73
|
+
if (stack.length <= 0) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
let nestingLevel = stack[stack.length - 1].nestingLevel;
|
|
77
|
+
while (nestingLevel >= 0) {
|
|
78
|
+
// Consider only the steps in the current code block (= the same nesting
|
|
79
|
+
// level, taking steps until isLastInBlock)
|
|
80
|
+
let endOfBlockIndex = stack.findLastIndex((x) => x.nestingLevel === nestingLevel && x.isLastInBlock);
|
|
81
|
+
if (endOfBlockIndex < 0) {
|
|
82
|
+
// should not be reached
|
|
83
|
+
endOfBlockIndex = stack.findLastIndex((x) => x.nestingLevel <= nestingLevel);
|
|
84
|
+
if (endOfBlockIndex < 0) {
|
|
85
|
+
endOfBlockIndex = 0;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const firstNonJumpTarget = stack
|
|
89
|
+
.slice(endOfBlockIndex)
|
|
90
|
+
.findLast((x) => x.nestingLevel === nestingLevel &&
|
|
91
|
+
x.namedStep.step.tag !== 'jumptarget');
|
|
92
|
+
if (firstNonJumpTarget) {
|
|
93
|
+
return firstNonJumpTarget.namedStep;
|
|
94
|
+
}
|
|
95
|
+
nestingLevel--;
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
function removeJumpTargetSteps(steps) {
|
|
100
|
+
return steps
|
|
101
|
+
.filter((x) => x.step.tag !== 'jumptarget')
|
|
102
|
+
.map(({ name, step }) => ({
|
|
103
|
+
name,
|
|
104
|
+
step: removeJumpTargetRecurse(step),
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
function removeJumpTargetRecurse(step) {
|
|
108
|
+
switch (step.tag) {
|
|
109
|
+
case 'assign':
|
|
110
|
+
case 'call':
|
|
111
|
+
case 'next':
|
|
112
|
+
case 'raise':
|
|
113
|
+
case 'return':
|
|
114
|
+
case 'jumptarget':
|
|
115
|
+
return step;
|
|
116
|
+
case 'for':
|
|
117
|
+
return removeJumpTargetsFor(step);
|
|
118
|
+
case 'parallel':
|
|
119
|
+
return removeJumpTargetsParallel(step);
|
|
120
|
+
case 'steps':
|
|
121
|
+
return new StepsStepASTNamed(removeJumpTargetSteps(step.steps));
|
|
122
|
+
case 'switch':
|
|
123
|
+
return removeJumpTargetsSwitch(step);
|
|
124
|
+
case 'try':
|
|
125
|
+
return new TryStepASTNamed(removeJumpTargetSteps(step.trySteps), removeJumpTargetSteps(step.exceptSteps), step.retryPolicy, step.errorMap);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function removeJumpTargetsFor(step) {
|
|
129
|
+
return new ForStepASTNamed(removeJumpTargetSteps(step.steps), step.loopVariableName, step.listExpression, step.indexVariableName, step.rangeStart, step.rangeEnd);
|
|
130
|
+
}
|
|
131
|
+
function removeJumpTargetsParallel(step) {
|
|
132
|
+
let transformedSteps;
|
|
133
|
+
if (step.branches) {
|
|
134
|
+
transformedSteps = Object.fromEntries(step.branches.map((x) => {
|
|
135
|
+
return [
|
|
136
|
+
x.name,
|
|
137
|
+
new StepsStepASTNamed(removeJumpTargetSteps(nestedSteps(x.step).flat())),
|
|
138
|
+
];
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
else if (step.forStep) {
|
|
142
|
+
transformedSteps = removeJumpTargetsFor(step.forStep);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
// should not be reached
|
|
146
|
+
transformedSteps = {};
|
|
147
|
+
}
|
|
148
|
+
return new ParallelStepASTNamed(transformedSteps, step.shared, step.concurrenceLimit, step.exceptionPolicy);
|
|
149
|
+
}
|
|
150
|
+
function removeJumpTargetsSwitch(step) {
|
|
151
|
+
const transformedConditions = step.conditions.map((cond) => {
|
|
152
|
+
return {
|
|
153
|
+
condition: cond.condition,
|
|
154
|
+
steps: removeJumpTargetSteps(cond.steps),
|
|
155
|
+
next: cond.next,
|
|
156
|
+
};
|
|
157
|
+
});
|
|
158
|
+
return new SwitchStepASTNamed(transformedConditions, step.next);
|
|
159
|
+
}
|
|
160
|
+
function relabelNextLabels(steps, replacements) {
|
|
161
|
+
return steps.map((step) => ({
|
|
162
|
+
name: step.name,
|
|
163
|
+
step: renameJumpTargets(step.step, replacements),
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Renames a copy of a step with jump targets renamed according to replaceLabels map.
|
|
168
|
+
*/
|
|
169
|
+
function renameJumpTargets(step, replaceLabels) {
|
|
170
|
+
switch (step.tag) {
|
|
171
|
+
case 'assign':
|
|
172
|
+
case 'call':
|
|
173
|
+
case 'raise':
|
|
174
|
+
case 'return':
|
|
175
|
+
case 'jumptarget':
|
|
176
|
+
return step;
|
|
177
|
+
case 'next':
|
|
178
|
+
return renameJumpTargetsNext(step, replaceLabels);
|
|
179
|
+
case 'for':
|
|
180
|
+
return renameJumpTargetsFor(step, replaceLabels);
|
|
181
|
+
case 'parallel':
|
|
182
|
+
return renameJumpTargetsParallel(step, replaceLabels);
|
|
183
|
+
case 'steps':
|
|
184
|
+
return renameJumpTargetsSteps(step, replaceLabels);
|
|
185
|
+
case 'switch':
|
|
186
|
+
return renameJumpTargetsSwitch(step, replaceLabels);
|
|
187
|
+
case 'try':
|
|
188
|
+
return renameJumpTargetsTry(step, replaceLabels);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function renameJumpTargetsFor(step, replaceLabels) {
|
|
192
|
+
const transformedSteps = step.steps.map(({ name, step: nested }) => ({
|
|
193
|
+
name,
|
|
194
|
+
step: renameJumpTargets(nested, replaceLabels),
|
|
195
|
+
}));
|
|
196
|
+
return new ForStepASTNamed(transformedSteps, step.loopVariableName, step.listExpression, step.indexVariableName, step.rangeStart, step.rangeEnd);
|
|
197
|
+
}
|
|
198
|
+
function renameJumpTargetsNext(step, replaceLabels) {
|
|
199
|
+
const newLabel = replaceLabels.get(step.target);
|
|
200
|
+
if (newLabel) {
|
|
201
|
+
return new NextStepAST(newLabel);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
return step;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
function renameJumpTargetsParallel(step, replaceLabels) {
|
|
208
|
+
let transformedSteps;
|
|
209
|
+
if (step.branches) {
|
|
210
|
+
transformedSteps = Object.fromEntries(step.branches.map(({ name, step: nested }) => {
|
|
211
|
+
const renamedNested = nestedSteps(nested)
|
|
212
|
+
.flat()
|
|
213
|
+
.map((x) => ({
|
|
214
|
+
name: x.name,
|
|
215
|
+
step: renameJumpTargets(x.step, replaceLabels),
|
|
216
|
+
}));
|
|
217
|
+
return [name, new StepsStepASTNamed(renamedNested)];
|
|
218
|
+
}));
|
|
219
|
+
}
|
|
220
|
+
else if (step.forStep) {
|
|
221
|
+
transformedSteps = renameJumpTargetsFor(step.forStep, replaceLabels);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
// should not be reached
|
|
225
|
+
transformedSteps = {};
|
|
226
|
+
}
|
|
227
|
+
return new ParallelStepASTNamed(transformedSteps, step.shared, step.concurrenceLimit, step.exceptionPolicy);
|
|
228
|
+
}
|
|
229
|
+
function renameJumpTargetsSteps(step, replaceLabels) {
|
|
230
|
+
const transformedSteps = step.steps.map(({ name, step: nested }) => ({
|
|
231
|
+
name,
|
|
232
|
+
step: renameJumpTargets(nested, replaceLabels),
|
|
233
|
+
}));
|
|
234
|
+
return new StepsStepASTNamed(transformedSteps);
|
|
235
|
+
}
|
|
236
|
+
function renameJumpTargetsSwitch(step, replaceLabels) {
|
|
237
|
+
let updatedNext = undefined;
|
|
238
|
+
if (step.next) {
|
|
239
|
+
updatedNext = replaceLabels.get(step.next) ?? step.next;
|
|
240
|
+
}
|
|
241
|
+
const updatedConditions = step.conditions.map((cond) => {
|
|
242
|
+
let updatedCondNext = undefined;
|
|
243
|
+
if (cond.next) {
|
|
244
|
+
updatedCondNext = replaceLabels.get(cond.next) ?? cond.next;
|
|
245
|
+
}
|
|
246
|
+
const updatedCondSteps = cond.steps.map((nested) => ({
|
|
247
|
+
name: nested.name,
|
|
248
|
+
step: renameJumpTargets(nested.step, replaceLabels),
|
|
249
|
+
}));
|
|
250
|
+
return {
|
|
251
|
+
condition: cond.condition,
|
|
252
|
+
steps: updatedCondSteps,
|
|
253
|
+
next: updatedCondNext,
|
|
254
|
+
};
|
|
255
|
+
});
|
|
256
|
+
return new SwitchStepASTNamed(updatedConditions, updatedNext);
|
|
257
|
+
}
|
|
258
|
+
function renameJumpTargetsTry(step, replaceLabels) {
|
|
259
|
+
const transformedTrySteps = step.trySteps.map(({ name, step: nested }) => ({
|
|
260
|
+
name,
|
|
261
|
+
step: renameJumpTargets(nested, replaceLabels),
|
|
262
|
+
}));
|
|
263
|
+
const transformedExceptSteps = step.exceptSteps.map(({ name, step: nested }) => ({
|
|
264
|
+
name,
|
|
265
|
+
step: renameJumpTargets(nested, replaceLabels),
|
|
266
|
+
}));
|
|
267
|
+
return new TryStepASTNamed(transformedTrySteps, transformedExceptSteps, step.retryPolicy, step.errorMap);
|
|
268
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { Expression, VariableName } from './expressions.js';
|
|
2
|
+
import { Subworkflow, WorkflowParameter } from './workflows.js';
|
|
3
|
+
export type StepName = string;
|
|
4
|
+
export type VariableAssignment = readonly [VariableName, Expression];
|
|
5
|
+
export type WorkflowParameters = Record<VariableName, Expression>;
|
|
6
|
+
export interface CustomRetryPolicy {
|
|
7
|
+
predicate: string;
|
|
8
|
+
maxRetries: number;
|
|
9
|
+
backoff: {
|
|
10
|
+
initialDelay: number;
|
|
11
|
+
maxDelay: number;
|
|
12
|
+
multiplier: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface WorkflowAST {
|
|
16
|
+
readonly subworkflows: SubworkflowAST[];
|
|
17
|
+
}
|
|
18
|
+
export declare class SubworkflowAST {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly steps: WorkflowStepAST[];
|
|
21
|
+
readonly params?: WorkflowParameter[];
|
|
22
|
+
constructor(name: string, steps: WorkflowStepAST[], params?: WorkflowParameter[]);
|
|
23
|
+
withStepNames(generate: (prefix: string) => string): Subworkflow;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A workflow step before step names have been assigned.
|
|
27
|
+
*/
|
|
28
|
+
export type WorkflowStepAST = AssignStepAST | CallStepAST | ForStepAST | NextStepAST | ParallelStepAST | RaiseStepAST | ReturnStepAST | StepsStepAST | SwitchStepAST | TryStepAST | JumpTargetAST;
|
|
29
|
+
/**
|
|
30
|
+
* A workflow step after names have been generated for the nested steps.
|
|
31
|
+
*/
|
|
32
|
+
export type WorkflowStepASTWithNamedNested = AssignStepAST | CallStepAST | ForStepASTNamed | NextStepAST | ParallelStepASTNamed | RaiseStepAST | ReturnStepAST | StepsStepASTNamed | SwitchStepASTNamed | TryStepASTNamed | JumpTargetAST;
|
|
33
|
+
export interface NamedWorkflowStep {
|
|
34
|
+
name: StepName;
|
|
35
|
+
step: WorkflowStepASTWithNamedNested;
|
|
36
|
+
}
|
|
37
|
+
export declare class AssignStepAST {
|
|
38
|
+
readonly tag = "assign";
|
|
39
|
+
readonly assignments: VariableAssignment[];
|
|
40
|
+
readonly label: string | undefined;
|
|
41
|
+
constructor(assignments: VariableAssignment[], label?: string);
|
|
42
|
+
}
|
|
43
|
+
export declare class CallStepAST {
|
|
44
|
+
readonly tag = "call";
|
|
45
|
+
readonly call: string;
|
|
46
|
+
readonly args?: WorkflowParameters;
|
|
47
|
+
readonly result?: VariableName;
|
|
48
|
+
readonly label: string | undefined;
|
|
49
|
+
constructor(call: string, args?: WorkflowParameters, result?: VariableName, label?: string);
|
|
50
|
+
labelPrefix(): string;
|
|
51
|
+
}
|
|
52
|
+
export declare class ForStepAST {
|
|
53
|
+
readonly tag = "for";
|
|
54
|
+
readonly steps: WorkflowStepAST[];
|
|
55
|
+
readonly loopVariableName: VariableName;
|
|
56
|
+
readonly indexVariableName?: VariableName;
|
|
57
|
+
readonly listExpression: Expression;
|
|
58
|
+
readonly rangeStart?: number;
|
|
59
|
+
readonly rangeEnd?: number;
|
|
60
|
+
readonly label: string | undefined;
|
|
61
|
+
constructor(steps: WorkflowStepAST[], loopVariableName: VariableName, listExpression: Expression, indexVariable?: VariableName, rangeStart?: number, rangeEnd?: number, label?: string);
|
|
62
|
+
}
|
|
63
|
+
export declare class ForStepASTNamed {
|
|
64
|
+
readonly tag = "for";
|
|
65
|
+
readonly steps: NamedWorkflowStep[];
|
|
66
|
+
readonly loopVariableName: VariableName;
|
|
67
|
+
readonly indexVariableName?: VariableName;
|
|
68
|
+
readonly listExpression?: Expression;
|
|
69
|
+
readonly rangeStart?: number;
|
|
70
|
+
readonly rangeEnd?: number;
|
|
71
|
+
constructor(steps: NamedWorkflowStep[], loopVariableName: VariableName, listExpression?: Expression, indexVariable?: VariableName, rangeStart?: number, rangeEnd?: number);
|
|
72
|
+
}
|
|
73
|
+
export declare class NextStepAST {
|
|
74
|
+
readonly tag = "next";
|
|
75
|
+
readonly target: string;
|
|
76
|
+
readonly label: string | undefined;
|
|
77
|
+
constructor(target: string, label?: string);
|
|
78
|
+
}
|
|
79
|
+
export declare class ParallelStepAST {
|
|
80
|
+
readonly tag = "parallel";
|
|
81
|
+
readonly steps: Record<StepName, StepsStepAST> | ForStepAST;
|
|
82
|
+
readonly shared?: VariableName[];
|
|
83
|
+
readonly concurrencyLimit?: number;
|
|
84
|
+
readonly exceptionPolicy?: string;
|
|
85
|
+
readonly label: string | undefined;
|
|
86
|
+
constructor(steps: Record<StepName, StepsStepAST> | ForStepAST, shared?: VariableName[], concurrencyLimit?: number, exceptionPolicy?: string, label?: string);
|
|
87
|
+
}
|
|
88
|
+
export declare class ParallelStepASTNamed {
|
|
89
|
+
readonly tag = "parallel";
|
|
90
|
+
readonly branches?: NamedWorkflowStep[];
|
|
91
|
+
readonly forStep?: ForStepASTNamed;
|
|
92
|
+
readonly shared?: VariableName[];
|
|
93
|
+
readonly concurrenceLimit?: number;
|
|
94
|
+
readonly exceptionPolicy?: string;
|
|
95
|
+
constructor(steps: Record<StepName, StepsStepASTNamed> | ForStepASTNamed, shared?: VariableName[], concurrencyLimit?: number, exceptionPolicy?: string);
|
|
96
|
+
}
|
|
97
|
+
export declare class RaiseStepAST {
|
|
98
|
+
readonly tag = "raise";
|
|
99
|
+
readonly value: Expression;
|
|
100
|
+
readonly label: string | undefined;
|
|
101
|
+
constructor(value: Expression, label?: string);
|
|
102
|
+
}
|
|
103
|
+
export declare class ReturnStepAST {
|
|
104
|
+
readonly tag = "return";
|
|
105
|
+
readonly value: Expression | undefined;
|
|
106
|
+
readonly label: string | undefined;
|
|
107
|
+
constructor(value: Expression | undefined, label?: string);
|
|
108
|
+
}
|
|
109
|
+
export declare class StepsStepAST {
|
|
110
|
+
readonly tag = "steps";
|
|
111
|
+
readonly steps: WorkflowStepAST[];
|
|
112
|
+
readonly label: string | undefined;
|
|
113
|
+
constructor(steps: WorkflowStepAST[], label?: string);
|
|
114
|
+
}
|
|
115
|
+
export declare class StepsStepASTNamed {
|
|
116
|
+
readonly tag = "steps";
|
|
117
|
+
readonly steps: NamedWorkflowStep[];
|
|
118
|
+
constructor(steps: NamedWorkflowStep[]);
|
|
119
|
+
}
|
|
120
|
+
export declare class SwitchStepAST {
|
|
121
|
+
readonly tag = "switch";
|
|
122
|
+
readonly branches: SwitchConditionAST<WorkflowStepAST>[];
|
|
123
|
+
readonly label: string | undefined;
|
|
124
|
+
constructor(branches: SwitchConditionAST<WorkflowStepAST>[], label?: string);
|
|
125
|
+
}
|
|
126
|
+
export declare class SwitchStepASTNamed {
|
|
127
|
+
readonly tag = "switch";
|
|
128
|
+
readonly conditions: SwitchConditionAST<NamedWorkflowStep>[];
|
|
129
|
+
readonly next?: StepName;
|
|
130
|
+
constructor(conditions: SwitchConditionAST<NamedWorkflowStep>[], next?: StepName);
|
|
131
|
+
}
|
|
132
|
+
export interface SwitchConditionAST<T extends WorkflowStepAST | NamedWorkflowStep> {
|
|
133
|
+
readonly condition: Expression;
|
|
134
|
+
readonly steps: T[];
|
|
135
|
+
readonly next?: StepName;
|
|
136
|
+
}
|
|
137
|
+
export declare class TryStepAST {
|
|
138
|
+
readonly tag = "try";
|
|
139
|
+
readonly trySteps: WorkflowStepAST[];
|
|
140
|
+
readonly exceptSteps: WorkflowStepAST[];
|
|
141
|
+
readonly retryPolicy?: string | CustomRetryPolicy;
|
|
142
|
+
readonly errorMap?: VariableName;
|
|
143
|
+
readonly label: string | undefined;
|
|
144
|
+
constructor(trySteps: WorkflowStepAST[], exceptSteps: WorkflowStepAST[], retryPolicy?: string | CustomRetryPolicy, errorMap?: VariableName, label?: string);
|
|
145
|
+
}
|
|
146
|
+
export declare class TryStepASTNamed {
|
|
147
|
+
readonly tag = "try";
|
|
148
|
+
readonly retryPolicy?: string | CustomRetryPolicy;
|
|
149
|
+
readonly errorMap?: VariableName;
|
|
150
|
+
readonly trySteps: NamedWorkflowStep[];
|
|
151
|
+
readonly exceptSteps: NamedWorkflowStep[];
|
|
152
|
+
constructor(steps: NamedWorkflowStep[], exceptSteps: NamedWorkflowStep[], retryPolicy?: string | CustomRetryPolicy, errorMap?: VariableName);
|
|
153
|
+
}
|
|
154
|
+
export declare class JumpTargetAST {
|
|
155
|
+
readonly tag = "jumptarget";
|
|
156
|
+
readonly label: string;
|
|
157
|
+
constructor();
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Assign a name for this step and its child steps.
|
|
161
|
+
*
|
|
162
|
+
* The name is generated by calling generateName with a prefix identifying the step type.
|
|
163
|
+
*/
|
|
164
|
+
export declare function namedSteps(step: WorkflowStepAST, generateName: (prefix: string) => string): NamedWorkflowStep;
|
|
165
|
+
/**
|
|
166
|
+
* Returns the nested steps in contained in this step.
|
|
167
|
+
*
|
|
168
|
+
* Used in iterating the AST tree.
|
|
169
|
+
*/
|
|
170
|
+
export declare function nestedSteps(step: WorkflowStepASTWithNamedNested): NamedWorkflowStep[][];
|
|
171
|
+
/**
|
|
172
|
+
* Returns an GCP Workflows object representation of a step.
|
|
173
|
+
*/
|
|
174
|
+
export declare function renderStep(step: WorkflowStepASTWithNamedNested): Record<string, unknown>;
|
|
175
|
+
export declare function stepWithLabel(step: WorkflowStepAST, label: string): WorkflowStepAST;
|
|
176
|
+
//# sourceMappingURL=steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/ast/steps.ts"],"names":[],"mappings":"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"}
|