Home / File/ utils.js — svelte Source File

utils.js — svelte Source File

Architecture documentation for utils.js, a javascript file in the svelte codebase. 11 imports, 15 dependents.

File javascript Compiler Transformer 11 imports 15 dependents 6 functions 1 classes

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

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