Home / Function/ check_graph_for_cycles() — svelte Function Reference

check_graph_for_cycles() — svelte Function Reference

Architecture documentation for the check_graph_for_cycles() function in check_graph_for_cycles.js from the svelte codebase.

Entity Profile

Dependency Diagram

graph TD
  d733cb1e_c294_8865_008a_cc79d441b336["check_graph_for_cycles()"]
  0033223e_723b_4eb4_cdb3_607c6df9a36c["check_graph_for_cycles.js"]
  d733cb1e_c294_8865_008a_cc79d441b336 -->|defined in| 0033223e_723b_4eb4_cdb3_607c6df9a36c
  40d21ab4_2485_8cf0_6b2b_9513cc687b32["order_reactive_statements()"]
  40d21ab4_2485_8cf0_6b2b_9513cc687b32 -->|calls| d733cb1e_c294_8865_008a_cc79d441b336
  1fda09d5_590d_7925_9231_ec17cf081e87["sort_const_tags()"]
  1fda09d5_590d_7925_9231_ec17cf081e87 -->|calls| d733cb1e_c294_8865_008a_cc79d441b336
  style d733cb1e_c294_8865_008a_cc79d441b336 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/2-analyze/utils/check_graph_for_cycles.js lines 6–47

export default function check_graph_for_cycles(edges) {
	/** @type {Map<T, T[]>} */
	const graph = edges.reduce((g, edge) => {
		const [u, v] = edge;
		if (!g.has(u)) g.set(u, []);
		if (!g.has(v)) g.set(v, []);
		g.get(u).push(v);
		return g;
	}, new Map());

	const visited = new Set();
	/** @type {Set<T>} */
	const on_stack = new Set();
	/** @type {Array<Array<T>>} */
	const cycles = [];

	/**
	 * @param {T} v
	 */
	function visit(v) {
		visited.add(v);
		on_stack.add(v);

		graph.get(v)?.forEach((w) => {
			if (!visited.has(w)) {
				visit(w);
			} else if (on_stack.has(w)) {
				cycles.push([...on_stack, w]);
			}
		});

		on_stack.delete(v);
	}

	graph.forEach((_, v) => {
		if (!visited.has(v)) {
			visit(v);
		}
	});

	return cycles[0];
}

Domain

Subdomains

Frequently Asked Questions

What does check_graph_for_cycles() do?
check_graph_for_cycles() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/2-analyze/utils/check_graph_for_cycles.js.
Where is check_graph_for_cycles() defined?
check_graph_for_cycles() is defined in packages/svelte/src/compiler/phases/2-analyze/utils/check_graph_for_cycles.js at line 6.
What calls check_graph_for_cycles()?
check_graph_for_cycles() is called by 2 function(s): order_reactive_statements, sort_const_tags.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free