pub fn transitive_closure<'a, 'b, I: IntoIterator<Item = &'b PackageNode>>(
        &'a self,
        nodes: I,
    ) -> HashSet<&'a PackageNode> {
        turborepo_graph_utils::transitive_closure(
            &self.graph,
            nodes
                .into_iter()
                .flat_map(|node| self.node_lookup.get(node).cloned()),
            petgraph::Direction::Outgoing,
        )
    }
Returns the transitive closure of the given nodes in the package
graph. Note that this includes the nodes themselves. If you want just
the dependencies, or the dependents, use `dependencies` or `ancestors`.
Alternatively, if you need just direct dependents, use
`immediate_dependents`.
crates/turborepo-repository/src/package_graph/mod.rs