Home / Function/ CallExpression() — svelte Function Reference

CallExpression() — svelte Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  4c3ed846_8317_e69b_ac65_659bd7d7be87["CallExpression()"]
  e39bc93c_3dfb_80d0_0493_0f19a0a6ec11["CallExpression.js"]
  4c3ed846_8317_e69b_ac65_659bd7d7be87 -->|defined in| e39bc93c_3dfb_80d0_0493_0f19a0a6ec11
  02f6530e_fa56_47b3_4872_0c19988f7dba["get_rune()"]
  4c3ed846_8317_e69b_ac65_659bd7d7be87 -->|calls| 02f6530e_fa56_47b3_4872_0c19988f7dba
  4e774bfb_7de8_5b02_4538_ffa59dec20ed["should_proxy()"]
  4c3ed846_8317_e69b_ac65_659bd7d7be87 -->|calls| 4e774bfb_7de8_5b02_4538_ffa59dec20ed
  0c80bee0_5da1_d62c_3f0b_f083fa97201a["is_ignored()"]
  4c3ed846_8317_e69b_ac65_659bd7d7be87 -->|calls| 0c80bee0_5da1_d62c_3f0b_f083fa97201a
  5fe1e63b_2e15_33ec_6778_161cc2afe51f["transform_inspect_rune()"]
  4c3ed846_8317_e69b_ac65_659bd7d7be87 -->|calls| 5fe1e63b_2e15_33ec_6778_161cc2afe51f
  87886485_f7af_45a6_596d_7f22c5d05337["get()"]
  4c3ed846_8317_e69b_ac65_659bd7d7be87 -->|calls| 87886485_f7af_45a6_596d_7f22c5d05337
  d11a3de9_9bf1_c5eb_8886_73306d787b6e["evaluate()"]
  4c3ed846_8317_e69b_ac65_659bd7d7be87 -->|calls| d11a3de9_9bf1_c5eb_8886_73306d787b6e
  style 4c3ed846_8317_e69b_ac65_659bd7d7be87 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js lines 13–118

export function CallExpression(node, context) {
	const rune = get_rune(node, context.state.scope);

	switch (rune) {
		case '$host':
			return b.id('$$props.$$host');

		case '$effect.tracking':
			return b.call('$.effect_tracking');

		// transform state field assignments in constructors
		case '$state':
		case '$state.raw': {
			let arg = node.arguments[0];

			/** @type {Expression | undefined} */
			let value = undefined;

			if (arg) {
				value = /** @type {Expression} */ (context.visit(node.arguments[0]));

				if (
					rune === '$state' &&
					should_proxy(/** @type {Expression} */ (arg), context.state.scope)
				) {
					value = b.call('$.proxy', value);
				}
			}

			const callee = b.id('$.state', node.callee.loc);
			return b.call(callee, value);
		}

		case '$derived':
		case '$derived.by': {
			let fn = /** @type {Expression} */ (context.visit(node.arguments[0]));

			return b.call('$.derived', rune === '$derived' ? b.thunk(fn) : fn);
		}

		case '$state.eager':
			return b.call(
				'$.eager',
				b.thunk(/** @type {Expression} */ (context.visit(node.arguments[0])))
			);

		case '$state.snapshot':
			return b.call(
				'$.snapshot',
				/** @type {Expression} */ (context.visit(node.arguments[0])),
				is_ignored(node, 'state_snapshot_uncloneable') && b.true
			);

		case '$effect':
		case '$effect.pre': {
			const callee = rune === '$effect' ? '$.user_effect' : '$.user_pre_effect';
			const func = /** @type {Expression} */ (context.visit(node.arguments[0]));

			const expr = b.call(callee, /** @type {Expression} */ (func));
			expr.callee.loc = node.callee.loc; // ensure correct mapping

			return expr;
		}

		case '$effect.root':
			return b.call(
				'$.effect_root',
				.../** @type {Expression[]} */ (node.arguments.map((arg) => context.visit(arg)))
			);

		case '$effect.pending':
			return b.call('$.eager', b.thunk(b.call('$.pending')));

		case '$inspect':
		case '$inspect().with':
			return transform_inspect_rune(rune, node, context);
	}

	if (
		dev &&
		node.callee.type === 'MemberExpression' &&

Domain

Subdomains

Frequently Asked Questions

What does CallExpression() do?
CallExpression() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js.
Where is CallExpression() defined?
CallExpression() is defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js at line 13.
What does CallExpression() call?
CallExpression() calls 6 function(s): evaluate, get, get_rune, is_ignored, should_proxy, transform_inspect_rune.

Analyze Your Own Codebase

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

Try Supermodel Free