From ca4e253559d6b42914041d80653a712b6427c5fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kre=C5=A1imir=20=C4=8Coko?= Date: Mon, 11 Nov 2024 17:05:41 +0100 Subject: [PATCH 1/8] 1583 - replace index with arrayIndex --- .../workflow-editor/components/Properties/Property.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/client/src/pages/platform/workflow-editor/components/Properties/Property.tsx b/client/src/pages/platform/workflow-editor/components/Properties/Property.tsx index 1533d2c261..b6558ad908 100644 --- a/client/src/pages/platform/workflow-editor/components/Properties/Property.tsx +++ b/client/src/pages/platform/workflow-editor/components/Properties/Property.tsx @@ -656,7 +656,10 @@ const Property = ({ } const optionsLookupDependsOnValues = optionsDataSource?.optionsLookupDependsOn.map((optionLookupDependency) => - resolvePath(currentComponent?.parameters, optionLookupDependency)?.toString() + resolvePath( + currentComponent?.parameters, + optionLookupDependency.replace('[index]', `[${arrayIndex}]`) + )?.toString() ); setLookupDependsOnValues(optionsLookupDependsOnValues); @@ -669,7 +672,10 @@ const Property = ({ const propertiesLookupDependsOnValues = propertiesDataSource?.propertiesLookupDependsOn.map( (propertyLookupDependency) => - resolvePath(currentComponent?.parameters, propertyLookupDependency)?.toString() + resolvePath( + currentComponent?.parameters, + propertyLookupDependency.replace('[index]', `[${arrayIndex}]`) + )?.toString() ); setLookupDependsOnValues(propertiesLookupDependsOnValues); From 2c487e54a63539c12541a5c1fcb2edbed5a27295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kre=C5=A1imir=20=C4=8Coko?= Date: Mon, 11 Nov 2024 17:10:55 +0100 Subject: [PATCH 2/8] 1514 - fetch new action/trigger definition when it changes in the operation select --- .../components/WorkflowNodeDetailsPanel.tsx | 48 ++++++++++++++++--- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx b/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx index 67d60436a6..6121af0060 100644 --- a/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx +++ b/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx @@ -6,16 +6,26 @@ import {Tooltip, TooltipContent, TooltipTrigger} from '@/components/ui/tooltip'; import Properties from '@/pages/platform/workflow-editor/components/Properties/Properties'; import DataStreamComponentsTab from '@/pages/platform/workflow-editor/components/node-details-tabs/DataStreamComponentsTab'; import { + ActionDefinitionApi, ComponentDefinition, ComponentDefinitionBasic, + GetComponentActionDefinitionRequest, + GetComponentTriggerDefinitionRequest, + TriggerDefinitionApi, WorkflowConnection, WorkflowNodeOutput, } from '@/shared/middleware/platform/configuration'; import {useDeleteWorkflowNodeTestOutputMutation} from '@/shared/mutations/platform/workflowNodeTestOutputs.mutations'; -import {useGetComponentActionDefinitionQuery} from '@/shared/queries/platform/actionDefinitions.queries'; +import { + ActionDefinitionKeys, + useGetComponentActionDefinitionQuery, +} from '@/shared/queries/platform/actionDefinitions.queries'; import {useGetComponentDefinitionQuery} from '@/shared/queries/platform/componentDefinitions.queries'; import {useGetTaskDispatcherDefinitionQuery} from '@/shared/queries/platform/taskDispatcherDefinitions.queries'; -import {useGetTriggerDefinitionQuery} from '@/shared/queries/platform/triggerDefinitions.queries'; +import { + TriggerDefinitionKeys, + useGetTriggerDefinitionQuery, +} from '@/shared/queries/platform/triggerDefinitions.queries'; import {WorkflowNodeDynamicPropertyKeys} from '@/shared/queries/platform/workflowNodeDynamicProperties.queries'; import {WorkflowNodeOptionKeys} from '@/shared/queries/platform/workflowNodeOptions.queries'; import {WorkflowNodeOutputKeys} from '@/shared/queries/platform/workflowNodeOutputs.queries'; @@ -216,7 +226,9 @@ const WorkflowNodeDetailsPanel = ({ const queryClient = useQueryClient(); - const handleOperationSelectChange = (newOperationName: string) => { + const handleOperationSelectChange = async (newOperationName: string) => { + setCurrentOperationName(newOperationName); + if (!currentComponentDefinition || !currentComponent) { return; } @@ -229,6 +241,32 @@ const WorkflowNodeDetailsPanel = ({ queryKey: WorkflowNodeOptionKeys.workflowNodeOptions, }); + let operationData; + + if (currentNode?.trigger) { + const triggerDefinitionRequest: GetComponentTriggerDefinitionRequest = { + componentName: currentComponentDefinition?.name, + componentVersion: currentComponentDefinition?.version, + triggerName: newOperationName, + }; + + operationData = await queryClient.fetchQuery({ + queryFn: () => new TriggerDefinitionApi().getComponentTriggerDefinition(triggerDefinitionRequest), + queryKey: TriggerDefinitionKeys.triggerDefinition(triggerDefinitionRequest), + }); + } else { + const componentActionDefinitionRequest: GetComponentActionDefinitionRequest = { + actionName: newOperationName, + componentName: currentComponentDefinition.name, + componentVersion: currentComponentDefinition.version, + }; + + operationData = await queryClient.fetchQuery({ + queryFn: () => new ActionDefinitionApi().getComponentActionDefinition(componentActionDefinitionRequest), + queryKey: ActionDefinitionKeys.actionDefinition(componentActionDefinitionRequest), + }); + } + const {componentName, notes, title, workflowNodeName} = currentComponent; saveWorkflowDefinition({ @@ -239,7 +277,7 @@ const WorkflowNodeDetailsPanel = ({ name: workflowNodeName || currentNode?.name || '', operationName: newOperationName, parameters: getParametersWithDefaultValues({ - properties: currentOperationProperties as Array, + properties: operationData.properties as Array, }), trigger: currentNode?.trigger, type: `${componentName}/v${currentComponentDefinition.version}/${newOperationName}`, @@ -255,8 +293,6 @@ const WorkflowNodeDetailsPanel = ({ }), }); - setCurrentOperationName(newOperationName); - const formattedComponentActions = componentActions.map((componentAction) => { if (componentAction.workflowNodeName === currentNode?.name) { return { From 10b1affa0fe6f73969ee60a63b35978f96ba31ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kre=C5=A1imir=20=C4=8Coko?= Date: Mon, 11 Nov 2024 17:24:55 +0100 Subject: [PATCH 3/8] 1684 - use currentNode.operationName because currentOperationName isnt updated in time --- .../components/WorkflowNodeDetailsPanel.tsx | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx b/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx index 6121af0060..838e7383c1 100644 --- a/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx +++ b/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx @@ -120,7 +120,7 @@ const WorkflowNodeDetailsPanel = ({ const {data: currentActionDefinition, isFetched: currentActionFetched} = useGetComponentActionDefinitionQuery( { - actionName: currentOperationName, + actionName: currentNode?.operationName ?? currentOperationName, componentName: currentComponentDefinition?.name as string, componentVersion: currentComponentDefinition?.version as number, }, @@ -458,13 +458,6 @@ const WorkflowNodeDetailsPanel = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [componentActions, currentNode?.name]); - useEffect(() => { - if (!currentOperationName || !matchingOperation?.name) { - setCurrentOperationName(currentNode?.operationName || currentComponentDefinition?.actions?.[0]?.name || ''); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [currentNode?.name, matchingOperation?.name]); - const currentTaskData = currentComponentDefinition || currentTaskDispatcherDefinition; const currentOperationFetcher = currentActionFetched || currentTriggerFetched; From 454b0b7d7c628b671653eedfdee874d39d2ebaaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kre=C5=A1imir=20=C4=8Coko?= Date: Mon, 11 Nov 2024 17:29:56 +0100 Subject: [PATCH 4/8] 1655 - fix list not having unique keys --- .../platform/connection/components/ConnectionParameters.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/pages/platform/connection/components/ConnectionParameters.tsx b/client/src/pages/platform/connection/components/ConnectionParameters.tsx index c3cce02ff1..b4da4d873a 100644 --- a/client/src/pages/platform/connection/components/ConnectionParameters.tsx +++ b/client/src/pages/platform/connection/components/ConnectionParameters.tsx @@ -1,4 +1,5 @@ import {ConnectionDefinition} from '@/shared/middleware/platform/configuration'; +import {Fragment} from 'react'; const ConnectionParameters = ({ authorizationParameters, @@ -54,7 +55,7 @@ const ConnectionParameters = ({ {hasAuthorizationParameters && existingAuthorizations.map((authorization) => ( - <> +
  • Authorization: @@ -73,7 +74,7 @@ const ConnectionParameters = ({
  • ))} - +
    ))} From c552c8e7d2e531dbb24505a55021911d8cdb1ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kre=C5=A1imir=20=C4=8Coko?= Date: Mon, 11 Nov 2024 17:42:56 +0100 Subject: [PATCH 5/8] 1655 - workaround for spaces inside property paths --- .../components/Properties/Property.tsx | 12 +++++++++-- .../utils/replaceSpacesInObjectKeys.ts | 21 +++++++++++++++++++ .../workflow-editor/utils/saveProperty.ts | 5 +++++ client/src/shared/constants.ts | 2 ++ 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 client/src/pages/platform/workflow-editor/utils/replaceSpacesInObjectKeys.ts diff --git a/client/src/pages/platform/workflow-editor/components/Properties/Property.tsx b/client/src/pages/platform/workflow-editor/components/Properties/Property.tsx index b6558ad908..c79c38fcc2 100644 --- a/client/src/pages/platform/workflow-editor/components/Properties/Property.tsx +++ b/client/src/pages/platform/workflow-editor/components/Properties/Property.tsx @@ -18,6 +18,7 @@ import useWorkflowNodeDetailsPanelStore from '@/pages/platform/workflow-editor/s import deleteProperty from '@/pages/platform/workflow-editor/utils/deleteProperty'; import getInputHTMLType from '@/pages/platform/workflow-editor/utils/getInputHTMLType'; import saveProperty from '@/pages/platform/workflow-editor/utils/saveProperty'; +import {PATH_SPACE_REPLACEMENT} from '@/shared/constants'; import {Option} from '@/shared/middleware/platform/configuration'; import {PropertyAllType} from '@/shared/types'; import {QuestionMarkCircledIcon} from '@radix-ui/react-icons'; @@ -33,6 +34,7 @@ import {twMerge} from 'tailwind-merge'; import {useDebouncedCallback} from 'use-debounce'; import useWorkflowEditorStore from '../../stores/useWorkflowEditorStore'; +import replaceSpacesInKeys from '../../utils/replaceSpacesInObjectKeys'; import ArrayProperty from './ArrayProperty'; import ObjectProperty from './ObjectProperty'; @@ -176,6 +178,10 @@ const Property = ({ }); } + if (path?.includes(' ')) { + path = path.replace(/\s/g, PATH_SPACE_REPLACEMENT); + } + const getComponentIcon = (mentionValue: string) => { let componentName = mentionValue.split('_')[0].replace('${', ''); @@ -539,12 +545,14 @@ const Property = ({ return; } - const paramValue = resolvePath(parameters, path); + const formattedParamaters = replaceSpacesInKeys(parameters); + + const paramValue = resolvePath(formattedParamaters, path); if (paramValue !== undefined || paramValue !== null) { setPropertyParameterValue(paramValue); } else { - setPropertyParameterValue(parameters[name]); + setPropertyParameterValue(formattedParamaters[name]); } } // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/client/src/pages/platform/workflow-editor/utils/replaceSpacesInObjectKeys.ts b/client/src/pages/platform/workflow-editor/utils/replaceSpacesInObjectKeys.ts new file mode 100644 index 0000000000..26620a77bd --- /dev/null +++ b/client/src/pages/platform/workflow-editor/utils/replaceSpacesInObjectKeys.ts @@ -0,0 +1,21 @@ +import {PATH_SPACE_REPLACEMENT} from '@/shared/constants'; + +export default function replaceSpacesInKeys(parameters: {[key: string]: unknown}): { + [key: string]: unknown; +} { + Object.keys(parameters).forEach((key) => { + if (key.includes(' ')) { + const newKey = key.replace(/\s/g, PATH_SPACE_REPLACEMENT); + + parameters[newKey] = parameters[key]; + + delete parameters[key]; + } + + if (typeof parameters[key] === 'object' && parameters[key] !== null) { + replaceSpacesInKeys(parameters[key] as {[key: string]: unknown}); + } + }); + + return parameters; +} diff --git a/client/src/pages/platform/workflow-editor/utils/saveProperty.ts b/client/src/pages/platform/workflow-editor/utils/saveProperty.ts index 954e045d76..6e930bb477 100644 --- a/client/src/pages/platform/workflow-editor/utils/saveProperty.ts +++ b/client/src/pages/platform/workflow-editor/utils/saveProperty.ts @@ -1,3 +1,4 @@ +import {PATH_SPACE_REPLACEMENT} from '@/shared/constants'; import { UpdateWorkflowNodeParameter200Response, UpdateWorkflowNodeParameterOperationRequest, @@ -36,6 +37,10 @@ export default function saveProperty({ }: SavePropertyProps) { const {workflowNodeName} = currentComponent; + if (path.includes(PATH_SPACE_REPLACEMENT)) { + path = path.replace(new RegExp(PATH_SPACE_REPLACEMENT, 'g'), ' '); + } + updateWorkflowNodeParameterMutation.mutate( { id: workflowId, diff --git a/client/src/shared/constants.ts b/client/src/shared/constants.ts index 5dad197a7e..82487ea73c 100644 --- a/client/src/shared/constants.ts +++ b/client/src/shared/constants.ts @@ -29,3 +29,5 @@ export const EDGE_STYLES = { stroke: STROKE_GRAY_300, strokeWidth: 2, }; + +export const PATH_SPACE_REPLACEMENT = '_SPACE_'; From 7daa9ce44f9ad288018d531ae38c1e60126e9801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kre=C5=A1imir=20=C4=8Coko?= Date: Mon, 11 Nov 2024 17:56:57 +0100 Subject: [PATCH 6/8] 1655 - fix dynamic properties subProperties not having proper defaultValue --- .../Properties/components/PropertyDynamicProperties.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/src/pages/platform/workflow-editor/components/Properties/components/PropertyDynamicProperties.tsx b/client/src/pages/platform/workflow-editor/components/Properties/components/PropertyDynamicProperties.tsx index 8db74a93bf..d10585ccca 100644 --- a/client/src/pages/platform/workflow-editor/components/Properties/components/PropertyDynamicProperties.tsx +++ b/client/src/pages/platform/workflow-editor/components/Properties/components/PropertyDynamicProperties.tsx @@ -71,7 +71,10 @@ const PropertyDynamicProperties = ({ operationName={currentOperationName} parameterValue={property.name ? parameterValue?.[property.name] : ''} path={path} - property={property} + property={{ + ...property, + defaultValue: property.name ? parameterValue?.[property.name] : '', + }} /> ))} From 1bc6d61fdc89f677607335f911bb2c8d08e9ba08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kre=C5=A1imir=20=C4=8Coko?= Date: Mon, 11 Nov 2024 18:00:57 +0100 Subject: [PATCH 7/8] 1722 - save component.type in all cases where operation is changing --- .../workflow-editor/components/WorkflowNodeDetailsPanel.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx b/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx index 838e7383c1..60768bf237 100644 --- a/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx +++ b/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx @@ -291,6 +291,7 @@ const WorkflowNodeDetailsPanel = ({ parameters: getParametersWithDefaultValues({ properties: currentOperationProperties as Array, }), + type: `${componentName}/v${currentComponentDefinition.version}/${newOperationName}`, }); const formattedComponentActions = componentActions.map((componentAction) => { @@ -439,6 +440,7 @@ const WorkflowNodeDetailsPanel = ({ setCurrentNode({ ...currentNode, operationName: currentOperationName, + type: `${currentComponent?.componentName}/v${currentComponentDefinition?.version}/${currentOperationName}`, }); } // eslint-disable-next-line react-hooks/exhaustive-deps From c4d90ce575f2161ff6ede7acd82edfe4a4f137a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kre=C5=A1imir=20=C4=8Coko?= Date: Mon, 11 Nov 2024 18:05:57 +0100 Subject: [PATCH 8/8] 1722 - properly save label and description without changing any other task properties --- .../components/WorkflowNodeDetailsPanel.tsx | 6 ++-- .../WorkflowNodesPopoverMenuOperationList.tsx | 4 +-- .../node-details-tabs/DescriptionTab.tsx | 29 ++++++++----------- .../workflow-editor/hooks/useNodeClick.ts | 4 +-- .../utils/saveWorkflowDefinition.ts | 3 ++ client/src/shared/types.ts | 5 ++-- 6 files changed, 24 insertions(+), 27 deletions(-) diff --git a/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx b/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx index 60768bf237..a504f462a4 100644 --- a/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx +++ b/client/src/pages/platform/workflow-editor/components/WorkflowNodeDetailsPanel.tsx @@ -267,13 +267,13 @@ const WorkflowNodeDetailsPanel = ({ }); } - const {componentName, notes, title, workflowNodeName} = currentComponent; + const {componentName, description, label, workflowNodeName} = currentComponent; saveWorkflowDefinition({ nodeData: { componentName, - description: notes, - label: title, + description, + label, name: workflowNodeName || currentNode?.name || '', operationName: newOperationName, parameters: getParametersWithDefaultValues({ diff --git a/client/src/pages/platform/workflow-editor/components/WorkflowNodesPopoverMenuOperationList.tsx b/client/src/pages/platform/workflow-editor/components/WorkflowNodesPopoverMenuOperationList.tsx index 320fc9bff9..b2ebb03481 100644 --- a/client/src/pages/platform/workflow-editor/components/WorkflowNodesPopoverMenuOperationList.tsx +++ b/client/src/pages/platform/workflow-editor/components/WorkflowNodesPopoverMenuOperationList.tsx @@ -110,9 +110,9 @@ const WorkflowNodesPopoverMenuOperationList = ({ setCurrentComponent({ componentName: newTriggerNodeData.componentName, - notes: newTriggerNodeData.description, + description: newTriggerNodeData.description, + label: newTriggerNodeData.label, operationName: newTriggerNodeData.operationName, - title: newTriggerNodeData.label, type: newTriggerNodeData.type, workflowNodeName: newTriggerNodeData.workflowNodeName ?? 'trigger_1', }); diff --git a/client/src/pages/platform/workflow-editor/components/node-details-tabs/DescriptionTab.tsx b/client/src/pages/platform/workflow-editor/components/node-details-tabs/DescriptionTab.tsx index dec5cb3b9e..d9da731f06 100644 --- a/client/src/pages/platform/workflow-editor/components/node-details-tabs/DescriptionTab.tsx +++ b/client/src/pages/platform/workflow-editor/components/node-details-tabs/DescriptionTab.tsx @@ -3,7 +3,7 @@ import {Label} from '@/components/ui/label'; import {Textarea} from '@/components/ui/textarea'; import useWorkflowDataStore from '@/pages/platform/workflow-editor/stores/useWorkflowDataStore'; import useWorkflowNodeDetailsPanelStore from '@/pages/platform/workflow-editor/stores/useWorkflowNodeDetailsPanelStore'; -import {NodeDataType, UpdateWorkflowMutationType} from '@/shared/types'; +import {ComponentType, UpdateWorkflowMutationType} from '@/shared/types'; import {useQueryClient} from '@tanstack/react-query'; import {ChangeEvent} from 'react'; import {useDebouncedCallback} from 'use-debounce'; @@ -16,16 +16,9 @@ const DescriptionTab = ({updateWorkflowMutation}: {updateWorkflowMutation: Updat const queryClient = useQueryClient(); - const componentData: NodeDataType = { - componentName: currentComponent!.componentName!, - description: currentComponent?.notes, - icon: currentNode?.icon, - label: currentComponent?.title, - name: currentNode!.workflowNodeName!, - operationName: currentComponent?.operationName, - trigger: !!currentNode?.trigger, - type: currentComponent?.type, - workflowNodeName: currentNode?.workflowNodeName, + const componentData: ComponentType = { + ...currentComponent!, + workflowNodeName: currentNode!.workflowNodeName, }; const handleLabelChange = useDebouncedCallback((event: ChangeEvent) => { @@ -34,11 +27,12 @@ const DescriptionTab = ({updateWorkflowMutation}: {updateWorkflowMutation: Updat } saveWorkflowDefinition({ - nodeData: {...componentData, label: event.target.value}, + decorative: true, + nodeData: {...currentComponent!, label: event.target.value, name: currentComponent.workflowNodeName}, onSuccess: () => setCurrentComponent({ ...currentComponent, - title: event.target.value, + label: event.target.value, }), queryClient, updateWorkflowMutation, @@ -52,11 +46,12 @@ const DescriptionTab = ({updateWorkflowMutation}: {updateWorkflowMutation: Updat } saveWorkflowDefinition({ - nodeData: {...componentData, description: event.target.value}, + decorative: true, + nodeData: {...componentData, description: event.target.value, name: currentComponent.workflowNodeName}, onSuccess: () => setCurrentComponent({ ...currentComponent, - notes: event.target.value, + description: event.target.value, }), queryClient, updateWorkflowMutation, @@ -70,7 +65,7 @@ const DescriptionTab = ({updateWorkflowMutation}: {updateWorkflowMutation: Updat void; @@ -32,6 +33,7 @@ interface SaveWorkflowDefinitionProps { export default async function saveWorkflowDefinition({ conditionId, + decorative, nodeData, nodeIndex, onSuccess, @@ -127,6 +129,7 @@ export default async function saveWorkflowDefinition({ if ( existingWorkflowTask && + !decorative && (!operationName || (existingWorkflowTask.parameters && JSON.stringify(existingWorkflowTask.parameters) === JSON.stringify(newTask.parameters))) && diff --git a/client/src/shared/types.ts b/client/src/shared/types.ts index 3d6e2e6848..736ae945f4 100644 --- a/client/src/shared/types.ts +++ b/client/src/shared/types.ts @@ -69,19 +69,18 @@ export type ComponentType = { // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: boolean; }; + label?: string; metadata?: { ui?: { condition?: string; dynamicPropertyTypes?: {[key: string]: string}; }; }; - notes?: string; operationName?: string; parameters?: { // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; }; - title?: string; type?: string; workflowNodeName: string; }; @@ -151,7 +150,7 @@ export type NodeType = { trigger?: boolean; type: string; version: number; - workflowNodeName?: string; + workflowNodeName: string; }; export type SubPropertyType = PropertyAllType & {custom: boolean};