2016-09-02 20:34:23 +02:00
namespace ts {
export interface Node {
getSourceFile ( ) : SourceFile ;
getChildCount ( sourceFile? : SourceFile ) : number ;
getChildAt ( index : number , sourceFile? : SourceFile ) : Node ;
getChildren ( sourceFile? : SourceFile ) : Node [ ] ;
2017-03-15 19:44:36 +01:00
/* @internal */
2017-11-07 03:38:03 +01:00
// tslint:disable-next-line unified-signatures
2017-03-15 19:44:36 +01:00
getChildren ( sourceFile? : SourceFileLike ) : Node [ ] ;
2016-09-02 20:34:23 +02:00
getStart ( sourceFile? : SourceFile , includeJsDocComment? : boolean ) : number ;
2017-03-15 19:44:36 +01:00
/* @internal */
2017-11-07 03:38:03 +01:00
// tslint:disable-next-line unified-signatures
2017-03-15 19:44:36 +01:00
getStart ( sourceFile? : SourceFileLike , includeJsDocComment? : boolean ) : number ;
2016-09-02 20:34:23 +02:00
getFullStart ( ) : number ;
getEnd ( ) : number ;
2018-05-10 20:17:04 +02:00
getWidth ( sourceFile? : SourceFileLike ) : number ;
2016-09-02 20:34:23 +02:00
getFullWidth ( ) : number ;
getLeadingTriviaWidth ( sourceFile? : SourceFile ) : number ;
getFullText ( sourceFile? : SourceFile ) : string ;
getText ( sourceFile? : SourceFile ) : string ;
getFirstToken ( sourceFile? : SourceFile ) : Node ;
getLastToken ( sourceFile? : SourceFile ) : Node ;
2017-03-10 19:42:26 +01:00
// See ts.forEachChild for documentation.
2017-05-23 18:54:02 +02:00
forEachChild < T > ( cbNode : ( node : Node ) = > T | undefined , cbNodeArray ? : ( nodes : NodeArray < Node > ) = > T | undefined ) : T | undefined ;
2016-09-02 20:34:23 +02:00
}
2017-07-25 22:16:34 +02:00
export interface Identifier {
readonly text : string ;
}
2016-09-02 20:34:23 +02:00
export interface Symbol {
2017-07-25 23:22:26 +02:00
readonly name : string ;
2016-09-02 20:34:23 +02:00
getFlags ( ) : SymbolFlags ;
2017-07-25 23:22:26 +02:00
getEscapedName ( ) : __String ;
getName ( ) : string ;
2017-05-23 18:54:02 +02:00
getDeclarations ( ) : Declaration [ ] | undefined ;
2017-11-06 22:18:21 +01:00
getDocumentationComment ( typeChecker : TypeChecker | undefined ) : SymbolDisplayPart [ ] ;
2016-12-13 00:29:29 +01:00
getJsDocTags ( ) : JSDocTagInfo [ ] ;
2016-09-02 20:34:23 +02:00
}
export interface Type {
getFlags ( ) : TypeFlags ;
2017-05-23 18:54:02 +02:00
getSymbol ( ) : Symbol | undefined ;
2016-09-02 20:34:23 +02:00
getProperties ( ) : Symbol [ ] ;
2017-05-23 18:54:02 +02:00
getProperty ( propertyName : string ) : Symbol | undefined ;
2016-09-02 20:34:23 +02:00
getApparentProperties ( ) : Symbol [ ] ;
getCallSignatures ( ) : Signature [ ] ;
getConstructSignatures ( ) : Signature [ ] ;
2017-05-23 18:54:02 +02:00
getStringIndexType ( ) : Type | undefined ;
getNumberIndexType ( ) : Type | undefined ;
getBaseTypes ( ) : BaseType [ ] | undefined ;
2016-09-02 20:34:23 +02:00
getNonNullableType ( ) : Type ;
2017-11-28 22:37:42 +01:00
getConstraint ( ) : Type | undefined ;
getDefault ( ) : Type | undefined ;
2018-04-04 17:10:09 +02:00
isUnion ( ) : this is UnionType ;
isIntersection ( ) : this is IntersectionType ;
isUnionOrIntersection ( ) : this is UnionOrIntersectionType ;
isLiteral ( ) : this is LiteralType ;
isStringLiteral ( ) : this is StringLiteralType ;
isNumberLiteral ( ) : this is NumberLiteralType ;
isTypeParameter ( ) : this is TypeParameter ;
isClassOrInterface ( ) : this is InterfaceType ;
isClass ( ) : this is InterfaceType ;
2016-09-02 20:34:23 +02:00
}
export interface Signature {
getDeclaration ( ) : SignatureDeclaration ;
2017-05-23 18:54:02 +02:00
getTypeParameters ( ) : TypeParameter [ ] | undefined ;
2016-09-02 20:34:23 +02:00
getParameters ( ) : Symbol [ ] ;
getReturnType ( ) : Type ;
2017-11-06 22:18:21 +01:00
getDocumentationComment ( typeChecker : TypeChecker | undefined ) : SymbolDisplayPart [ ] ;
2016-12-13 00:29:29 +01:00
getJsDocTags ( ) : JSDocTagInfo [ ] ;
2016-09-02 20:34:23 +02:00
}
export interface SourceFile {
/* @internal */ version : string ;
/* @internal */ scriptSnapshot : IScriptSnapshot ;
2017-07-06 23:45:50 +02:00
/* @internal */ nameTable : UnderscoreEscapedMap < number > ;
2016-09-02 20:34:23 +02:00
2016-10-28 00:50:21 +02:00
/* @internal */ getNamedDeclarations ( ) : Map < Declaration [ ] > ;
2016-09-02 20:34:23 +02:00
getLineAndCharacterOfPosition ( pos : number ) : LineAndCharacter ;
2016-11-17 01:01:16 +01:00
getLineEndOfPosition ( pos : number ) : number ;
2017-08-24 18:55:01 +02:00
getLineStarts ( ) : ReadonlyArray < number > ;
2016-09-02 20:34:23 +02:00
getPositionOfLineAndCharacter ( line : number , character : number ) : number ;
update ( newText : string , textChangeRange : TextChangeRange ) : SourceFile ;
2018-03-26 21:15:34 +02:00
/* @internal */ sourceMapper? : sourcemaps.SourceMapper ;
2016-09-02 20:34:23 +02:00
}
2017-03-15 19:44:36 +01:00
export interface SourceFileLike {
getLineAndCharacterOfPosition ( pos : number ) : LineAndCharacter ;
2018-03-26 21:15:34 +02:00
/*@internal*/ sourceMapper? : sourcemaps.SourceMapper ;
2017-03-15 19:44:36 +01:00
}
2017-05-18 20:08:07 +02:00
export interface SourceMapSource {
getLineAndCharacterOfPosition ( pos : number ) : LineAndCharacter ;
}
2016-09-02 20:34:23 +02:00
/ * *
* Represents an immutable snapshot of a script at a specified time . Once acquired , the
* snapshot is observably immutable . i . e . the same calls with the same parameters will return
* the same values .
* /
2017-11-03 01:20:18 +01:00
// tslint:disable-next-line interface-name
2016-09-02 20:34:23 +02:00
export interface IScriptSnapshot {
/** Gets a portion of the script snapshot specified by [start, end). */
getText ( start : number , end : number ) : string ;
/** Gets the length of this script snapshot. */
getLength ( ) : number ;
/ * *
* Gets the TextChangeRange that describe how the text changed between this text and
* an older version . This information is used by the incremental parser to determine
* what sections of the script need to be re - parsed . 'undefined' can be returned if the
* change range cannot be determined . However , in that case , incremental parsing will
* not happen and the entire document will be re - parsed .
* /
getChangeRange ( oldSnapshot : IScriptSnapshot ) : TextChangeRange | undefined ;
/** Releases all resources held by this script snapshot */
dispose ? ( ) : void ;
}
export namespace ScriptSnapshot {
class StringScriptSnapshot implements IScriptSnapshot {
constructor ( private text : string ) {
}
public getText ( start : number , end : number ) : string {
2016-12-09 01:17:42 +01:00
return start === 0 && end === this . text . length
? this . text
: this . text . substring ( start , end ) ;
2016-09-02 20:34:23 +02:00
}
public getLength ( ) : number {
return this . text . length ;
}
2016-10-19 17:27:49 +02:00
public getChangeRange ( ) : TextChangeRange {
2016-09-02 20:34:23 +02:00
// Text-based snapshots do not support incremental parsing. Return undefined
// to signal that to the caller.
return undefined ;
}
}
export function fromString ( text : string ) : IScriptSnapshot {
return new StringScriptSnapshot ( text ) ;
}
}
export interface PreProcessedFileInfo {
referencedFiles : FileReference [ ] ;
typeReferenceDirectives : FileReference [ ] ;
importedFiles : FileReference [ ] ;
ambientExternalModules : string [ ] ;
isLibFile : boolean ;
}
export interface HostCancellationToken {
isCancellationRequested ( ) : boolean ;
}
2017-10-18 00:04:09 +02:00
export interface InstallPackageOptions {
fileName : Path ;
packageName : string ;
}
2016-09-02 20:34:23 +02:00
//
// Public interface of the host of a language service instance.
//
2017-10-18 00:04:09 +02:00
export interface LanguageServiceHost extends GetEffectiveTypeRootsHost {
2016-09-02 20:34:23 +02:00
getCompilationSettings ( ) : CompilerOptions ;
getNewLine ? ( ) : string ;
getProjectVersion ? ( ) : string ;
getScriptFileNames ( ) : string [ ] ;
getScriptKind ? ( fileName : string ) : ScriptKind ;
getScriptVersion ( fileName : string ) : string ;
getScriptSnapshot ( fileName : string ) : IScriptSnapshot | undefined ;
2018-05-08 00:12:50 +02:00
getProjectReferences ? ( ) : ReadonlyArray < ProjectReference > | undefined ;
2016-09-02 20:34:23 +02:00
getLocalizedDiagnosticMessages ? ( ) : any ;
getCancellationToken ? ( ) : HostCancellationToken ;
getCurrentDirectory ( ) : string ;
getDefaultLibFileName ( options : CompilerOptions ) : string ;
log ? ( s : string ) : void ;
trace ? ( s : string ) : void ;
error ? ( s : string ) : void ;
useCaseSensitiveFileNames ? ( ) : boolean ;
2016-09-06 20:04:39 +02:00
/ *
* LS host can optionally implement these methods to support completions for module specifiers.
* Without these methods , only completions for ambient module s will be provided .
* /
2017-07-12 02:39:33 +02:00
readDirectory ? ( path : string , extensions? : ReadonlyArray < string > , exclude? : ReadonlyArray < string > , include? : ReadonlyArray < string > , depth? : number ) : string [ ] ;
2017-07-14 23:26:13 +02:00
readFile ? ( path : string , encoding? : string ) : string | undefined ;
2017-12-06 20:27:38 +01:00
realpath ? ( path : string ) : string ;
2016-09-06 20:04:39 +02:00
fileExists ? ( path : string ) : boolean ;
2016-09-27 23:02:10 +02:00
/ *
* LS host can optionally implement these methods to support automatic updating when new type libraries are installed
* /
getTypeRootsVersion ? ( ) : number ;
2016-09-28 00:04:34 +02:00
2016-09-02 20:34:23 +02:00
/ *
* LS host can optionally implement this method if it wants to be completely in charge of module name resolution .
* if implementation is omitted then language service will use built - in module resolution logic and get answers to
* host specific questions using 'getScriptSnapshot' .
* /
2017-09-12 21:09:06 +02:00
resolveModuleNames ? ( module Names : string [ ] , containingFile : string , reusedNames? : string [ ] ) : ResolvedModule [ ] ;
2016-09-02 20:34:23 +02:00
resolveTypeReferenceDirectives ? ( typeDirectiveNames : string [ ] , containingFile : string ) : ResolvedTypeReferenceDirective [ ] ;
2017-10-03 04:08:13 +02:00
/* @internal */ hasInvalidatedResolution? : HasInvalidatedResolution ;
/* @internal */ hasChangedAutomaticTypeDirectiveNames? : boolean ;
2016-09-06 20:04:39 +02:00
/ *
2018-02-05 20:11:00 +01:00
* Required for full import and type reference completions .
* These should be unprefixed names . E . g . ` getDirectories("/foo/bar") ` should return ` ["a", "b"] ` , not ` ["/foo/bar/a", "/foo/bar/b"] ` .
2016-09-06 20:04:39 +02:00
* /
2016-09-02 20:34:23 +02:00
getDirectories ? ( directoryName : string ) : string [ ] ;
2017-02-07 23:36:15 +01:00
/ * *
* Gets a set of custom transformers to use during emit .
* /
getCustomTransformers ? ( ) : CustomTransformers | undefined ;
2017-10-18 00:04:09 +02:00
isKnownTypesPackageName ? ( name : string ) : boolean ;
2017-10-19 01:04:42 +02:00
installPackage ? ( options : InstallPackageOptions ) : Promise < ApplyCodeActionCommandResult > ;
2016-09-02 20:34:23 +02:00
}
2018-03-20 21:07:59 +01:00
export interface UserPreferences {
2018-04-10 20:53:24 +02:00
readonly disableSuggestions? : boolean ;
2018-03-20 21:07:59 +01:00
readonly quotePreference ? : "double" | "single" ;
readonly includeCompletionsForModuleExports? : boolean ;
readonly includeCompletionsWithInsertText? : boolean ;
readonly importModuleSpecifierPreference ? : "relative" | "non-relative" ;
2018-05-10 20:17:04 +02:00
readonly allowTextChangesInNewFiles? : boolean ;
2018-03-20 21:07:59 +01:00
}
/* @internal */
export const defaultPreferences : UserPreferences = { } ;
2016-09-02 20:34:23 +02:00
//
// Public services of a language service instance associated
// with a language service host instance
//
export interface LanguageService {
cleanupSemanticCache ( ) : void ;
getSyntacticDiagnostics ( fileName : string ) : Diagnostic [ ] ;
getSemanticDiagnostics ( fileName : string ) : Diagnostic [ ] ;
2018-02-28 20:16:32 +01:00
getSuggestionDiagnostics ( fileName : string ) : Diagnostic [ ] ;
2016-09-02 20:34:23 +02:00
// TODO: Rename this to getProgramDiagnostics to better indicate that these are any
// diagnostics present for the program level, and not just 'options' diagnostics.
getCompilerOptionsDiagnostics ( ) : Diagnostic [ ] ;
/ * *
* @deprecated Use getEncodedSyntacticClassifications instead .
* /
getSyntacticClassifications ( fileName : string , span : TextSpan ) : ClassifiedSpan [ ] ;
/ * *
* @deprecated Use getEncodedSemanticClassifications instead .
* /
getSemanticClassifications ( fileName : string , span : TextSpan ) : ClassifiedSpan [ ] ;
// Encoded as triples of [start, length, ClassificationType].
getEncodedSyntacticClassifications ( fileName : string , span : TextSpan ) : Classifications ;
getEncodedSemanticClassifications ( fileName : string , span : TextSpan ) : Classifications ;
2017-11-03 23:55:31 +01:00
getCompletionsAtPosition ( fileName : string , position : number , options : GetCompletionsAtPositionOptions | undefined ) : CompletionInfo ;
2017-10-26 17:22:17 +02:00
// "options" and "source" are optional only for backwards-compatibility
2017-10-30 23:10:34 +01:00
getCompletionEntryDetails (
fileName : string ,
position : number ,
name : string ,
2018-03-20 21:07:59 +01:00
formatOptions : FormatCodeOptions | FormatCodeSettings | undefined ,
2017-10-30 23:10:34 +01:00
source : string | undefined ,
2018-03-20 21:07:59 +01:00
preferences : UserPreferences | undefined ,
2017-10-30 23:10:34 +01:00
) : CompletionEntryDetails ;
getCompletionEntrySymbol ( fileName : string , position : number , name : string , source : string | undefined ) : Symbol ;
2016-09-02 20:34:23 +02:00
getQuickInfoAtPosition ( fileName : string , position : number ) : QuickInfo ;
getNameOrDottedNameSpan ( fileName : string , startPos : number , endPos : number ) : TextSpan ;
getBreakpointStatementAtPosition ( fileName : string , position : number ) : TextSpan ;
getSignatureHelpItems ( fileName : string , position : number ) : SignatureHelpItems ;
getRenameInfo ( fileName : string , position : number ) : RenameInfo ;
findRenameLocations ( fileName : string , position : number , findInStrings : boolean , findInComments : boolean ) : RenameLocation [ ] ;
getDefinitionAtPosition ( fileName : string , position : number ) : DefinitionInfo [ ] ;
2017-10-17 02:50:35 +02:00
getDefinitionAndBoundSpan ( fileName : string , position : number ) : DefinitionInfoAndBoundSpan ;
2016-09-02 20:34:23 +02:00
getTypeDefinitionAtPosition ( fileName : string , position : number ) : DefinitionInfo [ ] ;
2016-09-06 23:11:38 +02:00
getImplementationAtPosition ( fileName : string , position : number ) : ImplementationLocation [ ] ;
2016-09-02 20:34:23 +02:00
getReferencesAtPosition ( fileName : string , position : number ) : ReferenceEntry [ ] ;
findReferences ( fileName : string , position : number ) : ReferencedSymbol [ ] ;
getDocumentHighlights ( fileName : string , position : number , filesToSearch : string [ ] ) : DocumentHighlights [ ] ;
/** @deprecated */
getOccurrencesAtPosition ( fileName : string , position : number ) : ReferenceEntry [ ] ;
2016-09-27 19:22:41 +02:00
getNavigateToItems ( searchValue : string , maxResultCount? : number , fileName? : string , excludeDtsFiles? : boolean ) : NavigateToItem [ ] ;
2016-09-02 20:34:23 +02:00
getNavigationBarItems ( fileName : string ) : NavigationBarItem [ ] ;
2016-10-11 16:48:28 +02:00
getNavigationTree ( fileName : string ) : NavigationTree ;
2016-09-02 20:34:23 +02:00
getOutliningSpans ( fileName : string ) : OutliningSpan [ ] ;
getTodoComments ( fileName : string , descriptors : TodoCommentDescriptor [ ] ) : TodoComment [ ] ;
getBraceMatchingAtPosition ( fileName : string , position : number ) : TextSpan [ ] ;
2016-09-27 19:22:41 +02:00
getIndentationAtPosition ( fileName : string , position : number , options : EditorOptions | EditorSettings ) : number ;
2016-09-02 20:34:23 +02:00
2016-09-27 19:22:41 +02:00
getFormattingEditsForRange ( fileName : string , start : number , end : number , options : FormatCodeOptions | FormatCodeSettings ) : TextChange [ ] ;
getFormattingEditsForDocument ( fileName : string , options : FormatCodeOptions | FormatCodeSettings ) : TextChange [ ] ;
getFormattingEditsAfterKeystroke ( fileName : string , position : number , key : string , options : FormatCodeOptions | FormatCodeSettings ) : TextChange [ ] ;
2016-09-02 20:34:23 +02:00
getDocCommentTemplateAtPosition ( fileName : string , position : number ) : TextInsertion ;
isValidBraceCompletionAtPosition ( fileName : string , position : number , openingBrace : number ) : boolean ;
2017-06-10 03:02:42 +02:00
getSpanOfEnclosingComment ( fileName : string , position : number , onlyMultiLine : boolean ) : TextSpan ;
2017-06-09 02:08:07 +02:00
2018-05-08 00:12:50 +02:00
toLineColumnOffset ? ( fileName : string , position : number ) : LineAndCharacter ;
2018-03-20 21:07:59 +01:00
getCodeFixesAtPosition ( fileName : string , start : number , end : number , errorCodes : ReadonlyArray < number > , formatOptions : FormatCodeSettings , preferences : UserPreferences ) : ReadonlyArray < CodeFixAction > ;
getCombinedCodeFix ( scope : CombinedCodeFixScope , fixId : { } , formatOptions : FormatCodeSettings , preferences : UserPreferences ) : CombinedCodeActions ;
2017-11-17 23:16:38 +01:00
applyCodeActionCommand ( action : CodeActionCommand ) : Promise < ApplyCodeActionCommandResult > ;
applyCodeActionCommand ( action : CodeActionCommand [ ] ) : Promise < ApplyCodeActionCommandResult [ ] > ;
applyCodeActionCommand ( action : CodeActionCommand | CodeActionCommand [ ] ) : Promise < ApplyCodeActionCommandResult | ApplyCodeActionCommandResult [ ] > ;
/** @deprecated `fileName` will be ignored */
2017-10-19 01:04:42 +02:00
applyCodeActionCommand ( fileName : string , action : CodeActionCommand ) : Promise < ApplyCodeActionCommandResult > ;
2017-11-17 23:16:38 +01:00
/** @deprecated `fileName` will be ignored */
2017-11-09 22:17:47 +01:00
applyCodeActionCommand ( fileName : string , action : CodeActionCommand [ ] ) : Promise < ApplyCodeActionCommandResult [ ] > ;
2017-11-17 23:16:38 +01:00
/** @deprecated `fileName` will be ignored */
2017-11-09 22:17:47 +01:00
applyCodeActionCommand ( fileName : string , action : CodeActionCommand | CodeActionCommand [ ] ) : Promise < ApplyCodeActionCommandResult | ApplyCodeActionCommandResult [ ] > ;
2018-04-27 01:18:47 +02:00
getApplicableRefactors ( fileName : string , positionOrRange : number | TextRange , preferences : UserPreferences | undefined ) : ApplicableRefactorInfo [ ] ;
2018-03-20 21:07:59 +01:00
getEditsForRefactor ( fileName : string , formatOptions : FormatCodeSettings , positionOrRange : number | TextRange , refactorName : string , actionName : string , preferences : UserPreferences | undefined ) : RefactorEditInfo | undefined ;
organizeImports ( scope : OrganizeImportsScope , formatOptions : FormatCodeSettings , preferences : UserPreferences | undefined ) : ReadonlyArray < FileTextChanges > ;
2018-04-20 22:43:09 +02:00
getEditsForFileRename ( oldFilePath : string , newFilePath : string , formatOptions : FormatCodeSettings ) : ReadonlyArray < FileTextChanges > ;
2016-09-16 23:09:58 +02:00
2017-09-26 22:34:56 +02:00
getEmitOutput ( fileName : string , emitOnlyDtsFiles? : boolean ) : EmitOutput ;
2016-09-02 20:34:23 +02:00
getProgram ( ) : Program ;
/* @internal */ getNonBoundSourceFile ( fileName : string ) : SourceFile ;
2016-09-19 20:51:01 +02:00
/ * *
* @internal
* @deprecated Use ts . createSourceFile instead .
* /
getSourceFile ( fileName : string ) : SourceFile ;
2016-09-02 20:34:23 +02:00
dispose ( ) : void ;
}
2017-12-07 21:14:18 +01:00
export interface CombinedCodeFixScope { type : "file" ; fileName : string ; }
2018-01-31 20:20:41 +01:00
export type OrganizeImportsScope = CombinedCodeFixScope ;
2018-05-08 18:52:46 +02:00
export type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<" ;
2018-03-20 21:07:59 +01:00
export interface GetCompletionsAtPositionOptions extends UserPreferences {
2018-04-20 19:25:58 +02:00
/** If the editor is asking for completions because a certain character was typed, and not because the user explicitly requested them, this should be set. */
2018-05-08 18:52:46 +02:00
triggerCharacter? : CompletionsTriggerCharacter ;
2018-03-20 21:07:59 +01:00
/** @deprecated Use includeCompletionsForModuleExports */
includeExternalModuleExports? : boolean ;
/** @deprecated Use includeCompletionsWithInsertText */
includeInsertTextCompletions? : boolean ;
2017-11-03 23:55:31 +01:00
}
2017-10-18 00:04:09 +02:00
export interface ApplyCodeActionCommandResult {
successMessage : string ;
}
2016-09-02 20:34:23 +02:00
export interface Classifications {
spans : number [ ] ;
endOfLineState : EndOfLineState ;
}
export interface ClassifiedSpan {
textSpan : TextSpan ;
2017-05-22 19:40:59 +02:00
classificationType : ClassificationTypeNames ;
2016-09-02 20:34:23 +02:00
}
2016-10-11 16:48:28 +02:00
/ * *
* Navigation bar interface designed for visual studio ' s dual - column layout .
* This does not form a proper tree .
* The navbar is returned as a list of top - level items , each of which has a list of child items .
* Child items always have an empty array for their ` childItems ` .
* /
2016-09-02 20:34:23 +02:00
export interface NavigationBarItem {
text : string ;
2017-05-20 05:06:08 +02:00
kind : ScriptElementKind ;
2016-09-02 20:34:23 +02:00
kindModifiers : string ;
spans : TextSpan [ ] ;
childItems : NavigationBarItem [ ] ;
indent : number ;
bolded : boolean ;
grayed : boolean ;
}
2016-10-11 16:48:28 +02:00
/ * *
* Node in a tree of nested declarations in a file .
* The top node is always a script or module node.
* /
export interface NavigationTree {
/** Name of the declaration, or a short description, e.g. "<class>". */
text : string ;
2017-05-20 05:06:08 +02:00
kind : ScriptElementKind ;
2016-10-11 16:48:28 +02:00
/** ScriptElementKindModifier separated by commas, e.g. "public,abstract" */
kindModifiers : string ;
/ * *
* Spans of the nodes that generated this declaration .
* There will be more than one if this is the result of merging .
* /
spans : TextSpan [ ] ;
/** Present if non-empty */
childItems? : NavigationTree [ ] ;
}
2016-09-02 20:34:23 +02:00
export interface TodoCommentDescriptor {
text : string ;
priority : number ;
}
export interface TodoComment {
descriptor : TodoCommentDescriptor ;
message : string ;
position : number ;
}
export class TextChange {
span : TextSpan ;
newText : string ;
}
2016-09-16 23:09:58 +02:00
export interface FileTextChanges {
fileName : string ;
textChanges : TextChange [ ] ;
}
2016-10-06 22:59:54 +02:00
2016-09-16 23:09:58 +02:00
export interface CodeAction {
/** Description of the code action to display in the UI of the editor */
description : string ;
/** Text changes to apply to each file as part of the code action */
changes : FileTextChanges [ ] ;
2017-10-18 00:04:09 +02:00
/ * *
* If the user accepts the code fix , the editor should send the action back in a ` applyAction ` request .
* This allows the language service to have side effects ( e . g . installing dependencies ) upon a code fix .
* /
commands? : CodeActionCommand [ ] ;
}
2017-12-07 21:14:18 +01:00
export interface CodeFixAction extends CodeAction {
2018-04-12 18:05:30 +02:00
/** Short name to identify the fix, for use by telemetry. */
fixName : string ;
2017-12-07 21:14:18 +01:00
/ * *
* If present , one may call 'getCombinedCodeFix' with this fixId .
* This may be omitted to indicate that the code fix can ' t be applied in a group .
* /
fixId ? : { } ;
2018-03-28 03:21:21 +02:00
fixAllDescription? : string ;
2017-12-07 21:14:18 +01:00
}
export interface CombinedCodeActions {
changes : ReadonlyArray < FileTextChanges > ;
commands : ReadonlyArray < CodeActionCommand > | undefined ;
}
2017-10-18 00:04:09 +02:00
// Publicly, this type is just `{}`. Internally it is a union of all the actions we use.
// See `commands?: {}[]` in protocol.ts
export type CodeActionCommand = InstallPackageAction ;
export interface InstallPackageAction {
2017-11-17 23:16:38 +01:00
/* @internal */ file : string ;
2017-10-18 00:04:09 +02:00
/* @internal */ type : "install package" ;
/* @internal */ packageName : string ;
2016-09-16 23:09:58 +02:00
}
2017-06-06 23:58:18 +02:00
/ * *
* A set of one or more available refactoring actions , grouped under a parent refactoring .
* /
2017-05-19 19:18:42 +02:00
export interface ApplicableRefactorInfo {
2017-06-06 23:58:18 +02:00
/ * *
* The programmatic name of the refactoring
* /
2017-05-19 19:18:42 +02:00
name : string ;
2017-06-06 23:58:18 +02:00
/ * *
* A description of this refactoring category to show to the user .
* If the refactoring gets inlined ( see below ) , this text will not be visible .
* /
2017-05-19 19:18:42 +02:00
description : string ;
2017-06-06 23:58:18 +02:00
/ * *
* Inlineable refactorings can have their actions hoisted out to the top level
* of a context menu . Non - inlineanable refactorings should always be shown inside
* their parent grouping .
*
* If not specified , this value is assumed to be 'true'
* /
inlineable? : boolean ;
actions : RefactorActionInfo [ ] ;
2017-05-19 19:18:42 +02:00
}
2017-06-06 23:58:18 +02:00
/ * *
* Represents a single refactoring action - for example , the "Extract Method..." refactor might
* offer several actions , each corresponding to a surround class or closure to extract into .
* /
2017-09-07 18:14:59 +02:00
export interface RefactorActionInfo {
2017-06-06 23:58:18 +02:00
/ * *
* The programmatic name of the refactoring action
* /
name : string ;
/ * *
* A description of this refactoring action to show to the user .
* If the parent refactoring is inlined away , this will be the only text shown ,
* so this description should make sense by itself if the parent is inlineable = true
* /
description : string ;
2017-09-07 18:14:59 +02:00
}
2017-06-06 23:58:18 +02:00
/ * *
* A set of edits to make in response to a refactor action , plus an optional
* location where renaming should be invoked from
* /
2017-09-07 18:14:59 +02:00
export interface RefactorEditInfo {
2017-06-06 23:58:18 +02:00
edits : FileTextChanges [ ] ;
2017-09-13 18:02:10 +02:00
renameFilename : string | undefined ;
renameLocation : number | undefined ;
2017-10-18 00:04:09 +02:00
commands? : CodeActionCommand [ ] ;
2017-09-07 18:14:59 +02:00
}
2017-06-06 23:58:18 +02:00
2016-09-02 20:34:23 +02:00
export interface TextInsertion {
newText : string ;
/** The position in newText the caret should point to after the insertion. */
caretOffset : number ;
}
2017-03-16 23:53:05 +01:00
export interface DocumentSpan {
2016-09-02 20:34:23 +02:00
textSpan : TextSpan ;
fileName : string ;
2018-05-02 23:16:39 +02:00
/ * *
* If the span represents a location that was remapped ( e . g . via a . d . ts . map file ) ,
* then the original filename and span will be specified here
* /
originalTextSpan? : TextSpan ;
originalFileName? : string ;
2016-09-02 20:34:23 +02:00
}
2017-03-16 23:53:05 +01:00
export interface RenameLocation extends DocumentSpan {
}
export interface ReferenceEntry extends DocumentSpan {
2016-09-02 20:34:23 +02:00
isWriteAccess : boolean ;
isDefinition : boolean ;
2017-03-16 19:01:48 +01:00
isInString? : true ;
2016-09-02 20:34:23 +02:00
}
2017-03-16 23:53:05 +01:00
export interface ImplementationLocation extends DocumentSpan {
2017-05-20 05:06:08 +02:00
kind : ScriptElementKind ;
2017-03-16 23:53:05 +01:00
displayParts : SymbolDisplayPart [ ] ;
2016-09-06 23:11:38 +02:00
}
2016-09-02 20:34:23 +02:00
export interface DocumentHighlights {
fileName : string ;
highlightSpans : HighlightSpan [ ] ;
}
2017-05-20 05:06:08 +02:00
export const enum HighlightSpanKind {
none = "none" ,
definition = "definition" ,
reference = "reference" ,
writtenReference = "writtenReference" ,
2016-09-02 20:34:23 +02:00
}
export interface HighlightSpan {
fileName? : string ;
2017-03-16 19:01:48 +01:00
isInString? : true ;
2016-09-02 20:34:23 +02:00
textSpan : TextSpan ;
2017-05-20 05:06:08 +02:00
kind : HighlightSpanKind ;
2016-09-02 20:34:23 +02:00
}
export interface NavigateToItem {
name : string ;
2017-05-20 05:06:08 +02:00
kind : ScriptElementKind ;
2016-09-02 20:34:23 +02:00
kindModifiers : string ;
2017-05-20 05:06:08 +02:00
matchKind : string ; // TODO: keyof typeof PatternMatchKind; (https://github.com/Microsoft/TypeScript/issues/15102)
2016-09-02 20:34:23 +02:00
isCaseSensitive : boolean ;
fileName : string ;
textSpan : TextSpan ;
containerName : string ;
2017-05-20 05:06:08 +02:00
containerKind : ScriptElementKind ;
2016-09-02 20:34:23 +02:00
}
2016-09-27 19:22:41 +02:00
export enum IndentStyle {
None = 0 ,
Block = 1 ,
Smart = 2 ,
}
/* @deprecated - consider using EditorSettings instead */
2016-09-02 20:34:23 +02:00
export interface EditorOptions {
BaseIndentSize? : number ;
IndentSize : number ;
TabSize : number ;
NewLineCharacter : string ;
ConvertTabsToSpaces : boolean ;
IndentStyle : IndentStyle ;
}
2016-09-27 19:22:41 +02:00
export interface EditorSettings {
baseIndentSize? : number ;
2016-10-12 20:02:56 +02:00
indentSize? : number ;
tabSize? : number ;
newLineCharacter? : string ;
convertTabsToSpaces? : boolean ;
indentStyle? : IndentStyle ;
2016-09-02 20:34:23 +02:00
}
2016-09-27 19:22:41 +02:00
/* @deprecated - consider using FormatCodeSettings instead */
2016-09-02 20:34:23 +02:00
export interface FormatCodeOptions extends EditorOptions {
InsertSpaceAfterCommaDelimiter : boolean ;
InsertSpaceAfterSemicolonInForStatements : boolean ;
InsertSpaceBeforeAndAfterBinaryOperators : boolean ;
2016-12-20 17:05:10 +01:00
InsertSpaceAfterConstructor? : boolean ;
2016-09-02 20:34:23 +02:00
InsertSpaceAfterKeywordsInControlFlowStatements : boolean ;
InsertSpaceAfterFunctionKeywordForAnonymousFunctions : boolean ;
InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis : boolean ;
InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets : boolean ;
2016-09-07 01:15:13 +02:00
InsertSpaceAfterOpeningAndBeforeClosingNonemptyBraces? : boolean ;
2016-09-02 20:34:23 +02:00
InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces : boolean ;
InsertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces? : boolean ;
2016-09-14 05:51:20 +02:00
InsertSpaceAfterTypeAssertion? : boolean ;
2016-12-20 06:05:30 +01:00
InsertSpaceBeforeFunctionParenthesis? : boolean ;
2016-09-02 20:34:23 +02:00
PlaceOpenBraceOnNewLineForFunctions : boolean ;
PlaceOpenBraceOnNewLineForControlBlocks : boolean ;
2018-01-08 22:25:02 +01:00
insertSpaceBeforeTypeAnnotation? : boolean ;
2016-09-27 19:22:41 +02:00
}
export interface FormatCodeSettings extends EditorSettings {
2016-10-12 20:02:56 +02:00
insertSpaceAfterCommaDelimiter? : boolean ;
insertSpaceAfterSemicolonInForStatements? : boolean ;
insertSpaceBeforeAndAfterBinaryOperators? : boolean ;
2016-12-20 17:05:10 +01:00
insertSpaceAfterConstructor? : boolean ;
2016-10-12 20:02:56 +02:00
insertSpaceAfterKeywordsInControlFlowStatements? : boolean ;
insertSpaceAfterFunctionKeywordForAnonymousFunctions? : boolean ;
insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis? : boolean ;
insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets? : boolean ;
2016-09-27 19:22:41 +02:00
insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces? : boolean ;
2016-10-12 20:02:56 +02:00
insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces? : boolean ;
insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces? : boolean ;
2016-09-27 19:22:41 +02:00
insertSpaceAfterTypeAssertion? : boolean ;
2016-12-20 06:05:30 +01:00
insertSpaceBeforeFunctionParenthesis? : boolean ;
2016-10-12 20:02:56 +02:00
placeOpenBraceOnNewLineForFunctions? : boolean ;
placeOpenBraceOnNewLineForControlBlocks? : boolean ;
2018-01-08 22:25:02 +01:00
insertSpaceBeforeTypeAnnotation? : boolean ;
2018-03-30 00:40:23 +02:00
indentMultiLineObjectLiteralBeginningOnBlankLine? : boolean ;
2016-09-02 20:34:23 +02:00
}
2018-05-02 23:16:39 +02:00
export interface DefinitionInfo extends DocumentSpan {
2017-05-20 05:06:08 +02:00
kind : ScriptElementKind ;
2016-09-02 20:34:23 +02:00
name : string ;
2017-05-20 05:06:08 +02:00
containerKind : ScriptElementKind ;
2016-09-02 20:34:23 +02:00
containerName : string ;
}
2017-10-17 02:50:35 +02:00
export interface DefinitionInfoAndBoundSpan {
definitions : ReadonlyArray < DefinitionInfo > ;
textSpan : TextSpan ;
}
2016-09-02 20:34:23 +02:00
export interface ReferencedSymbolDefinitionInfo extends DefinitionInfo {
displayParts : SymbolDisplayPart [ ] ;
}
2017-03-27 20:51:13 +02:00
export interface ReferencedSymbol {
2016-09-02 20:34:23 +02:00
definition : ReferencedSymbolDefinitionInfo ;
2017-03-27 20:51:13 +02:00
references : ReferenceEntry [ ] ;
2016-09-02 20:34:23 +02:00
}
export enum SymbolDisplayPartKind {
aliasName ,
className ,
enumName ,
fieldName ,
interfaceName ,
keyword ,
lineBreak ,
numericLiteral ,
stringLiteral ,
localName ,
methodName ,
module Name ,
operator ,
parameterName ,
propertyName ,
punctuation ,
space ,
text ,
typeParameterName ,
enumMemberName ,
functionName ,
regularExpressionLiteral ,
}
export interface SymbolDisplayPart {
text : string ;
2017-05-20 05:06:08 +02:00
kind : string ;
2016-09-02 20:34:23 +02:00
}
2016-12-13 00:29:29 +01:00
export interface JSDocTagInfo {
name : string ;
text? : string ;
}
2016-09-02 20:34:23 +02:00
export interface QuickInfo {
2017-05-20 05:06:08 +02:00
kind : ScriptElementKind ;
2016-09-02 20:34:23 +02:00
kindModifiers : string ;
textSpan : TextSpan ;
displayParts : SymbolDisplayPart [ ] ;
documentation : SymbolDisplayPart [ ] ;
2016-12-13 00:29:29 +01:00
tags : JSDocTagInfo [ ] ;
2016-09-02 20:34:23 +02:00
}
export interface RenameInfo {
canRename : boolean ;
localizedErrorMessage : string ;
displayName : string ;
fullDisplayName : string ;
2017-05-20 05:06:08 +02:00
kind : ScriptElementKind ;
2016-09-02 20:34:23 +02:00
kindModifiers : string ;
triggerSpan : TextSpan ;
}
export interface SignatureHelpParameter {
name : string ;
documentation : SymbolDisplayPart [ ] ;
displayParts : SymbolDisplayPart [ ] ;
isOptional : boolean ;
}
/ * *
* Represents a single signature to show in signature help .
* The id is used for subsequent calls into the language service to ask questions about the
* signature help item in the context of any documents that have been updated . i . e . after
* an edit has happened , while signature help is still active , the host can ask important
* questions like 'what parameter is the user currently contained within?' .
* /
export interface SignatureHelpItem {
isVariadic : boolean ;
prefixDisplayParts : SymbolDisplayPart [ ] ;
suffixDisplayParts : SymbolDisplayPart [ ] ;
separatorDisplayParts : SymbolDisplayPart [ ] ;
parameters : SignatureHelpParameter [ ] ;
documentation : SymbolDisplayPart [ ] ;
2016-12-13 00:29:29 +01:00
tags : JSDocTagInfo [ ] ;
2016-09-02 20:34:23 +02:00
}
/ * *
* Represents a set of signature help items , and the preferred item that should be selected .
* /
export interface SignatureHelpItems {
items : SignatureHelpItem [ ] ;
applicableSpan : TextSpan ;
selectedItemIndex : number ;
argumentIndex : number ;
argumentCount : number ;
}
export interface CompletionInfo {
2018-02-21 22:12:13 +01:00
/** Not true for all glboal completions. This will be true if the enclosing scope matches a few syntax kinds. See `isSnippetScope`. */
2016-10-04 01:29:06 +02:00
isGlobalCompletion : boolean ;
2016-09-02 20:34:23 +02:00
isMemberCompletion : boolean ;
2016-09-24 02:37:11 +02:00
/ * *
* true when the current location also allows for a new identifier
* /
isNewIdentifierLocation : boolean ;
2016-09-02 20:34:23 +02:00
entries : CompletionEntry [ ] ;
}
2017-12-01 22:00:01 +01:00
// see comments in protocol.ts
2016-09-02 20:34:23 +02:00
export interface CompletionEntry {
name : string ;
2017-05-20 05:06:08 +02:00
kind : ScriptElementKind ;
2017-12-01 22:00:01 +01:00
kindModifiers : string ; // see ScriptElementKindModifier, comma separated
2016-09-02 20:34:23 +02:00
sortText : string ;
2018-01-09 03:57:46 +01:00
insertText? : string ;
2016-09-06 20:04:39 +02:00
/ * *
2017-12-01 22:00:01 +01:00
* An optional span that indicates the text to be replaced by this completion item .
* If present , this span should be used instead of the default one .
* It will be set if the required span differs from the one generated by the default replacement behavior .
2017-04-03 18:32:39 +02:00
* /
2016-09-06 20:04:39 +02:00
replacementSpan? : TextSpan ;
Add exported members of all project files in the global completion list (#19069)
* checker.ts: Remove null check on symbols
* tsserverProjectSystem.ts: add two tests
* client.ts, completions.ts, types.ts: Add codeActions member to CompletionEntryDetails
* protocol.ts, session.ts: Add codeActions member to CompletionEntryDetails protocol
* protocol.ts, session.ts, types.ts: add hasAction to CompletionEntry
* session.ts, services.ts, types.ts: Add formattingOptions parameter to getCompletionEntryDetails
* completions.ts: define SymbolOriginInfo type
* completions.ts, services.ts: Add allSourceFiles parameter to getCompletionsAtPosition
* completions.ts, services.ts: Plumb allSourceFiles into new function getSymbolsFromOtherSourceFileExports inside getCompletionData
* completions.ts: add symbolToOriginInfoMap parameter to getCompletionEntriesFromSymbols and to return value of getCompletionData
* utilities.ts: Add getOtherModuleSymbols, getUniqueSymbolIdAsString, getUniqueSymbolId
* completions.ts: Set CompletionEntry.hasAction when symbol is found in symbolToOriginInfoMap (meaning there's an import action)
* completions.ts: Populate list with possible exports (implement getSymbolsFromOtherSourceFileExports)
* completions.ts, services.ts: Plumb host and rulesProvider into getCompletionEntryDetails
* completions.ts: Add TODO comment
* importFixes.ts: Add types ImportDeclarationMap and ImportCodeFixContext
* Move getImportDeclarations into getCodeActionForImport, immediately after the implementation
* importFixes.ts: Move createChangeTracker into getCodeActionForImport, immediately after getImportDeclarations
* importFixes.ts: Add convertToImportCodeFixContext function and reference it from the getCodeActions lambda
* importFixes.ts: Add context: ImportCodeFixContext parameter to getCodeActionForImport, update call sites, destructure it, use compilerOptions in getModuleSpecifierForNewImport
* importFixes.ts: Remove moduleSymbol parameter from getImportDeclarations and use the ambient one
* importFixes.ts: Use cachedImportDeclarations from context in getCodeActionForImport
* importFixes.ts: Move createCodeAction out, immediately above convertToImportCodeFixContext
* Move the declaration for lastImportDeclaration out of the getCodeActions lambda into getCodeActionForImport
* importFixes.ts: Use symbolToken in getCodeActionForImport
* importFixes.ts: Remove useCaseSensitiveFileNames altogether from getCodeActions lambda
* importFixes.ts: Remove local getUniqueSymbolId function and add checker parameter to calls to it
* importFixes.ts: Move getCodeActionForImport out into an export, immediately below convertToImportCodeFixContext
* completions.ts: In getCompletionEntryDetails, if there's symbolOriginInfo, call getCodeActionForImport
* importFixes.ts: Create and use importFixContext within getCodeActions lambda
* importFixes.ts: Use local newLineCharacter instead of context.newLineCharacter in getCodeActionForImport
* importFixes.ts: Use local host instead of context.host in getCodeActionForImport
* importFixes.ts: Remove dummy getCanonicalFileName line
* Filter symbols after gathering exports instead of before
* Lint
* Test, fix bugs, refactor
* Suggestions from code review
* Update api baseline
* Fix bug if previousToken is not an Identifier
* Replace `startsWith` with `stringContainsCharactersInOrder`
2017-10-17 19:20:11 +02:00
hasAction? : true ;
2017-10-26 17:22:17 +02:00
source? : string ;
2017-12-01 22:00:01 +01:00
isRecommended? : true ;
2016-09-02 20:34:23 +02:00
}
export interface CompletionEntryDetails {
name : string ;
2017-05-20 05:06:08 +02:00
kind : ScriptElementKind ;
2016-09-02 20:34:23 +02:00
kindModifiers : string ; // see ScriptElementKindModifier, comma separated
displayParts : SymbolDisplayPart [ ] ;
documentation : SymbolDisplayPart [ ] ;
2016-12-13 00:29:29 +01:00
tags : JSDocTagInfo [ ] ;
Add exported members of all project files in the global completion list (#19069)
* checker.ts: Remove null check on symbols
* tsserverProjectSystem.ts: add two tests
* client.ts, completions.ts, types.ts: Add codeActions member to CompletionEntryDetails
* protocol.ts, session.ts: Add codeActions member to CompletionEntryDetails protocol
* protocol.ts, session.ts, types.ts: add hasAction to CompletionEntry
* session.ts, services.ts, types.ts: Add formattingOptions parameter to getCompletionEntryDetails
* completions.ts: define SymbolOriginInfo type
* completions.ts, services.ts: Add allSourceFiles parameter to getCompletionsAtPosition
* completions.ts, services.ts: Plumb allSourceFiles into new function getSymbolsFromOtherSourceFileExports inside getCompletionData
* completions.ts: add symbolToOriginInfoMap parameter to getCompletionEntriesFromSymbols and to return value of getCompletionData
* utilities.ts: Add getOtherModuleSymbols, getUniqueSymbolIdAsString, getUniqueSymbolId
* completions.ts: Set CompletionEntry.hasAction when symbol is found in symbolToOriginInfoMap (meaning there's an import action)
* completions.ts: Populate list with possible exports (implement getSymbolsFromOtherSourceFileExports)
* completions.ts, services.ts: Plumb host and rulesProvider into getCompletionEntryDetails
* completions.ts: Add TODO comment
* importFixes.ts: Add types ImportDeclarationMap and ImportCodeFixContext
* Move getImportDeclarations into getCodeActionForImport, immediately after the implementation
* importFixes.ts: Move createChangeTracker into getCodeActionForImport, immediately after getImportDeclarations
* importFixes.ts: Add convertToImportCodeFixContext function and reference it from the getCodeActions lambda
* importFixes.ts: Add context: ImportCodeFixContext parameter to getCodeActionForImport, update call sites, destructure it, use compilerOptions in getModuleSpecifierForNewImport
* importFixes.ts: Remove moduleSymbol parameter from getImportDeclarations and use the ambient one
* importFixes.ts: Use cachedImportDeclarations from context in getCodeActionForImport
* importFixes.ts: Move createCodeAction out, immediately above convertToImportCodeFixContext
* Move the declaration for lastImportDeclaration out of the getCodeActions lambda into getCodeActionForImport
* importFixes.ts: Use symbolToken in getCodeActionForImport
* importFixes.ts: Remove useCaseSensitiveFileNames altogether from getCodeActions lambda
* importFixes.ts: Remove local getUniqueSymbolId function and add checker parameter to calls to it
* importFixes.ts: Move getCodeActionForImport out into an export, immediately below convertToImportCodeFixContext
* completions.ts: In getCompletionEntryDetails, if there's symbolOriginInfo, call getCodeActionForImport
* importFixes.ts: Create and use importFixContext within getCodeActions lambda
* importFixes.ts: Use local newLineCharacter instead of context.newLineCharacter in getCodeActionForImport
* importFixes.ts: Use local host instead of context.host in getCodeActionForImport
* importFixes.ts: Remove dummy getCanonicalFileName line
* Filter symbols after gathering exports instead of before
* Lint
* Test, fix bugs, refactor
* Suggestions from code review
* Update api baseline
* Fix bug if previousToken is not an Identifier
* Replace `startsWith` with `stringContainsCharactersInOrder`
2017-10-17 19:20:11 +02:00
codeActions? : CodeAction [ ] ;
2017-10-26 17:22:17 +02:00
source? : SymbolDisplayPart [ ] ;
2016-09-02 20:34:23 +02:00
}
export interface OutliningSpan {
/** The span of the document to actually collapse. */
textSpan : TextSpan ;
/** The span of the document to display when the user hovers over the collapsed span. */
hintSpan : TextSpan ;
/** The text to display in the editor for the collapsed region. */
bannerText : string ;
/ * *
2017-04-03 18:32:39 +02:00
* Whether or not this region should be automatically collapsed when
* the 'Collapse to Definitions' command is invoked .
* /
2016-09-02 20:34:23 +02:00
autoCollapse : boolean ;
2018-05-04 01:28:55 +02:00
/ * *
* Classification of the contents of the span
* /
kind : OutliningSpanKind ;
}
export const enum OutliningSpanKind {
2018-05-05 21:38:59 +02:00
/** Single or multi-line comments */
2018-05-04 01:28:55 +02:00
Comment = "comment" ,
2018-05-05 21:38:59 +02:00
/** Sections marked by '// #region' and '// #endregion' comments */
2018-05-04 01:28:55 +02:00
Region = "region" ,
2018-05-05 21:38:59 +02:00
/** Declarations and expressions */
2018-05-04 19:39:47 +02:00
Code = "code" ,
2018-05-05 21:38:59 +02:00
/** Contiguous blocks of import declarations */
2018-05-05 21:02:29 +02:00
Imports = "imports"
2016-09-02 20:34:23 +02:00
}
export const enum OutputFileType {
JavaScript ,
SourceMap ,
Declaration
}
export const enum EndOfLineState {
None ,
InMultiLineCommentTrivia ,
InSingleQuoteStringLiteral ,
InDoubleQuoteStringLiteral ,
InTemplateHeadOrNoSubstitutionTemplate ,
InTemplateMiddleOrTail ,
InTemplateSubstitutionPosition ,
}
export enum TokenClass {
Punctuation ,
Keyword ,
Operator ,
Comment ,
Whitespace ,
Identifier ,
NumberLiteral ,
StringLiteral ,
RegExpLiteral ,
}
export interface ClassificationResult {
finalLexState : EndOfLineState ;
entries : ClassificationInfo [ ] ;
}
export interface ClassificationInfo {
length : number ;
classification : TokenClass ;
}
export interface Classifier {
/ * *
* Gives lexical classifications of tokens on a line without any syntactic context .
* For instance , a token consisting of the text 'string' can be either an identifier
* named 'string' or the keyword 'string' , however , because this classifier is not aware ,
* it relies on certain heuristics to give acceptable results . For classifications where
* speed trumps accuracy , this function is preferable ; however , for true accuracy , the
* syntactic classifier is ideal . In fact , in certain editing scenarios , combining the
* lexical , syntactic , and semantic classifiers may issue the best user experience .
*
* @param text The text of a line to classify .
* @param lexState The state of the lexical classifier at the end of the previous line .
* @param syntacticClassifierAbsent Whether the client is * not * using a syntactic classifier .
* If there is no syntactic classifier ( syntacticClassifierAbsent = true ) ,
* certain heuristics may be used in its place ; however , if there is a
* syntactic classifier ( syntacticClassifierAbsent = false ) , certain
* classifications which may be incorrectly categorized will be given
* back as Identifiers in order to allow the syntactic classifier to
* subsume the classification .
* @deprecated Use getLexicalClassifications instead .
* /
getClassificationsForLine ( text : string , lexState : EndOfLineState , syntacticClassifierAbsent : boolean ) : ClassificationResult ;
getEncodedLexicalClassifications ( text : string , endOfLineState : EndOfLineState , syntacticClassifierAbsent : boolean ) : Classifications ;
}
2017-05-20 05:06:08 +02:00
export const enum ScriptElementKind {
unknown = "" ,
warning = "warning" ,
2016-09-02 20:34:23 +02:00
/** predefined type (void) or keyword (class) */
2017-05-20 05:06:08 +02:00
keyword = "keyword" ,
2016-09-02 20:34:23 +02:00
/** top level script node */
2017-05-20 05:06:08 +02:00
scriptElement = "script" ,
2016-09-02 20:34:23 +02:00
/** module foo {} */
2017-05-20 05:06:08 +02:00
module Element = "module" ,
2016-09-02 20:34:23 +02:00
/** class X {} */
2017-05-20 05:06:08 +02:00
classElement = "class" ,
2016-09-02 20:34:23 +02:00
/** var x = class X {} */
2017-05-20 05:06:08 +02:00
localClassElement = "local class" ,
2016-09-02 20:34:23 +02:00
/** interface Y {} */
2017-05-20 05:06:08 +02:00
interfaceElement = "interface" ,
2016-09-02 20:34:23 +02:00
/** type T = ... */
2017-05-20 05:06:08 +02:00
typeElement = "type" ,
2016-09-02 20:34:23 +02:00
/** enum E */
2017-05-20 05:06:08 +02:00
enumElement = "enum" ,
enumMemberElement = "enum member" ,
2016-09-02 20:34:23 +02:00
/ * *
* Inside module and script only
* const v = . .
* /
2017-05-20 05:06:08 +02:00
variableElement = "var" ,
2016-09-02 20:34:23 +02:00
/** Inside function */
2017-05-20 05:06:08 +02:00
localVariableElement = "local var" ,
2016-09-02 20:34:23 +02:00
/ * *
* Inside module and script only
* function f() { }
* /
2017-05-20 05:06:08 +02:00
functionElement = "function" ,
2016-09-02 20:34:23 +02:00
/** Inside function */
2017-05-20 05:06:08 +02:00
localFunctionElement = "local function" ,
2016-09-02 20:34:23 +02:00
/** class X { [public|private]* foo() {} } */
2017-05-20 05:06:08 +02:00
memberFunctionElement = "method" ,
2016-09-02 20:34:23 +02:00
/** class X { [public|private]* [get|set] foo:number; } */
2017-05-20 05:06:08 +02:00
memberGetAccessorElement = "getter" ,
memberSetAccessorElement = "setter" ,
2016-09-02 20:34:23 +02:00
/ * *
* class X { [ public | private ] * foo :number ; }
* interface Y { foo :number ; }
* /
2017-05-20 05:06:08 +02:00
memberVariableElement = "property" ,
2016-09-02 20:34:23 +02:00
/** class X { constructor() { } } */
2017-05-20 05:06:08 +02:00
constructorImplementationElement = "constructor" ,
2016-09-02 20:34:23 +02:00
/** interface Y { ():number; } */
2017-05-20 05:06:08 +02:00
callSignatureElement = "call" ,
2016-09-02 20:34:23 +02:00
/** interface Y { []:number; } */
2017-05-20 05:06:08 +02:00
indexSignatureElement = "index" ,
2016-09-02 20:34:23 +02:00
/** interface Y { new():Y; } */
2017-05-20 05:06:08 +02:00
constructSignatureElement = "construct" ,
2016-09-02 20:34:23 +02:00
/** function foo(*Y*: string) */
2017-05-20 05:06:08 +02:00
parameterElement = "parameter" ,
2016-09-02 20:34:23 +02:00
2017-05-20 05:06:08 +02:00
typeParameterElement = "type parameter" ,
2016-09-02 20:34:23 +02:00
2017-05-20 05:06:08 +02:00
primitiveType = "primitive type" ,
2016-09-02 20:34:23 +02:00
2017-05-20 05:06:08 +02:00
label = "label" ,
2016-09-02 20:34:23 +02:00
2017-05-20 05:06:08 +02:00
alias = "alias" ,
2016-09-02 20:34:23 +02:00
2017-05-20 05:06:08 +02:00
constElement = "const" ,
2016-09-02 20:34:23 +02:00
2017-05-20 05:06:08 +02:00
letElement = "let" ,
2016-09-06 20:04:39 +02:00
2017-05-20 05:06:08 +02:00
directory = "directory" ,
2016-09-06 20:04:39 +02:00
2017-05-20 05:06:08 +02:00
externalModuleName = "external module name" ,
2016-11-08 17:56:08 +01:00
/ * *
* < JsxTagName attribute1 attribute2 = { 0 } / >
2017-04-03 18:32:39 +02:00
* /
2017-05-20 05:06:08 +02:00
jsxAttribute = "JSX attribute" ,
2018-05-07 21:39:00 +02:00
/** String literal */
string = "string" ,
2016-09-02 20:34:23 +02:00
}
2017-05-22 19:40:59 +02:00
export const enum ScriptElementKindModifier {
none = "" ,
publicMemberModifier = "public" ,
privateMemberModifier = "private" ,
protectedMemberModifier = "protected" ,
exportedModifier = "export" ,
ambientModifier = "declare" ,
staticModifier = "static" ,
abstractModifier = "abstract" ,
2018-01-05 01:36:31 +01:00
optionalModifier = "optional"
2017-05-22 19:40:59 +02:00
}
export const enum ClassificationTypeNames {
comment = "comment" ,
identifier = "identifier" ,
keyword = "keyword" ,
numericLiteral = "number" ,
operator = "operator" ,
stringLiteral = "string" ,
whiteSpace = "whitespace" ,
text = "text" ,
punctuation = "punctuation" ,
className = "class name" ,
enumName = "enum name" ,
interfaceName = "interface name" ,
module Name = "module name" ,
typeParameterName = "type parameter name" ,
typeAliasName = "type alias name" ,
parameterName = "parameter name" ,
docCommentTagName = "doc comment tag name" ,
jsxOpenTagName = "jsx open tag name" ,
jsxCloseTagName = "jsx close tag name" ,
jsxSelfClosingTagName = "jsx self closing tag name" ,
jsxAttribute = "jsx attribute" ,
jsxText = "jsx text" ,
jsxAttributeStringLiteralValue = "jsx attribute string literal value" ,
2016-09-02 20:34:23 +02:00
}
export const enum ClassificationType {
comment = 1 ,
identifier = 2 ,
keyword = 3 ,
numericLiteral = 4 ,
operator = 5 ,
stringLiteral = 6 ,
regularExpressionLiteral = 7 ,
whiteSpace = 8 ,
text = 9 ,
punctuation = 10 ,
className = 11 ,
enumName = 12 ,
interfaceName = 13 ,
module Name = 14 ,
typeParameterName = 15 ,
typeAliasName = 16 ,
parameterName = 17 ,
docCommentTagName = 18 ,
jsxOpenTagName = 19 ,
jsxCloseTagName = 20 ,
jsxSelfClosingTagName = 21 ,
jsxAttribute = 22 ,
jsxText = 23 ,
jsxAttributeStringLiteralValue = 24 ,
}
}