From 2d03dc55c66c7d540be12096898ef3d47f4a8464 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Sun, 1 Sep 2024 22:43:08 +0200 Subject: [PATCH] feat: provide AST node types with internal types stripped out (alternative) (#12968) Uses new dts-buddy capabilities and the corresponding tsconfig option to strip away types/properties (and their dependencies) that are marked with `@internal` Also hides the legacy AST types from the output To not clutter the exports, the AST types are moved into a namespace named AST closes #12292 --- .changeset/young-feet-double.md | 5 + packages/svelte/package.json | 2 +- packages/svelte/scripts/generate-types.js | 4 + packages/svelte/src/compiler/index.js | 11 +- packages/svelte/src/compiler/legacy.js | 12 +- packages/svelte/src/compiler/migrate/index.js | 20 +- .../src/compiler/phases/1-parse/index.js | 10 +- .../compiler/phases/1-parse/read/options.js | 10 +- .../compiler/phases/1-parse/read/script.js | 8 +- .../src/compiler/phases/1-parse/read/style.js | 4 +- .../compiler/phases/1-parse/state/element.js | 56 +- .../src/compiler/phases/1-parse/state/tag.js | 26 +- .../src/compiler/phases/1-parse/state/text.js | 4 +- .../compiler/phases/1-parse/utils/create.js | 5 +- .../phases/2-analyze/css/css-prune.js | 30 +- .../compiler/phases/2-analyze/css/utils.js | 4 +- .../src/compiler/phases/2-analyze/index.js | 12 +- .../src/compiler/phases/2-analyze/types.d.ts | 4 +- .../phases/2-analyze/visitors/Attribute.js | 12 +- .../phases/2-analyze/visitors/AwaitBlock.js | 4 +- .../2-analyze/visitors/BindDirective.js | 8 +- .../2-analyze/visitors/CallExpression.js | 2 +- .../2-analyze/visitors/ClassDirective.js | 4 +- .../phases/2-analyze/visitors/Component.js | 4 +- .../phases/2-analyze/visitors/ConstTag.js | 4 +- .../phases/2-analyze/visitors/DebugTag.js | 4 +- .../phases/2-analyze/visitors/EachBlock.js | 4 +- .../2-analyze/visitors/ExpressionTag.js | 4 +- .../phases/2-analyze/visitors/HtmlTag.js | 4 +- .../phases/2-analyze/visitors/IfBlock.js | 4 +- .../phases/2-analyze/visitors/KeyBlock.js | 4 +- .../2-analyze/visitors/LabeledStatement.js | 3 +- .../phases/2-analyze/visitors/LetDirective.js | 4 +- .../phases/2-analyze/visitors/OnDirective.js | 4 +- .../2-analyze/visitors/RegularElement.js | 8 +- .../phases/2-analyze/visitors/RenderTag.js | 4 +- .../phases/2-analyze/visitors/SlotElement.js | 4 +- .../phases/2-analyze/visitors/SnippetBlock.js | 4 +- .../2-analyze/visitors/SpreadAttribute.js | 4 +- .../2-analyze/visitors/StyleDirective.js | 4 +- .../phases/2-analyze/visitors/SvelteBody.js | 4 +- .../2-analyze/visitors/SvelteComponent.js | 4 +- .../2-analyze/visitors/SvelteDocument.js | 4 +- .../2-analyze/visitors/SvelteElement.js | 6 +- .../2-analyze/visitors/SvelteFragment.js | 4 +- .../phases/2-analyze/visitors/SvelteHead.js | 4 +- .../phases/2-analyze/visitors/SvelteSelf.js | 4 +- .../phases/2-analyze/visitors/SvelteWindow.js | 4 +- .../phases/2-analyze/visitors/Text.js | 4 +- .../phases/2-analyze/visitors/TitleElement.js | 4 +- .../phases/2-analyze/visitors/UseDirective.js | 4 +- .../phases/2-analyze/visitors/shared/a11y.js | 41 +- .../2-analyze/visitors/shared/attribute.js | 8 +- .../2-analyze/visitors/shared/component.js | 8 +- .../2-analyze/visitors/shared/element.js | 12 +- .../2-analyze/visitors/shared/fragment.js | 2 +- .../visitors/shared/special-element.js | 4 +- .../phases/2-analyze/visitors/shared/utils.js | 6 +- .../3-transform/client/transform-client.js | 2 +- .../client/visitors/AnimateDirective.js | 4 +- .../3-transform/client/visitors/Attribute.js | 4 +- .../3-transform/client/visitors/AwaitBlock.js | 4 +- .../client/visitors/BindDirective.js | 8 +- .../3-transform/client/visitors/Comment.js | 4 +- .../3-transform/client/visitors/Component.js | 4 +- .../3-transform/client/visitors/ConstTag.js | 4 +- .../3-transform/client/visitors/DebugTag.js | 4 +- .../3-transform/client/visitors/EachBlock.js | 6 +- .../3-transform/client/visitors/Fragment.js | 6 +- .../3-transform/client/visitors/HtmlTag.js | 4 +- .../3-transform/client/visitors/IfBlock.js | 4 +- .../3-transform/client/visitors/KeyBlock.js | 4 +- .../client/visitors/LetDirective.js | 4 +- .../client/visitors/OnDirective.js | 4 +- .../client/visitors/RegularElement.js | 30 +- .../3-transform/client/visitors/RenderTag.js | 4 +- .../client/visitors/SlotElement.js | 4 +- .../client/visitors/SnippetBlock.js | 4 +- .../client/visitors/SpreadAttribute.js | 4 +- .../3-transform/client/visitors/SvelteBody.js | 4 +- .../client/visitors/SvelteComponent.js | 4 +- .../client/visitors/SvelteDocument.js | 4 +- .../client/visitors/SvelteElement.js | 20 +- .../client/visitors/SvelteFragment.js | 4 +- .../3-transform/client/visitors/SvelteHead.js | 4 +- .../3-transform/client/visitors/SvelteSelf.js | 4 +- .../client/visitors/SvelteWindow.js | 5 +- .../client/visitors/TitleElement.js | 4 +- .../client/visitors/TransitionDirective.js | 4 +- .../client/visitors/UseDirective.js | 4 +- .../client/visitors/shared/component.js | 4 +- .../client/visitors/shared/element.js | 12 +- .../client/visitors/shared/events.js | 8 +- .../client/visitors/shared/fragment.js | 5 +- .../client/visitors/shared/special_element.js | 4 +- .../client/visitors/shared/utils.js | 10 +- .../phases/3-transform/server/types.d.ts | 2 +- .../3-transform/server/visitors/AwaitBlock.js | 4 +- .../3-transform/server/visitors/Component.js | 4 +- .../3-transform/server/visitors/ConstTag.js | 4 +- .../3-transform/server/visitors/DebugTag.js | 4 +- .../3-transform/server/visitors/EachBlock.js | 4 +- .../3-transform/server/visitors/Fragment.js | 4 +- .../3-transform/server/visitors/HtmlTag.js | 4 +- .../3-transform/server/visitors/IfBlock.js | 4 +- .../3-transform/server/visitors/KeyBlock.js | 4 +- .../server/visitors/RegularElement.js | 6 +- .../3-transform/server/visitors/RenderTag.js | 4 +- .../server/visitors/SlotElement.js | 6 +- .../server/visitors/SnippetBlock.js | 4 +- .../server/visitors/SpreadAttribute.js | 4 +- .../server/visitors/SvelteComponent.js | 4 +- .../server/visitors/SvelteElement.js | 4 +- .../server/visitors/SvelteFragment.js | 4 +- .../3-transform/server/visitors/SvelteHead.js | 4 +- .../3-transform/server/visitors/SvelteSelf.js | 4 +- .../server/visitors/TitleElement.js | 4 +- .../server/visitors/shared/component.js | 10 +- .../server/visitors/shared/element.js | 40 +- .../server/visitors/shared/utils.js | 8 +- .../src/compiler/phases/3-transform/utils.js | 50 +- packages/svelte/src/compiler/phases/nodes.js | 14 +- packages/svelte/src/compiler/phases/scope.js | 14 +- .../svelte/src/compiler/phases/types.d.ts | 22 +- packages/svelte/src/compiler/public.d.ts | 1 + packages/svelte/src/compiler/state.js | 1 - packages/svelte/src/compiler/types/css.d.ts | 4 +- packages/svelte/src/compiler/types/index.d.ts | 8 +- .../src/compiler/types/legacy-nodes.d.ts | 8 +- .../svelte/src/compiler/types/template.d.ts | 854 ++++++------ packages/svelte/src/compiler/utils/ast.js | 22 +- packages/svelte/types/index.d.ts | 1199 +++++------------ pnpm-lock.yaml | 10 +- 133 files changed, 1273 insertions(+), 1753 deletions(-) create mode 100644 .changeset/young-feet-double.md diff --git a/.changeset/young-feet-double.md b/.changeset/young-feet-double.md new file mode 100644 index 0000000000..c1de0a948c --- /dev/null +++ b/.changeset/young-feet-double.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +feat: provide AST node types with internal types stripped out diff --git a/packages/svelte/package.json b/packages/svelte/package.json index fe195fcd93..0d9f9c7bb8 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -123,7 +123,7 @@ "@rollup/plugin-virtual": "^3.0.2", "@types/aria-query": "^5.0.4", "@types/node": "^20.11.5", - "dts-buddy": "^0.5.1", + "dts-buddy": "^0.5.3", "esbuild": "^0.21.5", "rollup": "^4.21.0", "source-map": "^0.7.4", diff --git a/packages/svelte/scripts/generate-types.js b/packages/svelte/scripts/generate-types.js index ed9009df6a..7678ed35b1 100644 --- a/packages/svelte/scripts/generate-types.js +++ b/packages/svelte/scripts/generate-types.js @@ -21,6 +21,10 @@ fs.writeFileSync(`${dir}/types/compiler/interfaces.d.ts`, "import '../index.js'; await createBundle({ output: `${dir}/types/index.d.ts`, + compilerOptions: { + // so that types/properties with `@internal` (and its dependencies) are removed from the output + stripInternal: true + }, modules: { [pkg.name]: `${dir}/src/index.d.ts`, [`${pkg.name}/action`]: `${dir}/src/action/public.d.ts`, diff --git a/packages/svelte/src/compiler/index.js b/packages/svelte/src/compiler/index.js index abd0ddad36..6cb3157295 100644 --- a/packages/svelte/src/compiler/index.js +++ b/packages/svelte/src/compiler/index.js @@ -1,5 +1,6 @@ /** @import { LegacyRoot } from './types/legacy-nodes.js' */ -/** @import { CompileOptions, CompileResult, ValidatedCompileOptions, ModuleCompileOptions, Root } from '#compiler' */ +/** @import { CompileOptions, CompileResult, ValidatedCompileOptions, ModuleCompileOptions } from '#compiler' */ +/** @import { AST } from './public.js' */ import { walk as zimmerframe_walk } from 'zimmerframe'; import { convert } from './legacy.js'; import { parse as parse_acorn } from './phases/1-parse/acorn.js'; @@ -77,7 +78,7 @@ export function compileModule(source, options) { * @overload * @param {string} source * @param {{ filename?: string; modern: true }} options - * @returns {Root} + * @returns {AST.Root} */ /** @@ -90,7 +91,7 @@ export function compileModule(source, options) { * @overload * @param {string} source * @param {{ filename?: string; modern?: false }} [options] - * @returns {LegacyRoot} + * @returns {Record} */ /** @@ -102,7 +103,7 @@ export function compileModule(source, options) { * https://svelte.dev/docs/svelte-compiler#svelte-parse * @param {string} source * @param {{ filename?: string; rootDir?: string; modern?: boolean }} [options] - * @returns {Root | LegacyRoot} + * @returns {AST.Root | LegacyRoot} */ export function parse(source, { filename, rootDir, modern } = {}) { state.reset_warning_filter(() => false); @@ -114,7 +115,7 @@ export function parse(source, { filename, rootDir, modern } = {}) { /** * @param {string} source - * @param {Root} ast + * @param {AST.Root} ast * @param {boolean | undefined} modern */ function to_public_ast(source, ast, modern) { diff --git a/packages/svelte/src/compiler/legacy.js b/packages/svelte/src/compiler/legacy.js index 9d4050eb62..2a543a5370 100644 --- a/packages/svelte/src/compiler/legacy.js +++ b/packages/svelte/src/compiler/legacy.js @@ -1,5 +1,5 @@ /** @import { Expression } from 'estree' */ -/** @import { BaseNode, ConstTag, Root, SvelteNode, TemplateNode, Text } from '#compiler' */ +/** @import { AST, SvelteNode, TemplateNode } from '#compiler' */ /** @import * as Legacy from './types/legacy-nodes.js' */ import { walk } from 'zimmerframe'; import { @@ -36,7 +36,7 @@ function remove_surrounding_whitespace_nodes(nodes) { /** * Transform our nice modern AST into the monstrosity emitted by Svelte 4 * @param {string} source - * @param {Root} ast + * @param {AST.Root} ast * @returns {Legacy.LegacyRoot} */ export function convert(source, ast) { @@ -74,8 +74,8 @@ export function convert(source, ast) { let end = null; if (node.fragment.nodes.length > 0) { - const first = /** @type {BaseNode} */ (node.fragment.nodes.at(0)); - const last = /** @type {BaseNode} */ (node.fragment.nodes.at(-1)); + const first = /** @type {AST.BaseNode} */ (node.fragment.nodes.at(0)); + const last = /** @type {AST.BaseNode} */ (node.fragment.nodes.at(-1)); start = first.start; end = last.end; @@ -242,7 +242,7 @@ export function convert(source, ast) { return node; } - const modern_node = /** @type {ConstTag} */ (node); + const modern_node = /** @type {AST.ConstTag} */ (node); const { id: left } = { ...modern_node.declaration.declarations[0] }; // @ts-ignore delete left.typeAnnotation; @@ -584,7 +584,7 @@ export function convert(source, ast) { const parent = path.at(-1); if (parent?.type === 'RegularElement' && parent.name === 'style') { // these text nodes are missing `raw` for some dumb reason - return /** @type {Text} */ ({ + return /** @type {AST.Text} */ ({ type: 'Text', start: node.start, end: node.end, diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js index 658da75f3a..909b95ff5c 100644 --- a/packages/svelte/src/compiler/migrate/index.js +++ b/packages/svelte/src/compiler/migrate/index.js @@ -2,7 +2,7 @@ /** @import { Visitors } from 'zimmerframe' */ /** @import { ComponentAnalysis } from '../phases/types.js' */ /** @import { Scope } from '../phases/scope.js' */ -/** @import * as Compiler from '#compiler' */ +/** @import { AST, Binding, SvelteNode, ValidatedCompileOptions } from '#compiler' */ import MagicString from 'magic-string'; import { walk } from 'zimmerframe'; import { parse } from '../phases/1-parse/index.js'; @@ -30,7 +30,7 @@ export function migrate(source) { const { customElement: customElementOptions, ...parsed_options } = parsed.options || {}; - /** @type {Compiler.ValidatedCompileOptions} */ + /** @type {ValidatedCompileOptions} */ const combined_options = { ...validate_component_options({}, ''), ...parsed_options, @@ -160,7 +160,7 @@ export function migrate(source) { let needs_reordering = false; for (const [node, { dependencies }] of state.analysis.reactive_statements) { - /** @type {Compiler.Binding[]} */ + /** @type {Binding[]} */ let ids = []; if ( node.body.type === 'ExpressionStatement' && @@ -229,7 +229,7 @@ export function migrate(source) { * }} State */ -/** @type {Visitors} */ +/** @type {Visitors} */ const instance_script = { _(node, { state, next }) { // @ts-expect-error @@ -335,7 +335,7 @@ const instance_script = { // } } - const binding = /** @type {Compiler.Binding} */ (state.scope.get(declarator.id.name)); + const binding = /** @type {Binding} */ (state.scope.get(declarator.id.name)); if (state.analysis.uses_props && (declarator.init || binding.updated)) { throw new Error( @@ -478,7 +478,7 @@ const instance_script = { } }; -/** @type {Visitors} */ +/** @type {Visitors} */ const template = { Identifier(node, { state, path }) { handle_identifier(node, state, path); @@ -596,7 +596,7 @@ const template = { /** * @param {VariableDeclarator} declarator * @param {MagicString} str - * @param {Array} path + * @param {SvelteNode[]} path */ function extract_type_and_comment(declarator, str, path) { const parent = path.at(-1); @@ -641,11 +641,11 @@ function extract_type_and_comment(declarator, str, path) { } /** - * @param {Compiler.RegularElement | Compiler.SvelteElement | Compiler.SvelteWindow | Compiler.SvelteDocument | Compiler.SvelteBody} element + * @param {AST.RegularElement | AST.SvelteElement | AST.SvelteWindow | AST.SvelteDocument | AST.SvelteBody} element * @param {State} state */ function handle_events(element, state) { - /** @type {Map} */ + /** @type {Map} */ const handlers = new Map(); for (const attribute of element.attributes) { if (attribute.type !== 'OnDirective') continue; @@ -880,7 +880,7 @@ function get_node_range(source, node) { } /** - * @param {Compiler.OnDirective} last + * @param {AST.OnDirective} last * @param {State} state */ function generate_event_name(last, state) { diff --git a/packages/svelte/src/compiler/phases/1-parse/index.js b/packages/svelte/src/compiler/phases/1-parse/index.js index 7429e325b0..de29aa5261 100644 --- a/packages/svelte/src/compiler/phases/1-parse/index.js +++ b/packages/svelte/src/compiler/phases/1-parse/index.js @@ -1,4 +1,4 @@ -/** @import { TemplateNode, Fragment, Root, SvelteOptionsRaw } from '#compiler' */ +/** @import { AST, TemplateNode } from '#compiler' */ // @ts-expect-error acorn type definitions are borked in the release we use import { isIdentifierStart, isIdentifierChar } from 'acorn'; import fragment from './state/fragment.js'; @@ -31,10 +31,10 @@ export class Parser { /** @type {TemplateNode[]} */ stack = []; - /** @type {Fragment[]} */ + /** @type {AST.Fragment[]} */ fragments = []; - /** @type {Root} */ + /** @type {AST.Root} */ root; /** @type {Record} */ @@ -122,7 +122,7 @@ export class Parser { (thing) => thing.type === 'SvelteOptions' ); if (options_index !== -1) { - const options = /** @type {SvelteOptionsRaw} */ (this.root.fragment.nodes[options_index]); + const options = /** @type {AST.SvelteOptionsRaw} */ (this.root.fragment.nodes[options_index]); this.root.fragment.nodes.splice(options_index, 1); this.root.options = read_options(options); @@ -292,7 +292,7 @@ export class Parser { /** * @param {string} template - * @returns {Root} + * @returns {AST.Root} */ export function parse(template) { const parser = new Parser(template); diff --git a/packages/svelte/src/compiler/phases/1-parse/read/options.js b/packages/svelte/src/compiler/phases/1-parse/read/options.js index cd3673aa57..6ea069e875 100644 --- a/packages/svelte/src/compiler/phases/1-parse/read/options.js +++ b/packages/svelte/src/compiler/phases/1-parse/read/options.js @@ -1,16 +1,16 @@ /** @import { ObjectExpression } from 'estree' */ -/** @import { SvelteOptionsRaw, Root, SvelteOptions } from '#compiler' */ +/** @import { AST } from '#compiler' */ import { NAMESPACE_MATHML, NAMESPACE_SVG } from '../../../../constants.js'; import * as e from '../../../errors.js'; const regex_valid_tag_name = /^[a-zA-Z][a-zA-Z0-9]*-[a-zA-Z0-9-]+$/; /** - * @param {SvelteOptionsRaw} node - * @returns {Root['options']} + * @param {AST.SvelteOptionsRaw} node + * @returns {AST.Root['options']} */ export default function read_options(node) { - /** @type {SvelteOptions} */ + /** @type {AST.SvelteOptions} */ const component_options = { start: node.start, end: node.end, @@ -39,7 +39,7 @@ export default function read_options(node) { break; // eslint doesn't know this is unnecessary } case 'customElement': { - /** @type {SvelteOptions['customElement']} */ + /** @type {AST.SvelteOptions['customElement']} */ const ce = {}; const { value: v } = attribute; const value = v === true || Array.isArray(v) ? v : [v]; diff --git a/packages/svelte/src/compiler/phases/1-parse/read/script.js b/packages/svelte/src/compiler/phases/1-parse/read/script.js index 022a5e0aa0..f1bc4e5868 100644 --- a/packages/svelte/src/compiler/phases/1-parse/read/script.js +++ b/packages/svelte/src/compiler/phases/1-parse/read/script.js @@ -1,5 +1,5 @@ /** @import { Program } from 'estree' */ -/** @import { Attribute, SpreadAttribute, Directive, Script } from '#compiler' */ +/** @import { AST, Directive } from '#compiler' */ /** @import { Parser } from '../index.js' */ import * as acorn from '../acorn.js'; import { regex_not_newline_characters } from '../../patterns.js'; @@ -16,8 +16,8 @@ const ALLOWED_ATTRIBUTES = ['context', 'generics', 'lang', 'module']; /** * @param {Parser} parser * @param {number} start - * @param {Array} attributes - * @returns {Script} + * @param {Array} attributes + * @returns {AST.Script} */ export function read_script(parser, start, attributes) { const script_start = parser.index; @@ -45,7 +45,7 @@ export function read_script(parser, start, attributes) { /** @type {'default' | 'module'} */ let context = 'default'; - for (const attribute of /** @type {Attribute[]} */ (attributes)) { + for (const attribute of /** @type {AST.Attribute[]} */ (attributes)) { if (RESERVED_ATTRIBUTES.includes(attribute.name)) { e.script_reserved_attribute(attribute, attribute.name); } diff --git a/packages/svelte/src/compiler/phases/1-parse/read/style.js b/packages/svelte/src/compiler/phases/1-parse/read/style.js index 3c33a110c0..f6acd577c5 100644 --- a/packages/svelte/src/compiler/phases/1-parse/read/style.js +++ b/packages/svelte/src/compiler/phases/1-parse/read/style.js @@ -1,4 +1,4 @@ -/** @import { Attribute, SpreadAttribute, Directive, Css } from '#compiler' */ +/** @import { AST, Css, Directive } from '#compiler' */ /** @import { Parser } from '../index.js' */ import * as e from '../../../errors.js'; @@ -18,7 +18,7 @@ const REGEX_HTML_COMMENT_CLOSE = /-->/; /** * @param {Parser} parser * @param {number} start - * @param {Array} attributes + * @param {Array} attributes * @returns {Css.StyleSheet} */ export default function read_style(parser, start, attributes) { 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 07af4c8d98..b6184913eb 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/element.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/element.js @@ -1,5 +1,5 @@ /** @import { Expression } from 'estree' */ -/** @import * as Compiler from '#compiler' */ +/** @import { AST, Directive, ElementLike, TemplateNode } from '#compiler' */ /** @import { Parser } from '../index.js' */ import { is_void } from '../../../../utils.js'; import read_expression from '../read/expression.js'; @@ -26,7 +26,7 @@ const regex_valid_element_name = const regex_valid_component_name = /^(?:[A-Z][A-Za-z0-9_$.]*|[a-z][A-Za-z0-9_$]*(?:\.[A-Za-z0-9_$]+)+)$/; -/** @type {Map} */ +/** @type {Map} */ const root_only_meta_tags = new Map([ ['svelte:head', 'SvelteHead'], ['svelte:options', 'SvelteOptions'], @@ -35,7 +35,7 @@ const root_only_meta_tags = new Map([ ['svelte:body', 'SvelteBody'] ]); -/** @type {Map} */ +/** @type {Map} */ const meta_tags = new Map([ ...root_only_meta_tags, ['svelte:element', 'SvelteElement'], @@ -54,7 +54,7 @@ export default function element(parser) { const data = parser.read_until(regex_closing_comment); parser.eat('-->', true); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ parser.append({ type: 'Comment', start, @@ -77,7 +77,7 @@ export default function element(parser) { } // close any elements that don't have their own closing tags, e.g.

- while (/** @type {Compiler.RegularElement} */ (parent).name !== name) { + while (/** @type {AST.RegularElement} */ (parent).name !== name) { if (parent.type !== 'RegularElement') { if (parser.last_auto_closed_tag && parser.last_auto_closed_tag.tag === name) { e.element_invalid_closing_tag_autoclosed(start, name, parser.last_auto_closed_tag.reason); @@ -135,7 +135,7 @@ export default function element(parser) { ? 'SlotElement' : 'RegularElement'; - /** @type {Compiler.ElementLike} */ + /** @type {ElementLike} */ const element = type === 'RegularElement' ? { @@ -153,7 +153,7 @@ export default function element(parser) { }, parent: null } - : /** @type {Compiler.ElementLike} */ ({ + : /** @type {ElementLike} */ ({ type, start, end: -1, @@ -211,7 +211,7 @@ export default function element(parser) { e.svelte_component_missing_this(start); } - const definition = /** @type {Compiler.Attribute} */ (element.attributes.splice(index, 1)[0]); + const definition = /** @type {AST.Attribute} */ (element.attributes.splice(index, 1)[0]); if (!is_expression_attribute(definition)) { e.svelte_component_invalid_this(definition.start); } @@ -228,7 +228,7 @@ export default function element(parser) { e.svelte_element_missing_this(start); } - const definition = /** @type {Compiler.Attribute} */ (element.attributes.splice(index, 1)[0]); + const definition = /** @type {AST.Attribute} */ (element.attributes.splice(index, 1)[0]); if (definition.value === true) { e.svelte_element_missing_this(definition); @@ -241,9 +241,7 @@ export default function element(parser) { // it would be much better to just error here, but we are preserving the existing buggy // Svelte 4 behaviour out of an overabundance of caution regarding breaking changes. // TODO in 6.0, error - const chunk = /** @type {Array} */ ( - definition.value - )[0]; + const chunk = /** @type {Array} */ (definition.value)[0]; element.tag = chunk.type === 'Text' ? { @@ -262,7 +260,7 @@ export default function element(parser) { if (is_top_level_script_or_style) { parser.eat('>', true); - /** @type {Compiler.Comment | null} */ + /** @type {AST.Comment | null} */ let prev_comment = null; for (let i = current.fragment.nodes.length - 1; i >= 0; i--) { const node = current.fragment.nodes[i]; @@ -329,7 +327,7 @@ export default function element(parser) { const data = parser.read_until(new RegExp(``)); const end = parser.index; - /** @type {Compiler.Text} */ + /** @type {AST.Text} */ const node = { start, end, @@ -348,7 +346,7 @@ export default function element(parser) { } } -/** @param {Compiler.TemplateNode[]} stack */ +/** @param {TemplateNode[]} stack */ function parent_is_head(stack) { let i = stack.length; while (i--) { @@ -359,14 +357,14 @@ function parent_is_head(stack) { return false; } -/** @param {Compiler.TemplateNode[]} stack */ +/** @param {TemplateNode[]} stack */ function parent_is_shadowroot_template(stack) { // https://developer.chrome.com/docs/css-ui/declarative-shadow-dom#building_a_declarative_shadow_root let i = stack.length; while (i--) { if ( stack[i].type === 'RegularElement' && - /** @type {Compiler.RegularElement} */ (stack[i]).attributes.some( + /** @type {AST.RegularElement} */ (stack[i]).attributes.some( (a) => a.type === 'Attribute' && a.name === 'shadowrootmode' ) ) { @@ -378,7 +376,7 @@ function parent_is_shadowroot_template(stack) { /** * @param {Parser} parser - * @returns {Compiler.Attribute | null} + * @returns {AST.Attribute | null} */ function read_static_attribute(parser) { const start = parser.index; @@ -386,7 +384,7 @@ function read_static_attribute(parser) { const name = parser.read_until(regex_token_ending_character); if (!name) return null; - /** @type {true | Array} */ + /** @type {true | Array} */ let value = true; if (parser.eat('=')) { @@ -424,7 +422,7 @@ function read_static_attribute(parser) { /** * @param {Parser} parser - * @returns {Compiler.Attribute | Compiler.SpreadAttribute | Compiler.Directive | null} + * @returns {AST.Attribute | AST.SpreadAttribute | Directive | null} */ function read_attribute(parser) { const start = parser.index; @@ -438,7 +436,7 @@ function read_attribute(parser) { parser.allow_whitespace(); parser.eat('}', true); - /** @type {Compiler.SpreadAttribute} */ + /** @type {AST.SpreadAttribute} */ const spread = { type: 'SpreadAttribute', start, @@ -462,7 +460,7 @@ function read_attribute(parser) { parser.allow_whitespace(); parser.eat('}', true); - /** @type {Compiler.ExpressionTag} */ + /** @type {AST.ExpressionTag} */ const expression = { type: 'ExpressionTag', start: value_start, @@ -493,7 +491,7 @@ function read_attribute(parser) { const colon_index = name.indexOf(':'); const type = colon_index !== -1 && get_directive_type(name.slice(0, colon_index)); - /** @type {true | Compiler.ExpressionTag | Array} */ + /** @type {true | AST.ExpressionTag | Array} */ let value = true; if (parser.eat('=')) { parser.allow_whitespace(); @@ -542,7 +540,7 @@ function read_attribute(parser) { } } - /** @type {Compiler.Directive} */ + /** @type {Directive} */ // @ts-expect-error TODO can't figure out this error const directive = { start, @@ -599,7 +597,7 @@ function get_directive_type(name) { /** * @param {Parser} parser - * @return {Compiler.ExpressionTag | Array} + * @return {AST.ExpressionTag | Array} */ function read_attribute_value(parser) { const quote_mark = parser.eat("'") ? "'" : parser.eat('"') ? '"' : null; @@ -616,7 +614,7 @@ function read_attribute_value(parser) { ]; } - /** @type {Array} */ + /** @type {Array} */ let value; try { value = read_sequence( @@ -662,7 +660,7 @@ function read_attribute_value(parser) { * @returns {any[]} */ function read_sequence(parser, done, location) { - /** @type {Compiler.Text} */ + /** @type {AST.Text} */ let current_chunk = { start: parser.index, end: -1, @@ -672,7 +670,7 @@ function read_sequence(parser, done, location) { parent: null }; - /** @type {Array} */ + /** @type {Array} */ const chunks = []; /** @param {number} end */ @@ -710,7 +708,7 @@ function read_sequence(parser, done, location) { parser.allow_whitespace(); parser.eat('}', true); - /** @type {Compiler.ExpressionTag} */ + /** @type {AST.ExpressionTag} */ const chunk = { type: 'ExpressionTag', start: index, 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 aacaf29440..de118960ec 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/tag.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/tag.js @@ -1,5 +1,5 @@ /** @import { ArrowFunctionExpression, Expression, Identifier } from 'estree' */ -/** @import { AwaitBlock, ConstTag, DebugTag, EachBlock, ExpressionTag, HtmlTag, IfBlock, KeyBlock, RenderTag, SnippetBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Parser } from '../index.js' */ import read_pattern from '../read/context.js'; import read_expression from '../read/expression.js'; @@ -33,7 +33,7 @@ export default function tag(parser) { parser.allow_whitespace(); parser.eat('}', true); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ parser.append({ type: 'ExpressionTag', start, @@ -53,7 +53,7 @@ function open(parser) { if (parser.eat('if')) { parser.require_whitespace(); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ const block = parser.append({ type: 'IfBlock', elseif: false, @@ -174,7 +174,7 @@ function open(parser) { parser.eat('}', true); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ const block = parser.append({ type: 'EachBlock', start, @@ -198,7 +198,7 @@ function open(parser) { const expression = read_expression(parser); parser.allow_whitespace(); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ const block = parser.append({ type: 'AwaitBlock', start, @@ -252,7 +252,7 @@ function open(parser) { parser.eat('}', true); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ const block = parser.append({ type: 'KeyBlock', start, @@ -303,7 +303,7 @@ function open(parser) { parser.allow_whitespace(); parser.eat('}', true); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ const block = parser.append({ type: 'SnippetBlock', start, @@ -355,7 +355,7 @@ function next(parser) { let elseif_start = start - 1; while (parser.template[elseif_start] !== '{') elseif_start -= 1; - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ const child = parser.append({ start: elseif_start, end: -1, @@ -451,7 +451,7 @@ function close(parser) { while (block.elseif) { block.end = parser.index; parser.stack.pop(); - block = /** @type {IfBlock} */ (parser.current()); + block = /** @type {AST.IfBlock} */ (parser.current()); } block.end = parser.index; parser.pop(); @@ -499,7 +499,7 @@ function special(parser) { parser.allow_whitespace(); parser.eat('}', true); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ parser.append({ type: 'HtmlTag', start, @@ -537,7 +537,7 @@ function special(parser) { parser.eat('}', true); } - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ parser.append({ type: 'DebugTag', start, @@ -570,7 +570,7 @@ function special(parser) { parser.eat('}', true); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ parser.append({ type: 'ConstTag', start, @@ -601,7 +601,7 @@ function special(parser) { parser.allow_whitespace(); parser.eat('}', true); - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ parser.append({ type: 'RenderTag', start, diff --git a/packages/svelte/src/compiler/phases/1-parse/state/text.js b/packages/svelte/src/compiler/phases/1-parse/state/text.js index 45bf18b73e..388ffa19c0 100644 --- a/packages/svelte/src/compiler/phases/1-parse/state/text.js +++ b/packages/svelte/src/compiler/phases/1-parse/state/text.js @@ -1,4 +1,4 @@ -/** @import { Text } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Parser } from '../index.js' */ import { decode_character_references } from '../utils/html.js'; @@ -12,7 +12,7 @@ export default function text(parser) { data += parser.template[parser.index++]; } - /** @type {ReturnType>} */ + /** @type {ReturnType>} */ parser.append({ type: 'Text', start, diff --git a/packages/svelte/src/compiler/phases/1-parse/utils/create.js b/packages/svelte/src/compiler/phases/1-parse/utils/create.js index 13bbb30dbf..6030f1bd7b 100644 --- a/packages/svelte/src/compiler/phases/1-parse/utils/create.js +++ b/packages/svelte/src/compiler/phases/1-parse/utils/create.js @@ -1,7 +1,8 @@ -/** @import { Fragment } from '#compiler' */ +/** @import { AST } from '#compiler' */ + /** * @param {any} transparent - * @returns {Fragment} + * @returns {AST.Fragment} */ export function create_fragment(transparent = false) { return { diff --git a/packages/svelte/src/compiler/phases/2-analyze/css/css-prune.js b/packages/svelte/src/compiler/phases/2-analyze/css/css-prune.js index 95195d2608..a99745f809 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/css/css-prune.js +++ b/packages/svelte/src/compiler/phases/2-analyze/css/css-prune.js @@ -8,7 +8,7 @@ import { get_attribute_chunks, is_text_attribute } from '../../../utils/ast.js'; /** * @typedef {{ * stylesheet: Compiler.Css.StyleSheet; - * element: Compiler.RegularElement | Compiler.SvelteElement; + * element: Compiler.AST.RegularElement | Compiler.AST.SvelteElement; * }} State */ /** @typedef {NODE_PROBABLY_EXISTS | NODE_DEFINITELY_EXISTS} NodeExistsValue */ @@ -53,7 +53,7 @@ const nesting_selector = { /** * * @param {Compiler.Css.StyleSheet} stylesheet - * @param {Compiler.RegularElement | Compiler.SvelteElement} element + * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} element */ export function prune(stylesheet, element) { walk(stylesheet, { stylesheet, element }, visitors); @@ -120,7 +120,7 @@ function truncate(node) { /** * @param {Compiler.Css.RelativeSelector[]} relative_selectors * @param {Compiler.Css.Rule} rule - * @param {Compiler.RegularElement | Compiler.SvelteElement} element + * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} element * @param {Compiler.Css.StyleSheet} stylesheet * @returns {boolean} */ @@ -222,7 +222,7 @@ function apply_selector(relative_selectors, rule, element, stylesheet) { * Mark both the compound selector and the node it selects as encapsulated, * for transformation in a later step * @param {Compiler.Css.RelativeSelector} relative_selector - * @param {Compiler.RegularElement | Compiler.SvelteElement} element + * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} element */ function mark(relative_selector, element) { relative_selector.metadata.scoped = true; @@ -279,7 +279,7 @@ const regex_backslash_and_following_character = /\\(.)/g; * * @param {Compiler.Css.RelativeSelector} relative_selector * @param {Compiler.Css.Rule} rule - * @param {Compiler.RegularElement | Compiler.SvelteElement} element + * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} element * @param {Compiler.Css.StyleSheet} stylesheet * @returns {boolean} */ @@ -435,7 +435,7 @@ function test_attribute(operator, expected_value, case_insensitive, value) { } /** - * @param {Compiler.RegularElement | Compiler.SvelteElement} node + * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} node * @param {string} name * @param {string | null} expected_value * @param {string | null} operator @@ -542,8 +542,8 @@ function unquote(str) { } /** - * @param {Compiler.RegularElement | Compiler.SvelteElement} node - * @returns {Compiler.RegularElement | Compiler.SvelteElement | null} + * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} node + * @returns {Compiler.AST.RegularElement | Compiler.AST.SvelteElement | null} */ function get_element_parent(node) { /** @type {Compiler.SvelteNode | null} */ @@ -611,10 +611,10 @@ function find_previous_sibling(node) { /** * @param {Compiler.SvelteNode} node * @param {boolean} adjacent_only - * @returns {Map} + * @returns {Map} */ function get_possible_element_siblings(node, adjacent_only) { - /** @type {Map} */ + /** @type {Map} */ const result = new Map(); /** @type {Compiler.SvelteNode} */ @@ -676,12 +676,12 @@ function get_possible_element_siblings(node, adjacent_only) { } /** - * @param {Compiler.EachBlock | Compiler.IfBlock | Compiler.AwaitBlock} relative_selector + * @param {Compiler.AST.EachBlock | Compiler.AST.IfBlock | Compiler.AST.AwaitBlock} relative_selector * @param {boolean} adjacent_only - * @returns {Map} + * @returns {Map} */ function get_possible_last_child(relative_selector, adjacent_only) { - /** @typedef {Map} NodeMap */ + /** @typedef {Map} NodeMap */ /** @type {NodeMap} */ const result = new Map(); @@ -783,7 +783,7 @@ function higher_existence(exist1, exist2) { return exist1 > exist2 ? exist1 : exist2; } -/** @param {Map} result */ +/** @param {Map} result */ function mark_as_probably(result) { for (const key of result.keys()) { result.set(key, NODE_PROBABLY_EXISTS); @@ -795,7 +795,7 @@ function mark_as_probably(result) { * @param {boolean} adjacent_only */ function loop_child(children, adjacent_only) { - /** @type {Map} */ + /** @type {Map} */ const result = new Map(); for (let i = children.length - 1; i >= 0; i--) { const child = children[i]; diff --git a/packages/svelte/src/compiler/phases/2-analyze/css/utils.js b/packages/svelte/src/compiler/phases/2-analyze/css/utils.js index e4c14d8bfb..99603fad29 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/css/utils.js +++ b/packages/svelte/src/compiler/phases/2-analyze/css/utils.js @@ -1,4 +1,4 @@ -/** @import { Text, ExpressionTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Node } from 'estree' */ const UNKNOWN = {}; @@ -18,7 +18,7 @@ function gather_possible_values(node, set) { } /** - * @param {Text | ExpressionTag} chunk + * @param {AST.Text | AST.ExpressionTag} chunk * @returns {Set | null} */ export function get_possible_values(chunk) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/index.js b/packages/svelte/src/compiler/phases/2-analyze/index.js index 0c3dd0b856..95a0989bde 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/index.js +++ b/packages/svelte/src/compiler/phases/2-analyze/index.js @@ -1,5 +1,5 @@ /** @import { Expression, Node, Program } from 'estree' */ -/** @import { Binding, Root, Script, SvelteNode, ValidatedCompileOptions, ValidatedModuleCompileOptions } from '#compiler' */ +/** @import { Binding, AST, SvelteNode, ValidatedCompileOptions, ValidatedModuleCompileOptions } from '#compiler' */ /** @import { AnalysisState, Visitors } from './types' */ /** @import { Analysis, ComponentAnalysis, Js, ReactiveStatement, Template } from '../types' */ import { walk } from 'zimmerframe'; @@ -178,7 +178,7 @@ const visitors = { }; /** - * @param {Script | null} script + * @param {AST.Script | null} script * @param {ScopeRoot} root * @param {boolean} allow_reactive_declarations * @param {Scope | null} parent @@ -257,7 +257,7 @@ export function analyze_module(ast, options) { } /** - * @param {Root} root + * @param {AST.Root} root * @param {string} source * @param {ValidatedCompileOptions} options * @returns {ComponentAnalysis} @@ -580,7 +580,7 @@ export function analyze_component(root, source, options) { // bind:this doesn't need to be a state reference if it will never change if ( type === 'BindDirective' && - /** @type {import('#compiler').BindDirective} */ (path[i]).name === 'this' + /** @type {AST.BindDirective} */ (path[i]).name === 'this' ) { for (let j = i - 1; j >= 0; j -= 1) { const type = path[j].type; @@ -688,7 +688,7 @@ export function analyze_component(root, source, options) { // TODO this happens during the analysis phase, which shouldn't know anything about client vs server if (element.type === 'SvelteElement' && options.generate === 'client') continue; - /** @type {import('#compiler').Attribute | undefined} */ + /** @type {AST.Attribute | undefined} */ let class_attribute = undefined; for (const attribute of element.attributes) { @@ -707,7 +707,7 @@ export function analyze_component(root, source, options) { if (is_text_attribute(class_attribute)) { class_attribute.value[0].data += ` ${analysis.css.hash}`; } else { - /** @type {import('#compiler').Text} */ + /** @type {AST.Text} */ const css_text = { type: 'Text', data: ` ${analysis.css.hash}`, diff --git a/packages/svelte/src/compiler/phases/2-analyze/types.d.ts b/packages/svelte/src/compiler/phases/2-analyze/types.d.ts index 2cfe76b61a..265f58130d 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/types.d.ts +++ b/packages/svelte/src/compiler/phases/2-analyze/types.d.ts @@ -1,6 +1,6 @@ import type { Scope } from '../scope.js'; import type { ComponentAnalysis, ReactiveStatement } from '../types.js'; -import type { ExpressionMetadata, RenderTag, SvelteNode, ValidatedCompileOptions } from '#compiler'; +import type { ExpressionMetadata, AST, ValidatedCompileOptions, SvelteNode } from '#compiler'; import type { LabeledStatement } from 'estree'; export interface AnalysisState { @@ -16,7 +16,7 @@ export interface AnalysisState { /** Information about the current expression/directive/block value */ expression: ExpressionMetadata | null; /** The current {@render ...} tag, if any */ - render_tag: null | RenderTag; + render_tag: null | AST.RenderTag; private_derived_state: string[]; function_depth: number; diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js index 9bcb266eaf..2a281a1aa3 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js @@ -1,5 +1,5 @@ /** @import { ArrowFunctionExpression, Expression, FunctionDeclaration, FunctionExpression } from 'estree' */ -/** @import { Attribute, DelegatedEvent, RegularElement, SvelteNode } from '#compiler' */ +/** @import { AST, DelegatedEvent, SvelteNode } from '#compiler' */ /** @import { Context } from '../types' */ import { is_capture_event, is_delegated } from '../../../../utils.js'; import { @@ -10,7 +10,7 @@ import { import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {Attribute} node + * @param {AST.Attribute} node * @param {Context} context */ export function Attribute(node, context) { @@ -107,20 +107,20 @@ function get_delegated_event(event_name, handler, context) { const grandparent = path.at(-2); - /** @type {RegularElement | null} */ + /** @type {AST.RegularElement | null} */ let element = null; /** @type {string | null} */ let event_name = null; if (parent.type === 'OnDirective') { - element = /** @type {RegularElement} */ (grandparent); + element = /** @type {AST.RegularElement} */ (grandparent); event_name = parent.name; } else if ( parent.type === 'ExpressionTag' && grandparent?.type === 'Attribute' && is_event_attribute(grandparent) ) { - element = /** @type {RegularElement} */ (path.at(-3)); - const attribute = /** @type {Attribute} */ (grandparent); + element = /** @type {AST.RegularElement} */ (path.at(-3)); + const attribute = /** @type {AST.Attribute} */ (grandparent); event_name = get_attribute_event_name(attribute.name); } diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js index 78ebe03021..a71f325154 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js @@ -1,11 +1,11 @@ -/** @import { AwaitBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { validate_block_not_empty, validate_opening_tag } from './shared/utils.js'; import * as e from '../../../errors.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {AwaitBlock} node + * @param {AST.AwaitBlock} node * @param {Context} context */ export function AwaitBlock(node, context) { 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 4cc3506a6c..5b56d9ddac 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js @@ -1,4 +1,4 @@ -/** @import { Attribute, BindDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { extract_all_identifiers_from_expression, @@ -13,7 +13,7 @@ import fuzzymatch from '../../1-parse/utils/fuzzymatch.js'; import { is_content_editable_binding, is_svg } from '../../../../utils.js'; /** - * @param {BindDirective} node + * @param {AST.BindDirective} node * @param {Context} context */ export function BindDirective(node, context) { @@ -152,7 +152,7 @@ export function BindDirective(node, context) { } if (parent.name === 'input' && node.name !== 'this') { - const type = /** @type {Attribute | undefined} */ ( + const type = /** @type {AST.Attribute | undefined} */ ( parent.attributes.find((a) => a.type === 'Attribute' && a.name === 'type') ); @@ -194,7 +194,7 @@ export function BindDirective(node, context) { } if (is_content_editable_binding(node.name)) { - const contenteditable = /** @type {Attribute} */ ( + const contenteditable = /** @type {AST.Attribute} */ ( parent.attributes.find((a) => a.type === 'Attribute' && a.name === 'contenteditable') ); diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js index f9999f5252..0f0555d787 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js @@ -1,5 +1,5 @@ /** @import { CallExpression, VariableDeclarator } from 'estree' */ -/** @import { SvelteNode } from '#compiler' */ +/** @import { AST, SvelteNode } from '#compiler' */ /** @import { Context } from '../types' */ import { get_rune } from '../../scope.js'; import * as e from '../../../errors.js'; diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/ClassDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/ClassDirective.js index ef87b3cbcf..f4aaf77589 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/ClassDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/ClassDirective.js @@ -1,8 +1,8 @@ -/** @import { ClassDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ /** - * @param {ClassDirective} node + * @param {AST.ClassDirective} node * @param {Context} context */ export function ClassDirective(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/Component.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/Component.js index ea5a719b92..350719dedd 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/Component.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/Component.js @@ -1,9 +1,9 @@ -/** @import { Component } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { visit_component } from './shared/component.js'; /** - * @param {Component} node + * @param {AST.Component} node * @param {Context} context */ export function Component(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/ConstTag.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/ConstTag.js index 3045688a08..214b4bcb9e 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/ConstTag.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/ConstTag.js @@ -1,10 +1,10 @@ -/** @import { ConstTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; import { validate_opening_tag } from './shared/utils.js'; /** - * @param {ConstTag} node + * @param {AST.ConstTag} node * @param {Context} context */ export function ConstTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/DebugTag.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/DebugTag.js index 4f5e6c10d0..f185a58c80 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/DebugTag.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/DebugTag.js @@ -1,9 +1,9 @@ -/** @import { DebugTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { validate_opening_tag } from './shared/utils.js'; /** - * @param {DebugTag} node + * @param {AST.DebugTag} node * @param {Context} context */ export function DebugTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js index f66fd72de5..ac9e75bf8c 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js @@ -1,4 +1,4 @@ -/** @import { EachBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ /** @import { Scope } from '../../scope' */ import * as e from '../../../errors.js'; @@ -6,7 +6,7 @@ import { mark_subtree_dynamic } from './shared/fragment.js'; import { validate_block_not_empty, validate_opening_tag } from './shared/utils.js'; /** - * @param {EachBlock} node + * @param {AST.EachBlock} node * @param {Context} context */ export function EachBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js index bf1c232737..32c8d2ca36 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js @@ -1,11 +1,11 @@ -/** @import { ExpressionTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { is_tag_valid_with_parent } from '../../../../html-tree-validation.js'; import * as e from '../../../errors.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {ExpressionTag} node + * @param {AST.ExpressionTag} node * @param {Context} context */ export function ExpressionTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js index 1c6385f94b..c89b11ad36 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js @@ -1,10 +1,10 @@ -/** @import { HtmlTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { mark_subtree_dynamic } from './shared/fragment.js'; import { validate_opening_tag } from './shared/utils.js'; /** - * @param {HtmlTag} node + * @param {AST.HtmlTag} node * @param {Context} context */ export function HtmlTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js index ca8122b162..0e9cedbd33 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js @@ -1,10 +1,10 @@ -/** @import { IfBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { mark_subtree_dynamic } from './shared/fragment.js'; import { validate_block_not_empty, validate_opening_tag } from './shared/utils.js'; /** - * @param {IfBlock} node + * @param {AST.IfBlock} node * @param {Context} context */ export function IfBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js index dd42d1274e..88bb6a98e7 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js @@ -1,10 +1,10 @@ -/** @import { KeyBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { mark_subtree_dynamic } from './shared/fragment.js'; import { validate_block_not_empty, validate_opening_tag } from './shared/utils.js'; /** - * @param {KeyBlock} node + * @param {AST.KeyBlock} node * @param {Context} context */ export function KeyBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/LabeledStatement.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/LabeledStatement.js index 0ff8c37ade..26ba030780 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/LabeledStatement.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/LabeledStatement.js @@ -1,10 +1,9 @@ /** @import { Expression, LabeledStatement } from 'estree' */ -/** @import { ReactiveStatement, SvelteNode } from '#compiler' */ +/** @import { AST, ReactiveStatement, SvelteNode } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; import { extract_identifiers, object } from '../../../utils/ast.js'; import * as w from '../../../warnings.js'; -import { is_state_source } from '../../3-transform/client/utils.js'; /** * @param {LabeledStatement} node diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/LetDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/LetDirective.js index 562b900411..e9a56ead0c 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/LetDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/LetDirective.js @@ -1,9 +1,9 @@ -/** @import { LetDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; /** - * @param {LetDirective} node + * @param {AST.LetDirective} node * @param {Context} context */ export function LetDirective(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js index 102a57db2d..b8a0d95671 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js @@ -1,10 +1,10 @@ -/** @import { OnDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as w from '../../../warnings.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {OnDirective} node + * @param {AST.OnDirective} node * @param {Context} context */ export function OnDirective(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js index dc283db7e2..af4587cdb2 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js @@ -1,4 +1,4 @@ -/** @import { RegularElement } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { is_mathml, is_svg, is_void } from '../../../../utils.js'; import { @@ -14,7 +14,7 @@ import { validate_element } from './shared/element.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {RegularElement} node + * @param {AST.RegularElement} node * @param {Context} context */ export function RegularElement(node, context) { @@ -48,8 +48,8 @@ export function RegularElement(node, context) { node.attributes.push( create_attribute( 'value', - /** @type {import('#compiler').Text} */ (node.fragment.nodes.at(0)).start, - /** @type {import('#compiler').Text} */ (node.fragment.nodes.at(-1)).end, + /** @type {AST.Text} */ (node.fragment.nodes.at(0)).start, + /** @type {AST.Text} */ (node.fragment.nodes.at(-1)).end, // @ts-ignore node.fragment.nodes ) diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/RenderTag.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/RenderTag.js index 5fe2353924..36aee8eade 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/RenderTag.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/RenderTag.js @@ -1,4 +1,4 @@ -/** @import { RenderTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { unwrap_optional } from '../../../utils/ast.js'; import * as e from '../../../errors.js'; @@ -6,7 +6,7 @@ import { validate_opening_tag } from './shared/utils.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {RenderTag} node + * @param {AST.RenderTag} node * @param {Context} context */ export function RenderTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SlotElement.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SlotElement.js index 25d8d5835e..7726fea807 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SlotElement.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SlotElement.js @@ -1,4 +1,4 @@ -/** @import { SlotElement } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { is_text_attribute } from '../../../utils/ast.js'; import * as e from '../../../errors.js'; @@ -6,7 +6,7 @@ import * as w from '../../../warnings.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {SlotElement} node + * @param {AST.SlotElement} node * @param {Context} context */ export function SlotElement(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js index 8a81e67e0e..94bbd3cde1 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js @@ -1,10 +1,10 @@ -/** @import { SnippetBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { validate_block_not_empty, validate_opening_tag } from './shared/utils.js'; import * as e from '../../../errors.js'; /** - * @param {SnippetBlock} node + * @param {AST.SnippetBlock} node * @param {Context} context */ export function SnippetBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SpreadAttribute.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SpreadAttribute.js index b791efdd3b..1b61129226 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SpreadAttribute.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SpreadAttribute.js @@ -1,10 +1,10 @@ -/** @import { SpreadAttribute } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {SpreadAttribute} node + * @param {AST.SpreadAttribute} node * @param {Context} context */ export function SpreadAttribute(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/StyleDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/StyleDirective.js index d79722f256..8910d9eae0 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/StyleDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/StyleDirective.js @@ -1,11 +1,11 @@ -/** @import { StyleDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; import { get_attribute_chunks } from '../../../utils/ast.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {StyleDirective} node + * @param {AST.StyleDirective} node * @param {Context} context */ export function StyleDirective(node, context) { 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 7d71de41b0..82bc592c14 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js @@ -1,11 +1,11 @@ -/** @import { SvelteBody } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @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'; /** - * @param {SvelteBody} node + * @param {AST.SvelteBody} node * @param {Context} context */ export function SvelteBody(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteComponent.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteComponent.js index 99cfda4a3e..8f655d5599 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteComponent.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteComponent.js @@ -1,10 +1,10 @@ -/** @import { SvelteComponent } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as w from '../../../warnings.js'; import { visit_component } from './shared/component.js'; /** - * @param {SvelteComponent} node + * @param {AST.SvelteComponent} node * @param {Context} context */ export function SvelteComponent(node, context) { 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 eb61231d66..a44baef9e4 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js @@ -1,9 +1,9 @@ -/** @import { SvelteDocument } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { disallow_children } from './shared/special-element.js'; /** - * @param {SvelteDocument} node + * @param {AST.SvelteDocument} node * @param {Context} context */ export function SvelteDocument(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js index 0228691b3e..02717bdfd9 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js @@ -1,4 +1,4 @@ -/** @import { Attribute, SvelteElement, Text } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { NAMESPACE_MATHML, NAMESPACE_SVG } from '../../../../constants.js'; import { is_text_attribute } from '../../../utils/ast.js'; @@ -7,7 +7,7 @@ import { validate_element } from './shared/element.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {SvelteElement} node + * @param {AST.SvelteElement} node * @param {Context} context */ export function SvelteElement(node, context) { @@ -17,7 +17,7 @@ export function SvelteElement(node, context) { context.state.analysis.elements.push(node); - const xmlns = /** @type {Attribute & { value: [Text] } | undefined} */ ( + const xmlns = /** @type {AST.Attribute & { value: [AST.Text] } | undefined} */ ( node.attributes.find( (a) => a.type === 'Attribute' && a.name === 'xmlns' && is_text_attribute(a) ) diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteFragment.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteFragment.js index 178414edea..20383abadc 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteFragment.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteFragment.js @@ -1,10 +1,10 @@ -/** @import { SvelteFragment } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; import { validate_slot_attribute } from './shared/attribute.js'; /** - * @param {SvelteFragment} node + * @param {AST.SvelteFragment} node * @param {Context} context */ export function SvelteFragment(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js index 93b610521a..5a3ed44f20 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js @@ -1,10 +1,10 @@ -/** @import { SvelteHead } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {SvelteHead} node + * @param {AST.SvelteHead} node * @param {Context} context */ export function SvelteHead(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteSelf.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteSelf.js index 7406ad31dc..18696e0c55 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteSelf.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteSelf.js @@ -1,10 +1,10 @@ -/** @import { SvelteSelf } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { visit_component } from './shared/component.js'; import * as e from '../../../errors.js'; /** - * @param {SvelteSelf} node + * @param {AST.SvelteSelf} node * @param {Context} context */ export function SvelteSelf(node, context) { 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 53175d2ef6..c5392a477d 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js @@ -1,9 +1,9 @@ -/** @import { SvelteWindow } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { disallow_children } from './shared/special-element.js'; /** - * @param {SvelteWindow} node + * @param {AST.SvelteWindow} node * @param {Context} context */ export function SvelteWindow(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/Text.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/Text.js index e491042e38..a9ba67e95c 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/Text.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/Text.js @@ -1,11 +1,11 @@ -/** @import { Text } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { is_tag_valid_with_parent } from '../../../../html-tree-validation.js'; import { regex_not_whitespace } from '../../patterns.js'; import * as e from '../../../errors.js'; /** - * @param {Text} node + * @param {AST.Text} node * @param {Context} context */ export function Text(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/TitleElement.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/TitleElement.js index 628e254964..caa3206b0d 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/TitleElement.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/TitleElement.js @@ -1,9 +1,9 @@ -/** @import { TitleElement } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import * as e from '../../../errors.js'; /** - * @param {TitleElement} node + * @param {AST.TitleElement} node * @param {Context} context */ export function TitleElement(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/UseDirective.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/UseDirective.js index 9b2d0e599f..76706ad674 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/UseDirective.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/UseDirective.js @@ -1,9 +1,9 @@ -/** @import { UseDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../types' */ import { mark_subtree_dynamic } from './shared/fragment.js'; /** - * @param {UseDirective} node + * @param {AST.UseDirective} node * @param {Context} context */ export function UseDirective(node, context) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y.js index a1a143e0c6..1ad29ae318 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y.js @@ -1,6 +1,5 @@ -/** @import { Visitors } from 'zimmerframe' */ /** @import { AnalysisState } from '../../types.js' */ -/** @import { Attribute, SvelteNode, TemplateNode, RegularElement, SvelteElement } from '#compiler' */ +/** @import { AST, SvelteNode, TemplateNode } from '#compiler' */ /** @import { ARIARoleDefinitionKey, ARIARoleRelationConcept, ARIAProperty, ARIAPropertyDefinition, ARIARoleDefinition } from 'aria-query' */ import { roles as roles_map, aria, elementRoles } from 'aria-query'; // @ts-expect-error package doesn't provide typings @@ -78,7 +77,7 @@ function is_presentation_role(role) { /** * @param {string} tag_name - * @param {Map} attribute_map + * @param {Map} attribute_map */ function is_hidden_from_screen_reader(tag_name, attribute_map) { if (tag_name === 'input') { @@ -96,7 +95,7 @@ function is_hidden_from_screen_reader(tag_name, attribute_map) { } /** - * @param {Map} attribute_map + * @param {Map} attribute_map */ function has_disabled_attribute(attribute_map) { const disabled_attr_value = get_static_value(attribute_map.get('disabled')); @@ -173,7 +172,7 @@ elementAXObjects.entries().forEach( /** * @param {ARIARoleRelationConcept} schema * @param {string} tag_name - * @param {Map} attribute_map + * @param {Map} attribute_map */ function match_schema(schema, tag_name, attribute_map) { if (schema.name !== tag_name) return false; @@ -196,7 +195,7 @@ const ElementInteractivity = /** @type {const} */ ({ /** * @param {string} tag_name - * @param {Map} attribute_map + * @param {Map} attribute_map * @returns {ElementInteractivity[keyof ElementInteractivity]} */ function element_interactivity(tag_name, attribute_map) { @@ -232,7 +231,7 @@ function element_interactivity(tag_name, attribute_map) { /** * @param {string} tag_name - * @param {Map} attribute_map + * @param {Map} attribute_map * @returns {boolean} */ function is_interactive_element(tag_name, attribute_map) { @@ -241,7 +240,7 @@ function is_interactive_element(tag_name, attribute_map) { /** * @param {string} tag_name - * @param {Map} attribute_map + * @param {Map} attribute_map * @returns {boolean} */ function is_non_interactive_element(tag_name, attribute_map) { @@ -250,7 +249,7 @@ function is_non_interactive_element(tag_name, attribute_map) { /** * @param {string} tag_name - * @param {Map} attribute_map + * @param {Map} attribute_map * @returns {boolean} */ function is_static_element(tag_name, attribute_map) { @@ -260,7 +259,7 @@ function is_static_element(tag_name, attribute_map) { /** * @param {ARIARoleDefinitionKey} role * @param {string} tag_name - * @param {Map} attribute_map + * @param {Map} attribute_map */ function is_semantic_role_element(role, tag_name, attribute_map) { for (const [schema, ax_object] of elementAXObjects.entries()) { @@ -544,7 +543,7 @@ const a11y_non_interactive_element_to_interactive_role_exceptions = { const combobox_if_list = ['email', 'search', 'tel', 'text', 'url']; -/** @param {Map} attribute_map */ +/** @param {Map} attribute_map */ function input_implicit_role(attribute_map) { const type_attribute = attribute_map.get('type'); if (!type_attribute) return; @@ -557,7 +556,7 @@ function input_implicit_role(attribute_map) { return input_type_to_implicit_role.get(type); } -/** @param {Map} attribute_map */ +/** @param {Map} attribute_map */ function menuitem_implicit_role(attribute_map) { const type_attribute = attribute_map.get('type'); if (!type_attribute) return; @@ -568,7 +567,7 @@ function menuitem_implicit_role(attribute_map) { /** * @param {string} name - * @param {Map} attribute_map + * @param {Map} attribute_map */ function get_implicit_role(name, attribute_map) { if (name === 'menuitem') { @@ -598,7 +597,7 @@ function is_parent(parent, elements) { } /** - * @param {Attribute} attribute + * @param {AST.Attribute} attribute * @param {ARIAProperty} name * @param {ARIAPropertyDefinition} schema * @param {string | true | null} value @@ -648,7 +647,7 @@ function validate_aria_attribute_value(attribute, name, schema, value) { } /** - * @param {RegularElement |SvelteElement} node + * @param {AST.RegularElement |AST.SvelteElement} node * @param {string[]} attributes * @param {string} name */ @@ -664,7 +663,7 @@ function warn_missing_attribute(node, attributes, name = node.name) { } /** - * @param {Attribute | undefined} attribute + * @param {AST.Attribute | undefined} attribute */ function get_static_value(attribute) { if (!attribute) return null; @@ -674,7 +673,7 @@ function get_static_value(attribute) { } /** - * @param {Attribute | undefined} attribute + * @param {AST.Attribute | undefined} attribute */ function get_static_text_value(attribute) { const value = get_static_value(attribute); @@ -683,17 +682,17 @@ function get_static_text_value(attribute) { } /** - * @param {RegularElement | SvelteElement} node + * @param {AST.RegularElement | AST.SvelteElement} node * @param {AnalysisState} state */ export function check_element(node, state) { - /** @type {Map} */ + /** @type {Map} */ const attribute_map = new Map(); /** @type {Set} */ const handlers = new Set(); - /** @type {Attribute[]} */ + /** @type {AST.Attribute[]} */ const attributes = []; const is_dynamic_element = node.type === 'SvelteElement'; @@ -1098,7 +1097,7 @@ export function check_element(node, state) { return; } let has_caption = false; - const track = /** @type {RegularElement | undefined} */ ( + const track = /** @type {AST.RegularElement | undefined} */ ( node.fragment.nodes.find((i) => i.type === 'RegularElement' && i.name === 'track') ); if (track) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/attribute.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/attribute.js index 8f60a67c62..c2c1f9cabf 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/attribute.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/attribute.js @@ -1,4 +1,4 @@ -/** @import { Attribute, ElementLike } from '#compiler' */ +/** @import { AST, ElementLike } from '#compiler' */ /** @import { Context } from '../../types' */ import * as e from '../../../../errors.js'; import { is_text_attribute } from '../../../../utils/ast.js'; @@ -7,7 +7,7 @@ import { is_custom_element_node } from '../../../nodes.js'; import { regex_only_whitespaces } from '../../../patterns.js'; /** - * @param {Attribute} attribute + * @param {AST.Attribute} attribute */ export function validate_attribute_name(attribute) { if ( @@ -21,7 +21,7 @@ export function validate_attribute_name(attribute) { } /** - * @param {Attribute} attribute + * @param {AST.Attribute} attribute * @param {ElementLike} parent */ export function validate_attribute(attribute, parent) { @@ -50,7 +50,7 @@ export function validate_attribute(attribute, parent) { /** * @param {Context} context - * @param {Attribute} attribute + * @param {AST.Attribute} attribute * @param {boolean} is_component */ export function validate_slot_attribute(context, attribute, is_component = false) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/component.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/component.js index 9c42306f69..73b051a848 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/component.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/component.js @@ -1,4 +1,4 @@ -/** @import { Comment, Component, Fragment, SvelteComponent, SvelteSelf } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../../types' */ import * as e from '../../../../errors.js'; import { get_attribute_expression, is_expression_attribute } from '../../../../utils/ast.js'; @@ -11,7 +11,7 @@ import { import { mark_subtree_dynamic } from './fragment.js'; /** - * @param {Component | SvelteComponent | SvelteSelf} node + * @param {AST.Component | AST.SvelteComponent | AST.SvelteSelf} node * @param {Context} context */ export function visit_component(node, context) { @@ -75,10 +75,10 @@ export function visit_component(node, context) { context.visit(attribute, attribute.type === 'LetDirective' ? default_state : context.state); } - /** @type {Comment[]} */ + /** @type {AST.Comment[]} */ let comments = []; - /** @type {Record} */ + /** @type {Record} */ const nodes = { default: [] }; for (const child of node.fragment.nodes) { diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js index 59f02b98a1..725a4aded8 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js @@ -1,4 +1,4 @@ -/** @import { Component, RegularElement, SvelteComponent, SvelteElement, SvelteSelf, TransitionDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { Context } from '../../types' */ import { get_attribute_expression, is_expression_attribute } from '../../../../utils/ast.js'; import { regex_illegal_attribute_character } from '../../../patterns.js'; @@ -23,16 +23,16 @@ const EVENT_MODIFIERS = [ ]; /** - * @param {import('#compiler').RegularElement | SvelteElement} node + * @param {AST.RegularElement | AST.SvelteElement} node * @param {Context} context */ export function validate_element(node, context) { let has_animate_directive = false; - /** @type {TransitionDirective | null} */ + /** @type {AST.TransitionDirective | null} */ let in_transition = null; - /** @type {TransitionDirective | null} */ + /** @type {AST.TransitionDirective | null} */ let out_transition = null; for (const attribute of node.attributes) { @@ -75,7 +75,7 @@ export function validate_element(node, context) { } if (attribute.name === 'slot') { - /** @type {RegularElement | SvelteElement | Component | SvelteComponent | SvelteSelf | undefined} */ + /** @type {AST.RegularElement | AST.SvelteElement | AST.Component | AST.SvelteComponent | AST.SvelteSelf | undefined} */ validate_slot_attribute(context, attribute); } @@ -112,7 +112,7 @@ export function validate_element(node, context) { has_animate_directive = true; } } else if (attribute.type === 'TransitionDirective') { - const existing = /** @type {TransitionDirective | null} */ ( + const existing = /** @type {AST.TransitionDirective | null} */ ( (attribute.intro && in_transition) || (attribute.outro && out_transition) ); diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/fragment.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/fragment.js index 23ed36b3fb..c3865166fe 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/fragment.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/fragment.js @@ -1,4 +1,4 @@ -/** @import { SvelteNode } from '#compiler' */ +/** @import { AST, SvelteNode } from '#compiler' */ /** * @param {SvelteNode[]} path 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 index 86e9f12199..e72b3c6b2a 100644 --- 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 @@ -1,8 +1,8 @@ -/** @import { SvelteBody, SvelteDocument, SvelteOptionsRaw, SvelteWindow } from '#compiler' */ +/** @import { AST } from '#compiler' */ import * as e from '../../../../errors.js'; /** - * @param {SvelteBody | SvelteDocument | SvelteOptionsRaw | SvelteWindow} node + * @param {AST.SvelteBody | AST.SvelteDocument | AST.SvelteOptionsRaw | AST.SvelteWindow} node */ export function disallow_children(node) { const { nodes } = node.fragment; diff --git a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js index 979fb2dcfd..dad55a1152 100644 --- a/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js +++ b/packages/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js @@ -1,5 +1,5 @@ -/** @import { AssignmentExpression, CallExpression, Expression, Pattern, PrivateIdentifier, Super, TaggedTemplateExpression, UpdateExpression, VariableDeclarator } from 'estree' */ -/** @import { Fragment } from '#compiler' */ +/** @import { AssignmentExpression, Expression, Pattern, PrivateIdentifier, Super, UpdateExpression, VariableDeclarator } from 'estree' */ +/** @import { AST } from '#compiler' */ /** @import { AnalysisState, Context } from '../../types' */ /** @import { Scope } from '../../../scope' */ /** @import { NodeLike } from '../../../../errors.js' */ @@ -118,7 +118,7 @@ export function validate_opening_tag(node, state, expected) { } /** - * @param {Fragment | null | undefined} node + * @param {AST.Fragment | null | undefined} node * @param {Context} context */ export function validate_block_not_empty(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js index ae04bf14c1..967bd849cc 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/transform-client.js @@ -1,5 +1,5 @@ /** @import * as ESTree from 'estree' */ -/** @import { ValidatedCompileOptions, SvelteNode, ValidatedModuleCompileOptions } from '#compiler' */ +/** @import { ValidatedCompileOptions, AST, ValidatedModuleCompileOptions, SvelteNode } from '#compiler' */ /** @import { ComponentAnalysis, Analysis } from '../../types' */ /** @import { Visitors, ComponentClientTransformState, ClientTransformState } from './types' */ import { walk } from 'zimmerframe'; diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AnimateDirective.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AnimateDirective.js index a70adbf334..510f32cde5 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AnimateDirective.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AnimateDirective.js @@ -1,11 +1,11 @@ /** @import { Expression } from 'estree' */ -/** @import { AnimateDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; import { parse_directive_name } from './shared/utils.js'; /** - * @param {AnimateDirective} node + * @param {AST.AnimateDirective} node * @param {ComponentContext} context */ export function AnimateDirective(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/Attribute.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/Attribute.js index 3cab0d7eec..9579794bb5 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/Attribute.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/Attribute.js @@ -1,10 +1,10 @@ -/** @import { Attribute } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { is_event_attribute } from '../../../../utils/ast.js'; import { visit_event_attribute } from './shared/events.js'; /** - * @param {Attribute} node + * @param {AST.Attribute} node * @param {ComponentContext} context */ export function Attribute(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js index 67589244cc..62c61151bb 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js @@ -1,11 +1,11 @@ /** @import { BlockStatement, Expression, Pattern, Statement } from 'estree' */ -/** @import { AwaitBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; import { create_derived_block_argument } from '../utils.js'; /** - * @param {AwaitBlock} node + * @param {AST.AwaitBlock} node * @param {ComponentContext} context */ export function AwaitBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/BindDirective.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/BindDirective.js index 81bafcc18a..b7819b874c 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/BindDirective.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/BindDirective.js @@ -1,5 +1,5 @@ /** @import { CallExpression, Expression, MemberExpression } from 'estree' */ -/** @import { Attribute, BindDirective } from '#compiler' */ +/** @import { AST, SvelteNode } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { dev, is_ignored } from '../../../../state.js'; import { is_text_attribute } from '../../../../utils/ast.js'; @@ -9,14 +9,14 @@ import { build_attribute_value } from './shared/element.js'; import { build_bind_this, validate_binding } from './shared/utils.js'; /** - * @param {BindDirective} node + * @param {AST.BindDirective} node * @param {ComponentContext} context */ export function BindDirective(node, context) { const expression = node.expression; const property = binding_properties[node.name]; - const parent = /** @type {import('#compiler').SvelteNode} */ (context.path.at(-1)); + const parent = /** @type {SvelteNode} */ (context.path.at(-1)); if ( dev && @@ -188,7 +188,7 @@ export function BindDirective(node, context) { if (parent?.type === 'RegularElement') { const value = /** @type {any[]} */ ( - /** @type {Attribute} */ ( + /** @type {AST.Attribute} */ ( parent.attributes.find( (a) => a.type === 'Attribute' && diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/Comment.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/Comment.js index b8d3c45903..24011e62aa 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/Comment.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/Comment.js @@ -1,8 +1,8 @@ -/** @import { Comment } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ /** - * @param {Comment} node + * @param {AST.Comment} node * @param {ComponentContext} context */ export function Comment(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/Component.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/Component.js index 9ecde4849e..a10a3da6e3 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/Component.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/Component.js @@ -1,11 +1,11 @@ /** @import { Expression } from 'estree' */ -/** @import { Component } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; import { build_component } from './shared/component.js'; /** - * @param {Component} node + * @param {AST.Component} node * @param {ComponentContext} context */ export function Component(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ConstTag.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ConstTag.js index bfff38338b..7e33aea435 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/ConstTag.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/ConstTag.js @@ -1,5 +1,5 @@ /** @import { Expression, Pattern } from 'estree' */ -/** @import { ConstTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { dev } from '../../../../state.js'; import { extract_identifiers } from '../../../../utils/ast.js'; @@ -8,7 +8,7 @@ import { create_derived } from '../utils.js'; import { get_value } from './shared/declarations.js'; /** - * @param {ConstTag} node + * @param {AST.ConstTag} node * @param {ComponentContext} context */ export function ConstTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/DebugTag.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/DebugTag.js index 7c6fd0d458..685d305ba4 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/DebugTag.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/DebugTag.js @@ -1,10 +1,10 @@ /** @import { Expression} from 'estree' */ -/** @import { DebugTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; /** - * @param {DebugTag} node + * @param {AST.DebugTag} node * @param {ComponentContext} context */ export function DebugTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/EachBlock.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/EachBlock.js index 5394bf9478..495a33e397 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/EachBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/EachBlock.js @@ -1,5 +1,5 @@ /** @import { BlockStatement, Expression, Identifier, Pattern, Statement } from 'estree' */ -/** @import { Binding, EachBlock } from '#compiler' */ +/** @import { AST, Binding } from '#compiler' */ /** @import { ComponentContext } from '../types' */ /** @import { Scope } from '../../../scope' */ import { @@ -16,7 +16,7 @@ import { build_getter } from '../utils.js'; import { get_value } from './shared/declarations.js'; /** - * @param {EachBlock} node + * @param {AST.EachBlock} node * @param {ComponentContext} context */ export function EachBlock(node, context) { @@ -289,7 +289,7 @@ export function EachBlock(node, context) { * @param {ComponentContext} context */ function collect_parent_each_blocks(context) { - return /** @type {EachBlock[]} */ (context.path.filter((node) => node.type === 'EachBlock')); + return /** @type {AST.EachBlock[]} */ (context.path.filter((node) => node.type === 'EachBlock')); } /** diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/Fragment.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/Fragment.js index 7f5d1aa19d..686d81ce8c 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/Fragment.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/Fragment.js @@ -1,5 +1,5 @@ /** @import { Expression, Identifier, Statement } from 'estree' */ -/** @import { Fragment, Namespace, RegularElement } from '#compiler' */ +/** @import { AST, Namespace } from '#compiler' */ /** @import { SourceLocation } from '#shared' */ /** @import { ComponentClientTransformState, ComponentContext } from '../types' */ import { TEMPLATE_FRAGMENT, TEMPLATE_USE_IMPORT_NODE } from '../../../../../constants.js'; @@ -10,7 +10,7 @@ import { process_children } from './shared/fragment.js'; import { build_render_statement } from './shared/utils.js'; /** - * @param {Fragment} node + * @param {AST.Fragment} node * @param {ComponentContext} context */ export function Fragment(node, context) { @@ -105,7 +105,7 @@ export function Fragment(node, context) { }; if (is_single_element) { - const element = /** @type {RegularElement} */ (trimmed[0]); + const element = /** @type {AST.RegularElement} */ (trimmed[0]); const id = b.id(context.state.scope.generate(element.name)); diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/HtmlTag.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/HtmlTag.js index e9725f29e3..32439879de 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/HtmlTag.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/HtmlTag.js @@ -1,11 +1,11 @@ /** @import { Expression } from 'estree' */ -/** @import { HtmlTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { is_ignored } from '../../../../state.js'; import * as b from '../../../../utils/builders.js'; /** - * @param {HtmlTag} node + * @param {AST.HtmlTag} node * @param {ComponentContext} context */ export function HtmlTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/IfBlock.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/IfBlock.js index 888f672be3..0aa6e5d24a 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/IfBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/IfBlock.js @@ -1,10 +1,10 @@ /** @import { BlockStatement, Expression } from 'estree' */ -/** @import { IfBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; /** - * @param {IfBlock} node + * @param {AST.IfBlock} node * @param {ComponentContext} context */ export function IfBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/KeyBlock.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/KeyBlock.js index 106a030515..a013827f60 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/KeyBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/KeyBlock.js @@ -1,10 +1,10 @@ /** @import { Expression } from 'estree' */ -/** @import { KeyBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; /** - * @param {KeyBlock} node + * @param {AST.KeyBlock} node * @param {ComponentContext} context */ export function KeyBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/LetDirective.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/LetDirective.js index d2223e77ae..e174073a26 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/LetDirective.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/LetDirective.js @@ -1,11 +1,11 @@ /** @import { Expression } from 'estree' */ -/** @import { LetDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; import { create_derived } from '../utils.js'; /** - * @param {LetDirective} node + * @param {AST.LetDirective} node * @param {ComponentContext} context */ export function LetDirective(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/OnDirective.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/OnDirective.js index 9bd22b7eb4..7c2b1209e9 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/OnDirective.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/OnDirective.js @@ -1,4 +1,4 @@ -/** @import { OnDirective, SvelteNode } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; import { build_event, build_event_handler } from './shared/events.js'; @@ -13,7 +13,7 @@ const modifiers = [ ]; /** - * @param {OnDirective} node + * @param {AST.OnDirective} node * @param {ComponentContext} context */ export function OnDirective(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js index 8c19bb4d66..6e9ddc0750 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js @@ -1,5 +1,5 @@ -/** @import { Expression, ExpressionStatement, Identifier, Literal, MemberExpression, ObjectExpression, Statement } from 'estree' */ -/** @import { Attribute, BindDirective, ClassDirective, RegularElement, SpreadAttribute, StyleDirective } from '#compiler' */ +/** @import { Expression, ExpressionStatement, Identifier, MemberExpression, ObjectExpression, Statement } from 'estree' */ +/** @import { AST } from '#compiler' */ /** @import { SourceLocation } from '#shared' */ /** @import { ComponentClientTransformState, ComponentContext } from '../types' */ /** @import { Scope } from '../../../scope' */ @@ -36,7 +36,7 @@ import { import { visit_event_attribute } from './shared/events.js'; /** - * @param {RegularElement} node + * @param {AST.RegularElement} node * @param {ComponentContext} context */ export function RegularElement(node, context) { @@ -69,13 +69,13 @@ export function RegularElement(node, context) { context.state.template.push(`<${node.name}`); - /** @type {Array} */ + /** @type {Array} */ const attributes = []; - /** @type {ClassDirective[]} */ + /** @type {AST.ClassDirective[]} */ const class_directives = []; - /** @type {StyleDirective[]} */ + /** @type {AST.StyleDirective[]} */ const style_directives = []; /** @type {ExpressionStatement[]} */ @@ -85,7 +85,7 @@ export function RegularElement(node, context) { let needs_input_reset = false; let needs_content_reset = false; - /** @type {BindDirective | null} */ + /** @type {AST.BindDirective | null} */ let value_binding = null; /** If true, needs `__value` for inputs */ @@ -215,7 +215,7 @@ export function RegularElement(node, context) { ); is_attributes_reactive = true; } else { - for (const attribute of /** @type {Attribute[]} */ (attributes)) { + for (const attribute of /** @type {AST.Attribute[]} */ (attributes)) { if (is_event_attribute(attribute)) { if ( (attribute.name === 'onload' || attribute.name === 'onerror') && @@ -384,7 +384,7 @@ export function RegularElement(node, context) { /** * Special case: if we have a value binding on a select element, we need to set up synchronization * between the value binding and inner signals, for indirect updates - * @param {BindDirective} value_binding + * @param {AST.BindDirective} value_binding * @param {ComponentContext} context */ function setup_select_synchronization(value_binding, context) { @@ -436,9 +436,9 @@ function setup_select_synchronization(value_binding, context) { } /** - * @param {Array} attributes + * @param {Array} attributes * @param {ComponentContext} context - * @param {RegularElement} element + * @param {AST.RegularElement} element * @param {Identifier} element_id * @param {boolean} needs_select_handling */ @@ -559,9 +559,9 @@ function build_element_spread_attributes( * }); * ``` * Returns true if attribute is deemed reactive, false otherwise. - * @param {RegularElement} element + * @param {AST.RegularElement} element * @param {Identifier} node_id - * @param {Attribute} attribute + * @param {AST.Attribute} attribute * @param {ComponentContext} context * @returns {boolean} */ @@ -623,7 +623,7 @@ function build_element_attribute_update_assignment(element, node_id, attribute, /** * Like `build_element_attribute_update_assignment` but without any special attribute treatment. * @param {Identifier} node_id - * @param {Attribute} attribute + * @param {AST.Attribute} attribute * @param {ComponentContext} context * @returns {boolean} */ @@ -653,7 +653,7 @@ function build_custom_element_attribute_update_assignment(node_id, attribute, co * Returns true if attribute is deemed reactive, false otherwise. * @param {string} element * @param {Identifier} node_id - * @param {Attribute} attribute + * @param {AST.Attribute} attribute * @param {ComponentContext} context * @returns {boolean} */ diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RenderTag.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RenderTag.js index 6da1f87c0d..cfb50a13db 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RenderTag.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RenderTag.js @@ -1,11 +1,11 @@ /** @import { Expression } from 'estree' */ -/** @import { RenderTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { unwrap_optional } from '../../../../utils/ast.js'; import * as b from '../../../../utils/builders.js'; /** - * @param {RenderTag} node + * @param {AST.RenderTag} node * @param {ComponentContext} context */ export function RenderTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SlotElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SlotElement.js index 8dfd48bc11..9a2240a4d6 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SlotElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SlotElement.js @@ -1,11 +1,11 @@ /** @import { BlockStatement, Expression, ExpressionStatement, Property } from 'estree' */ -/** @import { SlotElement } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; import { build_attribute_value } from './shared/element.js'; /** - * @param {SlotElement} node + * @param {AST.SlotElement} node * @param {ComponentContext} context */ export function SlotElement(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js index b62a58c8d7..814fd3b0fb 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js @@ -1,5 +1,5 @@ /** @import { BlockStatement, Expression, Identifier, Pattern, Statement } from 'estree' */ -/** @import { SnippetBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { dev } from '../../../../state.js'; import { extract_paths } from '../../../../utils/ast.js'; @@ -7,7 +7,7 @@ import * as b from '../../../../utils/builders.js'; import { get_value } from './shared/declarations.js'; /** - * @param {SnippetBlock} node + * @param {AST.SnippetBlock} node * @param {ComponentContext} context */ export function SnippetBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SpreadAttribute.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SpreadAttribute.js index 36dfb87b7d..f4931cd89b 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SpreadAttribute.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SpreadAttribute.js @@ -1,8 +1,8 @@ -/** @import { SpreadAttribute } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ /** - * @param {SpreadAttribute} node + * @param {AST.SpreadAttribute} node * @param {ComponentContext} context */ export function SpreadAttribute(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteBody.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteBody.js index c046b21534..34fc90fc32 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteBody.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteBody.js @@ -1,9 +1,9 @@ -/** @import { SvelteBody } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { visit_special_element } from './shared/special_element.js'; /** - * @param {SvelteBody} node + * @param {AST.SvelteBody} node * @param {ComponentContext} context */ export function SvelteBody(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteComponent.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteComponent.js index f24fa9cec5..85a4b611c0 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteComponent.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteComponent.js @@ -1,9 +1,9 @@ -/** @import { SvelteComponent } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { build_component } from './shared/component.js'; /** - * @param {SvelteComponent} node + * @param {AST.SvelteComponent} node * @param {ComponentContext} context */ export function SvelteComponent(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteDocument.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteDocument.js index bff32fa570..8fd05172c5 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteDocument.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteDocument.js @@ -1,9 +1,9 @@ -/** @import { SvelteDocument } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { visit_special_element } from './shared/special_element.js'; /** - * @param {SvelteDocument} node + * @param {AST.SvelteDocument} node * @param {ComponentContext} context */ export function SvelteDocument(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js index 01aff61b87..81314d67dd 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js @@ -1,8 +1,6 @@ -/** @import { BlockStatement, Expression, ExpressionStatement, Identifier, Literal, MemberExpression, ObjectExpression, Statement } from 'estree' */ -/** @import { Attribute, ClassDirective, SpreadAttribute, StyleDirective, SvelteElement } from '#compiler' */ -/** @import { SourceLocation } from '#shared' */ -/** @import { ComponentClientTransformState, ComponentContext } from '../types' */ -/** @import { Scope } from '../../../scope' */ +/** @import { BlockStatement, Expression, ExpressionStatement, Identifier, ObjectExpression, Statement } from 'estree' */ +/** @import { AST } from '#compiler' */ +/** @import { ComponentContext } from '../types' */ import { dev, locator } from '../../../../state.js'; import { get_attribute_expression, @@ -19,22 +17,22 @@ import { import { build_render_statement, build_update } from './shared/utils.js'; /** - * @param {SvelteElement} node + * @param {AST.SvelteElement} node * @param {ComponentContext} context */ export function SvelteElement(node, context) { context.state.template.push(``); - /** @type {Array} */ + /** @type {Array} */ const attributes = []; - /** @type {Attribute['value'] | undefined} */ + /** @type {AST.Attribute['value'] | undefined} */ let dynamic_namespace = undefined; - /** @type {ClassDirective[]} */ + /** @type {AST.ClassDirective[]} */ const class_directives = []; - /** @type {StyleDirective[]} */ + /** @type {AST.StyleDirective[]} */ const style_directives = []; /** @type {ExpressionStatement[]} */ @@ -139,7 +137,7 @@ export function SvelteElement(node, context) { /** * Serializes dynamic element attribute assignments. * Returns the `true` if spread is deemed reactive. - * @param {Array} attributes + * @param {Array} attributes * @param {ComponentContext} context * @param {Identifier} element_id * @returns {boolean} diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteFragment.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteFragment.js index fc5ca015c2..65cc170ce5 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteFragment.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteFragment.js @@ -1,9 +1,9 @@ /** @import { BlockStatement, ExpressionStatement } from 'estree' */ -/** @import { SvelteFragment } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ /** - * @param {SvelteFragment} node + * @param {AST.SvelteFragment} node * @param {ComponentContext} context */ export function SvelteFragment(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHead.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHead.js index 941863163e..25fcff0631 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHead.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHead.js @@ -1,10 +1,10 @@ /** @import { BlockStatement } from 'estree' */ -/** @import { SvelteHead } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; /** - * @param {SvelteHead} node + * @param {AST.SvelteHead} node * @param {ComponentContext} context */ export function SvelteHead(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteSelf.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteSelf.js index 815f6376e4..285951499c 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteSelf.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteSelf.js @@ -1,9 +1,9 @@ -/** @import { SvelteSelf } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { build_component } from './shared/component.js'; /** - * @param {SvelteSelf} node + * @param {AST.SvelteSelf} node * @param {ComponentContext} context */ export function SvelteSelf(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteWindow.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteWindow.js index a29fec60bf..dcf7be9bd4 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteWindow.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/SvelteWindow.js @@ -1,10 +1,9 @@ -/** @import { Expression } from 'estree' */ -/** @import { SvelteWindow } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { visit_special_element } from './shared/special_element.js'; /** - * @param {SvelteWindow} node + * @param {AST.SvelteWindow} node * @param {ComponentContext} context */ export function SvelteWindow(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/TitleElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/TitleElement.js index db45405330..a71deaf539 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/TitleElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/TitleElement.js @@ -1,10 +1,10 @@ -/** @import { TitleElement, Text } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; import { build_template_literal } from './shared/utils.js'; /** - * @param {TitleElement} node + * @param {AST.TitleElement} node * @param {ComponentContext} context */ export function TitleElement(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/TransitionDirective.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/TransitionDirective.js index 7b8a28452f..e331f36472 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/TransitionDirective.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/TransitionDirective.js @@ -1,12 +1,12 @@ /** @import { Expression } from 'estree' */ -/** @import { TransitionDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import { TRANSITION_GLOBAL, TRANSITION_IN, TRANSITION_OUT } from '../../../../../constants.js'; import * as b from '../../../../utils/builders.js'; import { parse_directive_name } from './shared/utils.js'; /** - * @param {TransitionDirective} node + * @param {AST.TransitionDirective} node * @param {ComponentContext} context */ export function TransitionDirective(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/UseDirective.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/UseDirective.js index f8f5798d2d..311ba36497 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/UseDirective.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/UseDirective.js @@ -1,11 +1,11 @@ /** @import { Expression } from 'estree' */ -/** @import { UseDirective } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ import * as b from '../../../../utils/builders.js'; import { parse_directive_name } from './shared/utils.js'; /** - * @param {UseDirective} node + * @param {AST.UseDirective} node * @param {ComponentContext} context */ export function UseDirective(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js index 5b1cfdbb05..03d873ba78 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js @@ -1,5 +1,5 @@ /** @import { BlockStatement, Expression, ExpressionStatement, Identifier, MemberExpression, Property, Statement } from 'estree' */ -/** @import { Component, SvelteComponent, SvelteSelf, TemplateNode } from '#compiler' */ +/** @import { AST, TemplateNode } from '#compiler' */ /** @import { ComponentContext } from '../../types.js' */ import { dev, is_ignored } from '../../../../../state.js'; import { get_attribute_chunks } from '../../../../../utils/ast.js'; @@ -11,7 +11,7 @@ import { build_event_handler } from './events.js'; import { determine_slot } from '../../../../../utils/slot.js'; /** - * @param {Component | SvelteComponent | SvelteSelf} node + * @param {AST.Component | AST.SvelteComponent | AST.SvelteSelf} node * @param {string} component_name * @param {ComponentContext} context * @param {Expression} anchor diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/element.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/element.js index c3db0edb0a..5ac6d0afa0 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/element.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/element.js @@ -1,5 +1,5 @@ /** @import { Expression, Identifier } from 'estree' */ -/** @import { Attribute, ClassDirective, ExpressionMetadata, Namespace, RegularElement, StyleDirective, SvelteElement } from '#compiler' */ +/** @import { AST, Namespace } from '#compiler' */ /** @import { ComponentContext } from '../../types' */ import { normalize_attribute } from '../../../../../../utils.js'; import * as b from '../../../../../utils/builders.js'; @@ -9,7 +9,7 @@ import { build_template_literal, build_update } from './utils.js'; /** * Serializes each style directive into something like `$.set_style(element, style_property, value)` * and adds it either to init or update, depending on whether or not the value or the attributes are dynamic. - * @param {StyleDirective[]} style_directives + * @param {AST.StyleDirective[]} style_directives * @param {Identifier} element_id * @param {ComponentContext} context * @param {boolean} is_attributes_reactive @@ -56,7 +56,7 @@ export function build_style_directives( /** * Serializes each class directive into something like `$.class_toogle(element, class_name, value)` * and adds it either to init or update, depending on whether or not the value or the attributes are dynamic. - * @param {ClassDirective[]} class_directives + * @param {AST.ClassDirective[]} class_directives * @param {Identifier} element_id * @param {ComponentContext} context * @param {boolean} is_attributes_reactive @@ -85,7 +85,7 @@ export function build_class_directives( } /** - * @param {Attribute['value']} value + * @param {AST.Attribute['value']} value * @param {ComponentContext} context */ export function build_attribute_value(value, context) { @@ -111,8 +111,8 @@ export function build_attribute_value(value, context) { } /** - * @param {RegularElement | SvelteElement} element - * @param {Attribute} attribute + * @param {AST.RegularElement | AST.SvelteElement} element + * @param {AST.Attribute} attribute * @param {{ state: { metadata: { namespace: Namespace }}}} context */ export function get_attribute_name(element, attribute, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/events.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/events.js index 24b4a9c218..92f99c4a8b 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/events.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/events.js @@ -1,12 +1,12 @@ /** @import { Expression } from 'estree' */ -/** @import { Attribute, ExpressionMetadata, ExpressionTag, SvelteNode } from '#compiler' */ +/** @import { AST, ExpressionMetadata, SvelteNode } from '#compiler' */ /** @import { ComponentContext } from '../../types' */ import { is_capture_event, is_passive_event } from '../../../../../../utils.js'; import { dev, locator } from '../../../../../state.js'; import * as b from '../../../../../utils/builders.js'; /** - * @param {Attribute} node + * @param {AST.Attribute} node * @param {ComponentContext} context */ export function visit_event_attribute(node, context) { @@ -20,8 +20,8 @@ export function visit_event_attribute(node, context) { // we still need to support the weird `onclick="{() => {...}}" form const tag = Array.isArray(node.value) - ? /** @type {ExpressionTag} */ (node.value[0]) - : /** @type {ExpressionTag} */ (node.value); + ? /** @type {AST.ExpressionTag} */ (node.value[0]) + : /** @type {AST.ExpressionTag} */ (node.value); let handler = build_event_handler(tag.expression, tag.metadata.expression, context); diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js index 963bbade82..4008dbdfa3 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js @@ -1,5 +1,5 @@ /** @import { Expression } from 'estree' */ -/** @import { ExpressionTag, SvelteNode, Text } from '#compiler' */ +/** @import { AST, SvelteNode } from '#compiler' */ /** @import { ComponentContext } from '../../types' */ import { is_event_attribute, is_text_attribute } from '../../../../../utils/ast.js'; import * as b from '../../../../../utils/builders.js'; @@ -19,7 +19,7 @@ export function process_children(nodes, initial, is_element, { visit, state }) { let prev = initial; let skipped = 0; - /** @typedef {Array} Sequence */ + /** @typedef {Array} Sequence */ /** @type {Sequence} */ let sequence = []; @@ -123,7 +123,6 @@ export function process_children(nodes, initial, is_element, { visit, state }) { } /** - * * @param {SvelteNode} node */ function is_static_element(node) { diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/special_element.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/special_element.js index 7bacf71034..558bc4fee7 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/special_element.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/special_element.js @@ -1,11 +1,11 @@ /** @import { Expression } from 'estree' */ -/** @import { SvelteBody, SvelteDocument, SvelteWindow } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../../types' */ import * as b from '../../../../../utils/builders.js'; /** * - * @param {SvelteBody | SvelteDocument | SvelteWindow} node + * @param {AST.SvelteBody | AST.SvelteDocument | AST.SvelteWindow} node * @param {string} id * @param {ComponentContext} context */ diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js index b7ec27f6e3..46c3a4e7b5 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js @@ -1,6 +1,6 @@ -/** @import { Expression, ExpressionStatement, Identifier, MemberExpression, Statement, Super, TemplateElement, TemplateLiteral } from 'estree' */ -/** @import { BindDirective, DelegatedEvent, ExpressionMetadata, ExpressionTag, OnDirective, SvelteNode, Text } from '#compiler' */ -/** @import { ComponentClientTransformState, ComponentContext } from '../../types' */ +/** @import { Expression, ExpressionStatement, Identifier, MemberExpression, Statement, Super } from 'estree' */ +/** @import { AST, SvelteNode } from '#compiler' */ +/** @import { ComponentClientTransformState } from '../../types' */ import { walk } from 'zimmerframe'; import { object } from '../../../../../utils/ast.js'; import * as b from '../../../../../utils/builders.js'; @@ -11,7 +11,7 @@ import is_reference from 'is-reference'; import { locator } from '../../../../../state.js'; /** - * @param {Array} values + * @param {Array} values * @param {(node: SvelteNode, state: any) => any} visit * @param {ComponentClientTransformState} state */ @@ -221,7 +221,7 @@ export function build_bind_this(expression, value, { state, visit }) { /** * @param {ComponentClientTransformState} state - * @param {BindDirective} binding + * @param {AST.BindDirective} binding * @param {MemberExpression} expression */ export function validate_binding(state, binding, expression) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/types.d.ts b/packages/svelte/src/compiler/phases/3-transform/server/types.d.ts index 207d712d67..716e1105f0 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/types.d.ts +++ b/packages/svelte/src/compiler/phases/3-transform/server/types.d.ts @@ -1,5 +1,5 @@ import type { Expression, Statement, ModuleDeclaration, LabeledStatement } from 'estree'; -import type { SvelteNode, Namespace, ValidatedCompileOptions } from '#compiler'; +import type { Namespace, SvelteNode, ValidatedCompileOptions } from '#compiler'; import type { TransformState } from '../types.js'; import type { ComponentAnalysis } from '../../types.js'; import type { StateField } from '../client/types.js'; diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js index 8482e0b74e..8fc82b8905 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js @@ -1,11 +1,11 @@ /** @import { BlockStatement, Expression, Pattern } from 'estree' */ -/** @import { AwaitBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; import { empty_comment } from './shared/utils.js'; /** - * @param {AwaitBlock} node + * @param {AST.AwaitBlock} node * @param {ComponentContext} context */ export function AwaitBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/Component.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/Component.js index 33bf99b84d..01bf50fafa 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/Component.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/Component.js @@ -1,10 +1,10 @@ -/** @import { Component } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; import { build_inline_component } from './shared/component.js'; /** - * @param {Component} node + * @param {AST.Component} node * @param {ComponentContext} context */ export function Component(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/ConstTag.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/ConstTag.js index 85da73fbee..5f6aea8338 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/ConstTag.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/ConstTag.js @@ -1,10 +1,10 @@ /** @import { Expression, Pattern } from 'estree' */ -/** @import { ConstTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; /** - * @param {ConstTag} node + * @param {AST.ConstTag} node * @param {ComponentContext} context */ export function ConstTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/DebugTag.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/DebugTag.js index 5fd7740e66..6fe4e0b82b 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/DebugTag.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/DebugTag.js @@ -1,10 +1,10 @@ /** @import { Expression } from 'estree' */ -/** @import { DebugTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; /** - * @param {DebugTag} node + * @param {AST.DebugTag} node * @param {ComponentContext} context */ export function DebugTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/EachBlock.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/EachBlock.js index 9595fd436a..dba8976a20 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/EachBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/EachBlock.js @@ -1,12 +1,12 @@ /** @import { BlockStatement, Expression, Pattern, Statement } from 'estree' */ -/** @import { EachBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import { BLOCK_OPEN_ELSE } from '../../../../../internal/server/hydration.js'; import * as b from '../../../../utils/builders.js'; import { block_close, block_open } from './shared/utils.js'; /** - * @param {EachBlock} node + * @param {AST.EachBlock} node * @param {ComponentContext} context */ export function EachBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/Fragment.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/Fragment.js index 64fde5b85c..a293b98e7e 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/Fragment.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/Fragment.js @@ -1,11 +1,11 @@ -/** @import { Fragment } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext, ComponentServerTransformState } from '../types.js' */ import { clean_nodes, infer_namespace } from '../../utils.js'; import * as b from '../../../../utils/builders.js'; import { empty_comment, process_children, build_template } from './shared/utils.js'; /** - * @param {Fragment} node + * @param {AST.Fragment} node * @param {ComponentContext} context */ export function Fragment(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/HtmlTag.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/HtmlTag.js index 9e49070fdf..0d551a884a 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/HtmlTag.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/HtmlTag.js @@ -1,10 +1,10 @@ /** @import { Expression } from 'estree' */ -/** @import { HtmlTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; /** - * @param {HtmlTag} node + * @param {AST.HtmlTag} node * @param {ComponentContext} context */ export function HtmlTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js index e1bc13a96b..4df09aa8b9 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js @@ -1,12 +1,12 @@ /** @import { BlockStatement, Expression } from 'estree' */ -/** @import { IfBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import { BLOCK_OPEN_ELSE } from '../../../../../internal/server/hydration.js'; import * as b from '../../../../utils/builders.js'; import { block_close, block_open } from './shared/utils.js'; /** - * @param {IfBlock} node + * @param {AST.IfBlock} node * @param {ComponentContext} context */ export function IfBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/KeyBlock.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/KeyBlock.js index ec8dd423ab..f1dc9fa1b4 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/KeyBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/KeyBlock.js @@ -1,10 +1,10 @@ /** @import { BlockStatement } from 'estree' */ -/** @import { KeyBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import { empty_comment } from './shared/utils.js'; /** - * @param {KeyBlock} node + * @param {AST.KeyBlock} node * @param {ComponentContext} context */ export function KeyBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/RegularElement.js index 0fcbe17bdf..af50695efa 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/RegularElement.js @@ -1,5 +1,5 @@ /** @import { Location } from 'locate-character' */ -/** @import { RegularElement, Text } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext, ComponentServerTransformState } from '../types.js' */ /** @import { Scope } from '../../../scope.js' */ import { is_void } from '../../../../../utils.js'; @@ -10,7 +10,7 @@ import { build_element_attributes } from './shared/element.js'; import { process_children, build_template } from './shared/utils.js'; /** - * @param {RegularElement} node + * @param {AST.RegularElement} node * @param {ComponentContext} context */ export function RegularElement(node, context) { @@ -30,7 +30,7 @@ export function RegularElement(node, context) { if ((node.name === 'script' || node.name === 'style') && node.fragment.nodes.length === 1) { context.state.template.push( - b.literal(/** @type {Text} */ (node.fragment.nodes[0]).data), + b.literal(/** @type {AST.Text} */ (node.fragment.nodes[0]).data), b.literal(``) ); diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/RenderTag.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/RenderTag.js index dfd9983ef6..ebf8c3be1c 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/RenderTag.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/RenderTag.js @@ -1,12 +1,12 @@ /** @import { Expression } from 'estree' */ -/** @import { RenderTag } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import { unwrap_optional } from '../../../../utils/ast.js'; import * as b from '../../../../utils/builders.js'; import { empty_comment } from './shared/utils.js'; /** - * @param {RenderTag} node + * @param {AST.RenderTag} node * @param {ComponentContext} context */ export function RenderTag(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SlotElement.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SlotElement.js index 01f98a5908..6627b7b97d 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SlotElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SlotElement.js @@ -1,11 +1,11 @@ -/** @import { BlockStatement, Expression, ExpressionStatement, Property } from 'estree' */ -/** @import { SlotElement } from '#compiler' */ +/** @import { BlockStatement, Expression, Property } from 'estree' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; import { empty_comment, build_attribute_value } from './shared/utils.js'; /** - * @param {SlotElement} node + * @param {AST.SlotElement} node * @param {ComponentContext} context */ export function SlotElement(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SnippetBlock.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SnippetBlock.js index a3a8ce5d06..ec06dd5ec7 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SnippetBlock.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SnippetBlock.js @@ -1,10 +1,10 @@ /** @import { BlockStatement } from 'estree' */ -/** @import { SnippetBlock } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; /** - * @param {SnippetBlock} node + * @param {AST.SnippetBlock} node * @param {ComponentContext} context */ export function SnippetBlock(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SpreadAttribute.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SpreadAttribute.js index 36dfb87b7d..f4931cd89b 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SpreadAttribute.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SpreadAttribute.js @@ -1,8 +1,8 @@ -/** @import { SpreadAttribute } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ /** - * @param {SpreadAttribute} node + * @param {AST.SpreadAttribute} node * @param {ComponentContext} context */ export function SpreadAttribute(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteComponent.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteComponent.js index 973ac790d6..786446bdb2 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteComponent.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteComponent.js @@ -1,10 +1,10 @@ /** @import { Expression } from 'estree' */ -/** @import { SvelteComponent } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import { build_inline_component } from './shared/component.js'; /** - * @param {SvelteComponent} node + * @param {AST.SvelteComponent} node * @param {ComponentContext} context */ export function SvelteComponent(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteElement.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteElement.js index 390fde6811..d53a223dbe 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteElement.js @@ -1,6 +1,6 @@ /** @import { Location } from 'locate-character' */ /** @import { BlockStatement, Expression } from 'estree' */ -/** @import { SvelteElement } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import { dev, locator } from '../../../../state.js'; import * as b from '../../../../utils/builders.js'; @@ -9,7 +9,7 @@ import { build_element_attributes } from './shared/element.js'; import { build_template } from './shared/utils.js'; /** - * @param {SvelteElement} node + * @param {AST.SvelteElement} node * @param {ComponentContext} context */ export function SvelteElement(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteFragment.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteFragment.js index 1b73ae7cfc..49fb59d0e5 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteFragment.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteFragment.js @@ -1,9 +1,9 @@ /** @import { BlockStatement } from 'estree' */ -/** @import { SvelteFragment } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types' */ /** - * @param {SvelteFragment} node + * @param {AST.SvelteFragment} node * @param {ComponentContext} context */ export function SvelteFragment(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js index b150a123db..7da7d8355c 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js @@ -1,10 +1,10 @@ /** @import { BlockStatement } from 'estree' */ -/** @import { SvelteHead } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; /** - * @param {SvelteHead} node + * @param {AST.SvelteHead} node * @param {ComponentContext} context */ export function SvelteHead(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteSelf.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteSelf.js index a992abd3ea..fbedcff283 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteSelf.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/SvelteSelf.js @@ -1,10 +1,10 @@ -/** @import { SvelteSelf } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; import { build_inline_component } from './shared/component.js'; /** - * @param {SvelteSelf} node + * @param {AST.SvelteSelf} node * @param {ComponentContext} context */ export function SvelteSelf(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/TitleElement.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/TitleElement.js index ae215d37f8..8fd1973453 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/TitleElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/TitleElement.js @@ -1,10 +1,10 @@ -/** @import { TitleElement } from '#compiler' */ +/** @import { AST } from '#compiler' */ /** @import { ComponentContext } from '../types.js' */ import * as b from '../../../../utils/builders.js'; import { process_children, build_template } from './shared/utils.js'; /** - * @param {TitleElement} node + * @param {AST.TitleElement} node * @param {ComponentContext} context */ export function TitleElement(node, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js index 941088228a..247f51ac8a 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js @@ -1,12 +1,12 @@ /** @import { BlockStatement, Expression, Pattern, Property, Statement } from 'estree' */ -/** @import { Attribute, Component, LetDirective, SvelteComponent, SvelteSelf, TemplateNode, Text } from '#compiler' */ +/** @import { AST, TemplateNode } from '#compiler' */ /** @import { ComponentContext } from '../../types.js' */ import { empty_comment, build_attribute_value } from './utils.js'; import * as b from '../../../../../utils/builders.js'; import { is_element_node } from '../../../../nodes.js'; /** - * @param {Component | SvelteComponent | SvelteSelf} node + * @param {AST.Component | AST.SvelteComponent | AST.SvelteSelf} node * @param {Expression} expression * @param {ComponentContext} context */ @@ -17,7 +17,7 @@ export function build_inline_component(node, expression, context) { /** @type {Property[]} */ const custom_css_props = []; - /** @type {Record} */ + /** @type {Record} */ const lets = { default: [] }; /** @@ -120,14 +120,14 @@ export function build_inline_component(node, expression, context) { let slot_name = 'default'; if (is_element_node(child)) { - const slot = /** @type {Attribute | undefined} */ ( + const slot = /** @type {AST.Attribute | undefined} */ ( child.attributes.find( (attribute) => attribute.type === 'Attribute' && attribute.name === 'slot' ) ); if (slot !== undefined) { - slot_name = /** @type {Text[]} */ (slot.value)[0].data; + slot_name = /** @type {AST.Text[]} */ (slot.value)[0].data; lets[slot_name] = child.attributes.filter((attribute) => attribute.type === 'LetDirective'); } else if (child.type === 'SvelteFragment') { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js index ea123bf643..a968d646ad 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js @@ -1,5 +1,5 @@ -/** @import { Expression, ExpressionStatement, Literal } from 'estree' */ -/** @import { Attribute, ClassDirective, Namespace, RegularElement, SpreadAttribute, StyleDirective, SvelteElement, SvelteNode } from '#compiler' */ +/** @import { Expression, Literal } from 'estree' */ +/** @import { AST, Namespace, SvelteNode } from '#compiler' */ /** @import { ComponentContext, ComponentServerTransformState } from '../../types.js' */ import { get_attribute_chunks, @@ -30,17 +30,17 @@ const WHITESPACE_INSENSITIVE_ATTRIBUTES = ['class', 'style']; /** * Writes the output to the template output. Some elements may have attributes on them that require the * their output to be the child content instead. In this case, an object is returned. - * @param {RegularElement | SvelteElement} node + * @param {AST.RegularElement | AST.SvelteElement} node * @param {import('zimmerframe').Context} context */ export function build_element_attributes(node, context) { - /** @type {Array} */ + /** @type {Array} */ const attributes = []; - /** @type {ClassDirective[]} */ + /** @type {AST.ClassDirective[]} */ const class_directives = []; - /** @type {StyleDirective[]} */ + /** @type {AST.StyleDirective[]} */ const style_directives = []; /** @type {Expression | null} */ @@ -117,7 +117,7 @@ export function build_element_attributes(node, context) { /** @type {Expression} */ (context.visit(attribute.expression)) ); } else if (attribute.name === 'group') { - const value_attribute = /** @type {Attribute | undefined} */ ( + const value_attribute = /** @type {AST.Attribute | undefined} */ ( node.attributes.find((attr) => attr.type === 'Attribute' && attr.name === 'value') ); if (!value_attribute) continue; @@ -194,7 +194,7 @@ export function build_element_attributes(node, context) { if (class_directives.length > 0 && !has_spread) { const class_attribute = build_class_directives( class_directives, - /** @type {Attribute | null} */ (attributes[class_index] ?? null) + /** @type {AST.Attribute | null} */ (attributes[class_index] ?? null) ); if (class_index === -1) { attributes.push(class_attribute); @@ -204,7 +204,7 @@ export function build_element_attributes(node, context) { if (style_directives.length > 0 && !has_spread) { build_style_directives( style_directives, - /** @type {Attribute | null} */ (attributes[style_index] ?? null), + /** @type {AST.Attribute | null} */ (attributes[style_index] ?? null), context ); if (style_index > -1) { @@ -215,7 +215,7 @@ export function build_element_attributes(node, context) { if (has_spread) { build_element_spread_attributes(node, attributes, style_directives, class_directives, context); } else { - for (const attribute of /** @type {Attribute[]} */ (attributes)) { + for (const attribute of /** @type {AST.Attribute[]} */ (attributes)) { if (attribute.value === true || is_text_attribute(attribute)) { const name = get_attribute_name(node, attribute, context); const literal_value = /** @type {Literal} */ ( @@ -262,8 +262,8 @@ export function build_element_attributes(node, context) { } /** - * @param {RegularElement | SvelteElement} element - * @param {Attribute} attribute + * @param {AST.RegularElement | AST.SvelteElement} element + * @param {AST.Attribute} attribute * @param {{ state: { namespace: Namespace }}} context */ function get_attribute_name(element, attribute, context) { @@ -278,10 +278,10 @@ function get_attribute_name(element, attribute, context) { /** * - * @param {RegularElement | SvelteElement} element - * @param {Array} attributes - * @param {StyleDirective[]} style_directives - * @param {ClassDirective[]} class_directives + * @param {AST.RegularElement | AST.SvelteElement} element + * @param {Array} attributes + * @param {AST.StyleDirective[]} style_directives + * @param {AST.ClassDirective[]} class_directives * @param {ComponentContext} context */ function build_element_spread_attributes( @@ -353,8 +353,8 @@ function build_element_spread_attributes( /** * - * @param {ClassDirective[]} class_directives - * @param {Attribute | null} class_attribute + * @param {AST.ClassDirective[]} class_directives + * @param {AST.Attribute | null} class_attribute * @returns */ function build_class_directives(class_directives, class_attribute) { @@ -402,8 +402,8 @@ function build_class_directives(class_directives, class_attribute) { } /** - * @param {StyleDirective[]} style_directives - * @param {Attribute | null} style_attribute + * @param {AST.StyleDirective[]} style_directives + * @param {AST.Attribute | null} style_attribute * @param {ComponentContext} context */ function build_style_directives(style_directives, style_attribute, context) { diff --git a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js index fa93c8af92..26b92638a8 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js @@ -1,5 +1,5 @@ -/** @import { AssignmentOperator, Expression, Identifier, Node, Statement, TemplateElement } from 'estree' */ -/** @import { Attribute, Comment, ExpressionTag, SvelteNode, Text } from '#compiler' */ +/** @import { AssignmentOperator, Expression, Identifier, Node, Statement, TemplateElement } from 'estree' */ +/** @import { AST, SvelteNode } from '#compiler' */ /** @import { ComponentContext, ServerTransformState } from '../../types.js' */ import { escape_html } from '../../../../../../escaping.js'; @@ -28,7 +28,7 @@ export const empty_comment = b.literal(EMPTY_COMMENT); * @param {ComponentContext} context */ export function process_children(nodes, { visit, state }) { - /** @type {Array} */ + /** @type {Array} */ let sequence = []; function flush() { @@ -146,7 +146,7 @@ export function build_template(template, out = b.id('$$payload.out'), operator = /** * - * @param {Attribute['value']} value + * @param {AST.Attribute['value']} value * @param {ComponentContext} context * @param {boolean} trim_whitespace * @param {boolean} is_component diff --git a/packages/svelte/src/compiler/phases/3-transform/utils.js b/packages/svelte/src/compiler/phases/3-transform/utils.js index a1cefe90d8..6d4d45558c 100644 --- a/packages/svelte/src/compiler/phases/3-transform/utils.js +++ b/packages/svelte/src/compiler/phases/3-transform/utils.js @@ -1,6 +1,6 @@ /** @import { Context } from 'zimmerframe' */ /** @import { TransformState } from './types.js' */ -/** @import * as Compiler from '#compiler' */ +/** @import { AST, Binding, Namespace, SvelteNode, ValidatedCompileOptions } from '#compiler' */ /** @import { Node, Expression, CallExpression } from 'estree' */ import { regex_ends_with_whitespaces, @@ -33,20 +33,20 @@ export function is_hoisted_function(node) { /** * Match Svelte 4 behaviour by sorting ConstTag nodes in topological order - * @param {Compiler.SvelteNode[]} nodes + * @param {SvelteNode[]} nodes * @param {TransformState} state */ function sort_const_tags(nodes, state) { /** * @typedef {{ - * node: Compiler.ConstTag; - * deps: Set; + * node: AST.ConstTag; + * deps: Set; * }} Tag */ const other = []; - /** @type {Map} */ + /** @type {Map} */ const tags = new Map(); for (const node of nodes) { @@ -54,10 +54,10 @@ function sort_const_tags(nodes, state) { const declaration = node.declaration.declarations[0]; const bindings = extract_identifiers(declaration.id).map((id) => { - return /** @type {Compiler.Binding} */ (state.scope.get(id.name)); + return /** @type {Binding} */ (state.scope.get(id.name)); }); - /** @type {Set} */ + /** @type {Set} */ const deps = new Set(); walk(declaration.init, state, { @@ -85,7 +85,7 @@ function sort_const_tags(nodes, state) { return nodes; } - /** @type {Array<[Compiler.Binding, Compiler.Binding]>} */ + /** @type {Array<[Binding, Binding]>} */ const edges = []; for (const [id, tag] of tags) { @@ -102,7 +102,7 @@ function sort_const_tags(nodes, state) { e.const_tag_cycle(tag.node, cycle.map((binding) => binding.node.name).join(' → ')); } - /** @type {Compiler.ConstTag[]} */ + /** @type {AST.ConstTag[]} */ const sorted = []; /** @param {Tag} tag */ @@ -133,11 +133,11 @@ function sort_const_tags(nodes, state) { * unless it's whitespace-only, in which case collapse to a single whitespace for all cases * except when it's children of certain elements where we know ignore whitespace (like td/option/head), * in which case we remove it entirely - * @param {Compiler.SvelteNode} parent - * @param {Compiler.SvelteNode[]} nodes - * @param {Compiler.SvelteNode[]} path - * @param {Compiler.Namespace} namespace - * @param {TransformState & { options: Compiler.ValidatedCompileOptions }} state + * @param {SvelteNode} parent + * @param {SvelteNode[]} nodes + * @param {SvelteNode[]} path + * @param {Namespace} namespace + * @param {TransformState & { options: ValidatedCompileOptions }} state * @param {boolean} preserve_whitespace * @param {boolean} preserve_comments */ @@ -157,10 +157,10 @@ export function clean_nodes( nodes = sort_const_tags(nodes, state); } - /** @type {Compiler.SvelteNode[]} */ + /** @type {SvelteNode[]} */ const hoisted = []; - /** @type {Compiler.SvelteNode[]} */ + /** @type {SvelteNode[]} */ const regular = []; for (const node of nodes) { @@ -302,9 +302,9 @@ export function clean_nodes( /** * Infers the namespace for the children of a node that should be used when creating the `$.template(...)`. - * @param {Compiler.Namespace} namespace - * @param {Compiler.SvelteNode} parent - * @param {Compiler.SvelteNode[]} nodes + * @param {Namespace} namespace + * @param {SvelteNode} parent + * @param {SvelteNode[]} nodes */ export function infer_namespace(namespace, parent, nodes) { if (parent.type === 'RegularElement' && parent.name === 'foreignObject') { @@ -341,12 +341,12 @@ export function infer_namespace(namespace, parent, nodes) { * Heuristic: Keep current namespace, unless we find a regular element, * in which case we always want html, or we only find svg nodes, * in which case we assume svg. - * @param {Compiler.SvelteNode[]} nodes - * @param {Compiler.Namespace | 'keep' | 'maybe_html'} namespace + * @param {SvelteNode[]} nodes + * @param {Namespace | 'keep' | 'maybe_html'} namespace */ function check_nodes_for_namespace(nodes, namespace) { /** - * @param {Compiler.SvelteElement | Compiler.RegularElement} node} + * @param {AST.SvelteElement | AST.RegularElement} node} * @param {{stop: () => void}} context */ const RegularElement = (node, { stop }) => { @@ -395,9 +395,9 @@ function check_nodes_for_namespace(nodes, namespace) { /** * Determines the namespace the children of this node are in. - * @param {Compiler.RegularElement | Compiler.SvelteElement} node - * @param {Compiler.Namespace} namespace - * @returns {Compiler.Namespace} + * @param {AST.RegularElement | AST.SvelteElement} node + * @param {Namespace} namespace + * @returns {Namespace} */ export function determine_namespace_for_children(node, namespace) { if (node.name === 'foreignObject') { diff --git a/packages/svelte/src/compiler/phases/nodes.js b/packages/svelte/src/compiler/phases/nodes.js index 6237f22899..54ac4b6b4b 100644 --- a/packages/svelte/src/compiler/phases/nodes.js +++ b/packages/svelte/src/compiler/phases/nodes.js @@ -1,4 +1,4 @@ -/** @import * as Compiler from '#compiler' */ +/** @import { AST, ExpressionMetadata, SvelteNode } from '#compiler' */ /** * All nodes that can appear elsewhere than the top level, have attributes and can contain children */ @@ -14,15 +14,15 @@ const element_nodes = [ /** * Returns true for all nodes that can appear elsewhere than the top level, have attributes and can contain children - * @param {Compiler.SvelteNode} node - * @returns {node is Compiler.Component | Compiler.RegularElement | Compiler.SlotElement | Compiler.SvelteComponent | Compiler.SvelteElement | Compiler.SvelteFragment | Compiler.SvelteSelf} + * @param {SvelteNode} node + * @returns {node is AST.Component | AST.RegularElement | AST.SlotElement | AST.SvelteComponent | AST.SvelteElement | AST.SvelteFragment | AST.SvelteSelf} */ export function is_element_node(node) { return element_nodes.includes(node.type); } /** - * @param {Compiler.RegularElement | Compiler.SvelteElement} node + * @param {AST.RegularElement | AST.SvelteElement} node * @returns {boolean} */ export function is_custom_element_node(node) { @@ -33,8 +33,8 @@ export function is_custom_element_node(node) { * @param {string} name * @param {number} start * @param {number} end - * @param {Compiler.Attribute['value']} value - * @returns {Compiler.Attribute} + * @param {AST.Attribute['value']} value + * @returns {AST.Attribute} */ export function create_attribute(name, start, end, value) { return { @@ -52,7 +52,7 @@ export function create_attribute(name, start, end, value) { } /** - * @returns {Compiler.ExpressionMetadata} + * @returns {ExpressionMetadata} */ export function create_expression_metadata() { return { diff --git a/packages/svelte/src/compiler/phases/scope.js b/packages/svelte/src/compiler/phases/scope.js index 7aea1e773b..3a7cc6c94c 100644 --- a/packages/svelte/src/compiler/phases/scope.js +++ b/packages/svelte/src/compiler/phases/scope.js @@ -1,6 +1,6 @@ /** @import { ClassDeclaration, Expression, FunctionDeclaration, Identifier, ImportDeclaration, MemberExpression, Node, Pattern, VariableDeclarator } from 'estree' */ /** @import { Context, Visitor } from 'zimmerframe' */ -/** @import { AnimateDirective, Binding, Component, DeclarationKind, EachBlock, ElementLike, LetDirective, SvelteComponent, SvelteNode, SvelteSelf, TransitionDirective, UseDirective } from '#compiler' */ +/** @import { AST, Binding, DeclarationKind, ElementLike, SvelteNode } from '#compiler' */ import is_reference from 'is-reference'; import { walk } from 'zimmerframe'; import { create_expression_metadata } from './nodes.js'; @@ -40,7 +40,7 @@ export class Scope { /** * A map of declarators to the bindings they declare - * @type {Map} + * @type {Map} */ declarators = new Map(); @@ -74,7 +74,7 @@ export class Scope { * @param {Identifier} node * @param {Binding['kind']} kind * @param {DeclarationKind} declaration_kind - * @param {null | Expression | FunctionDeclaration | ClassDeclaration | ImportDeclaration | EachBlock} initial + * @param {null | Expression | FunctionDeclaration | ClassDeclaration | ImportDeclaration | AST.EachBlock} initial * @returns {Binding} */ declare(node, kind, declaration_kind, initial = null) { @@ -168,7 +168,7 @@ export class Scope { } /** - * @param {VariableDeclarator | LetDirective} node + * @param {VariableDeclarator | AST.LetDirective} node * @returns {Binding[]} */ get_bindings(node) { @@ -298,7 +298,7 @@ export function create_scopes(ast, root, allow_reactive_declarations, parent) { }; /** - * @type {Visitor} + * @type {Visitor} */ const Component = (node, context) => { node.metadata.scopes = { @@ -335,7 +335,7 @@ export function create_scopes(ast, root, allow_reactive_declarations, parent) { }; /** - * @type {Visitor} + * @type {Visitor} */ const SvelteDirective = (node, { state, path, visit }) => { state.scope.reference(b.id(node.name.split('.')[0]), path); @@ -724,7 +724,7 @@ export function set_scope(node, { next, state }) { /** * Returns the name of the rune if the given expression is a `CallExpression` using a rune. - * @param {Node | EachBlock | null | undefined} node + * @param {Node | AST.EachBlock | null | undefined} node * @param {Scope} scope */ export function get_rune(node, scope) { diff --git a/packages/svelte/src/compiler/phases/types.d.ts b/packages/svelte/src/compiler/phases/types.d.ts index 1f60816557..723e259412 100644 --- a/packages/svelte/src/compiler/phases/types.d.ts +++ b/packages/svelte/src/compiler/phases/types.d.ts @@ -1,14 +1,4 @@ -import type { - Binding, - Css, - Fragment, - OnDirective, - RegularElement, - SlotElement, - SvelteElement, - SvelteNode, - SvelteOptions -} from '#compiler'; +import type { AST, Binding, Css, SvelteNode } from '#compiler'; import type { Identifier, LabeledStatement, Program, VariableDeclaration } from 'estree'; import type { Scope, ScopeRoot } from './scope.js'; @@ -19,7 +9,7 @@ export interface Js { } export interface Template { - ast: Fragment; + ast: AST.Fragment; scope: Scope; scopes: Map; } @@ -46,7 +36,7 @@ export interface ComponentAnalysis extends Analysis { root: ScopeRoot; instance: Js; template: Template; - elements: Array; + elements: Array; runes: boolean; exports: Array<{ name: string; alias: string | null }>; /** Whether the component uses `$$props` */ @@ -60,21 +50,21 @@ export interface ComponentAnalysis extends Analysis { needs_context: boolean; needs_props: boolean; /** Set to the first event directive (on:x) found on a DOM element in the code */ - event_directive_node: OnDirective | null; + event_directive_node: AST.OnDirective | null; /** true if uses event attributes (onclick) on a DOM element */ uses_event_attributes: boolean; /** * Contains the content of ``, * or if not present a boolean which corresponds to the compiler option value */ - custom_element: boolean | SvelteOptions['customElement']; + custom_element: boolean | AST.SvelteOptions['customElement']; /** If `true`, should append styles through JavaScript */ inject_styles: boolean; reactive_statements: Map; top_level_snippets: VariableDeclaration[]; /** Identifiers that make up the `bind:group` expression -> internal group binding name */ binding_groups: Map<[key: string, bindings: Array], Identifier>; - slot_names: Map; + slot_names: Map; css: { ast: Css.StyleSheet | null; hash: string; diff --git a/packages/svelte/src/compiler/public.d.ts b/packages/svelte/src/compiler/public.d.ts index b7bd392001..6cda8c6925 100644 --- a/packages/svelte/src/compiler/public.d.ts +++ b/packages/svelte/src/compiler/public.d.ts @@ -12,3 +12,4 @@ export type { CompileResult, Warning } from './types/index'; +export type { AST } from './types/template'; diff --git a/packages/svelte/src/compiler/state.js b/packages/svelte/src/compiler/state.js index 18bf33570c..4602f76e8e 100644 --- a/packages/svelte/src/compiler/state.js +++ b/packages/svelte/src/compiler/state.js @@ -66,7 +66,6 @@ export function reset_warning_filter(fn = () => true) { } /** - * * @param {SvelteNode | NodeLike} node * @param {import('../constants.js').IGNORABLE_RUNTIME_WARNINGS[number]} code * @returns diff --git a/packages/svelte/src/compiler/types/css.d.ts b/packages/svelte/src/compiler/types/css.d.ts index 8e168a2b74..e2346e697d 100644 --- a/packages/svelte/src/compiler/types/css.d.ts +++ b/packages/svelte/src/compiler/types/css.d.ts @@ -1,4 +1,4 @@ -import type { Comment } from '#compiler'; +import type { AST } from '#compiler'; export namespace Css { export interface BaseNode { @@ -15,7 +15,7 @@ export namespace Css { end: number; styles: string; /** Possible comment atop the style tag */ - comment: Comment | null; + comment: AST.Comment | null; }; } diff --git a/packages/svelte/src/compiler/types/index.d.ts b/packages/svelte/src/compiler/types/index.d.ts index fc6163e365..40611b31ae 100644 --- a/packages/svelte/src/compiler/types/index.d.ts +++ b/packages/svelte/src/compiler/types/index.d.ts @@ -1,5 +1,4 @@ import type { - AssignmentExpression, ClassDeclaration, Expression, FunctionDeclaration, @@ -7,10 +6,9 @@ import type { ImportDeclaration } from 'estree'; import type { SourceMap } from 'magic-string'; -import type { Context } from 'zimmerframe'; import type { Scope } from '../phases/scope.js'; import type { Css } from './css.js'; -import type { EachBlock, Namespace, SvelteNode, SvelteOptions } from './template.js'; +import type { AST, Namespace, SvelteNode } from './template.js'; import type { ICompileDiagnostic } from '../utils/compile_diagnostic.js'; /** The return value of `compile` from `svelte/compiler` */ @@ -240,7 +238,7 @@ export type ValidatedCompileOptions = ValidatedModuleCompileOptions & sourcemap: CompileOptions['sourcemap']; compatibility: Required['compatibility']>; runes: CompileOptions['runes']; - customElementOptions: SvelteOptions['customElement']; + customElementOptions: AST.SvelteOptions['customElement']; hmr: CompileOptions['hmr']; }; @@ -293,7 +291,7 @@ export interface Binding { | FunctionDeclaration | ClassDeclaration | ImportDeclaration - | EachBlock; + | AST.EachBlock; is_called: boolean; references: { node: Identifier; path: SvelteNode[] }[]; mutated: boolean; diff --git a/packages/svelte/src/compiler/types/legacy-nodes.d.ts b/packages/svelte/src/compiler/types/legacy-nodes.d.ts index c19f2b1c96..2bd5fbbfa6 100644 --- a/packages/svelte/src/compiler/types/legacy-nodes.d.ts +++ b/packages/svelte/src/compiler/types/legacy-nodes.d.ts @@ -1,4 +1,4 @@ -import type { Text, Css, ExpressionTag } from '#compiler'; +import type { AST, Css } from '#compiler'; import type { ArrayExpression, AssignmentExpression, @@ -60,7 +60,7 @@ export interface LegacyBody extends BaseElement { export interface LegacyAttribute extends BaseNode { type: 'Attribute'; name: string; - value: true | Array; + value: true | Array; } export interface LegacyAttributeShorthand extends BaseNode { @@ -200,7 +200,7 @@ export interface LegacyStyleDirective extends BaseNode { /** The 'x' in `style:x` */ name: string; /** The 'y' in `style:x={y}` */ - value: true | Array; + value: true | Array; modifiers: Array<'important'>; } @@ -270,4 +270,4 @@ export type LegacySvelteNode = | LegacyAttributeLike | LegacyAttributeShorthand | LegacyCssNode - | Text; + | AST.Text; diff --git a/packages/svelte/src/compiler/types/template.d.ts b/packages/svelte/src/compiler/types/template.d.ts index 888fd5c21b..9da0320432 100644 --- a/packages/svelte/src/compiler/types/template.d.ts +++ b/packages/svelte/src/compiler/types/template.d.ts @@ -18,31 +18,6 @@ import type { } from 'estree'; import type { Scope } from '../phases/scope'; -export interface BaseNode { - type: string; - start: number; - end: number; - /** This is set during parsing on elements/components/expressions/text (but not attributes etc) */ - parent: SvelteNode | null; -} - -export interface Fragment { - type: 'Fragment'; - nodes: Array; - metadata: { - /** - * Fragments declare their own scopes. A transparent fragment is one whose scope - * is not represented by a scope in the resulting JavaScript (e.g. an element scope), - * and should therefore delegate to parent scopes when generating unique identifiers - */ - transparent: boolean; - /** - * Whether or not we need to traverse into the fragment during mount/hydrate - */ - dynamic: boolean; - }; -} - /** * - `html` — the default, for e.g. `
` or `` * - `svg` — for e.g. `` or `` @@ -50,450 +25,493 @@ export interface Fragment { */ export type Namespace = 'html' | 'svg' | 'mathml'; -export interface Root extends BaseNode { - type: 'Root'; - /** - * Inline options provided by `` — these override options passed to `compile(...)` - */ - options: SvelteOptions | null; - fragment: Fragment; - /** The parsed `
` or `` + * - `svg` — for e.g. `` or `` + * - `mathml` — for e.g. `` or `` + */ + type Namespace = 'html' | 'svg' | 'mathml'; - type DeclarationKind = - | 'var' - | 'let' - | 'const' - | 'function' - | 'import' - | 'param' - | 'rest_param' - | 'synthetic'; - - interface Binding { - node: Identifier; - /** - * - `normal`: A variable that is not in any way special - * - `prop`: A normal prop (possibly reassigned or mutated) - * - `bindable_prop`: A prop one can `bind:` to (possibly reassigned or mutated) - * - `rest_prop`: A rest prop - * - `state`: A state variable - * - `derived`: A derived variable - * - `each`: An each block parameter - * - `snippet`: A snippet parameter - * - `store_sub`: A $store value - * - `legacy_reactive`: A `$:` declaration - * - `template`: A binding declared in the template, e.g. in an `await` block or `const` tag - */ - kind: - | 'normal' - | 'prop' - | 'bindable_prop' - | 'rest_prop' - | 'state' - | 'raw_state' - | 'derived' - | 'each' - | 'snippet' - | 'store_sub' - | 'legacy_reactive' - | 'template'; - declaration_kind: DeclarationKind; - /** - * What the value was initialized with. - * For destructured props such as `let { foo = 'bar' } = $props()` this is `'bar'` and not `$props()` - */ - initial: - | null - | Expression - | FunctionDeclaration - | ClassDeclaration - | ImportDeclaration - | EachBlock; - is_called: boolean; - references: { node: Identifier; path: SvelteNode[] }[]; - mutated: boolean; - reassigned: boolean; - /** `true` if mutated _or_ reassigned */ - updated: boolean; - scope: Scope; - /** For `legacy_reactive`: its reactive dependencies */ - legacy_dependencies: Binding[]; - /** Legacy props: the `class` in `{ export klass as class}`. $props(): The `class` in { class: klass } = $props() */ - prop_alias: string | null; - /** Additional metadata, varies per binding type */ - metadata: { - /** `true` if is (inside) a rest parameter */ - inside_rest?: boolean; - } | null; - } + export namespace AST { + export interface BaseNode { + type: string; + start: number; + end: number; + } - interface ExpressionMetadata { - /** All the bindings that are referenced inside this expression */ - dependencies: Set; - /** True if the expression references state directly, or _might_ (via member/call expressions) */ - has_state: boolean; - /** True if the expression involves a call expression (often, it will need to be wrapped in a derived) */ - has_call: boolean; - } - /** - * The preprocess function provides convenient hooks for arbitrarily transforming component source code. - * For example, it can be used to convert a
` or `` - * - `svg` — for e.g. `` or `` - * - `mathml` — for e.g. `` or `` - */ - type Namespace = 'html' | 'svg' | 'mathml'; - - interface Root extends BaseNode { - type: 'Root'; - /** - * Inline options provided by `` — these override options passed to `compile(...)` - */ - options: SvelteOptions | null; - fragment: Fragment; - /** The parsed `