src/server/pkg/dag/dag.go
func (d *DAG) Ancestors(id string, from []string) []string {
	seen := make(map[string]bool)
	for _, fromID := range from {
		seen[fromID] = true
	}
	return dfs(id, d.parents, seen)
}
func (d *DAG) Ancestors(id string, from []string) []string {
	seen := make(map[string]bool)
	for _, fromID := range from {
		seen[fromID] = true
	}
	return dfs(id, d.parents, seen)
}
func ( d * DAG ) Ancestors ( id string , from [ ] string ) [ ] string { seen := make ( map [ string ] bool ) for _ , fromID := range from { seen [ fromID ] = true } return dfs ( id , d . parents , seen ) }
// Ancestors returns a slice containing all ancestors of a node, 'id',
// in d which are a descendant of at least one of the nodes in 'from'.
Ancestors returns a slice containing all ancestors of a node id in d which are a descendant of at least one of the nodes in from .