build_template_chunk() — svelte Function Reference
Architecture documentation for the build_template_chunk() function in utils.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD f3280f06_553d_66c3_8ca2_c3c36dcdda64["build_template_chunk()"] d04d7971_88df_542d_dd4f_26170ce6f581["utils.js"] f3280f06_553d_66c3_8ca2_c3c36dcdda64 -->|defined in| d04d7971_88df_542d_dd4f_26170ce6f581 1e3b81f2_cd53_e5a5_0140_a9af38facf99["RegularElement()"] 1e3b81f2_cd53_e5a5_0140_a9af38facf99 -->|calls| f3280f06_553d_66c3_8ca2_c3c36dcdda64 fc471bd0_caed_35be_8561_9d55a2505105["TitleElement()"] fc471bd0_caed_35be_8561_9d55a2505105 -->|calls| f3280f06_553d_66c3_8ca2_c3c36dcdda64 e31bc2c2_91c1_b9a9_f78a_2832bddce6c5["build_attribute_value()"] e31bc2c2_91c1_b9a9_f78a_2832bddce6c5 -->|calls| f3280f06_553d_66c3_8ca2_c3c36dcdda64 b52df138_fa9e_4e12_86dd_c455789e68c1["process_children()"] b52df138_fa9e_4e12_86dd_c455789e68c1 -->|calls| f3280f06_553d_66c3_8ca2_c3c36dcdda64 5ff7d39f_78e8_c057_8c8e_279f6e72149e["add()"] f3280f06_553d_66c3_8ca2_c3c36dcdda64 -->|calls| 5ff7d39f_78e8_c057_8c8e_279f6e72149e 66243dec_e2be_a66d_3992_3ea42cf964b5["build_expression()"] f3280f06_553d_66c3_8ca2_c3c36dcdda64 -->|calls| 66243dec_e2be_a66d_3992_3ea42cf964b5 13e926d4_7098_edcb_143e_3e3e944df9b6["has_blockers()"] f3280f06_553d_66c3_8ca2_c3c36dcdda64 -->|calls| 13e926d4_7098_edcb_143e_3e3e944df9b6 f58b3d9a_75d2_270c_fa96_1df0cdee1d8f["sanitize_template_string()"] f3280f06_553d_66c3_8ca2_c3c36dcdda64 -->|calls| f58b3d9a_75d2_270c_fa96_1df0cdee1d8f style f3280f06_553d_66c3_8ca2_c3c36dcdda64 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js lines 101–188
export function build_template_chunk(
values,
context,
state = context.state,
memoize = (value, metadata) => state.memoizer.add(value, metadata)
) {
/** @type {Expression[]} */
const expressions = [];
let quasi = b.quasi('');
const quasis = [quasi];
let has_state = false;
let has_await = false;
for (let i = 0; i < values.length; i++) {
const node = values[i];
if (node.type === 'Text') {
quasi.value.cooked += node.data;
} else if (node.expression.type === 'Literal') {
if (node.expression.value != null) {
quasi.value.cooked += node.expression.value + '';
}
} else if (
node.expression.type !== 'Identifier' ||
node.expression.name !== 'undefined' ||
state.scope.get('undefined')
) {
let value = memoize(
build_expression(context, node.expression, node.metadata.expression, state),
node.metadata.expression
);
const evaluated = state.scope.evaluate(value);
has_await ||= node.metadata.expression.has_await || node.metadata.expression.has_blockers();
has_state ||= has_await || (node.metadata.expression.has_state && !evaluated.is_known);
if (values.length === 1) {
// If we have a single expression, then pass that in directly to possibly avoid doing
// extra work in the template_effect (instead we do the work in set_text).
if (evaluated.is_known) {
value = b.literal((evaluated.value ?? '') + '');
}
return { value, has_state };
}
if (
value.type === 'LogicalExpression' &&
value.right.type === 'Literal' &&
(value.operator === '??' || value.operator === '||')
) {
// `foo ?? null` -=> `foo ?? ''`
// otherwise leave the expression untouched
if (value.right.value === null) {
value = { ...value, right: b.literal('') };
}
}
if (evaluated.is_known) {
quasi.value.cooked += (evaluated.value ?? '') + '';
} else {
if (!evaluated.is_defined) {
// add `?? ''` where necessary
value = b.logical('??', value, b.literal(''));
}
expressions.push(value);
quasi = b.quasi('', i + 1 === values.length);
quasis.push(quasi);
}
}
}
for (const quasi of quasis) {
quasi.value.raw = sanitize_template_string(/** @type {string} */ (quasi.value.cooked));
}
Domain
Subdomains
Source
Frequently Asked Questions
What does build_template_chunk() do?
build_template_chunk() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js.
Where is build_template_chunk() defined?
build_template_chunk() is defined in packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js at line 101.
What does build_template_chunk() call?
build_template_chunk() calls 4 function(s): add, build_expression, has_blockers, sanitize_template_string.
What calls build_template_chunk()?
build_template_chunk() is called by 4 function(s): RegularElement, TitleElement, build_attribute_value, process_children.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free