ts2workflows 0.8.0 → 0.9.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/dist/ast/expressions.d.ts +9 -0
- package/dist/ast/expressions.d.ts.map +1 -1
- package/dist/ast/expressions.js +43 -19
- package/dist/ast/steps.d.ts +27 -7
- package/dist/ast/steps.d.ts.map +1 -1
- package/dist/ast/steps.js +104 -21
- package/dist/transpiler/expressions.d.ts +0 -1
- package/dist/transpiler/expressions.d.ts.map +1 -1
- package/dist/transpiler/expressions.js +51 -62
- package/dist/transpiler/index.d.ts.map +1 -1
- package/dist/transpiler/index.js +7 -4
- package/dist/transpiler/statements.d.ts +4 -3
- package/dist/transpiler/statements.d.ts.map +1 -1
- package/dist/transpiler/statements.js +369 -96
- package/dist/transpiler/transformations.d.ts +0 -6
- package/dist/transpiler/transformations.d.ts.map +1 -1
- package/dist/transpiler/transformations.js +88 -148
- package/dist/utils.d.ts +1 -5
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -16
- package/language_reference.md +120 -61
- package/package.json +8 -4
|
@@ -14,6 +14,9 @@ export declare class PrimitiveExpression {
|
|
|
14
14
|
constructor(value: Primitive);
|
|
15
15
|
toString(): string;
|
|
16
16
|
}
|
|
17
|
+
export declare const nullEx: PrimitiveExpression;
|
|
18
|
+
export declare const trueEx: PrimitiveExpression;
|
|
19
|
+
export declare const falseEx: PrimitiveExpression;
|
|
17
20
|
export declare class BinaryExpression {
|
|
18
21
|
readonly expressionType = "binary";
|
|
19
22
|
readonly binaryOperator: BinaryOperator;
|
|
@@ -51,7 +54,13 @@ export declare class UnaryExpression {
|
|
|
51
54
|
toString(): string;
|
|
52
55
|
}
|
|
53
56
|
export declare function isExpression(val: Primitive | Expression): val is Expression;
|
|
57
|
+
export declare function asExpression(x: Primitive | Expression): Expression;
|
|
58
|
+
export declare function safeAsExpression(x: Primitive | Expression | undefined): Expression | undefined;
|
|
54
59
|
export declare function expressionToLiteralValueOrLiteralExpression(ex: Expression): LiteralValueOrLiteralExpression;
|
|
55
60
|
export declare function isLiteral(ex: Expression): boolean;
|
|
56
61
|
export declare function isFullyQualifiedName(ex: Expression): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Returns true if ex is pure expression (can't have side-effects)
|
|
64
|
+
*/
|
|
65
|
+
export declare function isPure(ex: Expression): boolean;
|
|
57
66
|
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/ast/expressions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/ast/expressions.ts"],"names":[],"mappings":"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"}
|
package/dist/ast/expressions.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { isRecord } from '../utils.js';
|
|
2
3
|
// Operator precendence for unary and binary operators in the Workflows language.
|
|
3
4
|
// Note that these differ somewhat from Javascript.
|
|
4
5
|
// https://cloud.google.com/workflows/docs/reference/syntax/datatypes
|
|
@@ -24,7 +25,6 @@ const operatorPrecedenceValue = new Map([
|
|
|
24
25
|
['or', 1],
|
|
25
26
|
]);
|
|
26
27
|
// A primitive (string, number, list, etc) value
|
|
27
|
-
// TODO: Is this needed? Use unboxed Primitive instead?
|
|
28
28
|
export class PrimitiveExpression {
|
|
29
29
|
expressionType = 'primitive';
|
|
30
30
|
value;
|
|
@@ -52,6 +52,9 @@ export class PrimitiveExpression {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
+
export const nullEx = new PrimitiveExpression(null);
|
|
56
|
+
export const trueEx = new PrimitiveExpression(true);
|
|
57
|
+
export const falseEx = new PrimitiveExpression(false);
|
|
55
58
|
// expr OPERATOR expr
|
|
56
59
|
export class BinaryExpression {
|
|
57
60
|
expressionType = 'binary';
|
|
@@ -146,20 +149,18 @@ export class UnaryExpression {
|
|
|
146
149
|
return `${this.operator}${separator}${valueString}`;
|
|
147
150
|
}
|
|
148
151
|
}
|
|
152
|
+
// Convert an Expression or Primitive to a string representation.
|
|
153
|
+
// Does not add ${}.
|
|
154
|
+
const expressionOrPrimitiveToString = R.ifElse(isExpression, (x) => x.toString(), primitiveToString);
|
|
149
155
|
// Convert a Primitive to a string representation.
|
|
150
156
|
// Does not add ${}.
|
|
151
157
|
function primitiveToString(val) {
|
|
158
|
+
const valuesToString = R.map(expressionOrPrimitiveToString);
|
|
152
159
|
if (Array.isArray(val)) {
|
|
153
|
-
|
|
154
|
-
return isExpression(x) ? x.toString() : primitiveToString(x);
|
|
155
|
-
});
|
|
156
|
-
return `[${elements.join(', ')}]`;
|
|
160
|
+
return `[${valuesToString(val).join(', ')}]`;
|
|
157
161
|
}
|
|
158
162
|
else if (val !== null && typeof val === 'object') {
|
|
159
|
-
const
|
|
160
|
-
return [k, isExpression(v) ? v.toString() : primitiveToString(v)];
|
|
161
|
-
});
|
|
162
|
-
const elements = items.map(([k, v]) => `"${k}":${v}`);
|
|
163
|
+
const elements = Object.values(valuesToString(val)).map(([k, v]) => `"${k}":${v}`);
|
|
163
164
|
return `{${elements.join(',')}}`;
|
|
164
165
|
}
|
|
165
166
|
else {
|
|
@@ -169,6 +170,12 @@ function primitiveToString(val) {
|
|
|
169
170
|
export function isExpression(val) {
|
|
170
171
|
return val instanceof Object && 'expressionType' in val && !isRecord(val);
|
|
171
172
|
}
|
|
173
|
+
export function asExpression(x) {
|
|
174
|
+
return isExpression(x) ? x : new PrimitiveExpression(x);
|
|
175
|
+
}
|
|
176
|
+
export function safeAsExpression(x) {
|
|
177
|
+
return x === undefined ? undefined : asExpression(x);
|
|
178
|
+
}
|
|
172
179
|
// Returns a literal for simple terms and a literal expression enclosed in ${} for complex terms.
|
|
173
180
|
export function expressionToLiteralValueOrLiteralExpression(ex) {
|
|
174
181
|
switch (ex.expressionType) {
|
|
@@ -224,7 +231,7 @@ function primitiveExpressionToLiteralValueOrLiteralExpression(ex) {
|
|
|
224
231
|
});
|
|
225
232
|
}
|
|
226
233
|
else if (isRecord(ex.value)) {
|
|
227
|
-
|
|
234
|
+
const mapRecord = R.map((v) => {
|
|
228
235
|
if (isExpression(v)) {
|
|
229
236
|
return expressionToLiteralValueOrLiteralExpression(v);
|
|
230
237
|
}
|
|
@@ -241,6 +248,7 @@ function primitiveExpressionToLiteralValueOrLiteralExpression(ex) {
|
|
|
241
248
|
return `\${${primitiveToString(v)}}`;
|
|
242
249
|
}
|
|
243
250
|
});
|
|
251
|
+
return mapRecord(ex.value);
|
|
244
252
|
}
|
|
245
253
|
else {
|
|
246
254
|
return `\${${ex.toString()}}`;
|
|
@@ -262,16 +270,13 @@ export function isLiteral(ex) {
|
|
|
262
270
|
return false;
|
|
263
271
|
}
|
|
264
272
|
}
|
|
273
|
+
const expressionOrPrimitiveIsLiteral = R.ifElse(isExpression, isLiteral, primitiveIsLiteral);
|
|
265
274
|
function primitiveIsLiteral(value) {
|
|
266
275
|
if (Array.isArray(value)) {
|
|
267
|
-
return value.every(
|
|
268
|
-
return isExpression(x) ? isLiteral(x) : primitiveIsLiteral(x);
|
|
269
|
-
});
|
|
276
|
+
return value.every(expressionOrPrimitiveIsLiteral);
|
|
270
277
|
}
|
|
271
278
|
else if (isRecord(value)) {
|
|
272
|
-
return Object.values(value).every(
|
|
273
|
-
return isExpression(x) ? isLiteral(x) : primitiveIsLiteral(x);
|
|
274
|
-
});
|
|
279
|
+
return Object.values(value).every(expressionOrPrimitiveIsLiteral);
|
|
275
280
|
}
|
|
276
281
|
else {
|
|
277
282
|
return (typeof value === 'string' ||
|
|
@@ -285,13 +290,32 @@ export function isFullyQualifiedName(ex) {
|
|
|
285
290
|
case 'primitive':
|
|
286
291
|
case 'binary':
|
|
287
292
|
case 'functionInvocation':
|
|
293
|
+
case 'unary':
|
|
288
294
|
return false;
|
|
289
295
|
case 'variableReference':
|
|
290
296
|
return true;
|
|
291
297
|
case 'member':
|
|
292
298
|
return (isFullyQualifiedName(ex.object) &&
|
|
293
|
-
(
|
|
299
|
+
(isFullyQualifiedName(ex.property) ||
|
|
300
|
+
(ex.computed && ex.property.expressionType === 'primitive')));
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Returns true if ex is pure expression (can't have side-effects)
|
|
305
|
+
*/
|
|
306
|
+
export function isPure(ex) {
|
|
307
|
+
switch (ex.expressionType) {
|
|
308
|
+
case 'primitive':
|
|
309
|
+
return true;
|
|
310
|
+
case 'binary':
|
|
311
|
+
return isPure(ex.left) && isPure(ex.right);
|
|
312
|
+
case 'functionInvocation':
|
|
313
|
+
return false;
|
|
314
|
+
case 'variableReference':
|
|
315
|
+
return true;
|
|
316
|
+
case 'member':
|
|
317
|
+
return isPure(ex.object) && isPure(ex.property);
|
|
294
318
|
case 'unary':
|
|
295
|
-
return
|
|
319
|
+
return isPure(ex.value);
|
|
296
320
|
}
|
|
297
321
|
}
|
package/dist/ast/steps.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare class SubworkflowAST {
|
|
|
25
25
|
/**
|
|
26
26
|
* A workflow step before step names have been assigned.
|
|
27
27
|
*/
|
|
28
|
-
export type WorkflowStepAST = AssignStepAST | CallStepAST | ForStepAST | NextStepAST | ParallelStepAST | RaiseStepAST | ReturnStepAST | StepsStepAST | SwitchStepAST | TryStepAST | JumpTargetAST;
|
|
28
|
+
export type WorkflowStepAST = AssignStepAST | CallStepAST | ForStepAST | ForRangeStepAST | NextStepAST | ParallelStepAST | RaiseStepAST | ReturnStepAST | StepsStepAST | SwitchStepAST | TryStepAST | JumpTargetAST;
|
|
29
29
|
/**
|
|
30
30
|
* A workflow step after names have been generated for the nested steps.
|
|
31
31
|
*/
|
|
@@ -42,6 +42,7 @@ export declare class AssignStepAST {
|
|
|
42
42
|
constructor(assignments: VariableAssignment[], next?: string, label?: string);
|
|
43
43
|
withNext(newNext?: string): AssignStepAST;
|
|
44
44
|
withLabel(newLabel?: string): AssignStepAST;
|
|
45
|
+
applyNestedSteps(): AssignStepAST;
|
|
45
46
|
}
|
|
46
47
|
export declare class CallStepAST {
|
|
47
48
|
readonly tag = "call";
|
|
@@ -52,6 +53,7 @@ export declare class CallStepAST {
|
|
|
52
53
|
constructor(call: string, args?: WorkflowParameters, result?: VariableName, label?: string);
|
|
53
54
|
labelPrefix(): string;
|
|
54
55
|
withLabel(newLabel?: string): CallStepAST;
|
|
56
|
+
applyNestedSteps(): CallStepAST;
|
|
55
57
|
}
|
|
56
58
|
export declare class ForStepAST {
|
|
57
59
|
readonly tag = "for";
|
|
@@ -59,11 +61,21 @@ export declare class ForStepAST {
|
|
|
59
61
|
readonly loopVariableName: VariableName;
|
|
60
62
|
readonly indexVariableName?: VariableName;
|
|
61
63
|
readonly listExpression: Expression;
|
|
62
|
-
readonly rangeStart?: number;
|
|
63
|
-
readonly rangeEnd?: number;
|
|
64
64
|
readonly label?: string;
|
|
65
|
-
constructor(steps: WorkflowStepAST[], loopVariableName: VariableName, listExpression: Expression, indexVariable?: VariableName,
|
|
65
|
+
constructor(steps: WorkflowStepAST[], loopVariableName: VariableName, listExpression: Expression, indexVariable?: VariableName, label?: string);
|
|
66
66
|
withLabel(newLabel?: string): ForStepAST;
|
|
67
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): ForStepAST;
|
|
68
|
+
}
|
|
69
|
+
export declare class ForRangeStepAST {
|
|
70
|
+
readonly tag = "forrange";
|
|
71
|
+
readonly steps: WorkflowStepAST[];
|
|
72
|
+
readonly loopVariableName: VariableName;
|
|
73
|
+
readonly rangeStart: number | Expression;
|
|
74
|
+
readonly rangeEnd: number | Expression;
|
|
75
|
+
readonly label?: string;
|
|
76
|
+
constructor(steps: WorkflowStepAST[], loopVariableName: VariableName, rangeStart: number | Expression, rangeEnd: number | Expression, label?: string);
|
|
77
|
+
withLabel(newLabel?: string): ForRangeStepAST;
|
|
78
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): ForRangeStepAST;
|
|
67
79
|
}
|
|
68
80
|
export declare class ForStepASTNamed {
|
|
69
81
|
readonly tag = "for";
|
|
@@ -71,9 +83,9 @@ export declare class ForStepASTNamed {
|
|
|
71
83
|
readonly loopVariableName: VariableName;
|
|
72
84
|
readonly indexVariableName?: VariableName;
|
|
73
85
|
readonly listExpression?: Expression;
|
|
74
|
-
readonly rangeStart?: number;
|
|
75
|
-
readonly rangeEnd?: number;
|
|
76
|
-
constructor(steps: NamedWorkflowStep[], loopVariableName: VariableName, listExpression?: Expression, indexVariable?: VariableName, rangeStart?: number, rangeEnd?: number);
|
|
86
|
+
readonly rangeStart?: number | Expression;
|
|
87
|
+
readonly rangeEnd?: number | Expression;
|
|
88
|
+
constructor(steps: NamedWorkflowStep[], loopVariableName: VariableName, listExpression?: Expression, indexVariable?: VariableName, rangeStart?: number | Expression, rangeEnd?: number | Expression);
|
|
77
89
|
}
|
|
78
90
|
export declare class NextStepAST {
|
|
79
91
|
readonly tag = "next";
|
|
@@ -81,6 +93,7 @@ export declare class NextStepAST {
|
|
|
81
93
|
readonly label?: string;
|
|
82
94
|
constructor(target: string, label?: string);
|
|
83
95
|
withLabel(newLabel?: string): NextStepAST;
|
|
96
|
+
applyNestedSteps(): NextStepAST;
|
|
84
97
|
}
|
|
85
98
|
export declare class ParallelStepAST {
|
|
86
99
|
readonly tag = "parallel";
|
|
@@ -91,6 +104,7 @@ export declare class ParallelStepAST {
|
|
|
91
104
|
readonly label?: string;
|
|
92
105
|
constructor(steps: Record<StepName, StepsStepAST> | ForStepAST, shared?: VariableName[], concurrencyLimit?: number, exceptionPolicy?: string, label?: string);
|
|
93
106
|
withLabel(newLabel?: string): ParallelStepAST;
|
|
107
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): ParallelStepAST;
|
|
94
108
|
}
|
|
95
109
|
export declare class ParallelStepASTNamed {
|
|
96
110
|
readonly tag = "parallel";
|
|
@@ -107,6 +121,7 @@ export declare class RaiseStepAST {
|
|
|
107
121
|
readonly label?: string;
|
|
108
122
|
constructor(value: Expression, label?: string);
|
|
109
123
|
withLabel(newLabel?: string): RaiseStepAST;
|
|
124
|
+
applyNestedSteps(): RaiseStepAST;
|
|
110
125
|
}
|
|
111
126
|
export declare class ReturnStepAST {
|
|
112
127
|
readonly tag = "return";
|
|
@@ -114,6 +129,7 @@ export declare class ReturnStepAST {
|
|
|
114
129
|
readonly label?: string;
|
|
115
130
|
constructor(value: Expression | undefined, label?: string);
|
|
116
131
|
withLabel(newLabel?: string): ReturnStepAST;
|
|
132
|
+
applyNestedSteps(): ReturnStepAST;
|
|
117
133
|
}
|
|
118
134
|
export declare class StepsStepAST {
|
|
119
135
|
readonly tag = "steps";
|
|
@@ -121,6 +137,7 @@ export declare class StepsStepAST {
|
|
|
121
137
|
readonly label?: string;
|
|
122
138
|
constructor(steps: WorkflowStepAST[], label?: string);
|
|
123
139
|
withLabel(newLabel?: string): StepsStepAST;
|
|
140
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): StepsStepAST;
|
|
124
141
|
}
|
|
125
142
|
export declare class StepsStepASTNamed {
|
|
126
143
|
readonly tag = "steps";
|
|
@@ -133,6 +150,7 @@ export declare class SwitchStepAST {
|
|
|
133
150
|
readonly label?: string;
|
|
134
151
|
constructor(branches: SwitchConditionAST<WorkflowStepAST>[], label?: string);
|
|
135
152
|
withLabel(newLabel?: string): SwitchStepAST;
|
|
153
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): SwitchStepAST;
|
|
136
154
|
}
|
|
137
155
|
export declare class SwitchStepASTNamed {
|
|
138
156
|
readonly tag = "switch";
|
|
@@ -154,6 +172,7 @@ export declare class TryStepAST {
|
|
|
154
172
|
readonly label?: string;
|
|
155
173
|
constructor(trySteps: WorkflowStepAST[], exceptSteps?: WorkflowStepAST[], retryPolicy?: string | CustomRetryPolicy, errorMap?: VariableName, label?: string);
|
|
156
174
|
withLabel(newLabel?: string): TryStepAST;
|
|
175
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): TryStepAST;
|
|
157
176
|
}
|
|
158
177
|
export declare class TryStepASTNamed {
|
|
159
178
|
readonly tag = "try";
|
|
@@ -167,6 +186,7 @@ export declare class JumpTargetAST {
|
|
|
167
186
|
readonly tag = "jumptarget";
|
|
168
187
|
readonly label: string;
|
|
169
188
|
constructor();
|
|
189
|
+
applyNestedSteps(): JumpTargetAST;
|
|
170
190
|
}
|
|
171
191
|
/**
|
|
172
192
|
* Assign a name for this step and its child steps.
|
package/dist/ast/steps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/ast/steps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/ast/steps.ts"],"names":[],"mappings":"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"}
|
package/dist/ast/steps.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import { isRecord } from '../utils.js';
|
|
2
3
|
import { expressionToLiteralValueOrLiteralExpression, } from './expressions.js';
|
|
3
4
|
import { Subworkflow } from './workflows.js';
|
|
4
5
|
export class SubworkflowAST {
|
|
@@ -37,6 +38,9 @@ export class AssignStepAST {
|
|
|
37
38
|
withLabel(newLabel) {
|
|
38
39
|
return new AssignStepAST(this.assignments, this.next, newLabel);
|
|
39
40
|
}
|
|
41
|
+
applyNestedSteps() {
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
40
44
|
}
|
|
41
45
|
// https://cloud.google.com/workflows/docs/reference/syntax/calls
|
|
42
46
|
export class CallStepAST {
|
|
@@ -57,6 +61,9 @@ export class CallStepAST {
|
|
|
57
61
|
withLabel(newLabel) {
|
|
58
62
|
return new CallStepAST(this.call, this.args, this.result, newLabel);
|
|
59
63
|
}
|
|
64
|
+
applyNestedSteps() {
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
60
67
|
}
|
|
61
68
|
// https://cloud.google.com/workflows/docs/reference/syntax/iteration
|
|
62
69
|
export class ForStepAST {
|
|
@@ -65,20 +72,40 @@ export class ForStepAST {
|
|
|
65
72
|
loopVariableName;
|
|
66
73
|
indexVariableName;
|
|
67
74
|
listExpression;
|
|
68
|
-
rangeStart;
|
|
69
|
-
rangeEnd;
|
|
70
75
|
label;
|
|
71
|
-
constructor(steps, loopVariableName, listExpression, indexVariable,
|
|
76
|
+
constructor(steps, loopVariableName, listExpression, indexVariable, label) {
|
|
72
77
|
this.steps = steps;
|
|
73
78
|
this.loopVariableName = loopVariableName;
|
|
74
79
|
this.listExpression = listExpression;
|
|
75
80
|
this.indexVariableName = indexVariable;
|
|
81
|
+
this.label = label;
|
|
82
|
+
}
|
|
83
|
+
withLabel(newLabel) {
|
|
84
|
+
return new ForStepAST(this.steps, this.loopVariableName, this.listExpression, this.indexVariableName, newLabel);
|
|
85
|
+
}
|
|
86
|
+
applyNestedSteps(fn) {
|
|
87
|
+
return new ForStepAST(fn(this.steps), this.loopVariableName, this.listExpression, this.indexVariableName, this.label);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export class ForRangeStepAST {
|
|
91
|
+
tag = 'forrange';
|
|
92
|
+
steps;
|
|
93
|
+
loopVariableName;
|
|
94
|
+
rangeStart;
|
|
95
|
+
rangeEnd;
|
|
96
|
+
label;
|
|
97
|
+
constructor(steps, loopVariableName, rangeStart, rangeEnd, label) {
|
|
98
|
+
this.steps = steps;
|
|
99
|
+
this.loopVariableName = loopVariableName;
|
|
76
100
|
this.rangeStart = rangeStart;
|
|
77
101
|
this.rangeEnd = rangeEnd;
|
|
78
102
|
this.label = label;
|
|
79
103
|
}
|
|
80
104
|
withLabel(newLabel) {
|
|
81
|
-
return new
|
|
105
|
+
return new ForRangeStepAST(this.steps, this.loopVariableName, this.rangeStart, this.rangeEnd, newLabel);
|
|
106
|
+
}
|
|
107
|
+
applyNestedSteps(fn) {
|
|
108
|
+
return new ForRangeStepAST(fn(this.steps), this.loopVariableName, this.rangeStart, this.rangeEnd, this.label);
|
|
82
109
|
}
|
|
83
110
|
}
|
|
84
111
|
export class ForStepASTNamed {
|
|
@@ -109,6 +136,9 @@ export class NextStepAST {
|
|
|
109
136
|
withLabel(newLabel) {
|
|
110
137
|
return new NextStepAST(this.target, newLabel);
|
|
111
138
|
}
|
|
139
|
+
applyNestedSteps() {
|
|
140
|
+
return this;
|
|
141
|
+
}
|
|
112
142
|
}
|
|
113
143
|
// https://cloud.google.com/workflows/docs/reference/syntax/parallel-steps
|
|
114
144
|
export class ParallelStepAST {
|
|
@@ -128,6 +158,16 @@ export class ParallelStepAST {
|
|
|
128
158
|
withLabel(newLabel) {
|
|
129
159
|
return new ParallelStepAST(this.steps, this.shared, this.concurrencyLimit, this.exceptionPolicy, newLabel);
|
|
130
160
|
}
|
|
161
|
+
applyNestedSteps(fn) {
|
|
162
|
+
let transformedSteps;
|
|
163
|
+
if (this.steps instanceof ForStepAST) {
|
|
164
|
+
transformedSteps = this.steps.applyNestedSteps(fn);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
transformedSteps = R.map((s) => new StepsStepAST(fn(s.steps), s.label), this.steps);
|
|
168
|
+
}
|
|
169
|
+
return new ParallelStepAST(transformedSteps, this.shared, this.concurrencyLimit, this.exceptionPolicy, this.label);
|
|
170
|
+
}
|
|
131
171
|
}
|
|
132
172
|
export class ParallelStepASTNamed {
|
|
133
173
|
tag = 'parallel';
|
|
@@ -162,6 +202,9 @@ export class RaiseStepAST {
|
|
|
162
202
|
withLabel(newLabel) {
|
|
163
203
|
return new RaiseStepAST(this.value, newLabel);
|
|
164
204
|
}
|
|
205
|
+
applyNestedSteps() {
|
|
206
|
+
return this;
|
|
207
|
+
}
|
|
165
208
|
}
|
|
166
209
|
// https://cloud.google.com/workflows/docs/reference/syntax/completing
|
|
167
210
|
export class ReturnStepAST {
|
|
@@ -175,6 +218,9 @@ export class ReturnStepAST {
|
|
|
175
218
|
withLabel(newLabel) {
|
|
176
219
|
return new ReturnStepAST(this.value, newLabel);
|
|
177
220
|
}
|
|
221
|
+
applyNestedSteps() {
|
|
222
|
+
return this;
|
|
223
|
+
}
|
|
178
224
|
}
|
|
179
225
|
// https://cloud.google.com/workflows/docs/reference/syntax/steps#embedded-steps
|
|
180
226
|
export class StepsStepAST {
|
|
@@ -188,6 +234,9 @@ export class StepsStepAST {
|
|
|
188
234
|
withLabel(newLabel) {
|
|
189
235
|
return new StepsStepAST(this.steps, newLabel);
|
|
190
236
|
}
|
|
237
|
+
applyNestedSteps(fn) {
|
|
238
|
+
return new StepsStepAST(fn(this.steps), this.label);
|
|
239
|
+
}
|
|
191
240
|
}
|
|
192
241
|
export class StepsStepASTNamed {
|
|
193
242
|
tag = 'steps';
|
|
@@ -208,6 +257,13 @@ export class SwitchStepAST {
|
|
|
208
257
|
withLabel(newLabel) {
|
|
209
258
|
return new SwitchStepAST(this.branches, newLabel);
|
|
210
259
|
}
|
|
260
|
+
applyNestedSteps(fn) {
|
|
261
|
+
return new SwitchStepAST(this.branches.map((branch) => ({
|
|
262
|
+
condition: branch.condition,
|
|
263
|
+
steps: fn(branch.steps),
|
|
264
|
+
next: branch.next,
|
|
265
|
+
})), this.label);
|
|
266
|
+
}
|
|
211
267
|
}
|
|
212
268
|
export class SwitchStepASTNamed {
|
|
213
269
|
tag = 'switch';
|
|
@@ -236,6 +292,9 @@ export class TryStepAST {
|
|
|
236
292
|
withLabel(newLabel) {
|
|
237
293
|
return new TryStepAST(this.trySteps, this.exceptSteps, this.retryPolicy, this.errorMap, newLabel);
|
|
238
294
|
}
|
|
295
|
+
applyNestedSteps(fn) {
|
|
296
|
+
return new TryStepAST(fn(this.trySteps), this.exceptSteps ? fn(this.exceptSteps) : undefined, this.retryPolicy, this.errorMap, this.label);
|
|
297
|
+
}
|
|
239
298
|
}
|
|
240
299
|
export class TryStepASTNamed {
|
|
241
300
|
tag = 'try';
|
|
@@ -261,6 +320,9 @@ export class JumpTargetAST {
|
|
|
261
320
|
constructor() {
|
|
262
321
|
this.label = `jumptarget_${Math.floor(Math.random() * 2 ** 32).toString(16)}`;
|
|
263
322
|
}
|
|
323
|
+
applyNestedSteps() {
|
|
324
|
+
return this;
|
|
325
|
+
}
|
|
264
326
|
}
|
|
265
327
|
/**
|
|
266
328
|
* Assign a name for this step and its child steps.
|
|
@@ -284,6 +346,8 @@ export function namedSteps(step, generateName) {
|
|
|
284
346
|
};
|
|
285
347
|
case 'for':
|
|
286
348
|
return namedStepsFor(step, generateName);
|
|
349
|
+
case 'forrange':
|
|
350
|
+
return namedStepsForRange(step, generateName);
|
|
287
351
|
case 'parallel':
|
|
288
352
|
return namedStepsParallel(step, generateName);
|
|
289
353
|
case 'steps':
|
|
@@ -302,7 +366,13 @@ export function namedSteps(step, generateName) {
|
|
|
302
366
|
function namedStepsFor(step, generateName) {
|
|
303
367
|
return {
|
|
304
368
|
name: step.label ?? generateName('for'),
|
|
305
|
-
step: new ForStepASTNamed(step.steps.map((nestedStep) => namedSteps(nestedStep, generateName)), step.loopVariableName, step.listExpression),
|
|
369
|
+
step: new ForStepASTNamed(step.steps.map((nestedStep) => namedSteps(nestedStep, generateName)), step.loopVariableName, step.listExpression, step.indexVariableName),
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
function namedStepsForRange(step, generateName) {
|
|
373
|
+
return {
|
|
374
|
+
name: step.label ?? generateName('for'),
|
|
375
|
+
step: new ForStepASTNamed(step.steps.map((nestedStep) => namedSteps(nestedStep, generateName)), step.loopVariableName, undefined, undefined, step.rangeStart, step.rangeEnd),
|
|
306
376
|
};
|
|
307
377
|
}
|
|
308
378
|
function namedStepsParallel(step, generateName) {
|
|
@@ -316,10 +386,10 @@ function namedStepsParallel(step, generateName) {
|
|
|
316
386
|
steps = forStep;
|
|
317
387
|
}
|
|
318
388
|
else {
|
|
319
|
-
steps =
|
|
389
|
+
steps = R.map((step) => {
|
|
320
390
|
const named = step.steps.map((x) => namedSteps(x, generateName));
|
|
321
391
|
return new StepsStepASTNamed(named);
|
|
322
|
-
});
|
|
392
|
+
}, step.steps);
|
|
323
393
|
}
|
|
324
394
|
return {
|
|
325
395
|
name: mainLabel,
|
|
@@ -421,10 +491,10 @@ export function renderStep(step) {
|
|
|
421
491
|
return {
|
|
422
492
|
parallel: {
|
|
423
493
|
...(step.shared && { shared: step.shared }),
|
|
424
|
-
...(step.concurrenceLimit && {
|
|
494
|
+
...(step.concurrenceLimit !== undefined && {
|
|
425
495
|
concurrency_limit: step.concurrenceLimit,
|
|
426
496
|
}),
|
|
427
|
-
...(step.exceptionPolicy && {
|
|
497
|
+
...(step.exceptionPolicy !== undefined && {
|
|
428
498
|
exception_policy: step.exceptionPolicy,
|
|
429
499
|
}),
|
|
430
500
|
...(step.branches && { branches: renderSteps(step.branches) }),
|
|
@@ -466,20 +536,23 @@ function renderSwitchCondition(cond) {
|
|
|
466
536
|
function renderCallStep(step) {
|
|
467
537
|
let args = undefined;
|
|
468
538
|
if (step.args) {
|
|
469
|
-
args =
|
|
539
|
+
args = R.map(expressionToLiteralValueOrLiteralExpression, step.args);
|
|
470
540
|
}
|
|
471
541
|
return {
|
|
472
542
|
call: step.call,
|
|
473
|
-
...(args && { args }),
|
|
474
|
-
...(step.result && { result: step.result }),
|
|
543
|
+
...(args !== undefined && { args }),
|
|
544
|
+
...(step.result !== undefined && { result: step.result }),
|
|
475
545
|
};
|
|
476
546
|
}
|
|
477
547
|
function renderForBody(step) {
|
|
478
548
|
let range;
|
|
479
549
|
let inValue;
|
|
480
550
|
if (typeof step.listExpression === 'undefined') {
|
|
481
|
-
range = [step.rangeStart, step.rangeEnd];
|
|
482
551
|
inValue = undefined;
|
|
552
|
+
range = [
|
|
553
|
+
renderForRangeLimit(step.rangeStart),
|
|
554
|
+
renderForRangeLimit(step.rangeEnd),
|
|
555
|
+
];
|
|
483
556
|
}
|
|
484
557
|
else {
|
|
485
558
|
inValue = expressionToLiteralValueOrLiteralExpression(step.listExpression);
|
|
@@ -487,12 +560,22 @@ function renderForBody(step) {
|
|
|
487
560
|
}
|
|
488
561
|
return {
|
|
489
562
|
value: step.loopVariableName,
|
|
490
|
-
...(step.indexVariableName && {
|
|
491
|
-
|
|
492
|
-
|
|
563
|
+
...(step.indexVariableName !== undefined && {
|
|
564
|
+
index: step.indexVariableName,
|
|
565
|
+
}),
|
|
566
|
+
...(inValue !== undefined && { in: inValue }),
|
|
567
|
+
...(range !== undefined && { range }),
|
|
493
568
|
steps: renderSteps(step.steps),
|
|
494
569
|
};
|
|
495
570
|
}
|
|
571
|
+
function renderForRangeLimit(value) {
|
|
572
|
+
if (value === undefined || typeof value === 'number') {
|
|
573
|
+
return value ?? null;
|
|
574
|
+
}
|
|
575
|
+
else {
|
|
576
|
+
return expressionToLiteralValueOrLiteralExpression(value);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
496
579
|
function renderReturnStep(step) {
|
|
497
580
|
if (step.value) {
|
|
498
581
|
return {
|
|
@@ -519,17 +602,17 @@ function renderTryStep(step) {
|
|
|
519
602
|
...(predicateName ? { predicate: `\${${predicateName}}` } : {}),
|
|
520
603
|
max_retries: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.maxRetries),
|
|
521
604
|
backoff: {
|
|
522
|
-
...(step.retryPolicy.backoff.initialDelay
|
|
605
|
+
...(step.retryPolicy.backoff.initialDelay !== undefined
|
|
523
606
|
? {
|
|
524
607
|
initial_delay: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.initialDelay),
|
|
525
608
|
}
|
|
526
609
|
: {}),
|
|
527
|
-
...(step.retryPolicy.backoff.maxDelay
|
|
610
|
+
...(step.retryPolicy.backoff.maxDelay !== undefined
|
|
528
611
|
? {
|
|
529
612
|
max_delay: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.maxDelay),
|
|
530
613
|
}
|
|
531
614
|
: {}),
|
|
532
|
-
...(step.retryPolicy.backoff.multiplier
|
|
615
|
+
...(step.retryPolicy.backoff.multiplier !== undefined
|
|
533
616
|
? {
|
|
534
617
|
multiplier: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.multiplier),
|
|
535
618
|
}
|
|
@@ -551,7 +634,7 @@ function renderTryStep(step) {
|
|
|
551
634
|
try: {
|
|
552
635
|
steps: renderSteps(step.trySteps),
|
|
553
636
|
},
|
|
554
|
-
...(retry && { retry }),
|
|
637
|
+
...(retry !== undefined && { retry }),
|
|
555
638
|
...(except && { except }),
|
|
556
639
|
};
|
|
557
640
|
}
|
|
@@ -7,5 +7,4 @@ export declare function convertMemberExpression(node: TSESTree.MemberExpression)
|
|
|
7
7
|
export declare function isMagicFunction(calleeName: string): boolean;
|
|
8
8
|
export declare function isMagicFunctionStatmentOnly(calleeName: string): boolean;
|
|
9
9
|
export declare function throwIfSpread<T extends TSESTree.Expression | TSESTree.Property | TSESTree.SpreadElement | null>(nodes: T[]): Exclude<T, TSESTree.SpreadElement>[];
|
|
10
|
-
export declare function asExpression(x: Primitive | Expression): Expression;
|
|
11
10
|
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/transpiler/expressions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/transpiler/expressions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAkB,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAGL,UAAU,EAGV,SAAS,EAOV,MAAM,uBAAuB,CAAA;AAG9B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,GAAG,UAAU,CAiE3E;AAcD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,GAC9B,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,CAgCxC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,QAAQ,CAAC,gBAAgB,GAC9B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAG5B;AAwJD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,GAC9B,UAAU,CAcZ;AA0JD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAG3D;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGvE;AAoDD,wBAAgB,aAAa,CAC3B,CAAC,SACG,QAAQ,CAAC,UAAU,GACnB,QAAQ,CAAC,QAAQ,GACjB,QAAQ,CAAC,aAAa,GACtB,IAAI,EACR,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAgBlD"}
|