getTransitiveDependents method

Map<String, List<String>> getTransitiveDependents(
  1. String targetId
)

Implementation

Map<String, List<String>> getTransitiveDependents(String targetId) {
  final Map<String, List<String>> result = {};
  final Set<String> visited = {targetId};

  void dfs(String currentId, List<String> currentChain) {
    final dependents = _dependents[currentId] ?? {};
    for (final dep in dependents) {
      if (!visited.contains(dep)) {
        visited.add(dep);
        final newChain = [...currentChain, dep];
        result[dep] = newChain;
        dfs(dep, newChain);
      }
    }
  }

  dfs(targetId, [targetId]);
  return result;
}