Home / Function/ is_pure() — svelte Function Reference

is_pure() — svelte Function Reference

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

Function javascript Compiler Transformer calls 2 called by 3

Entity Profile

Dependency Diagram

graph TD
  3aac8d0a_5cc9_78ed_97ef_1c2a43db9e18["is_pure()"]
  bf0d8f1b_17da_970d_bf44_fbcf099d5371["utils.js"]
  3aac8d0a_5cc9_78ed_97ef_1c2a43db9e18 -->|defined in| bf0d8f1b_17da_970d_bf44_fbcf099d5371
  f847bd70_7e16_ed37_5fde_c34cd0ce1d43["CallExpression()"]
  f847bd70_7e16_ed37_5fde_c34cd0ce1d43 -->|calls| 3aac8d0a_5cc9_78ed_97ef_1c2a43db9e18
  4123505d_2086_d0a0_2e0e_a28cc51de65e["MemberExpression()"]
  4123505d_2086_d0a0_2e0e_a28cc51de65e -->|calls| 3aac8d0a_5cc9_78ed_97ef_1c2a43db9e18
  21603029_b20e_024d_98dd_0a64782947e1["TaggedTemplateExpression()"]
  21603029_b20e_024d_98dd_0a64782947e1 -->|calls| 3aac8d0a_5cc9_78ed_97ef_1c2a43db9e18
  bed91719_d047_2256_e199_ee875d5f49b9["get_rune()"]
  3aac8d0a_5cc9_78ed_97ef_1c2a43db9e18 -->|calls| bed91719_d047_2256_e199_ee875d5f49b9
  627dc2f8_4dbc_5bb1_8f54_cee503e17098["get()"]
  3aac8d0a_5cc9_78ed_97ef_1c2a43db9e18 -->|calls| 627dc2f8_4dbc_5bb1_8f54_cee503e17098
  style 3aac8d0a_5cc9_78ed_97ef_1c2a43db9e18 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js lines 202–244

export function is_pure(node, context) {
	if (node.type === 'Literal') {
		return true;
	}

	if (node.type === 'CallExpression') {
		if (!is_pure(node.callee, context)) {
			return false;
		}
		for (let arg of node.arguments) {
			if (!is_pure(arg.type === 'SpreadElement' ? arg.argument : arg, context)) {
				return false;
			}
		}
		return true;
	}

	if (node.type !== 'Identifier' && node.type !== 'MemberExpression') {
		return false;
	}

	if (get_rune(b.call(node), context.state.scope) === '$effect.tracking') {
		return false;
	}

	/** @type {Expression | Super | null} */
	let left = node;
	while (left.type === 'MemberExpression') {
		left = left.object;
	}

	if (!left) return false;

	if (left.type === 'Identifier') {
		const binding = context.state.scope.get(left.name);
		if (binding === null) return true; // globals are assumed to be safe
	} else if (is_pure(left, context)) {
		return true;
	}

	// TODO add more cases (safe Svelte imports, etc)
	return false;
}

Domain

Subdomains

Frequently Asked Questions

What does is_pure() do?
is_pure() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js.
Where is is_pure() defined?
is_pure() is defined in packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js at line 202.
What does is_pure() call?
is_pure() calls 2 function(s): get, get_rune.
What calls is_pure()?
is_pure() is called by 3 function(s): CallExpression, MemberExpression, TaggedTemplateExpression.

Analyze Your Own Codebase

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

Try Supermodel Free