| 148 | |
| 149 | // Function to recursively organize projects |
| 150 | const organizeProjects = (projectId: string): ProjectDefinition[] => { |
| 151 | const project = projectMap.get(projectId) |
| 152 | if (!project) return [] |
| 153 | |
| 154 | const children = Array.from(projectMap.values()) |
| 155 | .filter((p) => p.parentProjectId === projectId) |
| 156 | // just to make this deterministic for testing! |
| 157 | .sort((a, b) => b.id.localeCompare(a.id)) |
| 158 | |
| 159 | const organizedChildren = children |
| 160 | .map((child) => organizeProjects(child.id)) |
| 161 | .flat() |
| 162 | |
| 163 | return [project, ...organizedChildren] |
| 164 | } |
| 165 | |
| 166 | const rootProjects = input |
| 167 | .filter((project) => !project.parentProjectId) |