element.js — svelte Source File
Architecture documentation for element.js, a javascript file in the svelte codebase. 29 imports, 2 dependents.
Entity Profile
Dependency Diagram
graph LR 206889ff_1f9f_b6c1_d530_059d001e1cf4["element.js"] 2aa63f4e_82c9_33e3_ac6c_5f3d46250522["utils.js"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 2aa63f4e_82c9_33e3_ac6c_5f3d46250522 02a8b5a2_13c5_e5b3_1ed2_617763d0904d["is_void"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 02a8b5a2_13c5_e5b3_1ed2_617763d0904d 8b705104_0cb9_c5c8_5bed_6dcfe73592d3["expression.js"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 8b705104_0cb9_c5c8_5bed_6dcfe73592d3 f55653bc_77b3_5212_03f1_93bc274916e8["read_expression"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> f55653bc_77b3_5212_03f1_93bc274916e8 90aa5201_1990_23b6_f05a_1ff5d9b22b14["script.js"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 90aa5201_1990_23b6_f05a_1ff5d9b22b14 3f7147bd_f765_d166_38e7_10f71b9fd062["read_script"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 3f7147bd_f765_d166_38e7_10f71b9fd062 251e2338_f8b8_69b4_b2e5_29ee7decbfa6["style.js"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 251e2338_f8b8_69b4_b2e5_29ee7decbfa6 ed89faef_4ddb_7d55_bba6_cc8feba73758["read_style"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> ed89faef_4ddb_7d55_bba6_cc8feba73758 06660fad_daa2_c824_01c8_ebafc63758a1["html.js"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 06660fad_daa2_c824_01c8_ebafc63758a1 83712aa1_c83d_1cd5_c47d_1cdb04dd210c["decode_character_references"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 83712aa1_c83d_1cd5_c47d_1cdb04dd210c 495501a4_a342_6a4d_ac11_e3e2fee8b218["errors.js"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 495501a4_a342_6a4d_ac11_e3e2fee8b218 a146f6ac_0088_8736_b6ce_318f9f115170["e"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> a146f6ac_0088_8736_b6ce_318f9f115170 56a689f9_11c0_cc76_bd60_41bb6dc96475["warnings.js"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 56a689f9_11c0_cc76_bd60_41bb6dc96475 3246e0bc_b9fc_f638_5e35_41e8c39a2408["w"] 206889ff_1f9f_b6c1_d530_059d001e1cf4 --> 3246e0bc_b9fc_f638_5e35_41e8c39a2408 style 206889ff_1f9f_b6c1_d530_059d001e1cf4 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/** @import { Expression, Identifier, SourceLocation } from 'estree' */
/** @import { Location } from 'locate-character' */
/** @import { AST } from '#compiler' */
/** @import { Parser } from '../index.js' */
import { is_void } from '../../../../utils.js';
import read_expression from '../read/expression.js';
import { read_script } from '../read/script.js';
import read_style from '../read/style.js';
import { decode_character_references } from '../utils/html.js';
import * as e from '../../../errors.js';
import * as w from '../../../warnings.js';
import { create_fragment } from '../utils/create.js';
import { create_attribute, ExpressionMetadata, is_element_node } from '../../nodes.js';
import { get_attribute_expression, is_expression_attribute } from '../../../utils/ast.js';
import { closing_tag_omitted } from '../../../../html-tree-validation.js';
import { list } from '../../../utils/string.js';
import { locator } from '../../../state.js';
import * as b from '#compiler/builders';
const regex_invalid_unquoted_attribute_value = /^(\/>|[\s"'=<>`])/;
const regex_closing_textarea_tag = /^<\/textarea(\s[^>]*)?>/i;
const regex_closing_comment = /-->/;
const regex_whitespace_or_slash_or_closing_tag = /(\s|\/|>)/;
const regex_token_ending_character = /[\s=/>"']/;
const regex_starts_with_quote_characters = /^["']/;
const regex_attribute_value = /^(?:"([^"]*)"|'([^'])*'|([^>\s]+))/;
const regex_valid_element_name =
/^(?:![a-zA-Z]+|[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?|[a-zA-Z][a-zA-Z0-9]*:[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9])$/;
export const regex_valid_component_name =
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#identifiers adjusted for our needs
// (must start with uppercase letter if no dots, can contain dots)
/^(?:\p{Lu}[$\u200c\u200d\p{ID_Continue}.]*|\p{ID_Start}[$\u200c\u200d\p{ID_Continue}]*(?:\.[$\u200c\u200d\p{ID_Continue}]+)+)$/u;
/** @type {Map<string, AST.ElementLike['type']>} */
const root_only_meta_tags = new Map([
['svelte:head', 'SvelteHead'],
['svelte:options', 'SvelteOptions'],
['svelte:window', 'SvelteWindow'],
['svelte:document', 'SvelteDocument'],
['svelte:body', 'SvelteBody']
]);
/** @type {Map<string, AST.ElementLike['type']>} */
const meta_tags = new Map([
...root_only_meta_tags,
['svelte:element', 'SvelteElement'],
['svelte:component', 'SvelteComponent'],
['svelte:self', 'SvelteSelf'],
['svelte:fragment', 'SvelteFragment'],
['svelte:boundary', 'SvelteBoundary']
]);
/** @param {Parser} parser */
export default function element(parser) {
const start = parser.index++;
let parent = parser.current();
if (parser.eat('!--')) {
const data = parser.read_until(regex_closing_comment);
// ... (818 more lines)
Domain
Subdomains
Functions
Dependencies
- ExpressionMetadata
- ast.js
- builders
- closing_tag_omitted
- create.js
- create_attribute
- create_fragment
- decode_character_references
- e
- errors.js
- expression.js
- get_attribute_expression
- html-tree-validation.js
- html.js
- is_element_node
- is_expression_attribute
- is_void
- list
- nodes.js
- read_expression
- read_script
- read_style
- script.js
- state.js
- string.js
- style.js
- utils.js
- w
- warnings.js
Imported By
Source
Frequently Asked Questions
What does element.js do?
element.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 element.js?
element.js defines 9 function(s): element, get_directive_type, parent_is_head, parent_is_shadowroot_template, read_attribute, read_attribute_value, read_sequence, read_static_attribute, read_tag.
What does element.js depend on?
element.js imports 29 module(s): ExpressionMetadata, ast.js, builders, closing_tag_omitted, create.js, create_attribute, create_fragment, decode_character_references, and 21 more.
What files import element.js?
element.js is imported by 2 file(s): fragment.js, index.js.
Where is element.js in the architecture?
element.js is located at packages/svelte/src/compiler/phases/1-parse/state/element.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/1-parse/state).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free