Home / File/ CallExpression.js — svelte Source File

CallExpression.js — svelte Source File

Architecture documentation for CallExpression.js, a javascript file in the svelte codebase. 9 imports, 1 dependents.

File javascript Compiler Transformer 9 imports 1 dependents 2 functions

Entity Profile

Dependency Diagram

graph LR
  c195d127_ca65_6260_2e2d_70c2cc9b25f5["CallExpression.js"]
  62f818c8_e890_17ed_5ec1_92f953d4a7a6["state.js"]
  c195d127_ca65_6260_2e2d_70c2cc9b25f5 --> 62f818c8_e890_17ed_5ec1_92f953d4a7a6
  7a7783f8_ffa6_0cc3_61b0_031882649535["is_ignored"]
  c195d127_ca65_6260_2e2d_70c2cc9b25f5 --> 7a7783f8_ffa6_0cc3_61b0_031882649535
  ee93d8a6_6fde_b1c1_e15b_3a4da5326305["scope.js"]
  c195d127_ca65_6260_2e2d_70c2cc9b25f5 --> ee93d8a6_6fde_b1c1_e15b_3a4da5326305
  bed91719_d047_2256_e199_ee875d5f49b9["get_rune"]
  c195d127_ca65_6260_2e2d_70c2cc9b25f5 --> bed91719_d047_2256_e199_ee875d5f49b9
  c518b20b_2355_7b11_4ac2_2d9bb5dcfb43["utils.js"]
  c195d127_ca65_6260_2e2d_70c2cc9b25f5 --> c518b20b_2355_7b11_4ac2_2d9bb5dcfb43
  88db3726_5740_3eb8_99fb_4b297fb19b24["should_proxy"]
  c195d127_ca65_6260_2e2d_70c2cc9b25f5 --> 88db3726_5740_3eb8_99fb_4b297fb19b24
  f3fad5a9_6b91_ed4f_9331_7f9fc18491c3["utils.js"]
  c195d127_ca65_6260_2e2d_70c2cc9b25f5 --> f3fad5a9_6b91_ed4f_9331_7f9fc18491c3
  57534fa7_7bfd_c029_75ae_4c5950d5e65c["get_inspect_args"]
  c195d127_ca65_6260_2e2d_70c2cc9b25f5 --> 57534fa7_7bfd_c029_75ae_4c5950d5e65c
  95c28355_f14c_c3cd_5a03_d5a53ca255bc["builders"]
  c195d127_ca65_6260_2e2d_70c2cc9b25f5 --> 95c28355_f14c_c3cd_5a03_d5a53ca255bc
  7665e008_f37d_b860_a594_f2539a66af4e["transform-client.js"]
  7665e008_f37d_b860_a594_f2539a66af4e --> c195d127_ca65_6260_2e2d_70c2cc9b25f5
  style c195d127_ca65_6260_2e2d_70c2cc9b25f5 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/** @import { CallExpression, Expression } from 'estree' */
/** @import { Context } from '../types' */
import { dev, is_ignored } from '../../../../state.js';
import * as b from '#compiler/builders';
import { get_rune } from '../../../scope.js';
import { should_proxy } from '../utils.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);

	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(
// ... (77 more lines)

Domain

Subdomains

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 2 function(s): CallExpression, transform_inspect_rune.
What does CallExpression.js depend on?
CallExpression.js imports 9 module(s): builders, get_inspect_args, get_rune, is_ignored, scope.js, should_proxy, state.js, utils.js, and 1 more.
What files import CallExpression.js?
CallExpression.js is imported by 1 file(s): transform-client.js.
Where is CallExpression.js in the architecture?
CallExpression.js is located at packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/3-transform/client/visitors).

Analyze Your Own Codebase

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

Try Supermodel Free