@finos/legend-query-builder 1.0.2 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/components/QueryBuilderConstantExpressionPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderConstantExpressionPanel.js +4 -4
- package/lib/components/QueryBuilderConstantExpressionPanel.js.map +1 -1
- package/lib/components/QueryBuilderParametersPanel.js +2 -2
- package/lib/components/QueryBuilderParametersPanel.js.map +1 -1
- package/lib/components/QueryBuilderPropertyExpressionEditor.js +5 -6
- package/lib/components/QueryBuilderPropertyExpressionEditor.js.map +1 -1
- package/lib/components/QueryBuilderResultPanel.d.ts.map +1 -1
- package/lib/components/QueryBuilderResultPanel.js +8 -13
- package/lib/components/QueryBuilderResultPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderExplorerPanel.js +6 -6
- package/lib/components/explorer/QueryBuilderExplorerPanel.js.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderMilestoningEditor.js +3 -5
- package/lib/components/explorer/QueryBuilderMilestoningEditor.js.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.d.ts.map +1 -1
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js +5 -6
- package/lib/components/explorer/QueryBuilderPropertySearchPanel.js.map +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js +1 -1
- package/lib/components/fetch-structure/QueryBuilderPostFilterPanel.js.map +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js +1 -1
- package/lib/components/filter/QueryBuilderFilterPanel.js.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.d.ts.map +1 -1
- package/lib/components/shared/BasicValueSpecificationEditor.js +91 -41
- package/lib/components/shared/BasicValueSpecificationEditor.js.map +1 -1
- package/lib/components/shared/CustomDatePicker.d.ts.map +1 -1
- package/lib/components/shared/CustomDatePicker.js +13 -14
- package/lib/components/shared/CustomDatePicker.js.map +1 -1
- package/lib/components/shared/LambdaEditor.d.ts.map +1 -1
- package/lib/components/shared/LambdaEditor.js +1 -1
- package/lib/components/shared/LambdaEditor.js.map +1 -1
- package/lib/components/watermark/QueryBuilderWatermark.d.ts.map +1 -1
- package/lib/components/watermark/QueryBuilderWatermark.js +1 -1
- package/lib/components/watermark/QueryBuilderWatermark.js.map +1 -1
- package/lib/graphManager/QueryBuilderSupportedFunctions.d.ts +1 -0
- package/lib/graphManager/QueryBuilderSupportedFunctions.d.ts.map +1 -1
- package/lib/graphManager/QueryBuilderSupportedFunctions.js +1 -0
- package/lib/graphManager/QueryBuilderSupportedFunctions.js.map +1 -1
- package/lib/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.js.map +1 -1
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts +8 -8
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.d.ts.map +1 -1
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js +17 -26
- package/lib/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/package.json +11 -10
- package/lib/stores/QueryBuilderChangeDetectionState.d.ts +4 -4
- package/lib/stores/QueryBuilderChangeDetectionState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderChangeDetectionState.js +9 -9
- package/lib/stores/QueryBuilderChangeDetectionState.js.map +1 -1
- package/lib/stores/QueryBuilderConstantsState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderConstantsState.js +4 -4
- package/lib/stores/QueryBuilderConstantsState.js.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts +2 -3
- package/lib/stores/QueryBuilderPropertyEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderPropertyEditorState.js +9 -12
- package/lib/stores/QueryBuilderPropertyEditorState.js.map +1 -1
- package/lib/stores/QueryBuilderState.d.ts +8 -5
- package/lib/stores/QueryBuilderState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderState.js +25 -21
- package/lib/stores/QueryBuilderState.js.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.d.ts +2 -2
- package/lib/stores/QueryBuilderStateBuilder.d.ts.map +1 -1
- package/lib/stores/QueryBuilderStateBuilder.js +16 -12
- package/lib/stores/QueryBuilderStateBuilder.js.map +1 -1
- package/lib/stores/QueryBuilderTextEditorState.d.ts.map +1 -1
- package/lib/stores/QueryBuilderTextEditorState.js +4 -1
- package/lib/stores/QueryBuilderTextEditorState.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js +1 -1
- package/lib/stores/QueryBuilderValueSpecificationBuilderHelper.js.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts +9 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.d.ts.map +1 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js +22 -1
- package/lib/stores/QueryBuilderValueSpecificationHelper.js.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.d.ts.map +1 -1
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js +2 -2
- package/lib/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.js +21 -1
- package/lib/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js +2 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js +2 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js +6 -3
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js +4 -2
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js +4 -2
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.js.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.d.ts.map +1 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js +2 -1
- package/lib/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.js.map +1 -1
- package/lib/stores/filter/QueryBuilderFilterState.js +2 -2
- package/lib/stores/filter/QueryBuilderFilterState.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorValueSpecificationBuilder.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorValueSpecificationBuilder.js +9 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperatorValueSpecificationBuilder.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.js +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Contain.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.js +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_EndWith.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.js +4 -3
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_Equal.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThan.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.js +2 -2
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.js.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.d.ts.map +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.js +1 -1
- package/lib/stores/filter/operators/QueryBuilderFilterOperator_StartWith.js.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.d.ts.map +1 -1
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js +3 -3
- package/lib/stores/milestoning/QueryBuilderMilestoningState.js.map +1 -1
- package/lib/stores/shared/LambdaParameterState.d.ts +2 -2
- package/lib/stores/shared/LambdaParameterState.d.ts.map +1 -1
- package/lib/stores/shared/LambdaParameterState.js +5 -5
- package/lib/stores/shared/LambdaParameterState.js.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts +4 -4
- package/lib/stores/shared/ValueSpecificationEditorHelper.d.ts.map +1 -1
- package/lib/stores/shared/ValueSpecificationEditorHelper.js +11 -15
- package/lib/stores/shared/ValueSpecificationEditorHelper.js.map +1 -1
- package/lib/stores/shared/ValueSpecificationModifierHelper.d.ts +8 -8
- package/lib/stores/shared/ValueSpecificationModifierHelper.d.ts.map +1 -1
- package/lib/stores/shared/ValueSpecificationModifierHelper.js +20 -17
- package/lib/stores/shared/ValueSpecificationModifierHelper.js.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkState.d.ts.map +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkState.js +1 -1
- package/lib/stores/watermark/QueryBuilderWatermarkState.js.map +1 -1
- package/package.json +18 -17
- package/src/components/QueryBuilderConstantExpressionPanel.tsx +4 -2
- package/src/components/QueryBuilderParametersPanel.tsx +2 -2
- package/src/components/QueryBuilderPropertyExpressionEditor.tsx +6 -6
- package/src/components/QueryBuilderResultPanel.tsx +19 -15
- package/src/components/explorer/QueryBuilderExplorerPanel.tsx +10 -11
- package/src/components/explorer/QueryBuilderMilestoningEditor.tsx +7 -5
- package/src/components/explorer/QueryBuilderPropertySearchPanel.tsx +9 -6
- package/src/components/fetch-structure/QueryBuilderPostFilterPanel.tsx +1 -1
- package/src/components/filter/QueryBuilderFilterPanel.tsx +1 -1
- package/src/components/shared/BasicValueSpecificationEditor.tsx +192 -48
- package/src/components/shared/CustomDatePicker.tsx +54 -26
- package/src/components/shared/LambdaEditor.tsx +0 -1
- package/src/components/watermark/QueryBuilderWatermark.tsx +1 -3
- package/src/graphManager/QueryBuilderSupportedFunctions.ts +4 -0
- package/src/graphManager/protocol/pure/QueryBuilder_PureProtocolProcessorPlugin.ts +1 -1
- package/src/graphManager/protocol/pure/v1/V1_QueryValueSpecificationBuilderHelper.ts +67 -68
- package/src/stores/QueryBuilderChangeDetectionState.ts +13 -11
- package/src/stores/QueryBuilderConstantsState.ts +4 -3
- package/src/stores/QueryBuilderPropertyEditorState.ts +17 -13
- package/src/stores/QueryBuilderState.ts +35 -24
- package/src/stores/QueryBuilderStateBuilder.ts +20 -18
- package/src/stores/QueryBuilderTextEditorState.ts +4 -1
- package/src/stores/QueryBuilderValueSpecificationBuilderHelper.ts +1 -1
- package/src/stores/QueryBuilderValueSpecificationHelper.ts +36 -0
- package/src/stores/fetch-structure/graph-fetch/QueryBuilderGraphFetchTreeUtil.ts +10 -2
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterState.ts +1 -1
- package/src/stores/fetch-structure/tds/post-filter/QueryBuilderPostFilterStateBuilder.ts +26 -1
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Contain.ts +2 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_EndWith.ts +2 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_Equal.ts +14 -3
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_GreaterThan.ts +4 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_LessThan.ts +4 -0
- package/src/stores/fetch-structure/tds/post-filter/operators/QueryBuilderPostFilterOperator_StartWith.ts +2 -0
- package/src/stores/filter/QueryBuilderFilterState.ts +2 -2
- package/src/stores/filter/operators/QueryBuilderFilterOperatorValueSpecificationBuilder.ts +17 -4
- package/src/stores/filter/operators/QueryBuilderFilterOperator_Contain.ts +1 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_EndWith.ts +1 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_Equal.ts +12 -3
- package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThan.ts +2 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_GreaterThanEqual.ts +2 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThan.ts +2 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_LessThanEqual.ts +2 -0
- package/src/stores/filter/operators/QueryBuilderFilterOperator_StartWith.ts +1 -0
- package/src/stores/milestoning/QueryBuilderMilestoningState.ts +3 -9
- package/src/stores/shared/LambdaParameterState.ts +9 -5
- package/src/stores/shared/ValueSpecificationEditorHelper.ts +24 -9
- package/src/stores/shared/ValueSpecificationModifierHelper.ts +42 -20
- package/src/stores/watermark/QueryBuilderWatermarkState.ts +1 -4
@@ -32,6 +32,7 @@ import {
|
|
32
32
|
FilledWindowMaximizeIcon,
|
33
33
|
BasePopover,
|
34
34
|
PanelFormSection,
|
35
|
+
CalculateIcon,
|
35
36
|
} from '@finos/legend-art';
|
36
37
|
import {
|
37
38
|
type Enum,
|
@@ -53,6 +54,8 @@ import {
|
|
53
54
|
getEnumValue,
|
54
55
|
getMultiplicityDescription,
|
55
56
|
type ObserverContext,
|
57
|
+
matchFunctionName,
|
58
|
+
isSubType,
|
56
59
|
} from '@finos/legend-graph';
|
57
60
|
import {
|
58
61
|
type DebouncedFunc,
|
@@ -62,6 +65,7 @@ import {
|
|
62
65
|
returnUndefOnError,
|
63
66
|
uniq,
|
64
67
|
parseCSVString,
|
68
|
+
guaranteeIsNumber,
|
65
69
|
} from '@finos/legend-shared';
|
66
70
|
import { flowResult } from 'mobx';
|
67
71
|
import { observer } from 'mobx-react-lite';
|
@@ -72,6 +76,9 @@ import {
|
|
72
76
|
instanceValue_setValues,
|
73
77
|
} from '../../stores/shared/ValueSpecificationModifierHelper.js';
|
74
78
|
import { CustomDatePicker } from './CustomDatePicker.js';
|
79
|
+
import { QUERY_BUILDER_SUPPORTED_FUNCTIONS } from '../../graphManager/QueryBuilderSupportedFunctions.js';
|
80
|
+
import { simplifyValueExpression } from '../../stores/QueryBuilderValueSpecificationHelper.js';
|
81
|
+
import { evaluate } from 'mathjs';
|
75
82
|
|
76
83
|
type TypeCheckOption = {
|
77
84
|
expectedType: Type;
|
@@ -210,6 +217,7 @@ const StringPrimitiveInstanceValueEditor = observer(
|
|
210
217
|
cleanUpReloadValues?: () => void;
|
211
218
|
}
|
212
219
|
| undefined;
|
220
|
+
obseverContext: ObserverContext;
|
213
221
|
}) => {
|
214
222
|
const {
|
215
223
|
valueSpecification,
|
@@ -217,12 +225,13 @@ const StringPrimitiveInstanceValueEditor = observer(
|
|
217
225
|
resetValue,
|
218
226
|
setValueSpecification,
|
219
227
|
selectorConfig,
|
228
|
+
obseverContext,
|
220
229
|
} = props;
|
221
230
|
const useSelector = Boolean(selectorConfig);
|
222
231
|
const applicationStore = useApplicationStore();
|
223
232
|
const value = valueSpecification.values[0] as string;
|
224
233
|
const updateValueSpec = (val: string): void => {
|
225
|
-
instanceValue_setValue(valueSpecification, val, 0);
|
234
|
+
instanceValue_setValue(valueSpecification, val, 0, obseverContext);
|
226
235
|
setValueSpecification(valueSpecification);
|
227
236
|
};
|
228
237
|
const changeInputValue: React.ChangeEventHandler<HTMLInputElement> = (
|
@@ -316,12 +325,18 @@ const BooleanPrimitiveInstanceValueEditor = observer(
|
|
316
325
|
className?: string | undefined;
|
317
326
|
resetValue: () => void;
|
318
327
|
setValueSpecification: (val: ValueSpecification) => void;
|
328
|
+
obseverContext: ObserverContext;
|
319
329
|
}) => {
|
320
|
-
const {
|
321
|
-
|
330
|
+
const {
|
331
|
+
valueSpecification,
|
332
|
+
className,
|
333
|
+
resetValue,
|
334
|
+
setValueSpecification,
|
335
|
+
obseverContext,
|
336
|
+
} = props;
|
322
337
|
const value = valueSpecification.values[0] as boolean;
|
323
338
|
const toggleValue = (): void => {
|
324
|
-
instanceValue_setValue(valueSpecification, !value, 0);
|
339
|
+
instanceValue_setValue(valueSpecification, !value, 0, obseverContext);
|
325
340
|
setValueSpecification(valueSpecification);
|
326
341
|
};
|
327
342
|
|
@@ -354,6 +369,7 @@ const NumberPrimitiveInstanceValueEditor = observer(
|
|
354
369
|
className?: string | undefined;
|
355
370
|
resetValue: () => void;
|
356
371
|
setValueSpecification: (val: ValueSpecification) => void;
|
372
|
+
obseverContext: ObserverContext;
|
357
373
|
}) => {
|
358
374
|
const {
|
359
375
|
valueSpecification,
|
@@ -361,26 +377,95 @@ const NumberPrimitiveInstanceValueEditor = observer(
|
|
361
377
|
className,
|
362
378
|
resetValue,
|
363
379
|
setValueSpecification,
|
380
|
+
obseverContext,
|
364
381
|
} = props;
|
365
|
-
const value
|
382
|
+
const [value, setValue] = useState(
|
383
|
+
(valueSpecification.values[0] as number).toString(),
|
384
|
+
);
|
385
|
+
const inputRef = useRef<HTMLInputElement>(null);
|
386
|
+
const numericValue = isInteger
|
387
|
+
? Number.parseInt(Number(value).toString(), 10)
|
388
|
+
: Number(value);
|
389
|
+
|
366
390
|
const changeValue: React.ChangeEventHandler<HTMLInputElement> = (event) => {
|
367
|
-
|
368
|
-
? parseInt(event.target.value, 10)
|
369
|
-
: parseFloat(event.target.value);
|
370
|
-
inputVal = isNaN(inputVal) ? 0 : inputVal;
|
371
|
-
instanceValue_setValue(valueSpecification, inputVal, 0);
|
372
|
-
setValueSpecification(valueSpecification);
|
391
|
+
setValue(event.target.value);
|
373
392
|
};
|
374
393
|
|
394
|
+
// Support expression evaluation
|
395
|
+
const calculateExpression = (): void => {
|
396
|
+
if (isNaN(numericValue)) {
|
397
|
+
try {
|
398
|
+
const calculatedValue = guaranteeIsNumber(evaluate(value));
|
399
|
+
setValue(
|
400
|
+
isInteger
|
401
|
+
? Number.parseInt(calculatedValue.toString(), 10).toString()
|
402
|
+
: Number(calculatedValue).toString(),
|
403
|
+
);
|
404
|
+
} catch {
|
405
|
+
setValue((valueSpecification.values[0] as number).toString());
|
406
|
+
}
|
407
|
+
} else {
|
408
|
+
setValue(numericValue.toString());
|
409
|
+
}
|
410
|
+
};
|
411
|
+
|
412
|
+
const onKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {
|
413
|
+
if (event.code === 'Enter') {
|
414
|
+
calculateExpression();
|
415
|
+
inputRef.current?.focus();
|
416
|
+
} else if (event.code === 'Escape') {
|
417
|
+
inputRef.current?.select();
|
418
|
+
}
|
419
|
+
};
|
420
|
+
|
421
|
+
useEffect(() => {
|
422
|
+
setValue((valueSpecification.values[0] as number).toString());
|
423
|
+
}, [valueSpecification]);
|
424
|
+
|
425
|
+
useEffect(() => {
|
426
|
+
if (
|
427
|
+
!isNaN(numericValue) &&
|
428
|
+
numericValue !== valueSpecification.values[0]
|
429
|
+
) {
|
430
|
+
instanceValue_setValue(
|
431
|
+
valueSpecification,
|
432
|
+
numericValue,
|
433
|
+
0,
|
434
|
+
obseverContext,
|
435
|
+
);
|
436
|
+
setValueSpecification(valueSpecification);
|
437
|
+
}
|
438
|
+
}, [
|
439
|
+
numericValue,
|
440
|
+
valueSpecification,
|
441
|
+
setValueSpecification,
|
442
|
+
obseverContext,
|
443
|
+
]);
|
444
|
+
|
375
445
|
return (
|
376
446
|
<div className={clsx('value-spec-editor', className)}>
|
377
|
-
<
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
447
|
+
<div className="value-spec-editor__number__input-container">
|
448
|
+
<input
|
449
|
+
ref={inputRef}
|
450
|
+
className="panel__content__form__section__input value-spec-editor__input value-spec-editor__number__input"
|
451
|
+
spellCheck={false}
|
452
|
+
type="text" // NOTE: we leave this as text so that we can support expression evaluation
|
453
|
+
inputMode="numeric"
|
454
|
+
value={value}
|
455
|
+
onChange={changeValue}
|
456
|
+
onBlur={calculateExpression}
|
457
|
+
onKeyDown={onKeyDown}
|
458
|
+
/>
|
459
|
+
<div className="value-spec-editor__number__actions">
|
460
|
+
<button
|
461
|
+
className="value-spec-editor__number__action"
|
462
|
+
title="Evaluate Expression (Enter)"
|
463
|
+
onClick={calculateExpression}
|
464
|
+
>
|
465
|
+
<CalculateIcon />
|
466
|
+
</button>
|
467
|
+
</div>
|
468
|
+
</div>
|
384
469
|
<button
|
385
470
|
className="value-spec-editor__reset-btn"
|
386
471
|
title="Reset"
|
@@ -399,9 +484,15 @@ const EnumValueInstanceValueEditor = observer(
|
|
399
484
|
className?: string | undefined;
|
400
485
|
setValueSpecification: (val: ValueSpecification) => void;
|
401
486
|
resetValue: () => void;
|
487
|
+
obseverContext: ObserverContext;
|
402
488
|
}) => {
|
403
|
-
const {
|
404
|
-
|
489
|
+
const {
|
490
|
+
valueSpecification,
|
491
|
+
className,
|
492
|
+
resetValue,
|
493
|
+
setValueSpecification,
|
494
|
+
obseverContext,
|
495
|
+
} = props;
|
405
496
|
const enumValueRef = guaranteeNonNullable(valueSpecification.values[0]);
|
406
497
|
const enumValue = enumValueRef.value;
|
407
498
|
const options = enumValue._OWNER.values.map((value) => ({
|
@@ -413,6 +504,7 @@ const EnumValueInstanceValueEditor = observer(
|
|
413
504
|
valueSpecification,
|
414
505
|
EnumValueExplicitReference.create(val.value),
|
415
506
|
0,
|
507
|
+
obseverContext,
|
416
508
|
);
|
417
509
|
setValueSpecification(valueSpecification);
|
418
510
|
};
|
@@ -466,9 +558,10 @@ const setCollectionValue = (
|
|
466
558
|
valueSpecification: CollectionInstanceValue,
|
467
559
|
expectedType: Type,
|
468
560
|
value: string,
|
561
|
+
obseverContext: ObserverContext,
|
469
562
|
): void => {
|
470
563
|
if (value.trim().length === 0) {
|
471
|
-
instanceValue_setValues(valueSpecification, []);
|
564
|
+
instanceValue_setValues(valueSpecification, [], obseverContext);
|
472
565
|
return;
|
473
566
|
}
|
474
567
|
let result: unknown[] = [];
|
@@ -489,7 +582,11 @@ const setCollectionValue = (
|
|
489
582
|
new GenericType(expectedType),
|
490
583
|
),
|
491
584
|
);
|
492
|
-
instanceValue_setValues(
|
585
|
+
instanceValue_setValues(
|
586
|
+
primitiveInstanceValue,
|
587
|
+
[item.toString()],
|
588
|
+
obseverContext,
|
589
|
+
);
|
493
590
|
return primitiveInstanceValue;
|
494
591
|
})
|
495
592
|
.filter(isNonNullable);
|
@@ -510,7 +607,11 @@ const setCollectionValue = (
|
|
510
607
|
new GenericType(expectedType),
|
511
608
|
),
|
512
609
|
);
|
513
|
-
instanceValue_setValues(
|
610
|
+
instanceValue_setValues(
|
611
|
+
primitiveInstanceValue,
|
612
|
+
[item],
|
613
|
+
obseverContext,
|
614
|
+
);
|
514
615
|
return primitiveInstanceValue;
|
515
616
|
})
|
516
617
|
.filter(isNonNullable);
|
@@ -532,14 +633,16 @@ const setCollectionValue = (
|
|
532
633
|
const enumValueInstanceValue = new EnumValueInstanceValue(
|
533
634
|
GenericTypeExplicitReference.create(new GenericType(expectedType)),
|
534
635
|
);
|
535
|
-
instanceValue_setValues(
|
536
|
-
|
537
|
-
|
636
|
+
instanceValue_setValues(
|
637
|
+
enumValueInstanceValue,
|
638
|
+
[EnumValueExplicitReference.create(_enum)],
|
639
|
+
obseverContext,
|
640
|
+
);
|
538
641
|
return enumValueInstanceValue;
|
539
642
|
})
|
540
643
|
.filter(isNonNullable);
|
541
644
|
}
|
542
|
-
instanceValue_setValues(valueSpecification, result);
|
645
|
+
instanceValue_setValues(valueSpecification, result, obseverContext);
|
543
646
|
};
|
544
647
|
|
545
648
|
const COLLECTION_PREVIEW_CHAR_LIMIT = 50;
|
@@ -552,6 +655,7 @@ const CollectionValueInstanceValueEditor = observer(
|
|
552
655
|
className?: string | undefined;
|
553
656
|
resetValue: () => void;
|
554
657
|
setValueSpecification: (val: ValueSpecification) => void;
|
658
|
+
obseverContext: ObserverContext;
|
555
659
|
}) => {
|
556
660
|
const {
|
557
661
|
valueSpecification,
|
@@ -559,6 +663,7 @@ const CollectionValueInstanceValueEditor = observer(
|
|
559
663
|
className,
|
560
664
|
resetValue,
|
561
665
|
setValueSpecification,
|
666
|
+
obseverContext,
|
562
667
|
} = props;
|
563
668
|
const inputRef = useRef<HTMLInputElement>(null);
|
564
669
|
const [text, setText] = useState(stringifyValue(valueSpecification.values));
|
@@ -583,7 +688,12 @@ const CollectionValueInstanceValueEditor = observer(
|
|
583
688
|
const saveEdit = (): void => {
|
584
689
|
setEditable(false);
|
585
690
|
setShowAdvancedEditorPopover(false);
|
586
|
-
setCollectionValue(
|
691
|
+
setCollectionValue(
|
692
|
+
valueSpecification,
|
693
|
+
expectedType,
|
694
|
+
text,
|
695
|
+
obseverContext,
|
696
|
+
);
|
587
697
|
setText(stringifyValue(valueSpecification.values));
|
588
698
|
setValueSpecification(valueSpecification);
|
589
699
|
};
|
@@ -779,6 +889,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
779
889
|
className={className}
|
780
890
|
resetValue={resetValue}
|
781
891
|
selectorConfig={selectorConfig}
|
892
|
+
obseverContext={obseverContext}
|
782
893
|
/>
|
783
894
|
);
|
784
895
|
case PRIMITIVE_TYPE.BOOLEAN:
|
@@ -788,6 +899,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
788
899
|
setValueSpecification={setValueSpecification}
|
789
900
|
className={className}
|
790
901
|
resetValue={resetValue}
|
902
|
+
obseverContext={obseverContext}
|
791
903
|
/>
|
792
904
|
);
|
793
905
|
case PRIMITIVE_TYPE.NUMBER:
|
@@ -802,6 +914,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
802
914
|
setValueSpecification={setValueSpecification}
|
803
915
|
className={className}
|
804
916
|
resetValue={resetValue}
|
917
|
+
obseverContext={obseverContext}
|
805
918
|
/>
|
806
919
|
);
|
807
920
|
case PRIMITIVE_TYPE.DATE:
|
@@ -829,6 +942,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
829
942
|
className={className}
|
830
943
|
resetValue={resetValue}
|
831
944
|
setValueSpecification={setValueSpecification}
|
945
|
+
obseverContext={obseverContext}
|
832
946
|
/>
|
833
947
|
);
|
834
948
|
} else if (
|
@@ -846,6 +960,7 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
846
960
|
className={className}
|
847
961
|
resetValue={resetValue}
|
848
962
|
setValueSpecification={setValueSpecification}
|
963
|
+
obseverContext={obseverContext}
|
849
964
|
/>
|
850
965
|
);
|
851
966
|
}
|
@@ -870,26 +985,55 @@ export const BasicValueSpecificationEditor: React.FC<{
|
|
870
985
|
resetValue={resetValue}
|
871
986
|
/>
|
872
987
|
);
|
873
|
-
} else if (
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
988
|
+
} else if (valueSpecification instanceof SimpleFunctionExpression) {
|
989
|
+
if (isSubType(typeCheckOption.expectedType, PrimitiveType.DATE)) {
|
990
|
+
return (
|
991
|
+
<DateInstanceValueEditor
|
992
|
+
valueSpecification={valueSpecification}
|
993
|
+
graph={graph}
|
994
|
+
obseverContext={obseverContext}
|
995
|
+
typeCheckOption={typeCheckOption}
|
996
|
+
className={className}
|
997
|
+
setValueSpecification={setValueSpecification}
|
998
|
+
resetValue={resetValue}
|
999
|
+
/>
|
1000
|
+
);
|
1001
|
+
} else if (
|
1002
|
+
// TODO: think of other ways we could make use of this code path where we can simplify
|
1003
|
+
// an expression value to simple value, not just handling minus() function only
|
1004
|
+
isSubType(typeCheckOption.expectedType, PrimitiveType.NUMBER) &&
|
1005
|
+
matchFunctionName(
|
1006
|
+
valueSpecification.functionName,
|
1007
|
+
QUERY_BUILDER_SUPPORTED_FUNCTIONS.MINUS,
|
1008
|
+
)
|
1009
|
+
) {
|
1010
|
+
const simplifiedValue = simplifyValueExpression(
|
1011
|
+
valueSpecification,
|
1012
|
+
obseverContext,
|
1013
|
+
);
|
1014
|
+
if (
|
1015
|
+
simplifiedValue instanceof PrimitiveInstanceValue &&
|
1016
|
+
isSubType(
|
1017
|
+
simplifiedValue.genericType.value.rawType,
|
1018
|
+
PrimitiveType.NUMBER,
|
1019
|
+
)
|
1020
|
+
) {
|
1021
|
+
return (
|
1022
|
+
<NumberPrimitiveInstanceValueEditor
|
1023
|
+
valueSpecification={simplifiedValue}
|
1024
|
+
isInteger={
|
1025
|
+
simplifiedValue.genericType.value.rawType ===
|
1026
|
+
PrimitiveType.INTEGER
|
1027
|
+
}
|
1028
|
+
setValueSpecification={setValueSpecification}
|
1029
|
+
className={className}
|
1030
|
+
resetValue={resetValue}
|
1031
|
+
obseverContext={obseverContext}
|
1032
|
+
/>
|
1033
|
+
);
|
1034
|
+
}
|
1035
|
+
}
|
893
1036
|
}
|
1037
|
+
|
894
1038
|
return <UnsupportedValueSpecificationEditor />;
|
895
1039
|
};
|
@@ -258,16 +258,20 @@ const buildPureDateFunctionExpression = (
|
|
258
258
|
new GenericType(graph.getType(DAY_OF_WEEK)),
|
259
259
|
),
|
260
260
|
);
|
261
|
-
instanceValue_setValues(
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
261
|
+
instanceValue_setValues(
|
262
|
+
dayOfWeekEnumIntanceValue,
|
263
|
+
[
|
264
|
+
...dayOfWeekEnumIntanceValue.values,
|
265
|
+
EnumValueExplicitReference.create(
|
266
|
+
guaranteeNonNullable(
|
267
|
+
graph
|
268
|
+
.getEnumeration(DAY_OF_WEEK)
|
269
|
+
.values.filter((e) => e.name === datePickerOption.day)[0],
|
270
|
+
),
|
268
271
|
),
|
269
|
-
|
270
|
-
|
272
|
+
],
|
273
|
+
observerContext,
|
274
|
+
);
|
271
275
|
functionExpression_addParameterValue(
|
272
276
|
previousFridaySFE,
|
273
277
|
dayOfWeekEnumIntanceValue,
|
@@ -454,6 +458,7 @@ const buildPureAdjustDateFunction = (
|
|
454
458
|
graph,
|
455
459
|
PRIMITIVE_TYPE.INTEGER,
|
456
460
|
customDateOption.duration,
|
461
|
+
observerContext,
|
457
462
|
),
|
458
463
|
observerContext,
|
459
464
|
);
|
@@ -463,14 +468,14 @@ const buildPureAdjustDateFunction = (
|
|
463
468
|
observerContext,
|
464
469
|
);
|
465
470
|
} else {
|
466
|
-
const adjustmentInstanceValue = buildPrimitiveInstanceValue(
|
467
|
-
graph,
|
468
|
-
PRIMITIVE_TYPE.INTEGER,
|
469
|
-
customDateOption.duration,
|
470
|
-
);
|
471
471
|
functionExpression_addParameterValue(
|
472
472
|
dateAdjustSimpleFunctionExpression,
|
473
|
-
|
473
|
+
buildPrimitiveInstanceValue(
|
474
|
+
graph,
|
475
|
+
PRIMITIVE_TYPE.INTEGER,
|
476
|
+
customDateOption.duration,
|
477
|
+
observerContext,
|
478
|
+
),
|
474
479
|
observerContext,
|
475
480
|
);
|
476
481
|
}
|
@@ -479,17 +484,21 @@ const buildPureAdjustDateFunction = (
|
|
479
484
|
new GenericType(graph.getType(DURATION_UNIT)),
|
480
485
|
),
|
481
486
|
);
|
482
|
-
instanceValue_setValues(
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
487
|
+
instanceValue_setValues(
|
488
|
+
durationUnitEnumIntanceValue,
|
489
|
+
[
|
490
|
+
...durationUnitEnumIntanceValue.values,
|
491
|
+
EnumValueExplicitReference.create(
|
492
|
+
guaranteeNonNullable(
|
493
|
+
buildPureDurationEnumValue(
|
494
|
+
guaranteeNonNullable(customDateOption.unit),
|
495
|
+
graph,
|
496
|
+
),
|
489
497
|
),
|
490
498
|
),
|
491
|
-
|
492
|
-
|
499
|
+
],
|
500
|
+
observerContext,
|
501
|
+
);
|
493
502
|
functionExpression_addParameterValue(
|
494
503
|
dateAdjustSimpleFunctionExpression,
|
495
504
|
durationUnitEnumIntanceValue,
|
@@ -699,12 +708,14 @@ const AbsoluteDateValueSpecificationEditor: React.FC<{
|
|
699
708
|
graph: PureModel;
|
700
709
|
setValueSpecification: (val: ValueSpecification) => void;
|
701
710
|
setDatePickerOption: (datePickerOption: DatePickerOption) => void;
|
711
|
+
observerContext: ObserverContext;
|
702
712
|
}> = (props) => {
|
703
713
|
const {
|
704
714
|
valueSpecification,
|
705
715
|
graph,
|
706
716
|
setValueSpecification,
|
707
717
|
setDatePickerOption,
|
718
|
+
observerContext,
|
708
719
|
} = props;
|
709
720
|
const inputRef = useRef<HTMLInputElement>(null);
|
710
721
|
const absoluteDateValue =
|
@@ -720,10 +731,16 @@ const AbsoluteDateValueSpecificationEditor: React.FC<{
|
|
720
731
|
graph,
|
721
732
|
PRIMITIVE_TYPE.STRICTDATE,
|
722
733
|
event.target.value,
|
734
|
+
observerContext,
|
723
735
|
),
|
724
736
|
);
|
725
737
|
} else if (valueSpecification instanceof InstanceValue) {
|
726
|
-
instanceValue_setValue(
|
738
|
+
instanceValue_setValue(
|
739
|
+
valueSpecification,
|
740
|
+
event.target.value,
|
741
|
+
0,
|
742
|
+
observerContext,
|
743
|
+
);
|
727
744
|
if (
|
728
745
|
valueSpecification.genericType.value.rawType.path !==
|
729
746
|
PRIMITIVE_TYPE.STRICTDATE
|
@@ -768,12 +785,14 @@ const AbsoluteTimeValueSpecificationEditor: React.FC<{
|
|
768
785
|
graph: PureModel;
|
769
786
|
setValueSpecification: (val: ValueSpecification) => void;
|
770
787
|
setDatePickerOption: (datePickerOption: DatePickerOption) => void;
|
788
|
+
observerContext: ObserverContext;
|
771
789
|
}> = (props) => {
|
772
790
|
const {
|
773
791
|
valueSpecification,
|
774
792
|
graph,
|
775
793
|
setValueSpecification,
|
776
794
|
setDatePickerOption,
|
795
|
+
observerContext,
|
777
796
|
} = props;
|
778
797
|
const inputRef = useRef<HTMLInputElement>(null);
|
779
798
|
const absoluteTimeValue =
|
@@ -789,10 +808,16 @@ const AbsoluteTimeValueSpecificationEditor: React.FC<{
|
|
789
808
|
graph,
|
790
809
|
PRIMITIVE_TYPE.DATETIME,
|
791
810
|
event.target.value,
|
811
|
+
observerContext,
|
792
812
|
),
|
793
813
|
);
|
794
814
|
} else {
|
795
|
-
instanceValue_setValue(
|
815
|
+
instanceValue_setValue(
|
816
|
+
valueSpecification,
|
817
|
+
event.target.value,
|
818
|
+
0,
|
819
|
+
observerContext,
|
820
|
+
);
|
796
821
|
if (
|
797
822
|
valueSpecification.genericType.value.rawType.path !==
|
798
823
|
PRIMITIVE_TYPE.DATETIME
|
@@ -1213,6 +1238,7 @@ export const CustomDatePicker: React.FC<{
|
|
1213
1238
|
graph,
|
1214
1239
|
PRIMITIVE_TYPE.LATESTDATE,
|
1215
1240
|
event.target.value,
|
1241
|
+
observerContext,
|
1216
1242
|
),
|
1217
1243
|
);
|
1218
1244
|
} else if (
|
@@ -1255,6 +1281,7 @@ export const CustomDatePicker: React.FC<{
|
|
1255
1281
|
valueSpecification={valueSpecification}
|
1256
1282
|
setValueSpecification={setValueSpecification}
|
1257
1283
|
setDatePickerOption={setDatePickerOption}
|
1284
|
+
observerContext={observerContext}
|
1258
1285
|
/>
|
1259
1286
|
);
|
1260
1287
|
case CUSTOM_DATE_PICKER_OPTION.ABSOLUTE_TIME:
|
@@ -1264,6 +1291,7 @@ export const CustomDatePicker: React.FC<{
|
|
1264
1291
|
valueSpecification={valueSpecification}
|
1265
1292
|
setValueSpecification={setValueSpecification}
|
1266
1293
|
setDatePickerOption={setDatePickerOption}
|
1294
|
+
observerContext={observerContext}
|
1267
1295
|
/>
|
1268
1296
|
);
|
1269
1297
|
case CUSTOM_DATE_PICKER_OPTION.CUSTOM_DATE:
|
@@ -106,9 +106,7 @@ const WatermarkValueEditor = observer(
|
|
106
106
|
watermarkState.setValue(val);
|
107
107
|
}}
|
108
108
|
graph={graph}
|
109
|
-
obseverContext={
|
110
|
-
watermarkState.queryBuilderState.observableContext
|
111
|
-
}
|
109
|
+
obseverContext={watermarkState.queryBuilderState.observerContext}
|
112
110
|
typeCheckOption={{
|
113
111
|
expectedType: PrimitiveType.STRING,
|
114
112
|
}}
|
@@ -24,6 +24,7 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS {
|
|
24
24
|
OR = 'meta::pure::functions::boolean::or',
|
25
25
|
TAKE = 'meta::pure::functions::collection::take',
|
26
26
|
SUBTYPE = 'meta::pure::functions::lang::subType',
|
27
|
+
MINUS = 'meta::pure::functions::math::minus',
|
27
28
|
|
28
29
|
// graph-fetch
|
29
30
|
GRAPH_FETCH = 'meta::pure::graphFetch::execution::graphFetch',
|
@@ -53,6 +54,7 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS {
|
|
53
54
|
LESS_THAN = 'meta::pure::functions::lang::tests::lessThan',
|
54
55
|
LESS_THAN_EQUAL = 'meta::pure::functions::lang::tests::lessThanEqual',
|
55
56
|
STARTS_WITH = 'meta::pure::functions::string::startsWith',
|
57
|
+
|
56
58
|
// aggregation
|
57
59
|
AVERAGE = 'meta::pure::functions::math::average',
|
58
60
|
COUNT = 'meta::pure::functions::collection::count',
|
@@ -66,8 +68,10 @@ export enum QUERY_BUILDER_SUPPORTED_FUNCTIONS {
|
|
66
68
|
STD_DEV_SAMPLE = 'meta::pure::functions::math::stdDevSample',
|
67
69
|
SUM = 'meta::pure::functions::math::sum',
|
68
70
|
UNIQUE_VALUE_ONLY = 'meta::pure::functions::collection::uniqueValueOnly',
|
71
|
+
|
69
72
|
// watermark
|
70
73
|
WATERMARK = 'meta::datalake::functions::forWatermark',
|
74
|
+
|
71
75
|
// OLAP
|
72
76
|
OLAP_GROUPBY = 'meta::pure::tds::olapGroupBy',
|
73
77
|
OLAP_RANK = 'meta::pure::functions::math::olap::rank',
|
@@ -57,7 +57,7 @@ export class QueryBuilder_PureProtocolProcessorPlugin extends PureProtocolProces
|
|
57
57
|
openVariables: string[],
|
58
58
|
compileContext: V1_GraphBuilderContext,
|
59
59
|
processingContext: V1_ProcessingContext,
|
60
|
-
):
|
60
|
+
): SimpleFunctionExpression | undefined => {
|
61
61
|
if (
|
62
62
|
matchFunctionName(
|
63
63
|
functionName,
|