Total Complexity | 1 |
Complexity/F | 1 |
Lines of Code | 17 |
Function Count | 1 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | import { TreeNode } from '../components/types'; |
||
2 | |||
3 | export interface TreeStructure { |
||
4 | name: string; |
||
5 | children?: TreeStructure[]; |
||
6 | } |
||
7 | |||
8 | type TreeNodeWithVisitedFlag = TreeNode & { isVisited?: boolean }; |
||
9 | |||
10 | export function mapNodeToTreeStructure(node: TreeNodeWithVisitedFlag, linksType: 'consumers' | 'providers'): TreeStructure { |
||
11 | node.isVisited = true; |
||
12 | const unvisitedLinks = node[linksType].filter((linkedNode: TreeNodeWithVisitedFlag) => !linkedNode.isVisited && linkedNode[linksType]); |
||
13 | const children = unvisitedLinks.map(nestedNode => mapNodeToTreeStructure(nestedNode, linksType)); |
||
14 | node.isVisited = undefined; |
||
15 | return { name: node.name, children }; |
||
16 | } |
||
17 |