getTransitiveDependents method

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

Implementation

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

  void dfs(String currentPath, List<String> currentPathTrace) {
    final direct = _importedBy[currentPath] ?? const {};
    for (final dependent in direct) {
      if (!visited.contains(dependent)) {
        visited.add(dependent);
        final newTrace = [...currentPathTrace, dependent];
        dependentsWithTrace[dependent] = newTrace;
        dfs(dependent, newTrace);
      }
    }
  }

  dfs(startPath, [startPath]);
  return dependentsWithTrace;
}