ts2workflows 0.4.0 → 0.6.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 +6 -2
- package/dist/ast/expressions.d.ts.map +1 -1
- package/dist/ast/expressions.js +7 -10
- package/dist/ast/stepnames.js +4 -2
- package/dist/ast/steps.d.ts +9 -9
- package/dist/ast/steps.d.ts.map +1 -1
- package/dist/ast/steps.js +33 -20
- package/dist/ast/workflows.js +1 -1
- package/dist/transpiler/expressions.d.ts +2 -0
- package/dist/transpiler/expressions.d.ts.map +1 -1
- package/dist/transpiler/expressions.js +9 -5
- package/dist/transpiler/statements.d.ts +1 -0
- package/dist/transpiler/statements.d.ts.map +1 -1
- package/dist/transpiler/statements.js +237 -45
- package/dist/transpiler/transformations.d.ts.map +1 -1
- package/dist/transpiler/transformations.js +194 -181
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +23 -0
- package/language_reference.md +47 -10
- package/package.json +2 -2
- package/types/global.d.ts +9 -1
- package/types/workflowslib.d.ts +18 -16
package/README.md
CHANGED
|
@@ -29,10 +29,10 @@ One benefit of writing the workflow programs in Typescript is that the sources c
|
|
|
29
29
|
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
30
|
|
|
31
31
|
```sh
|
|
32
|
-
npx tsc --project
|
|
32
|
+
npx tsc --project tsconfig.workflows.json
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
The file [
|
|
35
|
+
The file [tsconfig.workflows.json](tsconfig.workflows.json) contains a sample configuration for type checking workflow sources.
|
|
36
36
|
|
|
37
37
|
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
38
|
|
|
@@ -55,6 +55,10 @@ npm run build
|
|
|
55
55
|
npm run test
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
## Publishing the package to npmjs.com
|
|
59
|
+
|
|
60
|
+
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.
|
|
61
|
+
|
|
58
62
|
## Architecture
|
|
59
63
|
|
|
60
64
|
A transpilation using ts2workflows consists of five phases:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/ast/expressions.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AACjC,MAAM,MAAM,cAAc,GACtB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,GAAG,GACH,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,CAAA;AACR,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAA;AA2B7C,MAAM,MAAM,SAAS,GACjB,IAAI,GACJ,MAAM,GACN,MAAM,GACN,OAAO,GACP,CAAC,SAAS,GAAG,UAAU,CAAC,EAAE,GAC1B;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;CAAE,CAAA;AAE7C,MAAM,MAAM,+BAA+B,GACvC,IAAI,GACJ,MAAM,GACN,MAAM,GACN,OAAO,GACP,+BAA+B,EAAE,GACjC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,+BAA+B,CAAA;CAAE,CAAA;AAEtD,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,2BAA2B,GAC3B,4BAA4B,GAC5B,gBAAgB,GAChB,eAAe,CAAA;AAInB,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,cAAc,eAAc;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;gBAEb,KAAK,EAAE,SAAS;IAM5B,QAAQ,IAAI,MAAM;CAgBnB;AAGD,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,cAAc,YAAW;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;gBAGxB,IAAI,EAAE,UAAU,EAChB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,UAAU;IAOnB,QAAQ,IAAI,MAAM;CAwBnB;AAID,qBAAa,2BAA2B;IACtC,QAAQ,CAAC,cAAc,uBAAsB;IAC7C,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;gBAEvB,YAAY,EAAE,YAAY;IAItC,QAAQ,IAAI,MAAM;CAGnB;AAGD,qBAAa,4BAA4B;IACvC,QAAQ,CAAC,cAAc,wBAAuB;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,CAAA;gBAEpB,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE;IAKnE,QAAQ,IAAI,MAAM;CAInB;AAGD,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,cAAc,YAAW;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;gBAEd,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO;IAMvE,QAAQ,IAAI,MAAM;CAOnB;AAED,qBAAa,eAAe;IAC1B,QAAQ,CAAC,cAAc,WAAU;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;gBAEd,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU;IAKtD,QAAQ,IAAI,MAAM;CAQnB;AAuBD,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,UAAU,GAAG,GAAG,IAAI,UAAU,CAE3E;AAGD,wBAAgB,2CAA2C,CACzD,EAAE,EAAE,UAAU,GACb,+BAA+B,CA2BjC;
|
|
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,4 @@
|
|
|
1
|
-
import { isRecord } from '../utils.js';
|
|
1
|
+
import { isRecord, mapRecordValues } from '../utils.js';
|
|
2
2
|
// Operator precendence for unary and binary operators in the Workflows language.
|
|
3
3
|
// Note that these differ somewhat from Javascript.
|
|
4
4
|
// https://cloud.google.com/workflows/docs/reference/syntax/datatypes
|
|
@@ -224,26 +224,23 @@ function primitiveExpressionToLiteralValueOrLiteralExpression(ex) {
|
|
|
224
224
|
});
|
|
225
225
|
}
|
|
226
226
|
else if (isRecord(ex.value)) {
|
|
227
|
-
return
|
|
227
|
+
return mapRecordValues(ex.value, (v) => {
|
|
228
228
|
if (isExpression(v)) {
|
|
229
|
-
return
|
|
229
|
+
return expressionToLiteralValueOrLiteralExpression(v);
|
|
230
230
|
}
|
|
231
231
|
else if (Array.isArray(v) || isRecord(v)) {
|
|
232
|
-
return
|
|
233
|
-
k,
|
|
234
|
-
primitiveExpressionToLiteralValueOrLiteralExpression(new PrimitiveExpression(v)),
|
|
235
|
-
];
|
|
232
|
+
return primitiveExpressionToLiteralValueOrLiteralExpression(new PrimitiveExpression(v));
|
|
236
233
|
}
|
|
237
234
|
else if (v === null ||
|
|
238
235
|
typeof v === 'string' ||
|
|
239
236
|
typeof v === 'number' ||
|
|
240
237
|
typeof v === 'boolean') {
|
|
241
|
-
return
|
|
238
|
+
return v;
|
|
242
239
|
}
|
|
243
240
|
else {
|
|
244
|
-
return
|
|
241
|
+
return `\${${primitiveToString(v)}}`;
|
|
245
242
|
}
|
|
246
|
-
})
|
|
243
|
+
});
|
|
247
244
|
}
|
|
248
245
|
else {
|
|
249
246
|
return `\${${ex.toString()}}`;
|
package/dist/ast/stepnames.js
CHANGED
|
@@ -122,7 +122,9 @@ function removeJumpTargetRecurse(step) {
|
|
|
122
122
|
case 'switch':
|
|
123
123
|
return removeJumpTargetsSwitch(step);
|
|
124
124
|
case 'try':
|
|
125
|
-
return new TryStepASTNamed(removeJumpTargetSteps(step.trySteps),
|
|
125
|
+
return new TryStepASTNamed(removeJumpTargetSteps(step.trySteps), step.exceptSteps !== undefined
|
|
126
|
+
? removeJumpTargetSteps(step.exceptSteps)
|
|
127
|
+
: undefined, step.retryPolicy, step.errorMap);
|
|
126
128
|
}
|
|
127
129
|
}
|
|
128
130
|
function removeJumpTargetsFor(step) {
|
|
@@ -270,7 +272,7 @@ function renameJumpTargetsTry(step, replaceLabels) {
|
|
|
270
272
|
name,
|
|
271
273
|
step: renameJumpTargets(nested, replaceLabels),
|
|
272
274
|
}));
|
|
273
|
-
const transformedExceptSteps = step.exceptSteps
|
|
275
|
+
const transformedExceptSteps = step.exceptSteps?.map(({ name, step: nested }) => ({
|
|
274
276
|
name,
|
|
275
277
|
step: renameJumpTargets(nested, replaceLabels),
|
|
276
278
|
}));
|
package/dist/ast/steps.d.ts
CHANGED
|
@@ -4,12 +4,12 @@ export type StepName = string;
|
|
|
4
4
|
export type VariableAssignment = readonly [VariableName, Expression];
|
|
5
5
|
export type WorkflowParameters = Record<VariableName, Expression>;
|
|
6
6
|
export interface CustomRetryPolicy {
|
|
7
|
-
predicate
|
|
8
|
-
maxRetries:
|
|
7
|
+
predicate?: string;
|
|
8
|
+
maxRetries: Expression;
|
|
9
9
|
backoff: {
|
|
10
|
-
initialDelay
|
|
11
|
-
maxDelay
|
|
12
|
-
multiplier
|
|
10
|
+
initialDelay?: Expression;
|
|
11
|
+
maxDelay?: Expression;
|
|
12
|
+
multiplier?: Expression;
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
export interface WorkflowAST {
|
|
@@ -148,11 +148,11 @@ export interface SwitchConditionAST<T extends WorkflowStepAST | NamedWorkflowSte
|
|
|
148
148
|
export declare class TryStepAST {
|
|
149
149
|
readonly tag = "try";
|
|
150
150
|
readonly trySteps: WorkflowStepAST[];
|
|
151
|
-
readonly exceptSteps
|
|
151
|
+
readonly exceptSteps?: WorkflowStepAST[];
|
|
152
152
|
readonly retryPolicy?: string | CustomRetryPolicy;
|
|
153
153
|
readonly errorMap?: VariableName;
|
|
154
154
|
readonly label?: string;
|
|
155
|
-
constructor(trySteps: WorkflowStepAST[], exceptSteps
|
|
155
|
+
constructor(trySteps: WorkflowStepAST[], exceptSteps?: WorkflowStepAST[], retryPolicy?: string | CustomRetryPolicy, errorMap?: VariableName, label?: string);
|
|
156
156
|
withLabel(newLabel?: string): TryStepAST;
|
|
157
157
|
}
|
|
158
158
|
export declare class TryStepASTNamed {
|
|
@@ -160,8 +160,8 @@ export declare class TryStepASTNamed {
|
|
|
160
160
|
readonly retryPolicy?: string | CustomRetryPolicy;
|
|
161
161
|
readonly errorMap?: VariableName;
|
|
162
162
|
readonly trySteps: NamedWorkflowStep[];
|
|
163
|
-
readonly exceptSteps
|
|
164
|
-
constructor(steps: NamedWorkflowStep[], exceptSteps
|
|
163
|
+
readonly exceptSteps?: NamedWorkflowStep[];
|
|
164
|
+
constructor(steps: NamedWorkflowStep[], exceptSteps?: NamedWorkflowStep[], retryPolicy?: string | CustomRetryPolicy, errorMap?: VariableName);
|
|
165
165
|
}
|
|
166
166
|
export declare class JumpTargetAST {
|
|
167
167
|
readonly tag = "jumptarget";
|
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":"AACA,OAAO,EACL,UAAU,EACV,YAAY,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAE/D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAC7B,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;AACpE,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;
|
|
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,4 @@
|
|
|
1
|
-
import { isRecord } from '../utils.js';
|
|
1
|
+
import { isRecord, mapRecordValues } from '../utils.js';
|
|
2
2
|
import { expressionToLiteralValueOrLiteralExpression, } from './expressions.js';
|
|
3
3
|
import { Subworkflow } from './workflows.js';
|
|
4
4
|
export class SubworkflowAST {
|
|
@@ -35,7 +35,7 @@ export class AssignStepAST {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
withLabel(newLabel) {
|
|
38
|
-
return new AssignStepAST(this.assignments, newLabel);
|
|
38
|
+
return new AssignStepAST(this.assignments, this.next, newLabel);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
// https://cloud.google.com/workflows/docs/reference/syntax/calls
|
|
@@ -307,6 +307,7 @@ function namedStepsFor(step, generateName) {
|
|
|
307
307
|
}
|
|
308
308
|
function namedStepsParallel(step, generateName) {
|
|
309
309
|
let steps;
|
|
310
|
+
const mainLabel = step.label ?? generateName('parallel');
|
|
310
311
|
if (!isRecord(step.steps)) {
|
|
311
312
|
const forStep = namedSteps(step.steps, generateName).step;
|
|
312
313
|
if (forStep.tag !== 'for') {
|
|
@@ -315,13 +316,13 @@ function namedStepsParallel(step, generateName) {
|
|
|
315
316
|
steps = forStep;
|
|
316
317
|
}
|
|
317
318
|
else {
|
|
318
|
-
steps =
|
|
319
|
-
const named =
|
|
320
|
-
return
|
|
321
|
-
})
|
|
319
|
+
steps = mapRecordValues(step.steps, (step) => {
|
|
320
|
+
const named = step.steps.map((x) => namedSteps(x, generateName));
|
|
321
|
+
return new StepsStepASTNamed(named);
|
|
322
|
+
});
|
|
322
323
|
}
|
|
323
324
|
return {
|
|
324
|
-
name:
|
|
325
|
+
name: mainLabel,
|
|
325
326
|
step: new ParallelStepASTNamed(steps, step.shared, step.concurrencyLimit, step.exceptionPolicy),
|
|
326
327
|
};
|
|
327
328
|
}
|
|
@@ -332,21 +333,23 @@ function namedStepsSteps(step, generateName) {
|
|
|
332
333
|
};
|
|
333
334
|
}
|
|
334
335
|
function namedStepsSwitch(step, generateName) {
|
|
336
|
+
const mainLabel = step.label ?? generateName('switch');
|
|
335
337
|
const namedBranches = step.branches.map((branch) => ({
|
|
336
338
|
condition: branch.condition,
|
|
337
339
|
steps: branch.steps.map((nested) => namedSteps(nested, generateName)),
|
|
338
340
|
next: branch.next,
|
|
339
341
|
}));
|
|
340
342
|
return {
|
|
341
|
-
name:
|
|
343
|
+
name: mainLabel,
|
|
342
344
|
step: new SwitchStepASTNamed(namedBranches),
|
|
343
345
|
};
|
|
344
346
|
}
|
|
345
347
|
function namedStepsTry(step, generateName) {
|
|
348
|
+
const mainLabel = step.label ?? generateName('try');
|
|
346
349
|
const namedTrySteps = step.trySteps.map((nested) => namedSteps(nested, generateName));
|
|
347
|
-
const namedExceptSteps = step.exceptSteps
|
|
350
|
+
const namedExceptSteps = step.exceptSteps?.map((nested) => namedSteps(nested, generateName));
|
|
348
351
|
return {
|
|
349
|
-
name:
|
|
352
|
+
name: mainLabel,
|
|
350
353
|
step: new TryStepASTNamed(namedTrySteps, namedExceptSteps, step.retryPolicy, step.errorMap),
|
|
351
354
|
};
|
|
352
355
|
}
|
|
@@ -391,7 +394,7 @@ function nestedStepsTry(step) {
|
|
|
391
394
|
if (step.trySteps.length > 0) {
|
|
392
395
|
nested.push(step.trySteps);
|
|
393
396
|
}
|
|
394
|
-
if (step.exceptSteps
|
|
397
|
+
if (step.exceptSteps) {
|
|
395
398
|
nested.push(step.exceptSteps);
|
|
396
399
|
}
|
|
397
400
|
return nested;
|
|
@@ -463,9 +466,7 @@ function renderSwitchCondition(cond) {
|
|
|
463
466
|
function renderCallStep(step) {
|
|
464
467
|
let args = undefined;
|
|
465
468
|
if (step.args) {
|
|
466
|
-
args =
|
|
467
|
-
return [k, expressionToLiteralValueOrLiteralExpression(v)];
|
|
468
|
-
}));
|
|
469
|
+
args = mapRecordValues(step.args, (v) => expressionToLiteralValueOrLiteralExpression(v));
|
|
469
470
|
}
|
|
470
471
|
return {
|
|
471
472
|
call: step.call,
|
|
@@ -515,17 +516,29 @@ function renderTryStep(step) {
|
|
|
515
516
|
else {
|
|
516
517
|
const predicateName = step.retryPolicy.predicate;
|
|
517
518
|
retry = {
|
|
518
|
-
predicate: `\${${predicateName}}
|
|
519
|
-
max_retries: step.retryPolicy.maxRetries,
|
|
519
|
+
...(predicateName ? { predicate: `\${${predicateName}}` } : {}),
|
|
520
|
+
max_retries: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.maxRetries),
|
|
520
521
|
backoff: {
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
522
|
+
...(step.retryPolicy.backoff.initialDelay
|
|
523
|
+
? {
|
|
524
|
+
initial_delay: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.initialDelay),
|
|
525
|
+
}
|
|
526
|
+
: {}),
|
|
527
|
+
...(step.retryPolicy.backoff.maxDelay
|
|
528
|
+
? {
|
|
529
|
+
max_delay: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.maxDelay),
|
|
530
|
+
}
|
|
531
|
+
: {}),
|
|
532
|
+
...(step.retryPolicy.backoff.multiplier
|
|
533
|
+
? {
|
|
534
|
+
multiplier: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.multiplier),
|
|
535
|
+
}
|
|
536
|
+
: {}),
|
|
524
537
|
},
|
|
525
538
|
};
|
|
526
539
|
}
|
|
527
540
|
let except;
|
|
528
|
-
if (step.exceptSteps
|
|
541
|
+
if (step.exceptSteps !== undefined) {
|
|
529
542
|
except = {
|
|
530
543
|
as: step.errorMap,
|
|
531
544
|
steps: renderSteps(step.exceptSteps),
|
package/dist/ast/workflows.js
CHANGED
|
@@ -5,5 +5,7 @@ export declare function convertObjectExpression(node: TSESTree.ObjectExpression)
|
|
|
5
5
|
export declare function convertObjectAsExpressionValues(node: TSESTree.ObjectExpression): Record<string, Expression>;
|
|
6
6
|
export declare function convertMemberExpression(node: TSESTree.MemberExpression): Expression;
|
|
7
7
|
export declare function isMagicFunction(calleeName: string): boolean;
|
|
8
|
+
export declare function isMagicFunctionStatmentOnly(calleeName: string): boolean;
|
|
8
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;
|
|
9
11
|
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/transpiler/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAGL,UAAU,EAGV,SAAS,EAMV,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/transpiler/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAGL,UAAU,EAGV,SAAS,EAMV,MAAM,uBAAuB,CAAA;AAI9B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,GAAG,UAAU,CAO3E;AAED,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;AAsMD,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;AA8CD,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;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAElE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree';
|
|
2
2
|
import { BinaryExpression, FunctionInvocationExpression, MemberExpression, PrimitiveExpression, UnaryExpression, VariableReferenceExpression, isExpression, isFullyQualifiedName, } from '../ast/expressions.js';
|
|
3
3
|
import { InternalTranspilingError, WorkflowSyntaxError } from '../errors.js';
|
|
4
|
+
import { mapRecordValues } from '../utils.js';
|
|
4
5
|
export function convertExpression(instance) {
|
|
5
6
|
const expOrPrimitive = convertExpressionOrPrimitive(instance);
|
|
6
7
|
if (isExpression(expOrPrimitive)) {
|
|
@@ -35,12 +36,8 @@ export function convertObjectExpression(node) {
|
|
|
35
36
|
}));
|
|
36
37
|
}
|
|
37
38
|
export function convertObjectAsExpressionValues(node) {
|
|
38
|
-
const primitiveOrExpArguments = convertObjectExpression(node);
|
|
39
39
|
// Convert Primitive values to PrimitiveExpressions
|
|
40
|
-
return
|
|
41
|
-
const valEx = isExpression(val) ? val : new PrimitiveExpression(val);
|
|
42
|
-
return [key, valEx];
|
|
43
|
-
}));
|
|
40
|
+
return mapRecordValues(convertObjectExpression(node), asExpression);
|
|
44
41
|
}
|
|
45
42
|
function convertExpressionOrPrimitive(instance) {
|
|
46
43
|
switch (instance.type) {
|
|
@@ -296,6 +293,10 @@ export function isMagicFunction(calleeName) {
|
|
|
296
293
|
const magicFunctions = ['parallel', 'retry_policy', 'call_step'];
|
|
297
294
|
return magicFunctions.includes(calleeName);
|
|
298
295
|
}
|
|
296
|
+
export function isMagicFunctionStatmentOnly(calleeName) {
|
|
297
|
+
const statementNames = ['parallel', 'retry_policy'];
|
|
298
|
+
return statementNames.includes(calleeName);
|
|
299
|
+
}
|
|
299
300
|
function convertConditionalExpression(node) {
|
|
300
301
|
const test = convertExpression(node.test);
|
|
301
302
|
const consequent = convertExpression(node.consequent);
|
|
@@ -340,3 +341,6 @@ export function throwIfSpread(nodes) {
|
|
|
340
341
|
const argumentExpressions = nodes.filter((x) => x?.type !== AST_NODE_TYPES.SpreadElement);
|
|
341
342
|
return argumentExpressions;
|
|
342
343
|
}
|
|
344
|
+
export function asExpression(x) {
|
|
345
|
+
return isExpression(x) ? x : new PrimitiveExpression(x);
|
|
346
|
+
}
|
|
@@ -3,6 +3,7 @@ import { StepName, WorkflowStepAST } from '../ast/steps.js';
|
|
|
3
3
|
export interface ParsingContext {
|
|
4
4
|
breakTarget?: StepName;
|
|
5
5
|
continueTarget?: StepName;
|
|
6
|
+
finalizerTargets?: StepName[];
|
|
6
7
|
}
|
|
7
8
|
export declare function parseStatement(node: TSESTree.Statement, ctx: ParsingContext, postSteps?: WorkflowStepAST[]): WorkflowStepAST[];
|
|
8
9
|
//# sourceMappingURL=statements.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../src/transpiler/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,
|
|
1
|
+
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../src/transpiler/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAUL,QAAQ,EAMR,eAAe,EAChB,MAAM,iBAAiB,CAAA;AA6BxB,MAAM,WAAW,cAAc;IAE7B,WAAW,CAAC,EAAE,QAAQ,CAAA;IAEtB,cAAc,CAAC,EAAE,QAAQ,CAAA;IAKzB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAA;CAC9B;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,SAAS,EACxB,GAAG,EAAE,cAAc,EACnB,SAAS,CAAC,EAAE,eAAe,EAAE,GAC5B,eAAe,EAAE,CAGnB"}
|