All files / src/semantic type-graph.ts

66.66% Statements 6/9
25% Branches 1/4
100% Functions 1/1
75% Lines 6/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27                      23x   23x 39x 57x 57x               23x    
import type { DependencyGraph } from '../types';
 
/**
 * Extract type dependencies from AST exports to build a type-based relationship graph.
 *
 * @param graph - The dependency graph to analyze.
 * @returns Map of type reference names to sets of files that consume or export them.
 */
export function buildTypeGraph(
  graph: DependencyGraph
): Map<string, Set<string>> {
  const typeGraph = new Map<string, Set<string>>();
 
  for (const [file, node] of graph.nodes) {
    for (const exp of node.exports) {
      Eif (exp.typeReferences) {
        for (const typeRef of exp.typeReferences) {
          if (!typeGraph.has(typeRef)) typeGraph.set(typeRef, new Set());
          typeGraph.get(typeRef)!.add(file);
        }
      }
    }
  }
 
  return typeGraph;
}