process_children() — svelte Function Reference
Architecture documentation for the process_children() function in utils.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0["process_children()"] 74eddc85_a390_2aab_af5a_ef32b77d5430["utils.js"] 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0 -->|defined in| 74eddc85_a390_2aab_af5a_ef32b77d5430 018cf13b_00c1_1002_de36_76e71d0a0a5e["Fragment()"] 018cf13b_00c1_1002_de36_76e71d0a0a5e -->|calls| 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0 602abe50_d235_587e_7077_a4250fe9dc79["RegularElement()"] 602abe50_d235_587e_7077_a4250fe9dc79 -->|calls| 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0 2cc87ff4_8315_a5e3_6fa2_6ca8a78b161c["TitleElement()"] 2cc87ff4_8315_a5e3_6fa2_6ca8a78b161c -->|calls| 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0 d6dfd043_7103_f2c7_aab3_9660fb0a5f75["escape_html()"] 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0 -->|calls| d6dfd043_7103_f2c7_aab3_9660fb0a5f75 f58b3d9a_75d2_270c_fa96_1df0cdee1d8f["sanitize_template_string()"] 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0 -->|calls| f58b3d9a_75d2_270c_fa96_1df0cdee1d8f c5103d74_690b_5e58_b211_85c417500d79["is_async()"] 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0 -->|calls| c5103d74_690b_5e58_b211_85c417500d79 9cf014c4_f551_2661_0229_f990b01327ac["blockers()"] 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0 -->|calls| 9cf014c4_f551_2661_0229_f990b01327ac style 4ec029f0_bbf8_66de_0dbf_d15eef3e10a0 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js lines 36–106
export function process_children(nodes, { visit, state }) {
/** @type {Array<AST.Text | AST.Comment | AST.ExpressionTag>} */
let sequence = [];
function flush() {
if (sequence.length === 0) {
return;
}
let quasi = b.quasi('', false);
const quasis = [quasi];
/** @type {Expression[]} */
const expressions = [];
for (let i = 0; i < sequence.length; i++) {
const node = sequence[i];
if (node.type === 'Text' || node.type === 'Comment') {
quasi.value.cooked +=
node.type === 'Comment' ? `<!--${node.data}-->` : escape_html(node.data);
} else {
const evaluated = state.scope.evaluate(node.expression);
if (evaluated.is_known) {
quasi.value.cooked += escape_html((evaluated.value ?? '') + '');
} else {
expressions.push(b.call('$.escape', /** @type {Expression} */ (visit(node.expression))));
quasi = b.quasi('', i + 1 === sequence.length);
quasis.push(quasi);
}
}
}
for (const quasi of quasis) {
quasi.value.raw = sanitize_template_string(/** @type {string} */ (quasi.value.cooked));
}
state.template.push(b.template(quasis, expressions));
sequence = [];
}
for (const node of nodes) {
if (node.type === 'ExpressionTag' && node.metadata.expression.is_async()) {
flush();
const expression = /** @type {Expression} */ (visit(node.expression));
let call = b.call(
'$$renderer.push',
b.thunk(b.call('$.escape', expression), node.metadata.expression.has_await)
);
const blockers = node.metadata.expression.blockers();
if (blockers.elements.length > 0) {
call = b.call('$$renderer.async', blockers, b.arrow([b.id('$$renderer')], call));
}
state.template.push(b.stmt(call));
} else if (node.type === 'Text' || node.type === 'Comment' || node.type === 'ExpressionTag') {
sequence.push(node);
} else {
flush();
visit(node, { ...state });
}
}
flush();
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does process_children() do?
process_children() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js.
Where is process_children() defined?
process_children() is defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js at line 36.
What does process_children() call?
process_children() calls 4 function(s): blockers, escape_html, is_async, sanitize_template_string.
What calls process_children()?
process_children() is called by 3 function(s): Fragment, RegularElement, TitleElement.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free