function findCyclicReferencingDefinitions()

in generator/processors/helpers.ts [53:80]


function findCyclicReferencingDefinitions(refVertices: Record<string, Set<string>>, definitionName: string) {
  const visited = new Set<string>();
  const queue = [definitionName];

  const parentDefinitions = new Set<string>();

  while (queue.length > 0) {
    const current = queue.shift()!;
    if (visited.has(current)) {
      continue;
    }
    visited.add(current);

    if (!refVertices[current]) {
      continue;
    }

    for (const dependency of refVertices[current]) {
      if (dependency === definitionName) {
        parentDefinitions.add(current);
      }

      queue.push(dependency);
    }
  }

  return parentDefinitions;
}