is_pure() — svelte Function Reference
Architecture documentation for the is_pure() function in utils.js from the svelte codebase.
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
Calls
Source
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