ts2workflows 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -4
- 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 +32 -9
- package/dist/ast/steps.d.ts.map +1 -1
- package/dist/ast/steps.js +108 -23
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +4 -0
- package/dist/transpiler/expressions.d.ts +4 -4
- package/dist/transpiler/expressions.d.ts.map +1 -1
- package/dist/transpiler/expressions.js +65 -68
- package/dist/transpiler/index.d.ts.map +1 -1
- package/dist/transpiler/index.js +10 -4
- package/dist/transpiler/statements.d.ts +4 -3
- package/dist/transpiler/statements.d.ts.map +1 -1
- package/dist/transpiler/statements.js +520 -126
- package/dist/transpiler/transformations.d.ts +0 -6
- package/dist/transpiler/transformations.d.ts.map +1 -1
- package/dist/transpiler/transformations.js +102 -154
- 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
package/README.md
CHANGED
|
@@ -61,10 +61,6 @@ npm run build
|
|
|
61
61
|
npm run test
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
## Publishing the package to npmjs.com
|
|
65
|
-
|
|
66
|
-
Update CHANGELOG.md, the version number in package.json, npm install, commit, tag with v1.2.3 and push. A Github Actions worklfow will build the package and publish it on tag pushes.
|
|
67
|
-
|
|
68
64
|
## Architecture
|
|
69
65
|
|
|
70
66
|
A transpilation using ts2workflows consists of five phases:
|
|
@@ -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
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { Expression, VariableName } from './expressions.js';
|
|
1
|
+
import { Expression, MemberExpression, VariableName, VariableReferenceExpression } from './expressions.js';
|
|
2
2
|
import { Subworkflow, WorkflowParameter } from './workflows.js';
|
|
3
3
|
export type StepName = string;
|
|
4
|
-
export
|
|
4
|
+
export interface VariableAssignment {
|
|
5
|
+
name: VariableReferenceExpression | MemberExpression;
|
|
6
|
+
value: Expression;
|
|
7
|
+
}
|
|
5
8
|
export type WorkflowParameters = Record<VariableName, Expression>;
|
|
6
9
|
export interface CustomRetryPolicy {
|
|
7
10
|
predicate?: string;
|
|
@@ -25,7 +28,7 @@ export declare class SubworkflowAST {
|
|
|
25
28
|
/**
|
|
26
29
|
* A workflow step before step names have been assigned.
|
|
27
30
|
*/
|
|
28
|
-
export type WorkflowStepAST = AssignStepAST | CallStepAST | ForStepAST | NextStepAST | ParallelStepAST | RaiseStepAST | ReturnStepAST | StepsStepAST | SwitchStepAST | TryStepAST | JumpTargetAST;
|
|
31
|
+
export type WorkflowStepAST = AssignStepAST | CallStepAST | ForStepAST | ForRangeStepAST | NextStepAST | ParallelStepAST | RaiseStepAST | ReturnStepAST | StepsStepAST | SwitchStepAST | TryStepAST | JumpTargetAST;
|
|
29
32
|
/**
|
|
30
33
|
* A workflow step after names have been generated for the nested steps.
|
|
31
34
|
*/
|
|
@@ -42,6 +45,7 @@ export declare class AssignStepAST {
|
|
|
42
45
|
constructor(assignments: VariableAssignment[], next?: string, label?: string);
|
|
43
46
|
withNext(newNext?: string): AssignStepAST;
|
|
44
47
|
withLabel(newLabel?: string): AssignStepAST;
|
|
48
|
+
applyNestedSteps(): AssignStepAST;
|
|
45
49
|
}
|
|
46
50
|
export declare class CallStepAST {
|
|
47
51
|
readonly tag = "call";
|
|
@@ -52,6 +56,7 @@ export declare class CallStepAST {
|
|
|
52
56
|
constructor(call: string, args?: WorkflowParameters, result?: VariableName, label?: string);
|
|
53
57
|
labelPrefix(): string;
|
|
54
58
|
withLabel(newLabel?: string): CallStepAST;
|
|
59
|
+
applyNestedSteps(): CallStepAST;
|
|
55
60
|
}
|
|
56
61
|
export declare class ForStepAST {
|
|
57
62
|
readonly tag = "for";
|
|
@@ -59,11 +64,21 @@ export declare class ForStepAST {
|
|
|
59
64
|
readonly loopVariableName: VariableName;
|
|
60
65
|
readonly indexVariableName?: VariableName;
|
|
61
66
|
readonly listExpression: Expression;
|
|
62
|
-
readonly rangeStart?: number;
|
|
63
|
-
readonly rangeEnd?: number;
|
|
64
67
|
readonly label?: string;
|
|
65
|
-
constructor(steps: WorkflowStepAST[], loopVariableName: VariableName, listExpression: Expression, indexVariable?: VariableName,
|
|
68
|
+
constructor(steps: WorkflowStepAST[], loopVariableName: VariableName, listExpression: Expression, indexVariable?: VariableName, label?: string);
|
|
66
69
|
withLabel(newLabel?: string): ForStepAST;
|
|
70
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): ForStepAST;
|
|
71
|
+
}
|
|
72
|
+
export declare class ForRangeStepAST {
|
|
73
|
+
readonly tag = "forrange";
|
|
74
|
+
readonly steps: WorkflowStepAST[];
|
|
75
|
+
readonly loopVariableName: VariableName;
|
|
76
|
+
readonly rangeStart: number | Expression;
|
|
77
|
+
readonly rangeEnd: number | Expression;
|
|
78
|
+
readonly label?: string;
|
|
79
|
+
constructor(steps: WorkflowStepAST[], loopVariableName: VariableName, rangeStart: number | Expression, rangeEnd: number | Expression, label?: string);
|
|
80
|
+
withLabel(newLabel?: string): ForRangeStepAST;
|
|
81
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): ForRangeStepAST;
|
|
67
82
|
}
|
|
68
83
|
export declare class ForStepASTNamed {
|
|
69
84
|
readonly tag = "for";
|
|
@@ -71,9 +86,9 @@ export declare class ForStepASTNamed {
|
|
|
71
86
|
readonly loopVariableName: VariableName;
|
|
72
87
|
readonly indexVariableName?: VariableName;
|
|
73
88
|
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);
|
|
89
|
+
readonly rangeStart?: number | Expression;
|
|
90
|
+
readonly rangeEnd?: number | Expression;
|
|
91
|
+
constructor(steps: NamedWorkflowStep[], loopVariableName: VariableName, listExpression?: Expression, indexVariable?: VariableName, rangeStart?: number | Expression, rangeEnd?: number | Expression);
|
|
77
92
|
}
|
|
78
93
|
export declare class NextStepAST {
|
|
79
94
|
readonly tag = "next";
|
|
@@ -81,6 +96,7 @@ export declare class NextStepAST {
|
|
|
81
96
|
readonly label?: string;
|
|
82
97
|
constructor(target: string, label?: string);
|
|
83
98
|
withLabel(newLabel?: string): NextStepAST;
|
|
99
|
+
applyNestedSteps(): NextStepAST;
|
|
84
100
|
}
|
|
85
101
|
export declare class ParallelStepAST {
|
|
86
102
|
readonly tag = "parallel";
|
|
@@ -91,6 +107,7 @@ export declare class ParallelStepAST {
|
|
|
91
107
|
readonly label?: string;
|
|
92
108
|
constructor(steps: Record<StepName, StepsStepAST> | ForStepAST, shared?: VariableName[], concurrencyLimit?: number, exceptionPolicy?: string, label?: string);
|
|
93
109
|
withLabel(newLabel?: string): ParallelStepAST;
|
|
110
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): ParallelStepAST;
|
|
94
111
|
}
|
|
95
112
|
export declare class ParallelStepASTNamed {
|
|
96
113
|
readonly tag = "parallel";
|
|
@@ -107,6 +124,7 @@ export declare class RaiseStepAST {
|
|
|
107
124
|
readonly label?: string;
|
|
108
125
|
constructor(value: Expression, label?: string);
|
|
109
126
|
withLabel(newLabel?: string): RaiseStepAST;
|
|
127
|
+
applyNestedSteps(): RaiseStepAST;
|
|
110
128
|
}
|
|
111
129
|
export declare class ReturnStepAST {
|
|
112
130
|
readonly tag = "return";
|
|
@@ -114,6 +132,7 @@ export declare class ReturnStepAST {
|
|
|
114
132
|
readonly label?: string;
|
|
115
133
|
constructor(value: Expression | undefined, label?: string);
|
|
116
134
|
withLabel(newLabel?: string): ReturnStepAST;
|
|
135
|
+
applyNestedSteps(): ReturnStepAST;
|
|
117
136
|
}
|
|
118
137
|
export declare class StepsStepAST {
|
|
119
138
|
readonly tag = "steps";
|
|
@@ -121,6 +140,7 @@ export declare class StepsStepAST {
|
|
|
121
140
|
readonly label?: string;
|
|
122
141
|
constructor(steps: WorkflowStepAST[], label?: string);
|
|
123
142
|
withLabel(newLabel?: string): StepsStepAST;
|
|
143
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): StepsStepAST;
|
|
124
144
|
}
|
|
125
145
|
export declare class StepsStepASTNamed {
|
|
126
146
|
readonly tag = "steps";
|
|
@@ -133,6 +153,7 @@ export declare class SwitchStepAST {
|
|
|
133
153
|
readonly label?: string;
|
|
134
154
|
constructor(branches: SwitchConditionAST<WorkflowStepAST>[], label?: string);
|
|
135
155
|
withLabel(newLabel?: string): SwitchStepAST;
|
|
156
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): SwitchStepAST;
|
|
136
157
|
}
|
|
137
158
|
export declare class SwitchStepASTNamed {
|
|
138
159
|
readonly tag = "switch";
|
|
@@ -154,6 +175,7 @@ export declare class TryStepAST {
|
|
|
154
175
|
readonly label?: string;
|
|
155
176
|
constructor(trySteps: WorkflowStepAST[], exceptSteps?: WorkflowStepAST[], retryPolicy?: string | CustomRetryPolicy, errorMap?: VariableName, label?: string);
|
|
156
177
|
withLabel(newLabel?: string): TryStepAST;
|
|
178
|
+
applyNestedSteps(fn: (steps: WorkflowStepAST[]) => WorkflowStepAST[]): TryStepAST;
|
|
157
179
|
}
|
|
158
180
|
export declare class TryStepASTNamed {
|
|
159
181
|
readonly tag = "try";
|
|
@@ -167,6 +189,7 @@ export declare class JumpTargetAST {
|
|
|
167
189
|
readonly tag = "jumptarget";
|
|
168
190
|
readonly label: string;
|
|
169
191
|
constructor();
|
|
192
|
+
applyNestedSteps(): JumpTargetAST;
|
|
170
193
|
}
|
|
171
194
|
/**
|
|
172
195
|
* 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,
|
|
@@ -406,8 +476,10 @@ export function renderStep(step) {
|
|
|
406
476
|
switch (step.tag) {
|
|
407
477
|
case 'assign':
|
|
408
478
|
return {
|
|
409
|
-
assign: step.assignments.map((
|
|
410
|
-
return {
|
|
479
|
+
assign: step.assignments.map(({ name, value }) => {
|
|
480
|
+
return {
|
|
481
|
+
[name.toString()]: expressionToLiteralValueOrLiteralExpression(value),
|
|
482
|
+
};
|
|
411
483
|
}),
|
|
412
484
|
...(step.next && { next: step.next }),
|
|
413
485
|
};
|
|
@@ -421,10 +493,10 @@ export function renderStep(step) {
|
|
|
421
493
|
return {
|
|
422
494
|
parallel: {
|
|
423
495
|
...(step.shared && { shared: step.shared }),
|
|
424
|
-
...(step.concurrenceLimit && {
|
|
496
|
+
...(step.concurrenceLimit !== undefined && {
|
|
425
497
|
concurrency_limit: step.concurrenceLimit,
|
|
426
498
|
}),
|
|
427
|
-
...(step.exceptionPolicy && {
|
|
499
|
+
...(step.exceptionPolicy !== undefined && {
|
|
428
500
|
exception_policy: step.exceptionPolicy,
|
|
429
501
|
}),
|
|
430
502
|
...(step.branches && { branches: renderSteps(step.branches) }),
|
|
@@ -466,20 +538,23 @@ function renderSwitchCondition(cond) {
|
|
|
466
538
|
function renderCallStep(step) {
|
|
467
539
|
let args = undefined;
|
|
468
540
|
if (step.args) {
|
|
469
|
-
args =
|
|
541
|
+
args = R.map(expressionToLiteralValueOrLiteralExpression, step.args);
|
|
470
542
|
}
|
|
471
543
|
return {
|
|
472
544
|
call: step.call,
|
|
473
|
-
...(args && { args }),
|
|
474
|
-
...(step.result && { result: step.result }),
|
|
545
|
+
...(args && Object.keys(args).length > 0 && { args }),
|
|
546
|
+
...(step.result !== undefined && { result: step.result }),
|
|
475
547
|
};
|
|
476
548
|
}
|
|
477
549
|
function renderForBody(step) {
|
|
478
550
|
let range;
|
|
479
551
|
let inValue;
|
|
480
552
|
if (typeof step.listExpression === 'undefined') {
|
|
481
|
-
range = [step.rangeStart, step.rangeEnd];
|
|
482
553
|
inValue = undefined;
|
|
554
|
+
range = [
|
|
555
|
+
renderForRangeLimit(step.rangeStart),
|
|
556
|
+
renderForRangeLimit(step.rangeEnd),
|
|
557
|
+
];
|
|
483
558
|
}
|
|
484
559
|
else {
|
|
485
560
|
inValue = expressionToLiteralValueOrLiteralExpression(step.listExpression);
|
|
@@ -487,12 +562,22 @@ function renderForBody(step) {
|
|
|
487
562
|
}
|
|
488
563
|
return {
|
|
489
564
|
value: step.loopVariableName,
|
|
490
|
-
...(step.indexVariableName && {
|
|
491
|
-
|
|
492
|
-
|
|
565
|
+
...(step.indexVariableName !== undefined && {
|
|
566
|
+
index: step.indexVariableName,
|
|
567
|
+
}),
|
|
568
|
+
...(inValue !== undefined && { in: inValue }),
|
|
569
|
+
...(range !== undefined && { range }),
|
|
493
570
|
steps: renderSteps(step.steps),
|
|
494
571
|
};
|
|
495
572
|
}
|
|
573
|
+
function renderForRangeLimit(value) {
|
|
574
|
+
if (value === undefined || typeof value === 'number') {
|
|
575
|
+
return value ?? null;
|
|
576
|
+
}
|
|
577
|
+
else {
|
|
578
|
+
return expressionToLiteralValueOrLiteralExpression(value);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
496
581
|
function renderReturnStep(step) {
|
|
497
582
|
if (step.value) {
|
|
498
583
|
return {
|
|
@@ -519,17 +604,17 @@ function renderTryStep(step) {
|
|
|
519
604
|
...(predicateName ? { predicate: `\${${predicateName}}` } : {}),
|
|
520
605
|
max_retries: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.maxRetries),
|
|
521
606
|
backoff: {
|
|
522
|
-
...(step.retryPolicy.backoff.initialDelay
|
|
607
|
+
...(step.retryPolicy.backoff.initialDelay !== undefined
|
|
523
608
|
? {
|
|
524
609
|
initial_delay: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.initialDelay),
|
|
525
610
|
}
|
|
526
611
|
: {}),
|
|
527
|
-
...(step.retryPolicy.backoff.maxDelay
|
|
612
|
+
...(step.retryPolicy.backoff.maxDelay !== undefined
|
|
528
613
|
? {
|
|
529
614
|
max_delay: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.maxDelay),
|
|
530
615
|
}
|
|
531
616
|
: {}),
|
|
532
|
-
...(step.retryPolicy.backoff.multiplier
|
|
617
|
+
...(step.retryPolicy.backoff.multiplier !== undefined
|
|
533
618
|
? {
|
|
534
619
|
multiplier: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.multiplier),
|
|
535
620
|
}
|
|
@@ -551,7 +636,7 @@ function renderTryStep(step) {
|
|
|
551
636
|
try: {
|
|
552
637
|
steps: renderSteps(step.trySteps),
|
|
553
638
|
},
|
|
554
|
-
...(retry && { retry }),
|
|
639
|
+
...(retry !== undefined && { retry }),
|
|
555
640
|
...(except && { except }),
|
|
556
641
|
};
|
|
557
642
|
}
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACtC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IACvC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACtC;AAID,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,EAAE,kBAAkB,CAAA;gBAEhB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB;CAI1D;AAID,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAG5B"}
|