CallExpression.js — svelte Source File
Architecture documentation for CallExpression.js, a javascript file in the svelte codebase. 7 imports, 1 dependents.
Entity Profile
Dependency Diagram
graph LR 9b602c9d_5997_b07e_dd5c_2413153d525f["CallExpression.js"] 62f818c8_e890_17ed_5ec1_92f953d4a7a6["state.js"] 9b602c9d_5997_b07e_dd5c_2413153d525f --> 62f818c8_e890_17ed_5ec1_92f953d4a7a6 7a7783f8_ffa6_0cc3_61b0_031882649535["is_ignored"] 9b602c9d_5997_b07e_dd5c_2413153d525f --> 7a7783f8_ffa6_0cc3_61b0_031882649535 ee93d8a6_6fde_b1c1_e15b_3a4da5326305["scope.js"] 9b602c9d_5997_b07e_dd5c_2413153d525f --> ee93d8a6_6fde_b1c1_e15b_3a4da5326305 bed91719_d047_2256_e199_ee875d5f49b9["get_rune"] 9b602c9d_5997_b07e_dd5c_2413153d525f --> bed91719_d047_2256_e199_ee875d5f49b9 f3fad5a9_6b91_ed4f_9331_7f9fc18491c3["utils.js"] 9b602c9d_5997_b07e_dd5c_2413153d525f --> f3fad5a9_6b91_ed4f_9331_7f9fc18491c3 57534fa7_7bfd_c029_75ae_4c5950d5e65c["get_inspect_args"] 9b602c9d_5997_b07e_dd5c_2413153d525f --> 57534fa7_7bfd_c029_75ae_4c5950d5e65c 95c28355_f14c_c3cd_5a03_d5a53ca255bc["builders"] 9b602c9d_5997_b07e_dd5c_2413153d525f --> 95c28355_f14c_c3cd_5a03_d5a53ca255bc 86cf8685_38fa_3a1c_9b81_21c452968289["transform-server.js"] 86cf8685_38fa_3a1c_9b81_21c452968289 --> 9b602c9d_5997_b07e_dd5c_2413153d525f style 9b602c9d_5997_b07e_dd5c_2413153d525f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @import { CallExpression, Expression, MemberExpression } from 'estree' */
/** @import { Context } from '../types.js' */
import { dev, is_ignored } from '../../../../state.js';
import * as b from '#compiler/builders';
import { get_rune } from '../../../scope.js';
import { get_inspect_args } from '../../utils.js';
/**
* @param {CallExpression} node
* @param {Context} context
*/
export function CallExpression(node, context) {
const rune = get_rune(node, context.state.scope);
if (
rune === '$host' ||
rune === '$effect' ||
rune === '$effect.pre' ||
rune === '$inspect.trace'
) {
// we will only encounter `$effect` etc if they are top-level statements in the <script>
// following an `await`, otherwise they are removed by the ExpressionStatement visitor
return b.void0;
}
if (rune === '$effect.tracking') {
return b.false;
}
if (rune === '$effect.root') {
// ignore $effect.root() calls, just return a noop which mimics the cleanup function
return b.arrow([], b.block([]));
}
if (rune === '$effect.pending') {
return b.literal(0);
}
if (rune === '$state' || rune === '$state.raw') {
return node.arguments[0] ? context.visit(node.arguments[0]) : b.void0;
}
if (rune === '$derived' || rune === '$derived.by') {
const fn = /** @type {Expression} */ (context.visit(node.arguments[0]));
return b.call('$.derived', rune === '$derived' ? b.thunk(fn) : fn);
}
if (rune === '$state.eager') {
return node.arguments[0];
}
if (rune === '$state.snapshot') {
return b.call(
'$.snapshot',
/** @type {Expression} */ (context.visit(node.arguments[0])),
is_ignored(node, 'state_snapshot_uncloneable') && b.true
);
}
if (rune === '$inspect' || rune === '$inspect().with') {
if (!dev) return b.empty;
const { args, inspector } = get_inspect_args(rune, node, context.visit);
return rune === '$inspect'
? b.call(inspector, b.literal('$inspect('), ...args, b.literal(')'))
: b.call(inspector, b.literal('init'), ...args);
}
context.next();
}
Domain
Subdomains
Functions
Dependencies
Source
Frequently Asked Questions
What does CallExpression.js do?
CallExpression.js is a source file in the svelte codebase, written in javascript. It belongs to the Compiler domain, Transformer subdomain.
What functions are defined in CallExpression.js?
CallExpression.js defines 1 function(s): CallExpression.
What does CallExpression.js depend on?
CallExpression.js imports 7 module(s): builders, get_inspect_args, get_rune, is_ignored, scope.js, state.js, utils.js.
What files import CallExpression.js?
CallExpression.js is imported by 1 file(s): transform-server.js.
Where is CallExpression.js in the architecture?
CallExpression.js is located at packages/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/3-transform/server/visitors).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free