UNPKG

typescript

Version:

TypeScript is a language for application scale JavaScript development

909 lines • 64.6 kB
import type { ModifierFlags } from "#enums/modifierFlags"; import type { NodeFlags } from "#enums/nodeFlags"; import { SyntaxKind } from "#enums/syntaxKind"; import { TokenFlags } from "#enums/tokenFlags"; import type { JsxTagNamePropertyAccess, Node, NodeArray } from "./ast.ts"; export type TriviaSyntaxKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ConflictMarkerTrivia; export type LiteralSyntaxKind = SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral; export type PseudoLiteralSyntaxKind = SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail; export type PunctuationSyntaxKind = SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.QuestionQuestionEqualsToken | SyntaxKind.CaretEqualsToken; export type KeywordSyntaxKind = SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.LetKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.StaticKeyword | SyntaxKind.YieldKeyword | SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.GetKeyword | SyntaxKind.ImmediateKeyword | SyntaxKind.InferKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.OutKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.RequireKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.TypeKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.UsingKeyword | SyntaxKind.FromKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.OfKeyword | SyntaxKind.DeferKeyword; export type ModifierSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.ConstKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.ExportKeyword | SyntaxKind.InKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.StaticKeyword; export type KeywordTypeSyntaxKind = SyntaxKind.AnyKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VoidKeyword; export type KeywordExpressionSyntaxKind = SyntaxKind.NullKeyword | SyntaxKind.TrueKeyword | SyntaxKind.FalseKeyword | SyntaxKind.ThisKeyword | SyntaxKind.SuperKeyword | SyntaxKind.ImportKeyword; export type TokenSyntaxKind = SyntaxKind.Unknown | SyntaxKind.EndOfFile | SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.NonTextFileMarkerTrivia | SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral | SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail | SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.OpenParenToken | SyntaxKind.CloseParenToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.DotToken | SyntaxKind.DotDotDotToken | SyntaxKind.SemicolonToken | SyntaxKind.CommaToken | SyntaxKind.QuestionDotToken | SyntaxKind.LessThanToken | SyntaxKind.LessThanSlashToken | SyntaxKind.GreaterThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.EqualsEqualsToken | SyntaxKind.ExclamationEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.EqualsGreaterThanToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.AsteriskToken | SyntaxKind.AsteriskAsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken | SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken | SyntaxKind.ExclamationToken | SyntaxKind.TildeToken | SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | SyntaxKind.QuestionQuestionToken | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.EqualsToken | SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.QuestionQuestionEqualsToken | SyntaxKind.CaretEqualsToken | SyntaxKind.Identifier | SyntaxKind.PrivateIdentifier | SyntaxKind.JSDocCommentTextToken | SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.LetKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.StaticKeyword | SyntaxKind.YieldKeyword | SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.GetKeyword | SyntaxKind.ImmediateKeyword | SyntaxKind.InferKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.OutKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.RequireKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StringKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.TypeKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.UsingKeyword | SyntaxKind.FromKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.OfKeyword | SyntaxKind.DeferKeyword; export type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFile | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken; export type JSDocNodeSyntaxKind = SyntaxKind.JSDocTypeExpression | SyntaxKind.JSDocNameReference | SyntaxKind.JSDocAllType | SyntaxKind.JSDocNullableType | SyntaxKind.JSDocNonNullableType | SyntaxKind.JSDocOptionalType | SyntaxKind.JSDocVariadicType | SyntaxKind.JSDoc | SyntaxKind.JSDocText | SyntaxKind.JSDocTypeLiteral | SyntaxKind.JSDocSignature | SyntaxKind.JSDocLink | SyntaxKind.JSDocLinkCode | SyntaxKind.JSDocLinkPlain | SyntaxKind.JSDocUnknownTag | SyntaxKind.JSDocAugmentsTag | SyntaxKind.JSDocImplementsTag | SyntaxKind.JSDocDeprecatedTag | SyntaxKind.JSDocPublicTag | SyntaxKind.JSDocPrivateTag | SyntaxKind.JSDocProtectedTag | SyntaxKind.JSDocReadonlyTag | SyntaxKind.JSDocOverrideTag | SyntaxKind.JSDocCallbackTag | SyntaxKind.JSDocOverloadTag | SyntaxKind.JSDocParameterTag | SyntaxKind.JSDocReturnTag | SyntaxKind.JSDocThisTag | SyntaxKind.JSDocTypeTag | SyntaxKind.JSDocTemplateTag | SyntaxKind.JSDocTypedefTag | SyntaxKind.JSDocSeeTag | SyntaxKind.JSDocPropertyTag | SyntaxKind.JSDocThrowsTag | SyntaxKind.JSDocSatisfiesTag | SyntaxKind.JSDocImportTag; export type ImportPhaseModifierSyntaxKind = SyntaxKind.TypeKeyword | SyntaxKind.DeferKeyword; export type PostfixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken; export type PrefixUnaryOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken; export type AssignmentOperator = SyntaxKind.EqualsToken | CompoundAssignmentOperator; export type BinaryOperator = AssignmentOperatorOrHigher | SyntaxKind.CommaToken; export type ExponentiationOperator = SyntaxKind.AsteriskAsteriskToken; export type MultiplicativeOperator = SyntaxKind.AsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken; export type MultiplicativeOperatorOrHigher = ExponentiationOperator | MultiplicativeOperator; export type AdditiveOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken; export type AdditiveOperatorOrHigher = MultiplicativeOperatorOrHigher | AdditiveOperator; export type ShiftOperator = SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken; export type ShiftOperatorOrHigher = AdditiveOperatorOrHigher | ShiftOperator; export type RelationalOperator = SyntaxKind.LessThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.InstanceOfKeyword | SyntaxKind.InKeyword; export type RelationalOperatorOrHigher = ShiftOperatorOrHigher | RelationalOperator; export type EqualityOperator = SyntaxKind.EqualsEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.ExclamationEqualsToken; export type EqualityOperatorOrHigher = RelationalOperatorOrHigher | EqualityOperator; export type BitwiseOperator = SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken; export type BitwiseOperatorOrHigher = EqualityOperatorOrHigher | BitwiseOperator; export type LogicalOperator = SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken; export type LogicalOperatorOrHigher = BitwiseOperatorOrHigher | LogicalOperator; export type CompoundAssignmentOperator = SyntaxKind.PlusEqualsToken | SyntaxKind.MinusEqualsToken | SyntaxKind.AsteriskAsteriskEqualsToken | SyntaxKind.AsteriskEqualsToken | SyntaxKind.SlashEqualsToken | SyntaxKind.PercentEqualsToken | SyntaxKind.AmpersandEqualsToken | SyntaxKind.BarEqualsToken | SyntaxKind.CaretEqualsToken | SyntaxKind.LessThanLessThanEqualsToken | SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken | SyntaxKind.GreaterThanGreaterThanEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.QuestionQuestionEqualsToken; export type AssignmentOperatorOrHigher = SyntaxKind.QuestionQuestionToken | LogicalOperatorOrHigher | AssignmentOperator; export type LogicalOrCoalescingAssignmentOperator = SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.QuestionQuestionEqualsToken; export interface NodeBase extends Node { readonly flags: NodeFlags; } export interface StatementBase extends NodeBase { readonly _statementBrand: any; } export interface IterationStatementBase extends StatementBase { readonly statement: Statement; } export interface ExpressionBase extends NodeBase { readonly _expressionBrand: any; } export interface UnaryExpressionBase extends ExpressionBase { readonly _unaryExpressionBrand: any; } export interface UpdateExpressionBase extends UnaryExpressionBase { readonly _updateExpressionBrand: any; } export interface LeftHandSideExpressionBase extends UpdateExpressionBase { readonly _leftHandSideExpressionBrand: any; } export interface MemberExpressionBase extends LeftHandSideExpressionBase { readonly _memberExpressionBrand: any; } export interface PrimaryExpressionBase extends MemberExpressionBase { readonly _primaryExpressionBrand: any; } export interface TypeNodeBase extends NodeBase { readonly _typeNodeBrand: any; } export interface NodeWithTypeArgumentsBase extends TypeNodeBase { readonly typeArguments?: NodeArray<TypeNode>; } export interface JSDocTypeBase extends TypeNodeBase { readonly _jsDocTypeBrand: any; } export interface DeclarationBase extends Node { readonly _declarationBrand: any; } export interface ModifiersBase extends Node { readonly modifiers?: NodeArray<ModifierLike>; readonly modifierFlags: ModifierFlags; } export interface FunctionLikeBase extends DeclarationBase { readonly typeParameters?: NodeArray<TypeParameterDeclaration>; readonly parameters: NodeArray<ParameterDeclaration>; readonly type?: TypeNode; readonly fullSignature?: TypeNode; } export interface BodyBase extends Node { readonly asteriskToken?: AsteriskToken; readonly body?: NodeBody; } export interface FunctionLikeWithBodyBase extends FunctionLikeBase, BodyBase { readonly _functionLikeDeclarationBrand: any; readonly body?: BlockOrExpression; } export interface ClassLikeBase extends DeclarationBase, ModifiersBase { readonly name?: Identifier; readonly typeParameters?: NodeArray<TypeParameterDeclaration>; readonly heritageClauses?: NodeArray<HeritageClause>; readonly members: NodeArray<ClassElement>; } export interface LiteralLikeNodeBase extends Node { readonly text: string; readonly tokenFlags: TokenFlags; } export interface LiteralExpressionBase extends LiteralLikeNodeBase, PrimaryExpressionBase { readonly _literalExpressionBrand: any; } export interface TemplateLiteralLikeNodeBase extends LiteralLikeNodeBase { readonly rawText: string; readonly templateFlags: TokenFlags; } export interface TypeElementBase extends Node { readonly _typeElementBrand: any; } export interface ClassElementBase extends Node { readonly _classElementBrand: any; } export interface NamedMemberBase extends DeclarationBase, ModifiersBase { readonly name: PropertyName; readonly postfixToken?: QuestionToken | ExclamationToken; } export interface ObjectLiteralElementBase extends Node { readonly _objectLiteralBrand: any; } export interface UnionOrIntersectionTypeNodeBase extends TypeNodeBase { readonly types: NodeArray<TypeNode>; } export interface JSDocTagBase extends NodeBase { readonly tagName: Identifier; readonly comment?: NodeArray<JSDocComment>; } export interface JSDocCommentBase extends NodeBase { readonly text: string; } export interface Token<TKind extends TokenSyntaxKind = TokenSyntaxKind> extends NodeBase { readonly kind: TKind; } export interface Identifier extends PrimaryExpressionBase { readonly kind: SyntaxKind.Identifier; readonly text: string; } export interface PrivateIdentifier extends PrimaryExpressionBase { readonly kind: SyntaxKind.PrivateIdentifier; readonly text: string; } export interface QualifiedName extends NodeBase { readonly kind: SyntaxKind.QualifiedName; readonly left: EntityName; readonly right: Identifier; } export interface ComputedPropertyName extends NodeBase { readonly kind: SyntaxKind.ComputedPropertyName; readonly expression: Expression; } export interface Decorator extends NodeBase { readonly kind: SyntaxKind.Decorator; readonly expression: LeftHandSideExpression; } export interface EmptyStatement extends StatementBase { readonly kind: SyntaxKind.EmptyStatement; } export interface IfStatement extends StatementBase { readonly kind: SyntaxKind.IfStatement; readonly expression: Expression; readonly thenStatement: Statement; readonly elseStatement?: Statement; } export interface DoStatement extends IterationStatementBase { readonly kind: SyntaxKind.DoStatement; readonly expression: Expression; } export interface WhileStatement extends IterationStatementBase { readonly kind: SyntaxKind.WhileStatement; readonly expression: Expression; } export interface ForStatement extends IterationStatementBase { readonly kind: SyntaxKind.ForStatement; readonly initializer?: ForInitializer; readonly condition?: Expression; readonly incrementor?: Expression; } export interface BreakStatement extends StatementBase { readonly kind: SyntaxKind.BreakStatement; readonly label?: Identifier; } export interface ContinueStatement extends StatementBase { readonly kind: SyntaxKind.ContinueStatement; readonly label?: Identifier; } export interface ReturnStatement extends StatementBase { readonly kind: SyntaxKind.ReturnStatement; readonly expression?: Expression; } export interface WithStatement extends StatementBase { readonly kind: SyntaxKind.WithStatement; readonly expression: Expression; readonly statement: Statement; } export interface SwitchStatement extends StatementBase { readonly kind: SyntaxKind.SwitchStatement; readonly expression: Expression; readonly caseBlock: CaseBlock; } export interface CaseBlock extends NodeBase { readonly kind: SyntaxKind.CaseBlock; readonly clauses: NodeArray<CaseOrDefaultClause>; } export interface ThrowStatement extends StatementBase { readonly kind: SyntaxKind.ThrowStatement; readonly expression: Expression; } export interface TryStatement extends StatementBase { readonly kind: SyntaxKind.TryStatement; readonly tryBlock: Block; readonly catchClause?: CatchClause; readonly finallyBlock?: Block; } export interface CatchClause extends NodeBase { readonly kind: SyntaxKind.CatchClause; readonly variableDeclaration?: VariableDeclaration; readonly block: Block; } export interface DebuggerStatement extends StatementBase { readonly kind: SyntaxKind.DebuggerStatement; } export interface LabeledStatement extends StatementBase { readonly kind: SyntaxKind.LabeledStatement; readonly label: Identifier; readonly statement: Statement; } export interface ExpressionStatement extends StatementBase { readonly kind: SyntaxKind.ExpressionStatement; readonly expression: Expression; } export interface Block extends StatementBase { readonly kind: SyntaxKind.Block; readonly statements: NodeArray<Statement>; readonly multiLine: boolean; } export interface VariableStatement extends StatementBase, ModifiersBase { readonly kind: SyntaxKind.VariableStatement; readonly declarationList: VariableDeclarationList; } export interface VariableDeclaration extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.VariableDeclaration; readonly name: BindingName; readonly exclamationToken?: ExclamationToken; readonly type?: TypeNode; readonly initializer?: Expression; } export interface VariableDeclarationList extends NodeBase { readonly kind: SyntaxKind.VariableDeclarationList; readonly declarations: NodeArray<VariableDeclaration>; } export interface ParameterDeclaration extends NodeBase, DeclarationBase, ModifiersBase { readonly kind: SyntaxKind.Parameter; readonly dotDotDotToken?: DotDotDotToken; readonly name: BindingName; readonly questionToken?: QuestionToken; readonly type?: TypeNode; readonly initializer?: Expression; } export interface BindingElement extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.BindingElement; readonly dotDotDotToken?: DotDotDotToken; readonly propertyName?: PropertyName; readonly name?: BindingName; readonly initializer?: Expression; } export interface MissingDeclaration extends StatementBase, DeclarationBase, ModifiersBase { readonly kind: SyntaxKind.MissingDeclaration; } export interface FunctionDeclaration extends DeclarationBase, StatementBase, ModifiersBase, FunctionLikeWithBodyBase { readonly kind: SyntaxKind.FunctionDeclaration; readonly name?: Identifier; readonly body?: FunctionBody; } export interface ClassDeclaration extends DeclarationBase, StatementBase, ClassLikeBase { readonly kind: SyntaxKind.ClassDeclaration; } export interface ClassExpression extends PrimaryExpressionBase, ClassLikeBase { readonly kind: SyntaxKind.ClassExpression; } export interface HeritageClause extends NodeBase { readonly kind: SyntaxKind.HeritageClause; readonly token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword; readonly types: NodeArray<ExpressionWithTypeArguments>; } export interface InterfaceDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.InterfaceDeclaration; readonly name: Identifier; readonly typeParameters?: NodeArray<TypeParameterDeclaration>; readonly heritageClauses?: NodeArray<HeritageClause>; readonly members: NodeArray<TypeElement>; } export interface TypeAliasDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.TypeAliasDeclaration; readonly name: Identifier; readonly typeParameters?: NodeArray<TypeParameterDeclaration>; readonly type: TypeNode; } export interface EnumMember extends NodeBase, NamedMemberBase { readonly kind: SyntaxKind.EnumMember; readonly initializer?: Expression; } export interface EnumDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.EnumDeclaration; readonly name: Identifier; readonly members: NodeArray<EnumMember>; } export interface ModuleBlock extends StatementBase { readonly kind: SyntaxKind.ModuleBlock; readonly statements: NodeArray<Statement>; } export interface NotEmittedStatement extends StatementBase { readonly kind: SyntaxKind.NotEmittedStatement; } export interface NotEmittedTypeElement extends NodeBase, TypeElementBase { readonly kind: SyntaxKind.NotEmittedTypeElement; } export interface ImportDeclaration extends StatementBase, ModifiersBase, DeclarationBase { readonly kind: SyntaxKind.ImportDeclaration; readonly importClause?: ImportClause; readonly moduleSpecifier: Expression; readonly attributes?: ImportAttributes; } export interface ExternalModuleReference extends NodeBase { readonly kind: SyntaxKind.ExternalModuleReference; readonly expression: Expression; } export interface NamespaceImport extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.NamespaceImport; readonly name: Identifier; } export interface NamedImports extends NodeBase { readonly kind: SyntaxKind.NamedImports; readonly elements: NodeArray<ImportSpecifier>; } export interface ExportAssignment extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.ExportAssignment; readonly isExportEquals: boolean; readonly type: TypeNode; readonly expression: Expression; } export interface NamespaceExportDeclaration extends DeclarationBase, StatementBase, ModifiersBase { readonly kind: SyntaxKind.NamespaceExportDeclaration; readonly name: Identifier; } export interface NamespaceExport extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.NamespaceExport; readonly name: ModuleExportName; } export interface NamedExports extends NodeBase { readonly kind: SyntaxKind.NamedExports; readonly elements: NodeArray<ExportSpecifier>; } export interface ExportSpecifier extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.ExportSpecifier; readonly isTypeOnly: boolean; readonly propertyName?: ModuleExportName; readonly name: ModuleExportName; } export interface CallSignatureDeclaration extends NodeBase, DeclarationBase, FunctionLikeBase, TypeElementBase { readonly kind: SyntaxKind.CallSignature; } export interface ConstructSignatureDeclaration extends NodeBase, DeclarationBase, FunctionLikeBase, TypeElementBase { readonly kind: SyntaxKind.ConstructSignature; } export interface ConstructorDeclaration extends NodeBase, DeclarationBase, ModifiersBase, FunctionLikeWithBodyBase, ClassElementBase { readonly kind: SyntaxKind.Constructor; readonly body?: FunctionBody; } export interface GetAccessorDeclaration extends NamedMemberBase, FunctionLikeWithBodyBase, TypeElementBase, ClassElementBase, ObjectLiteralElementBase, NodeBase { readonly kind: SyntaxKind.GetAccessor; readonly body?: FunctionBody; } export interface SetAccessorDeclaration extends NamedMemberBase, FunctionLikeWithBodyBase, TypeElementBase, ClassElementBase, ObjectLiteralElementBase, NodeBase { readonly kind: SyntaxKind.SetAccessor; readonly body?: FunctionBody; } export interface IndexSignatureDeclaration extends NodeBase, DeclarationBase, ModifiersBase, FunctionLikeBase, TypeElementBase, ClassElementBase { readonly kind: SyntaxKind.IndexSignature; readonly type: TypeNode; } export interface MethodSignatureDeclaration extends NodeBase, NamedMemberBase, FunctionLikeBase, TypeElementBase { readonly kind: SyntaxKind.MethodSignature; } export interface MethodDeclaration extends NodeBase, NamedMemberBase, FunctionLikeWithBodyBase, ClassElementBase, ObjectLiteralElementBase { readonly kind: SyntaxKind.MethodDeclaration; readonly body?: FunctionBody; } export interface PropertySignatureDeclaration extends NodeBase, NamedMemberBase, TypeElementBase { readonly kind: SyntaxKind.PropertySignature; readonly type: TypeNode; readonly initializer: Expression; } export interface PropertyDeclaration extends NodeBase, NamedMemberBase, ClassElementBase { readonly kind: SyntaxKind.PropertyDeclaration; readonly type?: TypeNode; readonly initializer?: Expression; } export interface SemicolonClassElement extends NodeBase, DeclarationBase, ClassElementBase { readonly kind: SyntaxKind.SemicolonClassElement; } export interface ClassStaticBlockDeclaration extends NodeBase, DeclarationBase, ModifiersBase, ClassElementBase { readonly kind: SyntaxKind.ClassStaticBlockDeclaration; readonly body: Block; } export interface OmittedExpression extends ExpressionBase { readonly kind: SyntaxKind.OmittedExpression; } export interface KeywordExpression<TKind extends KeywordExpressionSyntaxKind = KeywordExpressionSyntaxKind> extends ExpressionBase { readonly kind: TKind; } export interface StringLiteral extends LiteralExpressionBase { readonly kind: SyntaxKind.StringLiteral; } export interface NumericLiteral extends LiteralExpressionBase { readonly kind: SyntaxKind.NumericLiteral; } export interface BigIntLiteral extends LiteralExpressionBase { readonly kind: SyntaxKind.BigIntLiteral; } export interface RegularExpressionLiteral extends LiteralExpressionBase { readonly kind: SyntaxKind.RegularExpressionLiteral; } export interface NoSubstitutionTemplateLiteral extends ExpressionBase, TemplateLiteralLikeNodeBase, DeclarationBase { readonly kind: SyntaxKind.NoSubstitutionTemplateLiteral; } export interface BinaryExpression extends ExpressionBase, DeclarationBase, ModifiersBase { readonly kind: SyntaxKind.BinaryExpression; readonly left: Expression; readonly type?: TypeNode; readonly operatorToken: BinaryOperatorToken; readonly right: Expression; } export interface PrefixUnaryExpression extends UpdateExpressionBase { readonly kind: SyntaxKind.PrefixUnaryExpression; readonly operator: SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken | SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken; readonly operand: Expression; } export interface PostfixUnaryExpression extends UpdateExpressionBase { readonly kind: SyntaxKind.PostfixUnaryExpression; readonly operand: Expression; readonly operator: SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken; } export interface YieldExpression extends ExpressionBase { readonly kind: SyntaxKind.YieldExpression; readonly asteriskToken?: AsteriskToken; readonly expression?: Expression; } export interface ArrowFunction extends ExpressionBase, DeclarationBase, ModifiersBase, FunctionLikeWithBodyBase { readonly kind: SyntaxKind.ArrowFunction; readonly equalsGreaterThanToken: EqualsGreaterThanToken; readonly body: ConciseBody; } export interface FunctionExpression extends PrimaryExpressionBase, DeclarationBase, ModifiersBase, FunctionLikeWithBodyBase { readonly kind: SyntaxKind.FunctionExpression; readonly name?: Identifier; readonly body: FunctionBody; } export interface AsExpression extends ExpressionBase { readonly kind: SyntaxKind.AsExpression; readonly expression: Expression; readonly type: TypeNode; } export interface SatisfiesExpression extends ExpressionBase { readonly kind: SyntaxKind.SatisfiesExpression; readonly expression: Expression; readonly type: TypeNode; } export interface ConditionalExpression extends ExpressionBase { readonly kind: SyntaxKind.ConditionalExpression; readonly condition: Expression; readonly questionToken: QuestionToken; readonly whenTrue: Expression; readonly colonToken: ColonToken; readonly whenFalse: Expression; } export interface PropertyAccessExpression extends MemberExpressionBase { readonly kind: SyntaxKind.PropertyAccessExpression; readonly expression: Expression; readonly questionDotToken?: QuestionDotToken; readonly name: MemberName; } export interface ElementAccessExpression extends MemberExpressionBase { readonly kind: SyntaxKind.ElementAccessExpression; readonly expression: Expression; readonly questionDotToken?: QuestionDotToken; readonly argumentExpression: Expression; } export interface CallExpression extends LeftHandSideExpressionBase, DeclarationBase { readonly kind: SyntaxKind.CallExpression; readonly expression: Expression; readonly questionDotToken?: QuestionDotToken; readonly typeArguments?: NodeArray<TypeNode>; readonly arguments: NodeArray<Expression>; } export interface NewExpression extends PrimaryExpressionBase { readonly kind: SyntaxKind.NewExpression; readonly expression: Expression; readonly typeArguments?: NodeArray<TypeNode>; readonly arguments?: NodeArray<Expression>; } export interface MetaProperty extends PrimaryExpressionBase { readonly kind: SyntaxKind.MetaProperty; readonly keywordToken: SyntaxKind.ImportKeyword | SyntaxKind.NewKeyword; readonly name: Identifier; } export interface NonNullExpression extends LeftHandSideExpressionBase { readonly kind: SyntaxKind.NonNullExpression; readonly expression: Expression; } export interface SpreadElement extends ExpressionBase { readonly kind: SyntaxKind.SpreadElement; readonly expression: Expression; } export interface TemplateExpression extends PrimaryExpressionBase { readonly kind: SyntaxKind.TemplateExpression; readonly head: TemplateHead; readonly templateSpans: NodeArray<TemplateSpan>; } export interface TemplateSpan extends NodeBase { readonly kind: SyntaxKind.TemplateSpan; readonly expression: Expression; readonly literal: TemplateMiddleOrTail; } export interface TaggedTemplateExpression extends MemberExpressionBase { readonly kind: SyntaxKind.TaggedTemplateExpression; readonly tag: Expression; readonly questionDotToken: QuestionDotToken; readonly typeArguments?: NodeArray<TypeNode>; readonly template: TemplateLiteral; } export interface ParenthesizedExpression extends PrimaryExpressionBase { readonly kind: SyntaxKind.ParenthesizedExpression; readonly expression: Expression; } export interface ArrayLiteralExpression extends PrimaryExpressionBase { readonly kind: SyntaxKind.ArrayLiteralExpression; readonly elements: NodeArray<Expression>; readonly multiLine: boolean; } export interface ObjectLiteralExpression extends PrimaryExpressionBase, DeclarationBase { readonly kind: SyntaxKind.ObjectLiteralExpression; readonly properties: NodeArray<ObjectLiteralElementLike>; readonly multiLine: boolean; } export interface SpreadAssignment extends NodeBase, DeclarationBase, ObjectLiteralElementBase { readonly kind: SyntaxKind.SpreadAssignment; readonly expression: Expression; } export interface PropertyAssignment extends NodeBase, NamedMemberBase, ObjectLiteralElementBase { readonly kind: SyntaxKind.PropertyAssignment; readonly type: TypeNode; readonly initializer: Expression; } export interface ShorthandPropertyAssignment extends NodeBase, NamedMemberBase, ObjectLiteralElementBase { readonly kind: SyntaxKind.ShorthandPropertyAssignment; readonly type: TypeNode; readonly equalsToken?: EqualsToken; readonly objectAssignmentInitializer?: Expression; } export interface DeleteExpression extends UnaryExpressionBase { readonly kind: SyntaxKind.DeleteExpression; readonly expression: Expression; } export interface TypeOfExpression extends UnaryExpressionBase { readonly kind: SyntaxKind.TypeOfExpression; readonly expression: Expression; } export interface VoidExpression extends UnaryExpressionBase { readonly kind: SyntaxKind.VoidExpression; readonly expression: Expression; } export interface AwaitExpression extends UnaryExpressionBase { readonly kind: SyntaxKind.AwaitExpression; readonly expression: Expression; } export interface TypeAssertion extends UnaryExpressionBase { readonly kind: SyntaxKind.TypeAssertionExpression; readonly type: TypeNode; readonly expression: Expression; } export interface KeywordTypeNode<TKind extends KeywordTypeSyntaxKind = KeywordTypeSyntaxKind> extends TypeNodeBase { readonly kind: TKind; } export interface UnionTypeNode extends TypeNodeBase, UnionOrIntersectionTypeNodeBase { readonly kind: SyntaxKind.UnionType; } export interface IntersectionTypeNode extends TypeNodeBase, UnionOrIntersectionTypeNodeBase { readonly kind: SyntaxKind.IntersectionType; } export interface ConditionalTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.ConditionalType; readonly checkType: TypeNode; readonly extendsType: TypeNode; readonly trueType: TypeNode; readonly falseType: TypeNode; } export interface TypeOperatorNode extends TypeNodeBase { readonly kind: SyntaxKind.TypeOperator; readonly operator: SyntaxKind.KeyOfKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.UniqueKeyword; readonly type: TypeNode; } export interface InferTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.InferType; readonly typeParameter: TypeParameterDeclaration; } export interface ArrayTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.ArrayType; readonly elementType: TypeNode; } export interface IndexedAccessTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.IndexedAccessType; readonly objectType: TypeNode; readonly indexType: TypeNode; } export interface TypeReferenceNode extends NodeWithTypeArgumentsBase { readonly kind: SyntaxKind.TypeReference; readonly typeName: EntityName; } export interface ExpressionWithTypeArguments extends MemberExpressionBase { readonly kind: SyntaxKind.ExpressionWithTypeArguments; readonly expression: Expression; readonly typeArguments?: NodeArray<TypeNode>; } export interface LiteralTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.LiteralType; readonly literal: Node; } export interface ThisTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.ThisType; } export interface TypePredicateNode extends TypeNodeBase { readonly kind: SyntaxKind.TypePredicate; readonly assertsModifier?: AssertsKeyword; readonly parameterName: TypePredicateParameterName; readonly type?: TypeNode; } export interface ImportAttribute extends NodeBase { readonly kind: SyntaxKind.ImportAttribute; readonly name: ImportAttributeName; readonly value: Expression; } export interface ImportAttributes extends NodeBase { readonly kind: SyntaxKind.ImportAttributes; readonly token: SyntaxKind.WithKeyword | SyntaxKind.AssertKeyword; readonly attributes: NodeArray<ImportAttribute>; readonly multiLine: boolean; } export interface TypeQueryNode extends NodeWithTypeArgumentsBase { readonly kind: SyntaxKind.TypeQuery; readonly exprName: EntityName; } export interface MappedTypeNode extends TypeNodeBase, DeclarationBase { readonly kind: SyntaxKind.MappedType; readonly readonlyToken?: ReadonlyKeyword | PlusToken | MinusToken; readonly typeParameter: TypeParameterDeclaration; readonly nameType?: TypeNode; readonly questionToken?: QuestionToken | PlusToken | MinusToken; readonly type?: TypeNode; readonly members?: NodeArray<TypeElement>; } export interface TypeLiteralNode extends TypeNodeBase, DeclarationBase { readonly kind: SyntaxKind.TypeLiteral; readonly members: NodeArray<TypeElement>; } export interface TupleTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.TupleType; readonly elements: NodeArray<TypeNode>; } export interface NamedTupleMember extends TypeNodeBase, DeclarationBase { readonly kind: SyntaxKind.NamedTupleMember; readonly dotDotDotToken?: DotDotDotToken; readonly name: Identifier; readonly questionToken?: QuestionToken; readonly type: TypeNode; } export interface OptionalTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.OptionalType; readonly type: TypeNode; } export interface RestTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.RestType; readonly type: TypeNode; } export interface ParenthesizedTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.ParenthesizedType; readonly type: TypeNode; } export interface FunctionTypeNode extends TypeNodeBase, ModifiersBase, FunctionLikeBase { readonly kind: SyntaxKind.FunctionType; } export interface ConstructorTypeNode extends TypeNodeBase, ModifiersBase, FunctionLikeBase { readonly kind: SyntaxKind.ConstructorType; } export interface TemplateHead extends NodeBase, TemplateLiteralLikeNodeBase { readonly kind: SyntaxKind.TemplateHead; } export interface TemplateMiddle extends NodeBase, TemplateLiteralLikeNodeBase { readonly kind: SyntaxKind.TemplateMiddle; } export interface TemplateTail extends NodeBase, TemplateLiteralLikeNodeBase { readonly kind: SyntaxKind.TemplateTail; } export interface TemplateLiteralTypeNode extends TypeNodeBase { readonly kind: SyntaxKind.TemplateLiteralType; readonly head: TemplateHead; readonly templateSpans: NodeArray<TemplateLiteralTypeSpan>; } export interface TemplateLiteralTypeSpan extends TypeNodeBase { readonly kind: SyntaxKind.TemplateLiteralTypeSpan; readonly type: TypeNode; readonly literal: TemplateMiddleOrTail; } export interface SyntheticExpression extends ExpressionBase { readonly kind: SyntaxKind.SyntheticExpression; readonly type: any; readonly isSpread: boolean; readonly tupleNameSource?: Node; } export interface PartiallyEmittedExpression extends LeftHandSideExpressionBase { readonly kind: SyntaxKind.PartiallyEmittedExpression; readonly expression: Expression; } export interface JsxElement extends PrimaryExpressionBase { readonly kind: SyntaxKind.JsxElement; readonly openingElement: JsxOpeningElement; readonly children: NodeArray<JsxChild>; readonly closingElement: JsxClosingElement; } export interface JsxAttributes extends PrimaryExpressionBase, DeclarationBase { readonly kind: SyntaxKind.JsxAttributes; readonly properties: NodeArray<JsxAttributeLike>; } export interface JsxNamespacedName extends ExpressionBase { readonly kind: SyntaxKind.JsxNamespacedName; readonly namespace: Identifier; readonly name: Identifier; } export interface JsxOpeningElement extends ExpressionBase { readonly kind: SyntaxKind.JsxOpeningElement; readonly tagName: JsxTagNameExpression; readonly typeArguments?: NodeArray<TypeNode>; readonly attributes: JsxAttributes; } export interface JsxSelfClosingElement extends PrimaryExpressionBase { readonly kind: SyntaxKind.JsxSelfClosingElement; readonly tagName: JsxTagNameExpression; readonly typeArguments?: NodeArray<TypeNode>; readonly attributes: JsxAttributes; } export interface JsxFragment extends PrimaryExpressionBase { readonly kind: SyntaxKind.JsxFragment; readonly openingFragment: JsxOpeningFragment; readonly children: NodeArray<JsxChild>; readonly closingFragment: JsxClosingFragment; } export interface JsxOpeningFragment extends ExpressionBase { readonly kind: SyntaxKind.JsxOpeningFragment; } export interface JsxClosingFragment extends ExpressionBase { readonly kind: SyntaxKind.JsxClosingFragment; } export interface JsxAttribute extends NodeBase, DeclarationBase { readonly kind: SyntaxKind.JsxAttribute; readonly name: JsxAttributeName; readonly initializer?: JsxAttributeValue; } export interface JsxSpreadAttribute extends ObjectLiteralElementBase, NodeBase { readonly kind: SyntaxKind.JsxSpreadAttribute; readonly expression: Expression; } export interface JsxClosingElement extends NodeBase { readonly kind: SyntaxKind.JsxClosingElement; readonly tagName: JsxTagNameExpression; } export interface JsxExpression extends ExpressionBase { readonly kind: SyntaxKind.JsxExpression; readonly dotDotDotToken?: DotDotDotToken; readonly expression?: Expression; } export interface JsxText extends ExpressionBase, LiteralLikeNodeBase { readonly kind: SyntaxKind.JsxText; readonly containsOnlyTriviaWhiteSpaces: boolean; } export interface SyntaxList extends NodeBase { readonly kind: SyntaxKind.SyntaxList; readonly children: readonly Node[]; } export interface JSDoc extends NodeBase { readonly kind: SyntaxKind.JSDoc; readonly comment: NodeArray<JSDocComment>; readonly tags?: NodeArray<JSDocTag>; } export interface JSDocTypeExpression extends TypeNodeBase { readonly kind: SyntaxKind.JSDocTypeExpression; readonly type: TypeNode; } export interface JSDocNonNullableType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocNonNullableType; readonly type: TypeNode; } export interface JSDocNullableType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocNullableType; readonly type: TypeNode; } export interface JSDocAllType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocAllType; } export interface JSDocVariadicType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocVariadicType; readonly type: TypeNode; } export interface JSDocOptionalType extends JSDocTypeBase { readonly kind: SyntaxKind.JSDocOptionalType; readonly type: TypeNode; } export interface JSDocTypeTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocTypeTag; readonly typeExpression: Node; } export interface JSDocUnknownTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocUnknownTag; } export interface JSDocTemplateTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocTemplateTag; readonly constraint: Node; readonly typeParameters: NodeArray<TypeParameterDeclaration>; } export interface JSDocReturnTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocReturnTag; readonly typeExpression?: TypeNode; } export interface JSDocPublicTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocPublicTag; } export interface JSDocPrivateTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocPrivateTag; } export interface JSDocProtectedTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocProtectedTag; } export interface JSDocReadonlyTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocReadonlyTag; } export interface JSDocOverrideTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocOverrideTag; } export interface JSDocDeprecatedTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocDeprecatedTag; } export interface JSDocSeeTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocSeeTag; readonly nameExpression: TypeNode; } export interface JSDocImplementsTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocImplementsTag; readonly className: ExpressionWithTypeArguments; } export interface JSDocAugmentsTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocAugmentsTag; readonly className: ExpressionWithTypeArguments; } export interface JSDocSatisfiesTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocSatisfiesTag; readonly typeExpression: TypeNode; } export interface JSDocThrowsTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocThrowsTag; readonly typeExpression?: TypeNode; } export interface JSDocThisTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocThisTag; readonly typeExpression: TypeNode; } export interface JSDocImportTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocImportTag; readonly importClause?: ImportClause; readonly moduleSpecifier: Expression; readonly attributes?: ImportAttributes; } export interface JSDocCallbackTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocCallbackTag; readonly typeExpression: TypeNode; readonly name?: JSDocFullName; } export interface JSDocOverloadTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocOverloadTag; readonly typeExpression: TypeNode; } export interface JSDocTypedefTag extends JSDocTagBase { readonly kind: SyntaxKind.JSDocTypedefTag; readonly typeExpression?: Node; readonly name?: JSDocFullName; } export interface JSDocSignature extends JSDocTypeBase, FunctionLikeBase { readonly kind: SyntaxKind.JSDocSignature; } export interface JSDocNameReference extends TypeNodeBase { readonly kind: SyntaxKind.JSDocNameReference; readonly name: EntityName; } export interface ModuleDeclaration extends DeclarationBase, StatementBase, ModifiersBase, BodyBase { readonly kind: SyntaxKind.ModuleDeclaration; readonly keyword: SyntaxKind.ModuleKeyword | SyntaxKind.N