eslint-plugin-perfectionist
Version:
ESLint plugin for sorting various data such as objects, imports, types, enums, JSX props, etc.
47 lines (46 loc) • 1.33 kB
JavaScript
/**
* Populate sorting node groups based on the dependencies matrix.
*
* @param params - The parameters object.
* @param params.dependenciesBySortingNode - A map of sorting nodes to their
* dependencies.
* @param params.sortingNodeGroups - An array of sorting node groups.
* @returns An array of sorting node groups with their dependencies.
*/
function populateSortingNodeGroupsWithDependencies({
dependenciesBySortingNode,
sortingNodeGroups,
}) {
return sortingNodeGroups.map(sortingNodes =>
computeSortingNodeGroupWithDependencies({
dependenciesBySortingNode,
sortingNodes,
}),
)
}
function computeSortingNodeGroupWithDependencies({
dependenciesBySortingNode,
sortingNodes,
}) {
return sortingNodes.map(computeSortingNodeWithDependencies)
function computeSortingNodeWithDependencies(sortingNode) {
return {
...sortingNode,
dependencies: computeSortingNodeDependencies({
dependenciesBySortingNode,
sortingNode,
}),
}
}
}
function computeSortingNodeDependencies({
dependenciesBySortingNode,
sortingNode,
}) {
let dependencies = dependenciesBySortingNode.get(sortingNode)
if (!dependencies) {
return []
}
return dependencies.flatMap(({ dependencyNames }) => dependencyNames)
}
export { populateSortingNodeGroupsWithDependencies }