36 lines
975 B
JavaScript
36 lines
975 B
JavaScript
const unwrapGroups = (stages) => {
|
|
return stages.map((stage) => {
|
|
const {
|
|
groups: { nodes: groups },
|
|
} = stage;
|
|
return { ...stage, groups };
|
|
});
|
|
};
|
|
|
|
const unwrapNodesWithName = (jobArray, prop, field = 'name') => {
|
|
return jobArray.map((job) => {
|
|
return { ...job, [prop]: job[prop].nodes.map((item) => item[field]) };
|
|
});
|
|
};
|
|
|
|
const unwrapJobWithNeeds = (denodedJobArray) => {
|
|
return unwrapNodesWithName(denodedJobArray, 'needs');
|
|
};
|
|
|
|
const unwrapStagesWithNeeds = (denodedStages) => {
|
|
const unwrappedNestedGroups = unwrapGroups(denodedStages);
|
|
|
|
const nodes = unwrappedNestedGroups.map((node) => {
|
|
const { groups } = node;
|
|
const groupsWithJobs = groups.map((group) => {
|
|
const jobs = unwrapJobWithNeeds(group.jobs.nodes);
|
|
return { ...group, jobs };
|
|
});
|
|
|
|
return { ...node, groups: groupsWithJobs };
|
|
});
|
|
|
|
return nodes;
|
|
};
|
|
|
|
export { unwrapGroups, unwrapNodesWithName, unwrapJobWithNeeds, unwrapStagesWithNeeds };
|