import ts from 'typescript'; import { Expression, J, Statement } from '../java'; import { JS, JSX } from '.'; import { NamedStyles } from "../style"; import { Parser, ParserInput, ParserOptions } from "../parser"; import { SourceFile } from "../tree"; import { JavaScriptTypeMapping } from "./type-mapping"; export interface JavaScriptParserOptions extends ParserOptions { styles?: NamedStyles[]; sourceFileCache?: Map; } export declare class JavaScriptParser extends Parser { private readonly compilerOptions; private readonly styles?; private oldProgram?; private readonly sourceFileCache?; constructor({ ctx, relativeTo, styles, sourceFileCache, }?: JavaScriptParserOptions); /** * Parses a single source file using only ts.createSourceFile(), bypassing * the TypeScript type checker entirely. This is significantly faster than * the full parse() method when type information is not needed. * * Use this method for formatting-only operations where AST structure is * needed but type attribution is not required. * * @param input The parser input containing the source code * @returns The parsed SourceFile, or a ParseExceptionResult if parsing failed */ parseOnly(input: ParserInput): Promise; reset(): this; parse(...inputs: ParserInput[]): AsyncGenerator; } export declare class JavaScriptParserVisitor { private readonly sourceFile; private readonly sourcePath; private readonly typeMapping?; constructor(sourceFile: ts.SourceFile, sourcePath: string, typeMapping?: JavaScriptTypeMapping); visit: (node: ts.Node) => any; convert: (node: ts.Node) => T; detectBOMAndTextEncoding(content: String): { hasBom: boolean; encoding: string | undefined; }; visitSourceFile(node: ts.SourceFile): JS.CompilationUnit; private semicolonPaddedStatementList; visitUnknown(node: ts.Node): J.Unknown; private mapModifiers; private mapModifier; private rightPadded; private rightPaddedList; private rightPaddedSeparatedList; private leftPadded; private semicolonPrefix; private keywordPrefix; visitClassDeclaration(node: ts.ClassDeclaration): J.ClassDeclaration; private mapExtends; private mapInterfaceExtends; private mapImplements; private mapTypeTree; visitNumericLiteral(node: ts.NumericLiteral): J.Literal; visitTrueKeyword(node: ts.TrueLiteral): J.Literal; visitNumberKeyword(node: ts.Node): J.Identifier; visitBooleanKeyword(node: ts.Node): J.Identifier; visitStringKeyword(node: ts.Node): J.Identifier; visitUndefinedKeyword(node: ts.Node): J.Identifier; visitAnyKeyword(node: ts.Node): J.Identifier; visitIntrinsicKeyword(node: ts.Node): J.Identifier; visitObjectKeyword(node: ts.Node): J.Identifier; visitUnknownKeyword(node: ts.Node): J.Identifier; visitVoidKeyword(node: ts.Node): J.Identifier; visitFalseKeyword(node: ts.FalseLiteral): J.Literal; visitNullKeyword(node: ts.NullLiteral): J.Literal; visitNeverKeyword(node: ts.Node): J.Identifier; visitSymbolKeyword(node: ts.Node): J.Identifier; visitBigIntKeyword(node: ts.Node): J.Identifier; private mapLiteral; /** * Resolve a literal's primitive type from its own lexical category rather than * from the type checker. * * A literal's primitive is fixed by how it is written, not by its type according to the type checker. */ private literalType; visitBigIntLiteral(node: ts.BigIntLiteral): J.Literal; visitStringLiteral(node: ts.StringLiteral): J.Literal; visitRegularExpressionLiteral(node: ts.RegularExpressionLiteral): J.Literal; visitNoSubstitutionTemplateLiteral(node: ts.NoSubstitutionTemplateLiteral): J.Literal; visitTemplateHead(node: ts.TemplateHead): J.Literal; visitTemplateMiddle(node: ts.TemplateMiddle): J.Literal; visitTemplateTail(node: ts.TemplateTail): J.Literal; visitIdentifier(node: ts.Identifier): J.Identifier; private mapIdentifier; visitThisKeyword(node: ts.ThisExpression): J.Identifier; visitPrivateIdentifier(node: ts.PrivateIdentifier): J.Identifier; visitQualifiedName(node: ts.QualifiedName): J.FieldAccess; visitComputedPropertyName(node: ts.ComputedPropertyName): JS.ComputedPropertyName; visitTypeParameter(node: ts.TypeParameterDeclaration): J.TypeParameter; visitParameter(node: ts.ParameterDeclaration): J.VariableDeclarations; visitDecorator(node: ts.Decorator): J.Annotation | J.Unknown; visitPropertySignature(node: ts.PropertySignature): J.VariableDeclarations; visitPropertyDeclaration(node: ts.PropertyDeclaration): J.VariableDeclarations; visitMethodSignature(node: ts.MethodSignature): J.MethodDeclaration | JS.ComputedPropertyMethodDeclaration; visitMethodDeclaration(node: ts.MethodDeclaration): J.MethodDeclaration | JS.ComputedPropertyMethodDeclaration; private mapMethodName; private mapTypeInfo; visitClassStaticBlockDeclaration(node: ts.ClassStaticBlockDeclaration): J.Block; visitConstructor(node: ts.ConstructorDeclaration): J.MethodDeclaration; visitGetAccessor(node: ts.GetAccessorDeclaration): J.MethodDeclaration | JS.ComputedPropertyMethodDeclaration; visitSetAccessor(node: ts.SetAccessorDeclaration): J.MethodDeclaration | JS.ComputedPropertyMethodDeclaration; visitCallSignature(node: ts.CallSignatureDeclaration): J.MethodDeclaration; visitConstructSignature(node: ts.ConstructSignatureDeclaration): J.MethodDeclaration; visitIndexSignature(node: ts.IndexSignatureDeclaration): JS.IndexSignatureDeclaration; visitTypePredicate(node: ts.TypePredicateNode): JS.TypePredicate; visitTypeReference(node: ts.TypeReferenceNode): J.ParameterizedType; visitFunctionType(node: ts.FunctionTypeNode): JS.FunctionType; visitConstructorType(node: ts.ConstructorTypeNode): JS.FunctionType; visitTypeQuery(node: ts.TypeQueryNode): JS.TypeQuery; visitTypeLiteral(node: ts.TypeLiteralNode): JS.TypeLiteral; visitArrayType(node: ts.ArrayTypeNode): J.ArrayType; visitTupleType(node: ts.TupleTypeNode): JS.Tuple; /** * This can only exist in the context of a TupleTypeNode, and so printing * of the Optional marker will be handled specially in the printer for {@link JS.Tuple}. * @param node The optional type node. */ visitOptionalType(node: ts.OptionalTypeNode): JS; visitRestType(node: ts.RestTypeNode): JS.Spread; visitUnionType(node: ts.UnionTypeNode): JS.Union; visitIntersectionType(node: ts.IntersectionTypeNode): JS.Intersection; visitConditionalType(node: ts.ConditionalTypeNode): JS.ConditionalType; visitInferType(node: ts.InferTypeNode): JS.InferType; visitParenthesizedType(node: ts.ParenthesizedTypeNode): J.ParenthesizedTypeTree; visitThisType(node: ts.ThisTypeNode): J.Identifier; visitTypeOperator(node: ts.TypeOperatorNode): JS.TypeOperator; visitIndexedAccessType(node: ts.IndexedAccessTypeNode): JS.IndexedAccessType; visitMappedType(node: ts.MappedTypeNode): JS.MappedType; visitLiteralType(node: ts.LiteralTypeNode): JS.LiteralType; visitNamedTupleMember(node: ts.NamedTupleMember): J.VariableDeclarations; visitTemplateLiteralType(node: ts.TemplateLiteralTypeNode): JS.TemplateExpression; visitTemplateLiteralTypeSpan(node: ts.TemplateLiteralTypeSpan): JS.TemplateExpression.Span; visitImportType(node: ts.ImportTypeNode): JS.ImportType; visitObjectBindingPattern(node: ts.ObjectBindingPattern): JS.ObjectBindingPattern; visitArrayBindingPattern(node: ts.ArrayBindingPattern): JS.ArrayBindingPattern; visitBindingElement(node: ts.BindingElement): JS.BindingElement; visitArrayLiteralExpression(node: ts.ArrayLiteralExpression): J.NewArray; visitObjectLiteralExpression(node: ts.ObjectLiteralExpression): J.NewClass; private convertPropertyAssignments; visitPropertyAccessExpression(node: ts.PropertyAccessExpression): J.FieldAccess; visitElementAccessExpression(node: ts.ElementAccessExpression): J.ArrayAccess; visitCallExpression(node: ts.CallExpression): J.MethodInvocation | JS.FunctionCall; visitSuperKeyword(node: ts.KeywordToken): J.Identifier; visitNewExpression(node: ts.NewExpression): J.NewClass; visitTaggedTemplateExpression(node: ts.TaggedTemplateExpression): JS.TaggedTemplateExpression; visitTypeAssertionExpression(node: ts.TypeAssertion): J.TypeCast; visitParenthesizedExpression(node: ts.ParenthesizedExpression): J.Parentheses; visitArrowFunction(node: ts.ArrowFunction): JS.ArrowFunction; visitDeleteExpression(node: ts.DeleteExpression): JS.Delete; visitTypeOfExpression(node: ts.TypeOfExpression): JS.TypeOf; visitVoidExpression(node: ts.VoidExpression): JS.Void; visitAwaitExpression(node: ts.AwaitExpression): JS.Await; visitPrefixUnaryExpression(node: ts.PrefixUnaryExpression): J.Unary | J.Unknown; visitPostfixUnaryExpression(node: ts.PostfixUnaryExpression): J.Unary | J.Unknown; visitBinaryExpression(node: ts.BinaryExpression): J.Binary | J.AssignmentOperation | JS.AssignmentOperation | J.Assignment | JS.Binary | J.InstanceOf | J.Unknown; private mapBinaryOperator; private mapAssignmentOperation; visitConditionalExpression(node: ts.ConditionalExpression): J.Ternary; visitTemplateExpression(node: ts.TemplateExpression): JS.TemplateExpression; visitYieldExpression(node: ts.YieldExpression): JS.StatementExpression; visitSpreadElement(node: ts.SpreadElement): JS.Spread; visitClassExpression(node: ts.ClassExpression): JS.StatementExpression; visitOmittedExpression(node: ts.OmittedExpression): J.Empty; visitExpressionWithTypeArguments(node: ts.ExpressionWithTypeArguments): JS.ExpressionWithTypeArguments | Expression; visitAsExpression(node: ts.AsExpression): JS.As; visitNonNullExpression(node: ts.NonNullExpression): Expression; visitMetaProperty(node: ts.MetaProperty): J.FieldAccess; visitSyntheticExpression(node: ts.SyntheticExpression): J.Unknown; visitSatisfiesExpression(node: ts.SatisfiesExpression): JS.SatisfiesExpression; visitTemplateSpan(node: ts.TemplateSpan): JS.TemplateExpression.Span; visitSemicolonClassElement(node: ts.SemicolonClassElement): J.Empty; visitBlock(node: ts.Block): J.Block; visitEmptyStatement(node: ts.EmptyStatement): J.Empty; visitVariableStatement(node: ts.VariableStatement): JS.ScopedVariableDeclarations | J.VariableDeclarations; visitExpressionStatement(node: ts.ExpressionStatement): Statement; visitIfStatement(node: ts.IfStatement): J.If; visitDoStatement(node: ts.DoStatement): J.DoWhileLoop; visitWhileStatement(node: ts.WhileStatement): J.WhileLoop; visitForStatement(node: ts.ForStatement): J.ForLoop; visitForInStatement(node: ts.ForInStatement): JS.ForInLoop; visitForOfStatement(node: ts.ForOfStatement): JS.ForOfLoop; visitContinueStatement(node: ts.ContinueStatement): J.Continue; visitBreakStatement(node: ts.BreakStatement): J.Break; visitReturnStatement(node: ts.ReturnStatement): J.Return; visitWithStatement(node: ts.WithStatement): JS.WithStatement; visitSwitchStatement(node: ts.SwitchStatement): J.Switch; visitLabeledStatement(node: ts.LabeledStatement): J.Label; visitThrowStatement(node: ts.ThrowStatement): J.Throw; visitTryStatement(node: ts.TryStatement): J.Try; visitDebuggerStatement(node: ts.DebuggerStatement): JS.ExpressionStatement; visitVariableDeclaration(node: ts.VariableDeclaration): J.VariableDeclarations.NamedVariable; visitVariableDeclarationList(node: ts.VariableDeclarationList): J.VariableDeclarations | JS.ScopedVariableDeclarations; visitFunctionDeclaration(node: ts.FunctionDeclaration): J.MethodDeclaration; visitFunctionExpression(node: ts.FunctionExpression): JS.StatementExpression; private mapFunctionDeclaration; private getParameterListNodes; visitInterfaceDeclaration(node: ts.InterfaceDeclaration): J.ClassDeclaration; visitTypeAliasDeclaration(node: ts.TypeAliasDeclaration): JS.TypeDeclaration; visitEnumDeclaration(node: ts.EnumDeclaration): J.ClassDeclaration; visitModuleDeclaration(node: ts.ModuleDeclaration): JS.NamespaceDeclaration; private remapFieldAccess; visitModuleBlock(node: ts.ModuleBlock): J.Block; visitCaseBlock(node: ts.CaseBlock): J.Block; visitNamespaceExportDeclaration(node: ts.NamespaceExportDeclaration): JS.NamespaceDeclaration; visitImportEqualsDeclaration(node: ts.ImportEqualsDeclaration): JS.Import; visitImportKeyword(node: ts.ImportExpression): J.Identifier; visitImportDeclaration(node: ts.ImportDeclaration): JS.Import; visitImportClause(node: ts.ImportClause): JS.ImportClause; visitNamespaceImport(node: ts.NamespaceImport): JS.Alias; visitNamedImports(node: ts.NamedImports): JS.NamedImports; visitImportSpecifier(node: ts.ImportSpecifier): JS.ImportSpecifier; visitExportAssignment(node: ts.ExportAssignment): JS.ExportAssignment; visitExportDeclaration(node: ts.ExportDeclaration): JS.ExportDeclaration; visitNamedExports(node: ts.NamedExports): JS.NamedExports; visitNamespaceExport(node: ts.NamespaceExport): JS.Alias; visitExportSpecifier(node: ts.ExportSpecifier): JS.ExportSpecifier; visitMissingDeclaration(node: ts.MissingDeclaration): J.Unknown; visitExternalModuleReference(node: ts.ExternalModuleReference): J.MethodInvocation; visitJsxText(node: ts.JsxText): J.Literal; visitJsxElement(node: ts.JsxElement): JSX.Tag; visitJsxSelfClosingElement(node: ts.JsxSelfClosingElement): JSX.Tag; visitJsxFragment(node: ts.JsxFragment): JSX.Tag; visitJsxAttribute(node: ts.JsxAttribute): JSX.Attribute; visitJsxSpreadAttribute(node: ts.JsxSpreadAttribute): JSX.SpreadAttribute; visitJsxExpression(node: ts.JsxExpression): JSX.EmbeddedExpression; visitJsxNamespacedName(node: ts.JsxNamespacedName): JSX.NamespacedName; visitCaseClause(node: ts.CaseClause): J.Case; visitDefaultClause(node: ts.DefaultClause): J.Case; visitHeritageClause(node: ts.HeritageClause): J; visitCatchClause(node: ts.CatchClause): J.Try.Catch; visitImportAttributes(node: ts.ImportAttributes): JS.ImportAttributes; visitImportAttribute(node: ts.ImportAttribute): JS.ImportAttribute; visitPropertyAssignment(node: ts.PropertyAssignment): JS.PropertyAssignment; visitShorthandPropertyAssignment(node: ts.ShorthandPropertyAssignment): JS.PropertyAssignment; visitSpreadAssignment(node: ts.SpreadAssignment): JS.Spread; visitEnumMember(node: ts.EnumMember): J.EnumValue; visitBundle(node: ts.Bundle): J.Unknown; visitJSDocTypeExpression(node: ts.JSDocTypeExpression): J.Unknown; visitJSDocNameReference(node: ts.JSDocNameReference): J.Unknown; visitJSDocMemberName(node: ts.JSDocMemberName): J.Unknown; visitJSDocAllType(node: ts.JSDocAllType): J.Unknown; visitJSDocUnknownType(node: ts.JSDocUnknownType): J.Unknown; visitJSDocNullableType(node: ts.JSDocNullableType): J.Unknown; visitJSDocNonNullableType(node: ts.JSDocNonNullableType): J.Unknown; visitJSDocOptionalType(node: ts.JSDocOptionalType): J.Unknown; visitJSDocFunctionType(node: ts.JSDocFunctionType): J.Unknown; visitJSDocVariadicType(node: ts.JSDocVariadicType): J.Unknown; visitJSDocNamepathType(node: ts.JSDocNamepathType): J.Unknown; visitJSDoc(node: ts.JSDoc): J.Unknown; visitJSDocType(node: ts.JSDocType): J.Unknown; visitJSDocText(node: ts.JSDocText): J.Unknown; visitJSDocTypeLiteral(node: ts.JSDocTypeLiteral): J.Unknown; visitJSDocSignature(node: ts.JSDocSignature): J.Unknown; visitJSDocLink(node: ts.JSDocLink): J.Unknown; visitJSDocLinkCode(node: ts.JSDocLinkCode): J.Unknown; visitJSDocLinkPlain(node: ts.JSDocLinkPlain): J.Unknown; visitJSDocTag(node: ts.JSDocTag): J.Unknown; visitJSDocAugmentsTag(node: ts.JSDocAugmentsTag): J.Unknown; visitJSDocImplementsTag(node: ts.JSDocImplementsTag): J.Unknown; visitJSDocAuthorTag(node: ts.JSDocAuthorTag): J.Unknown; visitJSDocDeprecatedTag(node: ts.JSDocDeprecatedTag): J.Unknown; visitJSDocClassTag(node: ts.JSDocClassTag): J.Unknown; visitJSDocPublicTag(node: ts.JSDocPublicTag): J.Unknown; visitJSDocPrivateTag(node: ts.JSDocPrivateTag): J.Unknown; visitJSDocProtectedTag(node: ts.JSDocProtectedTag): J.Unknown; visitJSDocReadonlyTag(node: ts.JSDocReadonlyTag): J.Unknown; visitJSDocOverrideTag(node: ts.JSDocOverrideTag): J.Unknown; visitJSDocCallbackTag(node: ts.JSDocCallbackTag): J.Unknown; visitJSDocOverloadTag(node: ts.JSDocOverloadTag): J.Unknown; visitJSDocEnumTag(node: ts.JSDocEnumTag): J.Unknown; visitJSDocParameterTag(node: ts.JSDocParameterTag): J.Unknown; visitJSDocReturnTag(node: ts.JSDocReturnTag): J.Unknown; visitJSDocThisTag(node: ts.JSDocThisTag): J.Unknown; visitJSDocTypeTag(node: ts.JSDocTypeTag): J.Unknown; visitJSDocTemplateTag(node: ts.JSDocTemplateTag): J.Unknown; visitJSDocTypedefTag(node: ts.JSDocTypedefTag): J.Unknown; visitJSDocSeeTag(node: ts.JSDocSeeTag): J.Unknown; visitJSDocPropertyTag(node: ts.JSDocPropertyTag): J.Unknown; visitJSDocThrowsTag(node: ts.JSDocThrowsTag): J.Unknown; visitJSDocSatisfiesTag(node: ts.JSDocSatisfiesTag): J.Unknown; visitJSDocImportTag(node: ts.JSDocImportTag): J.Unknown; visitSyntaxList(node: ts.SyntaxList): J.Unknown; visitNotEmittedStatement(node: ts.NotEmittedStatement): J.Unknown; visitPartiallyEmittedExpression(node: ts.PartiallyEmittedExpression): J.Unknown; visitCommaListExpression(node: ts.CommaListExpression): J.Unknown; visitSyntheticReferenceExpression(node: ts.Node): J.Unknown; private _seenTriviaSpans; private prefix; private suffix; private mapType; private mapDeclarationType; private mapPrimitiveType; private mapVariableType; private mapMethodType; private mapAnnotationType; private mapCommaSeparatedList; private mapTypeArguments; private trailingComma; private mapToContainer; private mapToRightPaddedList; private mapJsxChildren; private mapJsxAttributes; private mapDecorators; private mapTypeParametersAsContainer; private mapTypeParametersAsObject; private mapTypeParametersList; private findChildNode; private findLastChildNode; private convertToken; private newEmpty; private maybeAddOptionalMarker; } //# sourceMappingURL=parser.d.ts.map