File size: 830 Bytes
aec3094 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import type { IWorkflowBase } from 'n8n-workflow';
import type { Risk } from '@/security-audit/types';
type Node = IWorkflowBase['nodes'][number];
export const toFlaggedNode = ({ node, workflow }: { node: Node; workflow: IWorkflowBase }) => ({
kind: 'node' as const,
workflowId: workflow.id,
workflowName: workflow.name,
nodeId: node.id,
nodeName: node.name,
nodeType: node.type,
});
export const toReportTitle = (riskCategory: Risk.Category) =>
riskCategory.charAt(0).toUpperCase() + riskCategory.slice(1) + ' Risk Report';
export function getNodeTypes(workflows: IWorkflowBase[], test: (element: Node) => boolean) {
return workflows.reduce<Risk.NodeLocation[]>((acc, workflow) => {
workflow.nodes.forEach((node) => {
if (test(node)) acc.push(toFlaggedNode({ node, workflow }));
});
return acc;
}, []);
}
|