utils.js — svelte Source File
Architecture documentation for utils.js, a javascript file in the svelte codebase. 11 imports, 15 dependents.
Entity Profile
Dependency Diagram
graph LR 74eddc85_a390_2aab_af5a_ef32b77d5430["utils.js"] cb064307_faf7_de99_b8a6_9523086a7c01["escaping.js"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> cb064307_faf7_de99_b8a6_9523086a7c01 d6dfd043_7103_f2c7_aab3_9660fb0a5f75["escape_html"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> d6dfd043_7103_f2c7_aab3_9660fb0a5f75 bb0c9dd4_b592_cf45_1390_8cfbd8a288ec["hydration.js"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> bb0c9dd4_b592_cf45_1390_8cfbd8a288ec 4de7d612_97cf_465b_c57c_42e39253c605["sanitize_template_string.js"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> 4de7d612_97cf_465b_c57c_42e39253c605 f58b3d9a_75d2_270c_fa96_1df0cdee1d8f["sanitize_template_string"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> f58b3d9a_75d2_270c_fa96_1df0cdee1d8f ce051dbd_4cf1_f117_d66e_12cfa122de37["patterns.js"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> ce051dbd_4cf1_f117_d66e_12cfa122de37 0c5c28a7_226d_4e7c_e75e_0853c0a9fc2c["ast.js"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> 0c5c28a7_226d_4e7c_e75e_0853c0a9fc2c c5b1e5e6_49b7_ac9e_9572_7d6c11e99bc7["has_await_expression"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> c5b1e5e6_49b7_ac9e_9572_7d6c11e99bc7 bbca3d2a_42c8_b215_d3b5_5077ccaf0797["nodes.js"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> bbca3d2a_42c8_b215_d3b5_5077ccaf0797 6e00a8f3_2371_ecf1_5a93_296f787aca83["ExpressionMetadata"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> 6e00a8f3_2371_ecf1_5a93_296f787aca83 95c28355_f14c_c3cd_5a03_d5a53ca255bc["builders"] 74eddc85_a390_2aab_af5a_ef32b77d5430 --> 95c28355_f14c_c3cd_5a03_d5a53ca255bc ccf22860_d73b_017a_0108_0629fdde9ca9["AwaitBlock.js"] ccf22860_d73b_017a_0108_0629fdde9ca9 --> 74eddc85_a390_2aab_af5a_ef32b77d5430 9e1a9d63_62c9_f709_d0c5_4420094b5f16["EachBlock.js"] 9e1a9d63_62c9_f709_d0c5_4420094b5f16 --> 74eddc85_a390_2aab_af5a_ef32b77d5430 eb8f9886_6e75_3f24_8ead_079204f4d4d6["Fragment.js"] eb8f9886_6e75_3f24_8ead_079204f4d4d6 --> 74eddc85_a390_2aab_af5a_ef32b77d5430 style 74eddc85_a390_2aab_af5a_ef32b77d5430 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @import { Expression, Identifier, Node, Statement, BlockStatement, ArrayExpression } from 'estree' */
/** @import { AST } from '#compiler' */
/** @import { ComponentContext, ServerTransformState } from '../../types.js' */
import { escape_html } from '../../../../../../escaping.js';
import {
BLOCK_CLOSE,
BLOCK_OPEN,
BLOCK_OPEN_ELSE,
EMPTY_COMMENT
} from '../../../../../../internal/server/hydration.js';
import * as b from '#compiler/builders';
import { sanitize_template_string } from '../../../../../utils/sanitize_template_string.js';
import { regex_whitespaces_strict } from '../../../../patterns.js';
import { has_await_expression } from '../../../../../utils/ast.js';
import { ExpressionMetadata } from '../../../../nodes.js';
/** Opens an if/each block, so that we can remove nodes in the case of a mismatch */
export const block_open = b.literal(BLOCK_OPEN);
/** Opens an if/each block, so that we can remove nodes in the case of a mismatch */
export const block_open_else = b.literal(BLOCK_OPEN_ELSE);
/** Closes an if/each block, so that we can remove nodes in the case of a mismatch. Also serves as an anchor for these blocks */
export const block_close = b.literal(BLOCK_CLOSE);
/** Empty comment to keep text nodes separate, or provide an anchor node for blocks */
export const empty_comment = b.literal(EMPTY_COMMENT);
/**
* Processes an array of template nodes, joining sibling text/expression nodes and
* recursing into child nodes.
* @param {Array<AST.SvelteNode>} nodes
* @param {ComponentContext} context
*/
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) {
// ... (341 more lines)
Domain
Subdomains
Functions
Classes
Dependencies
Imported By
- packages/svelte/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/EachBlock.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/Fragment.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/HtmlTag.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/Identifier.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/KeyBlock.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/RegularElement.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/RenderTag.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/SlotElement.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteBoundary.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteElement.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/TitleElement.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js
- packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js
Source
Frequently Asked Questions
What does utils.js do?
utils.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 utils.js?
utils.js defines 6 function(s): build_attribute_value, build_getter, build_template, create_child_block, is_statement, process_children.
What does utils.js depend on?
utils.js imports 11 module(s): ExpressionMetadata, ast.js, builders, escape_html, escaping.js, has_await_expression, hydration.js, nodes.js, and 3 more.
What files import utils.js?
utils.js is imported by 15 file(s): AwaitBlock.js, EachBlock.js, Fragment.js, HtmlTag.js, Identifier.js, IfBlock.js, KeyBlock.js, RegularElement.js, and 7 more.
Where is utils.js in the architecture?
utils.js is located at packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/3-transform/server/visitors/shared).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free