import { IDataObject, INodeProperties } from 'n8n-workflow'; import { groups, } from './Json/Groups'; import { tools, } from './Json/Tools'; function capitalize(str: string): string { if (!str) { return ''; } else { return str.charAt(0).toUpperCase() + str.slice(1); } } const operations = []; for (const group of (groups as IDataObject).groups as IDataObject[]) { const item = { displayName: 'Operation', name: 'tool', type: 'options', description: 'The Operation to consume.', displayOptions: { show: { group: [ group.name, ], }, }, default: '', options: [], }; const options = []; for (const tool of (tools as IDataObject).processors as IDataObject[]) { if (tool.g === group.name) { const link = 'https://app.uproc.io/#/tools/processor/' + (tool.k as string).replace(/([A-Z]+)/g, '-$1').toLowerCase().replace('-', '/').replace('-', '/'); const option = { name: tool.d as string, value: tool.k, description: (tool.ed as string) + ` Info`, }; options.push(option); } } //Tool item.options = (options.sort((a, b) => (a.name > b.name) ? 1 : -1) as any); // tslint:disable-line:no-any item.default = (options[0].value as string); operations.push(item); } export const toolOperations = operations as INodeProperties[]; let parameters = []; //all tools for (const tool of (tools as IDataObject).processors as IDataObject[]) { //all parameters in tool for (const param of (tool as IDataObject).p as IDataObject[]) { const displayName = param.n as string; const capitalizedDisplayName = capitalize(displayName.replace(/_/g, ' ')); const description = `The "${capitalizedDisplayName}" value to use as a parameter for this Operation`; const parameter = { displayName: capitalizedDisplayName, name: param.n, type: param.t, default: '', placeholder: param.p, required: param.r, options: param.o, displayOptions: { show: { group: [ //@ts-ignore tool.g, ], tool: [ tool.k, ], }, }, description: JSON.parse(JSON.stringify(description)), }; let modifiedParam = null; //Check if param exists previously for (const currentParam of parameters) { //Get old param in parameters array if (currentParam.name === param.n) { modifiedParam = currentParam; } } //if exists, other wise if (modifiedParam) { //Assign new group and tool //@ts-ignore modifiedParam.displayOptions.show.group.push(tool.g); modifiedParam.displayOptions.show.tool.push(tool.k); //build new array const newParameters = []; for (const currentParam of parameters) { //Get old param in parameters array if (currentParam.name === modifiedParam.name) { newParameters.push(modifiedParam); } else { newParameters.push(currentParam); } } parameters = JSON.parse(JSON.stringify(newParameters)); } else { parameters.push(parameter); } } } export const toolParameters = parameters as INodeProperties[];