2021-09-08 17:32:22 +00:00
|
|
|
import {
|
|
|
|
|
DataTreeJSAction,
|
|
|
|
|
ENTITY_TYPE,
|
|
|
|
|
MetaArgs,
|
|
|
|
|
} from "entities/DataTree/dataTreeFactory";
|
|
|
|
|
import { JSCollectionData } from "reducers/entityReducers/jsActionsReducer";
|
|
|
|
|
import { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory";
|
2021-11-08 06:49:22 +00:00
|
|
|
import { DependencyMap } from "utils/DynamicBindingUtils";
|
2021-09-08 17:32:22 +00:00
|
|
|
|
|
|
|
|
export const generateDataTreeJSAction = (
|
|
|
|
|
js: JSCollectionData,
|
|
|
|
|
): DataTreeJSAction => {
|
|
|
|
|
const meta: Record<string, MetaArgs> = {};
|
|
|
|
|
const dynamicBindingPathList = [];
|
|
|
|
|
const bindingPaths: Record<string, EvaluationSubstitutionType> = {};
|
2021-11-08 06:49:22 +00:00
|
|
|
const variableList: Record<string, any> = {};
|
2021-09-08 17:32:22 +00:00
|
|
|
const variables = js.config.variables;
|
|
|
|
|
const listVariables: Array<string> = [];
|
2021-11-08 06:49:22 +00:00
|
|
|
dynamicBindingPathList.push({ key: "body" });
|
2021-11-16 08:42:31 +00:00
|
|
|
const reg = /this\./g;
|
|
|
|
|
const removeThisReference = js.config.body.replaceAll(
|
|
|
|
|
reg,
|
|
|
|
|
`${js.config.name}.`,
|
|
|
|
|
);
|
2021-11-08 06:49:22 +00:00
|
|
|
bindingPaths["body"] = EvaluationSubstitutionType.SMART_SUBSTITUTE;
|
2021-09-08 17:32:22 +00:00
|
|
|
if (variables) {
|
|
|
|
|
for (let i = 0; i < variables.length; i++) {
|
|
|
|
|
const variable = variables[i];
|
2021-11-08 06:49:22 +00:00
|
|
|
variableList[variable.name] = variable.value;
|
2021-09-08 17:32:22 +00:00
|
|
|
listVariables.push(variable.name);
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-11-08 06:49:22 +00:00
|
|
|
const dependencyMap: DependencyMap = {};
|
|
|
|
|
dependencyMap["body"] = [];
|
2021-09-08 17:32:22 +00:00
|
|
|
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 });
|
2021-11-08 06:49:22 +00:00
|
|
|
dependencyMap["body"].push(action.name);
|
2021-09-08 17:32:22 +00:00
|
|
|
}
|
|
|
|
|
}
|
2021-11-08 06:49:22 +00:00
|
|
|
return {
|
|
|
|
|
...variableList,
|
2021-09-08 17:32:22 +00:00
|
|
|
name: js.config.name,
|
|
|
|
|
actionId: js.config.id,
|
|
|
|
|
pluginType: js.config.pluginType,
|
|
|
|
|
ENTITY_TYPE: ENTITY_TYPE.JSACTION,
|
2021-11-16 08:42:31 +00:00
|
|
|
body: removeThisReference,
|
2021-09-08 17:32:22 +00:00
|
|
|
meta: meta,
|
|
|
|
|
bindingPaths: bindingPaths,
|
|
|
|
|
dynamicBindingPathList: dynamicBindingPathList,
|
|
|
|
|
variables: listVariables,
|
2021-11-08 06:49:22 +00:00
|
|
|
dependencyMap: dependencyMap,
|
2021-09-08 17:32:22 +00:00
|
|
|
};
|
|
|
|
|
};
|