| import * as ts from 'typescript'; |
| import { NodeWrap } from './convert-ast'; |
| export declare function getChildOfKind<T extends ts.SyntaxKind>(node: ts.Node, kind: T, sourceFile?: ts.SourceFile): ts.Token<T> | undefined; |
| export declare function isTokenKind(kind: ts.SyntaxKind): boolean; |
| export declare function isNodeKind(kind: ts.SyntaxKind): boolean; |
| export declare function isAssignmentKind(kind: ts.SyntaxKind): boolean; |
| export declare function isTypeNodeKind(kind: ts.SyntaxKind): boolean; |
| export declare function isJsDocKind(kind: ts.SyntaxKind): boolean; |
| export declare function isKeywordKind(kind: ts.SyntaxKind): boolean; |
| export declare function isThisParameter(parameter: ts.ParameterDeclaration): boolean; |
| export declare function getModifier(node: ts.Node, kind: ts.Modifier['kind']): ts.Modifier | undefined; |
| export declare function hasModifier(modifiers: ts.ModifiersArray | undefined, ...kinds: Array<ts.Modifier['kind']>): boolean; |
| export declare function isParameterProperty(node: ts.ParameterDeclaration): boolean; |
| export declare function hasAccessModifier(node: ts.ClassElement | ts.ParameterDeclaration): boolean; |
| export declare const isNodeFlagSet: (node: ts.Node, flag: ts.NodeFlags) => boolean; |
| export declare const isTypeFlagSet: (type: ts.Type, flag: ts.TypeFlags) => boolean; |
| export declare const isSymbolFlagSet: (symbol: ts.Symbol, flag: ts.SymbolFlags) => boolean; |
| export declare function isObjectFlagSet(objectType: ts.ObjectType, flag: ts.ObjectFlags): boolean; |
| export declare function isModifierFlagSet(node: ts.Node, flag: ts.ModifierFlags): boolean; |
| export declare function getPreviousStatement(statement: ts.Statement): ts.Statement | undefined; |
| export declare function getNextStatement(statement: ts.Statement): ts.Statement | undefined; |
| export declare function getPreviousToken(node: ts.Node, sourceFile?: ts.SourceFile): ts.Node | undefined; |
| export declare function getNextToken(node: ts.Node, sourceFile?: ts.SourceFile): ts.Node | undefined; |
| export declare function getTokenAtPosition(parent: ts.Node, pos: number, sourceFile?: ts.SourceFile, allowJsDoc?: boolean): ts.Node | undefined; |
| export declare function getCommentAtPosition(sourceFile: ts.SourceFile, pos: number, parent?: ts.Node): ts.CommentRange | undefined; |
| export declare function isPositionInComment(sourceFile: ts.SourceFile, pos: number, parent?: ts.Node): boolean; |
| export declare function commentText(sourceText: string, comment: ts.CommentRange): string; |
| export declare function getWrappedNodeAtPosition(wrap: NodeWrap, pos: number): NodeWrap | undefined; |
| export declare function getPropertyName(propertyName: ts.PropertyName): string | undefined; |
| export declare function forEachDestructuringIdentifier<T>(pattern: ts.BindingPattern, fn: (element: ts.BindingElement & { |
| name: ts.Identifier; |
| }) => T): T | undefined; |
| export declare function forEachDeclaredVariable<T>(declarationList: ts.VariableDeclarationList, cb: (element: (ts.VariableDeclaration | ts.BindingElement) & { |
| name: ts.Identifier; |
| }) => T): T | undefined; |
| export declare enum VariableDeclarationKind { |
| Var = 0, |
| Let = 1, |
| Const = 2 |
| } |
| export declare function getVariableDeclarationKind(declarationList: ts.VariableDeclarationList): VariableDeclarationKind; |
| export declare function isBlockScopedVariableDeclarationList(declarationList: ts.VariableDeclarationList): boolean; |
| export declare function isBlockScopedVariableDeclaration(declaration: ts.VariableDeclaration): boolean; |
| export declare function isBlockScopedDeclarationStatement(statement: ts.Statement): statement is ts.DeclarationStatement; |
| export declare function isInSingleStatementContext(statement: ts.Statement): boolean; |
| export declare enum ScopeBoundary { |
| None = 0, |
| Function = 1, |
| Block = 2, |
| Type = 4, |
| ConditionalType = 8 |
| } |
| export declare enum ScopeBoundarySelector { |
| Function = 1, |
| Block = 3, |
| Type = 7, |
| InferType = 8 |
| } |
| export declare function isScopeBoundary(node: ts.Node): ScopeBoundary; |
| export declare function isTypeScopeBoundary(node: ts.Node): ScopeBoundary; |
| export declare function isFunctionScopeBoundary(node: ts.Node): ScopeBoundary; |
| export declare function isBlockScopeBoundary(node: ts.Node): ScopeBoundary; |
| export declare function hasOwnThisReference(node: ts.Node): boolean; |
| export declare function isFunctionWithBody(node: ts.Node): node is ts.FunctionLikeDeclaration & { |
| body: {}; |
| }; |
| export declare function forEachToken(node: ts.Node, cb: (node: ts.Node) => void, sourceFile?: ts.SourceFile): void; |
| export declare type ForEachTokenCallback = (fullText: string, kind: ts.SyntaxKind, range: ts.TextRange, parent: ts.Node) => void; |
| export declare function forEachTokenWithTrivia(node: ts.Node, cb: ForEachTokenCallback, sourceFile?: ts.SourceFile): void; |
| export declare type ForEachCommentCallback = (fullText: string, comment: ts.CommentRange) => void; |
| export declare function forEachComment(node: ts.Node, cb: ForEachCommentCallback, sourceFile?: ts.SourceFile): void; |
| export interface LineRange extends ts.TextRange { |
| contentLength: number; |
| } |
| export declare function getLineRanges(sourceFile: ts.SourceFile): LineRange[]; |
| export declare function getLineBreakStyle(sourceFile: ts.SourceFile): "\n" | "\r\n"; |
| export declare function isValidIdentifier(text: string): boolean; |
| export declare function isValidPropertyAccess(text: string): boolean; |
| export declare function isValidPropertyName(text: string): boolean; |
| export declare function isValidNumericLiteral(text: string): boolean; |
| export declare function isValidJsxIdentifier(text: string): boolean; |
| export declare function isNumericPropertyName(name: string | ts.__String): boolean; |
| export declare function isSameLine(sourceFile: ts.SourceFile, pos1: number, pos2: number): boolean; |
| export declare enum SideEffectOptions { |
| None = 0, |
| TaggedTemplate = 1, |
| Constructor = 2, |
| JsxElement = 4 |
| } |
| export declare function hasSideEffects(node: ts.Expression, options?: SideEffectOptions): boolean; |
| export declare function getDeclarationOfBindingElement(node: ts.BindingElement): ts.VariableDeclaration | ts.ParameterDeclaration; |
| export declare function isExpressionValueUsed(node: ts.Expression): boolean; |
| export declare enum AccessKind { |
| None = 0, |
| Read = 1, |
| Write = 2, |
| Delete = 4, |
| ReadWrite = 3, |
| Modification = 6 |
| } |
| export declare function getAccessKind(node: ts.Node): AccessKind; |
| export declare function isReassignmentTarget(node: ts.Expression): boolean; |
| export declare function canHaveJsDoc(node: ts.Node): node is ts.HasJSDoc; |
| export declare function getJsDoc(node: ts.Node, sourceFile?: ts.SourceFile): ts.JSDoc[]; |
| export declare function parseJsDocOfNode(node: ts.Node, considerTrailingComments?: boolean, sourceFile?: ts.SourceFile): ts.JSDoc[]; |
| export declare enum ImportKind { |
| ImportDeclaration = 1, |
| ImportEquals = 2, |
| ExportFrom = 4, |
| DynamicImport = 8, |
| Require = 16, |
| ImportType = 32, |
| All = 63, |
| AllImports = 59, |
| AllStaticImports = 3, |
| AllImportExpressions = 24, |
| AllRequireLike = 18 |
| } |
| export declare function findImports(sourceFile: ts.SourceFile, kinds: ImportKind): (ts.StringLiteral | ts.NoSubstitutionTemplateLiteral)[]; |
| export declare type ImportLike = ts.ImportDeclaration | (ts.ImportEqualsDeclaration & { |
| moduleReference: ts.ExternalModuleReference; |
| }) | (ts.ExportDeclaration & { |
| moduleSpecifier: {}; |
| }) | (ts.CallExpression & { |
| expression: ts.Token<ts.SyntaxKind.ImportKeyword> | (ts.Identifier & { |
| text: 'require'; |
| }); |
| arguments: [ts.Expression]; |
| }) | ts.ImportTypeNode; |
| export declare function findImportLikeNodes(sourceFile: ts.SourceFile, kinds: ImportKind): ImportLike[]; |
| export declare function isStatementInAmbientContext(node: ts.Statement): boolean; |
| export declare function isAmbientModuleBlock(node: ts.Node): node is ts.ModuleBlock; |
| export declare function getIIFE(func: ts.FunctionExpression | ts.ArrowFunction): ts.CallExpression | undefined; |
| export declare type StrictCompilerOption = 'noImplicitAny' | 'noImplicitThis' | 'strictNullChecks' | 'strictFunctionTypes' | 'strictPropertyInitialization' | 'alwaysStrict' | 'strictBindCallApply'; |
| export declare function isStrictCompilerOptionEnabled(options: ts.CompilerOptions, option: StrictCompilerOption): boolean; |
| export declare type BooleanCompilerOptions = { |
| [K in keyof ts.CompilerOptions]: NonNullable<ts.CompilerOptions[K]> extends boolean ? K : never; |
| } extends { |
| [_ in keyof ts.CompilerOptions]: infer U; |
| } ? U : never; |
| export declare function isCompilerOptionEnabled(options: ts.CompilerOptions, option: BooleanCompilerOptions | 'stripInternal'): boolean; |
| export declare function isAmbientModule(node: ts.ModuleDeclaration): boolean; |
| export declare function getCheckJsDirective(source: string): ts.CheckJsDirective | undefined; |
| export declare function isConstAssertion(node: ts.AssertionExpression): boolean; |
| export declare function isInConstContext(node: ts.Expression): boolean; |
| export declare function isReadonlyAssignmentDeclaration(node: ts.CallExpression, checker: ts.TypeChecker): boolean; |
| export declare function isBindableObjectDefinePropertyCall(node: ts.CallExpression): boolean; |
| export interface WellKnownSymbolLiteral extends ts.PropertyAccessExpression { |
| expression: ts.Identifier & { |
| text: 'Symbol'; |
| escapedText: 'symbol'; |
| }; |
| } |
| export declare function isWellKnownSymbolLiterally(node: ts.Expression): node is WellKnownSymbolLiteral; |
| export interface PropertyName { |
| displayName: string; |
| symbolName: ts.__String; |
| } |
| export declare function getPropertyNameOfWellKnownSymbol(node: WellKnownSymbolLiteral): PropertyName; |
| export interface LateBoundPropertyNames { |
| known: boolean; |
| names: PropertyName[]; |
| } |
| export declare function getLateBoundPropertyNames(node: ts.Expression, checker: ts.TypeChecker): LateBoundPropertyNames; |
| export declare function getLateBoundPropertyNamesOfPropertyName(node: ts.PropertyName, checker: ts.TypeChecker): LateBoundPropertyNames; |
| export declare function getSingleLateBoundPropertyNameOfPropertyName(node: ts.PropertyName, checker: ts.TypeChecker): PropertyName | undefined; |
| export declare function unwrapParentheses(node: ts.Expression): ts.Expression; |