Home / Function/ AwaitExpression() — svelte Function Reference

AwaitExpression() — svelte Function Reference

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

Entity Profile

Dependency Diagram

graph TD
  8faf0d70_7e56_5e11_3d46_3702b9634650["AwaitExpression()"]
  c9c24023_1004_2023_0ff3_88c290127328["AwaitExpression.js"]
  8faf0d70_7e56_5e11_3d46_3702b9634650 -->|defined in| c9c24023_1004_2023_0ff3_88c290127328
  5e732e1e_1b77_e0f7_fe3b_d9981bd8ce48["is_reactive_expression()"]
  8faf0d70_7e56_5e11_3d46_3702b9634650 -->|calls| 5e732e1e_1b77_e0f7_fe3b_d9981bd8ce48
  cb97c605_896b_4e95_232b_b0e0c881e32e["is_last_evaluated_expression()"]
  8faf0d70_7e56_5e11_3d46_3702b9634650 -->|calls| cb97c605_896b_4e95_232b_b0e0c881e32e
  0900de7c_eb74_d304_a146_49ce6e132173["experimental_async()"]
  8faf0d70_7e56_5e11_3d46_3702b9634650 -->|calls| 0900de7c_eb74_d304_a146_49ce6e132173
  0f7e2c73_dc52_8074_75ff_cc7db8f7b1ed["legacy_await_invalid()"]
  8faf0d70_7e56_5e11_3d46_3702b9634650 -->|calls| 0f7e2c73_dc52_8074_75ff_cc7db8f7b1ed
  style 8faf0d70_7e56_5e11_3d46_3702b9634650 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitExpression.js lines 10–45

export function AwaitExpression(node, context) {
	const tla = context.state.ast_type === 'instance' && context.state.function_depth === 1;

	// preserve context for awaits that precede other expressions in template or `$derived(...)`
	if (
		is_reactive_expression(
			context.path,
			context.state.derived_function_depth === context.state.function_depth
		) &&
		!is_last_evaluated_expression(context.path, node)
	) {
		context.state.analysis.pickled_awaits.add(node);
	}

	let suspend = tla;

	if (context.state.expression) {
		context.state.expression.has_await = true;

		suspend = true;
	}

	// disallow top-level `await` or `await` in template expressions
	// unless a) in runes mode and b) opted into `experimental.async`
	if (suspend) {
		if (!context.state.options.experimental.async) {
			e.experimental_async(node);
		}

		if (!context.state.analysis.runes) {
			e.legacy_await_invalid(node);
		}
	}

	context.next();
}

Domain

Subdomains

Frequently Asked Questions

What does AwaitExpression() do?
AwaitExpression() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitExpression.js.
Where is AwaitExpression() defined?
AwaitExpression() is defined in packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitExpression.js at line 10.
What does AwaitExpression() call?
AwaitExpression() calls 4 function(s): experimental_async, is_last_evaluated_expression, is_reactive_expression, legacy_await_invalid.

Analyze Your Own Codebase

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

Try Supermodel Free