fix(core): Expression extension failing with optional chaining (#5370)

* wip

* fix: working optional chaining polyfill

* fix: polyfill optional chaining on extended functions

* test: add optional chaining tests
This commit is contained in:
Valya
2023-02-09 13:57:45 +00:00
committed by GitHub
parent 40f4ec75fa
commit c7b58e0ed1
6 changed files with 364 additions and 19 deletions

View File

@@ -19,7 +19,7 @@ import { WorkflowDataProxy } from './WorkflowDataProxy';
import type { Workflow } from './Workflow';
// eslint-disable-next-line import/no-cycle
import { extend, hasExpressionExtension, hasNativeMethod } from './Extensions';
import { extend, extendOptional, hasExpressionExtension, hasNativeMethod } from './Extensions';
import type { ExpressionChunk, ExpressionCode } from './Extensions/ExpressionParser';
import { joinExpression, splitExpression } from './Extensions/ExpressionParser';
import { extendTransform } from './Extensions/ExpressionExtension';
@@ -268,6 +268,7 @@ export class Expression {
// expression extensions
data.extend = extend;
data.extendOptional = extendOptional;
Object.assign(data, extendedFunctions);
@@ -367,6 +368,7 @@ export class Expression {
}
let text = output.code;
// We need to cut off any trailing semicolons. These cause issues
// with certain types of expression and cause the whole expression
// to fail.