import { DataTreeJSAction, ENTITY_TYPE, MetaArgs, } from "entities/DataTree/dataTreeFactory"; import { JSCollectionData } from "reducers/entityReducers/jsActionsReducer"; import { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory"; import { DependencyMap } from "utils/DynamicBindingUtils"; export const generateDataTreeJSAction = ( js: JSCollectionData, ): DataTreeJSAction => { const meta: Record = {}; const dynamicBindingPathList = []; const bindingPaths: Record = {}; const variableList: Record = {}; const variables = js.config.variables; const listVariables: Array = []; dynamicBindingPathList.push({ key: "body" }); const reg = /this\./g; const removeThisReference = js.config.body.replaceAll( reg, `${js.config.name}.`, ); bindingPaths["body"] = EvaluationSubstitutionType.SMART_SUBSTITUTE; if (variables) { for (let i = 0; i < variables.length; i++) { const variable = variables[i]; variableList[variable.name] = variable.value; listVariables.push(variable.name); } } const dependencyMap: DependencyMap = {}; dependencyMap["body"] = []; const actions = js.config.actions; if (actions) { for (let i = 0; i < actions.length; i++) { const action = actions[i]; meta[action.name] = { arguments: action.actionConfiguration.jsArguments, }; bindingPaths[action.name] = EvaluationSubstitutionType.SMART_SUBSTITUTE; dynamicBindingPathList.push({ key: action.name }); dependencyMap["body"].push(action.name); } } return { ...variableList, name: js.config.name, actionId: js.config.id, pluginType: js.config.pluginType, ENTITY_TYPE: ENTITY_TYPE.JSACTION, body: removeThisReference, meta: meta, bindingPaths: bindingPaths, dynamicBindingPathList: dynamicBindingPathList, variables: listVariables, dependencyMap: dependencyMap, }; };