AwaitBlock() — svelte Function Reference
Architecture documentation for the AwaitBlock() function in AwaitBlock.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD 49a90e76_8bb2_2524_8ee4_abb5bc5df675["AwaitBlock()"] 844ad472_83ed_856d_0120_d6773152f6bb["AwaitBlock.js"] 49a90e76_8bb2_2524_8ee4_abb5bc5df675 -->|defined in| 844ad472_83ed_856d_0120_d6773152f6bb 66243dec_e2be_a66d_3992_3ea42cf964b5["build_expression()"] 49a90e76_8bb2_2524_8ee4_abb5bc5df675 -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5 ee8b2bed_04ff_215a_150b_219fe7b6d684["create_derived_block_argument()"] 49a90e76_8bb2_2524_8ee4_abb5bc5df675 -->|calls| ee8b2bed_04ff_215a_150b_219fe7b6d684 575bfb79_8777_5076_eda3_be015882482a["add_svelte_meta()"] 49a90e76_8bb2_2524_8ee4_abb5bc5df675 -->|calls| 575bfb79_8777_5076_eda3_be015882482a c8d80c9d_ab6c_13c0_c85e_a9b120f82f45["blockers()"] 49a90e76_8bb2_2524_8ee4_abb5bc5df675 -->|calls| c8d80c9d_ab6c_13c0_c85e_a9b120f82f45 style 49a90e76_8bb2_2524_8ee4_abb5bc5df675 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js lines 14–89
export function AwaitBlock(node, context) {
context.state.template.push_comment();
// Visit {#await <expression>} first to ensure that scopes are in the correct order
const expression = b.thunk(
build_expression(context, node.expression, node.metadata.expression),
node.metadata.expression.has_await
);
let then_block;
let catch_block;
if (node.then) {
const then_context = {
...context,
state: { ...context.state, transform: { ...context.state.transform } }
};
const argument = node.value && create_derived_block_argument(node.value, then_context);
/** @type {Pattern[]} */
const args = [b.id('$$anchor')];
if (argument) args.push(argument.id);
const declarations = argument?.declarations ?? [];
const block = /** @type {BlockStatement} */ (then_context.visit(node.then, then_context.state));
then_block = b.arrow(args, b.block([...declarations, ...block.body]));
}
if (node.catch) {
const catch_context = { ...context, state: { ...context.state } };
const argument = node.error && create_derived_block_argument(node.error, catch_context);
/** @type {Pattern[]} */
const args = [b.id('$$anchor')];
if (argument) args.push(argument.id);
const declarations = argument?.declarations ?? [];
const block = /** @type {BlockStatement} */ (
catch_context.visit(node.catch, catch_context.state)
);
catch_block = b.arrow(args, b.block([...declarations, ...block.body]));
}
const stmt = add_svelte_meta(
b.call(
'$.await',
context.state.node,
expression,
node.pending
? b.arrow([b.id('$$anchor')], /** @type {BlockStatement} */ (context.visit(node.pending)))
: b.null,
then_block,
catch_block
),
node,
'await'
);
if (node.metadata.expression.has_blockers()) {
context.state.init.push(
b.stmt(
b.call(
'$.async',
context.state.node,
node.metadata.expression.blockers(),
b.array([]),
b.arrow([context.state.node], b.block([stmt]))
)
)
);
} else {
context.state.init.push(stmt);
}
}
Domain
Subdomains
Source
Frequently Asked Questions
What does AwaitBlock() do?
AwaitBlock() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js.
Where is AwaitBlock() defined?
AwaitBlock() is defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js at line 14.
What does AwaitBlock() call?
AwaitBlock() calls 4 function(s): add_svelte_meta, blockers, build_expression, create_derived_block_argument.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free