ts2workflows 0.7.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/README.md CHANGED
@@ -16,6 +16,12 @@ Converting Typescript code in a file samples/sample1.ts into GCP Workflows YAML
16
16
  npx ts2workflows samples/sample1.ts
17
17
  ```
18
18
 
19
+ Compile multiple files and write result to an output directory `workflowsfiles`. This will write one output file corresponding to each input file in a directory given by the `--outdir` argument. The output files are named similarly to the input files but using `.yaml` as the file extension. The output directory will be created if it doesn't exist. Supplying the TSConfig with the `--project` argument makes compiling multiple files faster.
20
+
21
+ ```sh
22
+ npx ts2workflows --project samples/tsconfig.json --outdir workflowsfiles samples/*.ts
23
+ ```
24
+
19
25
  When developing ts2workflows, you can run the transpiler directly from the source directory:
20
26
 
21
27
  ```sh
@@ -29,10 +35,10 @@ One benefit of writing the workflow programs in Typescript is that the sources c
29
35
  This example command shows how to type check source files in the [samples](samples) directory using the standard Typescript compiler `tsc`. The command prints typing errors or finishes silently, if there are no errors.
30
36
 
31
37
  ```sh
32
- npx tsc --project tsconfig.workflows.json
38
+ npx tsc --project samples/tsconfig.json
33
39
  ```
34
40
 
35
- The file [tsconfig.workflows.json](tsconfig.workflows.json) contains a sample configuration for type checking workflow sources.
41
+ The file [samples/tsconfig.json](samples/tsconfig.json) contains a sample configuration for type checking workflow sources.
36
42
 
37
43
  Type annotations for [Workflows standard library functions and expression helpers](https://cloud.google.com/workflows/docs/reference/stdlib/overview) and for some [connectors](https://cloud.google.com/workflows/docs/reference/googleapis) are provided in [types/workflowslib.d.ts](types/workflowslib.d.ts). They are also included in the published npm module. To import type annotations in a project that has ts2workflows module as a dependency, use the following import command:
38
44
 
@@ -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":"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"}
1
+ {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/ast/expressions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { isRecord, mapRecordValues } from '../utils.js';
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
- const elements = val.map((x) => {
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 items = Object.entries(val).map(([k, v]) => {
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
- return mapRecordValues(ex.value, (v) => {
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((x) => {
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((x) => {
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
- (ex.computed || isFullyQualifiedName(ex.property)));
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 isFullyQualifiedName(ex.value);
319
+ return isPure(ex.value);
296
320
  }
297
321
  }
@@ -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, rangeStart?: number, rangeEnd?: number, label?: string);
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.
@@ -1 +1 @@
1
- {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/ast/steps.ts"],"names":[],"mappings":"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"}
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 { isRecord, mapRecordValues } from '../utils.js';
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, rangeStart, rangeEnd, label) {
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 ForStepAST(this.steps, this.loopVariableName, this.listExpression, this.indexVariableName, this.rangeStart, this.rangeEnd, newLabel);
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 = mapRecordValues(step.steps, (step) => {
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 = mapRecordValues(step.args, (v) => expressionToLiteralValueOrLiteralExpression(v));
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 && { index: step.indexVariableName }),
491
- ...(inValue && { in: inValue }),
492
- ...(range && { range }),
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
  }