From 03ee8b51bf53868b50e245329ca1b3d1ec097c60 Mon Sep 17 00:00:00 2001 From: Nic <162764842+Nic-Polumeyv@users.noreply.github.com> Date: Sun, 6 Sep 2026 19:47:09 -0400 Subject: [PATCH] create_fragment and disallow_children live in nodes.js, fuzzymatch in utils; no parse imports from analyze --- .../src/compiler/phases/1-parse/index.js | 3 +- .../compiler/phases/1-parse/state/element.js | 8 +++-- .../src/compiler/phases/1-parse/state/tag.js | 2 +- .../compiler/phases/1-parse/utils/create.js | 16 ---------- .../2-analyze/visitors/BindDirective.js | 2 +- .../phases/2-analyze/visitors/SvelteBody.js | 2 +- .../2-analyze/visitors/SvelteDocument.js | 2 +- .../phases/2-analyze/visitors/SvelteWindow.js | 2 +- .../2-analyze/visitors/shared/a11y/index.js | 2 +- .../visitors/shared/special-element.js | 16 ---------- packages/svelte/src/compiler/phases/nodes.js | 30 +++++++++++++++++++ .../compiler/utils/extract_svelte_ignore.js | 2 +- .../{phases/1-parse => }/utils/fuzzymatch.js | 0 13 files changed, 44 insertions(+), 43 deletions(-) delete mode 100644 packages/svelte/src/compiler/phases/1-parse/utils/create.js delete mode 100644 packages/svelte/src/compiler/phases/2-analyze/visitors/shared/special-element.js rename packages/svelte/src/compiler/{phases/1-parse => }/utils/fuzzymatch.js (100%) diff --git a/packages/svelte/src/compiler/phases/1-parse/index.js b/packages/svelte/src/compiler/phases/1-parse/index.js index bfbf3c5d48..2729dec81f 100644 --- a/packages/svelte/src/compiler/phases/1-parse/index.js +++ b/packages/svelte/src/compiler/phases/1-parse/index.js @@ -5,10 +5,9 @@ import { Source, isIdentifierStart, isIdentifierChar } from '@teasel/parser'; import fragment from './state/fragment.js'; import { value_names } from '../../utils/ast.js'; import * as e from '../../errors.js'; -import { create_fragment } from './utils/create.js'; +import { create_fragment, disallow_children } from '../nodes.js'; import read_options from './options.js'; import { is_reserved } from '../../../utils.js'; -import { disallow_children } from '../2-analyze/visitors/shared/special-element.js'; import * as state from '../../state.js'; import { is_whitespace } from './utils/whitespace.js'; diff --git a/packages/svelte/src/compiler/phases/1-parse/state/element.js b/packages/svelte/src/compiler/phases/1-parse/state/element.js index 03f4f5f7af..d985b344de 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/element.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/element.js @@ -9,8 +9,12 @@ import read_style from '../css.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 { + create_attribute, + create_fragment, + ExpressionMetadata, + is_element_node +} from '../../nodes.js'; import { get_attribute_expression, is_expression_attribute, diff --git a/packages/svelte/src/compiler/phases/1-parse/state/tag.js b/packages/svelte/src/compiler/phases/1-parse/state/tag.js index e514126639..09983e7035 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/tag.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/tag.js @@ -4,7 +4,7 @@ import * as e from '../../../errors.js'; import { ExpressionMetadata } from '../../nodes.js'; import { read_expression, read_params, read_pattern, read_statement } from '../js.js'; -import { create_fragment } from '../utils/create.js'; +import { create_fragment } from '../../nodes.js'; import { find_matching_bracket, match_bracket } from '../utils/bracket.js'; const regex_whitespace_with_closing_curly_brace = /\s*}/y; diff --git a/packages/svelte/src/compiler/phases/1-parse/utils/create.js b/packages/svelte/src/compiler/phases/1-parse/utils/create.js deleted file mode 100644 index 6030f1bd7b..0000000000 --- a/packages/svelte/src/compiler/phases/1-parse/utils/create.js +++ /dev/null @@ -1,16 +0,0 @@ -/** @import { AST } from '#compiler' */ - -/** - * @param {any} transparent - * @returns {AST.Fragment} - */ -export function create_fragment(transparent = false) { - return { - type: 'Fragment', - nodes: [], - metadata: { - transparent, - dynamic: false - } - }; -} diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js index ab541703a0..559681cacd 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js @@ -9,7 +9,7 @@ import { validate_assignment } from './shared/utils.js'; import * as e from '../../../errors.js'; import * as w from '../../../warnings.js'; import { binding_properties } from '../../bindings.js'; -import fuzzymatch from '../../1-parse/utils/fuzzymatch.js'; +import fuzzymatch from '../../../utils/fuzzymatch.js'; import { is_content_editable_binding, is_svg } from '../../../../utils.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js index 39b559b32f..fcadc12708 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js @@ -2,7 +2,7 @@ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; import { is_event_attribute } from '../../../utils/ast.js'; -import { disallow_children } from './shared/special-element.js'; +import { disallow_children } from '../../nodes.js'; import { check_global_event_reference } from './shared/utils.js'; /** diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js index 23e984f607..f2acc93e1e 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js @@ -1,6 +1,6 @@ /** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ -import { disallow_children } from './shared/special-element.js'; +import { disallow_children } from '../../nodes.js'; import * as e from '../../../errors.js'; import { is_event_attribute } from '../../../utils/ast.js'; import { check_global_event_reference } from './shared/utils.js'; diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js index 5281c7a635..8bba0d8d2d 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js @@ -1,6 +1,6 @@ /** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ -import { disallow_children } from './shared/special-element.js'; +import { disallow_children } from '../../nodes.js'; import * as e from '../../../errors.js'; import { is_event_attribute } from '../../../utils/ast.js'; import { check_global_event_reference } from './shared/utils.js'; diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js index e09ab018a8..f06a41d088 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js @@ -45,7 +45,7 @@ import { import { is_event_attribute, is_text_attribute } from '../../../../../utils/ast.js'; import { list } from '../../../../../utils/string.js'; import { walk } from 'zimmerframe'; -import fuzzymatch from '../../../../1-parse/utils/fuzzymatch.js'; +import fuzzymatch from '../../../../../utils/fuzzymatch.js'; import { is_content_editable_binding } from '../../../../../../utils.js'; import * as w from '../../../../../warnings.js'; diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/special-element.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/special-element.js deleted file mode 100644 index e72b3c6b2a..0000000000 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/special-element.js +++ /dev/null @@ -1,16 +0,0 @@ -/** @import { AST } from '#compiler' */ -import * as e from '../../../../errors.js'; - -/** - * @param {AST.SvelteBody | AST.SvelteDocument | AST.SvelteOptionsRaw | AST.SvelteWindow} node - */ -export function disallow_children(node) { - const { nodes } = node.fragment; - - if (nodes.length > 0) { - const first = nodes[0]; - const last = nodes[nodes.length - 1]; - - e.svelte_meta_invalid_content({ start: first.start, end: last.end }, node.name); - } -} diff --git a/packages/svelte/src/compiler/phases/nodes.js b/packages/svelte/src/compiler/phases/nodes.js index fea447a7c5..eda31b3e50 100644 --- a/packages/svelte/src/compiler/phases/nodes.js +++ b/packages/svelte/src/compiler/phases/nodes.js @@ -1,6 +1,7 @@ /** @import { Expression, PrivateIdentifier, SourceLocation } from 'estree' */ /** @import { AST, Binding } from '#compiler' */ import * as b from '#compiler/builders'; +import * as e from '../errors.js'; /** * All nodes that can appear elsewhere than the top level, have attributes and can contain children @@ -45,6 +46,35 @@ export function is_custom_element_node(node) { ); } +/** + * @param {boolean} transparent + * @returns {AST.Fragment} + */ +export function create_fragment(transparent = false) { + return { + type: 'Fragment', + nodes: [], + metadata: { + transparent, + dynamic: false + } + }; +} + +/** + * @param {AST.SvelteBody | AST.SvelteDocument | AST.SvelteOptionsRaw | AST.SvelteWindow} node + */ +export function disallow_children(node) { + const { nodes } = node.fragment; + + if (nodes.length > 0) { + const first = nodes[0]; + const last = nodes[nodes.length - 1]; + + e.svelte_meta_invalid_content({ start: first.start, end: last.end }, node.name); + } +} + /** * @param {string} name * @param {SourceLocation | null} name_loc diff --git a/packages/svelte/src/compiler/utils/extract_svelte_ignore.js b/packages/svelte/src/compiler/utils/extract_svelte_ignore.js index 2f0d387307..587f919f91 100644 --- a/packages/svelte/src/compiler/utils/extract_svelte_ignore.js +++ b/packages/svelte/src/compiler/utils/extract_svelte_ignore.js @@ -1,5 +1,5 @@ import { IGNORABLE_RUNTIME_WARNINGS } from '../../constants.js'; -import fuzzymatch from '../phases/1-parse/utils/fuzzymatch.js'; +import fuzzymatch from './fuzzymatch.js'; import * as w from '../warnings.js'; const regex_svelte_ignore = /^\s*svelte-ignore\s/; diff --git a/packages/svelte/src/compiler/phases/1-parse/utils/fuzzymatch.js b/packages/svelte/src/compiler/utils/fuzzymatch.js similarity index 100% rename from packages/svelte/src/compiler/phases/1-parse/utils/fuzzymatch.js rename to packages/svelte/src/compiler/utils/fuzzymatch.js