1/*! ***************************************************************************** 2Copyright (c) Microsoft Corporation. All rights reserved. 3Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4this file except in compliance with the License. You may obtain a copy of the 5License at http://www.apache.org/licenses/LICENSE-2.0 6 7THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 8KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 9WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 10MERCHANTABLITY OR NON-INFRINGEMENT. 11 12See the Apache Version 2.0 License for specific language governing permissions 13and limitations under the License. 14***************************************************************************** */ 15 16declare namespace ts { 17 namespace server { 18 type ActionSet = "action::set"; 19 type ActionInvalidate = "action::invalidate"; 20 type ActionPackageInstalled = "action::packageInstalled"; 21 type EventTypesRegistry = "event::typesRegistry"; 22 type EventBeginInstallTypes = "event::beginInstallTypes"; 23 type EventEndInstallTypes = "event::endInstallTypes"; 24 type EventInitializationFailed = "event::initializationFailed"; 25 interface TypingInstallerResponse { 26 readonly kind: ActionSet | ActionInvalidate | EventTypesRegistry | ActionPackageInstalled | EventBeginInstallTypes | EventEndInstallTypes | EventInitializationFailed; 27 } 28 interface TypingInstallerRequestWithProjectName { 29 readonly projectName: string; 30 } 31 interface DiscoverTypings extends TypingInstallerRequestWithProjectName { 32 readonly fileNames: string[]; 33 readonly projectRootPath: Path; 34 readonly compilerOptions: CompilerOptions; 35 readonly watchOptions?: WatchOptions; 36 readonly typeAcquisition: TypeAcquisition; 37 readonly unresolvedImports: SortedReadonlyArray<string>; 38 readonly cachePath?: string; 39 readonly kind: "discover"; 40 } 41 interface CloseProject extends TypingInstallerRequestWithProjectName { 42 readonly kind: "closeProject"; 43 } 44 interface TypesRegistryRequest { 45 readonly kind: "typesRegistry"; 46 } 47 interface InstallPackageRequest extends TypingInstallerRequestWithProjectName { 48 readonly kind: "installPackage"; 49 readonly fileName: Path; 50 readonly packageName: string; 51 readonly projectRootPath: Path; 52 } 53 interface PackageInstalledResponse extends ProjectResponse { 54 readonly kind: ActionPackageInstalled; 55 readonly success: boolean; 56 readonly message: string; 57 } 58 interface InitializationFailedResponse extends TypingInstallerResponse { 59 readonly kind: EventInitializationFailed; 60 readonly message: string; 61 readonly stack?: string; 62 } 63 interface ProjectResponse extends TypingInstallerResponse { 64 readonly projectName: string; 65 } 66 interface InvalidateCachedTypings extends ProjectResponse { 67 readonly kind: ActionInvalidate; 68 } 69 interface InstallTypes extends ProjectResponse { 70 readonly kind: EventBeginInstallTypes | EventEndInstallTypes; 71 readonly eventId: number; 72 readonly typingsInstallerVersion: string; 73 readonly packagesToInstall: readonly string[]; 74 } 75 interface BeginInstallTypes extends InstallTypes { 76 readonly kind: EventBeginInstallTypes; 77 } 78 interface EndInstallTypes extends InstallTypes { 79 readonly kind: EventEndInstallTypes; 80 readonly installSuccess: boolean; 81 } 82 interface SetTypings extends ProjectResponse { 83 readonly typeAcquisition: TypeAcquisition; 84 readonly compilerOptions: CompilerOptions; 85 readonly typings: string[]; 86 readonly unresolvedImports: SortedReadonlyArray<string>; 87 readonly kind: ActionSet; 88 } 89 namespace protocol { 90 /** 91 * Declaration module describing the TypeScript Server protocol 92 */ 93 enum CommandTypes { 94 JsxClosingTag = "jsxClosingTag", 95 Brace = "brace", 96 BraceCompletion = "braceCompletion", 97 GetSpanOfEnclosingComment = "getSpanOfEnclosingComment", 98 Change = "change", 99 Close = "close", 100 /** @deprecated Prefer CompletionInfo -- see comment on CompletionsResponse */ 101 Completions = "completions", 102 CompletionInfo = "completionInfo", 103 CompletionDetails = "completionEntryDetails", 104 CompileOnSaveAffectedFileList = "compileOnSaveAffectedFileList", 105 CompileOnSaveEmitFile = "compileOnSaveEmitFile", 106 Configure = "configure", 107 Definition = "definition", 108 DefinitionAndBoundSpan = "definitionAndBoundSpan", 109 Implementation = "implementation", 110 Exit = "exit", 111 FileReferences = "fileReferences", 112 Format = "format", 113 Formatonkey = "formatonkey", 114 Geterr = "geterr", 115 GeterrForProject = "geterrForProject", 116 SemanticDiagnosticsSync = "semanticDiagnosticsSync", 117 SyntacticDiagnosticsSync = "syntacticDiagnosticsSync", 118 SuggestionDiagnosticsSync = "suggestionDiagnosticsSync", 119 NavBar = "navbar", 120 Navto = "navto", 121 NavTree = "navtree", 122 NavTreeFull = "navtree-full", 123 /** @deprecated */ 124 Occurrences = "occurrences", 125 DocumentHighlights = "documentHighlights", 126 Open = "open", 127 Quickinfo = "quickinfo", 128 References = "references", 129 Reload = "reload", 130 Rename = "rename", 131 Saveto = "saveto", 132 SignatureHelp = "signatureHelp", 133 FindSourceDefinition = "findSourceDefinition", 134 Status = "status", 135 TypeDefinition = "typeDefinition", 136 ProjectInfo = "projectInfo", 137 ReloadProjects = "reloadProjects", 138 Unknown = "unknown", 139 OpenExternalProject = "openExternalProject", 140 OpenExternalProjects = "openExternalProjects", 141 CloseExternalProject = "closeExternalProject", 142 UpdateOpen = "updateOpen", 143 GetOutliningSpans = "getOutliningSpans", 144 TodoComments = "todoComments", 145 Indentation = "indentation", 146 DocCommentTemplate = "docCommentTemplate", 147 CompilerOptionsForInferredProjects = "compilerOptionsForInferredProjects", 148 GetCodeFixes = "getCodeFixes", 149 GetCombinedCodeFix = "getCombinedCodeFix", 150 ApplyCodeActionCommand = "applyCodeActionCommand", 151 GetSupportedCodeFixes = "getSupportedCodeFixes", 152 GetApplicableRefactors = "getApplicableRefactors", 153 GetEditsForRefactor = "getEditsForRefactor", 154 OrganizeImports = "organizeImports", 155 GetEditsForFileRename = "getEditsForFileRename", 156 ConfigurePlugin = "configurePlugin", 157 SelectionRange = "selectionRange", 158 ToggleLineComment = "toggleLineComment", 159 ToggleMultilineComment = "toggleMultilineComment", 160 CommentSelection = "commentSelection", 161 UncommentSelection = "uncommentSelection", 162 PrepareCallHierarchy = "prepareCallHierarchy", 163 ProvideCallHierarchyIncomingCalls = "provideCallHierarchyIncomingCalls", 164 ProvideCallHierarchyOutgoingCalls = "provideCallHierarchyOutgoingCalls", 165 ProvideInlayHints = "provideInlayHints" 166 } 167 /** 168 * A TypeScript Server message 169 */ 170 interface Message { 171 /** 172 * Sequence number of the message 173 */ 174 seq: number; 175 /** 176 * One of "request", "response", or "event" 177 */ 178 type: "request" | "response" | "event"; 179 } 180 /** 181 * Client-initiated request message 182 */ 183 interface Request extends Message { 184 type: "request"; 185 /** 186 * The command to execute 187 */ 188 command: string; 189 /** 190 * Object containing arguments for the command 191 */ 192 arguments?: any; 193 } 194 /** 195 * Request to reload the project structure for all the opened files 196 */ 197 interface ReloadProjectsRequest extends Message { 198 command: CommandTypes.ReloadProjects; 199 } 200 /** 201 * Server-initiated event message 202 */ 203 interface Event extends Message { 204 type: "event"; 205 /** 206 * Name of event 207 */ 208 event: string; 209 /** 210 * Event-specific information 211 */ 212 body?: any; 213 } 214 /** 215 * Response by server to client request message. 216 */ 217 interface Response extends Message { 218 type: "response"; 219 /** 220 * Sequence number of the request message. 221 */ 222 request_seq: number; 223 /** 224 * Outcome of the request. 225 */ 226 success: boolean; 227 /** 228 * The command requested. 229 */ 230 command: string; 231 /** 232 * If success === false, this should always be provided. 233 * Otherwise, may (or may not) contain a success message. 234 */ 235 message?: string; 236 /** 237 * Contains message body if success === true. 238 */ 239 body?: any; 240 /** 241 * Contains extra information that plugin can include to be passed on 242 */ 243 metadata?: unknown; 244 /** 245 * Exposes information about the performance of this request-response pair. 246 */ 247 performanceData?: PerformanceData; 248 } 249 interface PerformanceData { 250 /** 251 * Time spent updating the program graph, in milliseconds. 252 */ 253 updateGraphDurationMs?: number; 254 /** 255 * The time spent creating or updating the auto-import program, in milliseconds. 256 */ 257 createAutoImportProviderProgramDurationMs?: number; 258 } 259 /** 260 * Arguments for FileRequest messages. 261 */ 262 interface FileRequestArgs { 263 /** 264 * The file for the request (absolute pathname required). 265 */ 266 file: string; 267 projectFileName?: string; 268 } 269 interface StatusRequest extends Request { 270 command: CommandTypes.Status; 271 } 272 interface StatusResponseBody { 273 /** 274 * The TypeScript version (`ts.version`). 275 */ 276 version: string; 277 } 278 /** 279 * Response to StatusRequest 280 */ 281 interface StatusResponse extends Response { 282 body: StatusResponseBody; 283 } 284 /** 285 * Requests a JS Doc comment template for a given position 286 */ 287 interface DocCommentTemplateRequest extends FileLocationRequest { 288 command: CommandTypes.DocCommentTemplate; 289 } 290 /** 291 * Response to DocCommentTemplateRequest 292 */ 293 interface DocCommandTemplateResponse extends Response { 294 body?: TextInsertion; 295 } 296 /** 297 * A request to get TODO comments from the file 298 */ 299 interface TodoCommentRequest extends FileRequest { 300 command: CommandTypes.TodoComments; 301 arguments: TodoCommentRequestArgs; 302 } 303 /** 304 * Arguments for TodoCommentRequest request. 305 */ 306 interface TodoCommentRequestArgs extends FileRequestArgs { 307 /** 308 * Array of target TodoCommentDescriptors that describes TODO comments to be found 309 */ 310 descriptors: TodoCommentDescriptor[]; 311 } 312 /** 313 * Response for TodoCommentRequest request. 314 */ 315 interface TodoCommentsResponse extends Response { 316 body?: TodoComment[]; 317 } 318 /** 319 * A request to determine if the caret is inside a comment. 320 */ 321 interface SpanOfEnclosingCommentRequest extends FileLocationRequest { 322 command: CommandTypes.GetSpanOfEnclosingComment; 323 arguments: SpanOfEnclosingCommentRequestArgs; 324 } 325 interface SpanOfEnclosingCommentRequestArgs extends FileLocationRequestArgs { 326 /** 327 * Requires that the enclosing span be a multi-line comment, or else the request returns undefined. 328 */ 329 onlyMultiLine: boolean; 330 } 331 /** 332 * Request to obtain outlining spans in file. 333 */ 334 interface OutliningSpansRequest extends FileRequest { 335 command: CommandTypes.GetOutliningSpans; 336 } 337 interface OutliningSpan { 338 /** The span of the document to actually collapse. */ 339 textSpan: TextSpan; 340 /** The span of the document to display when the user hovers over the collapsed span. */ 341 hintSpan: TextSpan; 342 /** The text to display in the editor for the collapsed region. */ 343 bannerText: string; 344 /** 345 * Whether or not this region should be automatically collapsed when 346 * the 'Collapse to Definitions' command is invoked. 347 */ 348 autoCollapse: boolean; 349 /** 350 * Classification of the contents of the span 351 */ 352 kind: OutliningSpanKind; 353 } 354 /** 355 * Response to OutliningSpansRequest request. 356 */ 357 interface OutliningSpansResponse extends Response { 358 body?: OutliningSpan[]; 359 } 360 /** 361 * A request to get indentation for a location in file 362 */ 363 interface IndentationRequest extends FileLocationRequest { 364 command: CommandTypes.Indentation; 365 arguments: IndentationRequestArgs; 366 } 367 /** 368 * Response for IndentationRequest request. 369 */ 370 interface IndentationResponse extends Response { 371 body?: IndentationResult; 372 } 373 /** 374 * Indentation result representing where indentation should be placed 375 */ 376 interface IndentationResult { 377 /** 378 * The base position in the document that the indent should be relative to 379 */ 380 position: number; 381 /** 382 * The number of columns the indent should be at relative to the position's column. 383 */ 384 indentation: number; 385 } 386 /** 387 * Arguments for IndentationRequest request. 388 */ 389 interface IndentationRequestArgs extends FileLocationRequestArgs { 390 /** 391 * An optional set of settings to be used when computing indentation. 392 * If argument is omitted - then it will use settings for file that were previously set via 'configure' request or global settings. 393 */ 394 options?: EditorSettings; 395 } 396 /** 397 * Arguments for ProjectInfoRequest request. 398 */ 399 interface ProjectInfoRequestArgs extends FileRequestArgs { 400 /** 401 * Indicate if the file name list of the project is needed 402 */ 403 needFileNameList: boolean; 404 } 405 /** 406 * A request to get the project information of the current file. 407 */ 408 interface ProjectInfoRequest extends Request { 409 command: CommandTypes.ProjectInfo; 410 arguments: ProjectInfoRequestArgs; 411 } 412 /** 413 * A request to retrieve compiler options diagnostics for a project 414 */ 415 interface CompilerOptionsDiagnosticsRequest extends Request { 416 arguments: CompilerOptionsDiagnosticsRequestArgs; 417 } 418 /** 419 * Arguments for CompilerOptionsDiagnosticsRequest request. 420 */ 421 interface CompilerOptionsDiagnosticsRequestArgs { 422 /** 423 * Name of the project to retrieve compiler options diagnostics. 424 */ 425 projectFileName: string; 426 } 427 /** 428 * Response message body for "projectInfo" request 429 */ 430 interface ProjectInfo { 431 /** 432 * For configured project, this is the normalized path of the 'tsconfig.json' file 433 * For inferred project, this is undefined 434 */ 435 configFileName: string; 436 /** 437 * The list of normalized file name in the project, including 'lib.d.ts' 438 */ 439 fileNames?: string[]; 440 /** 441 * Indicates if the project has a active language service instance 442 */ 443 languageServiceDisabled?: boolean; 444 } 445 /** 446 * Represents diagnostic info that includes location of diagnostic in two forms 447 * - start position and length of the error span 448 * - startLocation and endLocation - a pair of Location objects that store start/end line and offset of the error span. 449 */ 450 interface DiagnosticWithLinePosition { 451 message: string; 452 start: number; 453 length: number; 454 startLocation: Location; 455 endLocation: Location; 456 category: string; 457 code: number; 458 /** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */ 459 reportsUnnecessary?: {}; 460 reportsDeprecated?: {}; 461 relatedInformation?: DiagnosticRelatedInformation[]; 462 } 463 /** 464 * Response message for "projectInfo" request 465 */ 466 interface ProjectInfoResponse extends Response { 467 body?: ProjectInfo; 468 } 469 /** 470 * Request whose sole parameter is a file name. 471 */ 472 interface FileRequest extends Request { 473 arguments: FileRequestArgs; 474 } 475 /** 476 * Instances of this interface specify a location in a source file: 477 * (file, line, character offset), where line and character offset are 1-based. 478 */ 479 interface FileLocationRequestArgs extends FileRequestArgs { 480 /** 481 * The line number for the request (1-based). 482 */ 483 line: number; 484 /** 485 * The character offset (on the line) for the request (1-based). 486 */ 487 offset: number; 488 } 489 type FileLocationOrRangeRequestArgs = FileLocationRequestArgs | FileRangeRequestArgs; 490 /** 491 * Request refactorings at a given position or selection area. 492 */ 493 interface GetApplicableRefactorsRequest extends Request { 494 command: CommandTypes.GetApplicableRefactors; 495 arguments: GetApplicableRefactorsRequestArgs; 496 } 497 type GetApplicableRefactorsRequestArgs = FileLocationOrRangeRequestArgs & { 498 triggerReason?: RefactorTriggerReason; 499 kind?: string; 500 }; 501 type RefactorTriggerReason = "implicit" | "invoked"; 502 /** 503 * Response is a list of available refactorings. 504 * Each refactoring exposes one or more "Actions"; a user selects one action to invoke a refactoring 505 */ 506 interface GetApplicableRefactorsResponse extends Response { 507 body?: ApplicableRefactorInfo[]; 508 } 509 /** 510 * A set of one or more available refactoring actions, grouped under a parent refactoring. 511 */ 512 interface ApplicableRefactorInfo { 513 /** 514 * The programmatic name of the refactoring 515 */ 516 name: string; 517 /** 518 * A description of this refactoring category to show to the user. 519 * If the refactoring gets inlined (see below), this text will not be visible. 520 */ 521 description: string; 522 /** 523 * Inlineable refactorings can have their actions hoisted out to the top level 524 * of a context menu. Non-inlineanable refactorings should always be shown inside 525 * their parent grouping. 526 * 527 * If not specified, this value is assumed to be 'true' 528 */ 529 inlineable?: boolean; 530 actions: RefactorActionInfo[]; 531 } 532 /** 533 * Represents a single refactoring action - for example, the "Extract Method..." refactor might 534 * offer several actions, each corresponding to a surround class or closure to extract into. 535 */ 536 interface RefactorActionInfo { 537 /** 538 * The programmatic name of the refactoring action 539 */ 540 name: string; 541 /** 542 * A description of this refactoring action to show to the user. 543 * If the parent refactoring is inlined away, this will be the only text shown, 544 * so this description should make sense by itself if the parent is inlineable=true 545 */ 546 description: string; 547 /** 548 * A message to show to the user if the refactoring cannot be applied in 549 * the current context. 550 */ 551 notApplicableReason?: string; 552 /** 553 * The hierarchical dotted name of the refactor action. 554 */ 555 kind?: string; 556 } 557 interface GetEditsForRefactorRequest extends Request { 558 command: CommandTypes.GetEditsForRefactor; 559 arguments: GetEditsForRefactorRequestArgs; 560 } 561 /** 562 * Request the edits that a particular refactoring action produces. 563 * Callers must specify the name of the refactor and the name of the action. 564 */ 565 type GetEditsForRefactorRequestArgs = FileLocationOrRangeRequestArgs & { 566 refactor: string; 567 action: string; 568 }; 569 interface GetEditsForRefactorResponse extends Response { 570 body?: RefactorEditInfo; 571 } 572 interface RefactorEditInfo { 573 edits: FileCodeEdits[]; 574 /** 575 * An optional location where the editor should start a rename operation once 576 * the refactoring edits have been applied 577 */ 578 renameLocation?: Location; 579 renameFilename?: string; 580 } 581 /** 582 * Organize imports by: 583 * 1) Removing unused imports 584 * 2) Coalescing imports from the same module 585 * 3) Sorting imports 586 */ 587 interface OrganizeImportsRequest extends Request { 588 command: CommandTypes.OrganizeImports; 589 arguments: OrganizeImportsRequestArgs; 590 } 591 type OrganizeImportsScope = GetCombinedCodeFixScope; 592 enum OrganizeImportsMode { 593 All = "All", 594 SortAndCombine = "SortAndCombine", 595 RemoveUnused = "RemoveUnused" 596 } 597 interface OrganizeImportsRequestArgs { 598 scope: OrganizeImportsScope; 599 /** @deprecated Use `mode` instead */ 600 skipDestructiveCodeActions?: boolean; 601 mode?: OrganizeImportsMode; 602 } 603 interface OrganizeImportsResponse extends Response { 604 body: readonly FileCodeEdits[]; 605 } 606 interface GetEditsForFileRenameRequest extends Request { 607 command: CommandTypes.GetEditsForFileRename; 608 arguments: GetEditsForFileRenameRequestArgs; 609 } 610 /** Note: Paths may also be directories. */ 611 interface GetEditsForFileRenameRequestArgs { 612 readonly oldFilePath: string; 613 readonly newFilePath: string; 614 } 615 interface GetEditsForFileRenameResponse extends Response { 616 body: readonly FileCodeEdits[]; 617 } 618 /** 619 * Request for the available codefixes at a specific position. 620 */ 621 interface CodeFixRequest extends Request { 622 command: CommandTypes.GetCodeFixes; 623 arguments: CodeFixRequestArgs; 624 } 625 interface GetCombinedCodeFixRequest extends Request { 626 command: CommandTypes.GetCombinedCodeFix; 627 arguments: GetCombinedCodeFixRequestArgs; 628 } 629 interface GetCombinedCodeFixResponse extends Response { 630 body: CombinedCodeActions; 631 } 632 interface ApplyCodeActionCommandRequest extends Request { 633 command: CommandTypes.ApplyCodeActionCommand; 634 arguments: ApplyCodeActionCommandRequestArgs; 635 } 636 interface ApplyCodeActionCommandResponse extends Response { 637 } 638 interface FileRangeRequestArgs extends FileRequestArgs { 639 /** 640 * The line number for the request (1-based). 641 */ 642 startLine: number; 643 /** 644 * The character offset (on the line) for the request (1-based). 645 */ 646 startOffset: number; 647 /** 648 * The line number for the request (1-based). 649 */ 650 endLine: number; 651 /** 652 * The character offset (on the line) for the request (1-based). 653 */ 654 endOffset: number; 655 } 656 /** 657 * Instances of this interface specify errorcodes on a specific location in a sourcefile. 658 */ 659 interface CodeFixRequestArgs extends FileRangeRequestArgs { 660 /** 661 * Errorcodes we want to get the fixes for. 662 */ 663 errorCodes: readonly number[]; 664 } 665 interface GetCombinedCodeFixRequestArgs { 666 scope: GetCombinedCodeFixScope; 667 fixId: {}; 668 } 669 interface GetCombinedCodeFixScope { 670 type: "file"; 671 args: FileRequestArgs; 672 } 673 interface ApplyCodeActionCommandRequestArgs { 674 /** May also be an array of commands. */ 675 command: {}; 676 } 677 /** 678 * Response for GetCodeFixes request. 679 */ 680 interface GetCodeFixesResponse extends Response { 681 body?: CodeAction[]; 682 } 683 /** 684 * A request whose arguments specify a file location (file, line, col). 685 */ 686 interface FileLocationRequest extends FileRequest { 687 arguments: FileLocationRequestArgs; 688 } 689 /** 690 * A request to get codes of supported code fixes. 691 */ 692 interface GetSupportedCodeFixesRequest extends Request { 693 command: CommandTypes.GetSupportedCodeFixes; 694 } 695 /** 696 * A response for GetSupportedCodeFixesRequest request. 697 */ 698 interface GetSupportedCodeFixesResponse extends Response { 699 /** 700 * List of error codes supported by the server. 701 */ 702 body?: string[]; 703 } 704 /** 705 * A request to get encoded semantic classifications for a span in the file 706 */ 707 interface EncodedSemanticClassificationsRequest extends FileRequest { 708 arguments: EncodedSemanticClassificationsRequestArgs; 709 } 710 /** 711 * Arguments for EncodedSemanticClassificationsRequest request. 712 */ 713 interface EncodedSemanticClassificationsRequestArgs extends FileRequestArgs { 714 /** 715 * Start position of the span. 716 */ 717 start: number; 718 /** 719 * Length of the span. 720 */ 721 length: number; 722 /** 723 * Optional parameter for the semantic highlighting response, if absent it 724 * defaults to "original". 725 */ 726 format?: "original" | "2020"; 727 } 728 /** The response for a EncodedSemanticClassificationsRequest */ 729 interface EncodedSemanticClassificationsResponse extends Response { 730 body?: EncodedSemanticClassificationsResponseBody; 731 } 732 /** 733 * Implementation response message. Gives series of text spans depending on the format ar. 734 */ 735 interface EncodedSemanticClassificationsResponseBody { 736 endOfLineState: EndOfLineState; 737 spans: number[]; 738 } 739 /** 740 * Arguments in document highlight request; include: filesToSearch, file, 741 * line, offset. 742 */ 743 interface DocumentHighlightsRequestArgs extends FileLocationRequestArgs { 744 /** 745 * List of files to search for document highlights. 746 */ 747 filesToSearch: string[]; 748 } 749 /** 750 * Go to definition request; value of command field is 751 * "definition". Return response giving the file locations that 752 * define the symbol found in file at location line, col. 753 */ 754 interface DefinitionRequest extends FileLocationRequest { 755 command: CommandTypes.Definition; 756 } 757 interface DefinitionAndBoundSpanRequest extends FileLocationRequest { 758 readonly command: CommandTypes.DefinitionAndBoundSpan; 759 } 760 interface FindSourceDefinitionRequest extends FileLocationRequest { 761 readonly command: CommandTypes.FindSourceDefinition; 762 } 763 interface DefinitionAndBoundSpanResponse extends Response { 764 readonly body: DefinitionInfoAndBoundSpan; 765 } 766 /** 767 * Go to type request; value of command field is 768 * "typeDefinition". Return response giving the file locations that 769 * define the type for the symbol found in file at location line, col. 770 */ 771 interface TypeDefinitionRequest extends FileLocationRequest { 772 command: CommandTypes.TypeDefinition; 773 } 774 /** 775 * Go to implementation request; value of command field is 776 * "implementation". Return response giving the file locations that 777 * implement the symbol found in file at location line, col. 778 */ 779 interface ImplementationRequest extends FileLocationRequest { 780 command: CommandTypes.Implementation; 781 } 782 /** 783 * Location in source code expressed as (one-based) line and (one-based) column offset. 784 */ 785 interface Location { 786 line: number; 787 offset: number; 788 } 789 /** 790 * Object found in response messages defining a span of text in source code. 791 */ 792 interface TextSpan { 793 /** 794 * First character of the definition. 795 */ 796 start: Location; 797 /** 798 * One character past last character of the definition. 799 */ 800 end: Location; 801 } 802 /** 803 * Object found in response messages defining a span of text in a specific source file. 804 */ 805 interface FileSpan extends TextSpan { 806 /** 807 * File containing text span. 808 */ 809 file: string; 810 } 811 interface JSDocTagInfo { 812 /** Name of the JSDoc tag */ 813 name: string; 814 /** 815 * Comment text after the JSDoc tag -- the text after the tag name until the next tag or end of comment 816 * Display parts when UserPreferences.displayPartsForJSDoc is true, flattened to string otherwise. 817 */ 818 text?: string | SymbolDisplayPart[]; 819 } 820 interface TextSpanWithContext extends TextSpan { 821 contextStart?: Location; 822 contextEnd?: Location; 823 } 824 interface FileSpanWithContext extends FileSpan, TextSpanWithContext { 825 } 826 interface DefinitionInfo extends FileSpanWithContext { 827 /** 828 * When true, the file may or may not exist. 829 */ 830 unverified?: boolean; 831 } 832 interface DefinitionInfoAndBoundSpan { 833 definitions: readonly DefinitionInfo[]; 834 textSpan: TextSpan; 835 } 836 /** 837 * Definition response message. Gives text range for definition. 838 */ 839 interface DefinitionResponse extends Response { 840 body?: DefinitionInfo[]; 841 } 842 interface DefinitionInfoAndBoundSpanResponse extends Response { 843 body?: DefinitionInfoAndBoundSpan; 844 } 845 /** @deprecated Use `DefinitionInfoAndBoundSpanResponse` instead. */ 846 type DefinitionInfoAndBoundSpanReponse = DefinitionInfoAndBoundSpanResponse; 847 /** 848 * Definition response message. Gives text range for definition. 849 */ 850 interface TypeDefinitionResponse extends Response { 851 body?: FileSpanWithContext[]; 852 } 853 /** 854 * Implementation response message. Gives text range for implementations. 855 */ 856 interface ImplementationResponse extends Response { 857 body?: FileSpanWithContext[]; 858 } 859 /** 860 * Request to get brace completion for a location in the file. 861 */ 862 interface BraceCompletionRequest extends FileLocationRequest { 863 command: CommandTypes.BraceCompletion; 864 arguments: BraceCompletionRequestArgs; 865 } 866 /** 867 * Argument for BraceCompletionRequest request. 868 */ 869 interface BraceCompletionRequestArgs extends FileLocationRequestArgs { 870 /** 871 * Kind of opening brace 872 */ 873 openingBrace: string; 874 } 875 interface JsxClosingTagRequest extends FileLocationRequest { 876 readonly command: CommandTypes.JsxClosingTag; 877 readonly arguments: JsxClosingTagRequestArgs; 878 } 879 interface JsxClosingTagRequestArgs extends FileLocationRequestArgs { 880 } 881 interface JsxClosingTagResponse extends Response { 882 readonly body: TextInsertion; 883 } 884 /** 885 * @deprecated 886 * Get occurrences request; value of command field is 887 * "occurrences". Return response giving spans that are relevant 888 * in the file at a given line and column. 889 */ 890 interface OccurrencesRequest extends FileLocationRequest { 891 command: CommandTypes.Occurrences; 892 } 893 /** @deprecated */ 894 interface OccurrencesResponseItem extends FileSpanWithContext { 895 /** 896 * True if the occurrence is a write location, false otherwise. 897 */ 898 isWriteAccess: boolean; 899 /** 900 * True if the occurrence is in a string, undefined otherwise; 901 */ 902 isInString?: true; 903 } 904 /** @deprecated */ 905 interface OccurrencesResponse extends Response { 906 body?: OccurrencesResponseItem[]; 907 } 908 /** 909 * Get document highlights request; value of command field is 910 * "documentHighlights". Return response giving spans that are relevant 911 * in the file at a given line and column. 912 */ 913 interface DocumentHighlightsRequest extends FileLocationRequest { 914 command: CommandTypes.DocumentHighlights; 915 arguments: DocumentHighlightsRequestArgs; 916 } 917 /** 918 * Span augmented with extra information that denotes the kind of the highlighting to be used for span. 919 */ 920 interface HighlightSpan extends TextSpanWithContext { 921 kind: HighlightSpanKind; 922 } 923 /** 924 * Represents a set of highligh spans for a give name 925 */ 926 interface DocumentHighlightsItem { 927 /** 928 * File containing highlight spans. 929 */ 930 file: string; 931 /** 932 * Spans to highlight in file. 933 */ 934 highlightSpans: HighlightSpan[]; 935 } 936 /** 937 * Response for a DocumentHighlightsRequest request. 938 */ 939 interface DocumentHighlightsResponse extends Response { 940 body?: DocumentHighlightsItem[]; 941 } 942 /** 943 * Find references request; value of command field is 944 * "references". Return response giving the file locations that 945 * reference the symbol found in file at location line, col. 946 */ 947 interface ReferencesRequest extends FileLocationRequest { 948 command: CommandTypes.References; 949 } 950 interface ReferencesResponseItem extends FileSpanWithContext { 951 /** 952 * Text of line containing the reference. Including this 953 * with the response avoids latency of editor loading files 954 * to show text of reference line (the server already has loaded the referencing files). 955 * 956 * If {@link UserPreferences.disableLineTextInReferences} is enabled, the property won't be filled 957 */ 958 lineText?: string; 959 /** 960 * True if reference is a write location, false otherwise. 961 */ 962 isWriteAccess: boolean; 963 /** 964 * Present only if the search was triggered from a declaration. 965 * True indicates that the references refers to the same symbol 966 * (i.e. has the same meaning) as the declaration that began the 967 * search. 968 */ 969 isDefinition?: boolean; 970 } 971 /** 972 * The body of a "references" response message. 973 */ 974 interface ReferencesResponseBody { 975 /** 976 * The file locations referencing the symbol. 977 */ 978 refs: readonly ReferencesResponseItem[]; 979 /** 980 * The name of the symbol. 981 */ 982 symbolName: string; 983 /** 984 * The start character offset of the symbol (on the line provided by the references request). 985 */ 986 symbolStartOffset: number; 987 /** 988 * The full display name of the symbol. 989 */ 990 symbolDisplayString: string; 991 } 992 /** 993 * Response to "references" request. 994 */ 995 interface ReferencesResponse extends Response { 996 body?: ReferencesResponseBody; 997 } 998 interface FileReferencesRequest extends FileRequest { 999 command: CommandTypes.FileReferences; 1000 } 1001 interface FileReferencesResponseBody { 1002 /** 1003 * The file locations referencing the symbol. 1004 */ 1005 refs: readonly ReferencesResponseItem[]; 1006 /** 1007 * The name of the symbol. 1008 */ 1009 symbolName: string; 1010 } 1011 interface FileReferencesResponse extends Response { 1012 body?: FileReferencesResponseBody; 1013 } 1014 /** 1015 * Argument for RenameRequest request. 1016 */ 1017 interface RenameRequestArgs extends FileLocationRequestArgs { 1018 /** 1019 * Should text at specified location be found/changed in comments? 1020 */ 1021 findInComments?: boolean; 1022 /** 1023 * Should text at specified location be found/changed in strings? 1024 */ 1025 findInStrings?: boolean; 1026 } 1027 /** 1028 * Rename request; value of command field is "rename". Return 1029 * response giving the file locations that reference the symbol 1030 * found in file at location line, col. Also return full display 1031 * name of the symbol so that client can print it unambiguously. 1032 */ 1033 interface RenameRequest extends FileLocationRequest { 1034 command: CommandTypes.Rename; 1035 arguments: RenameRequestArgs; 1036 } 1037 /** 1038 * Information about the item to be renamed. 1039 */ 1040 type RenameInfo = RenameInfoSuccess | RenameInfoFailure; 1041 interface RenameInfoSuccess { 1042 /** 1043 * True if item can be renamed. 1044 */ 1045 canRename: true; 1046 /** 1047 * File or directory to rename. 1048 * If set, `getEditsForFileRename` should be called instead of `findRenameLocations`. 1049 */ 1050 fileToRename?: string; 1051 /** 1052 * Display name of the item to be renamed. 1053 */ 1054 displayName: string; 1055 /** 1056 * Full display name of item to be renamed. 1057 */ 1058 fullDisplayName: string; 1059 /** 1060 * The items's kind (such as 'className' or 'parameterName' or plain 'text'). 1061 */ 1062 kind: ScriptElementKind; 1063 /** 1064 * Optional modifiers for the kind (such as 'public'). 1065 */ 1066 kindModifiers: string; 1067 /** Span of text to rename. */ 1068 triggerSpan: TextSpan; 1069 } 1070 interface RenameInfoFailure { 1071 canRename: false; 1072 /** 1073 * Error message if item can not be renamed. 1074 */ 1075 localizedErrorMessage: string; 1076 } 1077 /** 1078 * A group of text spans, all in 'file'. 1079 */ 1080 interface SpanGroup { 1081 /** The file to which the spans apply */ 1082 file: string; 1083 /** The text spans in this group */ 1084 locs: RenameTextSpan[]; 1085 } 1086 interface RenameTextSpan extends TextSpanWithContext { 1087 readonly prefixText?: string; 1088 readonly suffixText?: string; 1089 } 1090 interface RenameResponseBody { 1091 /** 1092 * Information about the item to be renamed. 1093 */ 1094 info: RenameInfo; 1095 /** 1096 * An array of span groups (one per file) that refer to the item to be renamed. 1097 */ 1098 locs: readonly SpanGroup[]; 1099 } 1100 /** 1101 * Rename response message. 1102 */ 1103 interface RenameResponse extends Response { 1104 body?: RenameResponseBody; 1105 } 1106 /** 1107 * Represents a file in external project. 1108 * External project is project whose set of files, compilation options and open\close state 1109 * is maintained by the client (i.e. if all this data come from .csproj file in Visual Studio). 1110 * External project will exist even if all files in it are closed and should be closed explicitly. 1111 * If external project includes one or more tsconfig.json/jsconfig.json files then tsserver will 1112 * create configured project for every config file but will maintain a link that these projects were created 1113 * as a result of opening external project so they should be removed once external project is closed. 1114 */ 1115 interface ExternalFile { 1116 /** 1117 * Name of file file 1118 */ 1119 fileName: string; 1120 /** 1121 * Script kind of the file 1122 */ 1123 scriptKind?: ScriptKindName | ScriptKind; 1124 /** 1125 * Whether file has mixed content (i.e. .cshtml file that combines html markup with C#/JavaScript) 1126 */ 1127 hasMixedContent?: boolean; 1128 /** 1129 * Content of the file 1130 */ 1131 content?: string; 1132 } 1133 /** 1134 * Represent an external project 1135 */ 1136 interface ExternalProject { 1137 /** 1138 * Project name 1139 */ 1140 projectFileName: string; 1141 /** 1142 * List of root files in project 1143 */ 1144 rootFiles: ExternalFile[]; 1145 /** 1146 * Compiler options for the project 1147 */ 1148 options: ExternalProjectCompilerOptions; 1149 /** 1150 * @deprecated typingOptions. Use typeAcquisition instead 1151 */ 1152 typingOptions?: TypeAcquisition; 1153 /** 1154 * Explicitly specified type acquisition for the project 1155 */ 1156 typeAcquisition?: TypeAcquisition; 1157 } 1158 interface CompileOnSaveMixin { 1159 /** 1160 * If compile on save is enabled for the project 1161 */ 1162 compileOnSave?: boolean; 1163 } 1164 /** 1165 * For external projects, some of the project settings are sent together with 1166 * compiler settings. 1167 */ 1168 type ExternalProjectCompilerOptions = CompilerOptions & CompileOnSaveMixin & WatchOptions; 1169 interface FileWithProjectReferenceRedirectInfo { 1170 /** 1171 * Name of file 1172 */ 1173 fileName: string; 1174 /** 1175 * True if the file is primarily included in a referenced project 1176 */ 1177 isSourceOfProjectReferenceRedirect: boolean; 1178 } 1179 /** 1180 * Represents a set of changes that happen in project 1181 */ 1182 interface ProjectChanges { 1183 /** 1184 * List of added files 1185 */ 1186 added: string[] | FileWithProjectReferenceRedirectInfo[]; 1187 /** 1188 * List of removed files 1189 */ 1190 removed: string[] | FileWithProjectReferenceRedirectInfo[]; 1191 /** 1192 * List of updated files 1193 */ 1194 updated: string[] | FileWithProjectReferenceRedirectInfo[]; 1195 /** 1196 * List of files that have had their project reference redirect status updated 1197 * Only provided when the synchronizeProjectList request has includeProjectReferenceRedirectInfo set to true 1198 */ 1199 updatedRedirects?: FileWithProjectReferenceRedirectInfo[]; 1200 } 1201 /** 1202 * Information found in a configure request. 1203 */ 1204 interface ConfigureRequestArguments { 1205 /** 1206 * Information about the host, for example 'Emacs 24.4' or 1207 * 'Sublime Text version 3075' 1208 */ 1209 hostInfo?: string; 1210 /** 1211 * If present, tab settings apply only to this file. 1212 */ 1213 file?: string; 1214 /** 1215 * The format options to use during formatting and other code editing features. 1216 */ 1217 formatOptions?: FormatCodeSettings; 1218 preferences?: UserPreferences; 1219 /** 1220 * The host's additional supported .js file extensions 1221 */ 1222 extraFileExtensions?: FileExtensionInfo[]; 1223 watchOptions?: WatchOptions; 1224 } 1225 enum WatchFileKind { 1226 FixedPollingInterval = "FixedPollingInterval", 1227 PriorityPollingInterval = "PriorityPollingInterval", 1228 DynamicPriorityPolling = "DynamicPriorityPolling", 1229 FixedChunkSizePolling = "FixedChunkSizePolling", 1230 UseFsEvents = "UseFsEvents", 1231 UseFsEventsOnParentDirectory = "UseFsEventsOnParentDirectory" 1232 } 1233 enum WatchDirectoryKind { 1234 UseFsEvents = "UseFsEvents", 1235 FixedPollingInterval = "FixedPollingInterval", 1236 DynamicPriorityPolling = "DynamicPriorityPolling", 1237 FixedChunkSizePolling = "FixedChunkSizePolling" 1238 } 1239 enum PollingWatchKind { 1240 FixedInterval = "FixedInterval", 1241 PriorityInterval = "PriorityInterval", 1242 DynamicPriority = "DynamicPriority", 1243 FixedChunkSize = "FixedChunkSize" 1244 } 1245 interface WatchOptions { 1246 watchFile?: WatchFileKind | ts.WatchFileKind; 1247 watchDirectory?: WatchDirectoryKind | ts.WatchDirectoryKind; 1248 fallbackPolling?: PollingWatchKind | ts.PollingWatchKind; 1249 synchronousWatchDirectory?: boolean; 1250 excludeDirectories?: string[]; 1251 excludeFiles?: string[]; 1252 [option: string]: CompilerOptionsValue | undefined; 1253 } 1254 /** 1255 * Configure request; value of command field is "configure". Specifies 1256 * host information, such as host type, tab size, and indent size. 1257 */ 1258 interface ConfigureRequest extends Request { 1259 command: CommandTypes.Configure; 1260 arguments: ConfigureRequestArguments; 1261 } 1262 /** 1263 * Response to "configure" request. This is just an acknowledgement, so 1264 * no body field is required. 1265 */ 1266 interface ConfigureResponse extends Response { 1267 } 1268 interface ConfigurePluginRequestArguments { 1269 pluginName: string; 1270 configuration: any; 1271 } 1272 interface ConfigurePluginRequest extends Request { 1273 command: CommandTypes.ConfigurePlugin; 1274 arguments: ConfigurePluginRequestArguments; 1275 } 1276 interface ConfigurePluginResponse extends Response { 1277 } 1278 interface SelectionRangeRequest extends FileRequest { 1279 command: CommandTypes.SelectionRange; 1280 arguments: SelectionRangeRequestArgs; 1281 } 1282 interface SelectionRangeRequestArgs extends FileRequestArgs { 1283 locations: Location[]; 1284 } 1285 interface SelectionRangeResponse extends Response { 1286 body?: SelectionRange[]; 1287 } 1288 interface SelectionRange { 1289 textSpan: TextSpan; 1290 parent?: SelectionRange; 1291 } 1292 interface ToggleLineCommentRequest extends FileRequest { 1293 command: CommandTypes.ToggleLineComment; 1294 arguments: FileRangeRequestArgs; 1295 } 1296 interface ToggleMultilineCommentRequest extends FileRequest { 1297 command: CommandTypes.ToggleMultilineComment; 1298 arguments: FileRangeRequestArgs; 1299 } 1300 interface CommentSelectionRequest extends FileRequest { 1301 command: CommandTypes.CommentSelection; 1302 arguments: FileRangeRequestArgs; 1303 } 1304 interface UncommentSelectionRequest extends FileRequest { 1305 command: CommandTypes.UncommentSelection; 1306 arguments: FileRangeRequestArgs; 1307 } 1308 /** 1309 * Information found in an "open" request. 1310 */ 1311 interface OpenRequestArgs extends FileRequestArgs { 1312 /** 1313 * Used when a version of the file content is known to be more up to date than the one on disk. 1314 * Then the known content will be used upon opening instead of the disk copy 1315 */ 1316 fileContent?: string; 1317 /** 1318 * Used to specify the script kind of the file explicitly. It could be one of the following: 1319 * "TS", "JS", "TSX", "JSX" 1320 */ 1321 scriptKindName?: ScriptKindName; 1322 /** 1323 * Used to limit the searching for project config file. If given the searching will stop at this 1324 * root path; otherwise it will go all the way up to the dist root path. 1325 */ 1326 projectRootPath?: string; 1327 } 1328 type ScriptKindName = "TS" | "JS" | "TSX" | "JSX" | "ETS"; 1329 /** 1330 * Open request; value of command field is "open". Notify the 1331 * server that the client has file open. The server will not 1332 * monitor the filesystem for changes in this file and will assume 1333 * that the client is updating the server (using the change and/or 1334 * reload messages) when the file changes. Server does not currently 1335 * send a response to an open request. 1336 */ 1337 interface OpenRequest extends Request { 1338 command: CommandTypes.Open; 1339 arguments: OpenRequestArgs; 1340 } 1341 /** 1342 * Request to open or update external project 1343 */ 1344 interface OpenExternalProjectRequest extends Request { 1345 command: CommandTypes.OpenExternalProject; 1346 arguments: OpenExternalProjectArgs; 1347 } 1348 /** 1349 * Arguments to OpenExternalProjectRequest request 1350 */ 1351 type OpenExternalProjectArgs = ExternalProject; 1352 /** 1353 * Request to open multiple external projects 1354 */ 1355 interface OpenExternalProjectsRequest extends Request { 1356 command: CommandTypes.OpenExternalProjects; 1357 arguments: OpenExternalProjectsArgs; 1358 } 1359 /** 1360 * Arguments to OpenExternalProjectsRequest 1361 */ 1362 interface OpenExternalProjectsArgs { 1363 /** 1364 * List of external projects to open or update 1365 */ 1366 projects: ExternalProject[]; 1367 } 1368 /** 1369 * Response to OpenExternalProjectRequest request. This is just an acknowledgement, so 1370 * no body field is required. 1371 */ 1372 interface OpenExternalProjectResponse extends Response { 1373 } 1374 /** 1375 * Response to OpenExternalProjectsRequest request. This is just an acknowledgement, so 1376 * no body field is required. 1377 */ 1378 interface OpenExternalProjectsResponse extends Response { 1379 } 1380 /** 1381 * Request to close external project. 1382 */ 1383 interface CloseExternalProjectRequest extends Request { 1384 command: CommandTypes.CloseExternalProject; 1385 arguments: CloseExternalProjectRequestArgs; 1386 } 1387 /** 1388 * Arguments to CloseExternalProjectRequest request 1389 */ 1390 interface CloseExternalProjectRequestArgs { 1391 /** 1392 * Name of the project to close 1393 */ 1394 projectFileName: string; 1395 } 1396 /** 1397 * Response to CloseExternalProjectRequest request. This is just an acknowledgement, so 1398 * no body field is required. 1399 */ 1400 interface CloseExternalProjectResponse extends Response { 1401 } 1402 /** 1403 * Request to synchronize list of open files with the client 1404 */ 1405 interface UpdateOpenRequest extends Request { 1406 command: CommandTypes.UpdateOpen; 1407 arguments: UpdateOpenRequestArgs; 1408 } 1409 /** 1410 * Arguments to UpdateOpenRequest 1411 */ 1412 interface UpdateOpenRequestArgs { 1413 /** 1414 * List of newly open files 1415 */ 1416 openFiles?: OpenRequestArgs[]; 1417 /** 1418 * List of open files files that were changes 1419 */ 1420 changedFiles?: FileCodeEdits[]; 1421 /** 1422 * List of files that were closed 1423 */ 1424 closedFiles?: string[]; 1425 } 1426 /** 1427 * External projects have a typeAcquisition option so they need to be added separately to compiler options for inferred projects. 1428 */ 1429 type InferredProjectCompilerOptions = ExternalProjectCompilerOptions & TypeAcquisition; 1430 /** 1431 * Request to set compiler options for inferred projects. 1432 * External projects are opened / closed explicitly. 1433 * Configured projects are opened when user opens loose file that has 'tsconfig.json' or 'jsconfig.json' anywhere in one of containing folders. 1434 * This configuration file will be used to obtain a list of files and configuration settings for the project. 1435 * Inferred projects are created when user opens a loose file that is not the part of external project 1436 * or configured project and will contain only open file and transitive closure of referenced files if 'useOneInferredProject' is false, 1437 * or all open loose files and its transitive closure of referenced files if 'useOneInferredProject' is true. 1438 */ 1439 interface SetCompilerOptionsForInferredProjectsRequest extends Request { 1440 command: CommandTypes.CompilerOptionsForInferredProjects; 1441 arguments: SetCompilerOptionsForInferredProjectsArgs; 1442 } 1443 /** 1444 * Argument for SetCompilerOptionsForInferredProjectsRequest request. 1445 */ 1446 interface SetCompilerOptionsForInferredProjectsArgs { 1447 /** 1448 * Compiler options to be used with inferred projects. 1449 */ 1450 options: InferredProjectCompilerOptions; 1451 /** 1452 * Specifies the project root path used to scope compiler options. 1453 * It is an error to provide this property if the server has not been started with 1454 * `useInferredProjectPerProjectRoot` enabled. 1455 */ 1456 projectRootPath?: string; 1457 } 1458 /** 1459 * Response to SetCompilerOptionsForInferredProjectsResponse request. This is just an acknowledgement, so 1460 * no body field is required. 1461 */ 1462 interface SetCompilerOptionsForInferredProjectsResponse extends Response { 1463 } 1464 /** 1465 * Exit request; value of command field is "exit". Ask the server process 1466 * to exit. 1467 */ 1468 interface ExitRequest extends Request { 1469 command: CommandTypes.Exit; 1470 } 1471 /** 1472 * Close request; value of command field is "close". Notify the 1473 * server that the client has closed a previously open file. If 1474 * file is still referenced by open files, the server will resume 1475 * monitoring the filesystem for changes to file. Server does not 1476 * currently send a response to a close request. 1477 */ 1478 interface CloseRequest extends FileRequest { 1479 command: CommandTypes.Close; 1480 } 1481 /** 1482 * Request to obtain the list of files that should be regenerated if target file is recompiled. 1483 * NOTE: this us query-only operation and does not generate any output on disk. 1484 */ 1485 interface CompileOnSaveAffectedFileListRequest extends FileRequest { 1486 command: CommandTypes.CompileOnSaveAffectedFileList; 1487 } 1488 /** 1489 * Contains a list of files that should be regenerated in a project 1490 */ 1491 interface CompileOnSaveAffectedFileListSingleProject { 1492 /** 1493 * Project name 1494 */ 1495 projectFileName: string; 1496 /** 1497 * List of files names that should be recompiled 1498 */ 1499 fileNames: string[]; 1500 /** 1501 * true if project uses outFile or out compiler option 1502 */ 1503 projectUsesOutFile: boolean; 1504 } 1505 /** 1506 * Response for CompileOnSaveAffectedFileListRequest request; 1507 */ 1508 interface CompileOnSaveAffectedFileListResponse extends Response { 1509 body: CompileOnSaveAffectedFileListSingleProject[]; 1510 } 1511 /** 1512 * Request to recompile the file. All generated outputs (.js, .d.ts or .js.map files) is written on disk. 1513 */ 1514 interface CompileOnSaveEmitFileRequest extends FileRequest { 1515 command: CommandTypes.CompileOnSaveEmitFile; 1516 arguments: CompileOnSaveEmitFileRequestArgs; 1517 } 1518 /** 1519 * Arguments for CompileOnSaveEmitFileRequest 1520 */ 1521 interface CompileOnSaveEmitFileRequestArgs extends FileRequestArgs { 1522 /** 1523 * if true - then file should be recompiled even if it does not have any changes. 1524 */ 1525 forced?: boolean; 1526 includeLinePosition?: boolean; 1527 /** if true - return response as object with emitSkipped and diagnostics */ 1528 richResponse?: boolean; 1529 } 1530 interface CompileOnSaveEmitFileResponse extends Response { 1531 body: boolean | EmitResult; 1532 } 1533 interface EmitResult { 1534 emitSkipped: boolean; 1535 diagnostics: Diagnostic[] | DiagnosticWithLinePosition[]; 1536 } 1537 /** 1538 * Quickinfo request; value of command field is 1539 * "quickinfo". Return response giving a quick type and 1540 * documentation string for the symbol found in file at location 1541 * line, col. 1542 */ 1543 interface QuickInfoRequest extends FileLocationRequest { 1544 command: CommandTypes.Quickinfo; 1545 arguments: FileLocationRequestArgs; 1546 } 1547 /** 1548 * Body of QuickInfoResponse. 1549 */ 1550 interface QuickInfoResponseBody { 1551 /** 1552 * The symbol's kind (such as 'className' or 'parameterName' or plain 'text'). 1553 */ 1554 kind: ScriptElementKind; 1555 /** 1556 * Optional modifiers for the kind (such as 'public'). 1557 */ 1558 kindModifiers: string; 1559 /** 1560 * Starting file location of symbol. 1561 */ 1562 start: Location; 1563 /** 1564 * One past last character of symbol. 1565 */ 1566 end: Location; 1567 /** 1568 * Type and kind of symbol. 1569 */ 1570 displayString: string; 1571 /** 1572 * Documentation associated with symbol. 1573 * Display parts when UserPreferences.displayPartsForJSDoc is true, flattened to string otherwise. 1574 */ 1575 documentation: string | SymbolDisplayPart[]; 1576 /** 1577 * JSDoc tags associated with symbol. 1578 */ 1579 tags: JSDocTagInfo[]; 1580 } 1581 /** 1582 * Quickinfo response message. 1583 */ 1584 interface QuickInfoResponse extends Response { 1585 body?: QuickInfoResponseBody; 1586 } 1587 /** 1588 * Arguments for format messages. 1589 */ 1590 interface FormatRequestArgs extends FileLocationRequestArgs { 1591 /** 1592 * Last line of range for which to format text in file. 1593 */ 1594 endLine: number; 1595 /** 1596 * Character offset on last line of range for which to format text in file. 1597 */ 1598 endOffset: number; 1599 /** 1600 * Format options to be used. 1601 */ 1602 options?: FormatCodeSettings; 1603 } 1604 /** 1605 * Format request; value of command field is "format". Return 1606 * response giving zero or more edit instructions. The edit 1607 * instructions will be sorted in file order. Applying the edit 1608 * instructions in reverse to file will result in correctly 1609 * reformatted text. 1610 */ 1611 interface FormatRequest extends FileLocationRequest { 1612 command: CommandTypes.Format; 1613 arguments: FormatRequestArgs; 1614 } 1615 /** 1616 * Object found in response messages defining an editing 1617 * instruction for a span of text in source code. The effect of 1618 * this instruction is to replace the text starting at start and 1619 * ending one character before end with newText. For an insertion, 1620 * the text span is empty. For a deletion, newText is empty. 1621 */ 1622 interface CodeEdit { 1623 /** 1624 * First character of the text span to edit. 1625 */ 1626 start: Location; 1627 /** 1628 * One character past last character of the text span to edit. 1629 */ 1630 end: Location; 1631 /** 1632 * Replace the span defined above with this string (may be 1633 * the empty string). 1634 */ 1635 newText: string; 1636 } 1637 interface FileCodeEdits { 1638 fileName: string; 1639 textChanges: CodeEdit[]; 1640 } 1641 interface CodeFixResponse extends Response { 1642 /** The code actions that are available */ 1643 body?: CodeFixAction[]; 1644 } 1645 interface CodeAction { 1646 /** Description of the code action to display in the UI of the editor */ 1647 description: string; 1648 /** Text changes to apply to each file as part of the code action */ 1649 changes: FileCodeEdits[]; 1650 /** A command is an opaque object that should be passed to `ApplyCodeActionCommandRequestArgs` without modification. */ 1651 commands?: {}[]; 1652 } 1653 interface CombinedCodeActions { 1654 changes: readonly FileCodeEdits[]; 1655 commands?: readonly {}[]; 1656 } 1657 interface CodeFixAction extends CodeAction { 1658 /** Short name to identify the fix, for use by telemetry. */ 1659 fixName: string; 1660 /** 1661 * If present, one may call 'getCombinedCodeFix' with this fixId. 1662 * This may be omitted to indicate that the code fix can't be applied in a group. 1663 */ 1664 fixId?: {}; 1665 /** Should be present if and only if 'fixId' is. */ 1666 fixAllDescription?: string; 1667 } 1668 /** 1669 * Format and format on key response message. 1670 */ 1671 interface FormatResponse extends Response { 1672 body?: CodeEdit[]; 1673 } 1674 /** 1675 * Arguments for format on key messages. 1676 */ 1677 interface FormatOnKeyRequestArgs extends FileLocationRequestArgs { 1678 /** 1679 * Key pressed (';', '\n', or '}'). 1680 */ 1681 key: string; 1682 options?: FormatCodeSettings; 1683 } 1684 /** 1685 * Format on key request; value of command field is 1686 * "formatonkey". Given file location and key typed (as string), 1687 * return response giving zero or more edit instructions. The 1688 * edit instructions will be sorted in file order. Applying the 1689 * edit instructions in reverse to file will result in correctly 1690 * reformatted text. 1691 */ 1692 interface FormatOnKeyRequest extends FileLocationRequest { 1693 command: CommandTypes.Formatonkey; 1694 arguments: FormatOnKeyRequestArgs; 1695 } 1696 type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<" | "#" | " "; 1697 enum CompletionTriggerKind { 1698 /** Completion was triggered by typing an identifier, manual invocation (e.g Ctrl+Space) or via API. */ 1699 Invoked = 1, 1700 /** Completion was triggered by a trigger character. */ 1701 TriggerCharacter = 2, 1702 /** Completion was re-triggered as the current completion list is incomplete. */ 1703 TriggerForIncompleteCompletions = 3 1704 } 1705 /** 1706 * Arguments for completions messages. 1707 */ 1708 interface CompletionsRequestArgs extends FileLocationRequestArgs { 1709 /** 1710 * Optional prefix to apply to possible completions. 1711 */ 1712 prefix?: string; 1713 /** 1714 * Character that was responsible for triggering completion. 1715 * Should be `undefined` if a user manually requested completion. 1716 */ 1717 triggerCharacter?: CompletionsTriggerCharacter; 1718 triggerKind?: CompletionTriggerKind; 1719 /** 1720 * @deprecated Use UserPreferences.includeCompletionsForModuleExports 1721 */ 1722 includeExternalModuleExports?: boolean; 1723 /** 1724 * @deprecated Use UserPreferences.includeCompletionsWithInsertText 1725 */ 1726 includeInsertTextCompletions?: boolean; 1727 } 1728 interface EtsOptions { 1729 render: { 1730 method: string[]; 1731 decorator: string[]; 1732 }; 1733 components: string[]; 1734 libs: string[]; 1735 extend: { 1736 decorator: string[]; 1737 components: { 1738 name: string; 1739 type: string; 1740 instance: string; 1741 }[]; 1742 }; 1743 styles: { 1744 decorator: string; 1745 component: { 1746 name: string; 1747 type: string; 1748 instance: string; 1749 }; 1750 property: string; 1751 }; 1752 concurrent: { 1753 decorator: string; 1754 }; 1755 customComponent?: string; 1756 propertyDecorators: { 1757 name: string; 1758 needInitialization: boolean; 1759 }[]; 1760 emitDecorators: { 1761 name: string; 1762 emitParameters: boolean; 1763 }[]; 1764 syntaxComponents: { 1765 paramsUICallback: string[]; 1766 attrUICallback: { 1767 name: string; 1768 attributes: string[]; 1769 }[]; 1770 }; 1771 } 1772 /** 1773 * Completions request; value of command field is "completions". 1774 * Given a file location (file, line, col) and a prefix (which may 1775 * be the empty string), return the possible completions that 1776 * begin with prefix. 1777 */ 1778 interface CompletionsRequest extends FileLocationRequest { 1779 command: CommandTypes.Completions | CommandTypes.CompletionInfo; 1780 arguments: CompletionsRequestArgs; 1781 } 1782 /** 1783 * Arguments for completion details request. 1784 */ 1785 interface CompletionDetailsRequestArgs extends FileLocationRequestArgs { 1786 /** 1787 * Names of one or more entries for which to obtain details. 1788 */ 1789 entryNames: (string | CompletionEntryIdentifier)[]; 1790 } 1791 interface CompletionEntryIdentifier { 1792 name: string; 1793 source?: string; 1794 data?: unknown; 1795 } 1796 /** 1797 * Completion entry details request; value of command field is 1798 * "completionEntryDetails". Given a file location (file, line, 1799 * col) and an array of completion entry names return more 1800 * detailed information for each completion entry. 1801 */ 1802 interface CompletionDetailsRequest extends FileLocationRequest { 1803 command: CommandTypes.CompletionDetails; 1804 arguments: CompletionDetailsRequestArgs; 1805 } 1806 /** 1807 * Part of a symbol description. 1808 */ 1809 interface SymbolDisplayPart { 1810 /** 1811 * Text of an item describing the symbol. 1812 */ 1813 text: string; 1814 /** 1815 * The symbol's kind (such as 'className' or 'parameterName' or plain 'text'). 1816 */ 1817 kind: string; 1818 } 1819 /** A part of a symbol description that links from a jsdoc @link tag to a declaration */ 1820 interface JSDocLinkDisplayPart extends SymbolDisplayPart { 1821 /** The location of the declaration that the @link tag links to. */ 1822 target: FileSpan; 1823 } 1824 /** 1825 * An item found in a completion response. 1826 */ 1827 interface CompletionEntry { 1828 /** 1829 * The symbol's name. 1830 */ 1831 name: string; 1832 /** 1833 * The symbol's kind (such as 'className' or 'parameterName'). 1834 */ 1835 kind: ScriptElementKind; 1836 /** 1837 * Optional modifiers for the kind (such as 'public'). 1838 */ 1839 kindModifiers?: string; 1840 /** 1841 * A string that is used for comparing completion items so that they can be ordered. This 1842 * is often the same as the name but may be different in certain circumstances. 1843 */ 1844 sortText: string; 1845 /** 1846 * Text to insert instead of `name`. 1847 * This is used to support bracketed completions; If `name` might be "a-b" but `insertText` would be `["a-b"]`, 1848 * coupled with `replacementSpan` to replace a dotted access with a bracket access. 1849 */ 1850 insertText?: string; 1851 /** 1852 * `insertText` should be interpreted as a snippet if true. 1853 */ 1854 isSnippet?: true; 1855 /** 1856 * An optional span that indicates the text to be replaced by this completion item. 1857 * If present, this span should be used instead of the default one. 1858 * It will be set if the required span differs from the one generated by the default replacement behavior. 1859 */ 1860 replacementSpan?: TextSpan; 1861 /** 1862 * Indicates whether commiting this completion entry will require additional code actions to be 1863 * made to avoid errors. The CompletionEntryDetails will have these actions. 1864 */ 1865 hasAction?: true; 1866 /** 1867 * Identifier (not necessarily human-readable) identifying where this completion came from. 1868 */ 1869 source?: string; 1870 /** 1871 * Human-readable description of the `source`. 1872 */ 1873 sourceDisplay?: SymbolDisplayPart[]; 1874 /** 1875 * Additional details for the label. 1876 */ 1877 labelDetails?: CompletionEntryLabelDetails; 1878 /** 1879 * If true, this completion should be highlighted as recommended. There will only be one of these. 1880 * This will be set when we know the user should write an expression with a certain type and that type is an enum or constructable class. 1881 * Then either that enum/class or a namespace containing it will be the recommended symbol. 1882 */ 1883 isRecommended?: true; 1884 /** 1885 * If true, this completion was generated from traversing the name table of an unchecked JS file, 1886 * and therefore may not be accurate. 1887 */ 1888 isFromUncheckedFile?: true; 1889 /** 1890 * If true, this completion was for an auto-import of a module not yet in the program, but listed 1891 * in the project package.json. Used for telemetry reporting. 1892 */ 1893 isPackageJsonImport?: true; 1894 /** 1895 * If true, this completion was an auto-import-style completion of an import statement (i.e., the 1896 * module specifier was inserted along with the imported identifier). Used for telemetry reporting. 1897 */ 1898 isImportStatementCompletion?: true; 1899 /** 1900 * A property to be sent back to TS Server in the CompletionDetailsRequest, along with `name`, 1901 * that allows TS Server to look up the symbol represented by the completion item, disambiguating 1902 * items with the same name. 1903 */ 1904 data?: unknown; 1905 /** 1906 * Js Doc info with symbol. 1907 */ 1908 jsDoc?: JsDocTagInfo[]; 1909 /** 1910 * Displayparts info with symbol. 1911 */ 1912 displayParts?: SymbolDisplayPart[]; 1913 } 1914 interface CompletionEntryLabelDetails { 1915 /** 1916 * An optional string which is rendered less prominently directly after 1917 * {@link CompletionEntry.name name}, without any spacing. Should be 1918 * used for function signatures or type annotations. 1919 */ 1920 detail?: string; 1921 /** 1922 * An optional string which is rendered less prominently after 1923 * {@link CompletionEntryLabelDetails.detail}. Should be used for fully qualified 1924 * names or file path. 1925 */ 1926 description?: string; 1927 } 1928 /** 1929 * Additional completion entry details, available on demand 1930 */ 1931 interface CompletionEntryDetails { 1932 /** 1933 * The symbol's name. 1934 */ 1935 name: string; 1936 /** 1937 * The symbol's kind (such as 'className' or 'parameterName'). 1938 */ 1939 kind: ScriptElementKind; 1940 /** 1941 * Optional modifiers for the kind (such as 'public'). 1942 */ 1943 kindModifiers: string; 1944 /** 1945 * Display parts of the symbol (similar to quick info). 1946 */ 1947 displayParts: SymbolDisplayPart[]; 1948 /** 1949 * Documentation strings for the symbol. 1950 */ 1951 documentation?: SymbolDisplayPart[]; 1952 /** 1953 * JSDoc tags for the symbol. 1954 */ 1955 tags?: JSDocTagInfo[]; 1956 /** 1957 * The associated code actions for this entry 1958 */ 1959 codeActions?: CodeAction[]; 1960 /** 1961 * @deprecated Use `sourceDisplay` instead. 1962 */ 1963 source?: SymbolDisplayPart[]; 1964 /** 1965 * Human-readable description of the `source` from the CompletionEntry. 1966 */ 1967 sourceDisplay?: SymbolDisplayPart[]; 1968 } 1969 /** @deprecated Prefer CompletionInfoResponse, which supports several top-level fields in addition to the array of entries. */ 1970 interface CompletionsResponse extends Response { 1971 body?: CompletionEntry[]; 1972 } 1973 interface CompletionInfoResponse extends Response { 1974 body?: CompletionInfo; 1975 } 1976 interface CompletionInfo { 1977 readonly flags?: number; 1978 readonly isGlobalCompletion: boolean; 1979 readonly isMemberCompletion: boolean; 1980 readonly isNewIdentifierLocation: boolean; 1981 /** 1982 * In the absence of `CompletionEntry["replacementSpan"]`, the editor may choose whether to use 1983 * this span or its default one. If `CompletionEntry["replacementSpan"]` is defined, that span 1984 * must be used to commit that completion entry. 1985 */ 1986 readonly optionalReplacementSpan?: TextSpan; 1987 readonly isIncomplete?: boolean; 1988 readonly entries: readonly CompletionEntry[]; 1989 } 1990 interface CompletionDetailsResponse extends Response { 1991 body?: CompletionEntryDetails[]; 1992 } 1993 /** 1994 * Signature help information for a single parameter 1995 */ 1996 interface SignatureHelpParameter { 1997 /** 1998 * The parameter's name 1999 */ 2000 name: string; 2001 /** 2002 * Documentation of the parameter. 2003 */ 2004 documentation: SymbolDisplayPart[]; 2005 /** 2006 * Display parts of the parameter. 2007 */ 2008 displayParts: SymbolDisplayPart[]; 2009 /** 2010 * Whether the parameter is optional or not. 2011 */ 2012 isOptional: boolean; 2013 } 2014 /** 2015 * Represents a single signature to show in signature help. 2016 */ 2017 interface SignatureHelpItem { 2018 /** 2019 * Whether the signature accepts a variable number of arguments. 2020 */ 2021 isVariadic: boolean; 2022 /** 2023 * The prefix display parts. 2024 */ 2025 prefixDisplayParts: SymbolDisplayPart[]; 2026 /** 2027 * The suffix display parts. 2028 */ 2029 suffixDisplayParts: SymbolDisplayPart[]; 2030 /** 2031 * The separator display parts. 2032 */ 2033 separatorDisplayParts: SymbolDisplayPart[]; 2034 /** 2035 * The signature helps items for the parameters. 2036 */ 2037 parameters: SignatureHelpParameter[]; 2038 /** 2039 * The signature's documentation 2040 */ 2041 documentation: SymbolDisplayPart[]; 2042 /** 2043 * The signature's JSDoc tags 2044 */ 2045 tags: JSDocTagInfo[]; 2046 } 2047 /** 2048 * Signature help items found in the response of a signature help request. 2049 */ 2050 interface SignatureHelpItems { 2051 /** 2052 * The signature help items. 2053 */ 2054 items: SignatureHelpItem[]; 2055 /** 2056 * The span for which signature help should appear on a signature 2057 */ 2058 applicableSpan: TextSpan; 2059 /** 2060 * The item selected in the set of available help items. 2061 */ 2062 selectedItemIndex: number; 2063 /** 2064 * The argument selected in the set of parameters. 2065 */ 2066 argumentIndex: number; 2067 /** 2068 * The argument count 2069 */ 2070 argumentCount: number; 2071 } 2072 type SignatureHelpTriggerCharacter = "," | "(" | "<"; 2073 type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")"; 2074 /** 2075 * Arguments of a signature help request. 2076 */ 2077 interface SignatureHelpRequestArgs extends FileLocationRequestArgs { 2078 /** 2079 * Reason why signature help was invoked. 2080 * See each individual possible 2081 */ 2082 triggerReason?: SignatureHelpTriggerReason; 2083 } 2084 type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason; 2085 /** 2086 * Signals that the user manually requested signature help. 2087 * The language service will unconditionally attempt to provide a result. 2088 */ 2089 interface SignatureHelpInvokedReason { 2090 kind: "invoked"; 2091 triggerCharacter?: undefined; 2092 } 2093 /** 2094 * Signals that the signature help request came from a user typing a character. 2095 * Depending on the character and the syntactic context, the request may or may not be served a result. 2096 */ 2097 interface SignatureHelpCharacterTypedReason { 2098 kind: "characterTyped"; 2099 /** 2100 * Character that was responsible for triggering signature help. 2101 */ 2102 triggerCharacter: SignatureHelpTriggerCharacter; 2103 } 2104 /** 2105 * Signals that this signature help request came from typing a character or moving the cursor. 2106 * This should only occur if a signature help session was already active and the editor needs to see if it should adjust. 2107 * The language service will unconditionally attempt to provide a result. 2108 * `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move. 2109 */ 2110 interface SignatureHelpRetriggeredReason { 2111 kind: "retrigger"; 2112 /** 2113 * Character that was responsible for triggering signature help. 2114 */ 2115 triggerCharacter?: SignatureHelpRetriggerCharacter; 2116 } 2117 /** 2118 * Signature help request; value of command field is "signatureHelp". 2119 * Given a file location (file, line, col), return the signature 2120 * help. 2121 */ 2122 interface SignatureHelpRequest extends FileLocationRequest { 2123 command: CommandTypes.SignatureHelp; 2124 arguments: SignatureHelpRequestArgs; 2125 } 2126 /** 2127 * Response object for a SignatureHelpRequest. 2128 */ 2129 interface SignatureHelpResponse extends Response { 2130 body?: SignatureHelpItems; 2131 } 2132 type InlayHintKind = "Type" | "Parameter" | "Enum"; 2133 interface InlayHintsRequestArgs extends FileRequestArgs { 2134 /** 2135 * Start position of the span. 2136 */ 2137 start: number; 2138 /** 2139 * Length of the span. 2140 */ 2141 length: number; 2142 } 2143 interface InlayHintsRequest extends Request { 2144 command: CommandTypes.ProvideInlayHints; 2145 arguments: InlayHintsRequestArgs; 2146 } 2147 interface InlayHintItem { 2148 text: string; 2149 position: Location; 2150 kind: InlayHintKind; 2151 whitespaceBefore?: boolean; 2152 whitespaceAfter?: boolean; 2153 } 2154 interface InlayHintsResponse extends Response { 2155 body?: InlayHintItem[]; 2156 } 2157 /** 2158 * Synchronous request for semantic diagnostics of one file. 2159 */ 2160 interface SemanticDiagnosticsSyncRequest extends FileRequest { 2161 command: CommandTypes.SemanticDiagnosticsSync; 2162 arguments: SemanticDiagnosticsSyncRequestArgs; 2163 } 2164 interface SemanticDiagnosticsSyncRequestArgs extends FileRequestArgs { 2165 includeLinePosition?: boolean; 2166 } 2167 /** 2168 * Response object for synchronous sematic diagnostics request. 2169 */ 2170 interface SemanticDiagnosticsSyncResponse extends Response { 2171 body?: Diagnostic[] | DiagnosticWithLinePosition[]; 2172 } 2173 interface SuggestionDiagnosticsSyncRequest extends FileRequest { 2174 command: CommandTypes.SuggestionDiagnosticsSync; 2175 arguments: SuggestionDiagnosticsSyncRequestArgs; 2176 } 2177 type SuggestionDiagnosticsSyncRequestArgs = SemanticDiagnosticsSyncRequestArgs; 2178 type SuggestionDiagnosticsSyncResponse = SemanticDiagnosticsSyncResponse; 2179 /** 2180 * Synchronous request for syntactic diagnostics of one file. 2181 */ 2182 interface SyntacticDiagnosticsSyncRequest extends FileRequest { 2183 command: CommandTypes.SyntacticDiagnosticsSync; 2184 arguments: SyntacticDiagnosticsSyncRequestArgs; 2185 } 2186 interface SyntacticDiagnosticsSyncRequestArgs extends FileRequestArgs { 2187 includeLinePosition?: boolean; 2188 } 2189 /** 2190 * Response object for synchronous syntactic diagnostics request. 2191 */ 2192 interface SyntacticDiagnosticsSyncResponse extends Response { 2193 body?: Diagnostic[] | DiagnosticWithLinePosition[]; 2194 } 2195 /** 2196 * Arguments for GeterrForProject request. 2197 */ 2198 interface GeterrForProjectRequestArgs { 2199 /** 2200 * the file requesting project error list 2201 */ 2202 file: string; 2203 /** 2204 * Delay in milliseconds to wait before starting to compute 2205 * errors for the files in the file list 2206 */ 2207 delay: number; 2208 } 2209 /** 2210 * GeterrForProjectRequest request; value of command field is 2211 * "geterrForProject". It works similarly with 'Geterr', only 2212 * it request for every file in this project. 2213 */ 2214 interface GeterrForProjectRequest extends Request { 2215 command: CommandTypes.GeterrForProject; 2216 arguments: GeterrForProjectRequestArgs; 2217 } 2218 /** 2219 * Arguments for geterr messages. 2220 */ 2221 interface GeterrRequestArgs { 2222 /** 2223 * List of file names for which to compute compiler errors. 2224 * The files will be checked in list order. 2225 */ 2226 files: string[]; 2227 /** 2228 * Delay in milliseconds to wait before starting to compute 2229 * errors for the files in the file list 2230 */ 2231 delay: number; 2232 } 2233 /** 2234 * Geterr request; value of command field is "geterr". Wait for 2235 * delay milliseconds and then, if during the wait no change or 2236 * reload messages have arrived for the first file in the files 2237 * list, get the syntactic errors for the file, field requests, 2238 * and then get the semantic errors for the file. Repeat with a 2239 * smaller delay for each subsequent file on the files list. Best 2240 * practice for an editor is to send a file list containing each 2241 * file that is currently visible, in most-recently-used order. 2242 */ 2243 interface GeterrRequest extends Request { 2244 command: CommandTypes.Geterr; 2245 arguments: GeterrRequestArgs; 2246 } 2247 type RequestCompletedEventName = "requestCompleted"; 2248 /** 2249 * Event that is sent when server have finished processing request with specified id. 2250 */ 2251 interface RequestCompletedEvent extends Event { 2252 event: RequestCompletedEventName; 2253 body: RequestCompletedEventBody; 2254 } 2255 interface RequestCompletedEventBody { 2256 request_seq: number; 2257 } 2258 /** 2259 * Item of diagnostic information found in a DiagnosticEvent message. 2260 */ 2261 interface Diagnostic { 2262 /** 2263 * Starting file location at which text applies. 2264 */ 2265 start: Location; 2266 /** 2267 * The last file location at which the text applies. 2268 */ 2269 end: Location; 2270 /** 2271 * Text of diagnostic message. 2272 */ 2273 text: string; 2274 /** 2275 * The category of the diagnostic message, e.g. "error", "warning", or "suggestion". 2276 */ 2277 category: string; 2278 reportsUnnecessary?: {}; 2279 reportsDeprecated?: {}; 2280 /** 2281 * Any related spans the diagnostic may have, such as other locations relevant to an error, such as declarartion sites 2282 */ 2283 relatedInformation?: DiagnosticRelatedInformation[]; 2284 /** 2285 * The error code of the diagnostic message. 2286 */ 2287 code?: number; 2288 /** 2289 * The name of the plugin reporting the message. 2290 */ 2291 source?: string; 2292 } 2293 interface DiagnosticWithFileName extends Diagnostic { 2294 /** 2295 * Name of the file the diagnostic is in 2296 */ 2297 fileName: string; 2298 } 2299 /** 2300 * Represents additional spans returned with a diagnostic which are relevant to it 2301 */ 2302 interface DiagnosticRelatedInformation { 2303 /** 2304 * The category of the related information message, e.g. "error", "warning", or "suggestion". 2305 */ 2306 category: string; 2307 /** 2308 * The code used ot identify the related information 2309 */ 2310 code: number; 2311 /** 2312 * Text of related or additional information. 2313 */ 2314 message: string; 2315 /** 2316 * Associated location 2317 */ 2318 span?: FileSpan; 2319 } 2320 interface DiagnosticEventBody { 2321 /** 2322 * The file for which diagnostic information is reported. 2323 */ 2324 file: string; 2325 /** 2326 * An array of diagnostic information items. 2327 */ 2328 diagnostics: Diagnostic[]; 2329 } 2330 type DiagnosticEventKind = "semanticDiag" | "syntaxDiag" | "suggestionDiag"; 2331 /** 2332 * Event message for DiagnosticEventKind event types. 2333 * These events provide syntactic and semantic errors for a file. 2334 */ 2335 interface DiagnosticEvent extends Event { 2336 body?: DiagnosticEventBody; 2337 event: DiagnosticEventKind; 2338 } 2339 interface ConfigFileDiagnosticEventBody { 2340 /** 2341 * The file which trigged the searching and error-checking of the config file 2342 */ 2343 triggerFile: string; 2344 /** 2345 * The name of the found config file. 2346 */ 2347 configFile: string; 2348 /** 2349 * An arry of diagnostic information items for the found config file. 2350 */ 2351 diagnostics: DiagnosticWithFileName[]; 2352 } 2353 /** 2354 * Event message for "configFileDiag" event type. 2355 * This event provides errors for a found config file. 2356 */ 2357 interface ConfigFileDiagnosticEvent extends Event { 2358 body?: ConfigFileDiagnosticEventBody; 2359 event: "configFileDiag"; 2360 } 2361 type ProjectLanguageServiceStateEventName = "projectLanguageServiceState"; 2362 interface ProjectLanguageServiceStateEvent extends Event { 2363 event: ProjectLanguageServiceStateEventName; 2364 body?: ProjectLanguageServiceStateEventBody; 2365 } 2366 interface ProjectLanguageServiceStateEventBody { 2367 /** 2368 * Project name that has changes in the state of language service. 2369 * For configured projects this will be the config file path. 2370 * For external projects this will be the name of the projects specified when project was open. 2371 * For inferred projects this event is not raised. 2372 */ 2373 projectName: string; 2374 /** 2375 * True if language service state switched from disabled to enabled 2376 * and false otherwise. 2377 */ 2378 languageServiceEnabled: boolean; 2379 } 2380 type ProjectsUpdatedInBackgroundEventName = "projectsUpdatedInBackground"; 2381 interface ProjectsUpdatedInBackgroundEvent extends Event { 2382 event: ProjectsUpdatedInBackgroundEventName; 2383 body: ProjectsUpdatedInBackgroundEventBody; 2384 } 2385 interface ProjectsUpdatedInBackgroundEventBody { 2386 /** 2387 * Current set of open files 2388 */ 2389 openFiles: string[]; 2390 } 2391 type ProjectLoadingStartEventName = "projectLoadingStart"; 2392 interface ProjectLoadingStartEvent extends Event { 2393 event: ProjectLoadingStartEventName; 2394 body: ProjectLoadingStartEventBody; 2395 } 2396 interface ProjectLoadingStartEventBody { 2397 /** name of the project */ 2398 projectName: string; 2399 /** reason for loading */ 2400 reason: string; 2401 } 2402 type ProjectLoadingFinishEventName = "projectLoadingFinish"; 2403 interface ProjectLoadingFinishEvent extends Event { 2404 event: ProjectLoadingFinishEventName; 2405 body: ProjectLoadingFinishEventBody; 2406 } 2407 interface ProjectLoadingFinishEventBody { 2408 /** name of the project */ 2409 projectName: string; 2410 } 2411 type SurveyReadyEventName = "surveyReady"; 2412 interface SurveyReadyEvent extends Event { 2413 event: SurveyReadyEventName; 2414 body: SurveyReadyEventBody; 2415 } 2416 interface SurveyReadyEventBody { 2417 /** Name of the survey. This is an internal machine- and programmer-friendly name */ 2418 surveyId: string; 2419 } 2420 type LargeFileReferencedEventName = "largeFileReferenced"; 2421 interface LargeFileReferencedEvent extends Event { 2422 event: LargeFileReferencedEventName; 2423 body: LargeFileReferencedEventBody; 2424 } 2425 interface LargeFileReferencedEventBody { 2426 /** 2427 * name of the large file being loaded 2428 */ 2429 file: string; 2430 /** 2431 * size of the file 2432 */ 2433 fileSize: number; 2434 /** 2435 * max file size allowed on the server 2436 */ 2437 maxFileSize: number; 2438 } 2439 /** 2440 * Arguments for reload request. 2441 */ 2442 interface ReloadRequestArgs extends FileRequestArgs { 2443 /** 2444 * Name of temporary file from which to reload file 2445 * contents. May be same as file. 2446 */ 2447 tmpfile: string; 2448 } 2449 /** 2450 * Reload request message; value of command field is "reload". 2451 * Reload contents of file with name given by the 'file' argument 2452 * from temporary file with name given by the 'tmpfile' argument. 2453 * The two names can be identical. 2454 */ 2455 interface ReloadRequest extends FileRequest { 2456 command: CommandTypes.Reload; 2457 arguments: ReloadRequestArgs; 2458 } 2459 /** 2460 * Response to "reload" request. This is just an acknowledgement, so 2461 * no body field is required. 2462 */ 2463 interface ReloadResponse extends Response { 2464 } 2465 /** 2466 * Arguments for saveto request. 2467 */ 2468 interface SavetoRequestArgs extends FileRequestArgs { 2469 /** 2470 * Name of temporary file into which to save server's view of 2471 * file contents. 2472 */ 2473 tmpfile: string; 2474 } 2475 /** 2476 * Saveto request message; value of command field is "saveto". 2477 * For debugging purposes, save to a temporaryfile (named by 2478 * argument 'tmpfile') the contents of file named by argument 2479 * 'file'. The server does not currently send a response to a 2480 * "saveto" request. 2481 */ 2482 interface SavetoRequest extends FileRequest { 2483 command: CommandTypes.Saveto; 2484 arguments: SavetoRequestArgs; 2485 } 2486 /** 2487 * Arguments for navto request message. 2488 */ 2489 interface NavtoRequestArgs { 2490 /** 2491 * Search term to navigate to from current location; term can 2492 * be '.*' or an identifier prefix. 2493 */ 2494 searchValue: string; 2495 /** 2496 * Optional limit on the number of items to return. 2497 */ 2498 maxResultCount?: number; 2499 /** 2500 * The file for the request (absolute pathname required). 2501 */ 2502 file?: string; 2503 /** 2504 * Optional flag to indicate we want results for just the current file 2505 * or the entire project. 2506 */ 2507 currentFileOnly?: boolean; 2508 projectFileName?: string; 2509 } 2510 /** 2511 * Navto request message; value of command field is "navto". 2512 * Return list of objects giving file locations and symbols that 2513 * match the search term given in argument 'searchTerm'. The 2514 * context for the search is given by the named file. 2515 */ 2516 interface NavtoRequest extends Request { 2517 command: CommandTypes.Navto; 2518 arguments: NavtoRequestArgs; 2519 } 2520 /** 2521 * An item found in a navto response. 2522 */ 2523 interface NavtoItem extends FileSpan { 2524 /** 2525 * The symbol's name. 2526 */ 2527 name: string; 2528 /** 2529 * The symbol's kind (such as 'className' or 'parameterName'). 2530 */ 2531 kind: ScriptElementKind; 2532 /** 2533 * exact, substring, or prefix. 2534 */ 2535 matchKind: string; 2536 /** 2537 * If this was a case sensitive or insensitive match. 2538 */ 2539 isCaseSensitive: boolean; 2540 /** 2541 * Optional modifiers for the kind (such as 'public'). 2542 */ 2543 kindModifiers?: string; 2544 /** 2545 * Name of symbol's container symbol (if any); for example, 2546 * the class name if symbol is a class member. 2547 */ 2548 containerName?: string; 2549 /** 2550 * Kind of symbol's container symbol (if any). 2551 */ 2552 containerKind?: ScriptElementKind; 2553 } 2554 /** 2555 * Navto response message. Body is an array of navto items. Each 2556 * item gives a symbol that matched the search term. 2557 */ 2558 interface NavtoResponse extends Response { 2559 body?: NavtoItem[]; 2560 } 2561 /** 2562 * Arguments for change request message. 2563 */ 2564 interface ChangeRequestArgs extends FormatRequestArgs { 2565 /** 2566 * Optional string to insert at location (file, line, offset). 2567 */ 2568 insertString?: string; 2569 } 2570 /** 2571 * Change request message; value of command field is "change". 2572 * Update the server's view of the file named by argument 'file'. 2573 * Server does not currently send a response to a change request. 2574 */ 2575 interface ChangeRequest extends FileLocationRequest { 2576 command: CommandTypes.Change; 2577 arguments: ChangeRequestArgs; 2578 } 2579 /** 2580 * Response to "brace" request. 2581 */ 2582 interface BraceResponse extends Response { 2583 body?: TextSpan[]; 2584 } 2585 /** 2586 * Brace matching request; value of command field is "brace". 2587 * Return response giving the file locations of matching braces 2588 * found in file at location line, offset. 2589 */ 2590 interface BraceRequest extends FileLocationRequest { 2591 command: CommandTypes.Brace; 2592 } 2593 /** 2594 * NavBar items request; value of command field is "navbar". 2595 * Return response giving the list of navigation bar entries 2596 * extracted from the requested file. 2597 */ 2598 interface NavBarRequest extends FileRequest { 2599 command: CommandTypes.NavBar; 2600 } 2601 /** 2602 * NavTree request; value of command field is "navtree". 2603 * Return response giving the navigation tree of the requested file. 2604 */ 2605 interface NavTreeRequest extends FileRequest { 2606 command: CommandTypes.NavTree; 2607 } 2608 interface NavigationBarItem { 2609 /** 2610 * The item's display text. 2611 */ 2612 text: string; 2613 /** 2614 * The symbol's kind (such as 'className' or 'parameterName'). 2615 */ 2616 kind: ScriptElementKind; 2617 /** 2618 * Optional modifiers for the kind (such as 'public'). 2619 */ 2620 kindModifiers?: string; 2621 /** 2622 * The definition locations of the item. 2623 */ 2624 spans: TextSpan[]; 2625 /** 2626 * Optional children. 2627 */ 2628 childItems?: NavigationBarItem[]; 2629 /** 2630 * Number of levels deep this item should appear. 2631 */ 2632 indent: number; 2633 } 2634 /** protocol.NavigationTree is identical to ts.NavigationTree, except using protocol.TextSpan instead of ts.TextSpan */ 2635 interface NavigationTree { 2636 text: string; 2637 kind: ScriptElementKind; 2638 kindModifiers: string; 2639 spans: TextSpan[]; 2640 nameSpan: TextSpan | undefined; 2641 childItems?: NavigationTree[]; 2642 } 2643 type TelemetryEventName = "telemetry"; 2644 interface TelemetryEvent extends Event { 2645 event: TelemetryEventName; 2646 body: TelemetryEventBody; 2647 } 2648 interface TelemetryEventBody { 2649 telemetryEventName: string; 2650 payload: any; 2651 } 2652 type TypesInstallerInitializationFailedEventName = "typesInstallerInitializationFailed"; 2653 interface TypesInstallerInitializationFailedEvent extends Event { 2654 event: TypesInstallerInitializationFailedEventName; 2655 body: TypesInstallerInitializationFailedEventBody; 2656 } 2657 interface TypesInstallerInitializationFailedEventBody { 2658 message: string; 2659 } 2660 type TypingsInstalledTelemetryEventName = "typingsInstalled"; 2661 interface TypingsInstalledTelemetryEventBody extends TelemetryEventBody { 2662 telemetryEventName: TypingsInstalledTelemetryEventName; 2663 payload: TypingsInstalledTelemetryEventPayload; 2664 } 2665 interface TypingsInstalledTelemetryEventPayload { 2666 /** 2667 * Comma separated list of installed typing packages 2668 */ 2669 installedPackages: string; 2670 /** 2671 * true if install request succeeded, otherwise - false 2672 */ 2673 installSuccess: boolean; 2674 /** 2675 * version of typings installer 2676 */ 2677 typingsInstallerVersion: string; 2678 } 2679 type BeginInstallTypesEventName = "beginInstallTypes"; 2680 type EndInstallTypesEventName = "endInstallTypes"; 2681 interface BeginInstallTypesEvent extends Event { 2682 event: BeginInstallTypesEventName; 2683 body: BeginInstallTypesEventBody; 2684 } 2685 interface EndInstallTypesEvent extends Event { 2686 event: EndInstallTypesEventName; 2687 body: EndInstallTypesEventBody; 2688 } 2689 interface InstallTypesEventBody { 2690 /** 2691 * correlation id to match begin and end events 2692 */ 2693 eventId: number; 2694 /** 2695 * list of packages to install 2696 */ 2697 packages: readonly string[]; 2698 } 2699 interface BeginInstallTypesEventBody extends InstallTypesEventBody { 2700 } 2701 interface EndInstallTypesEventBody extends InstallTypesEventBody { 2702 /** 2703 * true if installation succeeded, otherwise false 2704 */ 2705 success: boolean; 2706 } 2707 interface NavBarResponse extends Response { 2708 body?: NavigationBarItem[]; 2709 } 2710 interface NavTreeResponse extends Response { 2711 body?: NavigationTree; 2712 } 2713 interface CallHierarchyItem { 2714 name: string; 2715 kind: ScriptElementKind; 2716 kindModifiers?: string; 2717 file: string; 2718 span: TextSpan; 2719 selectionSpan: TextSpan; 2720 containerName?: string; 2721 } 2722 interface CallHierarchyIncomingCall { 2723 from: CallHierarchyItem; 2724 fromSpans: TextSpan[]; 2725 } 2726 interface CallHierarchyOutgoingCall { 2727 to: CallHierarchyItem; 2728 fromSpans: TextSpan[]; 2729 } 2730 interface PrepareCallHierarchyRequest extends FileLocationRequest { 2731 command: CommandTypes.PrepareCallHierarchy; 2732 } 2733 interface PrepareCallHierarchyResponse extends Response { 2734 readonly body: CallHierarchyItem | CallHierarchyItem[]; 2735 } 2736 interface ProvideCallHierarchyIncomingCallsRequest extends FileLocationRequest { 2737 command: CommandTypes.ProvideCallHierarchyIncomingCalls; 2738 } 2739 interface ProvideCallHierarchyIncomingCallsResponse extends Response { 2740 readonly body: CallHierarchyIncomingCall[]; 2741 } 2742 interface ProvideCallHierarchyOutgoingCallsRequest extends FileLocationRequest { 2743 command: CommandTypes.ProvideCallHierarchyOutgoingCalls; 2744 } 2745 interface ProvideCallHierarchyOutgoingCallsResponse extends Response { 2746 readonly body: CallHierarchyOutgoingCall[]; 2747 } 2748 enum IndentStyle { 2749 None = "None", 2750 Block = "Block", 2751 Smart = "Smart" 2752 } 2753 enum SemicolonPreference { 2754 Ignore = "ignore", 2755 Insert = "insert", 2756 Remove = "remove" 2757 } 2758 interface EditorSettings { 2759 baseIndentSize?: number; 2760 indentSize?: number; 2761 tabSize?: number; 2762 newLineCharacter?: string; 2763 convertTabsToSpaces?: boolean; 2764 indentStyle?: IndentStyle | ts.IndentStyle; 2765 trimTrailingWhitespace?: boolean; 2766 } 2767 interface FormatCodeSettings extends EditorSettings { 2768 insertSpaceAfterCommaDelimiter?: boolean; 2769 insertSpaceAfterSemicolonInForStatements?: boolean; 2770 insertSpaceBeforeAndAfterBinaryOperators?: boolean; 2771 insertSpaceAfterConstructor?: boolean; 2772 insertSpaceAfterKeywordsInControlFlowStatements?: boolean; 2773 insertSpaceAfterFunctionKeywordForAnonymousFunctions?: boolean; 2774 insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean; 2775 insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean; 2776 insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean; 2777 insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean; 2778 insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean; 2779 insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean; 2780 insertSpaceAfterTypeAssertion?: boolean; 2781 insertSpaceBeforeFunctionParenthesis?: boolean; 2782 placeOpenBraceOnNewLineForFunctions?: boolean; 2783 placeOpenBraceOnNewLineForControlBlocks?: boolean; 2784 insertSpaceBeforeTypeAnnotation?: boolean; 2785 semicolons?: SemicolonPreference; 2786 } 2787 interface UserPreferences { 2788 readonly disableSuggestions?: boolean; 2789 readonly quotePreference?: "auto" | "double" | "single"; 2790 /** 2791 * If enabled, TypeScript will search through all external modules' exports and add them to the completions list. 2792 * This affects lone identifier completions but not completions on the right hand side of `obj.`. 2793 */ 2794 readonly includeCompletionsForModuleExports?: boolean; 2795 /** 2796 * Enables auto-import-style completions on partially-typed import statements. E.g., allows 2797 * `import write|` to be completed to `import { writeFile } from "fs"`. 2798 */ 2799 readonly includeCompletionsForImportStatements?: boolean; 2800 /** 2801 * Allows completions to be formatted with snippet text, indicated by `CompletionItem["isSnippet"]`. 2802 */ 2803 readonly includeCompletionsWithSnippetText?: boolean; 2804 /** 2805 * If enabled, the completion list will include completions with invalid identifier names. 2806 * For those entries, The `insertText` and `replacementSpan` properties will be set to change from `.x` property access to `["x"]`. 2807 */ 2808 readonly includeCompletionsWithInsertText?: boolean; 2809 /** 2810 * Unless this option is `false`, or `includeCompletionsWithInsertText` is not enabled, 2811 * member completion lists triggered with `.` will include entries on potentially-null and potentially-undefined 2812 * values, with insertion text to replace preceding `.` tokens with `?.`. 2813 */ 2814 readonly includeAutomaticOptionalChainCompletions?: boolean; 2815 /** 2816 * If enabled, completions for class members (e.g. methods and properties) will include 2817 * a whole declaration for the member. 2818 * E.g., `class A { f| }` could be completed to `class A { foo(): number {} }`, instead of 2819 * `class A { foo }`. 2820 */ 2821 readonly includeCompletionsWithClassMemberSnippets?: boolean; 2822 /** 2823 * If enabled, object literal methods will have a method declaration completion entry in addition 2824 * to the regular completion entry containing just the method name. 2825 * E.g., `const objectLiteral: T = { f| }` could be completed to `const objectLiteral: T = { foo(): void {} }`, 2826 * in addition to `const objectLiteral: T = { foo }`. 2827 */ 2828 readonly includeCompletionsWithObjectLiteralMethodSnippets?: boolean; 2829 /** 2830 * Indicates whether {@link CompletionEntry.labelDetails completion entry label details} are supported. 2831 * If not, contents of `labelDetails` may be included in the {@link CompletionEntry.name} property. 2832 */ 2833 readonly useLabelDetailsInCompletionEntries?: boolean; 2834 readonly allowIncompleteCompletions?: boolean; 2835 readonly importModuleSpecifierPreference?: "shortest" | "project-relative" | "relative" | "non-relative"; 2836 /** Determines whether we import `foo/index.ts` as "foo", "foo/index", or "foo/index.js" */ 2837 readonly importModuleSpecifierEnding?: "auto" | "minimal" | "index" | "js"; 2838 readonly allowTextChangesInNewFiles?: boolean; 2839 readonly lazyConfiguredProjectsFromExternalProject?: boolean; 2840 readonly providePrefixAndSuffixTextForRename?: boolean; 2841 readonly provideRefactorNotApplicableReason?: boolean; 2842 readonly allowRenameOfImportPath?: boolean; 2843 readonly includePackageJsonAutoImports?: "auto" | "on" | "off"; 2844 readonly jsxAttributeCompletionStyle?: "auto" | "braces" | "none"; 2845 readonly displayPartsForJSDoc?: boolean; 2846 readonly generateReturnInDocTemplate?: boolean; 2847 readonly includeInlayParameterNameHints?: "none" | "literals" | "all"; 2848 readonly includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean; 2849 readonly includeInlayFunctionParameterTypeHints?: boolean; 2850 readonly includeInlayVariableTypeHints?: boolean; 2851 readonly includeInlayVariableTypeHintsWhenTypeMatchesName?: boolean; 2852 readonly includeInlayPropertyDeclarationTypeHints?: boolean; 2853 readonly includeInlayFunctionLikeReturnTypeHints?: boolean; 2854 readonly includeInlayEnumMemberValueHints?: boolean; 2855 readonly autoImportFileExcludePatterns?: string[]; 2856 /** 2857 * Indicates whether {@link ReferencesResponseItem.lineText} is supported. 2858 */ 2859 readonly disableLineTextInReferences?: boolean; 2860 } 2861 interface CompilerOptions { 2862 allowJs?: boolean; 2863 allowSyntheticDefaultImports?: boolean; 2864 allowUnreachableCode?: boolean; 2865 allowUnusedLabels?: boolean; 2866 alwaysStrict?: boolean; 2867 baseUrl?: string; 2868 charset?: string; 2869 checkJs?: boolean; 2870 declaration?: boolean; 2871 declarationDir?: string; 2872 disableSizeLimit?: boolean; 2873 downlevelIteration?: boolean; 2874 emitBOM?: boolean; 2875 emitDecoratorMetadata?: boolean; 2876 experimentalDecorators?: boolean; 2877 forceConsistentCasingInFileNames?: boolean; 2878 importHelpers?: boolean; 2879 inlineSourceMap?: boolean; 2880 inlineSources?: boolean; 2881 isolatedModules?: boolean; 2882 jsx?: JsxEmit | ts.JsxEmit; 2883 lib?: string[]; 2884 locale?: string; 2885 mapRoot?: string; 2886 maxNodeModuleJsDepth?: number; 2887 module?: ModuleKind | ts.ModuleKind; 2888 moduleResolution?: ModuleResolutionKind | ts.ModuleResolutionKind; 2889 newLine?: NewLineKind | ts.NewLineKind; 2890 noEmit?: boolean; 2891 noEmitHelpers?: boolean; 2892 noEmitOnError?: boolean; 2893 noErrorTruncation?: boolean; 2894 noFallthroughCasesInSwitch?: boolean; 2895 noImplicitAny?: boolean; 2896 noImplicitReturns?: boolean; 2897 noImplicitThis?: boolean; 2898 noUnusedLocals?: boolean; 2899 noUnusedParameters?: boolean; 2900 noImplicitUseStrict?: boolean; 2901 noLib?: boolean; 2902 noResolve?: boolean; 2903 out?: string; 2904 outDir?: string; 2905 outFile?: string; 2906 paths?: MapLike<string[]>; 2907 plugins?: PluginImport[]; 2908 preserveConstEnums?: boolean; 2909 preserveSymlinks?: boolean; 2910 project?: string; 2911 reactNamespace?: string; 2912 removeComments?: boolean; 2913 references?: ProjectReference[]; 2914 rootDir?: string; 2915 rootDirs?: string[]; 2916 skipLibCheck?: boolean; 2917 skipDefaultLibCheck?: boolean; 2918 sourceMap?: boolean; 2919 sourceRoot?: string; 2920 strict?: boolean; 2921 strictNullChecks?: boolean; 2922 suppressExcessPropertyErrors?: boolean; 2923 suppressImplicitAnyIndexErrors?: boolean; 2924 useDefineForClassFields?: boolean; 2925 target?: ScriptTarget | ts.ScriptTarget; 2926 traceResolution?: boolean; 2927 resolveJsonModule?: boolean; 2928 types?: string[]; 2929 /** Paths used to used to compute primary types search locations */ 2930 typeRoots?: string[]; 2931 ets?: EtsOptions; 2932 packageManagerType?: string; 2933 emitNodeModulesFiles?: boolean; 2934 [option: string]: CompilerOptionsValue | undefined; 2935 } 2936 enum JsxEmit { 2937 None = "None", 2938 Preserve = "Preserve", 2939 ReactNative = "ReactNative", 2940 React = "React" 2941 } 2942 enum ModuleKind { 2943 None = "None", 2944 CommonJS = "CommonJS", 2945 AMD = "AMD", 2946 UMD = "UMD", 2947 System = "System", 2948 ES6 = "ES6", 2949 ES2015 = "ES2015", 2950 ESNext = "ESNext" 2951 } 2952 enum ModuleResolutionKind { 2953 Classic = "Classic", 2954 Node = "Node" 2955 } 2956 enum NewLineKind { 2957 Crlf = "Crlf", 2958 Lf = "Lf" 2959 } 2960 enum ScriptTarget { 2961 ES3 = "ES3", 2962 ES5 = "ES5", 2963 ES6 = "ES6", 2964 ES2015 = "ES2015", 2965 ES2016 = "ES2016", 2966 ES2017 = "ES2017", 2967 ES2018 = "ES2018", 2968 ES2019 = "ES2019", 2969 ES2020 = "ES2020", 2970 ES2021 = "ES2021", 2971 ES2022 = "ES2022", 2972 ESNext = "ESNext" 2973 } 2974 enum ClassificationType { 2975 comment = 1, 2976 identifier = 2, 2977 keyword = 3, 2978 numericLiteral = 4, 2979 operator = 5, 2980 stringLiteral = 6, 2981 regularExpressionLiteral = 7, 2982 whiteSpace = 8, 2983 text = 9, 2984 punctuation = 10, 2985 className = 11, 2986 enumName = 12, 2987 interfaceName = 13, 2988 moduleName = 14, 2989 typeParameterName = 15, 2990 typeAliasName = 16, 2991 parameterName = 17, 2992 docCommentTagName = 18, 2993 jsxOpenTagName = 19, 2994 jsxCloseTagName = 20, 2995 jsxSelfClosingTagName = 21, 2996 jsxAttribute = 22, 2997 jsxText = 23, 2998 jsxAttributeStringLiteralValue = 24, 2999 bigintLiteral = 25 3000 } 3001 } 3002 interface CompressedData { 3003 length: number; 3004 compressionKind: string; 3005 data: any; 3006 } 3007 type ModuleImportResult = { 3008 module: {}; 3009 error: undefined; 3010 } | { 3011 module: undefined; 3012 error: { 3013 stack?: string; 3014 message?: string; 3015 }; 3016 }; 3017 /** @deprecated Use {@link ModuleImportResult} instead. */ 3018 type RequireResult = ModuleImportResult; 3019 interface ServerHost extends System { 3020 watchFile(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher; 3021 watchDirectory(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher; 3022 setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): any; 3023 clearTimeout(timeoutId: any): void; 3024 setImmediate(callback: (...args: any[]) => void, ...args: any[]): any; 3025 clearImmediate(timeoutId: any): void; 3026 gc?(): void; 3027 trace?(s: string): void; 3028 require?(initialPath: string, moduleName: string): ModuleImportResult; 3029 getJsDocNodeCheckedConfig?(fileCheckedInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig; 3030 getJsDocNodeConditionCheckedResult?(fileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult; 3031 getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo; 3032 } 3033 function createInstallTypingsRequest(project: Project, typeAcquisition: TypeAcquisition, unresolvedImports: SortedReadonlyArray<string>, cachePath?: string): DiscoverTypings; 3034 function toNormalizedPath(fileName: string): NormalizedPath; 3035 function normalizedPathToPath(normalizedPath: NormalizedPath, currentDirectory: string, getCanonicalFileName: (f: string) => string): Path; 3036 function asNormalizedPath(fileName: string): NormalizedPath; 3037 function createNormalizedPathMap<T>(): NormalizedPathMap<T>; 3038 function isInferredProjectName(name: string): boolean; 3039 function makeInferredProjectName(counter: number): string; 3040 function createSortedArray<T>(): SortedArray<T>; 3041 enum LogLevel { 3042 terse = 0, 3043 normal = 1, 3044 requestTime = 2, 3045 verbose = 3 3046 } 3047 const emptyArray: SortedReadonlyArray<never>; 3048 interface Logger { 3049 close(): void; 3050 hasLevel(level: LogLevel): boolean; 3051 loggingEnabled(): boolean; 3052 perftrc(s: string): void; 3053 info(s: string): void; 3054 startGroup(): void; 3055 endGroup(): void; 3056 msg(s: string, type?: Msg): void; 3057 getLogFileName(): string | undefined; 3058 } 3059 enum Msg { 3060 Err = "Err", 3061 Info = "Info", 3062 Perf = "Perf" 3063 } 3064 namespace Msg { 3065 /** @deprecated Only here for backwards-compatibility. Prefer just `Msg`. */ 3066 type Types = Msg; 3067 } 3068 namespace Errors { 3069 function ThrowNoProject(): never; 3070 function ThrowProjectLanguageServiceDisabled(): never; 3071 function ThrowProjectDoesNotContainDocument(fileName: string, project: Project): never; 3072 } 3073 type NormalizedPath = string & { 3074 __normalizedPathTag: any; 3075 }; 3076 interface NormalizedPathMap<T> { 3077 get(path: NormalizedPath): T | undefined; 3078 set(path: NormalizedPath, value: T): void; 3079 contains(path: NormalizedPath): boolean; 3080 remove(path: NormalizedPath): void; 3081 } 3082 function isDynamicFileName(fileName: NormalizedPath): boolean; 3083 interface ScriptInfoVersion { 3084 svc: number; 3085 text: number; 3086 } 3087 class ScriptInfo { 3088 private readonly host; 3089 readonly fileName: NormalizedPath; 3090 readonly scriptKind: ScriptKind; 3091 readonly hasMixedContent: boolean; 3092 readonly path: Path; 3093 /** 3094 * All projects that include this file 3095 */ 3096 readonly containingProjects: Project[]; 3097 private formatSettings; 3098 private preferences; 3099 private textStorage; 3100 constructor(host: ServerHost, fileName: NormalizedPath, scriptKind: ScriptKind, hasMixedContent: boolean, path: Path, initialVersion?: ScriptInfoVersion); 3101 isScriptOpen(): boolean; 3102 open(newText: string): void; 3103 close(fileExists?: boolean): void; 3104 getSnapshot(): IScriptSnapshot; 3105 private ensureRealPath; 3106 getFormatCodeSettings(): FormatCodeSettings | undefined; 3107 getPreferences(): protocol.UserPreferences | undefined; 3108 attachToProject(project: Project): boolean; 3109 isAttached(project: Project): boolean; 3110 detachFromProject(project: Project): void; 3111 detachAllProjects(): void; 3112 getDefaultProject(): Project; 3113 registerFileUpdate(): void; 3114 setOptions(formatSettings: FormatCodeSettings, preferences: protocol.UserPreferences | undefined): void; 3115 getLatestVersion(): string; 3116 saveTo(fileName: string): void; 3117 reloadFromFile(tempFileName?: NormalizedPath): boolean; 3118 editContent(start: number, end: number, newText: string): void; 3119 markContainingProjectsAsDirty(): void; 3120 isOrphan(): boolean; 3121 /** 3122 * @param line 1 based index 3123 */ 3124 lineToTextSpan(line: number): TextSpan; 3125 /** 3126 * @param line 1 based index 3127 * @param offset 1 based index 3128 */ 3129 lineOffsetToPosition(line: number, offset: number): number; 3130 positionToLineOffset(position: number): protocol.Location; 3131 isJavaScript(): boolean; 3132 } 3133 interface InstallPackageOptionsWithProject extends InstallPackageOptions { 3134 projectName: string; 3135 projectRootPath: Path; 3136 } 3137 interface ITypingsInstaller { 3138 isKnownTypesPackageName(name: string): boolean; 3139 installPackage(options: InstallPackageOptionsWithProject): Promise<ApplyCodeActionCommandResult>; 3140 enqueueInstallTypingsRequest(p: Project, typeAcquisition: TypeAcquisition, unresolvedImports: SortedReadonlyArray<string> | undefined): void; 3141 attach(projectService: ProjectService): void; 3142 onProjectClosed(p: Project): void; 3143 readonly globalTypingsCacheLocation: string | undefined; 3144 } 3145 const nullTypingsInstaller: ITypingsInstaller; 3146 function allRootFilesAreJsOrDts(project: Project): boolean; 3147 function allFilesAreJsOrDts(project: Project): boolean; 3148 enum ProjectKind { 3149 Inferred = 0, 3150 Configured = 1, 3151 External = 2, 3152 AutoImportProvider = 3, 3153 Auxiliary = 4 3154 } 3155 interface PluginCreateInfo { 3156 project: Project; 3157 languageService: LanguageService; 3158 languageServiceHost: LanguageServiceHost; 3159 serverHost: ServerHost; 3160 session?: Session<unknown>; 3161 config: any; 3162 } 3163 interface PluginModule { 3164 create(createInfo: PluginCreateInfo): LanguageService; 3165 getExternalFiles?(proj: Project): string[]; 3166 onConfigurationChanged?(config: any): void; 3167 } 3168 interface PluginModuleWithName { 3169 name: string; 3170 module: PluginModule; 3171 } 3172 type PluginModuleFactory = (mod: { 3173 typescript: typeof ts; 3174 }) => PluginModule; 3175 abstract class Project implements LanguageServiceHost, ModuleResolutionHost { 3176 readonly projectKind: ProjectKind; 3177 readonly projectService: ProjectService; 3178 private documentRegistry; 3179 private compilerOptions; 3180 compileOnSaveEnabled: boolean; 3181 protected watchOptions: WatchOptions | undefined; 3182 private rootFiles; 3183 private rootFilesMap; 3184 private program; 3185 private externalFiles; 3186 private missingFilesMap; 3187 private generatedFilesMap; 3188 protected languageService: LanguageService; 3189 languageServiceEnabled: boolean; 3190 readonly trace?: (s: string) => void; 3191 readonly realpath?: (path: string) => string; 3192 private builderState; 3193 /** 3194 * Set of files names that were updated since the last call to getChangesSinceVersion. 3195 */ 3196 private updatedFileNames; 3197 /** 3198 * Set of files that was returned from the last call to getChangesSinceVersion. 3199 */ 3200 private lastReportedFileNames; 3201 /** 3202 * Last version that was reported. 3203 */ 3204 private lastReportedVersion; 3205 /** 3206 * Current project's program version. (incremented everytime new program is created that is not complete reuse from the old one) 3207 * This property is changed in 'updateGraph' based on the set of files in program 3208 */ 3209 private projectProgramVersion; 3210 /** 3211 * Current version of the project state. It is changed when: 3212 * - new root file was added/removed 3213 * - edit happen in some file that is currently included in the project. 3214 * This property is different from projectStructureVersion since in most cases edits don't affect set of files in the project 3215 */ 3216 private projectStateVersion; 3217 protected projectErrors: Diagnostic[] | undefined; 3218 protected isInitialLoadPending: () => boolean; 3219 private readonly cancellationToken; 3220 isNonTsProject(): boolean; 3221 isJsOnlyProject(): boolean; 3222 static resolveModule(moduleName: string, initialDir: string, host: ServerHost, log: (message: string) => void, logErrors?: (message: string) => void): {} | undefined; 3223 getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo; 3224 getJsDocNodeCheckedConfig(jsDocFileCheckedInfo: FileCheckModuleInfo, sourceFilePath: string): JsDocNodeCheckConfig; 3225 getJsDocNodeConditionCheckedResult(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult; 3226 getTagNameNeededCheckByFile(filePath: string): TagCheckParam; 3227 getExpressionCheckedResultsByFile?(filePath: string, jsDocs: JSDoc[]): ConditionCheckResult; 3228 isKnownTypesPackageName(name: string): boolean; 3229 installPackage(options: InstallPackageOptions): Promise<ApplyCodeActionCommandResult>; 3230 private get typingsCache(); 3231 getCompilationSettings(): ts.CompilerOptions; 3232 getCompilerOptions(): ts.CompilerOptions; 3233 getNewLine(): string; 3234 getProjectVersion(): string; 3235 getProjectReferences(): readonly ProjectReference[] | undefined; 3236 getScriptFileNames(): string[]; 3237 private getOrCreateScriptInfoAndAttachToProject; 3238 getScriptKind(fileName: string): ts.ScriptKind; 3239 getScriptVersion(filename: string): string; 3240 getScriptSnapshot(filename: string): IScriptSnapshot | undefined; 3241 getCancellationToken(): HostCancellationToken; 3242 getCurrentDirectory(): string; 3243 getDefaultLibFileName(): string; 3244 useCaseSensitiveFileNames(): boolean; 3245 readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[]; 3246 readFile(fileName: string): string | undefined; 3247 writeFile(fileName: string, content: string): void; 3248 fileExists(file: string): boolean; 3249 resolveModuleNames(moduleNames: string[], containingFile: string, reusedNames?: string[], redirectedReference?: ResolvedProjectReference, _options?: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModuleFull | undefined)[]; 3250 getModuleResolutionCache(): ModuleResolutionCache | undefined; 3251 getResolvedModuleWithFailedLookupLocationsFromCache(moduleName: string, containingFile: string, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined; 3252 resolveTypeReferenceDirectives(typeDirectiveNames: string[] | FileReference[], containingFile: string, redirectedReference?: ResolvedProjectReference, _options?: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[]; 3253 directoryExists(path: string): boolean; 3254 getDirectories(path: string): string[]; 3255 log(s: string): void; 3256 error(s: string): void; 3257 private setInternalCompilerOptionsForEmittingJsFiles; 3258 /** 3259 * Get the errors that dont have any file name associated 3260 */ 3261 getGlobalProjectErrors(): readonly Diagnostic[]; 3262 /** 3263 * Get all the project errors 3264 */ 3265 getAllProjectErrors(): readonly Diagnostic[]; 3266 setProjectErrors(projectErrors: Diagnostic[] | undefined): void; 3267 getLanguageService(ensureSynchronized?: boolean): LanguageService; 3268 getCompileOnSaveAffectedFileList(scriptInfo: ScriptInfo): string[]; 3269 /** 3270 * Returns true if emit was conducted 3271 */ 3272 emitFile(scriptInfo: ScriptInfo, writeFile: (path: string, data: string, writeByteOrderMark?: boolean) => void): EmitResult; 3273 enableLanguageService(): void; 3274 disableLanguageService(lastFileExceededProgramSize?: string): void; 3275 getProjectName(): string; 3276 protected removeLocalTypingsFromTypeAcquisition(newTypeAcquisition: TypeAcquisition): TypeAcquisition; 3277 getExternalFiles(): SortedReadonlyArray<string>; 3278 getSourceFile(path: Path): ts.SourceFile | undefined; 3279 close(): void; 3280 private detachScriptInfoIfNotRoot; 3281 isClosed(): boolean; 3282 hasRoots(): boolean; 3283 getRootFiles(): ts.server.NormalizedPath[]; 3284 getRootScriptInfos(): ts.server.ScriptInfo[]; 3285 getScriptInfos(): ScriptInfo[]; 3286 getExcludedFiles(): readonly NormalizedPath[]; 3287 getFileNames(excludeFilesFromExternalLibraries?: boolean, excludeConfigFiles?: boolean): ts.server.NormalizedPath[]; 3288 hasConfigFile(configFilePath: NormalizedPath): boolean; 3289 containsScriptInfo(info: ScriptInfo): boolean; 3290 containsFile(filename: NormalizedPath, requireOpen?: boolean): boolean; 3291 isRoot(info: ScriptInfo): boolean; 3292 addRoot(info: ScriptInfo, fileName?: NormalizedPath): void; 3293 addMissingFileRoot(fileName: NormalizedPath): void; 3294 removeFile(info: ScriptInfo, fileExists: boolean, detachFromProject: boolean): void; 3295 registerFileUpdate(fileName: string): void; 3296 markAsDirty(): void; 3297 /** 3298 * Updates set of files that contribute to this project 3299 * @returns: true if set of files in the project stays the same and false - otherwise. 3300 */ 3301 updateGraph(): boolean; 3302 protected removeExistingTypings(include: string[]): string[]; 3303 private updateGraphWorker; 3304 private detachScriptInfoFromProject; 3305 private addMissingFileWatcher; 3306 private isWatchedMissingFile; 3307 private createGeneratedFileWatcher; 3308 private isValidGeneratedFileWatcher; 3309 private clearGeneratedFileWatch; 3310 getScriptInfoForNormalizedPath(fileName: NormalizedPath): ScriptInfo | undefined; 3311 getScriptInfo(uncheckedFileName: string): ts.server.ScriptInfo | undefined; 3312 filesToString(writeProjectFileNames: boolean): string; 3313 setCompilerOptions(compilerOptions: CompilerOptions): void; 3314 setTypeAcquisition(newTypeAcquisition: TypeAcquisition | undefined): void; 3315 getTypeAcquisition(): ts.TypeAcquisition; 3316 protected removeRoot(info: ScriptInfo): void; 3317 protected enableGlobalPlugins(options: CompilerOptions, pluginConfigOverrides: Map<any> | undefined): void; 3318 protected enablePlugin(pluginConfigEntry: PluginImport, searchPaths: string[], pluginConfigOverrides: Map<any> | undefined): void; 3319 private enableProxy; 3320 /** Starts a new check for diagnostics. Call this if some file has updated that would cause diagnostics to be changed. */ 3321 refreshDiagnostics(): void; 3322 } 3323 /** 3324 * If a file is opened and no tsconfig (or jsconfig) is found, 3325 * the file and its imports/references are put into an InferredProject. 3326 */ 3327 class InferredProject extends Project { 3328 private _isJsInferredProject; 3329 toggleJsInferredProject(isJsInferredProject: boolean): void; 3330 setCompilerOptions(options?: CompilerOptions): void; 3331 /** this is canonical project root path */ 3332 readonly projectRootPath: string | undefined; 3333 addRoot(info: ScriptInfo): void; 3334 removeRoot(info: ScriptInfo): void; 3335 isProjectWithSingleRoot(): boolean; 3336 close(): void; 3337 getTypeAcquisition(): TypeAcquisition; 3338 } 3339 class AutoImportProviderProject extends Project { 3340 private hostProject; 3341 private rootFileNames; 3342 isOrphan(): boolean; 3343 updateGraph(): boolean; 3344 hasRoots(): boolean; 3345 markAsDirty(): void; 3346 getScriptFileNames(): string[]; 3347 getLanguageService(): never; 3348 getModuleResolutionHostForAutoImportProvider(): never; 3349 getProjectReferences(): readonly ts.ProjectReference[] | undefined; 3350 getTypeAcquisition(): TypeAcquisition; 3351 } 3352 /** 3353 * If a file is opened, the server will look for a tsconfig (or jsconfig) 3354 * and if successful create a ConfiguredProject for it. 3355 * Otherwise it will create an InferredProject. 3356 */ 3357 class ConfiguredProject extends Project { 3358 readonly canonicalConfigFilePath: NormalizedPath; 3359 /** Ref count to the project when opened from external project */ 3360 private externalProjectRefCount; 3361 private projectReferences; 3362 /** 3363 * If the project has reload from disk pending, it reloads (and then updates graph as part of that) instead of just updating the graph 3364 * @returns: true if set of files in the project stays the same and false - otherwise. 3365 */ 3366 updateGraph(): boolean; 3367 getConfigFilePath(): ts.server.NormalizedPath; 3368 getProjectReferences(): readonly ProjectReference[] | undefined; 3369 updateReferences(refs: readonly ProjectReference[] | undefined): void; 3370 /** 3371 * Get the errors that dont have any file name associated 3372 */ 3373 getGlobalProjectErrors(): readonly Diagnostic[]; 3374 /** 3375 * Get all the project errors 3376 */ 3377 getAllProjectErrors(): readonly Diagnostic[]; 3378 setProjectErrors(projectErrors: Diagnostic[]): void; 3379 close(): void; 3380 getEffectiveTypeRoots(): string[]; 3381 } 3382 /** 3383 * Project whose configuration is handled externally, such as in a '.csproj'. 3384 * These are created only if a host explicitly calls `openExternalProject`. 3385 */ 3386 class ExternalProject extends Project { 3387 externalProjectName: string; 3388 compileOnSaveEnabled: boolean; 3389 excludedFiles: readonly NormalizedPath[]; 3390 updateGraph(): boolean; 3391 getExcludedFiles(): readonly ts.server.NormalizedPath[]; 3392 } 3393 function convertFormatOptions(protocolOptions: protocol.FormatCodeSettings): FormatCodeSettings; 3394 function convertCompilerOptions(protocolOptions: protocol.ExternalProjectCompilerOptions): CompilerOptions & protocol.CompileOnSaveMixin; 3395 function convertWatchOptions(protocolOptions: protocol.ExternalProjectCompilerOptions, currentDirectory?: string): WatchOptionsAndErrors | undefined; 3396 function convertTypeAcquisition(protocolOptions: protocol.InferredProjectCompilerOptions): TypeAcquisition | undefined; 3397 function tryConvertScriptKindName(scriptKindName: protocol.ScriptKindName | ScriptKind): ScriptKind; 3398 function convertScriptKindName(scriptKindName: protocol.ScriptKindName): ScriptKind.Unknown | ScriptKind.JS | ScriptKind.JSX | ScriptKind.TS | ScriptKind.TSX | ScriptKind.ETS; 3399 const maxProgramSizeForNonTsFiles: number; 3400 const ProjectsUpdatedInBackgroundEvent = "projectsUpdatedInBackground"; 3401 interface ProjectsUpdatedInBackgroundEvent { 3402 eventName: typeof ProjectsUpdatedInBackgroundEvent; 3403 data: { 3404 openFiles: string[]; 3405 }; 3406 } 3407 const ProjectLoadingStartEvent = "projectLoadingStart"; 3408 interface ProjectLoadingStartEvent { 3409 eventName: typeof ProjectLoadingStartEvent; 3410 data: { 3411 project: Project; 3412 reason: string; 3413 }; 3414 } 3415 const ProjectLoadingFinishEvent = "projectLoadingFinish"; 3416 interface ProjectLoadingFinishEvent { 3417 eventName: typeof ProjectLoadingFinishEvent; 3418 data: { 3419 project: Project; 3420 }; 3421 } 3422 const LargeFileReferencedEvent = "largeFileReferenced"; 3423 interface LargeFileReferencedEvent { 3424 eventName: typeof LargeFileReferencedEvent; 3425 data: { 3426 file: string; 3427 fileSize: number; 3428 maxFileSize: number; 3429 }; 3430 } 3431 const ConfigFileDiagEvent = "configFileDiag"; 3432 interface ConfigFileDiagEvent { 3433 eventName: typeof ConfigFileDiagEvent; 3434 data: { 3435 triggerFile: string; 3436 configFileName: string; 3437 diagnostics: readonly Diagnostic[]; 3438 }; 3439 } 3440 const ProjectLanguageServiceStateEvent = "projectLanguageServiceState"; 3441 interface ProjectLanguageServiceStateEvent { 3442 eventName: typeof ProjectLanguageServiceStateEvent; 3443 data: { 3444 project: Project; 3445 languageServiceEnabled: boolean; 3446 }; 3447 } 3448 const ProjectInfoTelemetryEvent = "projectInfo"; 3449 /** This will be converted to the payload of a protocol.TelemetryEvent in session.defaultEventHandler. */ 3450 interface ProjectInfoTelemetryEvent { 3451 readonly eventName: typeof ProjectInfoTelemetryEvent; 3452 readonly data: ProjectInfoTelemetryEventData; 3453 } 3454 const OpenFileInfoTelemetryEvent = "openFileInfo"; 3455 /** 3456 * Info that we may send about a file that was just opened. 3457 * Info about a file will only be sent once per session, even if the file changes in ways that might affect the info. 3458 * Currently this is only sent for '.js' files. 3459 */ 3460 interface OpenFileInfoTelemetryEvent { 3461 readonly eventName: typeof OpenFileInfoTelemetryEvent; 3462 readonly data: OpenFileInfoTelemetryEventData; 3463 } 3464 interface ProjectInfoTelemetryEventData { 3465 /** Cryptographically secure hash of project file location. */ 3466 readonly projectId: string; 3467 /** Count of file extensions seen in the project. */ 3468 readonly fileStats: FileStats; 3469 /** 3470 * Any compiler options that might contain paths will be taken out. 3471 * Enum compiler options will be converted to strings. 3472 */ 3473 readonly compilerOptions: CompilerOptions; 3474 readonly extends: boolean | undefined; 3475 readonly files: boolean | undefined; 3476 readonly include: boolean | undefined; 3477 readonly exclude: boolean | undefined; 3478 readonly compileOnSave: boolean; 3479 readonly typeAcquisition: ProjectInfoTypeAcquisitionData; 3480 readonly configFileName: "tsconfig.json" | "jsconfig.json" | "other"; 3481 readonly projectType: "external" | "configured"; 3482 readonly languageServiceEnabled: boolean; 3483 /** TypeScript version used by the server. */ 3484 readonly version: string; 3485 } 3486 interface OpenFileInfoTelemetryEventData { 3487 readonly info: OpenFileInfo; 3488 } 3489 interface ProjectInfoTypeAcquisitionData { 3490 readonly enable: boolean | undefined; 3491 readonly include: boolean; 3492 readonly exclude: boolean; 3493 } 3494 interface FileStats { 3495 readonly js: number; 3496 readonly jsSize?: number; 3497 readonly jsx: number; 3498 readonly jsxSize?: number; 3499 readonly ts: number; 3500 readonly tsSize?: number; 3501 readonly tsx: number; 3502 readonly tsxSize?: number; 3503 readonly dts: number; 3504 readonly dtsSize?: number; 3505 readonly deferred: number; 3506 readonly deferredSize?: number; 3507 readonly ets: number; 3508 readonly etsSize?: number; 3509 readonly dets: number; 3510 readonly detsSize?: number; 3511 } 3512 interface OpenFileInfo { 3513 readonly checkJs: boolean; 3514 } 3515 type ProjectServiceEvent = LargeFileReferencedEvent | ProjectsUpdatedInBackgroundEvent | ProjectLoadingStartEvent | ProjectLoadingFinishEvent | ConfigFileDiagEvent | ProjectLanguageServiceStateEvent | ProjectInfoTelemetryEvent | OpenFileInfoTelemetryEvent; 3516 type ProjectServiceEventHandler = (event: ProjectServiceEvent) => void; 3517 interface SafeList { 3518 [name: string]: { 3519 match: RegExp; 3520 exclude?: (string | number)[][]; 3521 types?: string[]; 3522 }; 3523 } 3524 interface TypesMapFile { 3525 typesMap: SafeList; 3526 simpleMap: { 3527 [libName: string]: string; 3528 }; 3529 } 3530 interface HostConfiguration { 3531 formatCodeOptions: FormatCodeSettings; 3532 preferences: protocol.UserPreferences; 3533 hostInfo: string; 3534 extraFileExtensions?: FileExtensionInfo[]; 3535 watchOptions?: WatchOptions; 3536 } 3537 interface OpenConfiguredProjectResult { 3538 configFileName?: NormalizedPath; 3539 configFileErrors?: readonly Diagnostic[]; 3540 } 3541 interface ProjectServiceOptions { 3542 host: ServerHost; 3543 logger: Logger; 3544 cancellationToken: HostCancellationToken; 3545 useSingleInferredProject: boolean; 3546 useInferredProjectPerProjectRoot: boolean; 3547 typingsInstaller: ITypingsInstaller; 3548 eventHandler?: ProjectServiceEventHandler; 3549 suppressDiagnosticEvents?: boolean; 3550 throttleWaitMilliseconds?: number; 3551 globalPlugins?: readonly string[]; 3552 pluginProbeLocations?: readonly string[]; 3553 allowLocalPluginLoads?: boolean; 3554 typesMapLocation?: string; 3555 /** @deprecated use serverMode instead */ 3556 syntaxOnly?: boolean; 3557 serverMode?: LanguageServiceMode; 3558 session: Session<unknown> | undefined; 3559 } 3560 interface WatchOptionsAndErrors { 3561 watchOptions: WatchOptions; 3562 errors: Diagnostic[] | undefined; 3563 } 3564 class ProjectService { 3565 private readonly nodeModulesWatchers; 3566 /** 3567 * Contains all the deleted script info's version information so that 3568 * it does not reset when creating script info again 3569 * (and could have potentially collided with version where contents mismatch) 3570 */ 3571 private readonly filenameToScriptInfoVersion; 3572 private readonly allJsFilesForOpenFileTelemetry; 3573 /** 3574 * maps external project file name to list of config files that were the part of this project 3575 */ 3576 private readonly externalProjectToConfiguredProjectMap; 3577 /** 3578 * external projects (configuration and list of root files is not controlled by tsserver) 3579 */ 3580 readonly externalProjects: ExternalProject[]; 3581 /** 3582 * projects built from openFileRoots 3583 */ 3584 readonly inferredProjects: InferredProject[]; 3585 /** 3586 * projects specified by a tsconfig.json file 3587 */ 3588 readonly configuredProjects: Map<ConfiguredProject>; 3589 /** 3590 * Open files: with value being project root path, and key being Path of the file that is open 3591 */ 3592 readonly openFiles: Map<NormalizedPath | undefined>; 3593 /** 3594 * Map of open files that are opened without complete path but have projectRoot as current directory 3595 */ 3596 private readonly openFilesWithNonRootedDiskPath; 3597 private compilerOptionsForInferredProjects; 3598 private compilerOptionsForInferredProjectsPerProjectRoot; 3599 private watchOptionsForInferredProjects; 3600 private watchOptionsForInferredProjectsPerProjectRoot; 3601 private typeAcquisitionForInferredProjects; 3602 private typeAcquisitionForInferredProjectsPerProjectRoot; 3603 /** 3604 * Project size for configured or external projects 3605 */ 3606 private readonly projectToSizeMap; 3607 private readonly hostConfiguration; 3608 private safelist; 3609 private readonly legacySafelist; 3610 private pendingProjectUpdates; 3611 readonly currentDirectory: NormalizedPath; 3612 readonly toCanonicalFileName: (f: string) => string; 3613 readonly host: ServerHost; 3614 readonly logger: Logger; 3615 readonly cancellationToken: HostCancellationToken; 3616 readonly useSingleInferredProject: boolean; 3617 readonly useInferredProjectPerProjectRoot: boolean; 3618 readonly typingsInstaller: ITypingsInstaller; 3619 private readonly globalCacheLocationDirectoryPath; 3620 readonly throttleWaitMilliseconds?: number; 3621 private readonly eventHandler?; 3622 private readonly suppressDiagnosticEvents?; 3623 readonly globalPlugins: readonly string[]; 3624 readonly pluginProbeLocations: readonly string[]; 3625 readonly allowLocalPluginLoads: boolean; 3626 private currentPluginConfigOverrides; 3627 readonly typesMapLocation: string | undefined; 3628 /** @deprecated use serverMode instead */ 3629 readonly syntaxOnly: boolean; 3630 readonly serverMode: LanguageServiceMode; 3631 /** Tracks projects that we have already sent telemetry for. */ 3632 private readonly seenProjects; 3633 private performanceEventHandler?; 3634 private pendingPluginEnablements?; 3635 private currentPluginEnablementPromise?; 3636 constructor(opts: ProjectServiceOptions); 3637 toPath(fileName: string): Path; 3638 private loadTypesMap; 3639 updateTypingsForProject(response: SetTypings | InvalidateCachedTypings | PackageInstalledResponse): void; 3640 private delayUpdateProjectGraph; 3641 private delayUpdateProjectGraphs; 3642 setCompilerOptionsForInferredProjects(projectCompilerOptions: protocol.InferredProjectCompilerOptions, projectRootPath?: string): void; 3643 findProject(projectName: string): Project | undefined; 3644 getDefaultProjectForFile(fileName: NormalizedPath, ensureProject: boolean): Project | undefined; 3645 private doEnsureDefaultProjectForFile; 3646 getScriptInfoEnsuringProjectsUptoDate(uncheckedFileName: string): ScriptInfo | undefined; 3647 /** 3648 * Ensures the project structures are upto date 3649 * This means, 3650 * - we go through all the projects and update them if they are dirty 3651 * - if updates reflect some change in structure or there was pending request to ensure projects for open files 3652 * ensure that each open script info has project 3653 */ 3654 private ensureProjectStructuresUptoDate; 3655 getFormatCodeOptions(file: NormalizedPath): FormatCodeSettings; 3656 getPreferences(file: NormalizedPath): protocol.UserPreferences; 3657 getHostFormatCodeOptions(): FormatCodeSettings; 3658 getHostPreferences(): protocol.UserPreferences; 3659 private onSourceFileChanged; 3660 private handleSourceMapProjects; 3661 private delayUpdateSourceInfoProjects; 3662 private delayUpdateProjectsOfScriptInfoPath; 3663 private handleDeletedFile; 3664 private removeProject; 3665 private assignOrphanScriptInfosToInferredProject; 3666 /** 3667 * Remove this file from the set of open, non-configured files. 3668 * @param info The file that has been closed or newly configured 3669 */ 3670 private closeOpenFile; 3671 private deleteScriptInfo; 3672 private configFileExists; 3673 /** 3674 * Returns true if the configFileExistenceInfo is needed/impacted by open files that are root of inferred project 3675 */ 3676 private configFileExistenceImpactsRootOfInferredProject; 3677 /** 3678 * This is called on file close, so that we stop watching the config file for this script info 3679 */ 3680 private stopWatchingConfigFilesForClosedScriptInfo; 3681 /** 3682 * This function tries to search for a tsconfig.json for the given file. 3683 * This is different from the method the compiler uses because 3684 * the compiler can assume it will always start searching in the 3685 * current directory (the directory in which tsc was invoked). 3686 * The server must start searching from the directory containing 3687 * the newly opened file. 3688 */ 3689 private forEachConfigFileLocation; 3690 /** 3691 * This function tries to search for a tsconfig.json for the given file. 3692 * This is different from the method the compiler uses because 3693 * the compiler can assume it will always start searching in the 3694 * current directory (the directory in which tsc was invoked). 3695 * The server must start searching from the directory containing 3696 * the newly opened file. 3697 * If script info is passed in, it is asserted to be open script info 3698 * otherwise just file name 3699 */ 3700 private getConfigFileNameForFile; 3701 private printProjects; 3702 private getConfiguredProjectByCanonicalConfigFilePath; 3703 private findExternalProjectByProjectName; 3704 /** Get a filename if the language service exceeds the maximum allowed program size; otherwise returns undefined. */ 3705 private getFilenameForExceededTotalSizeLimitForNonTsFiles; 3706 private createExternalProject; 3707 private addFilesToNonInferredProject; 3708 private updateNonInferredProjectFiles; 3709 private updateRootAndOptionsOfNonInferredProject; 3710 private sendConfigFileDiagEvent; 3711 private getOrCreateInferredProjectForProjectRootPathIfEnabled; 3712 private getOrCreateSingleInferredProjectIfEnabled; 3713 private getOrCreateSingleInferredWithoutProjectRoot; 3714 private createInferredProject; 3715 getScriptInfo(uncheckedFileName: string): ScriptInfo | undefined; 3716 private watchClosedScriptInfo; 3717 private createNodeModulesWatcher; 3718 private watchClosedScriptInfoInNodeModules; 3719 private getModifiedTime; 3720 private refreshScriptInfo; 3721 private refreshScriptInfosInDirectory; 3722 private stopWatchingScriptInfo; 3723 private getOrCreateScriptInfoNotOpenedByClientForNormalizedPath; 3724 private getOrCreateScriptInfoOpenedByClientForNormalizedPath; 3725 getOrCreateScriptInfoForNormalizedPath(fileName: NormalizedPath, openedByClient: boolean, fileContent?: string, scriptKind?: ScriptKind, hasMixedContent?: boolean, hostToQueryFileExistsOn?: { 3726 fileExists(path: string): boolean; 3727 }): ScriptInfo | undefined; 3728 private getOrCreateScriptInfoWorker; 3729 /** 3730 * This gets the script info for the normalized path. If the path is not rooted disk path then the open script info with project root context is preferred 3731 */ 3732 getScriptInfoForNormalizedPath(fileName: NormalizedPath): ScriptInfo | undefined; 3733 getScriptInfoForPath(fileName: Path): ScriptInfo | undefined; 3734 private addSourceInfoToSourceMap; 3735 private addMissingSourceMapFile; 3736 setHostConfiguration(args: protocol.ConfigureRequestArguments): void; 3737 closeLog(): void; 3738 /** 3739 * This function rebuilds the project for every file opened by the client 3740 * This does not reload contents of open files from disk. But we could do that if needed 3741 */ 3742 reloadProjects(): void; 3743 /** 3744 * This function goes through all the openFiles and tries to file the config file for them. 3745 * If the config file is found and it refers to existing project, it reloads it either immediately 3746 * or schedules it for reload depending on delayReload option 3747 * If there is no existing project it just opens the configured project for the config file 3748 * reloadForInfo provides a way to filter out files to reload configured project for 3749 */ 3750 private reloadConfiguredProjectForFiles; 3751 /** 3752 * Remove the root of inferred project if script info is part of another project 3753 */ 3754 private removeRootOfInferredProjectIfNowPartOfOtherProject; 3755 /** 3756 * This function is to update the project structure for every inferred project. 3757 * It is called on the premise that all the configured projects are 3758 * up to date. 3759 * This will go through open files and assign them to inferred project if open file is not part of any other project 3760 * After that all the inferred project graphs are updated 3761 */ 3762 private ensureProjectForOpenFiles; 3763 /** 3764 * Open file whose contents is managed by the client 3765 * @param filename is absolute pathname 3766 * @param fileContent is a known version of the file content that is more up to date than the one on disk 3767 */ 3768 openClientFile(fileName: string, fileContent?: string, scriptKind?: ScriptKind, projectRootPath?: string): OpenConfiguredProjectResult; 3769 private findExternalProjectContainingOpenScriptInfo; 3770 private getOrCreateOpenScriptInfo; 3771 private assignProjectToOpenedScriptInfo; 3772 private createAncestorProjects; 3773 private ensureProjectChildren; 3774 private cleanupAfterOpeningFile; 3775 openClientFileWithNormalizedPath(fileName: NormalizedPath, fileContent?: string, scriptKind?: ScriptKind, hasMixedContent?: boolean, projectRootPath?: NormalizedPath): OpenConfiguredProjectResult; 3776 private removeOrphanConfiguredProjects; 3777 private removeOrphanScriptInfos; 3778 private telemetryOnOpenFile; 3779 /** 3780 * Close file whose contents is managed by the client 3781 * @param filename is absolute pathname 3782 */ 3783 closeClientFile(uncheckedFileName: string): void; 3784 private collectChanges; 3785 private closeConfiguredProjectReferencedFromExternalProject; 3786 closeExternalProject(uncheckedFileName: string): void; 3787 openExternalProjects(projects: protocol.ExternalProject[]): void; 3788 /** Makes a filename safe to insert in a RegExp */ 3789 private static readonly filenameEscapeRegexp; 3790 private static escapeFilenameForRegex; 3791 resetSafeList(): void; 3792 applySafeList(proj: protocol.ExternalProject): NormalizedPath[]; 3793 openExternalProject(proj: protocol.ExternalProject): void; 3794 hasDeferredExtension(): boolean; 3795 private enableRequestedPluginsAsync; 3796 private enableRequestedPluginsWorker; 3797 private enableRequestedPluginsForProjectAsync; 3798 configurePlugin(args: protocol.ConfigurePluginRequestArguments): void; 3799 } 3800 function formatMessage<T extends protocol.Message>(msg: T, logger: Logger, byteLength: (s: string, encoding: string) => number, newLine: string): string; 3801 interface ServerCancellationToken extends HostCancellationToken { 3802 setRequest(requestId: number): void; 3803 resetRequest(requestId: number): void; 3804 } 3805 const nullCancellationToken: ServerCancellationToken; 3806 interface PendingErrorCheck { 3807 fileName: NormalizedPath; 3808 project: Project; 3809 } 3810 type CommandNames = protocol.CommandTypes; 3811 const CommandNames: any; 3812 type Event = <T extends object>(body: T, eventName: string) => void; 3813 interface EventSender { 3814 event: Event; 3815 } 3816 interface SessionOptions { 3817 host: ServerHost; 3818 cancellationToken: ServerCancellationToken; 3819 useSingleInferredProject: boolean; 3820 useInferredProjectPerProjectRoot: boolean; 3821 typingsInstaller: ITypingsInstaller; 3822 byteLength: (buf: string, encoding?: string) => number; 3823 hrtime: (start?: number[]) => number[]; 3824 logger: Logger; 3825 /** 3826 * If falsy, all events are suppressed. 3827 */ 3828 canUseEvents: boolean; 3829 eventHandler?: ProjectServiceEventHandler; 3830 /** Has no effect if eventHandler is also specified. */ 3831 suppressDiagnosticEvents?: boolean; 3832 /** @deprecated use serverMode instead */ 3833 syntaxOnly?: boolean; 3834 serverMode?: LanguageServiceMode; 3835 throttleWaitMilliseconds?: number; 3836 noGetErrOnBackgroundUpdate?: boolean; 3837 globalPlugins?: readonly string[]; 3838 pluginProbeLocations?: readonly string[]; 3839 allowLocalPluginLoads?: boolean; 3840 typesMapLocation?: string; 3841 } 3842 class Session<TMessage = string> implements EventSender { 3843 private readonly gcTimer; 3844 protected projectService: ProjectService; 3845 private changeSeq; 3846 private performanceData; 3847 private currentRequestId; 3848 private errorCheck; 3849 protected host: ServerHost; 3850 private readonly cancellationToken; 3851 protected readonly typingsInstaller: ITypingsInstaller; 3852 protected byteLength: (buf: string, encoding?: string) => number; 3853 private hrtime; 3854 protected logger: Logger; 3855 protected canUseEvents: boolean; 3856 private suppressDiagnosticEvents?; 3857 private eventHandler; 3858 private readonly noGetErrOnBackgroundUpdate?; 3859 constructor(opts: SessionOptions); 3860 private sendRequestCompletedEvent; 3861 private addPerformanceData; 3862 private performanceEventHandler; 3863 private defaultEventHandler; 3864 private projectsUpdatedInBackgroundEvent; 3865 logError(err: Error, cmd: string): void; 3866 private logErrorWorker; 3867 send(msg: protocol.Message): void; 3868 protected writeMessage(msg: protocol.Message): void; 3869 event<T extends object>(body: T, eventName: string): void; 3870 /** @deprecated */ 3871 output(info: any, cmdName: string, reqSeq?: number, errorMsg?: string): void; 3872 private doOutput; 3873 private semanticCheck; 3874 private syntacticCheck; 3875 private suggestionCheck; 3876 private sendDiagnosticsEvent; 3877 /** It is the caller's responsibility to verify that `!this.suppressDiagnosticEvents`. */ 3878 private updateErrorCheck; 3879 private cleanProjects; 3880 private cleanup; 3881 private getEncodedSyntacticClassifications; 3882 private getEncodedSemanticClassifications; 3883 private getProject; 3884 private getConfigFileAndProject; 3885 private getConfigFileDiagnostics; 3886 private convertToDiagnosticsWithLinePositionFromDiagnosticFile; 3887 private getCompilerOptionsDiagnostics; 3888 private convertToDiagnosticsWithLinePosition; 3889 private getDiagnosticsWorker; 3890 private getDefinition; 3891 private mapDefinitionInfoLocations; 3892 private getDefinitionAndBoundSpan; 3893 private findSourceDefinition; 3894 private getEmitOutput; 3895 private mapJSDocTagInfo; 3896 private mapDisplayParts; 3897 private mapSignatureHelpItems; 3898 private mapDefinitionInfo; 3899 private static mapToOriginalLocation; 3900 private toFileSpan; 3901 private toFileSpanWithContext; 3902 private getTypeDefinition; 3903 private mapImplementationLocations; 3904 private getImplementation; 3905 private getOccurrences; 3906 private getSyntacticDiagnosticsSync; 3907 private getSemanticDiagnosticsSync; 3908 private getSuggestionDiagnosticsSync; 3909 private getJsxClosingTag; 3910 private getDocumentHighlights; 3911 private provideInlayHints; 3912 private setCompilerOptionsForInferredProjects; 3913 private getProjectInfo; 3914 private getProjectInfoWorker; 3915 private getRenameInfo; 3916 private getProjects; 3917 private getDefaultProject; 3918 private getRenameLocations; 3919 private mapRenameInfo; 3920 private toSpanGroups; 3921 private getReferences; 3922 private getFileReferences; 3923 /** 3924 * @param fileName is the name of the file to be opened 3925 * @param fileContent is a version of the file content that is known to be more up to date than the one on disk 3926 */ 3927 private openClientFile; 3928 private getPosition; 3929 private getPositionInFile; 3930 private getFileAndProject; 3931 private getFileAndLanguageServiceForSyntacticOperation; 3932 private getFileAndProjectWorker; 3933 private getOutliningSpans; 3934 private getTodoComments; 3935 private getDocCommentTemplate; 3936 private getSpanOfEnclosingComment; 3937 private getIndentation; 3938 private getBreakpointStatement; 3939 private getNameOrDottedNameSpan; 3940 private isValidBraceCompletion; 3941 private getQuickInfoWorker; 3942 private getFormattingEditsForRange; 3943 private getFormattingEditsForRangeFull; 3944 private getFormattingEditsForDocumentFull; 3945 private getFormattingEditsAfterKeystrokeFull; 3946 private getFormattingEditsAfterKeystroke; 3947 private getCompletions; 3948 private getCompletionEntryDetails; 3949 private getCompileOnSaveAffectedFileList; 3950 private emitFile; 3951 private getSignatureHelpItems; 3952 private toPendingErrorCheck; 3953 private getDiagnostics; 3954 private change; 3955 private reload; 3956 private saveToTmp; 3957 private closeClientFile; 3958 private mapLocationNavigationBarItems; 3959 private getNavigationBarItems; 3960 private toLocationNavigationTree; 3961 private getNavigationTree; 3962 private getNavigateToItems; 3963 private getFullNavigateToItems; 3964 private getSupportedCodeFixes; 3965 private isLocation; 3966 private extractPositionOrRange; 3967 private getRange; 3968 private getApplicableRefactors; 3969 private getEditsForRefactor; 3970 private organizeImports; 3971 private getEditsForFileRename; 3972 private getCodeFixes; 3973 private getCombinedCodeFix; 3974 private applyCodeActionCommand; 3975 private getStartAndEndPosition; 3976 private mapCodeAction; 3977 private mapCodeFixAction; 3978 private mapTextChangesToCodeEdits; 3979 private mapTextChangeToCodeEdit; 3980 private convertTextChangeToCodeEdit; 3981 private getBraceMatching; 3982 private getDiagnosticsForProject; 3983 private configurePlugin; 3984 private getSmartSelectionRange; 3985 private toggleLineComment; 3986 private toggleMultilineComment; 3987 private commentSelection; 3988 private uncommentSelection; 3989 private mapSelectionRange; 3990 private getScriptInfoFromProjectService; 3991 private toProtocolCallHierarchyItem; 3992 private toProtocolCallHierarchyIncomingCall; 3993 private toProtocolCallHierarchyOutgoingCall; 3994 private prepareCallHierarchy; 3995 private provideCallHierarchyIncomingCalls; 3996 private provideCallHierarchyOutgoingCalls; 3997 getCanonicalFileName(fileName: string): string; 3998 exit(): void; 3999 private notRequired; 4000 private requiredResponse; 4001 private handlers; 4002 addProtocolHandler(command: string, handler: (request: protocol.Request) => HandlerResponse): void; 4003 private setCurrentRequest; 4004 private resetCurrentRequest; 4005 executeWithRequestId<T>(requestId: number, f: () => T): T; 4006 executeCommand(request: protocol.Request): HandlerResponse; 4007 onMessage(message: TMessage): void; 4008 protected parseMessage(message: TMessage): protocol.Request; 4009 protected toStringMessage(message: TMessage): string; 4010 private getFormatOptions; 4011 private getPreferences; 4012 private getHostFormatOptions; 4013 private getHostPreferences; 4014 } 4015 interface HandlerResponse { 4016 response?: {}; 4017 responseRequired?: boolean; 4018 } 4019 } 4020 const versionMajorMinor = "4.9"; 4021 /** The version of the TypeScript compiler release */ 4022 const version: string; 4023 /** 4024 * Type of objects whose values are all of the same type. 4025 * The `in` and `for-in` operators can *not* be safely used, 4026 * since `Object.prototype` may be modified by outside code. 4027 */ 4028 interface MapLike<T> { 4029 [index: string]: T; 4030 } 4031 interface SortedReadonlyArray<T> extends ReadonlyArray<T> { 4032 " __sortedArrayBrand": any; 4033 } 4034 interface SortedArray<T> extends Array<T> { 4035 " __sortedArrayBrand": any; 4036 } 4037 /** Common read methods for ES6 Map/Set. */ 4038 interface ReadonlyCollection<K> { 4039 readonly size: number; 4040 has(key: K): boolean; 4041 keys(): Iterator<K>; 4042 } 4043 /** Common write methods for ES6 Map/Set. */ 4044 interface Collection<K> extends ReadonlyCollection<K> { 4045 delete(key: K): boolean; 4046 clear(): void; 4047 } 4048 /** ES6 Map interface, only read methods included. */ 4049 interface ReadonlyESMap<K, V> extends ReadonlyCollection<K> { 4050 get(key: K): V | undefined; 4051 values(): Iterator<V>; 4052 entries(): Iterator<[ 4053 K, 4054 V 4055 ]>; 4056 forEach(action: (value: V, key: K) => void): void; 4057 } 4058 /** 4059 * ES6 Map interface, only read methods included. 4060 */ 4061 interface ReadonlyMap<T> extends ReadonlyESMap<string, T> { 4062 } 4063 /** 4064 * @deprecated Use `ts.ReadonlyESMap<K, V>` instead. 4065 */ 4066 interface ReadonlyMap<T> extends ReadonlyESMap<string, T> { 4067 } 4068 /** ES6 Map interface. */ 4069 interface ESMap<K, V> extends ReadonlyESMap<K, V>, Collection<K> { 4070 set(key: K, value: V): this; 4071 } 4072 /** 4073 * ES6 Map interface. 4074 */ 4075 interface Map<T> extends ESMap<string, T> { 4076 } 4077 /** 4078 * @deprecated Use `ts.ESMap<K, V>` instead. 4079 */ 4080 interface Map<T> extends ESMap<string, T> { 4081 } 4082 /** ES6 Set interface, only read methods included. */ 4083 interface ReadonlySet<T> extends ReadonlyCollection<T> { 4084 has(value: T): boolean; 4085 values(): Iterator<T>; 4086 entries(): Iterator<[ 4087 T, 4088 T 4089 ]>; 4090 forEach(action: (value: T, key: T) => void): void; 4091 } 4092 /** ES6 Set interface. */ 4093 interface Set<T> extends ReadonlySet<T>, Collection<T> { 4094 add(value: T): this; 4095 delete(value: T): boolean; 4096 } 4097 /** ES6 Iterator type. */ 4098 interface Iterator<T> { 4099 next(): { 4100 value: T; 4101 done?: false; 4102 } | { 4103 value: void; 4104 done: true; 4105 }; 4106 } 4107 /** Array that is only intended to be pushed to, never read. */ 4108 interface Push<T> { 4109 push(...values: T[]): void; 4110 } 4111 namespace PerformanceDotting { 4112 export enum AnalyzeMode { 4113 DEFAULT = 0, 4114 VERBOSE = 1, 4115 TRACE = 3 4116 } 4117 interface PerformanceData { 4118 startTime: number; 4119 endTime: number; 4120 duration: number; 4121 name: string; 4122 parentEvent: string; 4123 tier: number; 4124 fullPath: string; 4125 id: string; 4126 parentId: string; 4127 fileName: string; 4128 } 4129 export function setPerformanceSwitch(projectConfigPerf: AnalyzeMode): void; 4130 export function startAdvanced(eventName: string, fileName?: string): void; 4131 export function stopAdvanced(eventName: string): void; 4132 export function start(eventName: string, fileName?: string): void; 4133 export function stop(eventName: string): void; 4134 export function getEventData(): Array<PerformanceData>; 4135 export function clearEvent(): void; 4136 export {}; 4137 } 4138 type Path = string & { 4139 __pathBrand: any; 4140 }; 4141 interface TextRange { 4142 pos: number; 4143 end: number; 4144 } 4145 interface ReadonlyTextRange { 4146 readonly pos: number; 4147 readonly end: number; 4148 } 4149 enum SyntaxKind { 4150 Unknown = 0, 4151 EndOfFileToken = 1, 4152 SingleLineCommentTrivia = 2, 4153 MultiLineCommentTrivia = 3, 4154 NewLineTrivia = 4, 4155 WhitespaceTrivia = 5, 4156 ShebangTrivia = 6, 4157 ConflictMarkerTrivia = 7, 4158 NumericLiteral = 8, 4159 BigIntLiteral = 9, 4160 StringLiteral = 10, 4161 JsxText = 11, 4162 JsxTextAllWhiteSpaces = 12, 4163 RegularExpressionLiteral = 13, 4164 NoSubstitutionTemplateLiteral = 14, 4165 TemplateHead = 15, 4166 TemplateMiddle = 16, 4167 TemplateTail = 17, 4168 OpenBraceToken = 18, 4169 CloseBraceToken = 19, 4170 OpenParenToken = 20, 4171 CloseParenToken = 21, 4172 OpenBracketToken = 22, 4173 CloseBracketToken = 23, 4174 DotToken = 24, 4175 DotDotDotToken = 25, 4176 SemicolonToken = 26, 4177 CommaToken = 27, 4178 QuestionDotToken = 28, 4179 LessThanToken = 29, 4180 LessThanSlashToken = 30, 4181 GreaterThanToken = 31, 4182 LessThanEqualsToken = 32, 4183 GreaterThanEqualsToken = 33, 4184 EqualsEqualsToken = 34, 4185 ExclamationEqualsToken = 35, 4186 EqualsEqualsEqualsToken = 36, 4187 ExclamationEqualsEqualsToken = 37, 4188 EqualsGreaterThanToken = 38, 4189 PlusToken = 39, 4190 MinusToken = 40, 4191 AsteriskToken = 41, 4192 AsteriskAsteriskToken = 42, 4193 SlashToken = 43, 4194 PercentToken = 44, 4195 PlusPlusToken = 45, 4196 MinusMinusToken = 46, 4197 LessThanLessThanToken = 47, 4198 GreaterThanGreaterThanToken = 48, 4199 GreaterThanGreaterThanGreaterThanToken = 49, 4200 AmpersandToken = 50, 4201 BarToken = 51, 4202 CaretToken = 52, 4203 ExclamationToken = 53, 4204 TildeToken = 54, 4205 AmpersandAmpersandToken = 55, 4206 BarBarToken = 56, 4207 QuestionToken = 57, 4208 ColonToken = 58, 4209 AtToken = 59, 4210 QuestionQuestionToken = 60, 4211 /** Only the JSDoc scanner produces BacktickToken. The normal scanner produces NoSubstitutionTemplateLiteral and related kinds. */ 4212 BacktickToken = 61, 4213 /** Only the JSDoc scanner produces HashToken. The normal scanner produces PrivateIdentifier. */ 4214 HashToken = 62, 4215 EqualsToken = 63, 4216 PlusEqualsToken = 64, 4217 MinusEqualsToken = 65, 4218 AsteriskEqualsToken = 66, 4219 AsteriskAsteriskEqualsToken = 67, 4220 SlashEqualsToken = 68, 4221 PercentEqualsToken = 69, 4222 LessThanLessThanEqualsToken = 70, 4223 GreaterThanGreaterThanEqualsToken = 71, 4224 GreaterThanGreaterThanGreaterThanEqualsToken = 72, 4225 AmpersandEqualsToken = 73, 4226 BarEqualsToken = 74, 4227 BarBarEqualsToken = 75, 4228 AmpersandAmpersandEqualsToken = 76, 4229 QuestionQuestionEqualsToken = 77, 4230 CaretEqualsToken = 78, 4231 Identifier = 79, 4232 PrivateIdentifier = 80, 4233 BreakKeyword = 81, 4234 CaseKeyword = 82, 4235 CatchKeyword = 83, 4236 ClassKeyword = 84, 4237 StructKeyword = 85, 4238 ConstKeyword = 86, 4239 ContinueKeyword = 87, 4240 DebuggerKeyword = 88, 4241 DefaultKeyword = 89, 4242 DeleteKeyword = 90, 4243 DoKeyword = 91, 4244 ElseKeyword = 92, 4245 EnumKeyword = 93, 4246 ExportKeyword = 94, 4247 ExtendsKeyword = 95, 4248 FalseKeyword = 96, 4249 FinallyKeyword = 97, 4250 ForKeyword = 98, 4251 FunctionKeyword = 99, 4252 IfKeyword = 100, 4253 ImportKeyword = 101, 4254 InKeyword = 102, 4255 InstanceOfKeyword = 103, 4256 NewKeyword = 104, 4257 NullKeyword = 105, 4258 ReturnKeyword = 106, 4259 SuperKeyword = 107, 4260 SwitchKeyword = 108, 4261 ThisKeyword = 109, 4262 ThrowKeyword = 110, 4263 TrueKeyword = 111, 4264 TryKeyword = 112, 4265 TypeOfKeyword = 113, 4266 VarKeyword = 114, 4267 VoidKeyword = 115, 4268 WhileKeyword = 116, 4269 WithKeyword = 117, 4270 ImplementsKeyword = 118, 4271 InterfaceKeyword = 119, 4272 LetKeyword = 120, 4273 PackageKeyword = 121, 4274 PrivateKeyword = 122, 4275 ProtectedKeyword = 123, 4276 PublicKeyword = 124, 4277 StaticKeyword = 125, 4278 YieldKeyword = 126, 4279 AbstractKeyword = 127, 4280 AccessorKeyword = 128, 4281 AsKeyword = 129, 4282 AssertsKeyword = 130, 4283 AssertKeyword = 131, 4284 AnyKeyword = 132, 4285 AsyncKeyword = 133, 4286 AwaitKeyword = 134, 4287 BooleanKeyword = 135, 4288 ConstructorKeyword = 136, 4289 DeclareKeyword = 137, 4290 GetKeyword = 138, 4291 InferKeyword = 139, 4292 IntrinsicKeyword = 140, 4293 IsKeyword = 141, 4294 KeyOfKeyword = 142, 4295 ModuleKeyword = 143, 4296 NamespaceKeyword = 144, 4297 NeverKeyword = 145, 4298 OutKeyword = 146, 4299 ReadonlyKeyword = 147, 4300 RequireKeyword = 148, 4301 NumberKeyword = 149, 4302 ObjectKeyword = 150, 4303 SatisfiesKeyword = 151, 4304 SetKeyword = 152, 4305 StringKeyword = 153, 4306 SymbolKeyword = 154, 4307 TypeKeyword = 155, 4308 LazyKeyword = 156, 4309 UndefinedKeyword = 157, 4310 UniqueKeyword = 158, 4311 UnknownKeyword = 159, 4312 FromKeyword = 160, 4313 GlobalKeyword = 161, 4314 BigIntKeyword = 162, 4315 OverrideKeyword = 163, 4316 OfKeyword = 164, 4317 QualifiedName = 165, 4318 ComputedPropertyName = 166, 4319 TypeParameter = 167, 4320 Parameter = 168, 4321 Decorator = 169, 4322 PropertySignature = 170, 4323 PropertyDeclaration = 171, 4324 AnnotationPropertyDeclaration = 172, 4325 MethodSignature = 173, 4326 MethodDeclaration = 174, 4327 ClassStaticBlockDeclaration = 175, 4328 Constructor = 176, 4329 GetAccessor = 177, 4330 SetAccessor = 178, 4331 CallSignature = 179, 4332 ConstructSignature = 180, 4333 IndexSignature = 181, 4334 TypePredicate = 182, 4335 TypeReference = 183, 4336 FunctionType = 184, 4337 ConstructorType = 185, 4338 TypeQuery = 186, 4339 TypeLiteral = 187, 4340 ArrayType = 188, 4341 TupleType = 189, 4342 OptionalType = 190, 4343 RestType = 191, 4344 UnionType = 192, 4345 IntersectionType = 193, 4346 ConditionalType = 194, 4347 InferType = 195, 4348 ParenthesizedType = 196, 4349 ThisType = 197, 4350 TypeOperator = 198, 4351 IndexedAccessType = 199, 4352 MappedType = 200, 4353 LiteralType = 201, 4354 NamedTupleMember = 202, 4355 TemplateLiteralType = 203, 4356 TemplateLiteralTypeSpan = 204, 4357 ImportType = 205, 4358 ObjectBindingPattern = 206, 4359 ArrayBindingPattern = 207, 4360 BindingElement = 208, 4361 ArrayLiteralExpression = 209, 4362 ObjectLiteralExpression = 210, 4363 PropertyAccessExpression = 211, 4364 ElementAccessExpression = 212, 4365 CallExpression = 213, 4366 NewExpression = 214, 4367 TaggedTemplateExpression = 215, 4368 TypeAssertionExpression = 216, 4369 ParenthesizedExpression = 217, 4370 FunctionExpression = 218, 4371 ArrowFunction = 219, 4372 EtsComponentExpression = 220, 4373 DeleteExpression = 221, 4374 TypeOfExpression = 222, 4375 VoidExpression = 223, 4376 AwaitExpression = 224, 4377 PrefixUnaryExpression = 225, 4378 PostfixUnaryExpression = 226, 4379 BinaryExpression = 227, 4380 ConditionalExpression = 228, 4381 TemplateExpression = 229, 4382 YieldExpression = 230, 4383 SpreadElement = 231, 4384 ClassExpression = 232, 4385 OmittedExpression = 233, 4386 ExpressionWithTypeArguments = 234, 4387 AsExpression = 235, 4388 NonNullExpression = 236, 4389 MetaProperty = 237, 4390 SyntheticExpression = 238, 4391 SatisfiesExpression = 239, 4392 TemplateSpan = 240, 4393 SemicolonClassElement = 241, 4394 Block = 242, 4395 EmptyStatement = 243, 4396 VariableStatement = 244, 4397 ExpressionStatement = 245, 4398 IfStatement = 246, 4399 DoStatement = 247, 4400 WhileStatement = 248, 4401 ForStatement = 249, 4402 ForInStatement = 250, 4403 ForOfStatement = 251, 4404 ContinueStatement = 252, 4405 BreakStatement = 253, 4406 ReturnStatement = 254, 4407 WithStatement = 255, 4408 SwitchStatement = 256, 4409 LabeledStatement = 257, 4410 ThrowStatement = 258, 4411 TryStatement = 259, 4412 DebuggerStatement = 260, 4413 VariableDeclaration = 261, 4414 VariableDeclarationList = 262, 4415 FunctionDeclaration = 263, 4416 ClassDeclaration = 264, 4417 StructDeclaration = 265, 4418 AnnotationDeclaration = 266, 4419 InterfaceDeclaration = 267, 4420 TypeAliasDeclaration = 268, 4421 EnumDeclaration = 269, 4422 ModuleDeclaration = 270, 4423 ModuleBlock = 271, 4424 CaseBlock = 272, 4425 NamespaceExportDeclaration = 273, 4426 ImportEqualsDeclaration = 274, 4427 ImportDeclaration = 275, 4428 ImportClause = 276, 4429 NamespaceImport = 277, 4430 NamedImports = 278, 4431 ImportSpecifier = 279, 4432 ExportAssignment = 280, 4433 ExportDeclaration = 281, 4434 NamedExports = 282, 4435 NamespaceExport = 283, 4436 ExportSpecifier = 284, 4437 MissingDeclaration = 285, 4438 ExternalModuleReference = 286, 4439 JsxElement = 287, 4440 JsxSelfClosingElement = 288, 4441 JsxOpeningElement = 289, 4442 JsxClosingElement = 290, 4443 JsxFragment = 291, 4444 JsxOpeningFragment = 292, 4445 JsxClosingFragment = 293, 4446 JsxAttribute = 294, 4447 JsxAttributes = 295, 4448 JsxSpreadAttribute = 296, 4449 JsxExpression = 297, 4450 CaseClause = 298, 4451 DefaultClause = 299, 4452 HeritageClause = 300, 4453 CatchClause = 301, 4454 AssertClause = 302, 4455 AssertEntry = 303, 4456 ImportTypeAssertionContainer = 304, 4457 PropertyAssignment = 305, 4458 ShorthandPropertyAssignment = 306, 4459 SpreadAssignment = 307, 4460 EnumMember = 308, 4461 UnparsedPrologue = 309, 4462 UnparsedPrepend = 310, 4463 UnparsedText = 311, 4464 UnparsedInternalText = 312, 4465 UnparsedSyntheticReference = 313, 4466 SourceFile = 314, 4467 Bundle = 315, 4468 UnparsedSource = 316, 4469 InputFiles = 317, 4470 JSDocTypeExpression = 318, 4471 JSDocNameReference = 319, 4472 JSDocMemberName = 320, 4473 JSDocAllType = 321, 4474 JSDocUnknownType = 322, 4475 JSDocNullableType = 323, 4476 JSDocNonNullableType = 324, 4477 JSDocOptionalType = 325, 4478 JSDocFunctionType = 326, 4479 JSDocVariadicType = 327, 4480 JSDocNamepathType = 328, 4481 JSDoc = 329, 4482 /** @deprecated Use SyntaxKind.JSDoc */ 4483 JSDocComment = 329, 4484 JSDocText = 330, 4485 JSDocTypeLiteral = 331, 4486 JSDocSignature = 332, 4487 JSDocLink = 333, 4488 JSDocLinkCode = 334, 4489 JSDocLinkPlain = 335, 4490 JSDocTag = 336, 4491 JSDocAugmentsTag = 337, 4492 JSDocImplementsTag = 338, 4493 JSDocAuthorTag = 339, 4494 JSDocDeprecatedTag = 340, 4495 JSDocClassTag = 341, 4496 JSDocPublicTag = 342, 4497 JSDocPrivateTag = 343, 4498 JSDocProtectedTag = 344, 4499 JSDocReadonlyTag = 345, 4500 JSDocOverrideTag = 346, 4501 JSDocCallbackTag = 347, 4502 JSDocEnumTag = 348, 4503 JSDocParameterTag = 349, 4504 JSDocReturnTag = 350, 4505 JSDocThisTag = 351, 4506 JSDocTypeTag = 352, 4507 JSDocTemplateTag = 353, 4508 JSDocTypedefTag = 354, 4509 JSDocSeeTag = 355, 4510 JSDocPropertyTag = 356, 4511 SyntaxList = 357, 4512 NotEmittedStatement = 358, 4513 PartiallyEmittedExpression = 359, 4514 CommaListExpression = 360, 4515 MergeDeclarationMarker = 361, 4516 EndOfDeclarationMarker = 362, 4517 SyntheticReferenceExpression = 363, 4518 Count = 364, 4519 FirstAssignment = 63, 4520 LastAssignment = 78, 4521 FirstCompoundAssignment = 64, 4522 LastCompoundAssignment = 78, 4523 FirstReservedWord = 81, 4524 LastReservedWord = 117, 4525 FirstKeyword = 81, 4526 LastKeyword = 164, 4527 FirstFutureReservedWord = 118, 4528 LastFutureReservedWord = 126, 4529 FirstTypeNode = 182, 4530 LastTypeNode = 205, 4531 FirstPunctuation = 18, 4532 LastPunctuation = 78, 4533 FirstToken = 0, 4534 LastToken = 164, 4535 FirstTriviaToken = 2, 4536 LastTriviaToken = 7, 4537 FirstLiteralToken = 8, 4538 LastLiteralToken = 14, 4539 FirstTemplateToken = 14, 4540 LastTemplateToken = 17, 4541 FirstBinaryOperator = 29, 4542 LastBinaryOperator = 78, 4543 FirstStatement = 244, 4544 LastStatement = 260, 4545 FirstNode = 165, 4546 FirstJSDocNode = 318, 4547 LastJSDocNode = 356, 4548 FirstJSDocTagNode = 336, 4549 LastJSDocTagNode = 356 4550 } 4551 type TriviaSyntaxKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia | SyntaxKind.NewLineTrivia | SyntaxKind.WhitespaceTrivia | SyntaxKind.ShebangTrivia | SyntaxKind.ConflictMarkerTrivia; 4552 type LiteralSyntaxKind = SyntaxKind.NumericLiteral | SyntaxKind.BigIntLiteral | SyntaxKind.StringLiteral | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.RegularExpressionLiteral | SyntaxKind.NoSubstitutionTemplateLiteral; 4553 type PseudoLiteralSyntaxKind = SyntaxKind.TemplateHead | SyntaxKind.TemplateMiddle | SyntaxKind.TemplateTail; 4554 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.QuestionQuestionToken | SyntaxKind.QuestionToken | SyntaxKind.ColonToken | SyntaxKind.AtToken | 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.CaretEqualsToken; 4555 type KeywordSyntaxKind = SyntaxKind.AbstractKeyword | SyntaxKind.AccessorKeyword | SyntaxKind.AnyKeyword | SyntaxKind.AsKeyword | SyntaxKind.AssertsKeyword | SyntaxKind.AssertKeyword | SyntaxKind.AsyncKeyword | SyntaxKind.AwaitKeyword | SyntaxKind.BigIntKeyword | SyntaxKind.BooleanKeyword | SyntaxKind.BreakKeyword | SyntaxKind.CaseKeyword | SyntaxKind.CatchKeyword | SyntaxKind.ClassKeyword | SyntaxKind.StructKeyword | SyntaxKind.ConstKeyword | SyntaxKind.ConstructorKeyword | SyntaxKind.ContinueKeyword | SyntaxKind.DebuggerKeyword | SyntaxKind.DeclareKeyword | SyntaxKind.DefaultKeyword | SyntaxKind.DeleteKeyword | SyntaxKind.DoKeyword | SyntaxKind.ElseKeyword | SyntaxKind.EnumKeyword | SyntaxKind.ExportKeyword | SyntaxKind.ExtendsKeyword | SyntaxKind.FalseKeyword | SyntaxKind.FinallyKeyword | SyntaxKind.ForKeyword | SyntaxKind.FromKeyword | SyntaxKind.FunctionKeyword | SyntaxKind.GetKeyword | SyntaxKind.GlobalKeyword | SyntaxKind.IfKeyword | SyntaxKind.ImplementsKeyword | SyntaxKind.ImportKeyword | SyntaxKind.InferKeyword | SyntaxKind.InKeyword | SyntaxKind.InstanceOfKeyword | SyntaxKind.InterfaceKeyword | SyntaxKind.IntrinsicKeyword | SyntaxKind.IsKeyword | SyntaxKind.KeyOfKeyword | SyntaxKind.LetKeyword | SyntaxKind.ModuleKeyword | SyntaxKind.NamespaceKeyword | SyntaxKind.NeverKeyword | SyntaxKind.NewKeyword | SyntaxKind.NullKeyword | SyntaxKind.NumberKeyword | SyntaxKind.ObjectKeyword | SyntaxKind.OfKeyword | SyntaxKind.PackageKeyword | SyntaxKind.PrivateKeyword | SyntaxKind.ProtectedKeyword | SyntaxKind.PublicKeyword | SyntaxKind.ReadonlyKeyword | SyntaxKind.OutKeyword | SyntaxKind.OverrideKeyword | SyntaxKind.RequireKeyword | SyntaxKind.ReturnKeyword | SyntaxKind.SatisfiesKeyword | SyntaxKind.SetKeyword | SyntaxKind.StaticKeyword | SyntaxKind.StringKeyword | SyntaxKind.SuperKeyword | SyntaxKind.SwitchKeyword | SyntaxKind.SymbolKeyword | SyntaxKind.ThisKeyword | SyntaxKind.ThrowKeyword | SyntaxKind.TrueKeyword | SyntaxKind.TryKeyword | SyntaxKind.TypeKeyword | SyntaxKind.LazyKeyword | SyntaxKind.TypeOfKeyword | SyntaxKind.UndefinedKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.UnknownKeyword | SyntaxKind.VarKeyword | SyntaxKind.VoidKeyword | SyntaxKind.WhileKeyword | SyntaxKind.WithKeyword | SyntaxKind.YieldKeyword; 4556 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; 4557 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; 4558 type TokenSyntaxKind = SyntaxKind.Unknown | SyntaxKind.EndOfFileToken | TriviaSyntaxKind | LiteralSyntaxKind | PseudoLiteralSyntaxKind | PunctuationSyntaxKind | SyntaxKind.Identifier | KeywordSyntaxKind; 4559 type JsxTokenSyntaxKind = SyntaxKind.LessThanSlashToken | SyntaxKind.EndOfFileToken | SyntaxKind.ConflictMarkerTrivia | SyntaxKind.JsxText | SyntaxKind.JsxTextAllWhiteSpaces | SyntaxKind.OpenBraceToken | SyntaxKind.LessThanToken; 4560 type JSDocSyntaxKind = SyntaxKind.EndOfFileToken | SyntaxKind.WhitespaceTrivia | SyntaxKind.AtToken | SyntaxKind.NewLineTrivia | SyntaxKind.AsteriskToken | SyntaxKind.OpenBraceToken | SyntaxKind.CloseBraceToken | SyntaxKind.LessThanToken | SyntaxKind.GreaterThanToken | SyntaxKind.OpenBracketToken | SyntaxKind.CloseBracketToken | SyntaxKind.EqualsToken | SyntaxKind.CommaToken | SyntaxKind.DotToken | SyntaxKind.Identifier | SyntaxKind.BacktickToken | SyntaxKind.HashToken | SyntaxKind.Unknown | KeywordSyntaxKind; 4561 enum NodeFlags { 4562 None = 0, 4563 Let = 1, 4564 Const = 2, 4565 NestedNamespace = 4, 4566 Synthesized = 8, 4567 Namespace = 16, 4568 OptionalChain = 32, 4569 ExportContext = 64, 4570 ContainsThis = 128, 4571 HasImplicitReturn = 256, 4572 HasExplicitReturn = 512, 4573 GlobalAugmentation = 1024, 4574 HasAsyncFunctions = 2048, 4575 DisallowInContext = 4096, 4576 YieldContext = 8192, 4577 DecoratorContext = 16384, 4578 AwaitContext = 32768, 4579 DisallowConditionalTypesContext = 65536, 4580 ThisNodeHasError = 131072, 4581 JavaScriptFile = 262144, 4582 ThisNodeOrAnySubNodesHasError = 524288, 4583 HasAggregatedChildData = 1048576, 4584 JSDoc = 8388608, 4585 JsonFile = 67108864, 4586 EtsContext = 1073741824, 4587 BlockScoped = 3, 4588 ReachabilityCheckFlags = 768, 4589 ReachabilityAndEmitFlags = 2816, 4590 ContextFlags = 1124462592, 4591 TypeExcludesFlags = 40960 4592 } 4593 enum EtsFlags { 4594 None = 0, 4595 StructContext = 2, 4596 EtsExtendComponentsContext = 4, 4597 EtsStylesComponentsContext = 8, 4598 EtsBuildContext = 16, 4599 EtsBuilderContext = 32, 4600 EtsStateStylesContext = 64, 4601 EtsComponentsContext = 128, 4602 EtsNewExpressionContext = 256, 4603 UICallbackContext = 512, 4604 SyntaxComponentContext = 1024, 4605 SyntaxDataSourceContext = 2048, 4606 NoEtsComponentContext = 4096 4607 } 4608 enum ModifierFlags { 4609 None = 0, 4610 Export = 1, 4611 Ambient = 2, 4612 Public = 4, 4613 Private = 8, 4614 Protected = 16, 4615 Static = 32, 4616 Readonly = 64, 4617 Accessor = 128, 4618 Abstract = 256, 4619 Async = 512, 4620 Default = 1024, 4621 Const = 2048, 4622 HasComputedJSDocModifiers = 4096, 4623 Deprecated = 8192, 4624 Override = 16384, 4625 In = 32768, 4626 Out = 65536, 4627 Decorator = 131072, 4628 HasComputedFlags = 536870912, 4629 AccessibilityModifier = 28, 4630 ParameterPropertyModifier = 16476, 4631 NonPublicAccessibilityModifier = 24, 4632 TypeScriptModifier = 117086, 4633 ExportDefault = 1025, 4634 All = 258047, 4635 Modifier = 126975 4636 } 4637 enum JsxFlags { 4638 None = 0, 4639 /** An element from a named property of the JSX.IntrinsicElements interface */ 4640 IntrinsicNamedElement = 1, 4641 /** An element inferred from the string index signature of the JSX.IntrinsicElements interface */ 4642 IntrinsicIndexedElement = 2, 4643 IntrinsicElement = 3 4644 } 4645 interface Node extends ReadonlyTextRange { 4646 readonly kind: SyntaxKind; 4647 readonly flags: NodeFlags; 4648 readonly parent: Node; 4649 symbol: Symbol; 4650 locals?: SymbolTable; 4651 skipCheck?: boolean; 4652 } 4653 interface Node { 4654 getSourceFile(): SourceFile; 4655 getChildCount(sourceFile?: SourceFile): number; 4656 getChildAt(index: number, sourceFile?: SourceFile): Node; 4657 getChildren(sourceFile?: SourceFile): Node[]; 4658 getStart(sourceFile?: SourceFile, includeJsDocComment?: boolean): number; 4659 getFullStart(): number; 4660 getEnd(): number; 4661 getWidth(sourceFile?: SourceFileLike): number; 4662 getFullWidth(): number; 4663 getLeadingTriviaWidth(sourceFile?: SourceFile): number; 4664 getFullText(sourceFile?: SourceFile): string; 4665 getText(sourceFile?: SourceFile): string; 4666 getFirstToken(sourceFile?: SourceFile): Node | undefined; 4667 getLastToken(sourceFile?: SourceFile): Node | undefined; 4668 forEachChild<T>(cbNode: (node: Node) => T | undefined, cbNodeArray?: (nodes: NodeArray<Node>) => T | undefined): T | undefined; 4669 } 4670 interface Node { 4671 /** 4672 * @deprecated `decorators` has been removed from `Node` and merged with `modifiers` on the `Node` subtypes that support them. 4673 * Use `ts.canHaveDecorators()` to test whether a `Node` can have decorators. 4674 * Use `ts.getDecorators()` to get the decorators of a `Node`. 4675 * 4676 * For example: 4677 * ```ts 4678 * const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined; 4679 * ``` 4680 */ 4681 readonly decorators?: undefined; 4682 /** 4683 * @deprecated `modifiers` has been removed from `Node` and moved to the `Node` subtypes that support them. 4684 * Use `ts.canHaveModifiers()` to test whether a `Node` can have modifiers. 4685 * Use `ts.getModifiers()` to get the modifiers of a `Node`. 4686 * 4687 * For example: 4688 * ```ts 4689 * const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined; 4690 * ``` 4691 */ 4692 readonly modifiers?: NodeArray<ModifierLike> | undefined; 4693 } 4694 interface JSDocContainer { 4695 } 4696 type HasJSDoc = ParameterDeclaration | CallSignatureDeclaration | ClassStaticBlockDeclaration | ConstructSignatureDeclaration | MethodSignature | PropertySignature | ArrowFunction | ParenthesizedExpression | SpreadAssignment | ShorthandPropertyAssignment | PropertyAssignment | FunctionExpression | EmptyStatement | DebuggerStatement | Block | VariableStatement | ExpressionStatement | IfStatement | DoStatement | WhileStatement | ForStatement | ForInStatement | ForOfStatement | BreakStatement | ContinueStatement | ReturnStatement | WithStatement | SwitchStatement | LabeledStatement | ThrowStatement | TryStatement | FunctionDeclaration | ConstructorDeclaration | MethodDeclaration | VariableDeclaration | PropertyDeclaration | AnnotationPropertyDeclaration | AnnotationDeclaration | AccessorDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration | EnumMember | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | NamespaceExportDeclaration | ExportAssignment | IndexSignatureDeclaration | FunctionTypeNode | ConstructorTypeNode | JSDocFunctionType | ExportDeclaration | NamedTupleMember | ExportSpecifier | CaseClause | EndOfFileToken; 4697 type HasType = SignatureDeclaration | VariableDeclaration | ParameterDeclaration | PropertySignature | PropertyDeclaration | AnnotationPropertyDeclaration | TypePredicateNode | ParenthesizedTypeNode | TypeOperatorNode | MappedTypeNode | AssertionExpression | TypeAliasDeclaration | JSDocTypeExpression | JSDocNonNullableType | JSDocNullableType | JSDocOptionalType | JSDocVariadicType; 4698 type HasTypeArguments = CallExpression | NewExpression | TaggedTemplateExpression | JsxOpeningElement | JsxSelfClosingElement; 4699 type HasInitializer = HasExpressionInitializer | ForStatement | ForInStatement | ForOfStatement | JsxAttribute; 4700 type HasExpressionInitializer = VariableDeclaration | ParameterDeclaration | BindingElement | PropertyDeclaration | AnnotationPropertyDeclaration | PropertyAssignment | EnumMember; 4701 type HasDecorators = ParameterDeclaration | PropertyDeclaration | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ClassExpression | ClassDeclaration | StructDeclaration | FunctionDeclaration; 4702 type HasIllegalDecorators = PropertyAssignment | ShorthandPropertyAssignment | FunctionDeclaration | ConstructorDeclaration | IndexSignatureDeclaration | ClassStaticBlockDeclaration | MissingDeclaration | VariableStatement | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | NamespaceExportDeclaration | ExportDeclaration | ExportAssignment; 4703 type HasModifiers = TypeParameterDeclaration | ParameterDeclaration | ConstructorTypeNode | PropertySignature | PropertyDeclaration | MethodSignature | MethodDeclaration | ConstructorDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | IndexSignatureDeclaration | FunctionExpression | ArrowFunction | ClassExpression | VariableStatement | FunctionDeclaration | ClassDeclaration | StructDeclaration | AnnotationDeclaration | InterfaceDeclaration | TypeAliasDeclaration | EnumDeclaration | ModuleDeclaration | ImportEqualsDeclaration | ImportDeclaration | ExportAssignment | ExportDeclaration; 4704 interface NodeArray<T extends Node> extends ReadonlyArray<T>, ReadonlyTextRange { 4705 readonly hasTrailingComma: boolean; 4706 } 4707 interface Token<TKind extends SyntaxKind> extends Node { 4708 readonly kind: TKind; 4709 } 4710 type EndOfFileToken = Token<SyntaxKind.EndOfFileToken> & JSDocContainer; 4711 interface PunctuationToken<TKind extends PunctuationSyntaxKind> extends Token<TKind> { 4712 } 4713 type DotToken = PunctuationToken<SyntaxKind.DotToken>; 4714 type DotDotDotToken = PunctuationToken<SyntaxKind.DotDotDotToken>; 4715 type QuestionToken = PunctuationToken<SyntaxKind.QuestionToken>; 4716 type ExclamationToken = PunctuationToken<SyntaxKind.ExclamationToken>; 4717 type ColonToken = PunctuationToken<SyntaxKind.ColonToken>; 4718 type EqualsToken = PunctuationToken<SyntaxKind.EqualsToken>; 4719 type AsteriskToken = PunctuationToken<SyntaxKind.AsteriskToken>; 4720 type EqualsGreaterThanToken = PunctuationToken<SyntaxKind.EqualsGreaterThanToken>; 4721 type PlusToken = PunctuationToken<SyntaxKind.PlusToken>; 4722 type MinusToken = PunctuationToken<SyntaxKind.MinusToken>; 4723 type QuestionDotToken = PunctuationToken<SyntaxKind.QuestionDotToken>; 4724 interface KeywordToken<TKind extends KeywordSyntaxKind> extends Token<TKind> { 4725 } 4726 type AssertsKeyword = KeywordToken<SyntaxKind.AssertsKeyword>; 4727 type AssertKeyword = KeywordToken<SyntaxKind.AssertKeyword>; 4728 type AwaitKeyword = KeywordToken<SyntaxKind.AwaitKeyword>; 4729 /** @deprecated Use `AwaitKeyword` instead. */ 4730 type AwaitKeywordToken = AwaitKeyword; 4731 /** @deprecated Use `AssertsKeyword` instead. */ 4732 type AssertsToken = AssertsKeyword; 4733 interface ModifierToken<TKind extends ModifierSyntaxKind> extends KeywordToken<TKind> { 4734 } 4735 type AbstractKeyword = ModifierToken<SyntaxKind.AbstractKeyword>; 4736 type AccessorKeyword = ModifierToken<SyntaxKind.AccessorKeyword>; 4737 type AsyncKeyword = ModifierToken<SyntaxKind.AsyncKeyword>; 4738 type ConstKeyword = ModifierToken<SyntaxKind.ConstKeyword>; 4739 type DeclareKeyword = ModifierToken<SyntaxKind.DeclareKeyword>; 4740 type DefaultKeyword = ModifierToken<SyntaxKind.DefaultKeyword>; 4741 type ExportKeyword = ModifierToken<SyntaxKind.ExportKeyword>; 4742 type InKeyword = ModifierToken<SyntaxKind.InKeyword>; 4743 type PrivateKeyword = ModifierToken<SyntaxKind.PrivateKeyword>; 4744 type ProtectedKeyword = ModifierToken<SyntaxKind.ProtectedKeyword>; 4745 type PublicKeyword = ModifierToken<SyntaxKind.PublicKeyword>; 4746 type ReadonlyKeyword = ModifierToken<SyntaxKind.ReadonlyKeyword>; 4747 type OutKeyword = ModifierToken<SyntaxKind.OutKeyword>; 4748 type OverrideKeyword = ModifierToken<SyntaxKind.OverrideKeyword>; 4749 type StaticKeyword = ModifierToken<SyntaxKind.StaticKeyword>; 4750 /** @deprecated Use `ReadonlyKeyword` instead. */ 4751 type ReadonlyToken = ReadonlyKeyword; 4752 type Modifier = AbstractKeyword | AccessorKeyword | AsyncKeyword | ConstKeyword | DeclareKeyword | DefaultKeyword | ExportKeyword | InKeyword | PrivateKeyword | ProtectedKeyword | PublicKeyword | OutKeyword | OverrideKeyword | ReadonlyKeyword | StaticKeyword; 4753 type ModifierLike = Modifier | Decorator; 4754 type AccessibilityModifier = PublicKeyword | PrivateKeyword | ProtectedKeyword; 4755 type ParameterPropertyModifier = AccessibilityModifier | ReadonlyKeyword; 4756 type ClassMemberModifier = AccessibilityModifier | ReadonlyKeyword | StaticKeyword | AccessorKeyword; 4757 type ModifiersArray = NodeArray<Modifier>; 4758 enum GeneratedIdentifierFlags { 4759 None = 0, 4760 ReservedInNestedScopes = 8, 4761 Optimistic = 16, 4762 FileLevel = 32, 4763 AllowNameSubstitution = 64 4764 } 4765 interface Identifier extends PrimaryExpression, Declaration { 4766 readonly kind: SyntaxKind.Identifier; 4767 /** 4768 * Prefer to use `id.unescapedText`. (Note: This is available only in services, not internally to the TypeScript compiler.) 4769 * Text of identifier, but if the identifier begins with two underscores, this will begin with three. 4770 */ 4771 readonly escapedText: __String; 4772 readonly originalKeywordKind?: SyntaxKind; 4773 isInJSDocNamespace?: boolean; 4774 } 4775 interface Identifier { 4776 readonly text: string; 4777 } 4778 interface TransientIdentifier extends Identifier { 4779 resolvedSymbol: Symbol; 4780 } 4781 interface QualifiedName extends Node { 4782 readonly kind: SyntaxKind.QualifiedName; 4783 readonly left: EntityName; 4784 readonly right: Identifier; 4785 } 4786 type EntityName = Identifier | QualifiedName; 4787 type PropertyName = Identifier | StringLiteral | NumericLiteral | ComputedPropertyName | PrivateIdentifier; 4788 type MemberName = Identifier | PrivateIdentifier; 4789 type DeclarationName = Identifier | PrivateIdentifier | StringLiteralLike | NumericLiteral | ComputedPropertyName | ElementAccessExpression | BindingPattern | EntityNameExpression; 4790 interface Declaration extends Node { 4791 _declarationBrand: any; 4792 } 4793 interface NamedDeclaration extends Declaration { 4794 readonly name?: DeclarationName; 4795 } 4796 interface DeclarationStatement extends NamedDeclaration, Statement { 4797 readonly name?: Identifier | StringLiteral | NumericLiteral; 4798 } 4799 interface ComputedPropertyName extends Node { 4800 readonly kind: SyntaxKind.ComputedPropertyName; 4801 readonly parent: Declaration; 4802 readonly expression: Expression; 4803 } 4804 interface PrivateIdentifier extends PrimaryExpression { 4805 readonly kind: SyntaxKind.PrivateIdentifier; 4806 readonly escapedText: __String; 4807 } 4808 interface PrivateIdentifier { 4809 readonly text: string; 4810 } 4811 interface Decorator extends Node { 4812 readonly kind: SyntaxKind.Decorator; 4813 readonly parent: NamedDeclaration; 4814 readonly expression: LeftHandSideExpression; 4815 /** Refers to a annotation declaration (or undefined when decorator isn't annotation) */ 4816 readonly annotationDeclaration?: AnnotationDeclaration; 4817 } 4818 type Annotation = Decorator; 4819 interface TypeParameterDeclaration extends NamedDeclaration { 4820 readonly kind: SyntaxKind.TypeParameter; 4821 readonly parent: DeclarationWithTypeParameterChildren | InferTypeNode; 4822 readonly modifiers?: NodeArray<Modifier>; 4823 readonly name: Identifier; 4824 /** Note: Consider calling `getEffectiveConstraintOfTypeParameter` */ 4825 readonly constraint?: TypeNode; 4826 readonly default?: TypeNode; 4827 expression?: Expression; 4828 } 4829 interface SignatureDeclarationBase extends NamedDeclaration, JSDocContainer { 4830 readonly kind: SignatureDeclaration["kind"]; 4831 readonly name?: PropertyName; 4832 readonly typeParameters?: NodeArray<TypeParameterDeclaration> | undefined; 4833 readonly parameters: NodeArray<ParameterDeclaration>; 4834 readonly type?: TypeNode | undefined; 4835 } 4836 type SignatureDeclaration = CallSignatureDeclaration | ConstructSignatureDeclaration | MethodSignature | IndexSignatureDeclaration | FunctionTypeNode | ConstructorTypeNode | JSDocFunctionType | FunctionDeclaration | MethodDeclaration | ConstructorDeclaration | AccessorDeclaration | FunctionExpression | ArrowFunction; 4837 interface CallSignatureDeclaration extends SignatureDeclarationBase, TypeElement { 4838 readonly kind: SyntaxKind.CallSignature; 4839 } 4840 interface ConstructSignatureDeclaration extends SignatureDeclarationBase, TypeElement { 4841 readonly kind: SyntaxKind.ConstructSignature; 4842 } 4843 type BindingName = Identifier | BindingPattern; 4844 interface VariableDeclaration extends NamedDeclaration, JSDocContainer { 4845 readonly kind: SyntaxKind.VariableDeclaration; 4846 readonly parent: VariableDeclarationList | CatchClause; 4847 readonly name: BindingName; 4848 readonly exclamationToken?: ExclamationToken; 4849 readonly type?: TypeNode; 4850 readonly initializer?: Expression; 4851 } 4852 interface VariableDeclarationList extends Node { 4853 readonly kind: SyntaxKind.VariableDeclarationList; 4854 readonly parent: VariableStatement | ForStatement | ForOfStatement | ForInStatement; 4855 readonly declarations: NodeArray<VariableDeclaration>; 4856 } 4857 interface ParameterDeclaration extends NamedDeclaration, JSDocContainer { 4858 readonly kind: SyntaxKind.Parameter; 4859 readonly parent: SignatureDeclaration; 4860 readonly modifiers?: NodeArray<ModifierLike>; 4861 readonly dotDotDotToken?: DotDotDotToken; 4862 readonly name: BindingName; 4863 readonly questionToken?: QuestionToken; 4864 readonly type?: TypeNode; 4865 readonly initializer?: Expression; 4866 } 4867 interface BindingElement extends NamedDeclaration { 4868 readonly kind: SyntaxKind.BindingElement; 4869 readonly parent: BindingPattern; 4870 readonly propertyName?: PropertyName; 4871 readonly dotDotDotToken?: DotDotDotToken; 4872 readonly name: BindingName; 4873 readonly initializer?: Expression; 4874 } 4875 interface PropertySignature extends TypeElement, JSDocContainer { 4876 readonly kind: SyntaxKind.PropertySignature; 4877 readonly modifiers?: NodeArray<Modifier>; 4878 readonly name: PropertyName; 4879 readonly questionToken?: QuestionToken; 4880 readonly type?: TypeNode; 4881 } 4882 interface PropertySignature { 4883 /** @deprecated A property signature cannot have an initializer */ 4884 readonly initializer?: Expression | undefined; 4885 } 4886 interface PropertyDeclaration extends ClassElement, JSDocContainer { 4887 readonly kind: SyntaxKind.PropertyDeclaration; 4888 readonly parent: ClassLikeDeclaration; 4889 readonly modifiers?: NodeArray<ModifierLike>; 4890 readonly name: PropertyName; 4891 readonly questionToken?: QuestionToken; 4892 readonly exclamationToken?: ExclamationToken; 4893 readonly type?: TypeNode; 4894 readonly initializer?: Expression; 4895 } 4896 interface AnnotationPropertyDeclaration extends AnnotationElement, JSDocContainer { 4897 readonly kind: SyntaxKind.AnnotationPropertyDeclaration; 4898 readonly parent: AnnotationDeclaration; 4899 readonly name: PropertyName; 4900 readonly type?: TypeNode; 4901 readonly initializer?: Expression; 4902 } 4903 interface AutoAccessorPropertyDeclaration extends PropertyDeclaration { 4904 _autoAccessorBrand: any; 4905 } 4906 interface ObjectLiteralElement extends NamedDeclaration { 4907 _objectLiteralBrand: any; 4908 readonly name?: PropertyName; 4909 } 4910 /** Unlike ObjectLiteralElement, excludes JSXAttribute and JSXSpreadAttribute. */ 4911 type ObjectLiteralElementLike = PropertyAssignment | ShorthandPropertyAssignment | SpreadAssignment | MethodDeclaration | AccessorDeclaration; 4912 interface PropertyAssignment extends ObjectLiteralElement, JSDocContainer { 4913 readonly kind: SyntaxKind.PropertyAssignment; 4914 readonly parent: ObjectLiteralExpression; 4915 readonly name: PropertyName; 4916 readonly initializer: Expression; 4917 } 4918 interface PropertyAssignment { 4919 /** @deprecated A property assignment cannot have a question token */ 4920 readonly questionToken?: QuestionToken | undefined; 4921 /** @deprecated A property assignment cannot have an exclamation token */ 4922 readonly exclamationToken?: ExclamationToken | undefined; 4923 } 4924 interface ShorthandPropertyAssignment extends ObjectLiteralElement, JSDocContainer { 4925 readonly kind: SyntaxKind.ShorthandPropertyAssignment; 4926 readonly parent: ObjectLiteralExpression; 4927 readonly name: Identifier; 4928 readonly equalsToken?: EqualsToken; 4929 readonly objectAssignmentInitializer?: Expression; 4930 } 4931 interface ShorthandPropertyAssignment { 4932 /** @deprecated A shorthand property assignment cannot have modifiers */ 4933 readonly modifiers?: NodeArray<Modifier> | undefined; 4934 /** @deprecated A shorthand property assignment cannot have a question token */ 4935 readonly questionToken?: QuestionToken | undefined; 4936 /** @deprecated A shorthand property assignment cannot have an exclamation token */ 4937 readonly exclamationToken?: ExclamationToken | undefined; 4938 } 4939 interface SpreadAssignment extends ObjectLiteralElement, JSDocContainer { 4940 readonly kind: SyntaxKind.SpreadAssignment; 4941 readonly parent: ObjectLiteralExpression; 4942 readonly expression: Expression; 4943 } 4944 type VariableLikeDeclaration = VariableDeclaration | ParameterDeclaration | BindingElement | PropertyDeclaration | AnnotationPropertyDeclaration | PropertyAssignment | PropertySignature | JsxAttribute | ShorthandPropertyAssignment | EnumMember | JSDocPropertyTag | JSDocParameterTag; 4945 interface PropertyLikeDeclaration extends NamedDeclaration { 4946 readonly name: PropertyName; 4947 } 4948 interface ObjectBindingPattern extends Node { 4949 readonly kind: SyntaxKind.ObjectBindingPattern; 4950 readonly parent: VariableDeclaration | ParameterDeclaration | BindingElement; 4951 readonly elements: NodeArray<BindingElement>; 4952 } 4953 interface ArrayBindingPattern extends Node { 4954 readonly kind: SyntaxKind.ArrayBindingPattern; 4955 readonly parent: VariableDeclaration | ParameterDeclaration | BindingElement; 4956 readonly elements: NodeArray<ArrayBindingElement>; 4957 } 4958 type BindingPattern = ObjectBindingPattern | ArrayBindingPattern; 4959 type ArrayBindingElement = BindingElement | OmittedExpression; 4960 /** 4961 * Several node kinds share function-like features such as a signature, 4962 * a name, and a body. These nodes should extend FunctionLikeDeclarationBase. 4963 * Examples: 4964 * - FunctionDeclaration 4965 * - MethodDeclaration 4966 * - AccessorDeclaration 4967 */ 4968 interface FunctionLikeDeclarationBase extends SignatureDeclarationBase { 4969 _functionLikeDeclarationBrand: any; 4970 readonly asteriskToken?: AsteriskToken | undefined; 4971 readonly questionToken?: QuestionToken | undefined; 4972 readonly exclamationToken?: ExclamationToken | undefined; 4973 readonly body?: Block | Expression | undefined; 4974 } 4975 type FunctionLikeDeclaration = FunctionDeclaration | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration | ConstructorDeclaration | FunctionExpression | ArrowFunction; 4976 /** @deprecated Use SignatureDeclaration */ 4977 type FunctionLike = SignatureDeclaration; 4978 interface FunctionDeclaration extends FunctionLikeDeclarationBase, DeclarationStatement { 4979 readonly kind: SyntaxKind.FunctionDeclaration; 4980 readonly modifiers?: NodeArray<Modifier>; 4981 readonly name?: Identifier; 4982 readonly body?: FunctionBody; 4983 } 4984 interface MethodSignature extends SignatureDeclarationBase, TypeElement { 4985 readonly kind: SyntaxKind.MethodSignature; 4986 readonly parent: ObjectTypeDeclaration; 4987 readonly modifiers?: NodeArray<Modifier>; 4988 readonly name: PropertyName; 4989 } 4990 interface MethodDeclaration extends FunctionLikeDeclarationBase, ClassElement, ObjectLiteralElement, JSDocContainer { 4991 readonly kind: SyntaxKind.MethodDeclaration; 4992 readonly parent: ClassLikeDeclaration | ObjectLiteralExpression; 4993 readonly modifiers?: NodeArray<ModifierLike> | undefined; 4994 readonly name: PropertyName; 4995 readonly body?: FunctionBody | undefined; 4996 } 4997 interface ConstructorDeclaration extends FunctionLikeDeclarationBase, ClassElement, JSDocContainer { 4998 readonly kind: SyntaxKind.Constructor; 4999 readonly parent: ClassLikeDeclaration; 5000 readonly modifiers?: NodeArray<Modifier> | undefined; 5001 readonly body?: FunctionBody | undefined; 5002 } 5003 /** For when we encounter a semicolon in a class declaration. ES6 allows these as class elements. */ 5004 interface SemicolonClassElement extends ClassElement { 5005 readonly kind: SyntaxKind.SemicolonClassElement; 5006 readonly parent: ClassLikeDeclaration; 5007 } 5008 interface GetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer { 5009 readonly kind: SyntaxKind.GetAccessor; 5010 readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration; 5011 readonly modifiers?: NodeArray<ModifierLike>; 5012 readonly name: PropertyName; 5013 readonly body?: FunctionBody; 5014 } 5015 interface SetAccessorDeclaration extends FunctionLikeDeclarationBase, ClassElement, TypeElement, ObjectLiteralElement, JSDocContainer { 5016 readonly kind: SyntaxKind.SetAccessor; 5017 readonly parent: ClassLikeDeclaration | ObjectLiteralExpression | TypeLiteralNode | InterfaceDeclaration; 5018 readonly modifiers?: NodeArray<ModifierLike>; 5019 readonly name: PropertyName; 5020 readonly body?: FunctionBody; 5021 } 5022 type AccessorDeclaration = GetAccessorDeclaration | SetAccessorDeclaration; 5023 interface IndexSignatureDeclaration extends SignatureDeclarationBase, ClassElement, TypeElement { 5024 readonly kind: SyntaxKind.IndexSignature; 5025 readonly parent: ObjectTypeDeclaration; 5026 readonly modifiers?: NodeArray<Modifier>; 5027 readonly type: TypeNode; 5028 } 5029 interface ClassStaticBlockDeclaration extends ClassElement, JSDocContainer { 5030 readonly kind: SyntaxKind.ClassStaticBlockDeclaration; 5031 readonly parent: ClassDeclaration | ClassExpression; 5032 readonly body: Block; 5033 } 5034 interface TypeNode extends Node { 5035 _typeNodeBrand: any; 5036 } 5037 interface KeywordTypeNode<TKind extends KeywordTypeSyntaxKind = KeywordTypeSyntaxKind> extends KeywordToken<TKind>, TypeNode { 5038 readonly kind: TKind; 5039 } 5040 interface ImportTypeAssertionContainer extends Node { 5041 readonly kind: SyntaxKind.ImportTypeAssertionContainer; 5042 readonly parent: ImportTypeNode; 5043 readonly assertClause: AssertClause; 5044 readonly multiLine?: boolean; 5045 } 5046 interface ImportTypeNode extends NodeWithTypeArguments { 5047 readonly kind: SyntaxKind.ImportType; 5048 readonly isTypeOf: boolean; 5049 readonly argument: TypeNode; 5050 readonly assertions?: ImportTypeAssertionContainer; 5051 readonly qualifier?: EntityName; 5052 } 5053 interface ThisTypeNode extends TypeNode { 5054 readonly kind: SyntaxKind.ThisType; 5055 } 5056 type FunctionOrConstructorTypeNode = FunctionTypeNode | ConstructorTypeNode; 5057 interface FunctionOrConstructorTypeNodeBase extends TypeNode, SignatureDeclarationBase { 5058 readonly kind: SyntaxKind.FunctionType | SyntaxKind.ConstructorType; 5059 readonly type: TypeNode; 5060 } 5061 interface FunctionTypeNode extends FunctionOrConstructorTypeNodeBase { 5062 readonly kind: SyntaxKind.FunctionType; 5063 } 5064 interface FunctionTypeNode { 5065 /** @deprecated A function type cannot have modifiers */ 5066 readonly modifiers?: NodeArray<Modifier> | undefined; 5067 } 5068 interface ConstructorTypeNode extends FunctionOrConstructorTypeNodeBase { 5069 readonly kind: SyntaxKind.ConstructorType; 5070 readonly modifiers?: NodeArray<Modifier>; 5071 } 5072 interface NodeWithTypeArguments extends TypeNode { 5073 readonly typeArguments?: NodeArray<TypeNode>; 5074 } 5075 type TypeReferenceType = TypeReferenceNode | ExpressionWithTypeArguments; 5076 interface TypeReferenceNode extends NodeWithTypeArguments { 5077 readonly kind: SyntaxKind.TypeReference; 5078 readonly typeName: EntityName; 5079 } 5080 interface TypePredicateNode extends TypeNode { 5081 readonly kind: SyntaxKind.TypePredicate; 5082 readonly parent: SignatureDeclaration | JSDocTypeExpression; 5083 readonly assertsModifier?: AssertsKeyword; 5084 readonly parameterName: Identifier | ThisTypeNode; 5085 readonly type?: TypeNode; 5086 } 5087 interface TypeQueryNode extends NodeWithTypeArguments { 5088 readonly kind: SyntaxKind.TypeQuery; 5089 readonly exprName: EntityName; 5090 } 5091 interface TypeLiteralNode extends TypeNode, Declaration { 5092 readonly kind: SyntaxKind.TypeLiteral; 5093 readonly members: NodeArray<TypeElement>; 5094 } 5095 interface ArrayTypeNode extends TypeNode { 5096 readonly kind: SyntaxKind.ArrayType; 5097 readonly elementType: TypeNode; 5098 } 5099 interface TupleTypeNode extends TypeNode { 5100 readonly kind: SyntaxKind.TupleType; 5101 readonly elements: NodeArray<TypeNode | NamedTupleMember>; 5102 } 5103 interface NamedTupleMember extends TypeNode, JSDocContainer, Declaration { 5104 readonly kind: SyntaxKind.NamedTupleMember; 5105 readonly dotDotDotToken?: Token<SyntaxKind.DotDotDotToken>; 5106 readonly name: Identifier; 5107 readonly questionToken?: Token<SyntaxKind.QuestionToken>; 5108 readonly type: TypeNode; 5109 } 5110 interface OptionalTypeNode extends TypeNode { 5111 readonly kind: SyntaxKind.OptionalType; 5112 readonly type: TypeNode; 5113 } 5114 interface RestTypeNode extends TypeNode { 5115 readonly kind: SyntaxKind.RestType; 5116 readonly type: TypeNode; 5117 } 5118 type UnionOrIntersectionTypeNode = UnionTypeNode | IntersectionTypeNode; 5119 interface UnionTypeNode extends TypeNode { 5120 readonly kind: SyntaxKind.UnionType; 5121 readonly types: NodeArray<TypeNode>; 5122 } 5123 interface IntersectionTypeNode extends TypeNode { 5124 readonly kind: SyntaxKind.IntersectionType; 5125 readonly types: NodeArray<TypeNode>; 5126 } 5127 interface ConditionalTypeNode extends TypeNode { 5128 readonly kind: SyntaxKind.ConditionalType; 5129 readonly checkType: TypeNode; 5130 readonly extendsType: TypeNode; 5131 readonly trueType: TypeNode; 5132 readonly falseType: TypeNode; 5133 } 5134 interface InferTypeNode extends TypeNode { 5135 readonly kind: SyntaxKind.InferType; 5136 readonly typeParameter: TypeParameterDeclaration; 5137 } 5138 interface ParenthesizedTypeNode extends TypeNode { 5139 readonly kind: SyntaxKind.ParenthesizedType; 5140 readonly type: TypeNode; 5141 } 5142 interface TypeOperatorNode extends TypeNode { 5143 readonly kind: SyntaxKind.TypeOperator; 5144 readonly operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword; 5145 readonly type: TypeNode; 5146 } 5147 interface IndexedAccessTypeNode extends TypeNode { 5148 readonly kind: SyntaxKind.IndexedAccessType; 5149 readonly objectType: TypeNode; 5150 readonly indexType: TypeNode; 5151 } 5152 interface MappedTypeNode extends TypeNode, Declaration { 5153 readonly kind: SyntaxKind.MappedType; 5154 readonly readonlyToken?: ReadonlyKeyword | PlusToken | MinusToken; 5155 readonly typeParameter: TypeParameterDeclaration; 5156 readonly nameType?: TypeNode; 5157 readonly questionToken?: QuestionToken | PlusToken | MinusToken; 5158 readonly type?: TypeNode; 5159 /** Used only to produce grammar errors */ 5160 readonly members?: NodeArray<TypeElement>; 5161 } 5162 interface LiteralTypeNode extends TypeNode { 5163 readonly kind: SyntaxKind.LiteralType; 5164 readonly literal: NullLiteral | BooleanLiteral | LiteralExpression | PrefixUnaryExpression; 5165 } 5166 interface StringLiteral extends LiteralExpression, Declaration { 5167 readonly kind: SyntaxKind.StringLiteral; 5168 } 5169 type StringLiteralLike = StringLiteral | NoSubstitutionTemplateLiteral; 5170 type PropertyNameLiteral = Identifier | StringLiteralLike | NumericLiteral; 5171 interface TemplateLiteralTypeNode extends TypeNode { 5172 kind: SyntaxKind.TemplateLiteralType; 5173 readonly head: TemplateHead; 5174 readonly templateSpans: NodeArray<TemplateLiteralTypeSpan>; 5175 } 5176 interface TemplateLiteralTypeSpan extends TypeNode { 5177 readonly kind: SyntaxKind.TemplateLiteralTypeSpan; 5178 readonly parent: TemplateLiteralTypeNode; 5179 readonly type: TypeNode; 5180 readonly literal: TemplateMiddle | TemplateTail; 5181 } 5182 interface Expression extends Node { 5183 _expressionBrand: any; 5184 } 5185 interface OmittedExpression extends Expression { 5186 readonly kind: SyntaxKind.OmittedExpression; 5187 } 5188 interface PartiallyEmittedExpression extends LeftHandSideExpression { 5189 readonly kind: SyntaxKind.PartiallyEmittedExpression; 5190 readonly expression: Expression; 5191 } 5192 interface UnaryExpression extends Expression { 5193 _unaryExpressionBrand: any; 5194 } 5195 /** Deprecated, please use UpdateExpression */ 5196 type IncrementExpression = UpdateExpression; 5197 interface UpdateExpression extends UnaryExpression { 5198 _updateExpressionBrand: any; 5199 } 5200 type PrefixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken | SyntaxKind.PlusToken | SyntaxKind.MinusToken | SyntaxKind.TildeToken | SyntaxKind.ExclamationToken; 5201 interface PrefixUnaryExpression extends UpdateExpression { 5202 readonly kind: SyntaxKind.PrefixUnaryExpression; 5203 readonly operator: PrefixUnaryOperator; 5204 readonly operand: UnaryExpression; 5205 } 5206 type PostfixUnaryOperator = SyntaxKind.PlusPlusToken | SyntaxKind.MinusMinusToken; 5207 interface PostfixUnaryExpression extends UpdateExpression { 5208 readonly kind: SyntaxKind.PostfixUnaryExpression; 5209 readonly operand: LeftHandSideExpression; 5210 readonly operator: PostfixUnaryOperator; 5211 } 5212 interface LeftHandSideExpression extends UpdateExpression { 5213 _leftHandSideExpressionBrand: any; 5214 } 5215 interface MemberExpression extends LeftHandSideExpression { 5216 _memberExpressionBrand: any; 5217 } 5218 interface PrimaryExpression extends MemberExpression { 5219 _primaryExpressionBrand: any; 5220 } 5221 interface NullLiteral extends PrimaryExpression { 5222 readonly kind: SyntaxKind.NullKeyword; 5223 } 5224 interface TrueLiteral extends PrimaryExpression { 5225 readonly kind: SyntaxKind.TrueKeyword; 5226 } 5227 interface FalseLiteral extends PrimaryExpression { 5228 readonly kind: SyntaxKind.FalseKeyword; 5229 } 5230 type BooleanLiteral = TrueLiteral | FalseLiteral; 5231 interface ThisExpression extends PrimaryExpression { 5232 readonly kind: SyntaxKind.ThisKeyword; 5233 } 5234 interface SuperExpression extends PrimaryExpression { 5235 readonly kind: SyntaxKind.SuperKeyword; 5236 } 5237 interface ImportExpression extends PrimaryExpression { 5238 readonly kind: SyntaxKind.ImportKeyword; 5239 } 5240 interface DeleteExpression extends UnaryExpression { 5241 readonly kind: SyntaxKind.DeleteExpression; 5242 readonly expression: UnaryExpression; 5243 } 5244 interface TypeOfExpression extends UnaryExpression { 5245 readonly kind: SyntaxKind.TypeOfExpression; 5246 readonly expression: UnaryExpression; 5247 } 5248 interface VoidExpression extends UnaryExpression { 5249 readonly kind: SyntaxKind.VoidExpression; 5250 readonly expression: UnaryExpression; 5251 } 5252 interface AwaitExpression extends UnaryExpression { 5253 readonly kind: SyntaxKind.AwaitExpression; 5254 readonly expression: UnaryExpression; 5255 } 5256 interface YieldExpression extends Expression { 5257 readonly kind: SyntaxKind.YieldExpression; 5258 readonly asteriskToken?: AsteriskToken; 5259 readonly expression?: Expression; 5260 } 5261 interface SyntheticExpression extends Expression { 5262 readonly kind: SyntaxKind.SyntheticExpression; 5263 readonly isSpread: boolean; 5264 readonly type: Type; 5265 readonly tupleNameSource?: ParameterDeclaration | NamedTupleMember; 5266 } 5267 type ExponentiationOperator = SyntaxKind.AsteriskAsteriskToken; 5268 type MultiplicativeOperator = SyntaxKind.AsteriskToken | SyntaxKind.SlashToken | SyntaxKind.PercentToken; 5269 type MultiplicativeOperatorOrHigher = ExponentiationOperator | MultiplicativeOperator; 5270 type AdditiveOperator = SyntaxKind.PlusToken | SyntaxKind.MinusToken; 5271 type AdditiveOperatorOrHigher = MultiplicativeOperatorOrHigher | AdditiveOperator; 5272 type ShiftOperator = SyntaxKind.LessThanLessThanToken | SyntaxKind.GreaterThanGreaterThanToken | SyntaxKind.GreaterThanGreaterThanGreaterThanToken; 5273 type ShiftOperatorOrHigher = AdditiveOperatorOrHigher | ShiftOperator; 5274 type RelationalOperator = SyntaxKind.LessThanToken | SyntaxKind.LessThanEqualsToken | SyntaxKind.GreaterThanToken | SyntaxKind.GreaterThanEqualsToken | SyntaxKind.InstanceOfKeyword | SyntaxKind.InKeyword; 5275 type RelationalOperatorOrHigher = ShiftOperatorOrHigher | RelationalOperator; 5276 type EqualityOperator = SyntaxKind.EqualsEqualsToken | SyntaxKind.EqualsEqualsEqualsToken | SyntaxKind.ExclamationEqualsEqualsToken | SyntaxKind.ExclamationEqualsToken; 5277 type EqualityOperatorOrHigher = RelationalOperatorOrHigher | EqualityOperator; 5278 type BitwiseOperator = SyntaxKind.AmpersandToken | SyntaxKind.BarToken | SyntaxKind.CaretToken; 5279 type BitwiseOperatorOrHigher = EqualityOperatorOrHigher | BitwiseOperator; 5280 type LogicalOperator = SyntaxKind.AmpersandAmpersandToken | SyntaxKind.BarBarToken; 5281 type LogicalOperatorOrHigher = BitwiseOperatorOrHigher | LogicalOperator; 5282 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; 5283 type AssignmentOperator = SyntaxKind.EqualsToken | CompoundAssignmentOperator; 5284 type AssignmentOperatorOrHigher = SyntaxKind.QuestionQuestionToken | LogicalOperatorOrHigher | AssignmentOperator; 5285 type BinaryOperator = AssignmentOperatorOrHigher | SyntaxKind.CommaToken; 5286 type LogicalOrCoalescingAssignmentOperator = SyntaxKind.AmpersandAmpersandEqualsToken | SyntaxKind.BarBarEqualsToken | SyntaxKind.QuestionQuestionEqualsToken; 5287 type BinaryOperatorToken = Token<BinaryOperator>; 5288 interface BinaryExpression extends Expression, Declaration { 5289 readonly kind: SyntaxKind.BinaryExpression; 5290 readonly left: Expression; 5291 readonly operatorToken: BinaryOperatorToken; 5292 readonly right: Expression; 5293 } 5294 type AssignmentOperatorToken = Token<AssignmentOperator>; 5295 interface AssignmentExpression<TOperator extends AssignmentOperatorToken> extends BinaryExpression { 5296 readonly left: LeftHandSideExpression; 5297 readonly operatorToken: TOperator; 5298 } 5299 interface ObjectDestructuringAssignment extends AssignmentExpression<EqualsToken> { 5300 readonly left: ObjectLiteralExpression; 5301 } 5302 interface ArrayDestructuringAssignment extends AssignmentExpression<EqualsToken> { 5303 readonly left: ArrayLiteralExpression; 5304 } 5305 type DestructuringAssignment = ObjectDestructuringAssignment | ArrayDestructuringAssignment; 5306 type BindingOrAssignmentElement = VariableDeclaration | ParameterDeclaration | ObjectBindingOrAssignmentElement | ArrayBindingOrAssignmentElement; 5307 type ObjectBindingOrAssignmentElement = BindingElement | PropertyAssignment | ShorthandPropertyAssignment | SpreadAssignment; 5308 type ArrayBindingOrAssignmentElement = BindingElement | OmittedExpression | SpreadElement | ArrayLiteralExpression | ObjectLiteralExpression | AssignmentExpression<EqualsToken> | Identifier | PropertyAccessExpression | ElementAccessExpression; 5309 type BindingOrAssignmentElementRestIndicator = DotDotDotToken | SpreadElement | SpreadAssignment; 5310 type BindingOrAssignmentElementTarget = BindingOrAssignmentPattern | Identifier | PropertyAccessExpression | ElementAccessExpression | OmittedExpression; 5311 type ObjectBindingOrAssignmentPattern = ObjectBindingPattern | ObjectLiteralExpression; 5312 type ArrayBindingOrAssignmentPattern = ArrayBindingPattern | ArrayLiteralExpression; 5313 type AssignmentPattern = ObjectLiteralExpression | ArrayLiteralExpression; 5314 type BindingOrAssignmentPattern = ObjectBindingOrAssignmentPattern | ArrayBindingOrAssignmentPattern; 5315 interface ConditionalExpression extends Expression { 5316 readonly kind: SyntaxKind.ConditionalExpression; 5317 readonly condition: Expression; 5318 readonly questionToken: QuestionToken; 5319 readonly whenTrue: Expression; 5320 readonly colonToken: ColonToken; 5321 readonly whenFalse: Expression; 5322 } 5323 type FunctionBody = Block; 5324 type ConciseBody = FunctionBody | Expression; 5325 interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclarationBase, JSDocContainer { 5326 readonly kind: SyntaxKind.FunctionExpression; 5327 readonly modifiers?: NodeArray<Modifier>; 5328 readonly name?: Identifier; 5329 readonly body: FunctionBody; 5330 } 5331 interface EtsComponentExpression extends PrimaryExpression, Declaration { 5332 readonly kind: SyntaxKind.EtsComponentExpression; 5333 readonly expression: LeftHandSideExpression; 5334 readonly typeArguments?: NodeArray<TypeNode>; 5335 readonly arguments: NodeArray<Expression>; 5336 readonly body?: Block; 5337 } 5338 interface ArrowFunction extends Expression, FunctionLikeDeclarationBase, JSDocContainer { 5339 readonly kind: SyntaxKind.ArrowFunction; 5340 readonly modifiers?: NodeArray<Modifier>; 5341 readonly equalsGreaterThanToken: EqualsGreaterThanToken; 5342 readonly body: ConciseBody; 5343 readonly name: never; 5344 } 5345 interface LiteralLikeNode extends Node { 5346 text: string; 5347 isUnterminated?: boolean; 5348 hasExtendedUnicodeEscape?: boolean; 5349 } 5350 interface TemplateLiteralLikeNode extends LiteralLikeNode { 5351 rawText?: string; 5352 } 5353 interface LiteralExpression extends LiteralLikeNode, PrimaryExpression { 5354 _literalExpressionBrand: any; 5355 } 5356 interface RegularExpressionLiteral extends LiteralExpression { 5357 readonly kind: SyntaxKind.RegularExpressionLiteral; 5358 } 5359 interface NoSubstitutionTemplateLiteral extends LiteralExpression, TemplateLiteralLikeNode, Declaration { 5360 readonly kind: SyntaxKind.NoSubstitutionTemplateLiteral; 5361 } 5362 enum TokenFlags { 5363 None = 0, 5364 Scientific = 16, 5365 Octal = 32, 5366 HexSpecifier = 64, 5367 BinarySpecifier = 128, 5368 OctalSpecifier = 256 5369 } 5370 interface NumericLiteral extends LiteralExpression, Declaration { 5371 readonly kind: SyntaxKind.NumericLiteral; 5372 } 5373 interface BigIntLiteral extends LiteralExpression { 5374 readonly kind: SyntaxKind.BigIntLiteral; 5375 } 5376 type LiteralToken = NumericLiteral | BigIntLiteral | StringLiteral | JsxText | RegularExpressionLiteral | NoSubstitutionTemplateLiteral; 5377 interface TemplateHead extends TemplateLiteralLikeNode { 5378 readonly kind: SyntaxKind.TemplateHead; 5379 readonly parent: TemplateExpression | TemplateLiteralTypeNode; 5380 } 5381 interface TemplateMiddle extends TemplateLiteralLikeNode { 5382 readonly kind: SyntaxKind.TemplateMiddle; 5383 readonly parent: TemplateSpan | TemplateLiteralTypeSpan; 5384 } 5385 interface TemplateTail extends TemplateLiteralLikeNode { 5386 readonly kind: SyntaxKind.TemplateTail; 5387 readonly parent: TemplateSpan | TemplateLiteralTypeSpan; 5388 } 5389 type PseudoLiteralToken = TemplateHead | TemplateMiddle | TemplateTail; 5390 type TemplateLiteralToken = NoSubstitutionTemplateLiteral | PseudoLiteralToken; 5391 interface TemplateExpression extends PrimaryExpression { 5392 readonly kind: SyntaxKind.TemplateExpression; 5393 readonly head: TemplateHead; 5394 readonly templateSpans: NodeArray<TemplateSpan>; 5395 } 5396 type TemplateLiteral = TemplateExpression | NoSubstitutionTemplateLiteral; 5397 interface TemplateSpan extends Node { 5398 readonly kind: SyntaxKind.TemplateSpan; 5399 readonly parent: TemplateExpression; 5400 readonly expression: Expression; 5401 readonly literal: TemplateMiddle | TemplateTail; 5402 } 5403 interface ParenthesizedExpression extends PrimaryExpression, JSDocContainer { 5404 readonly kind: SyntaxKind.ParenthesizedExpression; 5405 readonly expression: Expression; 5406 } 5407 interface ArrayLiteralExpression extends PrimaryExpression { 5408 readonly kind: SyntaxKind.ArrayLiteralExpression; 5409 readonly elements: NodeArray<Expression>; 5410 } 5411 interface SpreadElement extends Expression { 5412 readonly kind: SyntaxKind.SpreadElement; 5413 readonly parent: ArrayLiteralExpression | CallExpression | NewExpression; 5414 readonly expression: Expression; 5415 } 5416 /** 5417 * This interface is a base interface for ObjectLiteralExpression and JSXAttributes to extend from. JSXAttributes is similar to 5418 * ObjectLiteralExpression in that it contains array of properties; however, JSXAttributes' properties can only be 5419 * JSXAttribute or JSXSpreadAttribute. ObjectLiteralExpression, on the other hand, can only have properties of type 5420 * ObjectLiteralElement (e.g. PropertyAssignment, ShorthandPropertyAssignment etc.) 5421 */ 5422 interface ObjectLiteralExpressionBase<T extends ObjectLiteralElement> extends PrimaryExpression, Declaration { 5423 readonly properties: NodeArray<T>; 5424 } 5425 interface ObjectLiteralExpression extends ObjectLiteralExpressionBase<ObjectLiteralElementLike> { 5426 readonly kind: SyntaxKind.ObjectLiteralExpression; 5427 } 5428 type EntityNameExpression = Identifier | PropertyAccessEntityNameExpression; 5429 type EntityNameOrEntityNameExpression = EntityName | EntityNameExpression; 5430 type AccessExpression = PropertyAccessExpression | ElementAccessExpression; 5431 interface PropertyAccessExpression extends MemberExpression, NamedDeclaration { 5432 readonly kind: SyntaxKind.PropertyAccessExpression; 5433 readonly expression: LeftHandSideExpression; 5434 readonly questionDotToken?: QuestionDotToken; 5435 readonly name: MemberName; 5436 } 5437 interface PropertyAccessChain extends PropertyAccessExpression { 5438 _optionalChainBrand: any; 5439 readonly name: MemberName; 5440 } 5441 interface SuperPropertyAccessExpression extends PropertyAccessExpression { 5442 readonly expression: SuperExpression; 5443 } 5444 /** Brand for a PropertyAccessExpression which, like a QualifiedName, consists of a sequence of identifiers separated by dots. */ 5445 interface PropertyAccessEntityNameExpression extends PropertyAccessExpression { 5446 _propertyAccessExpressionLikeQualifiedNameBrand?: any; 5447 readonly expression: EntityNameExpression; 5448 readonly name: Identifier; 5449 } 5450 interface ElementAccessExpression extends MemberExpression { 5451 readonly kind: SyntaxKind.ElementAccessExpression; 5452 readonly expression: LeftHandSideExpression; 5453 readonly questionDotToken?: QuestionDotToken; 5454 readonly argumentExpression: Expression; 5455 } 5456 interface ElementAccessChain extends ElementAccessExpression { 5457 _optionalChainBrand: any; 5458 } 5459 interface SuperElementAccessExpression extends ElementAccessExpression { 5460 readonly expression: SuperExpression; 5461 } 5462 type SuperProperty = SuperPropertyAccessExpression | SuperElementAccessExpression; 5463 interface CallExpression extends LeftHandSideExpression, Declaration { 5464 readonly kind: SyntaxKind.CallExpression; 5465 readonly expression: LeftHandSideExpression; 5466 readonly questionDotToken?: QuestionDotToken; 5467 readonly typeArguments?: NodeArray<TypeNode>; 5468 readonly arguments: NodeArray<Expression>; 5469 } 5470 interface CallChain extends CallExpression { 5471 _optionalChainBrand: any; 5472 } 5473 type OptionalChain = PropertyAccessChain | ElementAccessChain | CallChain | NonNullChain; 5474 interface SuperCall extends CallExpression { 5475 readonly expression: SuperExpression; 5476 } 5477 interface ImportCall extends CallExpression { 5478 readonly expression: ImportExpression; 5479 } 5480 interface ExpressionWithTypeArguments extends MemberExpression, NodeWithTypeArguments { 5481 readonly kind: SyntaxKind.ExpressionWithTypeArguments; 5482 readonly expression: LeftHandSideExpression; 5483 } 5484 interface NewExpression extends PrimaryExpression, Declaration { 5485 readonly kind: SyntaxKind.NewExpression; 5486 readonly expression: LeftHandSideExpression; 5487 readonly typeArguments?: NodeArray<TypeNode>; 5488 readonly arguments?: NodeArray<Expression>; 5489 } 5490 interface TaggedTemplateExpression extends MemberExpression { 5491 readonly kind: SyntaxKind.TaggedTemplateExpression; 5492 readonly tag: LeftHandSideExpression; 5493 readonly typeArguments?: NodeArray<TypeNode>; 5494 readonly template: TemplateLiteral; 5495 } 5496 type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression | Decorator | JsxOpeningLikeElement | EtsComponentExpression; 5497 interface AsExpression extends Expression { 5498 readonly kind: SyntaxKind.AsExpression; 5499 readonly expression: Expression; 5500 readonly type: TypeNode; 5501 } 5502 interface TypeAssertion extends UnaryExpression { 5503 readonly kind: SyntaxKind.TypeAssertionExpression; 5504 readonly type: TypeNode; 5505 readonly expression: UnaryExpression; 5506 } 5507 interface SatisfiesExpression extends Expression { 5508 readonly kind: SyntaxKind.SatisfiesExpression; 5509 readonly expression: Expression; 5510 readonly type: TypeNode; 5511 } 5512 type AssertionExpression = TypeAssertion | AsExpression; 5513 interface NonNullExpression extends LeftHandSideExpression { 5514 readonly kind: SyntaxKind.NonNullExpression; 5515 readonly expression: Expression; 5516 } 5517 interface NonNullChain extends NonNullExpression { 5518 _optionalChainBrand: any; 5519 } 5520 interface MetaProperty extends PrimaryExpression { 5521 readonly kind: SyntaxKind.MetaProperty; 5522 readonly keywordToken: SyntaxKind.NewKeyword | SyntaxKind.ImportKeyword; 5523 readonly name: Identifier; 5524 } 5525 interface JsxElement extends PrimaryExpression { 5526 readonly kind: SyntaxKind.JsxElement; 5527 readonly openingElement: JsxOpeningElement; 5528 readonly children: NodeArray<JsxChild>; 5529 readonly closingElement: JsxClosingElement; 5530 } 5531 type JsxOpeningLikeElement = JsxSelfClosingElement | JsxOpeningElement; 5532 type JsxAttributeLike = JsxAttribute | JsxSpreadAttribute; 5533 type JsxTagNameExpression = Identifier | ThisExpression | JsxTagNamePropertyAccess; 5534 interface JsxTagNamePropertyAccess extends PropertyAccessExpression { 5535 readonly expression: JsxTagNameExpression; 5536 } 5537 interface JsxAttributes extends ObjectLiteralExpressionBase<JsxAttributeLike> { 5538 readonly kind: SyntaxKind.JsxAttributes; 5539 readonly parent: JsxOpeningLikeElement; 5540 } 5541 interface JsxOpeningElement extends Expression { 5542 readonly kind: SyntaxKind.JsxOpeningElement; 5543 readonly parent: JsxElement; 5544 readonly tagName: JsxTagNameExpression; 5545 readonly typeArguments?: NodeArray<TypeNode>; 5546 readonly attributes: JsxAttributes; 5547 } 5548 interface JsxSelfClosingElement extends PrimaryExpression { 5549 readonly kind: SyntaxKind.JsxSelfClosingElement; 5550 readonly tagName: JsxTagNameExpression; 5551 readonly typeArguments?: NodeArray<TypeNode>; 5552 readonly attributes: JsxAttributes; 5553 } 5554 interface JsxFragment extends PrimaryExpression { 5555 readonly kind: SyntaxKind.JsxFragment; 5556 readonly openingFragment: JsxOpeningFragment; 5557 readonly children: NodeArray<JsxChild>; 5558 readonly closingFragment: JsxClosingFragment; 5559 } 5560 interface JsxOpeningFragment extends Expression { 5561 readonly kind: SyntaxKind.JsxOpeningFragment; 5562 readonly parent: JsxFragment; 5563 } 5564 interface JsxClosingFragment extends Expression { 5565 readonly kind: SyntaxKind.JsxClosingFragment; 5566 readonly parent: JsxFragment; 5567 } 5568 interface JsxAttribute extends ObjectLiteralElement { 5569 readonly kind: SyntaxKind.JsxAttribute; 5570 readonly parent: JsxAttributes; 5571 readonly name: Identifier; 5572 readonly initializer?: JsxAttributeValue; 5573 } 5574 type JsxAttributeValue = StringLiteral | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment; 5575 interface JsxSpreadAttribute extends ObjectLiteralElement { 5576 readonly kind: SyntaxKind.JsxSpreadAttribute; 5577 readonly parent: JsxAttributes; 5578 readonly expression: Expression; 5579 } 5580 interface JsxClosingElement extends Node { 5581 readonly kind: SyntaxKind.JsxClosingElement; 5582 readonly parent: JsxElement; 5583 readonly tagName: JsxTagNameExpression; 5584 } 5585 interface JsxExpression extends Expression { 5586 readonly kind: SyntaxKind.JsxExpression; 5587 readonly parent: JsxElement | JsxFragment | JsxAttributeLike; 5588 readonly dotDotDotToken?: Token<SyntaxKind.DotDotDotToken>; 5589 readonly expression?: Expression; 5590 } 5591 interface JsxText extends LiteralLikeNode { 5592 readonly kind: SyntaxKind.JsxText; 5593 readonly parent: JsxElement | JsxFragment; 5594 readonly containsOnlyTriviaWhiteSpaces: boolean; 5595 } 5596 type JsxChild = JsxText | JsxExpression | JsxElement | JsxSelfClosingElement | JsxFragment; 5597 interface Statement extends Node, JSDocContainer { 5598 _statementBrand: any; 5599 } 5600 interface NotEmittedStatement extends Statement { 5601 readonly kind: SyntaxKind.NotEmittedStatement; 5602 } 5603 /** 5604 * A list of comma-separated expressions. This node is only created by transformations. 5605 */ 5606 interface CommaListExpression extends Expression { 5607 readonly kind: SyntaxKind.CommaListExpression; 5608 readonly elements: NodeArray<Expression>; 5609 } 5610 interface EmptyStatement extends Statement { 5611 readonly kind: SyntaxKind.EmptyStatement; 5612 } 5613 interface DebuggerStatement extends Statement { 5614 readonly kind: SyntaxKind.DebuggerStatement; 5615 } 5616 interface MissingDeclaration extends DeclarationStatement { 5617 readonly kind: SyntaxKind.MissingDeclaration; 5618 readonly name?: Identifier; 5619 } 5620 type BlockLike = SourceFile | Block | ModuleBlock | CaseOrDefaultClause; 5621 interface Block extends Statement { 5622 readonly kind: SyntaxKind.Block; 5623 readonly statements: NodeArray<Statement>; 5624 } 5625 interface VariableStatement extends Statement { 5626 readonly kind: SyntaxKind.VariableStatement; 5627 readonly modifiers?: NodeArray<Modifier>; 5628 readonly declarationList: VariableDeclarationList; 5629 } 5630 interface ExpressionStatement extends Statement { 5631 readonly kind: SyntaxKind.ExpressionStatement; 5632 readonly expression: Expression; 5633 } 5634 interface IfStatement extends Statement { 5635 readonly kind: SyntaxKind.IfStatement; 5636 readonly expression: Expression; 5637 readonly thenStatement: Statement; 5638 readonly elseStatement?: Statement; 5639 } 5640 interface IterationStatement extends Statement { 5641 readonly statement: Statement; 5642 } 5643 interface DoStatement extends IterationStatement { 5644 readonly kind: SyntaxKind.DoStatement; 5645 readonly expression: Expression; 5646 } 5647 interface WhileStatement extends IterationStatement { 5648 readonly kind: SyntaxKind.WhileStatement; 5649 readonly expression: Expression; 5650 } 5651 type ForInitializer = VariableDeclarationList | Expression; 5652 interface ForStatement extends IterationStatement { 5653 readonly kind: SyntaxKind.ForStatement; 5654 readonly initializer?: ForInitializer; 5655 readonly condition?: Expression; 5656 readonly incrementor?: Expression; 5657 } 5658 type ForInOrOfStatement = ForInStatement | ForOfStatement; 5659 interface ForInStatement extends IterationStatement { 5660 readonly kind: SyntaxKind.ForInStatement; 5661 readonly initializer: ForInitializer; 5662 readonly expression: Expression; 5663 } 5664 interface ForOfStatement extends IterationStatement { 5665 readonly kind: SyntaxKind.ForOfStatement; 5666 readonly awaitModifier?: AwaitKeyword; 5667 readonly initializer: ForInitializer; 5668 readonly expression: Expression; 5669 } 5670 interface BreakStatement extends Statement { 5671 readonly kind: SyntaxKind.BreakStatement; 5672 readonly label?: Identifier; 5673 } 5674 interface ContinueStatement extends Statement { 5675 readonly kind: SyntaxKind.ContinueStatement; 5676 readonly label?: Identifier; 5677 } 5678 type BreakOrContinueStatement = BreakStatement | ContinueStatement; 5679 interface ReturnStatement extends Statement { 5680 readonly kind: SyntaxKind.ReturnStatement; 5681 readonly expression?: Expression; 5682 } 5683 interface WithStatement extends Statement { 5684 readonly kind: SyntaxKind.WithStatement; 5685 readonly expression: Expression; 5686 readonly statement: Statement; 5687 } 5688 interface SwitchStatement extends Statement { 5689 readonly kind: SyntaxKind.SwitchStatement; 5690 readonly expression: Expression; 5691 readonly caseBlock: CaseBlock; 5692 possiblyExhaustive?: boolean; 5693 } 5694 interface CaseBlock extends Node { 5695 readonly kind: SyntaxKind.CaseBlock; 5696 readonly parent: SwitchStatement; 5697 readonly clauses: NodeArray<CaseOrDefaultClause>; 5698 } 5699 interface CaseClause extends Node, JSDocContainer { 5700 readonly kind: SyntaxKind.CaseClause; 5701 readonly parent: CaseBlock; 5702 readonly expression: Expression; 5703 readonly statements: NodeArray<Statement>; 5704 } 5705 interface DefaultClause extends Node { 5706 readonly kind: SyntaxKind.DefaultClause; 5707 readonly parent: CaseBlock; 5708 readonly statements: NodeArray<Statement>; 5709 } 5710 type CaseOrDefaultClause = CaseClause | DefaultClause; 5711 interface LabeledStatement extends Statement { 5712 readonly kind: SyntaxKind.LabeledStatement; 5713 readonly label: Identifier; 5714 readonly statement: Statement; 5715 } 5716 interface ThrowStatement extends Statement { 5717 readonly kind: SyntaxKind.ThrowStatement; 5718 readonly expression: Expression; 5719 } 5720 interface TryStatement extends Statement { 5721 readonly kind: SyntaxKind.TryStatement; 5722 readonly tryBlock: Block; 5723 readonly catchClause?: CatchClause; 5724 readonly finallyBlock?: Block; 5725 } 5726 interface CatchClause extends Node { 5727 readonly kind: SyntaxKind.CatchClause; 5728 readonly parent: TryStatement; 5729 readonly variableDeclaration?: VariableDeclaration; 5730 readonly block: Block; 5731 } 5732 type ObjectTypeDeclaration = ClassLikeDeclaration | InterfaceDeclaration | TypeLiteralNode; 5733 type DeclarationWithTypeParameters = DeclarationWithTypeParameterChildren | JSDocTypedefTag | JSDocCallbackTag | JSDocSignature; 5734 type DeclarationWithTypeParameterChildren = SignatureDeclaration | ClassLikeDeclaration | InterfaceDeclaration | TypeAliasDeclaration | JSDocTemplateTag; 5735 interface ClassLikeDeclarationBase extends NamedDeclaration, JSDocContainer { 5736 readonly kind: SyntaxKind.ClassDeclaration | SyntaxKind.ClassExpression | SyntaxKind.StructDeclaration | SyntaxKind.AnnotationDeclaration; 5737 readonly name?: Identifier; 5738 readonly typeParameters?: NodeArray<TypeParameterDeclaration>; 5739 readonly heritageClauses?: NodeArray<HeritageClause>; 5740 readonly members: NodeArray<ClassElement>; 5741 } 5742 interface ClassDeclaration extends ClassLikeDeclarationBase, DeclarationStatement { 5743 readonly kind: SyntaxKind.ClassDeclaration; 5744 readonly modifiers?: NodeArray<ModifierLike>; 5745 /** May be undefined in `export default class { ... }`. */ 5746 readonly name?: Identifier; 5747 } 5748 interface StructDeclaration extends ClassLikeDeclarationBase, DeclarationStatement { 5749 readonly kind: SyntaxKind.StructDeclaration; 5750 readonly modifiers?: NodeArray<ModifierLike>; 5751 /** May be undefined in `export default class { ... }`. */ 5752 readonly name?: Identifier; 5753 } 5754 interface AnnotationDeclaration extends DeclarationStatement { 5755 readonly kind: SyntaxKind.AnnotationDeclaration; 5756 readonly modifiers?: NodeArray<ModifierLike>; 5757 readonly name: Identifier; 5758 readonly members: NodeArray<AnnotationElement>; 5759 } 5760 interface ClassExpression extends ClassLikeDeclarationBase, PrimaryExpression { 5761 readonly kind: SyntaxKind.ClassExpression; 5762 readonly modifiers?: NodeArray<ModifierLike>; 5763 } 5764 type ClassLikeDeclaration = ClassDeclaration | ClassExpression | StructDeclaration; 5765 interface ClassElement extends NamedDeclaration { 5766 _classElementBrand: any; 5767 readonly name?: PropertyName; 5768 } 5769 interface AnnotationElement extends NamedDeclaration { 5770 _annnotationElementBrand: any; 5771 readonly name: PropertyName; 5772 } 5773 interface TypeElement extends NamedDeclaration { 5774 _typeElementBrand: any; 5775 readonly name?: PropertyName; 5776 readonly questionToken?: QuestionToken | undefined; 5777 } 5778 interface InterfaceDeclaration extends DeclarationStatement, JSDocContainer { 5779 readonly kind: SyntaxKind.InterfaceDeclaration; 5780 readonly modifiers?: NodeArray<Modifier>; 5781 readonly name: Identifier; 5782 readonly typeParameters?: NodeArray<TypeParameterDeclaration>; 5783 readonly heritageClauses?: NodeArray<HeritageClause>; 5784 readonly members: NodeArray<TypeElement>; 5785 } 5786 interface HeritageClause extends Node { 5787 readonly kind: SyntaxKind.HeritageClause; 5788 readonly parent: InterfaceDeclaration | ClassLikeDeclaration; 5789 readonly token: SyntaxKind.ExtendsKeyword | SyntaxKind.ImplementsKeyword; 5790 readonly types: NodeArray<ExpressionWithTypeArguments>; 5791 } 5792 interface TypeAliasDeclaration extends DeclarationStatement, JSDocContainer { 5793 readonly kind: SyntaxKind.TypeAliasDeclaration; 5794 readonly modifiers?: NodeArray<Modifier>; 5795 readonly name: Identifier; 5796 readonly typeParameters?: NodeArray<TypeParameterDeclaration>; 5797 readonly type: TypeNode; 5798 } 5799 interface EnumMember extends NamedDeclaration, JSDocContainer { 5800 readonly kind: SyntaxKind.EnumMember; 5801 readonly parent: EnumDeclaration; 5802 readonly name: PropertyName; 5803 readonly initializer?: Expression; 5804 } 5805 interface EnumDeclaration extends DeclarationStatement, JSDocContainer { 5806 readonly kind: SyntaxKind.EnumDeclaration; 5807 readonly modifiers?: NodeArray<Modifier>; 5808 readonly name: Identifier; 5809 readonly members: NodeArray<EnumMember>; 5810 } 5811 type ModuleName = Identifier | StringLiteral; 5812 type ModuleBody = NamespaceBody | JSDocNamespaceBody; 5813 interface ModuleDeclaration extends DeclarationStatement, JSDocContainer { 5814 readonly kind: SyntaxKind.ModuleDeclaration; 5815 readonly parent: ModuleBody | SourceFile; 5816 readonly modifiers?: NodeArray<Modifier>; 5817 readonly name: ModuleName; 5818 readonly body?: ModuleBody | JSDocNamespaceDeclaration; 5819 } 5820 type NamespaceBody = ModuleBlock | NamespaceDeclaration; 5821 interface NamespaceDeclaration extends ModuleDeclaration { 5822 readonly name: Identifier; 5823 readonly body: NamespaceBody; 5824 } 5825 type JSDocNamespaceBody = Identifier | JSDocNamespaceDeclaration; 5826 interface JSDocNamespaceDeclaration extends ModuleDeclaration { 5827 readonly name: Identifier; 5828 readonly body?: JSDocNamespaceBody; 5829 } 5830 interface ModuleBlock extends Node, Statement { 5831 readonly kind: SyntaxKind.ModuleBlock; 5832 readonly parent: ModuleDeclaration; 5833 readonly statements: NodeArray<Statement>; 5834 } 5835 type ModuleReference = EntityName | ExternalModuleReference; 5836 /** 5837 * One of: 5838 * - import x = require("mod"); 5839 * - import x = M.x; 5840 */ 5841 interface ImportEqualsDeclaration extends DeclarationStatement, JSDocContainer { 5842 readonly kind: SyntaxKind.ImportEqualsDeclaration; 5843 readonly parent: SourceFile | ModuleBlock; 5844 readonly modifiers?: NodeArray<Modifier>; 5845 readonly name: Identifier; 5846 readonly isTypeOnly: boolean; 5847 readonly moduleReference: ModuleReference; 5848 } 5849 interface ExternalModuleReference extends Node { 5850 readonly kind: SyntaxKind.ExternalModuleReference; 5851 readonly parent: ImportEqualsDeclaration; 5852 readonly expression: Expression; 5853 } 5854 interface ImportDeclaration extends Statement { 5855 readonly kind: SyntaxKind.ImportDeclaration; 5856 readonly parent: SourceFile | ModuleBlock; 5857 readonly modifiers?: NodeArray<Modifier>; 5858 readonly importClause?: ImportClause; 5859 /** If this is not a StringLiteral it will be a grammar error. */ 5860 readonly moduleSpecifier: Expression; 5861 readonly assertClause?: AssertClause; 5862 } 5863 type NamedImportBindings = NamespaceImport | NamedImports; 5864 type NamedExportBindings = NamespaceExport | NamedExports; 5865 interface ImportClause extends NamedDeclaration { 5866 readonly kind: SyntaxKind.ImportClause; 5867 readonly parent: ImportDeclaration; 5868 readonly isTypeOnly: boolean; 5869 readonly name?: Identifier; 5870 readonly namedBindings?: NamedImportBindings; 5871 readonly isLazy?: boolean; 5872 } 5873 type AssertionKey = Identifier | StringLiteral; 5874 interface AssertEntry extends Node { 5875 readonly kind: SyntaxKind.AssertEntry; 5876 readonly parent: AssertClause; 5877 readonly name: AssertionKey; 5878 readonly value: Expression; 5879 } 5880 interface AssertClause extends Node { 5881 readonly kind: SyntaxKind.AssertClause; 5882 readonly parent: ImportDeclaration | ExportDeclaration; 5883 readonly elements: NodeArray<AssertEntry>; 5884 readonly multiLine?: boolean; 5885 } 5886 interface NamespaceImport extends NamedDeclaration { 5887 readonly kind: SyntaxKind.NamespaceImport; 5888 readonly parent: ImportClause; 5889 readonly name: Identifier; 5890 } 5891 interface NamespaceExport extends NamedDeclaration { 5892 readonly kind: SyntaxKind.NamespaceExport; 5893 readonly parent: ExportDeclaration; 5894 readonly name: Identifier; 5895 } 5896 interface NamespaceExportDeclaration extends DeclarationStatement, JSDocContainer { 5897 readonly kind: SyntaxKind.NamespaceExportDeclaration; 5898 readonly name: Identifier; 5899 } 5900 interface ExportDeclaration extends DeclarationStatement, JSDocContainer { 5901 readonly kind: SyntaxKind.ExportDeclaration; 5902 readonly parent: SourceFile | ModuleBlock; 5903 readonly modifiers?: NodeArray<Modifier>; 5904 readonly isTypeOnly: boolean; 5905 /** Will not be assigned in the case of `export * from "foo";` */ 5906 readonly exportClause?: NamedExportBindings; 5907 /** If this is not a StringLiteral it will be a grammar error. */ 5908 readonly moduleSpecifier?: Expression; 5909 readonly assertClause?: AssertClause; 5910 } 5911 interface NamedImports extends Node { 5912 readonly kind: SyntaxKind.NamedImports; 5913 readonly parent: ImportClause; 5914 readonly elements: NodeArray<ImportSpecifier>; 5915 } 5916 interface NamedExports extends Node { 5917 readonly kind: SyntaxKind.NamedExports; 5918 readonly parent: ExportDeclaration; 5919 readonly elements: NodeArray<ExportSpecifier>; 5920 } 5921 type NamedImportsOrExports = NamedImports | NamedExports; 5922 interface ImportSpecifier extends NamedDeclaration { 5923 readonly kind: SyntaxKind.ImportSpecifier; 5924 readonly parent: NamedImports; 5925 readonly propertyName?: Identifier; 5926 readonly name: Identifier; 5927 readonly isTypeOnly: boolean; 5928 } 5929 interface ExportSpecifier extends NamedDeclaration, JSDocContainer { 5930 readonly kind: SyntaxKind.ExportSpecifier; 5931 readonly parent: NamedExports; 5932 readonly isTypeOnly: boolean; 5933 readonly propertyName?: Identifier; 5934 readonly name: Identifier; 5935 } 5936 type ImportOrExportSpecifier = ImportSpecifier | ExportSpecifier; 5937 type TypeOnlyCompatibleAliasDeclaration = ImportClause | ImportEqualsDeclaration | NamespaceImport | ImportOrExportSpecifier; 5938 type TypeOnlyAliasDeclaration = ImportClause & { 5939 readonly isTypeOnly: true; 5940 readonly name: Identifier; 5941 } | ImportEqualsDeclaration & { 5942 readonly isTypeOnly: true; 5943 } | NamespaceImport & { 5944 readonly parent: ImportClause & { 5945 readonly isTypeOnly: true; 5946 }; 5947 } | ImportSpecifier & ({ 5948 readonly isTypeOnly: true; 5949 } | { 5950 readonly parent: NamedImports & { 5951 readonly parent: ImportClause & { 5952 readonly isTypeOnly: true; 5953 }; 5954 }; 5955 }) | ExportSpecifier & ({ 5956 readonly isTypeOnly: true; 5957 } | { 5958 readonly parent: NamedExports & { 5959 readonly parent: ExportDeclaration & { 5960 readonly isTypeOnly: true; 5961 }; 5962 }; 5963 }); 5964 /** 5965 * This is either an `export =` or an `export default` declaration. 5966 * Unless `isExportEquals` is set, this node was parsed as an `export default`. 5967 */ 5968 interface ExportAssignment extends DeclarationStatement, JSDocContainer { 5969 readonly kind: SyntaxKind.ExportAssignment; 5970 readonly parent: SourceFile; 5971 readonly modifiers?: NodeArray<Modifier>; 5972 readonly isExportEquals?: boolean; 5973 readonly expression: Expression; 5974 } 5975 interface FileReference extends TextRange { 5976 fileName: string; 5977 resolutionMode?: SourceFile["impliedNodeFormat"]; 5978 } 5979 interface CheckJsDirective extends TextRange { 5980 enabled: boolean; 5981 } 5982 type CommentKind = SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia; 5983 interface CommentRange extends TextRange { 5984 hasTrailingNewLine?: boolean; 5985 kind: CommentKind; 5986 } 5987 interface SynthesizedComment extends CommentRange { 5988 text: string; 5989 pos: -1; 5990 end: -1; 5991 hasLeadingNewline?: boolean; 5992 } 5993 interface JSDocTypeExpression extends TypeNode { 5994 readonly kind: SyntaxKind.JSDocTypeExpression; 5995 readonly type: TypeNode; 5996 } 5997 interface JSDocNameReference extends Node { 5998 readonly kind: SyntaxKind.JSDocNameReference; 5999 readonly name: EntityName | JSDocMemberName; 6000 } 6001 /** Class#method reference in JSDoc */ 6002 interface JSDocMemberName extends Node { 6003 readonly kind: SyntaxKind.JSDocMemberName; 6004 readonly left: EntityName | JSDocMemberName; 6005 readonly right: Identifier; 6006 } 6007 interface JSDocType extends TypeNode { 6008 _jsDocTypeBrand: any; 6009 } 6010 interface JSDocAllType extends JSDocType { 6011 readonly kind: SyntaxKind.JSDocAllType; 6012 } 6013 interface JSDocUnknownType extends JSDocType { 6014 readonly kind: SyntaxKind.JSDocUnknownType; 6015 } 6016 interface JSDocNonNullableType extends JSDocType { 6017 readonly kind: SyntaxKind.JSDocNonNullableType; 6018 readonly type: TypeNode; 6019 readonly postfix: boolean; 6020 } 6021 interface JSDocNullableType extends JSDocType { 6022 readonly kind: SyntaxKind.JSDocNullableType; 6023 readonly type: TypeNode; 6024 readonly postfix: boolean; 6025 } 6026 interface JSDocOptionalType extends JSDocType { 6027 readonly kind: SyntaxKind.JSDocOptionalType; 6028 readonly type: TypeNode; 6029 } 6030 interface JSDocFunctionType extends JSDocType, SignatureDeclarationBase { 6031 readonly kind: SyntaxKind.JSDocFunctionType; 6032 } 6033 interface JSDocVariadicType extends JSDocType { 6034 readonly kind: SyntaxKind.JSDocVariadicType; 6035 readonly type: TypeNode; 6036 } 6037 interface JSDocNamepathType extends JSDocType { 6038 readonly kind: SyntaxKind.JSDocNamepathType; 6039 readonly type: TypeNode; 6040 } 6041 type JSDocTypeReferencingNode = JSDocVariadicType | JSDocOptionalType | JSDocNullableType | JSDocNonNullableType; 6042 interface JSDoc extends Node { 6043 readonly kind: SyntaxKind.JSDoc; 6044 readonly parent: HasJSDoc; 6045 readonly tags?: NodeArray<JSDocTag>; 6046 readonly comment?: string | NodeArray<JSDocComment>; 6047 } 6048 interface JSDocTag extends Node { 6049 readonly parent: JSDoc | JSDocTypeLiteral; 6050 readonly tagName: Identifier; 6051 readonly comment?: string | NodeArray<JSDocComment>; 6052 } 6053 interface JSDocLink extends Node { 6054 readonly kind: SyntaxKind.JSDocLink; 6055 readonly name?: EntityName | JSDocMemberName; 6056 text: string; 6057 } 6058 interface JSDocLinkCode extends Node { 6059 readonly kind: SyntaxKind.JSDocLinkCode; 6060 readonly name?: EntityName | JSDocMemberName; 6061 text: string; 6062 } 6063 interface JSDocLinkPlain extends Node { 6064 readonly kind: SyntaxKind.JSDocLinkPlain; 6065 readonly name?: EntityName | JSDocMemberName; 6066 text: string; 6067 } 6068 type JSDocComment = JSDocText | JSDocLink | JSDocLinkCode | JSDocLinkPlain; 6069 interface JSDocText extends Node { 6070 readonly kind: SyntaxKind.JSDocText; 6071 text: string; 6072 } 6073 interface JSDocUnknownTag extends JSDocTag { 6074 readonly kind: SyntaxKind.JSDocTag; 6075 } 6076 /** 6077 * Note that `@extends` is a synonym of `@augments`. 6078 * Both tags are represented by this interface. 6079 */ 6080 interface JSDocAugmentsTag extends JSDocTag { 6081 readonly kind: SyntaxKind.JSDocAugmentsTag; 6082 readonly class: ExpressionWithTypeArguments & { 6083 readonly expression: Identifier | PropertyAccessEntityNameExpression; 6084 }; 6085 } 6086 interface JSDocImplementsTag extends JSDocTag { 6087 readonly kind: SyntaxKind.JSDocImplementsTag; 6088 readonly class: ExpressionWithTypeArguments & { 6089 readonly expression: Identifier | PropertyAccessEntityNameExpression; 6090 }; 6091 } 6092 interface JSDocAuthorTag extends JSDocTag { 6093 readonly kind: SyntaxKind.JSDocAuthorTag; 6094 } 6095 interface JSDocDeprecatedTag extends JSDocTag { 6096 kind: SyntaxKind.JSDocDeprecatedTag; 6097 } 6098 interface JSDocClassTag extends JSDocTag { 6099 readonly kind: SyntaxKind.JSDocClassTag; 6100 } 6101 interface JSDocPublicTag extends JSDocTag { 6102 readonly kind: SyntaxKind.JSDocPublicTag; 6103 } 6104 interface JSDocPrivateTag extends JSDocTag { 6105 readonly kind: SyntaxKind.JSDocPrivateTag; 6106 } 6107 interface JSDocProtectedTag extends JSDocTag { 6108 readonly kind: SyntaxKind.JSDocProtectedTag; 6109 } 6110 interface JSDocReadonlyTag extends JSDocTag { 6111 readonly kind: SyntaxKind.JSDocReadonlyTag; 6112 } 6113 interface JSDocOverrideTag extends JSDocTag { 6114 readonly kind: SyntaxKind.JSDocOverrideTag; 6115 } 6116 interface JSDocEnumTag extends JSDocTag, Declaration { 6117 readonly kind: SyntaxKind.JSDocEnumTag; 6118 readonly parent: JSDoc; 6119 readonly typeExpression: JSDocTypeExpression; 6120 } 6121 interface JSDocThisTag extends JSDocTag { 6122 readonly kind: SyntaxKind.JSDocThisTag; 6123 readonly typeExpression: JSDocTypeExpression; 6124 } 6125 interface JSDocTemplateTag extends JSDocTag { 6126 readonly kind: SyntaxKind.JSDocTemplateTag; 6127 readonly constraint: JSDocTypeExpression | undefined; 6128 readonly typeParameters: NodeArray<TypeParameterDeclaration>; 6129 } 6130 interface JSDocSeeTag extends JSDocTag { 6131 readonly kind: SyntaxKind.JSDocSeeTag; 6132 readonly name?: JSDocNameReference; 6133 } 6134 interface JSDocReturnTag extends JSDocTag { 6135 readonly kind: SyntaxKind.JSDocReturnTag; 6136 readonly typeExpression?: JSDocTypeExpression; 6137 } 6138 interface JSDocTypeTag extends JSDocTag { 6139 readonly kind: SyntaxKind.JSDocTypeTag; 6140 readonly typeExpression: JSDocTypeExpression; 6141 } 6142 interface JSDocTypedefTag extends JSDocTag, NamedDeclaration { 6143 readonly kind: SyntaxKind.JSDocTypedefTag; 6144 readonly parent: JSDoc; 6145 readonly fullName?: JSDocNamespaceDeclaration | Identifier; 6146 readonly name?: Identifier; 6147 readonly typeExpression?: JSDocTypeExpression | JSDocTypeLiteral; 6148 } 6149 interface JSDocCallbackTag extends JSDocTag, NamedDeclaration { 6150 readonly kind: SyntaxKind.JSDocCallbackTag; 6151 readonly parent: JSDoc; 6152 readonly fullName?: JSDocNamespaceDeclaration | Identifier; 6153 readonly name?: Identifier; 6154 readonly typeExpression: JSDocSignature; 6155 } 6156 interface JSDocSignature extends JSDocType, Declaration { 6157 readonly kind: SyntaxKind.JSDocSignature; 6158 readonly typeParameters?: readonly JSDocTemplateTag[]; 6159 readonly parameters: readonly JSDocParameterTag[]; 6160 readonly type: JSDocReturnTag | undefined; 6161 } 6162 interface JSDocPropertyLikeTag extends JSDocTag, Declaration { 6163 readonly parent: JSDoc; 6164 readonly name: EntityName; 6165 readonly typeExpression?: JSDocTypeExpression; 6166 /** Whether the property name came before the type -- non-standard for JSDoc, but Typescript-like */ 6167 readonly isNameFirst: boolean; 6168 readonly isBracketed: boolean; 6169 } 6170 interface JSDocPropertyTag extends JSDocPropertyLikeTag { 6171 readonly kind: SyntaxKind.JSDocPropertyTag; 6172 } 6173 interface JSDocParameterTag extends JSDocPropertyLikeTag { 6174 readonly kind: SyntaxKind.JSDocParameterTag; 6175 } 6176 interface JSDocTypeLiteral extends JSDocType { 6177 readonly kind: SyntaxKind.JSDocTypeLiteral; 6178 readonly jsDocPropertyTags?: readonly JSDocPropertyLikeTag[]; 6179 /** If true, then this type literal represents an *array* of its type. */ 6180 readonly isArrayType: boolean; 6181 } 6182 enum FlowFlags { 6183 Unreachable = 1, 6184 Start = 2, 6185 BranchLabel = 4, 6186 LoopLabel = 8, 6187 Assignment = 16, 6188 TrueCondition = 32, 6189 FalseCondition = 64, 6190 SwitchClause = 128, 6191 ArrayMutation = 256, 6192 Call = 512, 6193 ReduceLabel = 1024, 6194 Referenced = 2048, 6195 Shared = 4096, 6196 Label = 12, 6197 Condition = 96 6198 } 6199 type FlowNode = FlowStart | FlowLabel | FlowAssignment | FlowCondition | FlowSwitchClause | FlowArrayMutation | FlowCall | FlowReduceLabel; 6200 interface FlowNodeBase { 6201 flags: FlowFlags; 6202 id?: number; 6203 } 6204 interface FlowStart extends FlowNodeBase { 6205 node?: FunctionExpression | ArrowFunction | MethodDeclaration | GetAccessorDeclaration | SetAccessorDeclaration; 6206 } 6207 interface FlowLabel extends FlowNodeBase { 6208 antecedents: FlowNode[] | undefined; 6209 } 6210 interface FlowAssignment extends FlowNodeBase { 6211 node: Expression | VariableDeclaration | BindingElement; 6212 antecedent: FlowNode; 6213 } 6214 interface FlowCall extends FlowNodeBase { 6215 node: CallExpression; 6216 antecedent: FlowNode; 6217 } 6218 interface FlowCondition extends FlowNodeBase { 6219 node: Expression; 6220 antecedent: FlowNode; 6221 } 6222 interface FlowSwitchClause extends FlowNodeBase { 6223 switchStatement: SwitchStatement; 6224 clauseStart: number; 6225 clauseEnd: number; 6226 antecedent: FlowNode; 6227 } 6228 interface FlowArrayMutation extends FlowNodeBase { 6229 node: CallExpression | BinaryExpression; 6230 antecedent: FlowNode; 6231 } 6232 interface FlowReduceLabel extends FlowNodeBase { 6233 target: FlowLabel; 6234 antecedents: FlowNode[]; 6235 antecedent: FlowNode; 6236 } 6237 type FlowType = Type | IncompleteType; 6238 interface IncompleteType { 6239 flags: TypeFlags; 6240 type: Type; 6241 } 6242 interface AmdDependency { 6243 path: string; 6244 name?: string; 6245 } 6246 /** 6247 * Subset of properties from SourceFile that are used in multiple utility functions 6248 */ 6249 interface SourceFileLike { 6250 readonly text: string; 6251 readonly fileName?: string; 6252 } 6253 interface SourceFileLike { 6254 getLineAndCharacterOfPosition(pos: number): LineAndCharacter; 6255 } 6256 interface SourceFile extends Declaration { 6257 readonly kind: SyntaxKind.SourceFile; 6258 readonly statements: NodeArray<Statement>; 6259 readonly endOfFileToken: Token<SyntaxKind.EndOfFileToken>; 6260 fileName: string; 6261 text: string; 6262 amdDependencies: readonly AmdDependency[]; 6263 moduleName?: string; 6264 referencedFiles: readonly FileReference[]; 6265 typeReferenceDirectives: readonly FileReference[]; 6266 libReferenceDirectives: readonly FileReference[]; 6267 languageVariant: LanguageVariant; 6268 isDeclarationFile: boolean; 6269 /** 6270 * lib.d.ts should have a reference comment like 6271 * 6272 * /// <reference no-default-lib="true"/> 6273 * 6274 * If any other file has this comment, it signals not to include lib.d.ts 6275 * because this containing file is intended to act as a default library. 6276 */ 6277 hasNoDefaultLib: boolean; 6278 languageVersion: ScriptTarget; 6279 /** 6280 * When `module` is `Node16` or `NodeNext`, this field controls whether the 6281 * source file in question is an ESNext-output-format file, or a CommonJS-output-format 6282 * module. This is derived by the module resolver as it looks up the file, since 6283 * it is derived from either the file extension of the module, or the containing 6284 * `package.json` context, and affects both checking and emit. 6285 * 6286 * It is _public_ so that (pre)transformers can set this field, 6287 * since it switches the builtin `node` module transform. Generally speaking, if unset, 6288 * the field is treated as though it is `ModuleKind.CommonJS`. 6289 * 6290 * Note that this field is only set by the module resolution process when 6291 * `moduleResolution` is `Node16` or `NodeNext`, which is implied by the `module` setting 6292 * of `Node16` or `NodeNext`, respectively, but may be overriden (eg, by a `moduleResolution` 6293 * of `node`). If so, this field will be unset and source files will be considered to be 6294 * CommonJS-output-format by the node module transformer and type checker, regardless of extension or context. 6295 */ 6296 impliedNodeFormat?: ModuleKind.ESNext | ModuleKind.CommonJS; 6297 } 6298 interface SourceFile { 6299 getLineAndCharacterOfPosition(pos: number): LineAndCharacter; 6300 getLineEndOfPosition(pos: number): number; 6301 getLineStarts(): readonly number[]; 6302 getPositionOfLineAndCharacter(line: number, character: number): number; 6303 update(newText: string, textChangeRange: TextChangeRange): SourceFile; 6304 } 6305 interface Bundle extends Node { 6306 readonly kind: SyntaxKind.Bundle; 6307 readonly prepends: readonly (InputFiles | UnparsedSource)[]; 6308 readonly sourceFiles: readonly SourceFile[]; 6309 } 6310 interface InputFiles extends Node { 6311 readonly kind: SyntaxKind.InputFiles; 6312 javascriptPath?: string; 6313 javascriptText: string; 6314 javascriptMapPath?: string; 6315 javascriptMapText?: string; 6316 declarationPath?: string; 6317 declarationText: string; 6318 declarationMapPath?: string; 6319 declarationMapText?: string; 6320 } 6321 interface UnparsedSource extends Node { 6322 readonly kind: SyntaxKind.UnparsedSource; 6323 fileName: string; 6324 text: string; 6325 readonly prologues: readonly UnparsedPrologue[]; 6326 helpers: readonly UnscopedEmitHelper[] | undefined; 6327 referencedFiles: readonly FileReference[]; 6328 typeReferenceDirectives: readonly FileReference[] | undefined; 6329 libReferenceDirectives: readonly FileReference[]; 6330 hasNoDefaultLib?: boolean; 6331 sourceMapPath?: string; 6332 sourceMapText?: string; 6333 readonly syntheticReferences?: readonly UnparsedSyntheticReference[]; 6334 readonly texts: readonly UnparsedSourceText[]; 6335 } 6336 type UnparsedSourceText = UnparsedPrepend | UnparsedTextLike; 6337 type UnparsedNode = UnparsedPrologue | UnparsedSourceText | UnparsedSyntheticReference; 6338 interface UnparsedSection extends Node { 6339 readonly kind: SyntaxKind; 6340 readonly parent: UnparsedSource; 6341 readonly data?: string; 6342 } 6343 interface UnparsedPrologue extends UnparsedSection { 6344 readonly kind: SyntaxKind.UnparsedPrologue; 6345 readonly parent: UnparsedSource; 6346 readonly data: string; 6347 } 6348 interface UnparsedPrepend extends UnparsedSection { 6349 readonly kind: SyntaxKind.UnparsedPrepend; 6350 readonly parent: UnparsedSource; 6351 readonly data: string; 6352 readonly texts: readonly UnparsedTextLike[]; 6353 } 6354 interface UnparsedTextLike extends UnparsedSection { 6355 readonly kind: SyntaxKind.UnparsedText | SyntaxKind.UnparsedInternalText; 6356 readonly parent: UnparsedSource; 6357 } 6358 interface UnparsedSyntheticReference extends UnparsedSection { 6359 readonly kind: SyntaxKind.UnparsedSyntheticReference; 6360 readonly parent: UnparsedSource; 6361 } 6362 interface JsonSourceFile extends SourceFile { 6363 readonly statements: NodeArray<JsonObjectExpressionStatement>; 6364 } 6365 interface TsConfigSourceFile extends JsonSourceFile { 6366 extendedSourceFiles?: string[]; 6367 } 6368 interface JsonMinusNumericLiteral extends PrefixUnaryExpression { 6369 readonly kind: SyntaxKind.PrefixUnaryExpression; 6370 readonly operator: SyntaxKind.MinusToken; 6371 readonly operand: NumericLiteral; 6372 } 6373 type JsonObjectExpression = ObjectLiteralExpression | ArrayLiteralExpression | JsonMinusNumericLiteral | NumericLiteral | StringLiteral | BooleanLiteral | NullLiteral; 6374 interface JsonObjectExpressionStatement extends ExpressionStatement { 6375 readonly expression: JsonObjectExpression; 6376 } 6377 interface ScriptReferenceHost { 6378 getCompilerOptions(): CompilerOptions; 6379 getSourceFile(fileName: string): SourceFile | undefined; 6380 getSourceFileByPath(path: Path): SourceFile | undefined; 6381 getCurrentDirectory(): string; 6382 } 6383 interface ParseConfigHost { 6384 useCaseSensitiveFileNames: boolean; 6385 readDirectory(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[], depth?: number): readonly string[]; 6386 /** 6387 * Gets a value indicating whether the specified path exists and is a file. 6388 * @param path The path to test. 6389 */ 6390 fileExists(path: string): boolean; 6391 readFile(path: string): string | undefined; 6392 trace?(s: string): void; 6393 } 6394 /** 6395 * Branded string for keeping track of when we've turned an ambiguous path 6396 * specified like "./blah" to an absolute path to an actual 6397 * tsconfig file, e.g. "/root/blah/tsconfig.json" 6398 */ 6399 type ResolvedConfigFileName = string & { 6400 _isResolvedConfigFileName: never; 6401 }; 6402 interface WriteFileCallbackData { 6403 } 6404 type WriteFileCallback = (fileName: string, text: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], data?: WriteFileCallbackData) => void; 6405 class OperationCanceledException { 6406 } 6407 interface CancellationToken { 6408 isCancellationRequested(): boolean; 6409 /** OperationCanceledException if isCancellationRequested is true */ 6410 throwIfCancellationRequested(): void; 6411 } 6412 interface SymbolDisplayPart { 6413 text: string; 6414 kind: string; 6415 } 6416 interface SymbolDisplayPart { 6417 text: string; 6418 kind: string; 6419 } 6420 interface JsDocTagInfo { 6421 name: string; 6422 text?: string | SymbolDisplayPart[]; 6423 } 6424 interface Program extends ScriptReferenceHost { 6425 getCurrentDirectory(): string; 6426 /** 6427 * Get a list of root file names that were passed to a 'createProgram' 6428 */ 6429 getRootFileNames(): readonly string[]; 6430 /** 6431 * Get a list of files in the program 6432 */ 6433 getSourceFiles(): readonly SourceFile[]; 6434 /** 6435 * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then 6436 * the JavaScript and declaration files will be produced for all the files in this program. 6437 * If targetSourceFile is specified, then only the JavaScript and declaration for that 6438 * specific file will be generated. 6439 * 6440 * If writeFile is not specified then the writeFile callback from the compiler host will be 6441 * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter 6442 * will be invoked when writing the JavaScript and declaration files. 6443 */ 6444 emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult; 6445 getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[]; 6446 getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[]; 6447 getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[]; 6448 /** The first time this is called, it will return global diagnostics (no location). */ 6449 getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[]; 6450 getSemanticDiagnosticsForLinter(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[]; 6451 getDeclarationDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[]; 6452 getConfigFileParsingDiagnostics(): readonly Diagnostic[]; 6453 getEtsLibSFromProgram(): string[]; 6454 /** 6455 * Gets a type checker that can be used to semantically analyze source files in the program. 6456 */ 6457 getTypeChecker(): TypeChecker; 6458 /** 6459 * Gets a type checker that can be used to semantically analyze source files in the program for arkts linter. 6460 */ 6461 getLinterTypeChecker(): TypeChecker; 6462 getNodeCount(): number; 6463 getIdentifierCount(): number; 6464 getSymbolCount(): number; 6465 getTypeCount(): number; 6466 getInstantiationCount(): number; 6467 getRelationCacheSizes(): { 6468 assignable: number; 6469 identity: number; 6470 subtype: number; 6471 strictSubtype: number; 6472 }; 6473 isSourceFileFromExternalLibrary(file: SourceFile): boolean; 6474 isSourceFileDefaultLibrary(file: SourceFile): boolean; 6475 getSourceFileFromReference(referencingFile: SourceFile | UnparsedSource, ref: FileReference): SourceFile | undefined; 6476 getProjectReferences(): readonly ProjectReference[] | undefined; 6477 getResolvedProjectReferences(): readonly (ResolvedProjectReference | undefined)[] | undefined; 6478 getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig; 6479 getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocTagInfos: JsDocTagInfo[], jsDocs?: JSDoc[]): ConditionCheckResult; 6480 getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo; 6481 /** 6482 * Release typeChecker & linterTypeChecker 6483 */ 6484 releaseTypeChecker(): void; 6485 getEmitHost(writeFileCallback?: WriteFileCallback): EmitHost; 6486 refreshTypeChecker(): void; 6487 setProgramSourceFiles(file: SourceFile): void; 6488 initProcessingFiles(): void; 6489 processImportedModules(file: SourceFile): void; 6490 getProcessingFiles(): SourceFile[] | undefined; 6491 deleteProgramSourceFiles(fileNames: string[]): void; 6492 } 6493 type RedirectTargetsMap = ReadonlyESMap<Path, readonly string[]>; 6494 interface ResolvedProjectReference { 6495 commandLine: ParsedCommandLine; 6496 sourceFile: SourceFile; 6497 references?: readonly (ResolvedProjectReference | undefined)[]; 6498 } 6499 type CustomTransformerFactory = (context: TransformationContext) => CustomTransformer; 6500 interface CustomTransformer { 6501 transformSourceFile(node: SourceFile): SourceFile; 6502 transformBundle(node: Bundle): Bundle; 6503 } 6504 interface CustomTransformers { 6505 /** Custom transformers to evaluate before built-in .js transformations. */ 6506 before?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[]; 6507 /** Custom transformers to evaluate after built-in .js transformations. */ 6508 after?: (TransformerFactory<SourceFile> | CustomTransformerFactory)[]; 6509 /** Custom transformers to evaluate after built-in .d.ts transformations. */ 6510 afterDeclarations?: (TransformerFactory<Bundle | SourceFile> | CustomTransformerFactory)[]; 6511 } 6512 interface SourceMapSpan { 6513 /** Line number in the .js file. */ 6514 emittedLine: number; 6515 /** Column number in the .js file. */ 6516 emittedColumn: number; 6517 /** Line number in the .ts file. */ 6518 sourceLine: number; 6519 /** Column number in the .ts file. */ 6520 sourceColumn: number; 6521 /** Optional name (index into names array) associated with this span. */ 6522 nameIndex?: number; 6523 /** .ts file (index into sources array) associated with this span */ 6524 sourceIndex: number; 6525 } 6526 /** Return code used by getEmitOutput function to indicate status of the function */ 6527 enum ExitStatus { 6528 Success = 0, 6529 DiagnosticsPresent_OutputsSkipped = 1, 6530 DiagnosticsPresent_OutputsGenerated = 2, 6531 InvalidProject_OutputsSkipped = 3, 6532 ProjectReferenceCycle_OutputsSkipped = 4, 6533 /** @deprecated Use ProjectReferenceCycle_OutputsSkipped instead. */ 6534 ProjectReferenceCycle_OutputsSkupped = 4 6535 } 6536 interface EmitResult { 6537 emitSkipped: boolean; 6538 /** Contains declaration emit diagnostics */ 6539 diagnostics: readonly Diagnostic[]; 6540 emittedFiles?: string[]; 6541 } 6542 interface TypeChecker { 6543 getTypeOfSymbolAtLocation(symbol: Symbol, node: Node): Type; 6544 getDeclaredTypeOfSymbol(symbol: Symbol): Type; 6545 getPropertiesOfType(type: Type): Symbol[]; 6546 getPropertyOfType(type: Type, propertyName: string): Symbol | undefined; 6547 getPrivateIdentifierPropertyOfType(leftType: Type, name: string, location: Node): Symbol | undefined; 6548 getIndexInfoOfType(type: Type, kind: IndexKind): IndexInfo | undefined; 6549 getIndexInfosOfType(type: Type): readonly IndexInfo[]; 6550 getIndexInfosOfIndexSymbol: (indexSymbol: Symbol) => IndexInfo[]; 6551 getSignaturesOfType(type: Type, kind: SignatureKind): readonly Signature[]; 6552 getIndexTypeOfType(type: Type, kind: IndexKind): Type | undefined; 6553 getBaseTypes(type: InterfaceType): BaseType[]; 6554 getBaseTypeOfLiteralType(type: Type): Type; 6555 getWidenedType(type: Type): Type; 6556 getReturnTypeOfSignature(signature: Signature): Type; 6557 getNullableType(type: Type, flags: TypeFlags): Type; 6558 getNonNullableType(type: Type): Type; 6559 getTypeArguments(type: TypeReference): readonly Type[]; 6560 /** Note that the resulting nodes cannot be checked. */ 6561 typeToTypeNode(type: Type, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): TypeNode | undefined; 6562 /** Note that the resulting nodes cannot be checked. */ 6563 signatureToSignatureDeclaration(signature: Signature, kind: SyntaxKind, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): SignatureDeclaration & { 6564 typeArguments?: NodeArray<TypeNode>; 6565 } | undefined; 6566 /** Note that the resulting nodes cannot be checked. */ 6567 indexInfoToIndexSignatureDeclaration(indexInfo: IndexInfo, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): IndexSignatureDeclaration | undefined; 6568 /** Note that the resulting nodes cannot be checked. */ 6569 symbolToEntityName(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): EntityName | undefined; 6570 /** Note that the resulting nodes cannot be checked. */ 6571 symbolToExpression(symbol: Symbol, meaning: SymbolFlags, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): Expression | undefined; 6572 /** Note that the resulting nodes cannot be checked. */ 6573 symbolToTypeParameterDeclarations(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): NodeArray<TypeParameterDeclaration> | undefined; 6574 /** Note that the resulting nodes cannot be checked. */ 6575 symbolToParameterDeclaration(symbol: Symbol, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): ParameterDeclaration | undefined; 6576 /** Note that the resulting nodes cannot be checked. */ 6577 typeParameterToDeclaration(parameter: TypeParameter, enclosingDeclaration: Node | undefined, flags: NodeBuilderFlags | undefined): TypeParameterDeclaration | undefined; 6578 getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[]; 6579 getSymbolAtLocation(node: Node): Symbol | undefined; 6580 getSymbolsOfParameterPropertyDeclaration(parameter: ParameterDeclaration, parameterName: string): Symbol[]; 6581 /** 6582 * The function returns the value (local variable) symbol of an identifier in the short-hand property assignment. 6583 * This is necessary as an identifier in short-hand property assignment can contains two meaning: property name and property value. 6584 */ 6585 getShorthandAssignmentValueSymbol(location: Node | undefined): Symbol | undefined; 6586 getExportSpecifierLocalTargetSymbol(location: ExportSpecifier | Identifier): Symbol | undefined; 6587 /** 6588 * If a symbol is a local symbol with an associated exported symbol, returns the exported symbol. 6589 * Otherwise returns its input. 6590 * For example, at `export type T = number;`: 6591 * - `getSymbolAtLocation` at the location `T` will return the exported symbol for `T`. 6592 * - But the result of `getSymbolsInScope` will contain the *local* symbol for `T`, not the exported symbol. 6593 * - Calling `getExportSymbolOfSymbol` on that local symbol will return the exported symbol. 6594 */ 6595 getExportSymbolOfSymbol(symbol: Symbol): Symbol; 6596 getPropertySymbolOfDestructuringAssignment(location: Identifier): Symbol | undefined; 6597 getTypeOfAssignmentPattern(pattern: AssignmentPattern): Type; 6598 getTypeAtLocation(node: Node): Type; 6599 tryGetTypeAtLocationWithoutCheck(node: Node): Type; 6600 getTypeFromTypeNode(node: TypeNode): Type; 6601 signatureToString(signature: Signature, enclosingDeclaration?: Node, flags?: TypeFormatFlags, kind?: SignatureKind): string; 6602 typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string; 6603 symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags): string; 6604 typePredicateToString(predicate: TypePredicate, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string; 6605 getFullyQualifiedName(symbol: Symbol): string; 6606 getAugmentedPropertiesOfType(type: Type): Symbol[]; 6607 getRootSymbols(symbol: Symbol): readonly Symbol[]; 6608 getSymbolOfExpando(node: Node, allowDeclaration: boolean): Symbol | undefined; 6609 getContextualType(node: Expression): Type | undefined; 6610 /** 6611 * returns unknownSignature in the case of an error. 6612 * returns undefined if the node is not valid. 6613 * @param argumentCount Apparent number of arguments, passed in case of a possibly incomplete call. This should come from an ArgumentListInfo. See `signatureHelp.ts`. 6614 */ 6615 getResolvedSignature(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined; 6616 tryGetResolvedSignatureWithoutCheck(node: CallLikeExpression, candidatesOutArray?: Signature[], argumentCount?: number): Signature | undefined; 6617 getSignatureFromDeclaration(declaration: SignatureDeclaration): Signature | undefined; 6618 isImplementationOfOverload(node: SignatureDeclaration): boolean | undefined; 6619 isUndefinedSymbol(symbol: Symbol): boolean; 6620 isArgumentsSymbol(symbol: Symbol): boolean; 6621 isUnknownSymbol(symbol: Symbol): boolean; 6622 getMergedSymbol(symbol: Symbol): Symbol; 6623 getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): string | number | undefined; 6624 isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName | ImportTypeNode, propertyName: string): boolean; 6625 /** Follow all aliases to get the original symbol. */ 6626 getAliasedSymbol(symbol: Symbol): Symbol; 6627 /** Follow a *single* alias to get the immediately aliased symbol. */ 6628 getImmediateAliasedSymbol(symbol: Symbol): Symbol | undefined; 6629 getExportsOfModule(moduleSymbol: Symbol): Symbol[]; 6630 getJsxIntrinsicTagNamesAt(location: Node): Symbol[]; 6631 isOptionalParameter(node: ParameterDeclaration): boolean; 6632 getAmbientModules(): Symbol[]; 6633 tryGetMemberInModuleExports(memberName: string, moduleSymbol: Symbol): Symbol | undefined; 6634 getApparentType(type: Type): Type; 6635 getBaseConstraintOfType(type: Type): Type | undefined; 6636 getDefaultFromTypeParameter(type: Type): Type | undefined; 6637 getTypePredicateOfSignature(signature: Signature): TypePredicate | undefined; 6638 /** 6639 * Depending on the operation performed, it may be appropriate to throw away the checker 6640 * if the cancellation token is triggered. Typically, if it is used for error checking 6641 * and the operation is cancelled, then it should be discarded, otherwise it is safe to keep. 6642 */ 6643 runWithCancellationToken<T>(token: CancellationToken, cb: (checker: TypeChecker) => T): T; 6644 getConstEnumRelate?(): ESMap<string, ESMap<string, string>>; 6645 clearConstEnumRelate?(): void; 6646 deleteConstEnumRelate?(path: string): void; 6647 getTypeArgumentsForResolvedSignature(signature: Signature): readonly Type[] | undefined; 6648 getCheckedSourceFiles(): Set<SourceFile>; 6649 collectHaveTsNoCheckFilesForLinter(sourceFile: SourceFile): void; 6650 clearQualifiedNameCache?(): void; 6651 isStaticRecord?(type: Type): boolean; 6652 isStaticSourceFile?(sourceFile: SourceFile | undefined): boolean; 6653 createIntrinsicType?(kind: TypeFlags, intrinsicName: string, objectFlags?: ObjectFlags): Type; 6654 } 6655 enum NodeBuilderFlags { 6656 None = 0, 6657 NoTruncation = 1, 6658 WriteArrayAsGenericType = 2, 6659 GenerateNamesForShadowedTypeParams = 4, 6660 UseStructuralFallback = 8, 6661 ForbidIndexedAccessSymbolReferences = 16, 6662 WriteTypeArgumentsOfSignature = 32, 6663 UseFullyQualifiedType = 64, 6664 UseOnlyExternalAliasing = 128, 6665 SuppressAnyReturnType = 256, 6666 WriteTypeParametersInQualifiedName = 512, 6667 MultilineObjectLiterals = 1024, 6668 WriteClassExpressionAsTypeLiteral = 2048, 6669 UseTypeOfFunction = 4096, 6670 OmitParameterModifiers = 8192, 6671 UseAliasDefinedOutsideCurrentScope = 16384, 6672 UseSingleQuotesForStringLiteralType = 268435456, 6673 NoTypeReduction = 536870912, 6674 OmitThisParameter = 33554432, 6675 AllowThisInObjectLiteral = 32768, 6676 AllowQualifiedNameInPlaceOfIdentifier = 65536, 6677 /** @deprecated AllowQualifedNameInPlaceOfIdentifier. Use AllowQualifiedNameInPlaceOfIdentifier instead. */ 6678 AllowQualifedNameInPlaceOfIdentifier = 65536, 6679 AllowAnonymousIdentifier = 131072, 6680 AllowEmptyUnionOrIntersection = 262144, 6681 AllowEmptyTuple = 524288, 6682 AllowUniqueESSymbolType = 1048576, 6683 AllowEmptyIndexInfoType = 2097152, 6684 AllowNodeModulesRelativePaths = 67108864, 6685 IgnoreErrors = 70221824, 6686 InObjectTypeLiteral = 4194304, 6687 InTypeAlias = 8388608, 6688 InInitialEntityName = 16777216 6689 } 6690 enum TypeFormatFlags { 6691 None = 0, 6692 NoTruncation = 1, 6693 WriteArrayAsGenericType = 2, 6694 UseStructuralFallback = 8, 6695 WriteTypeArgumentsOfSignature = 32, 6696 UseFullyQualifiedType = 64, 6697 SuppressAnyReturnType = 256, 6698 MultilineObjectLiterals = 1024, 6699 WriteClassExpressionAsTypeLiteral = 2048, 6700 UseTypeOfFunction = 4096, 6701 OmitParameterModifiers = 8192, 6702 UseAliasDefinedOutsideCurrentScope = 16384, 6703 UseSingleQuotesForStringLiteralType = 268435456, 6704 NoTypeReduction = 536870912, 6705 OmitThisParameter = 33554432, 6706 AllowUniqueESSymbolType = 1048576, 6707 AddUndefined = 131072, 6708 WriteArrowStyleSignature = 262144, 6709 InArrayType = 524288, 6710 InElementType = 2097152, 6711 InFirstTypeArgument = 4194304, 6712 InTypeAlias = 8388608, 6713 /** @deprecated */ WriteOwnNameForAnyLike = 0, 6714 NodeBuilderFlagsMask = 848330091 6715 } 6716 enum SymbolFormatFlags { 6717 None = 0, 6718 WriteTypeParametersOrArguments = 1, 6719 UseOnlyExternalAliasing = 2, 6720 AllowAnyNodeKind = 4, 6721 UseAliasDefinedOutsideCurrentScope = 8 6722 } 6723 interface SymbolWriter extends SymbolTracker { 6724 writeKeyword(text: string): void; 6725 writeOperator(text: string): void; 6726 writePunctuation(text: string): void; 6727 writeSpace(text: string): void; 6728 writeStringLiteral(text: string): void; 6729 writeParameter(text: string): void; 6730 writeProperty(text: string): void; 6731 writeSymbol(text: string, symbol: Symbol): void; 6732 writeLine(force?: boolean): void; 6733 increaseIndent(): void; 6734 decreaseIndent(): void; 6735 clear(): void; 6736 } 6737 enum TypePredicateKind { 6738 This = 0, 6739 Identifier = 1, 6740 AssertsThis = 2, 6741 AssertsIdentifier = 3 6742 } 6743 interface TypePredicateBase { 6744 kind: TypePredicateKind; 6745 type: Type | undefined; 6746 } 6747 interface ThisTypePredicate extends TypePredicateBase { 6748 kind: TypePredicateKind.This; 6749 parameterName: undefined; 6750 parameterIndex: undefined; 6751 type: Type; 6752 } 6753 interface IdentifierTypePredicate extends TypePredicateBase { 6754 kind: TypePredicateKind.Identifier; 6755 parameterName: string; 6756 parameterIndex: number; 6757 type: Type; 6758 } 6759 interface AssertsThisTypePredicate extends TypePredicateBase { 6760 kind: TypePredicateKind.AssertsThis; 6761 parameterName: undefined; 6762 parameterIndex: undefined; 6763 type: Type | undefined; 6764 } 6765 interface AssertsIdentifierTypePredicate extends TypePredicateBase { 6766 kind: TypePredicateKind.AssertsIdentifier; 6767 parameterName: string; 6768 parameterIndex: number; 6769 type: Type | undefined; 6770 } 6771 type TypePredicate = ThisTypePredicate | IdentifierTypePredicate | AssertsThisTypePredicate | AssertsIdentifierTypePredicate; 6772 enum SymbolFlags { 6773 None = 0, 6774 FunctionScopedVariable = 1, 6775 BlockScopedVariable = 2, 6776 Property = 4, 6777 EnumMember = 8, 6778 Function = 16, 6779 Class = 32, 6780 Interface = 64, 6781 ConstEnum = 128, 6782 RegularEnum = 256, 6783 ValueModule = 512, 6784 NamespaceModule = 1024, 6785 TypeLiteral = 2048, 6786 ObjectLiteral = 4096, 6787 Method = 8192, 6788 Constructor = 16384, 6789 GetAccessor = 32768, 6790 SetAccessor = 65536, 6791 Signature = 131072, 6792 TypeParameter = 262144, 6793 TypeAlias = 524288, 6794 ExportValue = 1048576, 6795 Alias = 2097152, 6796 Prototype = 4194304, 6797 ExportStar = 8388608, 6798 Optional = 16777216, 6799 Transient = 33554432, 6800 Assignment = 67108864, 6801 ModuleExports = 134217728, 6802 Annotation = 268435456, 6803 Enum = 384, 6804 Variable = 3, 6805 Value = 111551, 6806 Type = 788968, 6807 Namespace = 1920, 6808 Module = 1536, 6809 Accessor = 98304, 6810 FunctionScopedVariableExcludes = 111550, 6811 BlockScopedVariableExcludes = 111551, 6812 ParameterExcludes = 111551, 6813 PropertyExcludes = 0, 6814 EnumMemberExcludes = 900095, 6815 FunctionExcludes = 110991, 6816 ClassExcludes = 899503, 6817 InterfaceExcludes = 788872, 6818 RegularEnumExcludes = 899327, 6819 ConstEnumExcludes = 899967, 6820 ValueModuleExcludes = 110735, 6821 NamespaceModuleExcludes = 0, 6822 MethodExcludes = 103359, 6823 GetAccessorExcludes = 46015, 6824 SetAccessorExcludes = 78783, 6825 AccessorExcludes = 13247, 6826 TypeParameterExcludes = 526824, 6827 TypeAliasExcludes = 788968, 6828 AliasExcludes = 2097152, 6829 ModuleMember = 2623475, 6830 ExportHasLocal = 944, 6831 BlockScoped = 418, 6832 PropertyOrAccessor = 98308, 6833 ClassMember = 106500 6834 } 6835 interface Symbol { 6836 flags: SymbolFlags; 6837 escapedName: __String; 6838 declarations?: Declaration[]; 6839 valueDeclaration?: Declaration; 6840 members?: SymbolTable; 6841 exports?: SymbolTable; 6842 globalExports?: SymbolTable; 6843 exportSymbol?: Symbol; 6844 } 6845 interface Symbol { 6846 readonly name: string; 6847 getFlags(): SymbolFlags; 6848 getEscapedName(): __String; 6849 getName(): string; 6850 getDeclarations(): Declaration[] | undefined; 6851 getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[]; 6852 getJsDocTags(checker?: TypeChecker): JSDocTagInfo[]; 6853 } 6854 enum InternalSymbolName { 6855 Call = "__call", 6856 Constructor = "__constructor", 6857 New = "__new", 6858 Index = "__index", 6859 ExportStar = "__export", 6860 Global = "__global", 6861 Missing = "__missing", 6862 Type = "__type", 6863 Object = "__object", 6864 JSXAttributes = "__jsxAttributes", 6865 Class = "__class", 6866 Function = "__function", 6867 Computed = "__computed", 6868 Resolving = "__resolving__", 6869 ExportEquals = "export=", 6870 Default = "default", 6871 This = "this" 6872 } 6873 /** 6874 * This represents a string whose leading underscore have been escaped by adding extra leading underscores. 6875 * The shape of this brand is rather unique compared to others we've used. 6876 * Instead of just an intersection of a string and an object, it is that union-ed 6877 * with an intersection of void and an object. This makes it wholly incompatible 6878 * with a normal string (which is good, it cannot be misused on assignment or on usage), 6879 * while still being comparable with a normal string via === (also good) and castable from a string. 6880 */ 6881 type __String = (string & { 6882 __escapedIdentifier: void; 6883 }) | (void & { 6884 __escapedIdentifier: void; 6885 }) | InternalSymbolName; 6886 /** ReadonlyMap where keys are `__String`s. */ 6887 interface ReadonlyUnderscoreEscapedMap<T> extends ReadonlyESMap<__String, T> { 6888 } 6889 /** Map where keys are `__String`s. */ 6890 interface UnderscoreEscapedMap<T> extends ESMap<__String, T>, ReadonlyUnderscoreEscapedMap<T> { 6891 } 6892 /** SymbolTable based on ES6 Map interface. */ 6893 type SymbolTable = UnderscoreEscapedMap<Symbol>; 6894 enum TypeFlags { 6895 Any = 1, 6896 Unknown = 2, 6897 String = 4, 6898 Number = 8, 6899 Boolean = 16, 6900 Enum = 32, 6901 BigInt = 64, 6902 StringLiteral = 128, 6903 NumberLiteral = 256, 6904 BooleanLiteral = 512, 6905 EnumLiteral = 1024, 6906 BigIntLiteral = 2048, 6907 ESSymbol = 4096, 6908 UniqueESSymbol = 8192, 6909 Void = 16384, 6910 Undefined = 32768, 6911 Null = 65536, 6912 Never = 131072, 6913 TypeParameter = 262144, 6914 Object = 524288, 6915 Union = 1048576, 6916 Intersection = 2097152, 6917 Index = 4194304, 6918 IndexedAccess = 8388608, 6919 Conditional = 16777216, 6920 Substitution = 33554432, 6921 NonPrimitive = 67108864, 6922 TemplateLiteral = 134217728, 6923 StringMapping = 268435456, 6924 Literal = 2944, 6925 Unit = 109440, 6926 StringOrNumberLiteral = 384, 6927 PossiblyFalsy = 117724, 6928 StringLike = 402653316, 6929 NumberLike = 296, 6930 BigIntLike = 2112, 6931 BooleanLike = 528, 6932 EnumLike = 1056, 6933 ESSymbolLike = 12288, 6934 VoidLike = 49152, 6935 UnionOrIntersection = 3145728, 6936 StructuredType = 3670016, 6937 TypeVariable = 8650752, 6938 InstantiableNonPrimitive = 58982400, 6939 InstantiablePrimitive = 406847488, 6940 Instantiable = 465829888, 6941 StructuredOrInstantiable = 469499904, 6942 Narrowable = 536624127 6943 } 6944 type DestructuringPattern = BindingPattern | ObjectLiteralExpression | ArrayLiteralExpression; 6945 interface Type { 6946 flags: TypeFlags; 6947 symbol: Symbol; 6948 pattern?: DestructuringPattern; 6949 aliasSymbol?: Symbol; 6950 aliasTypeArguments?: readonly Type[]; 6951 } 6952 interface Type { 6953 getFlags(): TypeFlags; 6954 getSymbol(): Symbol | undefined; 6955 getProperties(): Symbol[]; 6956 getProperty(propertyName: string): Symbol | undefined; 6957 getApparentProperties(): Symbol[]; 6958 getCallSignatures(): readonly Signature[]; 6959 getConstructSignatures(): readonly Signature[]; 6960 getStringIndexType(): Type | undefined; 6961 getNumberIndexType(): Type | undefined; 6962 getBaseTypes(): BaseType[] | undefined; 6963 getNonNullableType(): Type; 6964 getConstraint(): Type | undefined; 6965 getDefault(): Type | undefined; 6966 isUnion(): this is UnionType; 6967 isIntersection(): this is IntersectionType; 6968 isUnionOrIntersection(): this is UnionOrIntersectionType; 6969 isLiteral(): this is LiteralType; 6970 isStringLiteral(): this is StringLiteralType; 6971 isNumberLiteral(): this is NumberLiteralType; 6972 isTypeParameter(): this is TypeParameter; 6973 isClassOrInterface(): this is InterfaceType; 6974 isClass(): this is InterfaceType; 6975 isIndexType(): this is IndexType; 6976 } 6977 interface LiteralType extends Type { 6978 value: string | number | PseudoBigInt; 6979 freshType: LiteralType; 6980 regularType: LiteralType; 6981 } 6982 interface UniqueESSymbolType extends Type { 6983 symbol: Symbol; 6984 escapedName: __String; 6985 } 6986 interface StringLiteralType extends LiteralType { 6987 value: string; 6988 } 6989 interface NumberLiteralType extends LiteralType { 6990 value: number; 6991 } 6992 interface BigIntLiteralType extends LiteralType { 6993 value: PseudoBigInt; 6994 } 6995 interface EnumType extends Type { 6996 } 6997 enum ObjectFlags { 6998 Class = 1, 6999 Interface = 2, 7000 Reference = 4, 7001 Tuple = 8, 7002 Anonymous = 16, 7003 Mapped = 32, 7004 Instantiated = 64, 7005 ObjectLiteral = 128, 7006 EvolvingArray = 256, 7007 ObjectLiteralPatternWithComputedProperties = 512, 7008 ReverseMapped = 1024, 7009 JsxAttributes = 2048, 7010 JSLiteral = 4096, 7011 FreshLiteral = 8192, 7012 ArrayLiteral = 16384, 7013 Annotation = 134217728, 7014 ClassOrInterface = 3, 7015 ContainsSpread = 2097152, 7016 ObjectRestType = 4194304, 7017 InstantiationExpressionType = 8388608 7018 } 7019 interface ObjectType extends Type { 7020 objectFlags: ObjectFlags; 7021 } 7022 /** Class and interface types (ObjectFlags.Class and ObjectFlags.Interface). */ 7023 interface InterfaceType extends ObjectType { 7024 typeParameters: TypeParameter[] | undefined; 7025 outerTypeParameters: TypeParameter[] | undefined; 7026 localTypeParameters: TypeParameter[] | undefined; 7027 thisType: TypeParameter | undefined; 7028 } 7029 type BaseType = ObjectType | IntersectionType | TypeVariable; 7030 interface InterfaceTypeWithDeclaredMembers extends InterfaceType { 7031 declaredProperties: Symbol[]; 7032 declaredCallSignatures: Signature[]; 7033 declaredConstructSignatures: Signature[]; 7034 declaredIndexInfos: IndexInfo[]; 7035 } 7036 /** 7037 * Type references (ObjectFlags.Reference). When a class or interface has type parameters or 7038 * a "this" type, references to the class or interface are made using type references. The 7039 * typeArguments property specifies the types to substitute for the type parameters of the 7040 * class or interface and optionally includes an extra element that specifies the type to 7041 * substitute for "this" in the resulting instantiation. When no extra argument is present, 7042 * the type reference itself is substituted for "this". The typeArguments property is undefined 7043 * if the class or interface has no type parameters and the reference isn't specifying an 7044 * explicit "this" argument. 7045 */ 7046 interface TypeReference extends ObjectType { 7047 target: GenericType; 7048 node?: TypeReferenceNode | ArrayTypeNode | TupleTypeNode; 7049 } 7050 interface TypeReference { 7051 typeArguments?: readonly Type[]; 7052 } 7053 interface DeferredTypeReference extends TypeReference { 7054 } 7055 interface GenericType extends InterfaceType, TypeReference { 7056 } 7057 enum ElementFlags { 7058 Required = 1, 7059 Optional = 2, 7060 Rest = 4, 7061 Variadic = 8, 7062 Fixed = 3, 7063 Variable = 12, 7064 NonRequired = 14, 7065 NonRest = 11 7066 } 7067 interface TupleType extends GenericType { 7068 elementFlags: readonly ElementFlags[]; 7069 minLength: number; 7070 fixedLength: number; 7071 hasRestElement: boolean; 7072 combinedFlags: ElementFlags; 7073 readonly: boolean; 7074 labeledElementDeclarations?: readonly (NamedTupleMember | ParameterDeclaration)[]; 7075 } 7076 interface TupleTypeReference extends TypeReference { 7077 target: TupleType; 7078 } 7079 interface UnionOrIntersectionType extends Type { 7080 types: Type[]; 7081 } 7082 interface UnionType extends UnionOrIntersectionType { 7083 } 7084 interface IntersectionType extends UnionOrIntersectionType { 7085 } 7086 type StructuredType = ObjectType | UnionType | IntersectionType; 7087 interface EvolvingArrayType extends ObjectType { 7088 elementType: Type; 7089 finalArrayType?: Type; 7090 } 7091 interface InstantiableType extends Type { 7092 } 7093 interface TypeParameter extends InstantiableType { 7094 } 7095 interface IndexedAccessType extends InstantiableType { 7096 objectType: Type; 7097 indexType: Type; 7098 constraint?: Type; 7099 simplifiedForReading?: Type; 7100 simplifiedForWriting?: Type; 7101 } 7102 type TypeVariable = TypeParameter | IndexedAccessType; 7103 interface IndexType extends InstantiableType { 7104 type: InstantiableType | UnionOrIntersectionType; 7105 } 7106 interface ConditionalRoot { 7107 node: ConditionalTypeNode; 7108 checkType: Type; 7109 extendsType: Type; 7110 isDistributive: boolean; 7111 inferTypeParameters?: TypeParameter[]; 7112 outerTypeParameters?: TypeParameter[]; 7113 instantiations?: Map<Type>; 7114 aliasSymbol?: Symbol; 7115 aliasTypeArguments?: Type[]; 7116 } 7117 interface ConditionalType extends InstantiableType { 7118 root: ConditionalRoot; 7119 checkType: Type; 7120 extendsType: Type; 7121 resolvedTrueType?: Type; 7122 resolvedFalseType?: Type; 7123 } 7124 interface TemplateLiteralType extends InstantiableType { 7125 texts: readonly string[]; 7126 types: readonly Type[]; 7127 } 7128 interface StringMappingType extends InstantiableType { 7129 symbol: Symbol; 7130 type: Type; 7131 } 7132 interface SubstitutionType extends InstantiableType { 7133 objectFlags: ObjectFlags; 7134 baseType: Type; 7135 constraint: Type; 7136 } 7137 enum SignatureKind { 7138 Call = 0, 7139 Construct = 1 7140 } 7141 interface Signature { 7142 declaration?: SignatureDeclaration | JSDocSignature; 7143 typeParameters?: readonly TypeParameter[]; 7144 parameters: readonly Symbol[]; 7145 } 7146 interface Signature { 7147 getDeclaration(): SignatureDeclaration; 7148 getTypeParameters(): TypeParameter[] | undefined; 7149 getParameters(): Symbol[]; 7150 getTypeParameterAtPosition(pos: number): Type; 7151 getReturnType(): Type; 7152 getDocumentationComment(typeChecker: TypeChecker | undefined): SymbolDisplayPart[]; 7153 getJsDocTags(): JSDocTagInfo[]; 7154 } 7155 enum IndexKind { 7156 String = 0, 7157 Number = 1 7158 } 7159 interface IndexInfo { 7160 keyType: Type; 7161 type: Type; 7162 isReadonly: boolean; 7163 declaration?: IndexSignatureDeclaration; 7164 } 7165 enum InferencePriority { 7166 NakedTypeVariable = 1, 7167 SpeculativeTuple = 2, 7168 SubstituteSource = 4, 7169 HomomorphicMappedType = 8, 7170 PartialHomomorphicMappedType = 16, 7171 MappedTypeConstraint = 32, 7172 ContravariantConditional = 64, 7173 ReturnType = 128, 7174 LiteralKeyof = 256, 7175 NoConstraints = 512, 7176 AlwaysStrict = 1024, 7177 MaxValue = 2048, 7178 PriorityImpliesCombination = 416, 7179 Circularity = -1 7180 } 7181 /** @deprecated Use FileExtensionInfo instead. */ 7182 type JsFileExtensionInfo = FileExtensionInfo; 7183 interface FileExtensionInfo { 7184 extension: string; 7185 isMixedContent: boolean; 7186 scriptKind?: ScriptKind; 7187 } 7188 interface DiagnosticMessage { 7189 key: string; 7190 category: DiagnosticCategory; 7191 code: number; 7192 message: string; 7193 reportsUnnecessary?: {}; 7194 reportsDeprecated?: {}; 7195 } 7196 /** 7197 * A linked list of formatted diagnostic messages to be used as part of a multiline message. 7198 * It is built from the bottom up, leaving the head to be the "main" diagnostic. 7199 * While it seems that DiagnosticMessageChain is structurally similar to DiagnosticMessage, 7200 * the difference is that messages are all preformatted in DMC. 7201 */ 7202 interface DiagnosticMessageChain { 7203 messageText: string; 7204 category: DiagnosticCategory; 7205 code: number; 7206 next?: DiagnosticMessageChain[]; 7207 } 7208 interface Diagnostic extends DiagnosticRelatedInformation { 7209 /** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */ 7210 reportsUnnecessary?: {}; 7211 reportsDeprecated?: {}; 7212 source?: string; 7213 relatedInformation?: DiagnosticRelatedInformation[]; 7214 } 7215 interface DiagnosticRelatedInformation { 7216 category: DiagnosticCategory; 7217 code: number; 7218 file: SourceFile | undefined; 7219 start: number | undefined; 7220 length: number | undefined; 7221 messageText: string | DiagnosticMessageChain; 7222 } 7223 interface DiagnosticWithLocation extends Diagnostic { 7224 file: SourceFile; 7225 start: number; 7226 length: number; 7227 } 7228 enum DiagnosticCategory { 7229 Warning = 0, 7230 Error = 1, 7231 Suggestion = 2, 7232 Message = 3 7233 } 7234 enum ModuleResolutionKind { 7235 Classic = 1, 7236 NodeJs = 2, 7237 Node16 = 3, 7238 NodeNext = 99 7239 } 7240 enum ModuleDetectionKind { 7241 /** 7242 * Files with imports, exports and/or import.meta are considered modules 7243 */ 7244 Legacy = 1, 7245 /** 7246 * Legacy, but also files with jsx under react-jsx or react-jsxdev and esm mode files under moduleResolution: node16+ 7247 */ 7248 Auto = 2, 7249 /** 7250 * Consider all non-declaration files modules, regardless of present syntax 7251 */ 7252 Force = 3 7253 } 7254 interface PluginImport { 7255 name: string; 7256 } 7257 interface ProjectReference { 7258 /** A normalized path on disk */ 7259 path: string; 7260 /** The path as the user originally wrote it */ 7261 originalPath?: string; 7262 /** True if the output of this reference should be prepended to the output of this project. Only valid for --outFile compilations */ 7263 prepend?: boolean; 7264 /** True if it is intended that this reference form a circularity */ 7265 circular?: boolean; 7266 } 7267 enum WatchFileKind { 7268 FixedPollingInterval = 0, 7269 PriorityPollingInterval = 1, 7270 DynamicPriorityPolling = 2, 7271 FixedChunkSizePolling = 3, 7272 UseFsEvents = 4, 7273 UseFsEventsOnParentDirectory = 5 7274 } 7275 enum WatchDirectoryKind { 7276 UseFsEvents = 0, 7277 FixedPollingInterval = 1, 7278 DynamicPriorityPolling = 2, 7279 FixedChunkSizePolling = 3 7280 } 7281 enum PollingWatchKind { 7282 FixedInterval = 0, 7283 PriorityInterval = 1, 7284 DynamicPriority = 2, 7285 FixedChunkSize = 3 7286 } 7287 type CompilerOptionsValue = string | number | boolean | (string | number)[] | string[] | MapLike<string[]> | PluginImport[] | ProjectReference[] | null | undefined | EtsOptions; 7288 interface CompilerOptions { 7289 allowJs?: boolean; 7290 allowSyntheticDefaultImports?: boolean; 7291 allowUmdGlobalAccess?: boolean; 7292 allowUnreachableCode?: boolean; 7293 allowUnusedLabels?: boolean; 7294 alwaysStrict?: boolean; 7295 baseUrl?: string; 7296 charset?: string; 7297 checkJs?: boolean; 7298 declaration?: boolean; 7299 declarationMap?: boolean; 7300 emitDeclarationOnly?: boolean; 7301 declarationDir?: string; 7302 disableSizeLimit?: boolean; 7303 disableSourceOfProjectReferenceRedirect?: boolean; 7304 disableSolutionSearching?: boolean; 7305 disableReferencedProjectLoad?: boolean; 7306 downlevelIteration?: boolean; 7307 emitBOM?: boolean; 7308 emitDecoratorMetadata?: boolean; 7309 exactOptionalPropertyTypes?: boolean; 7310 experimentalDecorators?: boolean; 7311 forceConsistentCasingInFileNames?: boolean; 7312 importHelpers?: boolean; 7313 importsNotUsedAsValues?: ImportsNotUsedAsValues; 7314 inlineSourceMap?: boolean; 7315 inlineSources?: boolean; 7316 isolatedModules?: boolean; 7317 isolatedDeclarations?: boolean; 7318 jsx?: JsxEmit; 7319 keyofStringsOnly?: boolean; 7320 lib?: string[]; 7321 locale?: string; 7322 mapRoot?: string; 7323 maxNodeModuleJsDepth?: number; 7324 module?: ModuleKind; 7325 moduleResolution?: ModuleResolutionKind; 7326 moduleSuffixes?: string[]; 7327 moduleDetection?: ModuleDetectionKind; 7328 newLine?: NewLineKind; 7329 noEmit?: boolean; 7330 noEmitHelpers?: boolean; 7331 noEmitOnError?: boolean; 7332 noErrorTruncation?: boolean; 7333 noFallthroughCasesInSwitch?: boolean; 7334 noImplicitAny?: boolean; 7335 noImplicitReturns?: boolean; 7336 noImplicitThis?: boolean; 7337 noStrictGenericChecks?: boolean; 7338 noUnusedLocals?: boolean; 7339 noUnusedParameters?: boolean; 7340 noImplicitUseStrict?: boolean; 7341 noPropertyAccessFromIndexSignature?: boolean; 7342 assumeChangesOnlyAffectDirectDependencies?: boolean; 7343 noLib?: boolean; 7344 noResolve?: boolean; 7345 noUncheckedIndexedAccess?: boolean; 7346 out?: string; 7347 outDir?: string; 7348 outFile?: string; 7349 paths?: MapLike<string[]>; 7350 preserveConstEnums?: boolean; 7351 noImplicitOverride?: boolean; 7352 preserveSymlinks?: boolean; 7353 preserveValueImports?: boolean; 7354 project?: string; 7355 reactNamespace?: string; 7356 jsxFactory?: string; 7357 jsxFragmentFactory?: string; 7358 jsxImportSource?: string; 7359 composite?: boolean; 7360 incremental?: boolean; 7361 tsBuildInfoFile?: string; 7362 removeComments?: boolean; 7363 rootDir?: string; 7364 rootDirs?: string[]; 7365 skipLibCheck?: boolean; 7366 skipDefaultLibCheck?: boolean; 7367 sourceMap?: boolean; 7368 sourceRoot?: string; 7369 strict?: boolean; 7370 strictFunctionTypes?: boolean; 7371 strictBindCallApply?: boolean; 7372 strictNullChecks?: boolean; 7373 strictPropertyInitialization?: boolean; 7374 stripInternal?: boolean; 7375 suppressExcessPropertyErrors?: boolean; 7376 suppressImplicitAnyIndexErrors?: boolean; 7377 target?: ScriptTarget; 7378 traceResolution?: boolean; 7379 useUnknownInCatchVariables?: boolean; 7380 resolveJsonModule?: boolean; 7381 types?: string[]; 7382 /** Paths used to compute primary types search locations */ 7383 typeRoots?: string[]; 7384 esModuleInterop?: boolean; 7385 useDefineForClassFields?: boolean; 7386 ets?: EtsOptions; 7387 packageManagerType?: string; 7388 emitNodeModulesFiles?: boolean; 7389 etsLoaderPath?: string; 7390 tsImportSendableEnable?: boolean; 7391 skipPathsInKeyForCompilationSettings?: boolean; 7392 compatibleSdkVersion?: number; 7393 compatibleSdkVersionStage?: string; 7394 noTransformedKitInParser?: boolean; 7395 [option: string]: CompilerOptionsValue | TsConfigSourceFile | undefined; 7396 etsAnnotationsEnable?: boolean; 7397 maxFlowDepth?: number; 7398 skipOhModulesLint?: boolean; 7399 mixCompile?: boolean; 7400 } 7401 interface EtsOptions { 7402 render: { 7403 method: string[]; 7404 decorator: string[]; 7405 }; 7406 components: string[]; 7407 libs: string[]; 7408 extend: { 7409 decorator: string[]; 7410 components: { 7411 name: string; 7412 type: string; 7413 instance: string; 7414 }[]; 7415 }; 7416 styles: { 7417 decorator: string; 7418 component: { 7419 name: string; 7420 type: string; 7421 instance: string; 7422 }; 7423 property: string; 7424 }; 7425 concurrent: { 7426 decorator: string; 7427 }; 7428 customComponent?: string; 7429 propertyDecorators: { 7430 name: string; 7431 needInitialization: boolean; 7432 }[]; 7433 emitDecorators: { 7434 name: string; 7435 emitParameters: boolean; 7436 }[]; 7437 syntaxComponents: { 7438 paramsUICallback: string[]; 7439 attrUICallback: { 7440 name: string; 7441 attributes: string[]; 7442 }[]; 7443 }; 7444 } 7445 interface WatchOptions { 7446 watchFile?: WatchFileKind; 7447 watchDirectory?: WatchDirectoryKind; 7448 fallbackPolling?: PollingWatchKind; 7449 synchronousWatchDirectory?: boolean; 7450 excludeDirectories?: string[]; 7451 excludeFiles?: string[]; 7452 [option: string]: CompilerOptionsValue | undefined; 7453 } 7454 interface TypeAcquisition { 7455 /** 7456 * @deprecated typingOptions.enableAutoDiscovery 7457 * Use typeAcquisition.enable instead. 7458 */ 7459 enableAutoDiscovery?: boolean; 7460 enable?: boolean; 7461 include?: string[]; 7462 exclude?: string[]; 7463 disableFilenameBasedTypeAcquisition?: boolean; 7464 [option: string]: CompilerOptionsValue | undefined; 7465 } 7466 enum ModuleKind { 7467 None = 0, 7468 CommonJS = 1, 7469 AMD = 2, 7470 UMD = 3, 7471 System = 4, 7472 ES2015 = 5, 7473 ES2020 = 6, 7474 ES2022 = 7, 7475 ESNext = 99, 7476 Node16 = 100, 7477 NodeNext = 199 7478 } 7479 enum JsxEmit { 7480 None = 0, 7481 Preserve = 1, 7482 React = 2, 7483 ReactNative = 3, 7484 ReactJSX = 4, 7485 ReactJSXDev = 5 7486 } 7487 enum ImportsNotUsedAsValues { 7488 Remove = 0, 7489 Preserve = 1, 7490 Error = 2 7491 } 7492 enum NewLineKind { 7493 CarriageReturnLineFeed = 0, 7494 LineFeed = 1 7495 } 7496 interface LineAndCharacter { 7497 /** 0-based. */ 7498 line: number; 7499 character: number; 7500 } 7501 enum ScriptKind { 7502 Unknown = 0, 7503 JS = 1, 7504 JSX = 2, 7505 TS = 3, 7506 TSX = 4, 7507 External = 5, 7508 JSON = 6, 7509 /** 7510 * Used on extensions that doesn't define the ScriptKind but the content defines it. 7511 * Deferred extensions are going to be included in all project contexts. 7512 */ 7513 Deferred = 7, 7514 ETS = 8 7515 } 7516 enum ScriptTarget { 7517 ES3 = 0, 7518 ES5 = 1, 7519 ES2015 = 2, 7520 ES2016 = 3, 7521 ES2017 = 4, 7522 ES2018 = 5, 7523 ES2019 = 6, 7524 ES2020 = 7, 7525 ES2021 = 8, 7526 ES2022 = 9, 7527 ESNext = 99, 7528 JSON = 100, 7529 Latest = 99 7530 } 7531 enum LanguageVariant { 7532 Standard = 0, 7533 JSX = 1 7534 } 7535 /** Either a parsed command line or a parsed tsconfig.json */ 7536 interface ParsedCommandLine { 7537 options: CompilerOptions; 7538 typeAcquisition?: TypeAcquisition; 7539 fileNames: string[]; 7540 projectReferences?: readonly ProjectReference[]; 7541 watchOptions?: WatchOptions; 7542 raw?: any; 7543 errors: Diagnostic[]; 7544 wildcardDirectories?: MapLike<WatchDirectoryFlags>; 7545 compileOnSave?: boolean; 7546 } 7547 enum WatchDirectoryFlags { 7548 None = 0, 7549 Recursive = 1 7550 } 7551 interface CreateProgramOptions { 7552 rootNames: readonly string[]; 7553 options: CompilerOptions; 7554 projectReferences?: readonly ProjectReference[]; 7555 host?: CompilerHost; 7556 oldProgram?: Program; 7557 configFileParsingDiagnostics?: readonly Diagnostic[]; 7558 } 7559 interface ModuleResolutionHost { 7560 fileExists(fileName: string): boolean; 7561 readFile(fileName: string): string | undefined; 7562 trace?(s: string): void; 7563 directoryExists?(directoryName: string): boolean; 7564 /** 7565 * Resolve a symbolic link. 7566 * @see https://nodejs.org/api/fs.html#fs_fs_realpathsync_path_options 7567 */ 7568 realpath?(path: string): string; 7569 getCurrentDirectory?(): string; 7570 getDirectories?(path: string): string[]; 7571 useCaseSensitiveFileNames?: boolean | (() => boolean) | undefined; 7572 getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig; 7573 getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocTagInfos: JsDocTagInfo[], jsDocs?: JSDoc[]): ConditionCheckResult; 7574 getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo; 7575 } 7576 /** 7577 * Used by services to specify the minimum host area required to set up source files under any compilation settings 7578 */ 7579 interface MinimalResolutionCacheHost extends ModuleResolutionHost { 7580 getCompilationSettings(): CompilerOptions; 7581 getCompilerHost?(): CompilerHost | undefined; 7582 } 7583 /** 7584 * Represents the result of module resolution. 7585 * Module resolution will pick up tsx/jsx/js files even if '--jsx' and '--allowJs' are turned off. 7586 * The Program will then filter results based on these flags. 7587 * 7588 * Prefer to return a `ResolvedModuleFull` so that the file type does not have to be inferred. 7589 */ 7590 interface ResolvedModule { 7591 /** Path of the file the module was resolved to. */ 7592 resolvedFileName: string; 7593 /** True if `resolvedFileName` comes from `node_modules`. */ 7594 isExternalLibraryImport?: boolean; 7595 } 7596 /** 7597 * ResolvedModule with an explicitly provided `extension` property. 7598 * Prefer this over `ResolvedModule`. 7599 * If changing this, remember to change `moduleResolutionIsEqualTo`. 7600 */ 7601 interface ResolvedModuleFull extends ResolvedModule { 7602 /** 7603 * Extension of resolvedFileName. This must match what's at the end of resolvedFileName. 7604 * This is optional for backwards-compatibility, but will be added if not provided. 7605 */ 7606 extension: Extension; 7607 packageId?: PackageId; 7608 } 7609 /** 7610 * Unique identifier with a package name and version. 7611 * If changing this, remember to change `packageIdIsEqual`. 7612 */ 7613 interface PackageId { 7614 /** 7615 * Name of the package. 7616 * Should not include `@types`. 7617 * If accessing a non-index file, this should include its name e.g. "foo/bar". 7618 */ 7619 name: string; 7620 /** 7621 * Name of a submodule within this package. 7622 * May be "". 7623 */ 7624 subModuleName: string; 7625 /** Version of the package, e.g. "1.2.3" */ 7626 version: string; 7627 } 7628 enum Extension { 7629 Ts = ".ts", 7630 Tsx = ".tsx", 7631 Dts = ".d.ts", 7632 Js = ".js", 7633 Jsx = ".jsx", 7634 Json = ".json", 7635 TsBuildInfo = ".tsbuildinfo", 7636 Mjs = ".mjs", 7637 Mts = ".mts", 7638 Dmts = ".d.mts", 7639 Cjs = ".cjs", 7640 Cts = ".cts", 7641 Dcts = ".d.cts", 7642 Ets = ".ets", 7643 Dets = ".d.ets" 7644 } 7645 interface ResolvedModuleWithFailedLookupLocations { 7646 readonly resolvedModule: ResolvedModuleFull | undefined; 7647 } 7648 interface ResolvedTypeReferenceDirective { 7649 primary: boolean; 7650 resolvedFileName: string | undefined; 7651 packageId?: PackageId; 7652 /** True if `resolvedFileName` comes from `node_modules` or `oh_modules`. */ 7653 isExternalLibraryImport?: boolean; 7654 } 7655 interface ResolvedTypeReferenceDirectiveWithFailedLookupLocations { 7656 readonly resolvedTypeReferenceDirective: ResolvedTypeReferenceDirective | undefined; 7657 readonly failedLookupLocations: string[]; 7658 } 7659 interface FileCheckModuleInfo { 7660 fileNeedCheck: boolean; 7661 checkPayload: any; 7662 currentFileName: string; 7663 tagName?: string[]; 7664 } 7665 interface JsDocNodeCheckConfig { 7666 nodeNeedCheck: boolean; 7667 checkConfig: JsDocNodeCheckConfigItem[]; 7668 } 7669 interface JsDocNodeCheckConfigItem { 7670 tagName: string[]; 7671 message: string; 7672 needConditionCheck: boolean; 7673 type: DiagnosticCategory; 7674 specifyCheckConditionFuncName: string; 7675 tagNameShouldExisted: boolean; 7676 checkValidCallback?: (jsDocTag: JSDocTag, config: JsDocNodeCheckConfigItem) => boolean; 7677 checkJsDocSpecialValidCallback?: (jsDocTags: readonly JSDocTag[], config: JsDocNodeCheckConfigItem) => boolean; 7678 checkConditionValidCallback?: (node: CallExpression, specifyFuncName: string, importSymbol: string, jsDocs?: JSDoc[]) => boolean; 7679 } 7680 interface TagCheckParam { 7681 needCheck: boolean; 7682 checkConfig: TagCheckConfig[]; 7683 } 7684 interface TagCheckConfig { 7685 tagName: string; 7686 message: string; 7687 needConditionCheck: boolean; 7688 specifyCheckConditionFuncName: string; 7689 } 7690 interface ConditionCheckResult { 7691 valid: boolean; 7692 type?: DiagnosticCategory; 7693 message?: string; 7694 } 7695 interface CompilerHost extends ModuleResolutionHost { 7696 getSourceFile(fileName: string, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean, options?: CompilerOptions): SourceFile | undefined; 7697 getSourceFileByPath?(fileName: string, path: Path, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean): SourceFile | undefined; 7698 getCancellationToken?(): CancellationToken; 7699 getDefaultLibFileName(options: CompilerOptions): string; 7700 getDefaultLibLocation?(): string; 7701 writeFile: WriteFileCallback; 7702 getCurrentDirectory(): string; 7703 getCanonicalFileName(fileName: string): string; 7704 useCaseSensitiveFileNames(): boolean; 7705 getNewLine(): string; 7706 readDirectory?(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[], depth?: number): string[]; 7707 resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[]; 7708 /** 7709 * Returns the module resolution cache used by a provided `resolveModuleNames` implementation so that any non-name module resolution operations (eg, package.json lookup) can reuse it 7710 */ 7711 getModuleResolutionCache?(): ModuleResolutionCache | undefined; 7712 /** 7713 * This method is a companion for 'resolveModuleNames' and is used to resolve 'types' references to actual type declaration files 7714 */ 7715 resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[] | readonly FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[]; 7716 getEnvironmentVariable?(name: string): string | undefined; 7717 /** If provided along with custom resolveModuleNames or resolveTypeReferenceDirectives, used to determine if unchanged file path needs to re-resolve modules/type reference directives */ 7718 hasInvalidatedResolutions?(filePath: Path): boolean; 7719 createHash?(data: string): string; 7720 getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined; 7721 /** 7722 * get tagName where need to be determined based on the file path 7723 * @param jsDocFileCheckInfo filePath 7724 * @param symbolSourceFilePath filePath 7725 */ 7726 getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig; 7727 /** 7728 * get checked results based on the file path and jsDocs 7729 * @param jsDocFileCheckedInfo 7730 * @param jsDocs 7731 */ 7732 getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocTagInfos: JsDocTagInfo[], jsDocs?: JSDoc[]): ConditionCheckResult; 7733 getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo; 7734 getLastCompiledProgram?(): Program; 7735 isStaticSourceFile?(filePath: string): boolean; 7736 } 7737 interface SourceMapRange extends TextRange { 7738 source?: SourceMapSource; 7739 } 7740 interface SourceMapSource { 7741 fileName: string; 7742 text: string; 7743 skipTrivia?: (pos: number) => number; 7744 } 7745 interface SourceMapSource { 7746 getLineAndCharacterOfPosition(pos: number): LineAndCharacter; 7747 } 7748 enum EmitFlags { 7749 None = 0, 7750 SingleLine = 1, 7751 AdviseOnEmitNode = 2, 7752 NoSubstitution = 4, 7753 CapturesThis = 8, 7754 NoLeadingSourceMap = 16, 7755 NoTrailingSourceMap = 32, 7756 NoSourceMap = 48, 7757 NoNestedSourceMaps = 64, 7758 NoTokenLeadingSourceMaps = 128, 7759 NoTokenTrailingSourceMaps = 256, 7760 NoTokenSourceMaps = 384, 7761 NoLeadingComments = 512, 7762 NoTrailingComments = 1024, 7763 NoComments = 1536, 7764 NoNestedComments = 2048, 7765 HelperName = 4096, 7766 ExportName = 8192, 7767 LocalName = 16384, 7768 InternalName = 32768, 7769 Indented = 65536, 7770 NoIndentation = 131072, 7771 AsyncFunctionBody = 262144, 7772 ReuseTempVariableScope = 524288, 7773 CustomPrologue = 1048576, 7774 NoHoisting = 2097152, 7775 HasEndOfDeclarationMarker = 4194304, 7776 Iterator = 8388608, 7777 NoAsciiEscaping = 16777216 7778 } 7779 interface EmitHelperBase { 7780 readonly name: string; 7781 readonly scoped: boolean; 7782 readonly text: string | ((node: EmitHelperUniqueNameCallback) => string); 7783 readonly priority?: number; 7784 readonly dependencies?: EmitHelper[]; 7785 } 7786 interface ScopedEmitHelper extends EmitHelperBase { 7787 readonly scoped: true; 7788 } 7789 interface UnscopedEmitHelper extends EmitHelperBase { 7790 readonly scoped: false; 7791 readonly text: string; 7792 } 7793 type EmitHelper = ScopedEmitHelper | UnscopedEmitHelper; 7794 type EmitHelperUniqueNameCallback = (name: string) => string; 7795 enum EmitHint { 7796 SourceFile = 0, 7797 Expression = 1, 7798 IdentifierName = 2, 7799 MappedTypeParameter = 3, 7800 Unspecified = 4, 7801 EmbeddedStatement = 5, 7802 JsxAttributeValue = 6 7803 } 7804 interface SourceFileMayBeEmittedHost { 7805 getCompilerOptions(): CompilerOptions; 7806 isSourceFileFromExternalLibrary(file: SourceFile): boolean; 7807 getResolvedProjectReferenceToRedirect(fileName: string): ResolvedProjectReference | undefined; 7808 isSourceOfProjectReferenceRedirect(fileName: string): boolean; 7809 } 7810 interface EmitHost extends ScriptReferenceHost, ModuleSpecifierResolutionHost, SourceFileMayBeEmittedHost { 7811 getSourceFiles(): readonly SourceFile[]; 7812 useCaseSensitiveFileNames(): boolean; 7813 getCurrentDirectory(): string; 7814 getLibFileFromReference(ref: FileReference): SourceFile | undefined; 7815 getCommonSourceDirectory(): string; 7816 getCanonicalFileName(fileName: string): string; 7817 getNewLine(): string; 7818 isEmitBlocked(emitFileName: string): boolean; 7819 getPrependNodes(): readonly (InputFiles | UnparsedSource)[]; 7820 writeFile: WriteFileCallback; 7821 getSourceFileFromReference: Program["getSourceFileFromReference"]; 7822 readonly redirectTargetsMap: RedirectTargetsMap; 7823 createHash?(data: string): string; 7824 } 7825 enum OuterExpressionKinds { 7826 Parentheses = 1, 7827 TypeAssertions = 2, 7828 NonNullAssertions = 4, 7829 PartiallyEmittedExpressions = 8, 7830 Assertions = 6, 7831 All = 15, 7832 ExcludeJSDocTypeAssertion = 16 7833 } 7834 type TypeOfTag = "undefined" | "number" | "bigint" | "boolean" | "string" | "symbol" | "object" | "function"; 7835 interface NodeFactory { 7836 createNodeArray<T extends Node>(elements?: readonly T[], hasTrailingComma?: boolean): NodeArray<T>; 7837 createNumericLiteral(value: string | number, numericLiteralFlags?: TokenFlags): NumericLiteral; 7838 createBigIntLiteral(value: string | PseudoBigInt): BigIntLiteral; 7839 createStringLiteral(text: string, isSingleQuote?: boolean): StringLiteral; 7840 createStringLiteralFromNode(sourceNode: PropertyNameLiteral | PrivateIdentifier, isSingleQuote?: boolean): StringLiteral; 7841 createRegularExpressionLiteral(text: string): RegularExpressionLiteral; 7842 createIdentifier(text: string): Identifier; 7843 /** 7844 * Create a unique temporary variable. 7845 * @param recordTempVariable An optional callback used to record the temporary variable name. This 7846 * should usually be a reference to `hoistVariableDeclaration` from a `TransformationContext`, but 7847 * can be `undefined` if you plan to record the temporary variable manually. 7848 * @param reservedInNestedScopes When `true`, reserves the temporary variable name in all nested scopes 7849 * during emit so that the variable can be referenced in a nested function body. This is an alternative to 7850 * setting `EmitFlags.ReuseTempVariableScope` on the nested function itself. 7851 */ 7852 createTempVariable(recordTempVariable: ((node: Identifier) => void) | undefined, reservedInNestedScopes?: boolean): Identifier; 7853 /** 7854 * Create a unique temporary variable for use in a loop. 7855 * @param reservedInNestedScopes When `true`, reserves the temporary variable name in all nested scopes 7856 * during emit so that the variable can be referenced in a nested function body. This is an alternative to 7857 * setting `EmitFlags.ReuseTempVariableScope` on the nested function itself. 7858 */ 7859 createLoopVariable(reservedInNestedScopes?: boolean): Identifier; 7860 /** Create a unique name based on the supplied text. */ 7861 createUniqueName(text: string, flags?: GeneratedIdentifierFlags): Identifier; 7862 /** Create a unique name generated for a node. */ 7863 getGeneratedNameForNode(node: Node | undefined, flags?: GeneratedIdentifierFlags): Identifier; 7864 createPrivateIdentifier(text: string): PrivateIdentifier; 7865 createUniquePrivateName(text?: string): PrivateIdentifier; 7866 getGeneratedPrivateNameForNode(node: Node): PrivateIdentifier; 7867 createToken(token: SyntaxKind.SuperKeyword): SuperExpression; 7868 createToken(token: SyntaxKind.ThisKeyword): ThisExpression; 7869 createToken(token: SyntaxKind.NullKeyword): NullLiteral; 7870 createToken(token: SyntaxKind.TrueKeyword): TrueLiteral; 7871 createToken(token: SyntaxKind.FalseKeyword): FalseLiteral; 7872 createToken<TKind extends PunctuationSyntaxKind>(token: TKind): PunctuationToken<TKind>; 7873 createToken<TKind extends KeywordTypeSyntaxKind>(token: TKind): KeywordTypeNode<TKind>; 7874 createToken<TKind extends ModifierSyntaxKind>(token: TKind): ModifierToken<TKind>; 7875 createToken<TKind extends KeywordSyntaxKind>(token: TKind): KeywordToken<TKind>; 7876 createToken<TKind extends SyntaxKind.Unknown | SyntaxKind.EndOfFileToken>(token: TKind): Token<TKind>; 7877 createSuper(): SuperExpression; 7878 createThis(): ThisExpression; 7879 createNull(): NullLiteral; 7880 createTrue(): TrueLiteral; 7881 createFalse(): FalseLiteral; 7882 createModifier<T extends ModifierSyntaxKind>(kind: T): ModifierToken<T>; 7883 createModifiersFromModifierFlags(flags: ModifierFlags): Modifier[] | undefined; 7884 createQualifiedName(left: EntityName, right: string | Identifier): QualifiedName; 7885 updateQualifiedName(node: QualifiedName, left: EntityName, right: Identifier): QualifiedName; 7886 createComputedPropertyName(expression: Expression): ComputedPropertyName; 7887 updateComputedPropertyName(node: ComputedPropertyName, expression: Expression): ComputedPropertyName; 7888 createTypeParameterDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration; 7889 updateTypeParameterDeclaration(node: TypeParameterDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration; 7890 createParameterDeclaration(modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration; 7891 updateParameterDeclaration(node: ParameterDeclaration, modifiers: readonly ModifierLike[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration; 7892 createDecorator(expression: Expression, annotationDeclaration?: AnnotationDeclaration): Decorator; 7893 updateDecorator(node: Decorator, expression: Expression, annotationDeclaration?: AnnotationDeclaration): Decorator; 7894 createPropertySignature(modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined): PropertySignature; 7895 updatePropertySignature(node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined): PropertySignature; 7896 createPropertyDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration; 7897 updatePropertyDeclaration(node: PropertyDeclaration, modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration; 7898 createAnnotationPropertyDeclaration(name: string | PropertyName, type: TypeNode | undefined, initializer: Expression | undefined): AnnotationPropertyDeclaration; 7899 updateAnnotationPropertyDeclaration(node: AnnotationPropertyDeclaration, name: string | PropertyName, type: TypeNode | undefined, initializer: Expression | undefined): AnnotationPropertyDeclaration; 7900 createMethodSignature(modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): MethodSignature; 7901 updateMethodSignature(node: MethodSignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): MethodSignature; 7902 createMethodDeclaration(modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; 7903 updateMethodDeclaration(node: MethodDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; 7904 createConstructorDeclaration(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; 7905 updateConstructorDeclaration(node: ConstructorDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; 7906 createGetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; 7907 updateGetAccessorDeclaration(node: GetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; 7908 createSetAccessorDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; 7909 updateSetAccessorDeclaration(node: SetAccessorDeclaration, modifiers: readonly ModifierLike[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; 7910 createCallSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): CallSignatureDeclaration; 7911 updateCallSignature(node: CallSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): CallSignatureDeclaration; 7912 createConstructSignature(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): ConstructSignatureDeclaration; 7913 updateConstructSignature(node: ConstructSignatureDeclaration, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined): ConstructSignatureDeclaration; 7914 createIndexSignature(modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; 7915 updateIndexSignature(node: IndexSignatureDeclaration, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; 7916 createTemplateLiteralTypeSpan(type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan; 7917 updateTemplateLiteralTypeSpan(node: TemplateLiteralTypeSpan, type: TypeNode, literal: TemplateMiddle | TemplateTail): TemplateLiteralTypeSpan; 7918 createClassStaticBlockDeclaration(body: Block): ClassStaticBlockDeclaration; 7919 updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, body: Block): ClassStaticBlockDeclaration; 7920 createKeywordTypeNode<TKind extends KeywordTypeSyntaxKind>(kind: TKind): KeywordTypeNode<TKind>; 7921 createTypePredicateNode(assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode | string, type: TypeNode | undefined): TypePredicateNode; 7922 updateTypePredicateNode(node: TypePredicateNode, assertsModifier: AssertsKeyword | undefined, parameterName: Identifier | ThisTypeNode, type: TypeNode | undefined): TypePredicateNode; 7923 createTypeReferenceNode(typeName: string | EntityName, typeArguments?: readonly TypeNode[]): TypeReferenceNode; 7924 updateTypeReferenceNode(node: TypeReferenceNode, typeName: EntityName, typeArguments: NodeArray<TypeNode> | undefined): TypeReferenceNode; 7925 createFunctionTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): FunctionTypeNode; 7926 updateFunctionTypeNode(node: FunctionTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): FunctionTypeNode; 7927 createConstructorTypeNode(modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode; 7928 updateConstructorTypeNode(node: ConstructorTypeNode, modifiers: readonly Modifier[] | undefined, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): ConstructorTypeNode; 7929 createTypeQueryNode(exprName: EntityName, typeArguments?: readonly TypeNode[]): TypeQueryNode; 7930 updateTypeQueryNode(node: TypeQueryNode, exprName: EntityName, typeArguments?: readonly TypeNode[]): TypeQueryNode; 7931 createTypeLiteralNode(members: readonly TypeElement[] | undefined): TypeLiteralNode; 7932 updateTypeLiteralNode(node: TypeLiteralNode, members: NodeArray<TypeElement>): TypeLiteralNode; 7933 createArrayTypeNode(elementType: TypeNode): ArrayTypeNode; 7934 updateArrayTypeNode(node: ArrayTypeNode, elementType: TypeNode): ArrayTypeNode; 7935 createTupleTypeNode(elements: readonly (TypeNode | NamedTupleMember)[]): TupleTypeNode; 7936 updateTupleTypeNode(node: TupleTypeNode, elements: readonly (TypeNode | NamedTupleMember)[]): TupleTypeNode; 7937 createNamedTupleMember(dotDotDotToken: DotDotDotToken | undefined, name: Identifier, questionToken: QuestionToken | undefined, type: TypeNode): NamedTupleMember; 7938 updateNamedTupleMember(node: NamedTupleMember, dotDotDotToken: DotDotDotToken | undefined, name: Identifier, questionToken: QuestionToken | undefined, type: TypeNode): NamedTupleMember; 7939 createOptionalTypeNode(type: TypeNode): OptionalTypeNode; 7940 updateOptionalTypeNode(node: OptionalTypeNode, type: TypeNode): OptionalTypeNode; 7941 createRestTypeNode(type: TypeNode): RestTypeNode; 7942 updateRestTypeNode(node: RestTypeNode, type: TypeNode): RestTypeNode; 7943 createUnionTypeNode(types: readonly TypeNode[]): UnionTypeNode; 7944 updateUnionTypeNode(node: UnionTypeNode, types: NodeArray<TypeNode>): UnionTypeNode; 7945 createIntersectionTypeNode(types: readonly TypeNode[]): IntersectionTypeNode; 7946 updateIntersectionTypeNode(node: IntersectionTypeNode, types: NodeArray<TypeNode>): IntersectionTypeNode; 7947 createConditionalTypeNode(checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode): ConditionalTypeNode; 7948 updateConditionalTypeNode(node: ConditionalTypeNode, checkType: TypeNode, extendsType: TypeNode, trueType: TypeNode, falseType: TypeNode): ConditionalTypeNode; 7949 createInferTypeNode(typeParameter: TypeParameterDeclaration): InferTypeNode; 7950 updateInferTypeNode(node: InferTypeNode, typeParameter: TypeParameterDeclaration): InferTypeNode; 7951 createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode; 7952 updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, assertions: ImportTypeAssertionContainer | undefined, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode; 7953 createParenthesizedType(type: TypeNode): ParenthesizedTypeNode; 7954 updateParenthesizedType(node: ParenthesizedTypeNode, type: TypeNode): ParenthesizedTypeNode; 7955 createThisTypeNode(): ThisTypeNode; 7956 createTypeOperatorNode(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode; 7957 updateTypeOperatorNode(node: TypeOperatorNode, type: TypeNode): TypeOperatorNode; 7958 createIndexedAccessTypeNode(objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode; 7959 updateIndexedAccessTypeNode(node: IndexedAccessTypeNode, objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode; 7960 createMappedTypeNode(readonlyToken: ReadonlyKeyword | PlusToken | MinusToken | undefined, typeParameter: TypeParameterDeclaration, nameType: TypeNode | undefined, questionToken: QuestionToken | PlusToken | MinusToken | undefined, type: TypeNode | undefined, members: NodeArray<TypeElement> | undefined): MappedTypeNode; 7961 updateMappedTypeNode(node: MappedTypeNode, readonlyToken: ReadonlyKeyword | PlusToken | MinusToken | undefined, typeParameter: TypeParameterDeclaration, nameType: TypeNode | undefined, questionToken: QuestionToken | PlusToken | MinusToken | undefined, type: TypeNode | undefined, members: NodeArray<TypeElement> | undefined): MappedTypeNode; 7962 createLiteralTypeNode(literal: LiteralTypeNode["literal"]): LiteralTypeNode; 7963 updateLiteralTypeNode(node: LiteralTypeNode, literal: LiteralTypeNode["literal"]): LiteralTypeNode; 7964 createTemplateLiteralType(head: TemplateHead, templateSpans: readonly TemplateLiteralTypeSpan[]): TemplateLiteralTypeNode; 7965 updateTemplateLiteralType(node: TemplateLiteralTypeNode, head: TemplateHead, templateSpans: readonly TemplateLiteralTypeSpan[]): TemplateLiteralTypeNode; 7966 createObjectBindingPattern(elements: readonly BindingElement[]): ObjectBindingPattern; 7967 updateObjectBindingPattern(node: ObjectBindingPattern, elements: readonly BindingElement[]): ObjectBindingPattern; 7968 createArrayBindingPattern(elements: readonly ArrayBindingElement[]): ArrayBindingPattern; 7969 updateArrayBindingPattern(node: ArrayBindingPattern, elements: readonly ArrayBindingElement[]): ArrayBindingPattern; 7970 createBindingElement(dotDotDotToken: DotDotDotToken | undefined, propertyName: string | PropertyName | undefined, name: string | BindingName, initializer?: Expression): BindingElement; 7971 updateBindingElement(node: BindingElement, dotDotDotToken: DotDotDotToken | undefined, propertyName: PropertyName | undefined, name: BindingName, initializer: Expression | undefined): BindingElement; 7972 createArrayLiteralExpression(elements?: readonly Expression[], multiLine?: boolean): ArrayLiteralExpression; 7973 updateArrayLiteralExpression(node: ArrayLiteralExpression, elements: readonly Expression[]): ArrayLiteralExpression; 7974 createObjectLiteralExpression(properties?: readonly ObjectLiteralElementLike[], multiLine?: boolean): ObjectLiteralExpression; 7975 updateObjectLiteralExpression(node: ObjectLiteralExpression, properties: readonly ObjectLiteralElementLike[]): ObjectLiteralExpression; 7976 createPropertyAccessExpression(expression: Expression, name: string | MemberName): PropertyAccessExpression; 7977 updatePropertyAccessExpression(node: PropertyAccessExpression, expression: Expression, name: MemberName): PropertyAccessExpression; 7978 createPropertyAccessChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, name: string | MemberName): PropertyAccessChain; 7979 updatePropertyAccessChain(node: PropertyAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, name: MemberName): PropertyAccessChain; 7980 createElementAccessExpression(expression: Expression, index: number | Expression): ElementAccessExpression; 7981 updateElementAccessExpression(node: ElementAccessExpression, expression: Expression, argumentExpression: Expression): ElementAccessExpression; 7982 createElementAccessChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, index: number | Expression): ElementAccessChain; 7983 updateElementAccessChain(node: ElementAccessChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, argumentExpression: Expression): ElementAccessChain; 7984 createCallExpression(expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): CallExpression; 7985 updateCallExpression(node: CallExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]): CallExpression; 7986 createCallChain(expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): CallChain; 7987 updateCallChain(node: CallChain, expression: Expression, questionDotToken: QuestionDotToken | undefined, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[]): CallChain; 7988 createNewExpression(expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): NewExpression; 7989 updateNewExpression(node: NewExpression, expression: Expression, typeArguments: readonly TypeNode[] | undefined, argumentsArray: readonly Expression[] | undefined): NewExpression; 7990 createTaggedTemplateExpression(tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression; 7991 updateTaggedTemplateExpression(node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression; 7992 createTypeAssertion(type: TypeNode, expression: Expression): TypeAssertion; 7993 updateTypeAssertion(node: TypeAssertion, type: TypeNode, expression: Expression): TypeAssertion; 7994 createParenthesizedExpression(expression: Expression): ParenthesizedExpression; 7995 updateParenthesizedExpression(node: ParenthesizedExpression, expression: Expression): ParenthesizedExpression; 7996 createFunctionExpression(modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[] | undefined, type: TypeNode | undefined, body: Block): FunctionExpression; 7997 updateFunctionExpression(node: FunctionExpression, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block): FunctionExpression; 7998 createArrowFunction(modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction; 7999 updateArrowFunction(node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction; 8000 createEtsComponentExpression(name: Expression, argumentExpression: Expression[] | NodeArray<Expression> | undefined, body: Block | undefined): EtsComponentExpression; 8001 updateEtsComponentExpression(node: EtsComponentExpression, name: Expression | undefined, argumentExpression: Expression[] | NodeArray<Expression> | undefined, body: Block | undefined): EtsComponentExpression; 8002 createDeleteExpression(expression: Expression): DeleteExpression; 8003 updateDeleteExpression(node: DeleteExpression, expression: Expression): DeleteExpression; 8004 createTypeOfExpression(expression: Expression): TypeOfExpression; 8005 updateTypeOfExpression(node: TypeOfExpression, expression: Expression): TypeOfExpression; 8006 createVoidExpression(expression: Expression): VoidExpression; 8007 updateVoidExpression(node: VoidExpression, expression: Expression): VoidExpression; 8008 createAwaitExpression(expression: Expression): AwaitExpression; 8009 updateAwaitExpression(node: AwaitExpression, expression: Expression): AwaitExpression; 8010 createPrefixUnaryExpression(operator: PrefixUnaryOperator, operand: Expression): PrefixUnaryExpression; 8011 updatePrefixUnaryExpression(node: PrefixUnaryExpression, operand: Expression): PrefixUnaryExpression; 8012 createPostfixUnaryExpression(operand: Expression, operator: PostfixUnaryOperator): PostfixUnaryExpression; 8013 updatePostfixUnaryExpression(node: PostfixUnaryExpression, operand: Expression): PostfixUnaryExpression; 8014 createBinaryExpression(left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression): BinaryExpression; 8015 updateBinaryExpression(node: BinaryExpression, left: Expression, operator: BinaryOperator | BinaryOperatorToken, right: Expression): BinaryExpression; 8016 createConditionalExpression(condition: Expression, questionToken: QuestionToken | undefined, whenTrue: Expression, colonToken: ColonToken | undefined, whenFalse: Expression): ConditionalExpression; 8017 updateConditionalExpression(node: ConditionalExpression, condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression; 8018 createTemplateExpression(head: TemplateHead, templateSpans: readonly TemplateSpan[]): TemplateExpression; 8019 updateTemplateExpression(node: TemplateExpression, head: TemplateHead, templateSpans: readonly TemplateSpan[]): TemplateExpression; 8020 createTemplateHead(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateHead; 8021 createTemplateHead(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateHead; 8022 createTemplateMiddle(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateMiddle; 8023 createTemplateMiddle(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateMiddle; 8024 createTemplateTail(text: string, rawText?: string, templateFlags?: TokenFlags): TemplateTail; 8025 createTemplateTail(text: string | undefined, rawText: string, templateFlags?: TokenFlags): TemplateTail; 8026 createNoSubstitutionTemplateLiteral(text: string, rawText?: string): NoSubstitutionTemplateLiteral; 8027 createNoSubstitutionTemplateLiteral(text: string | undefined, rawText: string): NoSubstitutionTemplateLiteral; 8028 createYieldExpression(asteriskToken: AsteriskToken, expression: Expression): YieldExpression; 8029 createYieldExpression(asteriskToken: undefined, expression: Expression | undefined): YieldExpression; 8030 updateYieldExpression(node: YieldExpression, asteriskToken: AsteriskToken | undefined, expression: Expression | undefined): YieldExpression; 8031 createSpreadElement(expression: Expression): SpreadElement; 8032 updateSpreadElement(node: SpreadElement, expression: Expression): SpreadElement; 8033 createClassExpression(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression; 8034 updateClassExpression(node: ClassExpression, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression; 8035 createOmittedExpression(): OmittedExpression; 8036 createExpressionWithTypeArguments(expression: Expression, typeArguments: readonly TypeNode[] | undefined): ExpressionWithTypeArguments; 8037 updateExpressionWithTypeArguments(node: ExpressionWithTypeArguments, expression: Expression, typeArguments: readonly TypeNode[] | undefined): ExpressionWithTypeArguments; 8038 createAsExpression(expression: Expression, type: TypeNode): AsExpression; 8039 updateAsExpression(node: AsExpression, expression: Expression, type: TypeNode): AsExpression; 8040 createNonNullExpression(expression: Expression): NonNullExpression; 8041 updateNonNullExpression(node: NonNullExpression, expression: Expression): NonNullExpression; 8042 createNonNullChain(expression: Expression): NonNullChain; 8043 updateNonNullChain(node: NonNullChain, expression: Expression): NonNullChain; 8044 createMetaProperty(keywordToken: MetaProperty["keywordToken"], name: Identifier): MetaProperty; 8045 updateMetaProperty(node: MetaProperty, name: Identifier): MetaProperty; 8046 createSatisfiesExpression(expression: Expression, type: TypeNode): SatisfiesExpression; 8047 updateSatisfiesExpression(node: SatisfiesExpression, expression: Expression, type: TypeNode): SatisfiesExpression; 8048 createTemplateSpan(expression: Expression, literal: TemplateMiddle | TemplateTail): TemplateSpan; 8049 updateTemplateSpan(node: TemplateSpan, expression: Expression, literal: TemplateMiddle | TemplateTail): TemplateSpan; 8050 createSemicolonClassElement(): SemicolonClassElement; 8051 createBlock(statements: readonly Statement[], multiLine?: boolean): Block; 8052 updateBlock(node: Block, statements: readonly Statement[]): Block; 8053 createVariableStatement(modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList | readonly VariableDeclaration[]): VariableStatement; 8054 updateVariableStatement(node: VariableStatement, modifiers: readonly Modifier[] | undefined, declarationList: VariableDeclarationList): VariableStatement; 8055 createEmptyStatement(): EmptyStatement; 8056 createExpressionStatement(expression: Expression): ExpressionStatement; 8057 updateExpressionStatement(node: ExpressionStatement, expression: Expression): ExpressionStatement; 8058 createIfStatement(expression: Expression, thenStatement: Statement, elseStatement?: Statement): IfStatement; 8059 updateIfStatement(node: IfStatement, expression: Expression, thenStatement: Statement, elseStatement: Statement | undefined): IfStatement; 8060 createDoStatement(statement: Statement, expression: Expression): DoStatement; 8061 updateDoStatement(node: DoStatement, statement: Statement, expression: Expression): DoStatement; 8062 createWhileStatement(expression: Expression, statement: Statement): WhileStatement; 8063 updateWhileStatement(node: WhileStatement, expression: Expression, statement: Statement): WhileStatement; 8064 createForStatement(initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement): ForStatement; 8065 updateForStatement(node: ForStatement, initializer: ForInitializer | undefined, condition: Expression | undefined, incrementor: Expression | undefined, statement: Statement): ForStatement; 8066 createForInStatement(initializer: ForInitializer, expression: Expression, statement: Statement): ForInStatement; 8067 updateForInStatement(node: ForInStatement, initializer: ForInitializer, expression: Expression, statement: Statement): ForInStatement; 8068 createForOfStatement(awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement): ForOfStatement; 8069 updateForOfStatement(node: ForOfStatement, awaitModifier: AwaitKeyword | undefined, initializer: ForInitializer, expression: Expression, statement: Statement): ForOfStatement; 8070 createContinueStatement(label?: string | Identifier): ContinueStatement; 8071 updateContinueStatement(node: ContinueStatement, label: Identifier | undefined): ContinueStatement; 8072 createBreakStatement(label?: string | Identifier): BreakStatement; 8073 updateBreakStatement(node: BreakStatement, label: Identifier | undefined): BreakStatement; 8074 createReturnStatement(expression?: Expression): ReturnStatement; 8075 updateReturnStatement(node: ReturnStatement, expression: Expression | undefined): ReturnStatement; 8076 createWithStatement(expression: Expression, statement: Statement): WithStatement; 8077 updateWithStatement(node: WithStatement, expression: Expression, statement: Statement): WithStatement; 8078 createSwitchStatement(expression: Expression, caseBlock: CaseBlock): SwitchStatement; 8079 updateSwitchStatement(node: SwitchStatement, expression: Expression, caseBlock: CaseBlock): SwitchStatement; 8080 createLabeledStatement(label: string | Identifier, statement: Statement): LabeledStatement; 8081 updateLabeledStatement(node: LabeledStatement, label: Identifier, statement: Statement): LabeledStatement; 8082 createThrowStatement(expression: Expression): ThrowStatement; 8083 updateThrowStatement(node: ThrowStatement, expression: Expression): ThrowStatement; 8084 createTryStatement(tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined): TryStatement; 8085 updateTryStatement(node: TryStatement, tryBlock: Block, catchClause: CatchClause | undefined, finallyBlock: Block | undefined): TryStatement; 8086 createDebuggerStatement(): DebuggerStatement; 8087 createVariableDeclaration(name: string | BindingName, exclamationToken?: ExclamationToken, type?: TypeNode, initializer?: Expression): VariableDeclaration; 8088 updateVariableDeclaration(node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; 8089 createVariableDeclarationList(declarations: readonly VariableDeclaration[], flags?: NodeFlags): VariableDeclarationList; 8090 updateVariableDeclarationList(node: VariableDeclarationList, declarations: readonly VariableDeclaration[]): VariableDeclarationList; 8091 createFunctionDeclaration(modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; 8092 updateFunctionDeclaration(node: FunctionDeclaration, modifiers: readonly ModifierLike[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; 8093 createClassDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; 8094 updateClassDeclaration(node: ClassDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; 8095 createStructDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): StructDeclaration; 8096 updateStructDeclaration(node: StructDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): StructDeclaration; 8097 createAnnotationDeclaration(modifiers: readonly ModifierLike[] | undefined, name: string | Identifier | undefined, members: readonly AnnotationElement[]): AnnotationDeclaration; 8098 updateAnnotationDeclaration(node: AnnotationDeclaration, modifiers: readonly ModifierLike[] | undefined, name: Identifier | undefined, members: readonly AnnotationElement[]): AnnotationDeclaration; 8099 createInterfaceDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; 8100 updateInterfaceDeclaration(node: InterfaceDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; 8101 createTypeAliasDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; 8102 updateTypeAliasDeclaration(node: TypeAliasDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; 8103 createEnumDeclaration(modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration; 8104 updateEnumDeclaration(node: EnumDeclaration, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration; 8105 createModuleDeclaration(modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration; 8106 updateModuleDeclaration(node: ModuleDeclaration, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration; 8107 createModuleBlock(statements: readonly Statement[]): ModuleBlock; 8108 updateModuleBlock(node: ModuleBlock, statements: readonly Statement[]): ModuleBlock; 8109 createCaseBlock(clauses: readonly CaseOrDefaultClause[]): CaseBlock; 8110 updateCaseBlock(node: CaseBlock, clauses: readonly CaseOrDefaultClause[]): CaseBlock; 8111 createNamespaceExportDeclaration(name: string | Identifier): NamespaceExportDeclaration; 8112 updateNamespaceExportDeclaration(node: NamespaceExportDeclaration, name: Identifier): NamespaceExportDeclaration; 8113 createImportEqualsDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; 8114 updateImportEqualsDeclaration(node: ImportEqualsDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; 8115 createImportDeclaration(modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration; 8116 updateImportDeclaration(node: ImportDeclaration, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration; 8117 createImportClause(isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; 8118 updateImportClause(node: ImportClause, isTypeOnly: boolean, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined): ImportClause; 8119 createAssertClause(elements: NodeArray<AssertEntry>, multiLine?: boolean): AssertClause; 8120 updateAssertClause(node: AssertClause, elements: NodeArray<AssertEntry>, multiLine?: boolean): AssertClause; 8121 createAssertEntry(name: AssertionKey, value: Expression): AssertEntry; 8122 updateAssertEntry(node: AssertEntry, name: AssertionKey, value: Expression): AssertEntry; 8123 createImportTypeAssertionContainer(clause: AssertClause, multiLine?: boolean): ImportTypeAssertionContainer; 8124 updateImportTypeAssertionContainer(node: ImportTypeAssertionContainer, clause: AssertClause, multiLine?: boolean): ImportTypeAssertionContainer; 8125 createNamespaceImport(name: Identifier): NamespaceImport; 8126 updateNamespaceImport(node: NamespaceImport, name: Identifier): NamespaceImport; 8127 createNamespaceExport(name: Identifier): NamespaceExport; 8128 updateNamespaceExport(node: NamespaceExport, name: Identifier): NamespaceExport; 8129 createNamedImports(elements: readonly ImportSpecifier[]): NamedImports; 8130 updateNamedImports(node: NamedImports, elements: readonly ImportSpecifier[]): NamedImports; 8131 createImportSpecifier(isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; 8132 updateImportSpecifier(node: ImportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ImportSpecifier; 8133 createExportAssignment(modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; 8134 updateExportAssignment(node: ExportAssignment, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; 8135 createExportDeclaration(modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration; 8136 updateExportDeclaration(node: ExportDeclaration, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration; 8137 createNamedExports(elements: readonly ExportSpecifier[]): NamedExports; 8138 updateNamedExports(node: NamedExports, elements: readonly ExportSpecifier[]): NamedExports; 8139 createExportSpecifier(isTypeOnly: boolean, propertyName: string | Identifier | undefined, name: string | Identifier): ExportSpecifier; 8140 updateExportSpecifier(node: ExportSpecifier, isTypeOnly: boolean, propertyName: Identifier | undefined, name: Identifier): ExportSpecifier; 8141 createExternalModuleReference(expression: Expression): ExternalModuleReference; 8142 updateExternalModuleReference(node: ExternalModuleReference, expression: Expression): ExternalModuleReference; 8143 createJSDocAllType(): JSDocAllType; 8144 createJSDocUnknownType(): JSDocUnknownType; 8145 createJSDocNonNullableType(type: TypeNode, postfix?: boolean): JSDocNonNullableType; 8146 updateJSDocNonNullableType(node: JSDocNonNullableType, type: TypeNode): JSDocNonNullableType; 8147 createJSDocNullableType(type: TypeNode, postfix?: boolean): JSDocNullableType; 8148 updateJSDocNullableType(node: JSDocNullableType, type: TypeNode): JSDocNullableType; 8149 createJSDocOptionalType(type: TypeNode): JSDocOptionalType; 8150 updateJSDocOptionalType(node: JSDocOptionalType, type: TypeNode): JSDocOptionalType; 8151 createJSDocFunctionType(parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): JSDocFunctionType; 8152 updateJSDocFunctionType(node: JSDocFunctionType, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined): JSDocFunctionType; 8153 createJSDocVariadicType(type: TypeNode): JSDocVariadicType; 8154 updateJSDocVariadicType(node: JSDocVariadicType, type: TypeNode): JSDocVariadicType; 8155 createJSDocNamepathType(type: TypeNode): JSDocNamepathType; 8156 updateJSDocNamepathType(node: JSDocNamepathType, type: TypeNode): JSDocNamepathType; 8157 createJSDocTypeExpression(type: TypeNode): JSDocTypeExpression; 8158 updateJSDocTypeExpression(node: JSDocTypeExpression, type: TypeNode): JSDocTypeExpression; 8159 createJSDocNameReference(name: EntityName | JSDocMemberName): JSDocNameReference; 8160 updateJSDocNameReference(node: JSDocNameReference, name: EntityName | JSDocMemberName): JSDocNameReference; 8161 createJSDocMemberName(left: EntityName | JSDocMemberName, right: Identifier): JSDocMemberName; 8162 updateJSDocMemberName(node: JSDocMemberName, left: EntityName | JSDocMemberName, right: Identifier): JSDocMemberName; 8163 createJSDocLink(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLink; 8164 updateJSDocLink(node: JSDocLink, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLink; 8165 createJSDocLinkCode(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkCode; 8166 updateJSDocLinkCode(node: JSDocLinkCode, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkCode; 8167 createJSDocLinkPlain(name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkPlain; 8168 updateJSDocLinkPlain(node: JSDocLinkPlain, name: EntityName | JSDocMemberName | undefined, text: string): JSDocLinkPlain; 8169 createJSDocTypeLiteral(jsDocPropertyTags?: readonly JSDocPropertyLikeTag[], isArrayType?: boolean): JSDocTypeLiteral; 8170 updateJSDocTypeLiteral(node: JSDocTypeLiteral, jsDocPropertyTags: readonly JSDocPropertyLikeTag[] | undefined, isArrayType: boolean | undefined): JSDocTypeLiteral; 8171 createJSDocSignature(typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type?: JSDocReturnTag): JSDocSignature; 8172 updateJSDocSignature(node: JSDocSignature, typeParameters: readonly JSDocTemplateTag[] | undefined, parameters: readonly JSDocParameterTag[], type: JSDocReturnTag | undefined): JSDocSignature; 8173 createJSDocTemplateTag(tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment?: string | NodeArray<JSDocComment>): JSDocTemplateTag; 8174 updateJSDocTemplateTag(node: JSDocTemplateTag, tagName: Identifier | undefined, constraint: JSDocTypeExpression | undefined, typeParameters: readonly TypeParameterDeclaration[], comment: string | NodeArray<JSDocComment> | undefined): JSDocTemplateTag; 8175 createJSDocTypedefTag(tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression | JSDocTypeLiteral, fullName?: Identifier | JSDocNamespaceDeclaration, comment?: string | NodeArray<JSDocComment>): JSDocTypedefTag; 8176 updateJSDocTypedefTag(node: JSDocTypedefTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | JSDocTypeLiteral | undefined, fullName: Identifier | JSDocNamespaceDeclaration | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocTypedefTag; 8177 createJSDocParameterTag(tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression, isNameFirst?: boolean, comment?: string | NodeArray<JSDocComment>): JSDocParameterTag; 8178 updateJSDocParameterTag(node: JSDocParameterTag, tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression: JSDocTypeExpression | undefined, isNameFirst: boolean, comment: string | NodeArray<JSDocComment> | undefined): JSDocParameterTag; 8179 createJSDocPropertyTag(tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression, isNameFirst?: boolean, comment?: string | NodeArray<JSDocComment>): JSDocPropertyTag; 8180 updateJSDocPropertyTag(node: JSDocPropertyTag, tagName: Identifier | undefined, name: EntityName, isBracketed: boolean, typeExpression: JSDocTypeExpression | undefined, isNameFirst: boolean, comment: string | NodeArray<JSDocComment> | undefined): JSDocPropertyTag; 8181 createJSDocTypeTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocTypeTag; 8182 updateJSDocTypeTag(node: JSDocTypeTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray<JSDocComment> | undefined): JSDocTypeTag; 8183 createJSDocSeeTag(tagName: Identifier | undefined, nameExpression: JSDocNameReference | undefined, comment?: string | NodeArray<JSDocComment>): JSDocSeeTag; 8184 updateJSDocSeeTag(node: JSDocSeeTag, tagName: Identifier | undefined, nameExpression: JSDocNameReference | undefined, comment?: string | NodeArray<JSDocComment>): JSDocSeeTag; 8185 createJSDocReturnTag(tagName: Identifier | undefined, typeExpression?: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocReturnTag; 8186 updateJSDocReturnTag(node: JSDocReturnTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocReturnTag; 8187 createJSDocThisTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocThisTag; 8188 updateJSDocThisTag(node: JSDocThisTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocThisTag; 8189 createJSDocEnumTag(tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment?: string | NodeArray<JSDocComment>): JSDocEnumTag; 8190 updateJSDocEnumTag(node: JSDocEnumTag, tagName: Identifier | undefined, typeExpression: JSDocTypeExpression, comment: string | NodeArray<JSDocComment> | undefined): JSDocEnumTag; 8191 createJSDocCallbackTag(tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName?: Identifier | JSDocNamespaceDeclaration, comment?: string | NodeArray<JSDocComment>): JSDocCallbackTag; 8192 updateJSDocCallbackTag(node: JSDocCallbackTag, tagName: Identifier | undefined, typeExpression: JSDocSignature, fullName: Identifier | JSDocNamespaceDeclaration | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocCallbackTag; 8193 createJSDocAugmentsTag(tagName: Identifier | undefined, className: JSDocAugmentsTag["class"], comment?: string | NodeArray<JSDocComment>): JSDocAugmentsTag; 8194 updateJSDocAugmentsTag(node: JSDocAugmentsTag, tagName: Identifier | undefined, className: JSDocAugmentsTag["class"], comment: string | NodeArray<JSDocComment> | undefined): JSDocAugmentsTag; 8195 createJSDocImplementsTag(tagName: Identifier | undefined, className: JSDocImplementsTag["class"], comment?: string | NodeArray<JSDocComment>): JSDocImplementsTag; 8196 updateJSDocImplementsTag(node: JSDocImplementsTag, tagName: Identifier | undefined, className: JSDocImplementsTag["class"], comment: string | NodeArray<JSDocComment> | undefined): JSDocImplementsTag; 8197 createJSDocAuthorTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocAuthorTag; 8198 updateJSDocAuthorTag(node: JSDocAuthorTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocAuthorTag; 8199 createJSDocClassTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocClassTag; 8200 updateJSDocClassTag(node: JSDocClassTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocClassTag; 8201 createJSDocPublicTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocPublicTag; 8202 updateJSDocPublicTag(node: JSDocPublicTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocPublicTag; 8203 createJSDocPrivateTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocPrivateTag; 8204 updateJSDocPrivateTag(node: JSDocPrivateTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocPrivateTag; 8205 createJSDocProtectedTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocProtectedTag; 8206 updateJSDocProtectedTag(node: JSDocProtectedTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocProtectedTag; 8207 createJSDocReadonlyTag(tagName: Identifier | undefined, comment?: string | NodeArray<JSDocComment>): JSDocReadonlyTag; 8208 updateJSDocReadonlyTag(node: JSDocReadonlyTag, tagName: Identifier | undefined, comment: string | NodeArray<JSDocComment> | undefined): JSDocReadonlyTag; 8209 createJSDocUnknownTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocUnknownTag; 8210 updateJSDocUnknownTag(node: JSDocUnknownTag, tagName: Identifier, comment: string | NodeArray<JSDocComment> | undefined): JSDocUnknownTag; 8211 createJSDocDeprecatedTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocDeprecatedTag; 8212 updateJSDocDeprecatedTag(node: JSDocDeprecatedTag, tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocDeprecatedTag; 8213 createJSDocOverrideTag(tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocOverrideTag; 8214 updateJSDocOverrideTag(node: JSDocOverrideTag, tagName: Identifier, comment?: string | NodeArray<JSDocComment>): JSDocOverrideTag; 8215 createJSDocText(text: string): JSDocText; 8216 updateJSDocText(node: JSDocText, text: string): JSDocText; 8217 createJSDocComment(comment?: string | NodeArray<JSDocComment> | undefined, tags?: readonly JSDocTag[] | undefined): JSDoc; 8218 updateJSDocComment(node: JSDoc, comment: string | NodeArray<JSDocComment> | undefined, tags: readonly JSDocTag[] | undefined): JSDoc; 8219 createJsxElement(openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement): JsxElement; 8220 updateJsxElement(node: JsxElement, openingElement: JsxOpeningElement, children: readonly JsxChild[], closingElement: JsxClosingElement): JsxElement; 8221 createJsxSelfClosingElement(tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxSelfClosingElement; 8222 updateJsxSelfClosingElement(node: JsxSelfClosingElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxSelfClosingElement; 8223 createJsxOpeningElement(tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxOpeningElement; 8224 updateJsxOpeningElement(node: JsxOpeningElement, tagName: JsxTagNameExpression, typeArguments: readonly TypeNode[] | undefined, attributes: JsxAttributes): JsxOpeningElement; 8225 createJsxClosingElement(tagName: JsxTagNameExpression): JsxClosingElement; 8226 updateJsxClosingElement(node: JsxClosingElement, tagName: JsxTagNameExpression): JsxClosingElement; 8227 createJsxFragment(openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment): JsxFragment; 8228 createJsxText(text: string, containsOnlyTriviaWhiteSpaces?: boolean): JsxText; 8229 updateJsxText(node: JsxText, text: string, containsOnlyTriviaWhiteSpaces?: boolean): JsxText; 8230 createJsxOpeningFragment(): JsxOpeningFragment; 8231 createJsxJsxClosingFragment(): JsxClosingFragment; 8232 updateJsxFragment(node: JsxFragment, openingFragment: JsxOpeningFragment, children: readonly JsxChild[], closingFragment: JsxClosingFragment): JsxFragment; 8233 createJsxAttribute(name: Identifier, initializer: JsxAttributeValue | undefined): JsxAttribute; 8234 updateJsxAttribute(node: JsxAttribute, name: Identifier, initializer: JsxAttributeValue | undefined): JsxAttribute; 8235 createJsxAttributes(properties: readonly JsxAttributeLike[]): JsxAttributes; 8236 updateJsxAttributes(node: JsxAttributes, properties: readonly JsxAttributeLike[]): JsxAttributes; 8237 createJsxSpreadAttribute(expression: Expression): JsxSpreadAttribute; 8238 updateJsxSpreadAttribute(node: JsxSpreadAttribute, expression: Expression): JsxSpreadAttribute; 8239 createJsxExpression(dotDotDotToken: DotDotDotToken | undefined, expression: Expression | undefined): JsxExpression; 8240 updateJsxExpression(node: JsxExpression, expression: Expression | undefined): JsxExpression; 8241 createCaseClause(expression: Expression, statements: readonly Statement[]): CaseClause; 8242 updateCaseClause(node: CaseClause, expression: Expression, statements: readonly Statement[]): CaseClause; 8243 createDefaultClause(statements: readonly Statement[]): DefaultClause; 8244 updateDefaultClause(node: DefaultClause, statements: readonly Statement[]): DefaultClause; 8245 createHeritageClause(token: HeritageClause["token"], types: readonly ExpressionWithTypeArguments[]): HeritageClause; 8246 updateHeritageClause(node: HeritageClause, types: readonly ExpressionWithTypeArguments[]): HeritageClause; 8247 createCatchClause(variableDeclaration: string | BindingName | VariableDeclaration | undefined, block: Block): CatchClause; 8248 updateCatchClause(node: CatchClause, variableDeclaration: VariableDeclaration | undefined, block: Block): CatchClause; 8249 createPropertyAssignment(name: string | PropertyName, initializer: Expression): PropertyAssignment; 8250 updatePropertyAssignment(node: PropertyAssignment, name: PropertyName, initializer: Expression): PropertyAssignment; 8251 createShorthandPropertyAssignment(name: string | Identifier, objectAssignmentInitializer?: Expression): ShorthandPropertyAssignment; 8252 updateShorthandPropertyAssignment(node: ShorthandPropertyAssignment, name: Identifier, objectAssignmentInitializer: Expression | undefined): ShorthandPropertyAssignment; 8253 createSpreadAssignment(expression: Expression): SpreadAssignment; 8254 updateSpreadAssignment(node: SpreadAssignment, expression: Expression): SpreadAssignment; 8255 createEnumMember(name: string | PropertyName, initializer?: Expression): EnumMember; 8256 updateEnumMember(node: EnumMember, name: PropertyName, initializer: Expression | undefined): EnumMember; 8257 createSourceFile(statements: readonly Statement[], endOfFileToken: EndOfFileToken, flags: NodeFlags): SourceFile; 8258 updateSourceFile(node: SourceFile, statements: readonly Statement[], isDeclarationFile?: boolean, referencedFiles?: readonly FileReference[], typeReferences?: readonly FileReference[], hasNoDefaultLib?: boolean, libReferences?: readonly FileReference[]): SourceFile; 8259 createNotEmittedStatement(original: Node): NotEmittedStatement; 8260 createPartiallyEmittedExpression(expression: Expression, original?: Node): PartiallyEmittedExpression; 8261 updatePartiallyEmittedExpression(node: PartiallyEmittedExpression, expression: Expression): PartiallyEmittedExpression; 8262 createCommaListExpression(elements: readonly Expression[]): CommaListExpression; 8263 updateCommaListExpression(node: CommaListExpression, elements: readonly Expression[]): CommaListExpression; 8264 createBundle(sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; 8265 updateBundle(node: Bundle, sourceFiles: readonly SourceFile[], prepends?: readonly (UnparsedSource | InputFiles)[]): Bundle; 8266 createComma(left: Expression, right: Expression): BinaryExpression; 8267 createAssignment(left: ObjectLiteralExpression | ArrayLiteralExpression, right: Expression): DestructuringAssignment; 8268 createAssignment(left: Expression, right: Expression): AssignmentExpression<EqualsToken>; 8269 createLogicalOr(left: Expression, right: Expression): BinaryExpression; 8270 createLogicalAnd(left: Expression, right: Expression): BinaryExpression; 8271 createBitwiseOr(left: Expression, right: Expression): BinaryExpression; 8272 createBitwiseXor(left: Expression, right: Expression): BinaryExpression; 8273 createBitwiseAnd(left: Expression, right: Expression): BinaryExpression; 8274 createStrictEquality(left: Expression, right: Expression): BinaryExpression; 8275 createStrictInequality(left: Expression, right: Expression): BinaryExpression; 8276 createEquality(left: Expression, right: Expression): BinaryExpression; 8277 createInequality(left: Expression, right: Expression): BinaryExpression; 8278 createLessThan(left: Expression, right: Expression): BinaryExpression; 8279 createLessThanEquals(left: Expression, right: Expression): BinaryExpression; 8280 createGreaterThan(left: Expression, right: Expression): BinaryExpression; 8281 createGreaterThanEquals(left: Expression, right: Expression): BinaryExpression; 8282 createLeftShift(left: Expression, right: Expression): BinaryExpression; 8283 createRightShift(left: Expression, right: Expression): BinaryExpression; 8284 createUnsignedRightShift(left: Expression, right: Expression): BinaryExpression; 8285 createAdd(left: Expression, right: Expression): BinaryExpression; 8286 createSubtract(left: Expression, right: Expression): BinaryExpression; 8287 createMultiply(left: Expression, right: Expression): BinaryExpression; 8288 createDivide(left: Expression, right: Expression): BinaryExpression; 8289 createModulo(left: Expression, right: Expression): BinaryExpression; 8290 createExponent(left: Expression, right: Expression): BinaryExpression; 8291 createPrefixPlus(operand: Expression): PrefixUnaryExpression; 8292 createPrefixMinus(operand: Expression): PrefixUnaryExpression; 8293 createPrefixIncrement(operand: Expression): PrefixUnaryExpression; 8294 createPrefixDecrement(operand: Expression): PrefixUnaryExpression; 8295 createBitwiseNot(operand: Expression): PrefixUnaryExpression; 8296 createLogicalNot(operand: Expression): PrefixUnaryExpression; 8297 createPostfixIncrement(operand: Expression): PostfixUnaryExpression; 8298 createPostfixDecrement(operand: Expression): PostfixUnaryExpression; 8299 createImmediatelyInvokedFunctionExpression(statements: readonly Statement[]): CallExpression; 8300 createImmediatelyInvokedFunctionExpression(statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression; 8301 createImmediatelyInvokedArrowFunction(statements: readonly Statement[]): CallExpression; 8302 createImmediatelyInvokedArrowFunction(statements: readonly Statement[], param: ParameterDeclaration, paramValue: Expression): CallExpression; 8303 createVoidZero(): VoidExpression; 8304 createExportDefault(expression: Expression): ExportAssignment; 8305 createExternalModuleExport(exportName: Identifier): ExportDeclaration; 8306 restoreOuterExpressions(outerExpression: Expression | undefined, innerExpression: Expression, kinds?: OuterExpressionKinds): Expression; 8307 } 8308 interface NodeFactory { 8309 /** @deprecated Use the overload that accepts 'modifiers' */ 8310 createConstructorTypeNode(typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): ConstructorTypeNode; 8311 /** @deprecated Use the overload that accepts 'modifiers' */ 8312 updateConstructorTypeNode(node: ConstructorTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode): ConstructorTypeNode; 8313 } 8314 interface NodeFactory { 8315 createImportTypeNode(argument: TypeNode, assertions?: ImportTypeAssertionContainer, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode; 8316 /** @deprecated Use the overload that accepts 'assertions' */ 8317 createImportTypeNode(argument: TypeNode, qualifier?: EntityName, typeArguments?: readonly TypeNode[], isTypeOf?: boolean): ImportTypeNode; 8318 /** @deprecated Use the overload that accepts 'assertions' */ 8319 updateImportTypeNode(node: ImportTypeNode, argument: TypeNode, qualifier: EntityName | undefined, typeArguments: readonly TypeNode[] | undefined, isTypeOf?: boolean): ImportTypeNode; 8320 } 8321 interface NodeFactory { 8322 /** @deprecated Use the overload that accepts 'modifiers' */ 8323 createTypeParameterDeclaration(name: string | Identifier, constraint?: TypeNode, defaultType?: TypeNode): TypeParameterDeclaration; 8324 /** @deprecated Use the overload that accepts 'modifiers' */ 8325 updateTypeParameterDeclaration(node: TypeParameterDeclaration, name: Identifier, constraint: TypeNode | undefined, defaultType: TypeNode | undefined): TypeParameterDeclaration; 8326 } 8327 interface NodeFactory { 8328 /** 8329 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8330 */ 8331 createParameterDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken?: QuestionToken, type?: TypeNode, initializer?: Expression): ParameterDeclaration; 8332 /** 8333 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8334 */ 8335 updateParameterDeclaration(node: ParameterDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, dotDotDotToken: DotDotDotToken | undefined, name: string | BindingName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): ParameterDeclaration; 8336 /** 8337 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8338 */ 8339 createPropertyDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration; 8340 /** 8341 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8342 */ 8343 updatePropertyDeclaration(node: PropertyDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, questionOrExclamationToken: QuestionToken | ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): PropertyDeclaration; 8344 /** 8345 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8346 */ 8347 createMethodDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; 8348 /** 8349 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8350 */ 8351 updateMethodDeclaration(node: MethodDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: PropertyName, questionToken: QuestionToken | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): MethodDeclaration; 8352 /** 8353 * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter. 8354 */ 8355 createConstructorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; 8356 /** 8357 * @deprecated This node does not support Decorators. Callers should use an overload that does not accept a `decorators` parameter. 8358 */ 8359 updateConstructorDeclaration(node: ConstructorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], body: Block | undefined): ConstructorDeclaration; 8360 /** 8361 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8362 */ 8363 createGetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; 8364 /** 8365 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8366 */ 8367 updateGetAccessorDeclaration(node: GetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): GetAccessorDeclaration; 8368 /** 8369 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8370 */ 8371 createSetAccessorDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; 8372 /** 8373 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8374 */ 8375 updateSetAccessorDeclaration(node: SetAccessorDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: PropertyName, parameters: readonly ParameterDeclaration[], body: Block | undefined): SetAccessorDeclaration; 8376 /** 8377 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8378 */ 8379 createIndexSignature(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; 8380 /** 8381 * @deprecated Decorators and modifiers are no longer supported for this function. Callers should use an overload that does not accept the `decorators` and `modifiers` parameters. 8382 */ 8383 updateIndexSignature(node: IndexSignatureDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode): IndexSignatureDeclaration; 8384 /** 8385 * @deprecated Decorators and modifiers are no longer supported for this function. Callers should use an overload that does not accept the `decorators` and `modifiers` parameters. 8386 */ 8387 createClassStaticBlockDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration; 8388 /** 8389 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8390 */ 8391 updateClassStaticBlockDeclaration(node: ClassStaticBlockDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, body: Block): ClassStaticBlockDeclaration; 8392 /** 8393 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8394 */ 8395 createClassExpression(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression; 8396 /** 8397 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8398 */ 8399 updateClassExpression(node: ClassExpression, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassExpression; 8400 /** 8401 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8402 */ 8403 createFunctionDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; 8404 /** 8405 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8406 */ 8407 updateFunctionDeclaration(node: FunctionDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, asteriskToken: AsteriskToken | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: Block | undefined): FunctionDeclaration; 8408 /** 8409 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8410 */ 8411 createClassDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; 8412 /** 8413 * @deprecated Decorators have been combined with modifiers. Callers should use an overload that does not accept a `decorators` parameter. 8414 */ 8415 updateClassDeclaration(node: ClassDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]): ClassDeclaration; 8416 /** 8417 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8418 */ 8419 createInterfaceDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; 8420 /** 8421 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8422 */ 8423 updateInterfaceDeclaration(node: InterfaceDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly TypeElement[]): InterfaceDeclaration; 8424 /** 8425 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8426 */ 8427 createTypeAliasDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; 8428 /** 8429 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8430 */ 8431 updateTypeAliasDeclaration(node: TypeAliasDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, typeParameters: readonly TypeParameterDeclaration[] | undefined, type: TypeNode): TypeAliasDeclaration; 8432 /** 8433 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8434 */ 8435 createEnumDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: string | Identifier, members: readonly EnumMember[]): EnumDeclaration; 8436 /** 8437 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8438 */ 8439 updateEnumDeclaration(node: EnumDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: Identifier, members: readonly EnumMember[]): EnumDeclaration; 8440 /** 8441 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8442 */ 8443 createModuleDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined, flags?: NodeFlags): ModuleDeclaration; 8444 /** 8445 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8446 */ 8447 updateModuleDeclaration(node: ModuleDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, name: ModuleName, body: ModuleBody | undefined): ModuleDeclaration; 8448 /** 8449 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8450 */ 8451 createImportEqualsDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: string | Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; 8452 /** 8453 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8454 */ 8455 updateImportEqualsDeclaration(node: ImportEqualsDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, name: Identifier, moduleReference: ModuleReference): ImportEqualsDeclaration; 8456 /** 8457 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8458 */ 8459 createImportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause?: AssertClause): ImportDeclaration; 8460 /** 8461 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8462 */ 8463 updateImportDeclaration(node: ImportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, importClause: ImportClause | undefined, moduleSpecifier: Expression, assertClause: AssertClause | undefined): ImportDeclaration; 8464 /** 8465 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8466 */ 8467 createExportAssignment(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isExportEquals: boolean | undefined, expression: Expression): ExportAssignment; 8468 /** 8469 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8470 */ 8471 updateExportAssignment(node: ExportAssignment, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, expression: Expression): ExportAssignment; 8472 /** 8473 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8474 */ 8475 createExportDeclaration(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression, assertClause?: AssertClause): ExportDeclaration; 8476 /** 8477 * @deprecated Decorators are no longer supported for this function. Callers should use an overload that does not accept a `decorators` parameter. 8478 */ 8479 updateExportDeclaration(node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, isTypeOnly: boolean, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, assertClause: AssertClause | undefined): ExportDeclaration; 8480 } 8481 interface CoreTransformationContext { 8482 readonly factory: NodeFactory; 8483 /** Gets the compiler options supplied to the transformer. */ 8484 getCompilerOptions(): CompilerOptions; 8485 /** Starts a new lexical environment. */ 8486 startLexicalEnvironment(): void; 8487 /** Suspends the current lexical environment, usually after visiting a parameter list. */ 8488 suspendLexicalEnvironment(): void; 8489 /** Resumes a suspended lexical environment, usually before visiting a function body. */ 8490 resumeLexicalEnvironment(): void; 8491 /** Ends a lexical environment, returning any declarations. */ 8492 endLexicalEnvironment(): Statement[] | undefined; 8493 /** Hoists a function declaration to the containing scope. */ 8494 hoistFunctionDeclaration(node: FunctionDeclaration): void; 8495 /** Hoists a variable declaration to the containing scope. */ 8496 hoistVariableDeclaration(node: Identifier): void; 8497 } 8498 interface TransformationContext extends CoreTransformationContext { 8499 /** Records a request for a non-scoped emit helper in the current context. */ 8500 requestEmitHelper(helper: EmitHelper): void; 8501 /** Gets and resets the requested non-scoped emit helpers. */ 8502 readEmitHelpers(): EmitHelper[] | undefined; 8503 /** Enables expression substitutions in the pretty printer for the provided SyntaxKind. */ 8504 enableSubstitution(kind: SyntaxKind): void; 8505 /** Determines whether expression substitutions are enabled for the provided node. */ 8506 isSubstitutionEnabled(node: Node): boolean; 8507 /** 8508 * Hook used by transformers to substitute expressions just before they 8509 * are emitted by the pretty printer. 8510 * 8511 * NOTE: Transformation hooks should only be modified during `Transformer` initialization, 8512 * before returning the `NodeTransformer` callback. 8513 */ 8514 onSubstituteNode: (hint: EmitHint, node: Node) => Node; 8515 /** 8516 * Enables before/after emit notifications in the pretty printer for the provided 8517 * SyntaxKind. 8518 */ 8519 enableEmitNotification(kind: SyntaxKind): void; 8520 /** 8521 * Determines whether before/after emit notifications should be raised in the pretty 8522 * printer when it emits a node. 8523 */ 8524 isEmitNotificationEnabled(node: Node): boolean; 8525 /** 8526 * Hook used to allow transformers to capture state before or after 8527 * the printer emits a node. 8528 * 8529 * NOTE: Transformation hooks should only be modified during `Transformer` initialization, 8530 * before returning the `NodeTransformer` callback. 8531 */ 8532 onEmitNode: (hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void) => void; 8533 /** Determines whether the lexical environment is suspended */ 8534 isLexicalEnvironmentSuspended?(): boolean; 8535 } 8536 interface TransformationResult<T extends Node> { 8537 /** Gets the transformed source files. */ 8538 transformed: T[]; 8539 /** Gets diagnostics for the transformation. */ 8540 diagnostics?: DiagnosticWithLocation[]; 8541 /** 8542 * Gets a substitute for a node, if one is available; otherwise, returns the original node. 8543 * 8544 * @param hint A hint as to the intended usage of the node. 8545 * @param node The node to substitute. 8546 */ 8547 substituteNode(hint: EmitHint, node: Node): Node; 8548 /** 8549 * Emits a node with possible notification. 8550 * 8551 * @param hint A hint as to the intended usage of the node. 8552 * @param node The node to emit. 8553 * @param emitCallback A callback used to emit the node. 8554 */ 8555 emitNodeWithNotification(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void; 8556 /** 8557 * Indicates if a given node needs an emit notification 8558 * 8559 * @param node The node to emit. 8560 */ 8561 isEmitNotificationEnabled?(node: Node): boolean; 8562 /** 8563 * Clean up EmitNode entries on any parse-tree nodes. 8564 */ 8565 dispose(): void; 8566 } 8567 /** 8568 * A function that is used to initialize and return a `Transformer` callback, which in turn 8569 * will be used to transform one or more nodes. 8570 */ 8571 type TransformerFactory<T extends Node> = (context: TransformationContext) => Transformer<T>; 8572 /** 8573 * A function that transforms a node. 8574 */ 8575 type Transformer<T extends Node> = (node: T) => T; 8576 /** 8577 * A function that accepts and possibly transforms a node. 8578 */ 8579 type Visitor = (node: Node) => VisitResult<Node>; 8580 interface NodeVisitor { 8581 <T extends Node>(nodes: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T; 8582 <T extends Node>(nodes: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined; 8583 } 8584 interface NodesVisitor { 8585 <T extends Node>(nodes: NodeArray<T>, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T>; 8586 <T extends Node>(nodes: NodeArray<T> | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T> | undefined; 8587 } 8588 type VisitResult<T extends Node> = T | readonly T[] | undefined; 8589 interface Printer { 8590 /** 8591 * Print a node and its subtree as-is, without any emit transformations. 8592 * @param hint A value indicating the purpose of a node. This is primarily used to 8593 * distinguish between an `Identifier` used in an expression position, versus an 8594 * `Identifier` used as an `IdentifierName` as part of a declaration. For most nodes you 8595 * should just pass `Unspecified`. 8596 * @param node The node to print. The node and its subtree are printed as-is, without any 8597 * emit transformations. 8598 * @param sourceFile A source file that provides context for the node. The source text of 8599 * the file is used to emit the original source content for literals and identifiers, while 8600 * the identifiers of the source file are used when generating unique names to avoid 8601 * collisions. 8602 */ 8603 printNode(hint: EmitHint, node: Node, sourceFile: SourceFile): string; 8604 /** 8605 * Prints a list of nodes using the given format flags 8606 */ 8607 printList<T extends Node>(format: ListFormat, list: NodeArray<T>, sourceFile: SourceFile): string; 8608 /** 8609 * Prints a source file as-is, without any emit transformations. 8610 */ 8611 printFile(sourceFile: SourceFile): string; 8612 /** 8613 * Prints a bundle of source files as-is, without any emit transformations. 8614 */ 8615 printBundle(bundle: Bundle): string; 8616 writeFile(sourceFile: SourceFile, writer: EmitTextWriter, sourceMapGenerator: SourceMapGenerator | undefined): void; 8617 } 8618 interface PrintHandlers { 8619 /** 8620 * A hook used by the Printer when generating unique names to avoid collisions with 8621 * globally defined names that exist outside of the current source file. 8622 */ 8623 hasGlobalName?(name: string): boolean; 8624 /** 8625 * A hook used by the Printer to provide notifications prior to emitting a node. A 8626 * compatible implementation **must** invoke `emitCallback` with the provided `hint` and 8627 * `node` values. 8628 * @param hint A hint indicating the intended purpose of the node. 8629 * @param node The node to emit. 8630 * @param emitCallback A callback that, when invoked, will emit the node. 8631 * @example 8632 * ```ts 8633 * var printer = createPrinter(printerOptions, { 8634 * onEmitNode(hint, node, emitCallback) { 8635 * // set up or track state prior to emitting the node... 8636 * emitCallback(hint, node); 8637 * // restore state after emitting the node... 8638 * } 8639 * }); 8640 * ``` 8641 */ 8642 onEmitNode?(hint: EmitHint, node: Node, emitCallback: (hint: EmitHint, node: Node) => void): void; 8643 /** 8644 * A hook used to check if an emit notification is required for a node. 8645 * @param node The node to emit. 8646 */ 8647 isEmitNotificationEnabled?(node: Node): boolean; 8648 /** 8649 * A hook used by the Printer to perform just-in-time substitution of a node. This is 8650 * primarily used by node transformations that need to substitute one node for another, 8651 * such as replacing `myExportedVar` with `exports.myExportedVar`. 8652 * @param hint A hint indicating the intended purpose of the node. 8653 * @param node The node to emit. 8654 * @example 8655 * ```ts 8656 * var printer = createPrinter(printerOptions, { 8657 * substituteNode(hint, node) { 8658 * // perform substitution if necessary... 8659 * return node; 8660 * } 8661 * }); 8662 * ``` 8663 */ 8664 substituteNode?(hint: EmitHint, node: Node): Node; 8665 } 8666 interface PrinterOptions { 8667 removeComments?: boolean; 8668 newLine?: NewLineKind; 8669 omitTrailingSemicolon?: boolean; 8670 noEmitHelpers?: boolean; 8671 sourceMap?: boolean; 8672 inlineSourceMap?: boolean; 8673 inlineSources?: boolean; 8674 } 8675 interface RawSourceMap { 8676 version: 3; 8677 file: string; 8678 sourceRoot?: string | null; 8679 sources: string[]; 8680 sourcesContent?: (string | null)[] | null; 8681 mappings: string; 8682 names?: string[] | null; 8683 } 8684 /** 8685 * Generates a source map. 8686 */ 8687 interface SourceMapGenerator { 8688 getSources(): readonly string[]; 8689 /** 8690 * Adds a source to the source map. 8691 */ 8692 addSource(fileName: string): number; 8693 /** 8694 * Set the content for a source. 8695 */ 8696 setSourceContent(sourceIndex: number, content: string | null): void; 8697 /** 8698 * Adds a name. 8699 */ 8700 addName(name: string): number; 8701 /** 8702 * Adds a mapping without source information. 8703 */ 8704 addMapping(generatedLine: number, generatedCharacter: number): void; 8705 /** 8706 * Adds a mapping with source information. 8707 */ 8708 addMapping(generatedLine: number, generatedCharacter: number, sourceIndex: number, sourceLine: number, sourceCharacter: number, nameIndex?: number): void; 8709 /** 8710 * Appends a source map. 8711 */ 8712 appendSourceMap(generatedLine: number, generatedCharacter: number, sourceMap: RawSourceMap, sourceMapPath: string, start?: LineAndCharacter, end?: LineAndCharacter): void; 8713 /** 8714 * Gets the source map as a `RawSourceMap` object. 8715 */ 8716 toJSON(): RawSourceMap; 8717 /** 8718 * Gets the string representation of the source map. 8719 */ 8720 toString(): string; 8721 } 8722 interface EmitTextWriter extends SymbolWriter { 8723 write(s: string): void; 8724 writeTrailingSemicolon(text: string): void; 8725 writeComment(text: string): void; 8726 getText(): string; 8727 rawWrite(s: string): void; 8728 writeLiteral(s: string): void; 8729 getTextPos(): number; 8730 getLine(): number; 8731 getColumn(): number; 8732 getIndent(): number; 8733 isAtStartOfLine(): boolean; 8734 hasTrailingComment(): boolean; 8735 hasTrailingWhitespace(): boolean; 8736 getTextPosWithWriteLine?(): number; 8737 nonEscapingWrite?(text: string): void; 8738 } 8739 interface GetEffectiveTypeRootsHost { 8740 directoryExists?(directoryName: string): boolean; 8741 getCurrentDirectory?(): string; 8742 } 8743 interface ModuleSpecifierResolutionHost { 8744 useCaseSensitiveFileNames?(): boolean; 8745 fileExists(path: string): boolean; 8746 getCurrentDirectory(): string; 8747 directoryExists?(path: string): boolean; 8748 readFile?(path: string): string | undefined; 8749 realpath?(path: string): string; 8750 getModuleSpecifierCache?(): ModuleSpecifierCache; 8751 getPackageJsonInfoCache?(): PackageJsonInfoCache | undefined; 8752 getGlobalTypingsCacheLocation?(): string | undefined; 8753 getNearestAncestorDirectoryWithPackageJson?(fileName: string, rootDir?: string): string | undefined; 8754 readonly redirectTargetsMap: RedirectTargetsMap; 8755 getProjectReferenceRedirect(fileName: string): string | undefined; 8756 isSourceOfProjectReferenceRedirect(fileName: string): boolean; 8757 } 8758 interface ModulePath { 8759 path: string; 8760 isInNodeModules: boolean; 8761 isRedirect: boolean; 8762 } 8763 interface ResolvedModuleSpecifierInfo { 8764 modulePaths: readonly ModulePath[] | undefined; 8765 moduleSpecifiers: readonly string[] | undefined; 8766 isBlockedByPackageJsonDependencies: boolean | undefined; 8767 } 8768 interface ModuleSpecifierOptions { 8769 overrideImportMode?: SourceFile["impliedNodeFormat"]; 8770 } 8771 interface ModuleSpecifierCache { 8772 get(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions): Readonly<ResolvedModuleSpecifierInfo> | undefined; 8773 set(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, modulePaths: readonly ModulePath[], moduleSpecifiers: readonly string[]): void; 8774 setBlockedByPackageJsonDependencies(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, isBlockedByPackageJsonDependencies: boolean): void; 8775 setModulePaths(fromFileName: Path, toFileName: Path, preferences: UserPreferences, options: ModuleSpecifierOptions, modulePaths: readonly ModulePath[]): void; 8776 clear(): void; 8777 count(): number; 8778 } 8779 interface SymbolTracker { 8780 trackSymbol?(symbol: Symbol, enclosingDeclaration: Node | undefined, meaning: SymbolFlags): boolean; 8781 reportInaccessibleThisError?(): void; 8782 reportPrivateInBaseOfClassExpression?(propertyName: string): void; 8783 reportInaccessibleUniqueSymbolError?(): void; 8784 reportCyclicStructureError?(): void; 8785 reportLikelyUnsafeImportRequiredError?(specifier: string): void; 8786 reportTruncationError?(): void; 8787 moduleResolverHost?: ModuleSpecifierResolutionHost & { 8788 getCommonSourceDirectory(): string; 8789 }; 8790 trackReferencedAmbientModule?(decl: ModuleDeclaration, symbol: Symbol): void; 8791 trackExternalModuleSymbolOfImportTypeNode?(symbol: Symbol): void; 8792 reportNonlocalAugmentation?(containingFile: SourceFile, parentSymbol: Symbol, augmentingSymbol: Symbol): void; 8793 reportNonSerializableProperty?(propertyName: string): void; 8794 reportImportTypeNodeResolutionModeOverride?(): void; 8795 } 8796 interface TextSpan { 8797 start: number; 8798 length: number; 8799 } 8800 interface TextChangeRange { 8801 span: TextSpan; 8802 newLength: number; 8803 } 8804 interface SyntaxList extends Node { 8805 kind: SyntaxKind.SyntaxList; 8806 _children: Node[]; 8807 } 8808 enum ListFormat { 8809 None = 0, 8810 SingleLine = 0, 8811 MultiLine = 1, 8812 PreserveLines = 2, 8813 LinesMask = 3, 8814 NotDelimited = 0, 8815 BarDelimited = 4, 8816 AmpersandDelimited = 8, 8817 CommaDelimited = 16, 8818 AsteriskDelimited = 32, 8819 DelimitersMask = 60, 8820 AllowTrailingComma = 64, 8821 Indented = 128, 8822 SpaceBetweenBraces = 256, 8823 SpaceBetweenSiblings = 512, 8824 Braces = 1024, 8825 Parenthesis = 2048, 8826 AngleBrackets = 4096, 8827 SquareBrackets = 8192, 8828 BracketsMask = 15360, 8829 OptionalIfUndefined = 16384, 8830 OptionalIfEmpty = 32768, 8831 Optional = 49152, 8832 PreferNewLine = 65536, 8833 NoTrailingNewLine = 131072, 8834 NoInterveningComments = 262144, 8835 NoSpaceIfEmpty = 524288, 8836 SingleElement = 1048576, 8837 SpaceAfterList = 2097152, 8838 Modifiers = 2359808, 8839 HeritageClauses = 512, 8840 SingleLineTypeLiteralMembers = 768, 8841 MultiLineTypeLiteralMembers = 32897, 8842 SingleLineTupleTypeElements = 528, 8843 MultiLineTupleTypeElements = 657, 8844 UnionTypeConstituents = 516, 8845 IntersectionTypeConstituents = 520, 8846 ObjectBindingPatternElements = 525136, 8847 ArrayBindingPatternElements = 524880, 8848 ObjectLiteralExpressionProperties = 526226, 8849 ImportClauseEntries = 526226, 8850 ArrayLiteralExpressionElements = 8914, 8851 CommaListElements = 528, 8852 CallExpressionArguments = 2576, 8853 NewExpressionArguments = 18960, 8854 TemplateExpressionSpans = 262144, 8855 SingleLineBlockStatements = 768, 8856 MultiLineBlockStatements = 129, 8857 VariableDeclarationList = 528, 8858 SingleLineFunctionBodyStatements = 768, 8859 MultiLineFunctionBodyStatements = 1, 8860 ClassHeritageClauses = 0, 8861 ClassMembers = 129, 8862 InterfaceMembers = 129, 8863 EnumMembers = 145, 8864 CaseBlockClauses = 129, 8865 NamedImportsOrExportsElements = 525136, 8866 JsxElementOrFragmentChildren = 262144, 8867 JsxElementAttributes = 262656, 8868 CaseOrDefaultClauseStatements = 163969, 8869 HeritageClauseTypes = 528, 8870 SourceFileStatements = 131073, 8871 Decorators = 2146305, 8872 TypeArguments = 53776, 8873 TypeParameters = 53776, 8874 Parameters = 2576, 8875 IndexSignatureParameters = 8848, 8876 JSDocComment = 33 8877 } 8878 interface UserPreferences { 8879 readonly disableSuggestions?: boolean; 8880 readonly quotePreference?: "auto" | "double" | "single"; 8881 readonly includeCompletionsForModuleExports?: boolean; 8882 readonly includeCompletionsForImportStatements?: boolean; 8883 readonly includeCompletionsWithSnippetText?: boolean; 8884 readonly includeAutomaticOptionalChainCompletions?: boolean; 8885 readonly includeCompletionsWithInsertText?: boolean; 8886 readonly includeCompletionsWithClassMemberSnippets?: boolean; 8887 readonly includeCompletionsWithObjectLiteralMethodSnippets?: boolean; 8888 readonly useLabelDetailsInCompletionEntries?: boolean; 8889 readonly allowIncompleteCompletions?: boolean; 8890 readonly importModuleSpecifierPreference?: "shortest" | "project-relative" | "relative" | "non-relative"; 8891 /** Determines whether we import `foo/index.ts` as "foo", "foo/index", or "foo/index.js" */ 8892 readonly importModuleSpecifierEnding?: "auto" | "minimal" | "index" | "js"; 8893 readonly allowTextChangesInNewFiles?: boolean; 8894 readonly providePrefixAndSuffixTextForRename?: boolean; 8895 readonly includePackageJsonAutoImports?: "auto" | "on" | "off"; 8896 readonly provideRefactorNotApplicableReason?: boolean; 8897 readonly jsxAttributeCompletionStyle?: "auto" | "braces" | "none"; 8898 readonly includeInlayParameterNameHints?: "none" | "literals" | "all"; 8899 readonly includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean; 8900 readonly includeInlayFunctionParameterTypeHints?: boolean; 8901 readonly includeInlayVariableTypeHints?: boolean; 8902 readonly includeInlayVariableTypeHintsWhenTypeMatchesName?: boolean; 8903 readonly includeInlayPropertyDeclarationTypeHints?: boolean; 8904 readonly includeInlayFunctionLikeReturnTypeHints?: boolean; 8905 readonly includeInlayEnumMemberValueHints?: boolean; 8906 readonly allowRenameOfImportPath?: boolean; 8907 readonly autoImportFileExcludePatterns?: string[]; 8908 } 8909 /** Represents a bigint literal value without requiring bigint support */ 8910 interface PseudoBigInt { 8911 negative: boolean; 8912 base10Value: string; 8913 } 8914 function getNodeMajorVersion(): number | undefined; 8915 enum FileWatcherEventKind { 8916 Created = 0, 8917 Changed = 1, 8918 Deleted = 2 8919 } 8920 type FileWatcherCallback = (fileName: string, eventKind: FileWatcherEventKind, modifiedTime?: Date) => void; 8921 type DirectoryWatcherCallback = (fileName: string) => void; 8922 interface System { 8923 args: string[]; 8924 newLine: string; 8925 useCaseSensitiveFileNames: boolean; 8926 write(s: string): void; 8927 writeOutputIsTTY?(): boolean; 8928 getWidthOfTerminal?(): number; 8929 readFile(path: string, encoding?: string): string | undefined; 8930 getFileSize?(path: string): number; 8931 writeFile(path: string, data: string, writeByteOrderMark?: boolean): void; 8932 /** 8933 * @pollingInterval - this parameter is used in polling-based watchers and ignored in watchers that 8934 * use native OS file watching 8935 */ 8936 watchFile?(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher; 8937 watchDirectory?(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher; 8938 resolvePath(path: string): string; 8939 fileExists(path: string): boolean; 8940 directoryExists(path: string): boolean; 8941 createDirectory(path: string): void; 8942 getExecutingFilePath(): string; 8943 getCurrentDirectory(): string; 8944 getDirectories(path: string): string[]; 8945 readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[]; 8946 getModifiedTime?(path: string): Date | undefined; 8947 setModifiedTime?(path: string, time: Date): void; 8948 deleteFile?(path: string): void; 8949 /** 8950 * A good implementation is node.js' `crypto.createHash`. (https://nodejs.org/api/crypto.html#crypto_crypto_createhash_algorithm) 8951 */ 8952 createHash?(data: string): string; 8953 /** This must be cryptographically secure. Only implement this method using `crypto.createHash("sha256")`. */ 8954 createSHA256Hash?(data: string): string; 8955 getMemoryUsage?(): number; 8956 exit(exitCode?: number): void; 8957 realpath?(path: string): string; 8958 setTimeout?(callback: (...args: any[]) => void, ms: number, ...args: any[]): any; 8959 clearTimeout?(timeoutId: any): void; 8960 clearScreen?(): void; 8961 base64decode?(input: string): string; 8962 base64encode?(input: string): string; 8963 } 8964 interface FileWatcher { 8965 close(): void; 8966 } 8967 let sys: System; 8968 namespace MemoryDotting { 8969 interface RecordInfo { 8970 recordStage: string; 8971 recordIndex: number; 8972 } 8973 const BINDE_SOURCE_FILE = "binder(bindSourceFile: Bind)"; 8974 const CHECK_SOURCE_FILE = "checker(checkSourceFile: Check)"; 8975 const EMIT_FILES = "emitter(emitFiles: EmitEachOutputFile)"; 8976 const CREATE_SORUCE_FILE_PARSE = "parser(createSourceFile: Parse)"; 8977 const BEFORE_PROGRAM = "program(createProgram: beforeProgram)"; 8978 const TRANSFORM = "transformer(transformNodes: Transform)"; 8979 function recordStage(stage: string): RecordInfo | null; 8980 function stopRecordStage(recordInfo: RecordInfo | null): void; 8981 function setMemoryDottingCallBack(recordCallback: (stage: string) => RecordInfo, stopCallback: (recordInfo: RecordInfo) => void): void; 8982 function clearCallBack(): void; 8983 } 8984 function tokenToString(t: SyntaxKind): string | undefined; 8985 function getPositionOfLineAndCharacter(sourceFile: SourceFileLike, line: number, character: number): number; 8986 function getLineAndCharacterOfPosition(sourceFile: SourceFileLike, position: number): LineAndCharacter; 8987 function isWhiteSpaceLike(ch: number): boolean; 8988 /** Does not include line breaks. For that, see isWhiteSpaceLike. */ 8989 function isWhiteSpaceSingleLine(ch: number): boolean; 8990 function isLineBreak(ch: number): boolean; 8991 function couldStartTrivia(text: string, pos: number): boolean; 8992 function forEachLeadingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined; 8993 function forEachLeadingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined; 8994 function forEachTrailingCommentRange<U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean) => U): U | undefined; 8995 function forEachTrailingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T) => U, state: T): U | undefined; 8996 function reduceEachLeadingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T, memo: U) => U, state: T, initial: U): U | undefined; 8997 function reduceEachTrailingCommentRange<T, U>(text: string, pos: number, cb: (pos: number, end: number, kind: CommentKind, hasTrailingNewLine: boolean, state: T, memo: U) => U, state: T, initial: U): U | undefined; 8998 function getLeadingCommentRanges(text: string, pos: number): CommentRange[] | undefined; 8999 function getTrailingCommentRanges(text: string, pos: number): CommentRange[] | undefined; 9000 /** Optionally, get the shebang */ 9001 function getShebang(text: string): string | undefined; 9002 function isIdentifierStart(ch: number, languageVersion: ScriptTarget | undefined): boolean; 9003 function isIdentifierPart(ch: number, languageVersion: ScriptTarget | undefined, identifierVariant?: LanguageVariant): boolean; 9004 function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, languageVariant?: LanguageVariant, textInitial?: string, onError?: ErrorCallback, start?: number, length?: number): Scanner; 9005 type ErrorCallback = (message: DiagnosticMessage, length: number) => void; 9006 interface Scanner { 9007 getStartPos(): number; 9008 getToken(): SyntaxKind; 9009 getTextPos(): number; 9010 getTokenPos(): number; 9011 getTokenText(): string; 9012 getTokenValue(): string; 9013 hasUnicodeEscape(): boolean; 9014 hasExtendedUnicodeEscape(): boolean; 9015 hasPrecedingLineBreak(): boolean; 9016 isIdentifier(): boolean; 9017 isReservedWord(): boolean; 9018 isUnterminated(): boolean; 9019 reScanGreaterToken(): SyntaxKind; 9020 reScanSlashToken(): SyntaxKind; 9021 reScanAsteriskEqualsToken(): SyntaxKind; 9022 reScanTemplateToken(isTaggedTemplate: boolean): SyntaxKind; 9023 reScanTemplateHeadOrNoSubstitutionTemplate(): SyntaxKind; 9024 scanJsxIdentifier(): SyntaxKind; 9025 scanJsxAttributeValue(): SyntaxKind; 9026 reScanJsxAttributeValue(): SyntaxKind; 9027 reScanJsxToken(allowMultilineJsxText?: boolean): JsxTokenSyntaxKind; 9028 reScanLessThanToken(): SyntaxKind; 9029 reScanHashToken(): SyntaxKind; 9030 reScanQuestionToken(): SyntaxKind; 9031 reScanInvalidIdentifier(): SyntaxKind; 9032 scanJsxToken(): JsxTokenSyntaxKind; 9033 scanJsDocToken(): JSDocSyntaxKind; 9034 scan(): SyntaxKind; 9035 getText(): string; 9036 setText(text: string | undefined, start?: number, length?: number): void; 9037 setOnError(onError: ErrorCallback | undefined): void; 9038 setScriptTarget(scriptTarget: ScriptTarget): void; 9039 setLanguageVariant(variant: LanguageVariant): void; 9040 setTextPos(textPos: number): void; 9041 lookAhead<T>(callback: () => T): T; 9042 scanRange<T>(start: number, length: number, callback: () => T): T; 9043 tryScan<T>(callback: () => T): T; 9044 setEtsContext(isEtsContext: boolean): void; 9045 } 9046 function isExternalModuleNameRelative(moduleName: string): boolean; 9047 function sortAndDeduplicateDiagnostics<T extends Diagnostic>(diagnostics: readonly T[]): SortedReadonlyArray<T>; 9048 function getDefaultLibFileName(options: CompilerOptions): string; 9049 function textSpanEnd(span: TextSpan): number; 9050 function textSpanIsEmpty(span: TextSpan): boolean; 9051 function textSpanContainsPosition(span: TextSpan, position: number): boolean; 9052 function textSpanContainsTextSpan(span: TextSpan, other: TextSpan): boolean; 9053 function textSpanOverlapsWith(span: TextSpan, other: TextSpan): boolean; 9054 function textSpanOverlap(span1: TextSpan, span2: TextSpan): TextSpan | undefined; 9055 function textSpanIntersectsWithTextSpan(span: TextSpan, other: TextSpan): boolean; 9056 function textSpanIntersectsWith(span: TextSpan, start: number, length: number): boolean; 9057 function decodedTextSpanIntersectsWith(start1: number, length1: number, start2: number, length2: number): boolean; 9058 function textSpanIntersectsWithPosition(span: TextSpan, position: number): boolean; 9059 function textSpanIntersection(span1: TextSpan, span2: TextSpan): TextSpan | undefined; 9060 function createTextSpan(start: number, length: number): TextSpan; 9061 function createTextSpanFromBounds(start: number, end: number): TextSpan; 9062 function textChangeRangeNewSpan(range: TextChangeRange): TextSpan; 9063 function textChangeRangeIsUnchanged(range: TextChangeRange): boolean; 9064 function createTextChangeRange(span: TextSpan, newLength: number): TextChangeRange; 9065 /** 9066 * Called to merge all the changes that occurred across several versions of a script snapshot 9067 * into a single change. i.e. if a user keeps making successive edits to a script we will 9068 * have a text change from V1 to V2, V2 to V3, ..., Vn. 9069 * 9070 * This function will then merge those changes into a single change range valid between V1 and 9071 * Vn. 9072 */ 9073 function collapseTextChangeRangesAcrossMultipleVersions(changes: readonly TextChangeRange[]): TextChangeRange; 9074 function getTypeParameterOwner(d: Declaration): Declaration | undefined; 9075 function isParameterPropertyDeclaration(node: Node, parent: Node): node is ParameterPropertyDeclaration; 9076 function isEmptyBindingPattern(node: BindingName): node is BindingPattern; 9077 function isEmptyBindingElement(node: BindingElement): boolean; 9078 function walkUpBindingElementsAndPatterns(binding: BindingElement): VariableDeclaration | ParameterDeclaration; 9079 function getCombinedModifierFlags(node: Declaration): ModifierFlags; 9080 function getCombinedNodeFlags(node: Node): NodeFlags; 9081 /** 9082 * Checks to see if the locale is in the appropriate format, 9083 * and if it is, attempts to set the appropriate language. 9084 */ 9085 function validateLocaleAndSetLanguage(locale: string, sys: { 9086 getExecutingFilePath(): string; 9087 resolvePath(path: string): string; 9088 fileExists(fileName: string): boolean; 9089 readFile(fileName: string): string | undefined; 9090 }, errors?: Push<Diagnostic>): void; 9091 function getOriginalNode(node: Node): Node; 9092 function getOriginalNode<T extends Node>(node: Node, nodeTest: (node: Node) => node is T): T; 9093 function getOriginalNode(node: Node | undefined): Node | undefined; 9094 function getOriginalNode<T extends Node>(node: Node | undefined, nodeTest: (node: Node | undefined) => node is T): T | undefined; 9095 /** 9096 * Iterates through the parent chain of a node and performs the callback on each parent until the callback 9097 * returns a truthy value, then returns that value. 9098 * If no such value is found, it applies the callback until the parent pointer is undefined or the callback returns "quit" 9099 * At that point findAncestor returns undefined. 9100 */ 9101 function findAncestor<T extends Node>(node: Node | undefined, callback: (element: Node) => element is T): T | undefined; 9102 function findAncestor(node: Node | undefined, callback: (element: Node) => boolean | "quit"): Node | undefined; 9103 /** 9104 * Gets a value indicating whether a node originated in the parse tree. 9105 * 9106 * @param node The node to test. 9107 */ 9108 function isParseTreeNode(node: Node): boolean; 9109 /** 9110 * Gets the original parse tree node for a node. 9111 * 9112 * @param node The original node. 9113 * @returns The original parse tree node if found; otherwise, undefined. 9114 */ 9115 function getParseTreeNode(node: Node | undefined): Node | undefined; 9116 /** 9117 * Gets the original parse tree node for a node. 9118 * 9119 * @param node The original node. 9120 * @param nodeTest A callback used to ensure the correct type of parse tree node is returned. 9121 * @returns The original parse tree node if found; otherwise, undefined. 9122 */ 9123 function getParseTreeNode<T extends Node>(node: T | undefined, nodeTest?: (node: Node) => node is T): T | undefined; 9124 /** Add an extra underscore to identifiers that start with two underscores to avoid issues with magic names like '__proto__' */ 9125 function escapeLeadingUnderscores(identifier: string): __String; 9126 /** 9127 * Remove extra underscore from escaped identifier text content. 9128 * 9129 * @param identifier The escaped identifier text. 9130 * @returns The unescaped identifier text. 9131 */ 9132 function unescapeLeadingUnderscores(identifier: __String): string; 9133 function idText(identifierOrPrivateName: Identifier | PrivateIdentifier): string; 9134 function symbolName(symbol: Symbol): string; 9135 function getNameOfJSDocTypedef(declaration: JSDocTypedefTag): Identifier | PrivateIdentifier | undefined; 9136 function getNameOfDeclaration(declaration: Declaration | Expression | undefined): DeclarationName | undefined; 9137 function getDecorators(node: HasDecorators): readonly Decorator[] | undefined; 9138 function getAnnotations(node: HasDecorators): readonly Decorator[] | undefined; 9139 function getModifiers(node: HasModifiers): readonly Modifier[] | undefined; 9140 function getAllDecorators(node: Node | undefined): readonly Decorator[]; 9141 function getIllegalDecorators(node: HasIllegalDecorators): readonly Decorator[] | undefined; 9142 /** 9143 * Gets the JSDoc parameter tags for the node if present. 9144 * 9145 * @remarks Returns any JSDoc param tag whose name matches the provided 9146 * parameter, whether a param tag on a containing function 9147 * expression, or a param tag on a variable declaration whose 9148 * initializer is the containing function. The tags closest to the 9149 * node are returned first, so in the previous example, the param 9150 * tag on the containing function expression would be first. 9151 * 9152 * For binding patterns, parameter tags are matched by position. 9153 */ 9154 function getJSDocParameterTags(param: ParameterDeclaration): readonly JSDocParameterTag[]; 9155 /** 9156 * Gets the JSDoc type parameter tags for the node if present. 9157 * 9158 * @remarks Returns any JSDoc template tag whose names match the provided 9159 * parameter, whether a template tag on a containing function 9160 * expression, or a template tag on a variable declaration whose 9161 * initializer is the containing function. The tags closest to the 9162 * node are returned first, so in the previous example, the template 9163 * tag on the containing function expression would be first. 9164 */ 9165 function getJSDocTypeParameterTags(param: TypeParameterDeclaration): readonly JSDocTemplateTag[]; 9166 /** 9167 * Return true if the node has JSDoc parameter tags. 9168 * 9169 * @remarks Includes parameter tags that are not directly on the node, 9170 * for example on a variable declaration whose initializer is a function expression. 9171 */ 9172 function hasJSDocParameterTags(node: FunctionLikeDeclaration | SignatureDeclaration): boolean; 9173 /** Gets the JSDoc augments tag for the node if present */ 9174 function getJSDocAugmentsTag(node: Node): JSDocAugmentsTag | undefined; 9175 /** Gets the JSDoc implements tags for the node if present */ 9176 function getJSDocImplementsTags(node: Node): readonly JSDocImplementsTag[]; 9177 /** Gets the JSDoc class tag for the node if present */ 9178 function getJSDocClassTag(node: Node): JSDocClassTag | undefined; 9179 /** Gets the JSDoc public tag for the node if present */ 9180 function getJSDocPublicTag(node: Node): JSDocPublicTag | undefined; 9181 /** Gets the JSDoc private tag for the node if present */ 9182 function getJSDocPrivateTag(node: Node): JSDocPrivateTag | undefined; 9183 /** Gets the JSDoc protected tag for the node if present */ 9184 function getJSDocProtectedTag(node: Node): JSDocProtectedTag | undefined; 9185 /** Gets the JSDoc protected tag for the node if present */ 9186 function getJSDocReadonlyTag(node: Node): JSDocReadonlyTag | undefined; 9187 function getJSDocOverrideTagNoCache(node: Node): JSDocOverrideTag | undefined; 9188 /** Gets the JSDoc deprecated tag for the node if present */ 9189 function getJSDocDeprecatedTag(node: Node): JSDocDeprecatedTag | undefined; 9190 /** Gets the JSDoc enum tag for the node if present */ 9191 function getJSDocEnumTag(node: Node): JSDocEnumTag | undefined; 9192 /** Gets the JSDoc this tag for the node if present */ 9193 function getJSDocThisTag(node: Node): JSDocThisTag | undefined; 9194 /** Gets the JSDoc return tag for the node if present */ 9195 function getJSDocReturnTag(node: Node): JSDocReturnTag | undefined; 9196 /** Gets the JSDoc template tag for the node if present */ 9197 function getJSDocTemplateTag(node: Node): JSDocTemplateTag | undefined; 9198 /** Gets the JSDoc type tag for the node if present and valid */ 9199 function getJSDocTypeTag(node: Node): JSDocTypeTag | undefined; 9200 /** 9201 * Gets the type node for the node if provided via JSDoc. 9202 * 9203 * @remarks The search includes any JSDoc param tag that relates 9204 * to the provided parameter, for example a type tag on the 9205 * parameter itself, or a param tag on a containing function 9206 * expression, or a param tag on a variable declaration whose 9207 * initializer is the containing function. The tags closest to the 9208 * node are examined first, so in the previous example, the type 9209 * tag directly on the node would be returned. 9210 */ 9211 function getJSDocType(node: Node): TypeNode | undefined; 9212 /** 9213 * Gets the return type node for the node if provided via JSDoc return tag or type tag. 9214 * 9215 * @remarks `getJSDocReturnTag` just gets the whole JSDoc tag. This function 9216 * gets the type from inside the braces, after the fat arrow, etc. 9217 */ 9218 function getJSDocReturnType(node: Node): TypeNode | undefined; 9219 /** Get all JSDoc tags related to a node, including those on parent nodes. */ 9220 function getJSDocTags(node: Node): readonly JSDocTag[]; 9221 /** Gets all JSDoc tags that match a specified predicate */ 9222 function getAllJSDocTags<T extends JSDocTag>(node: Node, predicate: (tag: JSDocTag) => tag is T): readonly T[]; 9223 /** Gets all JSDoc tags of a specified kind */ 9224 function getAllJSDocTagsOfKind(node: Node, kind: SyntaxKind): readonly JSDocTag[]; 9225 /** Gets the text of a jsdoc comment, flattening links to their text. */ 9226 function getTextOfJSDocComment(comment?: string | NodeArray<JSDocComment>): string | undefined; 9227 /** 9228 * Gets the effective type parameters. If the node was parsed in a 9229 * JavaScript file, gets the type parameters from the `@template` tag from JSDoc. 9230 * 9231 * This does *not* return type parameters from a jsdoc reference to a generic type, eg 9232 * 9233 * type Id = <T>(x: T) => T 9234 * /** @type {Id} / 9235 * function id(x) { return x } 9236 */ 9237 function getEffectiveTypeParameterDeclarations(node: DeclarationWithTypeParameters): readonly TypeParameterDeclaration[]; 9238 function getEffectiveConstraintOfTypeParameter(node: TypeParameterDeclaration): TypeNode | undefined; 9239 function isMemberName(node: Node): node is MemberName; 9240 function isPropertyAccessChain(node: Node): node is PropertyAccessChain; 9241 function isElementAccessChain(node: Node): node is ElementAccessChain; 9242 function isCallChain(node: Node): node is CallChain; 9243 function isOptionalChain(node: Node): node is PropertyAccessChain | ElementAccessChain | CallChain | NonNullChain; 9244 function isNullishCoalesce(node: Node): boolean; 9245 function isConstTypeReference(node: Node): boolean; 9246 function skipPartiallyEmittedExpressions(node: Expression): Expression; 9247 function skipPartiallyEmittedExpressions(node: Node): Node; 9248 function isNonNullChain(node: Node): node is NonNullChain; 9249 function isBreakOrContinueStatement(node: Node): node is BreakOrContinueStatement; 9250 function isNamedExportBindings(node: Node): node is NamedExportBindings; 9251 function isUnparsedTextLike(node: Node): node is UnparsedTextLike; 9252 function isUnparsedNode(node: Node): node is UnparsedNode; 9253 function isJSDocPropertyLikeTag(node: Node): node is JSDocPropertyLikeTag; 9254 /** 9255 * True if kind is of some token syntax kind. 9256 * For example, this is true for an IfKeyword but not for an IfStatement. 9257 * Literals are considered tokens, except TemplateLiteral, but does include TemplateHead/Middle/Tail. 9258 */ 9259 function isTokenKind(kind: SyntaxKind): boolean; 9260 /** 9261 * True if node is of some token syntax kind. 9262 * For example, this is true for an IfKeyword but not for an IfStatement. 9263 * Literals are considered tokens, except TemplateLiteral, but does include TemplateHead/Middle/Tail. 9264 */ 9265 function isToken(n: Node): boolean; 9266 function isLiteralExpression(node: Node): node is LiteralExpression; 9267 function isTemplateLiteralToken(node: Node): node is TemplateLiteralToken; 9268 function isTemplateMiddleOrTemplateTail(node: Node): node is TemplateMiddle | TemplateTail; 9269 function isImportOrExportSpecifier(node: Node): node is ImportSpecifier | ExportSpecifier; 9270 function isTypeOnlyImportOrExportDeclaration(node: Node): node is TypeOnlyAliasDeclaration; 9271 function isAssertionKey(node: Node): node is AssertionKey; 9272 function isStringTextContainingNode(node: Node): node is StringLiteral | TemplateLiteralToken; 9273 function isModifier(node: Node): node is Modifier; 9274 function isEntityName(node: Node): node is EntityName; 9275 function isPropertyName(node: Node): node is PropertyName; 9276 function isBindingName(node: Node): node is BindingName; 9277 function isFunctionLike(node: Node | undefined): node is SignatureDeclaration; 9278 function isAnnotationElement(node: Node): node is AnnotationElement; 9279 function isClassElement(node: Node): node is ClassElement; 9280 function isClassLike(node: Node): node is ClassLikeDeclaration; 9281 function isStruct(node: Node): node is StructDeclaration; 9282 function isAccessor(node: Node): node is AccessorDeclaration; 9283 function isAutoAccessorPropertyDeclaration(node: Node): node is AutoAccessorPropertyDeclaration; 9284 function isModifierLike(node: Node): node is ModifierLike; 9285 function isTypeElement(node: Node): node is TypeElement; 9286 function isClassOrTypeElement(node: Node): node is ClassElement | TypeElement; 9287 function isObjectLiteralElementLike(node: Node): node is ObjectLiteralElementLike; 9288 /** 9289 * Node test that determines whether a node is a valid type node. 9290 * This differs from the `isPartOfTypeNode` function which determines whether a node is *part* 9291 * of a TypeNode. 9292 */ 9293 function isTypeNode(node: Node): node is TypeNode; 9294 function isFunctionOrConstructorTypeNode(node: Node): node is FunctionTypeNode | ConstructorTypeNode; 9295 function isPropertyAccessOrQualifiedName(node: Node): node is PropertyAccessExpression | QualifiedName; 9296 function isCallLikeExpression(node: Node): node is CallLikeExpression; 9297 function isCallOrNewExpression(node: Node): node is CallExpression | NewExpression; 9298 function isTemplateLiteral(node: Node): node is TemplateLiteral; 9299 function isAssertionExpression(node: Node): node is AssertionExpression; 9300 function isIterationStatement(node: Node, lookInLabeledStatements: false): node is IterationStatement; 9301 function isIterationStatement(node: Node, lookInLabeledStatements: boolean): node is IterationStatement | LabeledStatement; 9302 function isDeclarationStatement(node: Node): node is DeclarationStatement; 9303 function isJsxOpeningLikeElement(node: Node): node is JsxOpeningLikeElement; 9304 function isCaseOrDefaultClause(node: Node): node is CaseOrDefaultClause; 9305 /** True if node is of a kind that may contain comment text. */ 9306 function isJSDocCommentContainingNode(node: Node): boolean; 9307 function isSetAccessor(node: Node): node is SetAccessorDeclaration; 9308 function isGetAccessor(node: Node): node is GetAccessorDeclaration; 9309 /** True if has initializer node attached to it. */ 9310 function hasOnlyExpressionInitializer(node: Node): node is HasExpressionInitializer; 9311 function isObjectLiteralElement(node: Node): node is ObjectLiteralElement; 9312 function isStringLiteralLike(node: Node): node is StringLiteralLike; 9313 function isJSDocLinkLike(node: Node): node is JSDocLink | JSDocLinkCode | JSDocLinkPlain; 9314 function hasRestParameter(s: SignatureDeclaration | JSDocSignature): boolean; 9315 function isRestParameter(node: ParameterDeclaration | JSDocParameterTag): boolean; 9316 let unchangedTextChangeRange: TextChangeRange; 9317 type ParameterPropertyDeclaration = ParameterDeclaration & { 9318 parent: ConstructorDeclaration; 9319 name: Identifier; 9320 }; 9321 class MemoryUtils { 9322 private static MemoryAfterGC; 9323 private static baseMemorySize; 9324 private static MIN_GC_THRESHOLD; 9325 private static memoryGCThreshold; 9326 static GC_THRESHOLD_RATIO: number; 9327 /** 9328 * Try garbage collection if the memory usage exceeds MEMORY_BASELINE. 9329 */ 9330 static tryGC(): void; 9331 static initializeBaseMemory(baseMemorySize?: number): void; 9332 static updateBaseMemory(MemoryBeforeGC: number): void; 9333 } 9334 function isPartOfTypeNode(node: Node): boolean; 9335 function getJSDocCommentsAndTags(hostNode: Node, noCache?: boolean): readonly (JSDoc | JSDocTag)[]; 9336 function getLeadingCommentRangesOfNode(node: Node, sourceFileOfNode: SourceFile): ts.CommentRange[] | undefined; 9337 function createTextWriter(newLine: string): EmitTextWriter; 9338 /** 9339 * Bypasses immutability and directly sets the `parent` property of each `Node` recursively. 9340 * @param rootNode The root node from which to start the recursion. 9341 * @param incremental When `true`, only recursively descends through nodes whose `parent` pointers are incorrect. 9342 * This allows us to quickly bail out of setting `parent` for subtrees during incremental parsing. 9343 */ 9344 function setParentRecursive<T extends Node>(rootNode: T, incremental: boolean): T; 9345 function setParentRecursive<T extends Node>(rootNode: T | undefined, incremental: boolean): T | undefined; 9346 function createUnparsedSourceFile(text: string): UnparsedSource; 9347 function createUnparsedSourceFile(inputFile: InputFiles, type: "js" | "dts", stripInternal?: boolean): UnparsedSource; 9348 function createUnparsedSourceFile(text: string, mapPath: string | undefined, map: string | undefined): UnparsedSource; 9349 function createInputFiles(javascriptText: string, declarationText: string): InputFiles; 9350 function createInputFiles(readFileText: (path: string) => string | undefined, javascriptPath: string, javascriptMapPath: string | undefined, declarationPath: string, declarationMapPath: string | undefined, buildInfoPath: string | undefined): InputFiles; 9351 function createInputFiles(javascriptText: string, declarationText: string, javascriptMapPath: string | undefined, javascriptMapText: string | undefined, declarationMapPath: string | undefined, declarationMapText: string | undefined): InputFiles; 9352 /** 9353 * Create an external source map source file reference 9354 */ 9355 function createSourceMapSource(fileName: string, text: string, skipTrivia?: (pos: number) => number): SourceMapSource; 9356 function setOriginalNode<T extends Node>(node: T, original: Node | undefined): T; 9357 const factory: NodeFactory; 9358 /** 9359 * Clears any `EmitNode` entries from parse-tree nodes. 9360 * @param sourceFile A source file. 9361 */ 9362 function disposeEmitNodes(sourceFile: SourceFile | undefined): void; 9363 /** 9364 * Sets flags that control emit behavior of a node. 9365 */ 9366 function setEmitFlags<T extends Node>(node: T, emitFlags: EmitFlags): T; 9367 /** 9368 * Gets a custom text range to use when emitting source maps. 9369 */ 9370 function getSourceMapRange(node: Node): SourceMapRange; 9371 /** 9372 * Sets a custom text range to use when emitting source maps. 9373 */ 9374 function setSourceMapRange<T extends Node>(node: T, range: SourceMapRange | undefined): T; 9375 /** 9376 * Gets the TextRange to use for source maps for a token of a node. 9377 */ 9378 function getTokenSourceMapRange(node: Node, token: SyntaxKind): SourceMapRange | undefined; 9379 /** 9380 * Sets the TextRange to use for source maps for a token of a node. 9381 */ 9382 function setTokenSourceMapRange<T extends Node>(node: T, token: SyntaxKind, range: SourceMapRange | undefined): T; 9383 /** 9384 * Gets a custom text range to use when emitting comments. 9385 */ 9386 function getCommentRange(node: Node): TextRange; 9387 /** 9388 * Sets a custom text range to use when emitting comments. 9389 */ 9390 function setCommentRange<T extends Node>(node: T, range: TextRange): T; 9391 function getSyntheticLeadingComments(node: Node): SynthesizedComment[] | undefined; 9392 function setSyntheticLeadingComments<T extends Node>(node: T, comments: SynthesizedComment[] | undefined): T; 9393 function addSyntheticLeadingComment<T extends Node>(node: T, kind: SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia, text: string, hasTrailingNewLine?: boolean): T; 9394 function getSyntheticTrailingComments(node: Node): SynthesizedComment[] | undefined; 9395 function setSyntheticTrailingComments<T extends Node>(node: T, comments: SynthesizedComment[] | undefined): T; 9396 function addSyntheticTrailingComment<T extends Node>(node: T, kind: SyntaxKind.SingleLineCommentTrivia | SyntaxKind.MultiLineCommentTrivia, text: string, hasTrailingNewLine?: boolean): T; 9397 function moveSyntheticComments<T extends Node>(node: T, original: Node): T; 9398 /** 9399 * Gets the constant value to emit for an expression representing an enum. 9400 */ 9401 function getConstantValue(node: AccessExpression): string | number | undefined; 9402 /** 9403 * Sets the constant value to emit for an expression. 9404 */ 9405 function setConstantValue(node: AccessExpression, value: string | number): AccessExpression; 9406 /** 9407 * Adds an EmitHelper to a node. 9408 */ 9409 function addEmitHelper<T extends Node>(node: T, helper: EmitHelper): T; 9410 /** 9411 * Add EmitHelpers to a node. 9412 */ 9413 function addEmitHelpers<T extends Node>(node: T, helpers: EmitHelper[] | undefined): T; 9414 /** 9415 * Removes an EmitHelper from a node. 9416 */ 9417 function removeEmitHelper(node: Node, helper: EmitHelper): boolean; 9418 /** 9419 * Gets the EmitHelpers of a node. 9420 */ 9421 function getEmitHelpers(node: Node): EmitHelper[] | undefined; 9422 /** 9423 * Moves matching emit helpers from a source node to a target node. 9424 */ 9425 function moveEmitHelpers(source: Node, target: Node, predicate: (helper: EmitHelper) => boolean): void; 9426 function isNumericLiteral(node: Node): node is NumericLiteral; 9427 function isBigIntLiteral(node: Node): node is BigIntLiteral; 9428 function isStringLiteral(node: Node): node is StringLiteral; 9429 function isJsxText(node: Node): node is JsxText; 9430 function isRegularExpressionLiteral(node: Node): node is RegularExpressionLiteral; 9431 function isNoSubstitutionTemplateLiteral(node: Node): node is NoSubstitutionTemplateLiteral; 9432 function isTemplateHead(node: Node): node is TemplateHead; 9433 function isTemplateMiddle(node: Node): node is TemplateMiddle; 9434 function isTemplateTail(node: Node): node is TemplateTail; 9435 function isDotDotDotToken(node: Node): node is DotDotDotToken; 9436 function isPlusToken(node: Node): node is PlusToken; 9437 function isMinusToken(node: Node): node is MinusToken; 9438 function isAsteriskToken(node: Node): node is AsteriskToken; 9439 function isIdentifier(node: Node): node is Identifier; 9440 function isPrivateIdentifier(node: Node): node is PrivateIdentifier; 9441 function isQualifiedName(node: Node): node is QualifiedName; 9442 function isComputedPropertyName(node: Node): node is ComputedPropertyName; 9443 function isTypeParameterDeclaration(node: Node): node is TypeParameterDeclaration; 9444 function isParameter(node: Node): node is ParameterDeclaration; 9445 function isDecoratorOrAnnotation(node: Node): node is Decorator; 9446 function isDecorator(node: Node): node is Decorator; 9447 function isAnnotation(node: Node): node is Annotation; 9448 function isPropertySignature(node: Node): node is PropertySignature; 9449 function isPropertyDeclaration(node: Node): node is PropertyDeclaration; 9450 function isAnnotationPropertyDeclaration(node: Node): node is AnnotationPropertyDeclaration; 9451 function isMethodSignature(node: Node): node is MethodSignature; 9452 function isMethodDeclaration(node: Node): node is MethodDeclaration; 9453 function isClassStaticBlockDeclaration(node: Node): node is ClassStaticBlockDeclaration; 9454 function isConstructorDeclaration(node: Node): node is ConstructorDeclaration; 9455 function isGetAccessorDeclaration(node: Node): node is GetAccessorDeclaration; 9456 function isSetAccessorDeclaration(node: Node): node is SetAccessorDeclaration; 9457 function isCallSignatureDeclaration(node: Node): node is CallSignatureDeclaration; 9458 function isConstructSignatureDeclaration(node: Node): node is ConstructSignatureDeclaration; 9459 function isIndexSignatureDeclaration(node: Node): node is IndexSignatureDeclaration; 9460 function isTypePredicateNode(node: Node): node is TypePredicateNode; 9461 function isTypeReferenceNode(node: Node): node is TypeReferenceNode; 9462 function isFunctionTypeNode(node: Node): node is FunctionTypeNode; 9463 function isConstructorTypeNode(node: Node): node is ConstructorTypeNode; 9464 function isTypeQueryNode(node: Node): node is TypeQueryNode; 9465 function isTypeLiteralNode(node: Node): node is TypeLiteralNode; 9466 function isArrayTypeNode(node: Node): node is ArrayTypeNode; 9467 function isTupleTypeNode(node: Node): node is TupleTypeNode; 9468 function isNamedTupleMember(node: Node): node is NamedTupleMember; 9469 function isOptionalTypeNode(node: Node): node is OptionalTypeNode; 9470 function isRestTypeNode(node: Node): node is RestTypeNode; 9471 function isUnionTypeNode(node: Node): node is UnionTypeNode; 9472 function isIntersectionTypeNode(node: Node): node is IntersectionTypeNode; 9473 function isConditionalTypeNode(node: Node): node is ConditionalTypeNode; 9474 function isInferTypeNode(node: Node): node is InferTypeNode; 9475 function isParenthesizedTypeNode(node: Node): node is ParenthesizedTypeNode; 9476 function isThisTypeNode(node: Node): node is ThisTypeNode; 9477 function isTypeOperatorNode(node: Node): node is TypeOperatorNode; 9478 function isIndexedAccessTypeNode(node: Node): node is IndexedAccessTypeNode; 9479 function isMappedTypeNode(node: Node): node is MappedTypeNode; 9480 function isLiteralTypeNode(node: Node): node is LiteralTypeNode; 9481 function isImportTypeNode(node: Node): node is ImportTypeNode; 9482 function isTemplateLiteralTypeSpan(node: Node): node is TemplateLiteralTypeSpan; 9483 function isTemplateLiteralTypeNode(node: Node): node is TemplateLiteralTypeNode; 9484 function isObjectBindingPattern(node: Node): node is ObjectBindingPattern; 9485 function isArrayBindingPattern(node: Node): node is ArrayBindingPattern; 9486 function isBindingElement(node: Node): node is BindingElement; 9487 function isArrayLiteralExpression(node: Node): node is ArrayLiteralExpression; 9488 function isObjectLiteralExpression(node: Node): node is ObjectLiteralExpression; 9489 function isPropertyAccessExpression(node: Node): node is PropertyAccessExpression; 9490 function isElementAccessExpression(node: Node): node is ElementAccessExpression; 9491 function isCallExpression(node: Node): node is CallExpression; 9492 function isNewExpression(node: Node): node is NewExpression; 9493 function isTaggedTemplateExpression(node: Node): node is TaggedTemplateExpression; 9494 function isTypeAssertionExpression(node: Node): node is TypeAssertion; 9495 function isParenthesizedExpression(node: Node): node is ParenthesizedExpression; 9496 function isFunctionExpression(node: Node): node is FunctionExpression; 9497 function isEtsComponentExpression(node: Node): node is EtsComponentExpression; 9498 function isArrowFunction(node: Node): node is ArrowFunction; 9499 function isDeleteExpression(node: Node): node is DeleteExpression; 9500 function isTypeOfExpression(node: Node): node is TypeOfExpression; 9501 function isVoidExpression(node: Node): node is VoidExpression; 9502 function isAwaitExpression(node: Node): node is AwaitExpression; 9503 function isPrefixUnaryExpression(node: Node): node is PrefixUnaryExpression; 9504 function isPostfixUnaryExpression(node: Node): node is PostfixUnaryExpression; 9505 function isBinaryExpression(node: Node): node is BinaryExpression; 9506 function isConditionalExpression(node: Node): node is ConditionalExpression; 9507 function isTemplateExpression(node: Node): node is TemplateExpression; 9508 function isYieldExpression(node: Node): node is YieldExpression; 9509 function isSpreadElement(node: Node): node is SpreadElement; 9510 function isClassExpression(node: Node): node is ClassExpression; 9511 function isOmittedExpression(node: Node): node is OmittedExpression; 9512 function isExpressionWithTypeArguments(node: Node): node is ExpressionWithTypeArguments; 9513 function isAsExpression(node: Node): node is AsExpression; 9514 function isSatisfiesExpression(node: Node): node is SatisfiesExpression; 9515 function isNonNullExpression(node: Node): node is NonNullExpression; 9516 function isMetaProperty(node: Node): node is MetaProperty; 9517 function isSyntheticExpression(node: Node): node is SyntheticExpression; 9518 function isPartiallyEmittedExpression(node: Node): node is PartiallyEmittedExpression; 9519 function isCommaListExpression(node: Node): node is CommaListExpression; 9520 function isTemplateSpan(node: Node): node is TemplateSpan; 9521 function isSemicolonClassElement(node: Node): node is SemicolonClassElement; 9522 function isBlock(node: Node): node is Block; 9523 function isVariableStatement(node: Node): node is VariableStatement; 9524 function isEmptyStatement(node: Node): node is EmptyStatement; 9525 function isExpressionStatement(node: Node): node is ExpressionStatement; 9526 function isIfStatement(node: Node): node is IfStatement; 9527 function isDoStatement(node: Node): node is DoStatement; 9528 function isWhileStatement(node: Node): node is WhileStatement; 9529 function isForStatement(node: Node): node is ForStatement; 9530 function isForInStatement(node: Node): node is ForInStatement; 9531 function isForOfStatement(node: Node): node is ForOfStatement; 9532 function isContinueStatement(node: Node): node is ContinueStatement; 9533 function isBreakStatement(node: Node): node is BreakStatement; 9534 function isReturnStatement(node: Node): node is ReturnStatement; 9535 function isWithStatement(node: Node): node is WithStatement; 9536 function isSwitchStatement(node: Node): node is SwitchStatement; 9537 function isLabeledStatement(node: Node): node is LabeledStatement; 9538 function isThrowStatement(node: Node): node is ThrowStatement; 9539 function isTryStatement(node: Node): node is TryStatement; 9540 function isDebuggerStatement(node: Node): node is DebuggerStatement; 9541 function isVariableDeclaration(node: Node): node is VariableDeclaration; 9542 function isVariableDeclarationList(node: Node): node is VariableDeclarationList; 9543 function isFunctionDeclaration(node: Node): node is FunctionDeclaration; 9544 function isClassDeclaration(node: Node): node is ClassDeclaration; 9545 function isStructDeclaration(node: Node): node is StructDeclaration; 9546 function isAnnotationDeclaration(node: Node): node is AnnotationDeclaration; 9547 function isInterfaceDeclaration(node: Node): node is InterfaceDeclaration; 9548 function isTypeAliasDeclaration(node: Node): node is TypeAliasDeclaration; 9549 function isEnumDeclaration(node: Node): node is EnumDeclaration; 9550 function isModuleDeclaration(node: Node): node is ModuleDeclaration; 9551 function isModuleBlock(node: Node): node is ModuleBlock; 9552 function isCaseBlock(node: Node): node is CaseBlock; 9553 function isNamespaceExportDeclaration(node: Node): node is NamespaceExportDeclaration; 9554 function isImportEqualsDeclaration(node: Node): node is ImportEqualsDeclaration; 9555 function isImportDeclaration(node: Node): node is ImportDeclaration; 9556 function isImportClause(node: Node): node is ImportClause; 9557 function isImportTypeAssertionContainer(node: Node): node is ImportTypeAssertionContainer; 9558 function isAssertClause(node: Node): node is AssertClause; 9559 function isAssertEntry(node: Node): node is AssertEntry; 9560 function isNamespaceImport(node: Node): node is NamespaceImport; 9561 function isNamespaceExport(node: Node): node is NamespaceExport; 9562 function isNamedImports(node: Node): node is NamedImports; 9563 function isImportSpecifier(node: Node): node is ImportSpecifier; 9564 function isExportAssignment(node: Node): node is ExportAssignment; 9565 function isExportDeclaration(node: Node): node is ExportDeclaration; 9566 function isNamedExports(node: Node): node is NamedExports; 9567 function isExportSpecifier(node: Node): node is ExportSpecifier; 9568 function isMissingDeclaration(node: Node): node is MissingDeclaration; 9569 function isNotEmittedStatement(node: Node): node is NotEmittedStatement; 9570 function isExternalModuleReference(node: Node): node is ExternalModuleReference; 9571 function isJsxElement(node: Node): node is JsxElement; 9572 function isJsxSelfClosingElement(node: Node): node is JsxSelfClosingElement; 9573 function isJsxOpeningElement(node: Node): node is JsxOpeningElement; 9574 function isJsxClosingElement(node: Node): node is JsxClosingElement; 9575 function isJsxFragment(node: Node): node is JsxFragment; 9576 function isJsxOpeningFragment(node: Node): node is JsxOpeningFragment; 9577 function isJsxClosingFragment(node: Node): node is JsxClosingFragment; 9578 function isJsxAttribute(node: Node): node is JsxAttribute; 9579 function isJsxAttributes(node: Node): node is JsxAttributes; 9580 function isJsxSpreadAttribute(node: Node): node is JsxSpreadAttribute; 9581 function isJsxExpression(node: Node): node is JsxExpression; 9582 function isCaseClause(node: Node): node is CaseClause; 9583 function isDefaultClause(node: Node): node is DefaultClause; 9584 function isHeritageClause(node: Node): node is HeritageClause; 9585 function isCatchClause(node: Node): node is CatchClause; 9586 function isPropertyAssignment(node: Node): node is PropertyAssignment; 9587 function isShorthandPropertyAssignment(node: Node): node is ShorthandPropertyAssignment; 9588 function isSpreadAssignment(node: Node): node is SpreadAssignment; 9589 function isEnumMember(node: Node): node is EnumMember; 9590 function isUnparsedPrepend(node: Node): node is UnparsedPrepend; 9591 function isSourceFile(node: Node): node is SourceFile; 9592 function isBundle(node: Node): node is Bundle; 9593 function isUnparsedSource(node: Node): node is UnparsedSource; 9594 function isJSDocTypeExpression(node: Node): node is JSDocTypeExpression; 9595 function isJSDocNameReference(node: Node): node is JSDocNameReference; 9596 function isJSDocMemberName(node: Node): node is JSDocMemberName; 9597 function isJSDocLink(node: Node): node is JSDocLink; 9598 function isJSDocLinkCode(node: Node): node is JSDocLinkCode; 9599 function isJSDocLinkPlain(node: Node): node is JSDocLinkPlain; 9600 function isJSDocAllType(node: Node): node is JSDocAllType; 9601 function isJSDocUnknownType(node: Node): node is JSDocUnknownType; 9602 function isJSDocNullableType(node: Node): node is JSDocNullableType; 9603 function isJSDocNonNullableType(node: Node): node is JSDocNonNullableType; 9604 function isJSDocOptionalType(node: Node): node is JSDocOptionalType; 9605 function isJSDocFunctionType(node: Node): node is JSDocFunctionType; 9606 function isJSDocVariadicType(node: Node): node is JSDocVariadicType; 9607 function isJSDocNamepathType(node: Node): node is JSDocNamepathType; 9608 function isJSDoc(node: Node): node is JSDoc; 9609 function isJSDocTypeLiteral(node: Node): node is JSDocTypeLiteral; 9610 function isJSDocSignature(node: Node): node is JSDocSignature; 9611 function isJSDocAugmentsTag(node: Node): node is JSDocAugmentsTag; 9612 function isJSDocAuthorTag(node: Node): node is JSDocAuthorTag; 9613 function isJSDocClassTag(node: Node): node is JSDocClassTag; 9614 function isJSDocCallbackTag(node: Node): node is JSDocCallbackTag; 9615 function isJSDocPublicTag(node: Node): node is JSDocPublicTag; 9616 function isJSDocPrivateTag(node: Node): node is JSDocPrivateTag; 9617 function isJSDocProtectedTag(node: Node): node is JSDocProtectedTag; 9618 function isJSDocReadonlyTag(node: Node): node is JSDocReadonlyTag; 9619 function isJSDocOverrideTag(node: Node): node is JSDocOverrideTag; 9620 function isJSDocDeprecatedTag(node: Node): node is JSDocDeprecatedTag; 9621 function isJSDocSeeTag(node: Node): node is JSDocSeeTag; 9622 function isJSDocEnumTag(node: Node): node is JSDocEnumTag; 9623 function isJSDocParameterTag(node: Node): node is JSDocParameterTag; 9624 function isJSDocReturnTag(node: Node): node is JSDocReturnTag; 9625 function isJSDocThisTag(node: Node): node is JSDocThisTag; 9626 function isJSDocTypeTag(node: Node): node is JSDocTypeTag; 9627 function isJSDocTemplateTag(node: Node): node is JSDocTemplateTag; 9628 function isJSDocTypedefTag(node: Node): node is JSDocTypedefTag; 9629 function isJSDocUnknownTag(node: Node): node is JSDocUnknownTag; 9630 function isJSDocPropertyTag(node: Node): node is JSDocPropertyTag; 9631 function isJSDocImplementsTag(node: Node): node is JSDocImplementsTag; 9632 function setTextRange<T extends TextRange>(range: T, location: TextRange | undefined): T; 9633 function canHaveModifiers(node: Node): node is HasModifiers; 9634 function canHaveDecorators(node: Node): node is HasDecorators; 9635 /** 9636 * Invokes a callback for each child of the given node. The 'cbNode' callback is invoked for all child nodes 9637 * stored in properties. If a 'cbNodes' callback is specified, it is invoked for embedded arrays; otherwise, 9638 * embedded arrays are flattened and the 'cbNode' callback is invoked for each element. If a callback returns 9639 * a truthy value, iteration stops and that value is returned. Otherwise, undefined is returned. 9640 * 9641 * @param node a given node to visit its children 9642 * @param cbNode a callback to be invoked for all child nodes 9643 * @param cbNodes a callback to be invoked for embedded array 9644 * 9645 * @remarks `forEachChild` must visit the children of a node in the order 9646 * that they appear in the source code. The language service depends on this property to locate nodes by position. 9647 */ 9648 function forEachChild<T>(node: Node, cbNode: (node: Node) => T | undefined, cbNodes?: (nodes: NodeArray<Node>) => T | undefined): T | undefined; 9649 function createSourceFile(fileName: string, sourceText: string, languageVersionOrOptions: ScriptTarget | CreateSourceFileOptions, setParentNodes?: boolean, scriptKind?: ScriptKind, options?: CompilerOptions, isArkguardInput?: boolean): SourceFile; 9650 function parseIsolatedEntityName(text: string, languageVersion: ScriptTarget): EntityName | undefined; 9651 /** 9652 * Parse json text into SyntaxTree and return node and parse errors if any 9653 * @param fileName 9654 * @param sourceText 9655 */ 9656 function parseJsonText(fileName: string, sourceText: string): JsonSourceFile; 9657 function isExternalModule(file: SourceFile): boolean; 9658 function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean, option?: CompilerOptions): SourceFile; 9659 function setLanguageVersionByFilePath(getLanguageVersion: ((filePath: string) => boolean) | undefined): void; 9660 interface CreateSourceFileOptions { 9661 languageVersion: ScriptTarget; 9662 /** 9663 * Controls the format the file is detected as - this can be derived from only the path 9664 * and files on disk, but needs to be done with a module resolution cache in scope to be performant. 9665 * This is usually `undefined` for compilations that do not have `moduleResolution` values of `node16` or `nodenext`. 9666 */ 9667 impliedNodeFormat?: ModuleKind.ESNext | ModuleKind.CommonJS; 9668 /** 9669 * Controls how module-y-ness is set for the given file. Usually the result of calling 9670 * `getSetExternalModuleIndicator` on a valid `CompilerOptions` object. If not present, the default 9671 * check specified by `isFileProbablyExternalModule` will be used to set the field. 9672 */ 9673 setExternalModuleIndicator?: (file: SourceFile) => void; 9674 } 9675 function parseCommandLine(commandLine: readonly string[], readFile?: (path: string) => string | undefined): ParsedCommandLine; 9676 /** 9677 * Reads the config file, reports errors if any and exits if the config file cannot be found 9678 */ 9679 function getParsedCommandLineOfConfigFile(configFileName: string, optionsToExtend: CompilerOptions | undefined, host: ParseConfigFileHost, extendedConfigCache?: Map<ExtendedConfigCacheEntry>, watchOptionsToExtend?: WatchOptions, extraFileExtensions?: readonly FileExtensionInfo[]): ParsedCommandLine | undefined; 9680 /** 9681 * Read tsconfig.json file 9682 * @param fileName The path to the config file 9683 */ 9684 function readConfigFile(fileName: string, readFile: (path: string) => string | undefined): { 9685 config?: any; 9686 error?: Diagnostic; 9687 }; 9688 /** 9689 * Parse the text of the tsconfig.json file 9690 * @param fileName The path to the config file 9691 * @param jsonText The text of the config file 9692 */ 9693 function parseConfigFileTextToJson(fileName: string, jsonText: string): { 9694 config?: any; 9695 error?: Diagnostic; 9696 }; 9697 /** 9698 * Read tsconfig.json file 9699 * @param fileName The path to the config file 9700 */ 9701 function readJsonConfigFile(fileName: string, readFile: (path: string) => string | undefined): TsConfigSourceFile; 9702 /** 9703 * Convert the json syntax tree into the json value 9704 */ 9705 function convertToObject(sourceFile: JsonSourceFile, errors: Push<Diagnostic>): any; 9706 /** 9707 * Parse the contents of a config file (tsconfig.json). 9708 * @param json The contents of the config file to parse 9709 * @param host Instance of ParseConfigHost used to enumerate files in folder. 9710 * @param basePath A root directory to resolve relative path entries in the config 9711 * file to. e.g. outDir 9712 */ 9713 function parseJsonConfigFileContent(json: any, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions, configFileName?: string, resolutionStack?: Path[], extraFileExtensions?: readonly FileExtensionInfo[], extendedConfigCache?: Map<ExtendedConfigCacheEntry>, existingWatchOptions?: WatchOptions): ParsedCommandLine; 9714 /** 9715 * Parse the contents of a config file (tsconfig.json). 9716 * @param jsonNode The contents of the config file to parse 9717 * @param host Instance of ParseConfigHost used to enumerate files in folder. 9718 * @param basePath A root directory to resolve relative path entries in the config 9719 * file to. e.g. outDir 9720 */ 9721 function parseJsonSourceFileConfigFileContent(sourceFile: TsConfigSourceFile, host: ParseConfigHost, basePath: string, existingOptions?: CompilerOptions, configFileName?: string, resolutionStack?: Path[], extraFileExtensions?: readonly FileExtensionInfo[], extendedConfigCache?: Map<ExtendedConfigCacheEntry>, existingWatchOptions?: WatchOptions): ParsedCommandLine; 9722 function convertCompilerOptionsFromJson(jsonOptions: any, basePath: string, configFileName?: string): { 9723 options: CompilerOptions; 9724 errors: Diagnostic[]; 9725 }; 9726 function convertTypeAcquisitionFromJson(jsonOptions: any, basePath: string, configFileName?: string): { 9727 options: TypeAcquisition; 9728 errors: Diagnostic[]; 9729 }; 9730 type DiagnosticReporter = (diagnostic: Diagnostic) => void; 9731 /** 9732 * Reports config file diagnostics 9733 */ 9734 interface ConfigFileDiagnosticsReporter { 9735 /** 9736 * Reports unrecoverable error when parsing config file 9737 */ 9738 onUnRecoverableConfigFileDiagnostic: DiagnosticReporter; 9739 } 9740 /** 9741 * Interface extending ParseConfigHost to support ParseConfigFile that reads config file and reports errors 9742 */ 9743 interface ParseConfigFileHost extends ParseConfigHost, ConfigFileDiagnosticsReporter { 9744 getCurrentDirectory(): string; 9745 } 9746 interface ParsedTsconfig { 9747 raw: any; 9748 options?: CompilerOptions; 9749 watchOptions?: WatchOptions; 9750 typeAcquisition?: TypeAcquisition; 9751 /** 9752 * Note that the case of the config path has not yet been normalized, as no files have been imported into the project yet 9753 */ 9754 extendedConfigPath?: string; 9755 } 9756 interface ExtendedConfigCacheEntry { 9757 extendedResult: TsConfigSourceFile; 9758 extendedConfig: ParsedTsconfig | undefined; 9759 } 9760 function getEffectiveTypeRoots(options: CompilerOptions, host: GetEffectiveTypeRootsHost): string[] | undefined; 9761 /** 9762 * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. 9763 * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups 9764 * is assumed to be the same as root directory of the project. 9765 */ 9766 function resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string | undefined, options: CompilerOptions, host: ModuleResolutionHost, redirectedReference?: ResolvedProjectReference, cache?: TypeReferenceDirectiveResolutionCache, resolutionMode?: SourceFile["impliedNodeFormat"]): ResolvedTypeReferenceDirectiveWithFailedLookupLocations; 9767 /** 9768 * Given a set of options, returns the set of type directive names 9769 * that should be included for this program automatically. 9770 * This list could either come from the config file, 9771 * or from enumerating the types root + initial secondary types lookup location. 9772 * More type directives might appear in the program later as a result of loading actual source files; 9773 * this list is only the set of defaults that are implicitly included. 9774 */ 9775 function getAutomaticTypeDirectiveNames(options: CompilerOptions, host: ModuleResolutionHost): string[]; 9776 function createModuleResolutionCache(currentDirectory: string, getCanonicalFileName: (s: string) => string, options?: CompilerOptions): ModuleResolutionCache; 9777 function createTypeReferenceDirectiveResolutionCache(currentDirectory: string, getCanonicalFileName: (s: string) => string, options?: CompilerOptions, packageJsonInfoCache?: PackageJsonInfoCache): TypeReferenceDirectiveResolutionCache; 9778 function resolveModuleNameFromCache(moduleName: string, containingFile: string, cache: ModuleResolutionCache, mode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined; 9779 function resolveModuleName(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations; 9780 function nodeModuleNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: ModuleResolutionCache, redirectedReference?: ResolvedProjectReference): ResolvedModuleWithFailedLookupLocations; 9781 /** 9782 * This will be called on the successfully resolved path from `loadModuleFromFile`. 9783 * (Not needed for `loadModuleFromNodeModules` as that looks up the `package.json` or `oh-package.json5` as part of resolution.) 9784 * 9785 * packageDirectory is the directory of the package itself. 9786 * For `blah/node_modules/foo/index.d.ts` this is packageDirectory: "foo" 9787 * For `/node_modules/foo/bar.d.ts` this is packageDirectory: "foo" 9788 * For `/node_modules/@types/foo/bar/index.d.ts` this is packageDirectory: "@types/foo" 9789 * For `/node_modules/foo/bar/index.d.ts` this is packageDirectory: "foo" 9790 */ 9791 function parseModuleFromPath(resolved: string, packageManagerType?: string): string | undefined; 9792 function classicNameResolver(moduleName: string, containingFile: string, compilerOptions: CompilerOptions, host: ModuleResolutionHost, cache?: NonRelativeModuleNameResolutionCache, redirectedReference?: ResolvedProjectReference): ResolvedModuleWithFailedLookupLocations; 9793 interface TypeReferenceDirectiveResolutionCache extends PerDirectoryResolutionCache<ResolvedTypeReferenceDirectiveWithFailedLookupLocations>, PackageJsonInfoCache { 9794 } 9795 interface ModeAwareCache<T> { 9796 get(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): T | undefined; 9797 set(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined, value: T): this; 9798 delete(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): this; 9799 has(key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined): boolean; 9800 forEach(cb: (elem: T, key: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined) => void): void; 9801 size(): number; 9802 } 9803 /** 9804 * Cached resolutions per containing directory. 9805 * This assumes that any module id will have the same resolution for sibling files located in the same folder. 9806 */ 9807 interface PerDirectoryResolutionCache<T> { 9808 getOrCreateCacheForDirectory(directoryName: string, redirectedReference?: ResolvedProjectReference): ModeAwareCache<T>; 9809 clear(): void; 9810 /** 9811 * Updates with the current compilerOptions the cache will operate with. 9812 * This updates the redirects map as well if needed so module resolutions are cached if they can across the projects 9813 */ 9814 update(options: CompilerOptions): void; 9815 } 9816 interface ModuleResolutionCache extends PerDirectoryResolutionCache<ResolvedModuleWithFailedLookupLocations>, NonRelativeModuleNameResolutionCache, PackageJsonInfoCache { 9817 getPackageJsonInfoCache(): PackageJsonInfoCache; 9818 } 9819 /** 9820 * Stored map from non-relative module name to a table: directory -> result of module lookup in this directory 9821 * We support only non-relative module names because resolution of relative module names is usually more deterministic and thus less expensive. 9822 */ 9823 interface NonRelativeModuleNameResolutionCache extends PackageJsonInfoCache { 9824 getOrCreateCacheForModuleName(nonRelativeModuleName: string, mode: ModuleKind.CommonJS | ModuleKind.ESNext | undefined, redirectedReference?: ResolvedProjectReference): PerModuleNameCache; 9825 } 9826 interface PackageJsonInfoCache { 9827 clear(): void; 9828 } 9829 interface PerModuleNameCache { 9830 get(directory: string): ResolvedModuleWithFailedLookupLocations | undefined; 9831 set(directory: string, result: ResolvedModuleWithFailedLookupLocations): void; 9832 } 9833 function concatenateDecoratorsAndModifiers(decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined): readonly ModifierLike[] | undefined; 9834 function isEtsFunctionDecorators(name: string | undefined, options: CompilerOptions): boolean; 9835 function isOhpm(packageManagerType: string | undefined): boolean; 9836 function isOHModules(modulePath: string): boolean; 9837 function isOhpmAndOhModules(packageManagerType: string | undefined, modulePath: string): boolean; 9838 function getModulePathPartByPMType(packageManagerType: string | undefined): string; 9839 function getModuleByPMType(packageManagerType: string | undefined): string; 9840 function getPackageJsonByPMType(packageManagerType: string | undefined): string; 9841 function isOHModulesDirectory(dirPath: Path): boolean; 9842 function isTargetModulesDerectory(dirPath: Path): boolean; 9843 function pathContainsOHModules(path: string): boolean; 9844 function choosePathContainsModules(packageManagerType: string | undefined, fileName: string): boolean; 9845 function getTypeExportImportAndConstEnumTransformer(context: TransformationContext): (node: SourceFile) => SourceFile; 9846 function getAnnotationTransformer(): TransformerFactory<SourceFile>; 9847 function transformAnnotation(context: TransformationContext): (node: SourceFile) => SourceFile; 9848 /** 9849 * Add 'type' flag to import/export when import/export an type member. 9850 * Replace const enum with number and string literal. 9851 */ 9852 function transformTypeExportImportAndConstEnumInTypeScript(context: TransformationContext): (node: SourceFile) => SourceFile; 9853 function hasTsNoCheckOrTsIgnoreFlag(node: SourceFile): boolean; 9854 function createObfTextSingleLineWriter(): EmitTextWriter; 9855 function isMixedCompilerSDKPath(compilerOptions: CompilerOptions): boolean; 9856 function cleanKitJsonCache(): void; 9857 function getMaxFlowDepth(compilerOptions: CompilerOptions): number; 9858 function getErrorCode(diagnostic: Diagnostic): ErrorInfo; 9859 function getErrorCodeArea(code: number): ErrorCodeArea; 9860 const ohModulesPathPart: string; 9861 const REQUIRE_DECORATOR = "Require"; 9862 const THROWS_TAG = "throws"; 9863 const THROWS_CATCH = "catch"; 9864 const THROWS_ASYNC_CALLBACK = "AsyncCallback"; 9865 const THROWS_ERROR_CALLBACK = "ErrorCallback"; 9866 interface MoreInfo { 9867 cn: string; 9868 en: string; 9869 } 9870 class ErrorInfo { 9871 code: string; 9872 description: string; 9873 cause: string; 9874 position: string; 9875 solutions: string[]; 9876 moreInfo?: MoreInfo; 9877 getCode(): string; 9878 getDescription(): string; 9879 getCause(): string; 9880 getPosition(): string; 9881 getSolutions(): string[]; 9882 getMoreInfo(): MoreInfo | undefined; 9883 } 9884 enum ErrorCodeArea { 9885 TSC = 0, 9886 LINTER = 1, 9887 UI = 2 9888 } 9889 enum CheckMode { 9890 Normal = 0, 9891 Contextual = 1, 9892 Inferential = 2, 9893 SkipContextSensitive = 4, 9894 SkipGenericFunctions = 8, 9895 IsForSignatureHelp = 16, 9896 IsForStringLiteralArgumentCompletions = 32, 9897 RestBindingElement = 64, 9898 SkipEtsComponentBody = 128 9899 } 9900 /** 9901 * Visits a Node using the supplied visitor, possibly returning a new Node in its place. 9902 * 9903 * @param node The Node to visit. 9904 * @param visitor The callback used to visit the Node. 9905 * @param test A callback to execute to verify the Node is valid. 9906 * @param lift An optional callback to execute to lift a NodeArray into a valid Node. 9907 */ 9908 function visitNode<T extends Node>(node: T, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T; 9909 /** 9910 * Visits a Node using the supplied visitor, possibly returning a new Node in its place. 9911 * 9912 * @param node The Node to visit. 9913 * @param visitor The callback used to visit the Node. 9914 * @param test A callback to execute to verify the Node is valid. 9915 * @param lift An optional callback to execute to lift a NodeArray into a valid Node. 9916 */ 9917 function visitNode<T extends Node>(node: T | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, lift?: (node: readonly Node[]) => T): T | undefined; 9918 /** 9919 * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place. 9920 * 9921 * @param nodes The NodeArray to visit. 9922 * @param visitor The callback used to visit a Node. 9923 * @param test A node test to execute for each node. 9924 * @param start An optional value indicating the starting offset at which to start visiting. 9925 * @param count An optional value indicating the maximum number of nodes to visit. 9926 */ 9927 function visitNodes<T extends Node>(nodes: NodeArray<T>, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T>; 9928 /** 9929 * Visits a NodeArray using the supplied visitor, possibly returning a new NodeArray in its place. 9930 * 9931 * @param nodes The NodeArray to visit. 9932 * @param visitor The callback used to visit a Node. 9933 * @param test A node test to execute for each node. 9934 * @param start An optional value indicating the starting offset at which to start visiting. 9935 * @param count An optional value indicating the maximum number of nodes to visit. 9936 */ 9937 function visitNodes<T extends Node>(nodes: NodeArray<T> | undefined, visitor: Visitor | undefined, test?: (node: Node) => boolean, start?: number, count?: number): NodeArray<T> | undefined; 9938 /** 9939 * Starts a new lexical environment and visits a statement list, ending the lexical environment 9940 * and merging hoisted declarations upon completion. 9941 */ 9942 function visitLexicalEnvironment(statements: NodeArray<Statement>, visitor: Visitor, context: TransformationContext, start?: number, ensureUseStrict?: boolean, nodesVisitor?: NodesVisitor): NodeArray<Statement>; 9943 /** 9944 * Starts a new lexical environment and visits a parameter list, suspending the lexical 9945 * environment upon completion. 9946 */ 9947 function visitParameterList(nodes: NodeArray<ParameterDeclaration>, visitor: Visitor, context: TransformationContext, nodesVisitor?: NodesVisitor): NodeArray<ParameterDeclaration>; 9948 function visitParameterList(nodes: NodeArray<ParameterDeclaration> | undefined, visitor: Visitor, context: TransformationContext, nodesVisitor?: NodesVisitor): NodeArray<ParameterDeclaration> | undefined; 9949 /** 9950 * Resumes a suspended lexical environment and visits a function body, ending the lexical 9951 * environment and merging hoisted declarations upon completion. 9952 */ 9953 function visitFunctionBody(node: FunctionBody, visitor: Visitor, context: TransformationContext): FunctionBody; 9954 /** 9955 * Resumes a suspended lexical environment and visits a function body, ending the lexical 9956 * environment and merging hoisted declarations upon completion. 9957 */ 9958 function visitFunctionBody(node: FunctionBody | undefined, visitor: Visitor, context: TransformationContext): FunctionBody | undefined; 9959 /** 9960 * Resumes a suspended lexical environment and visits a concise body, ending the lexical 9961 * environment and merging hoisted declarations upon completion. 9962 */ 9963 function visitFunctionBody(node: ConciseBody, visitor: Visitor, context: TransformationContext): ConciseBody; 9964 /** 9965 * Visits an iteration body, adding any block-scoped variables required by the transformation. 9966 */ 9967 function visitIterationBody(body: Statement, visitor: Visitor, context: TransformationContext): Statement; 9968 /** 9969 * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place. 9970 * 9971 * @param node The Node whose children will be visited. 9972 * @param visitor The callback used to visit each child. 9973 * @param context A lexical environment context for the visitor. 9974 */ 9975 function visitEachChild<T extends Node>(node: T, visitor: Visitor, context: TransformationContext): T; 9976 /** 9977 * Visits each child of a Node using the supplied visitor, possibly returning a new Node of the same kind in its place. 9978 * 9979 * @param node The Node whose children will be visited. 9980 * @param visitor The callback used to visit each child. 9981 * @param context A lexical environment context for the visitor. 9982 */ 9983 function visitEachChild<T extends Node>(node: T | undefined, visitor: Visitor, context: TransformationContext, nodesVisitor?: typeof visitNodes, tokenVisitor?: Visitor): T | undefined; 9984 function createSourceMapGenerator(host: EmitHost, file: string, sourceRoot: string, sourcesDirectoryPath: string, generatorOptions: SourceMapGeneratorOptions): SourceMapGenerator; 9985 interface SourceMapGeneratorOptions { 9986 extendedDiagnostics?: boolean; 9987 } 9988 function isInternalDeclaration(node: Node, currentSourceFile: SourceFile): boolean | 0 | undefined; 9989 const nullTransformationContext: TransformationContext; 9990 function getTsBuildInfoEmitOutputFilePath(options: CompilerOptions): string | undefined; 9991 function getTsBuildInfoEmitOutputFilePathForLinter(tsBuildInfoPath: string): string; 9992 function getOutputFileNames(commandLine: ParsedCommandLine, inputFileName: string, ignoreCase: boolean): readonly string[]; 9993 function createPrinter(printerOptions?: PrinterOptions, handlers?: PrintHandlers): Printer; 9994 function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean, configName?: string): string | undefined; 9995 function resolveTripleslashReference(moduleName: string, containingFile: string): string; 9996 function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost; 9997 function getPreEmitDiagnostics(program: Program, sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[]; 9998 function formatDiagnostics(diagnostics: readonly Diagnostic[], host: FormatDiagnosticsHost): string; 9999 function formatDiagnostic(diagnostic: Diagnostic, host: FormatDiagnosticsHost): string; 10000 function formatDiagnosticsWithColorAndContext(diagnostics: readonly Diagnostic[], host: FormatDiagnosticsHost): string; 10001 function flattenDiagnosticMessageText(diag: string | DiagnosticMessageChain | undefined, newLine: string, indent?: number): string; 10002 /** 10003 * Calculates the resulting resolution mode for some reference in some file - this is generally the explicitly 10004 * provided resolution mode in the reference, unless one is not present, in which case it is the mode of the containing file. 10005 */ 10006 function getModeForFileReference(ref: FileReference | string, containingFileMode: SourceFile["impliedNodeFormat"]): ts.ModuleKind.CommonJS | ts.ModuleKind.ESNext | undefined; 10007 /** 10008 * Calculates the final resolution mode for an import at some index within a file's imports list. This is generally the explicitly 10009 * defined mode of the import if provided, or, if not, the mode of the containing file (with some exceptions: import=require is always commonjs, dynamic import is always esm). 10010 * If you have an actual import node, prefer using getModeForUsageLocation on the reference string node. 10011 * @param file File to fetch the resolution mode within 10012 * @param index Index into the file's complete resolution list to get the resolution of - this is a concatenation of the file's imports and module augmentations 10013 */ 10014 function getModeForResolutionAtIndex(file: SourceFile, index: number): ModuleKind.CommonJS | ModuleKind.ESNext | undefined; 10015 /** 10016 * Calculates the final resolution mode for a given module reference node. This is generally the explicitly provided resolution mode, if 10017 * one exists, or the mode of the containing source file. (Excepting import=require, which is always commonjs, and dynamic import, which is always esm). 10018 * Notably, this function always returns `undefined` if the containing file has an `undefined` `impliedNodeFormat` - this field is only set when 10019 * `moduleResolution` is `node16`+. 10020 * @param file The file the import or import-like reference is contained within 10021 * @param usage The module reference string 10022 * @returns The final resolution mode of the import 10023 */ 10024 function getModeForUsageLocation(file: { 10025 impliedNodeFormat?: SourceFile["impliedNodeFormat"]; 10026 }, usage: StringLiteralLike): ts.ModuleKind.CommonJS | ts.ModuleKind.ESNext | undefined; 10027 function getConfigFileParsingDiagnostics(configFileParseResult: ParsedCommandLine): readonly Diagnostic[]; 10028 /** 10029 * A function for determining if a given file is esm or cjs format, assuming modern node module resolution rules, as configured by the 10030 * `options` parameter. 10031 * 10032 * @param fileName The normalized absolute path to check the format of (it need not exist on disk) 10033 * @param [packageJsonInfoCache] A cache for package file lookups - it's best to have a cache when this function is called often 10034 * @param host The ModuleResolutionHost which can perform the filesystem lookups for package json data 10035 * @param options The compiler options to perform the analysis under - relevant options are `moduleResolution` and `traceResolution` 10036 * @returns `undefined` if the path has no relevant implied format, `ModuleKind.ESNext` for esm format, and `ModuleKind.CommonJS` for cjs format 10037 */ 10038 function getImpliedNodeFormatForFile(fileName: Path, packageJsonInfoCache: PackageJsonInfoCache | undefined, host: ModuleResolutionHost, options: CompilerOptions): ModuleKind.ESNext | ModuleKind.CommonJS | undefined; 10039 /** 10040 * Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions' 10041 * that represent a compilation unit. 10042 * 10043 * Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and 10044 * triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in. 10045 * 10046 * @param createProgramOptions - The options for creating a program. 10047 * @returns A 'Program' object. 10048 */ 10049 function createProgram(createProgramOptions: CreateProgramOptions): Program; 10050 /** 10051 * Create a new 'Program' instance. A Program is an immutable collection of 'SourceFile's and a 'CompilerOptions' 10052 * that represent a compilation unit. 10053 * 10054 * Creating a program proceeds from a set of root files, expanding the set of inputs by following imports and 10055 * triple-slash-reference-path directives transitively. '@types' and triple-slash-reference-types are also pulled in. 10056 * 10057 * @param rootNames - A set of root files. 10058 * @param options - The compiler options which should be used. 10059 * @param host - The host interacts with the underlying file system. 10060 * @param oldProgram - Reuses an old program structure. 10061 * @param configFileParsingDiagnostics - error during config file parsing 10062 * @returns A 'Program' object. 10063 */ 10064 function createProgram(rootNames: readonly string[], options: CompilerOptions, host?: CompilerHost, oldProgram?: Program, configFileParsingDiagnostics?: readonly Diagnostic[]): Program; 10065 /** 10066 * Returns the target config filename of a project reference. 10067 * Note: The file might not exist. 10068 */ 10069 function resolveProjectReferencePath(ref: ProjectReference): ResolvedConfigFileName; 10070 /** @deprecated */ function resolveProjectReferencePath(host: ResolveProjectReferencePathHost, ref: ProjectReference): ResolvedConfigFileName; 10071 interface FormatDiagnosticsHost { 10072 getCurrentDirectory(): string; 10073 getCanonicalFileName(fileName: string): string; 10074 getNewLine(): string; 10075 } 10076 /** @deprecated */ interface ResolveProjectReferencePathHost { 10077 fileExists(fileName: string): boolean; 10078 } 10079 interface EmitOutput { 10080 outputFiles: OutputFile[]; 10081 emitSkipped: boolean; 10082 } 10083 interface OutputFile { 10084 name: string; 10085 writeByteOrderMark: boolean; 10086 text: string; 10087 } 10088 /** 10089 * Create the builder to manage semantic diagnostics and cache them 10090 */ 10091 function createSemanticDiagnosticsBuilderProgram(newProgram: Program, host: BuilderProgramHost, oldProgram?: SemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): SemanticDiagnosticsBuilderProgram; 10092 function createSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: SemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): SemanticDiagnosticsBuilderProgram; 10093 /** 10094 * Create the builder that can handle the changes in program and iterate through changed files 10095 * to emit the those files and manage semantic diagnostics cache as well 10096 */ 10097 function createEmitAndSemanticDiagnosticsBuilderProgram(newProgram: Program, host: BuilderProgramHost, oldProgram?: EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): EmitAndSemanticDiagnosticsBuilderProgram; 10098 function createEmitAndSemanticDiagnosticsBuilderProgram(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): EmitAndSemanticDiagnosticsBuilderProgram; 10099 function createEmitAndSemanticDiagnosticsBuilderProgramForArkTs(newProgramOrRootNames: Program | readonly string[] | undefined, hostOrOptions: BuilderProgramHost | CompilerOptions | undefined, oldProgramOrHost?: CompilerHost | EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnosticsOrOldProgram?: readonly Diagnostic[] | EmitAndSemanticDiagnosticsBuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): EmitAndSemanticDiagnosticsBuilderProgram; 10100 /** 10101 * Creates a builder thats just abstraction over program and can be used with watch 10102 */ 10103 function createAbstractBuilder(newProgram: Program, host: BuilderProgramHost, oldProgram?: BuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[]): BuilderProgram; 10104 function createAbstractBuilder(rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: BuilderProgram, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[]): BuilderProgram; 10105 type AffectedFileResult<T> = { 10106 result: T; 10107 affected: SourceFile | Program; 10108 } | undefined; 10109 interface BuilderProgramHost { 10110 /** 10111 * return true if file names are treated with case sensitivity 10112 */ 10113 useCaseSensitiveFileNames(): boolean; 10114 /** 10115 * If provided this would be used this hash instead of actual file shape text for detecting changes 10116 */ 10117 createHash?: (data: string) => string; 10118 /** 10119 * When emit or emitNextAffectedFile are called without writeFile, 10120 * this callback if present would be used to write files 10121 */ 10122 writeFile?: WriteFileCallback; 10123 } 10124 /** 10125 * Builder to manage the program state changes 10126 */ 10127 interface BuilderProgram { 10128 /** 10129 * Returns current program 10130 */ 10131 getProgram(): Program; 10132 /** 10133 * Get compiler options of the program 10134 */ 10135 getCompilerOptions(): CompilerOptions; 10136 /** 10137 * Get the source file in the program with file name 10138 */ 10139 getSourceFile(fileName: string): SourceFile | undefined; 10140 /** 10141 * Get a list of files in the program 10142 */ 10143 getSourceFiles(): readonly SourceFile[]; 10144 /** 10145 * Get the diagnostics for compiler options 10146 */ 10147 getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[]; 10148 /** 10149 * Get the diagnostics that dont belong to any file 10150 */ 10151 getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[]; 10152 /** 10153 * Get the diagnostics from config file parsing 10154 */ 10155 getConfigFileParsingDiagnostics(): readonly Diagnostic[]; 10156 /** 10157 * Get the syntax diagnostics, for all source files if source file is not supplied 10158 */ 10159 getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[]; 10160 /** 10161 * Get the declaration diagnostics, for all source files if source file is not supplied 10162 */ 10163 getDeclarationDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly DiagnosticWithLocation[]; 10164 /** 10165 * Get all the dependencies of the file 10166 */ 10167 getAllDependencies(sourceFile: SourceFile): readonly string[]; 10168 /** 10169 * Gets the semantic diagnostics from the program corresponding to this state of file (if provided) or whole program 10170 * The semantic diagnostics are cached and managed here 10171 * Note that it is assumed that when asked about semantic diagnostics through this API, 10172 * the file has been taken out of affected files so it is safe to use cache or get from program and cache the diagnostics 10173 * In case of SemanticDiagnosticsBuilderProgram if the source file is not provided, 10174 * it will iterate through all the affected files, to ensure that cache stays valid and yet provide a way to get all semantic diagnostics 10175 */ 10176 getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[]; 10177 /** 10178 * Emits the JavaScript and declaration files. 10179 * When targetSource file is specified, emits the files corresponding to that source file, 10180 * otherwise for the whole program. 10181 * In case of EmitAndSemanticDiagnosticsBuilderProgram, when targetSourceFile is specified, 10182 * it is assumed that that file is handled from affected file list. If targetSourceFile is not specified, 10183 * it will only emit all the affected files instead of whole program 10184 * 10185 * The first of writeFile if provided, writeFile of BuilderProgramHost if provided, writeFile of compiler host 10186 * in that order would be used to write the files 10187 */ 10188 emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult; 10189 /** 10190 * Get the current directory of the program 10191 */ 10192 getCurrentDirectory(): string; 10193 isFileUpdateInConstEnumCache?(sourceFile: SourceFile): boolean; 10194 builderProgramForLinter?: EmitAndSemanticDiagnosticsBuilderProgram; 10195 } 10196 /** 10197 * The builder that caches the semantic diagnostics for the program and handles the changed files and affected files 10198 */ 10199 interface SemanticDiagnosticsBuilderProgram extends BuilderProgram { 10200 /** 10201 * Gets the semantic diagnostics from the program for the next affected file and caches it 10202 * Returns undefined if the iteration is complete 10203 */ 10204 getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult<readonly Diagnostic[]>; 10205 } 10206 /** 10207 * The builder that can handle the changes in program and iterate through changed file to emit the files 10208 * The semantic diagnostics are cached per file and managed by clearing for the changed/affected files 10209 */ 10210 interface EmitAndSemanticDiagnosticsBuilderProgram extends SemanticDiagnosticsBuilderProgram { 10211 /** 10212 * Emits the next affected file's emit result (EmitResult and sourceFiles emitted) or returns undefined if iteration is complete 10213 * The first of writeFile if provided, writeFile of BuilderProgramHost if provided, writeFile of compiler host 10214 * in that order would be used to write the files 10215 */ 10216 emitNextAffectedFile(writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): AffectedFileResult<EmitResult>; 10217 } 10218 function readBuilderProgram(compilerOptions: CompilerOptions, host: ReadBuildProgramHost, isForLinter?: boolean): ts.EmitAndSemanticDiagnosticsBuilderProgram | undefined; 10219 function createIncrementalCompilerHost(options: CompilerOptions, system?: ts.System): CompilerHost; 10220 function createIncrementalProgram<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>({ rootNames, options, configFileParsingDiagnostics, projectReferences, host, createProgram }: IncrementalProgramOptions<T>): T; 10221 function createIncrementalProgramForArkTs({ rootNames, options, configFileParsingDiagnostics, projectReferences, host }: IncrementalProgramOptions<EmitAndSemanticDiagnosticsBuilderProgram>): EmitAndSemanticDiagnosticsBuilderProgram; 10222 /** 10223 * Create the watch compiler host for either configFile or fileNames and its options 10224 */ 10225 function createWatchCompilerHost<T extends BuilderProgram>(configFileName: string, optionsToExtend: CompilerOptions | undefined, system: System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter, watchOptionsToExtend?: WatchOptions, extraFileExtensions?: readonly FileExtensionInfo[]): WatchCompilerHostOfConfigFile<T>; 10226 function createWatchCompilerHost<T extends BuilderProgram>(rootFiles: string[], options: CompilerOptions, system: System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter, projectReferences?: readonly ProjectReference[], watchOptions?: WatchOptions): WatchCompilerHostOfFilesAndCompilerOptions<T>; 10227 /** 10228 * Creates the watch from the host for root files and compiler options 10229 */ 10230 function createWatchProgram<T extends BuilderProgram>(host: WatchCompilerHostOfFilesAndCompilerOptions<T>): WatchOfFilesAndCompilerOptions<T>; 10231 /** 10232 * Creates the watch from the host for config file 10233 */ 10234 function createWatchProgram<T extends BuilderProgram>(host: WatchCompilerHostOfConfigFile<T>): WatchOfConfigFile<T>; 10235 interface ReadBuildProgramHost { 10236 useCaseSensitiveFileNames(): boolean; 10237 getCurrentDirectory(): string; 10238 readFile(fileName: string): string | undefined; 10239 getLastCompiledProgram?(): Program; 10240 } 10241 interface IncrementalProgramOptions<T extends BuilderProgram> { 10242 rootNames: readonly string[]; 10243 options: CompilerOptions; 10244 configFileParsingDiagnostics?: readonly Diagnostic[]; 10245 projectReferences?: readonly ProjectReference[]; 10246 host?: CompilerHost; 10247 createProgram?: CreateProgram<T>; 10248 } 10249 type WatchStatusReporter = (diagnostic: Diagnostic, newLine: string, options: CompilerOptions, errorCount?: number) => void; 10250 /** Create the program with rootNames and options, if they are undefined, oldProgram and new configFile diagnostics create new program */ 10251 type CreateProgram<T extends BuilderProgram> = (rootNames: readonly string[] | undefined, options: CompilerOptions | undefined, host?: CompilerHost, oldProgram?: T, configFileParsingDiagnostics?: readonly Diagnostic[], projectReferences?: readonly ProjectReference[] | undefined) => T; 10252 /** Host that has watch functionality used in --watch mode */ 10253 interface WatchHost { 10254 /** If provided, called with Diagnostic message that informs about change in watch status */ 10255 onWatchStatusChange?(diagnostic: Diagnostic, newLine: string, options: CompilerOptions, errorCount?: number): void; 10256 /** Used to watch changes in source files, missing files needed to update the program or config file */ 10257 watchFile(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher; 10258 /** Used to watch resolved module's failed lookup locations, config file specs, type roots where auto type reference directives are added */ 10259 watchDirectory(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher; 10260 /** If provided, will be used to set delayed compilation, so that multiple changes in short span are compiled together */ 10261 setTimeout?(callback: (...args: any[]) => void, ms: number, ...args: any[]): any; 10262 /** If provided, will be used to reset existing delayed compilation */ 10263 clearTimeout?(timeoutId: any): void; 10264 } 10265 interface ProgramHost<T extends BuilderProgram> { 10266 /** 10267 * Used to create the program when need for program creation or recreation detected 10268 */ 10269 createProgram: CreateProgram<T>; 10270 useCaseSensitiveFileNames(): boolean; 10271 getNewLine(): string; 10272 getCurrentDirectory(): string; 10273 getDefaultLibFileName(options: CompilerOptions): string; 10274 getDefaultLibLocation?(): string; 10275 createHash?(data: string): string; 10276 /** 10277 * Use to check file presence for source files and 10278 * if resolveModuleNames is not provided (complier is in charge of module resolution) then module files as well 10279 */ 10280 fileExists(path: string): boolean; 10281 /** 10282 * Use to read file text for source files and 10283 * if resolveModuleNames is not provided (complier is in charge of module resolution) then module files as well 10284 */ 10285 readFile(path: string, encoding?: string): string | undefined; 10286 /** If provided, used for module resolution as well as to handle directory structure */ 10287 directoryExists?(path: string): boolean; 10288 /** If provided, used in resolutions as well as handling directory structure */ 10289 getDirectories?(path: string): string[]; 10290 /** If provided, used to cache and handle directory structure modifications */ 10291 readDirectory?(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[]; 10292 /** Symbol links resolution */ 10293 realpath?(path: string): string; 10294 /** If provided would be used to write log about compilation */ 10295 trace?(s: string): void; 10296 /** If provided is used to get the environment variable */ 10297 getEnvironmentVariable?(name: string): string | undefined; 10298 /** If provided, used to resolve the module names, otherwise typescript's default module resolution */ 10299 resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[]; 10300 /** If provided, used to resolve type reference directives, otherwise typescript's default resolution */ 10301 resolveTypeReferenceDirectives?(typeReferenceDirectiveNames: string[] | readonly FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[]; 10302 /** If provided along with custom resolveModuleNames or resolveTypeReferenceDirectives, used to determine if unchanged file path needs to re-resolve modules/type reference directives */ 10303 hasInvalidatedResolutions?(filePath: Path): boolean; 10304 /** 10305 * Returns the module resolution cache used by a provided `resolveModuleNames` implementation so that any non-name module resolution operations (eg, package.json lookup) can reuse it 10306 */ 10307 getModuleResolutionCache?(): ModuleResolutionCache | undefined; 10308 } 10309 interface WatchCompilerHost<T extends BuilderProgram> extends ProgramHost<T>, WatchHost { 10310 /** Instead of using output d.ts file from project reference, use its source file */ 10311 useSourceOfProjectReferenceRedirect?(): boolean; 10312 /** If provided, use this method to get parsed command lines for referenced projects */ 10313 getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined; 10314 /** If provided, callback to invoke after every new program creation */ 10315 afterProgramCreate?(program: T): void; 10316 } 10317 /** 10318 * Host to create watch with root files and options 10319 */ 10320 interface WatchCompilerHostOfFilesAndCompilerOptions<T extends BuilderProgram> extends WatchCompilerHost<T> { 10321 /** root files to use to generate program */ 10322 rootFiles: string[]; 10323 /** Compiler options */ 10324 options: CompilerOptions; 10325 watchOptions?: WatchOptions; 10326 /** Project References */ 10327 projectReferences?: readonly ProjectReference[]; 10328 } 10329 /** 10330 * Host to create watch with config file 10331 */ 10332 interface WatchCompilerHostOfConfigFile<T extends BuilderProgram> extends WatchCompilerHost<T>, ConfigFileDiagnosticsReporter { 10333 /** Name of the config file to compile */ 10334 configFileName: string; 10335 /** Options to extend */ 10336 optionsToExtend?: CompilerOptions; 10337 watchOptionsToExtend?: WatchOptions; 10338 extraFileExtensions?: readonly FileExtensionInfo[]; 10339 /** 10340 * Used to generate source file names from the config file and its include, exclude, files rules 10341 * and also to cache the directory stucture 10342 */ 10343 readDirectory(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[]; 10344 } 10345 interface Watch<T> { 10346 /** Synchronize with host and get updated program */ 10347 getProgram(): T; 10348 /** Closes the watch */ 10349 close(): void; 10350 } 10351 /** 10352 * Creates the watch what generates program using the config file 10353 */ 10354 interface WatchOfConfigFile<T> extends Watch<T> { 10355 } 10356 /** 10357 * Creates the watch that generates program using the root files and compiler options 10358 */ 10359 interface WatchOfFilesAndCompilerOptions<T> extends Watch<T> { 10360 /** Updates the root files in the program, only if this is not config file compilation */ 10361 updateRootFileNames(fileNames: string[]): void; 10362 } 10363 /** 10364 * Create a function that reports watch status by writing to the system and handles the formating of the diagnostic 10365 */ 10366 function createBuilderStatusReporter(system: System, pretty?: boolean): DiagnosticReporter; 10367 function createSolutionBuilderHost<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>(system?: ts.System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportSolutionBuilderStatus?: DiagnosticReporter, reportErrorSummary?: ReportEmitErrorSummary): ts.SolutionBuilderHost<T>; 10368 function createSolutionBuilderWithWatchHost<T extends BuilderProgram = EmitAndSemanticDiagnosticsBuilderProgram>(system?: ts.System, createProgram?: CreateProgram<T>, reportDiagnostic?: DiagnosticReporter, reportSolutionBuilderStatus?: DiagnosticReporter, reportWatchStatus?: WatchStatusReporter): ts.SolutionBuilderWithWatchHost<T>; 10369 function createSolutionBuilder<T extends BuilderProgram>(host: SolutionBuilderHost<T>, rootNames: readonly string[], defaultOptions: BuildOptions): SolutionBuilder<T>; 10370 function createSolutionBuilderWithWatch<T extends BuilderProgram>(host: SolutionBuilderWithWatchHost<T>, rootNames: readonly string[], defaultOptions: BuildOptions, baseWatchOptions?: WatchOptions): SolutionBuilder<T>; 10371 interface BuildOptions { 10372 dry?: boolean; 10373 force?: boolean; 10374 verbose?: boolean; 10375 incremental?: boolean; 10376 assumeChangesOnlyAffectDirectDependencies?: boolean; 10377 traceResolution?: boolean; 10378 [option: string]: CompilerOptionsValue | undefined; 10379 } 10380 type ReportEmitErrorSummary = (errorCount: number, filesInError: (ReportFileInError | undefined)[]) => void; 10381 interface ReportFileInError { 10382 fileName: string; 10383 line: number; 10384 } 10385 interface SolutionBuilderHostBase<T extends BuilderProgram> extends ProgramHost<T> { 10386 createDirectory?(path: string): void; 10387 /** 10388 * Should provide create directory and writeFile if done of invalidatedProjects is not invoked with 10389 * writeFileCallback 10390 */ 10391 writeFile?(path: string, data: string, writeByteOrderMark?: boolean): void; 10392 getCustomTransformers?: (project: string) => CustomTransformers | undefined; 10393 getModifiedTime(fileName: string): Date | undefined; 10394 setModifiedTime(fileName: string, date: Date): void; 10395 deleteFile(fileName: string): void; 10396 getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined; 10397 reportDiagnostic: DiagnosticReporter; 10398 reportSolutionBuilderStatus: DiagnosticReporter; 10399 afterProgramEmitAndDiagnostics?(program: T): void; 10400 } 10401 interface SolutionBuilderHost<T extends BuilderProgram> extends SolutionBuilderHostBase<T> { 10402 reportErrorSummary?: ReportEmitErrorSummary; 10403 } 10404 interface SolutionBuilderWithWatchHost<T extends BuilderProgram> extends SolutionBuilderHostBase<T>, WatchHost { 10405 } 10406 interface SolutionBuilder<T extends BuilderProgram> { 10407 build(project?: string, cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, getCustomTransformers?: (project: string) => CustomTransformers): ExitStatus; 10408 clean(project?: string): ExitStatus; 10409 buildReferences(project: string, cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, getCustomTransformers?: (project: string) => CustomTransformers): ExitStatus; 10410 cleanReferences(project?: string): ExitStatus; 10411 getNextInvalidatedProject(cancellationToken?: CancellationToken): InvalidatedProject<T> | undefined; 10412 } 10413 enum InvalidatedProjectKind { 10414 Build = 0, 10415 UpdateBundle = 1, 10416 UpdateOutputFileStamps = 2 10417 } 10418 interface InvalidatedProjectBase { 10419 readonly kind: InvalidatedProjectKind; 10420 readonly project: ResolvedConfigFileName; 10421 /** 10422 * To dispose this project and ensure that all the necessary actions are taken and state is updated accordingly 10423 */ 10424 done(cancellationToken?: CancellationToken, writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): ExitStatus; 10425 getCompilerOptions(): CompilerOptions; 10426 getCurrentDirectory(): string; 10427 } 10428 interface UpdateOutputFileStampsProject extends InvalidatedProjectBase { 10429 readonly kind: InvalidatedProjectKind.UpdateOutputFileStamps; 10430 updateOutputFileStatmps(): void; 10431 } 10432 interface BuildInvalidedProject<T extends BuilderProgram> extends InvalidatedProjectBase { 10433 readonly kind: InvalidatedProjectKind.Build; 10434 getBuilderProgram(): T | undefined; 10435 getProgram(): Program | undefined; 10436 getSourceFile(fileName: string): SourceFile | undefined; 10437 getSourceFiles(): readonly SourceFile[]; 10438 getOptionsDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[]; 10439 getGlobalDiagnostics(cancellationToken?: CancellationToken): readonly Diagnostic[]; 10440 getConfigFileParsingDiagnostics(): readonly Diagnostic[]; 10441 getSyntacticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[]; 10442 getAllDependencies(sourceFile: SourceFile): readonly string[]; 10443 getSemanticDiagnostics(sourceFile?: SourceFile, cancellationToken?: CancellationToken): readonly Diagnostic[]; 10444 getSemanticDiagnosticsOfNextAffectedFile(cancellationToken?: CancellationToken, ignoreSourceFile?: (sourceFile: SourceFile) => boolean): AffectedFileResult<readonly Diagnostic[]>; 10445 emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback, cancellationToken?: CancellationToken, emitOnlyDtsFiles?: boolean, customTransformers?: CustomTransformers): EmitResult | undefined; 10446 } 10447 interface UpdateBundleProject<T extends BuilderProgram> extends InvalidatedProjectBase { 10448 readonly kind: InvalidatedProjectKind.UpdateBundle; 10449 emit(writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): EmitResult | BuildInvalidedProject<T> | undefined; 10450 } 10451 type InvalidatedProject<T extends BuilderProgram> = UpdateOutputFileStampsProject | BuildInvalidedProject<T> | UpdateBundleProject<T>; 10452 function getDefaultFormatCodeSettings(newLineCharacter?: string): FormatCodeSettings; 10453 /** 10454 * Represents an immutable snapshot of a script at a specified time.Once acquired, the 10455 * snapshot is observably immutable. i.e. the same calls with the same parameters will return 10456 * the same values. 10457 */ 10458 interface IScriptSnapshot { 10459 /** Gets a portion of the script snapshot specified by [start, end). */ 10460 getText(start: number, end: number): string; 10461 /** Gets the length of this script snapshot. */ 10462 getLength(): number; 10463 /** 10464 * Gets the TextChangeRange that describe how the text changed between this text and 10465 * an older version. This information is used by the incremental parser to determine 10466 * what sections of the script need to be re-parsed. 'undefined' can be returned if the 10467 * change range cannot be determined. However, in that case, incremental parsing will 10468 * not happen and the entire document will be re - parsed. 10469 */ 10470 getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange | undefined; 10471 /** Releases all resources held by this script snapshot */ 10472 dispose?(): void; 10473 } 10474 namespace ScriptSnapshot { 10475 function fromString(text: string): IScriptSnapshot; 10476 } 10477 interface PreProcessedFileInfo { 10478 referencedFiles: FileReference[]; 10479 typeReferenceDirectives: FileReference[]; 10480 libReferenceDirectives: FileReference[]; 10481 importedFiles: FileReference[]; 10482 ambientExternalModules?: string[]; 10483 isLibFile: boolean; 10484 } 10485 interface HostCancellationToken { 10486 isCancellationRequested(): boolean; 10487 } 10488 interface InstallPackageOptions { 10489 fileName: Path; 10490 packageName: string; 10491 } 10492 interface PerformanceEvent { 10493 kind: "UpdateGraph" | "CreatePackageJsonAutoImportProvider"; 10494 durationMs: number; 10495 } 10496 enum LanguageServiceMode { 10497 Semantic = 0, 10498 PartialSemantic = 1, 10499 Syntactic = 2 10500 } 10501 interface IncompleteCompletionsCache { 10502 get(): CompletionInfo | undefined; 10503 set(response: CompletionInfo): void; 10504 clear(): void; 10505 } 10506 interface LanguageServiceHost extends GetEffectiveTypeRootsHost, MinimalResolutionCacheHost { 10507 getCompilationSettings(): CompilerOptions; 10508 getNewLine?(): string; 10509 getProjectVersion?(): string; 10510 getScriptFileNames(): string[]; 10511 getScriptKind?(fileName: string): ScriptKind; 10512 getScriptVersion(fileName: string): string; 10513 getScriptSnapshot(fileName: string): IScriptSnapshot | undefined; 10514 getProjectReferences?(): readonly ProjectReference[] | undefined; 10515 getLocalizedDiagnosticMessages?(): any; 10516 getCancellationToken?(): HostCancellationToken; 10517 getCurrentDirectory(): string; 10518 getDefaultLibFileName(options: CompilerOptions): string; 10519 log?(s: string): void; 10520 trace?(s: string): void; 10521 error?(s: string): void; 10522 useCaseSensitiveFileNames?(): boolean; 10523 readDirectory?(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[]; 10524 realpath?(path: string): string; 10525 readFile(path: string, encoding?: string): string | undefined; 10526 fileExists(path: string): boolean; 10527 getTypeRootsVersion?(): number; 10528 resolveModuleNames?(moduleNames: string[], containingFile: string, reusedNames: string[] | undefined, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingSourceFile?: SourceFile): (ResolvedModule | undefined)[]; 10529 getResolvedModuleWithFailedLookupLocationsFromCache?(modulename: string, containingFile: string, resolutionMode?: ModuleKind.CommonJS | ModuleKind.ESNext): ResolvedModuleWithFailedLookupLocations | undefined; 10530 resolveTypeReferenceDirectives?(typeDirectiveNames: string[] | FileReference[], containingFile: string, redirectedReference: ResolvedProjectReference | undefined, options: CompilerOptions, containingFileMode?: SourceFile["impliedNodeFormat"] | undefined): (ResolvedTypeReferenceDirective | undefined)[]; 10531 getDirectories?(directoryName: string): string[]; 10532 /** 10533 * Gets a set of custom transformers to use during emit. 10534 */ 10535 getCustomTransformers?(): CustomTransformers | undefined; 10536 isKnownTypesPackageName?(name: string): boolean; 10537 installPackage?(options: InstallPackageOptions): Promise<ApplyCodeActionCommandResult>; 10538 writeFile?(fileName: string, content: string): void; 10539 getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined; 10540 getJsDocNodeCheckedConfig?(jsDocFileCheckInfo: FileCheckModuleInfo, symbolSourceFilePath: string): JsDocNodeCheckConfig; 10541 getJsDocNodeConditionCheckedResult?(jsDocFileCheckedInfo: FileCheckModuleInfo, jsDocs: JsDocTagInfo[]): ConditionCheckResult; 10542 getFileCheckedModuleInfo?(containFilePath: string): FileCheckModuleInfo; 10543 shouldCompletionSortCustom?: boolean; 10544 uiProps?: Set<string>; 10545 clearProps?(): void; 10546 clearFileCache?(): void; 10547 isStaticSourceFile?(fileName: string): boolean; 10548 } 10549 type WithMetadata<T> = T & { 10550 metadata?: unknown; 10551 }; 10552 enum SemanticClassificationFormat { 10553 Original = "original", 10554 TwentyTwenty = "2020" 10555 } 10556 interface LanguageService { 10557 /** This is used as a part of restarting the language service. */ 10558 cleanupSemanticCache(): void; 10559 /** 10560 * Gets errors indicating invalid syntax in a file. 10561 * 10562 * In English, "this cdeo have, erorrs" is syntactically invalid because it has typos, 10563 * grammatical errors, and misplaced punctuation. Likewise, examples of syntax 10564 * errors in TypeScript are missing parentheses in an `if` statement, mismatched 10565 * curly braces, and using a reserved keyword as a variable name. 10566 * 10567 * These diagnostics are inexpensive to compute and don't require knowledge of 10568 * other files. Note that a non-empty result increases the likelihood of false positives 10569 * from `getSemanticDiagnostics`. 10570 * 10571 * While these represent the majority of syntax-related diagnostics, there are some 10572 * that require the type system, which will be present in `getSemanticDiagnostics`. 10573 * 10574 * @param fileName A path to the file you want syntactic diagnostics for 10575 */ 10576 getSyntacticDiagnostics(fileName: string): DiagnosticWithLocation[]; 10577 /** 10578 * Gets warnings or errors indicating type system issues in a given file. 10579 * Requesting semantic diagnostics may start up the type system and 10580 * run deferred work, so the first call may take longer than subsequent calls. 10581 * 10582 * Unlike the other get*Diagnostics functions, these diagnostics can potentially not 10583 * include a reference to a source file. Specifically, the first time this is called, 10584 * it will return global diagnostics with no associated location. 10585 * 10586 * To contrast the differences between semantic and syntactic diagnostics, consider the 10587 * sentence: "The sun is green." is syntactically correct; those are real English words with 10588 * correct sentence structure. However, it is semantically invalid, because it is not true. 10589 * 10590 * @param fileName A path to the file you want semantic diagnostics for 10591 */ 10592 getSemanticDiagnostics(fileName: string): Diagnostic[]; 10593 /** 10594 * Gets suggestion diagnostics for a specific file. These diagnostics tend to 10595 * proactively suggest refactors, as opposed to diagnostics that indicate 10596 * potentially incorrect runtime behavior. 10597 * 10598 * @param fileName A path to the file you want semantic diagnostics for 10599 */ 10600 getSuggestionDiagnostics(fileName: string): DiagnosticWithLocation[]; 10601 /** 10602 * Gets global diagnostics related to the program configuration and compiler options. 10603 */ 10604 getCompilerOptionsDiagnostics(): Diagnostic[]; 10605 /** @deprecated Use getEncodedSyntacticClassifications instead. */ 10606 getSyntacticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[]; 10607 getSyntacticClassifications(fileName: string, span: TextSpan, format: SemanticClassificationFormat): ClassifiedSpan[] | ClassifiedSpan2020[]; 10608 /** @deprecated Use getEncodedSemanticClassifications instead. */ 10609 getSemanticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[]; 10610 getSemanticClassifications(fileName: string, span: TextSpan, format: SemanticClassificationFormat): ClassifiedSpan[] | ClassifiedSpan2020[]; 10611 /** Encoded as triples of [start, length, ClassificationType]. */ 10612 getEncodedSyntacticClassifications(fileName: string, span: TextSpan): Classifications; 10613 /** 10614 * Gets semantic highlights information for a particular file. Has two formats, an older 10615 * version used by VS and a format used by VS Code. 10616 * 10617 * @param fileName The path to the file 10618 * @param position A text span to return results within 10619 * @param format Which format to use, defaults to "original" 10620 * @returns a number array encoded as triples of [start, length, ClassificationType, ...]. 10621 */ 10622 getEncodedSemanticClassifications(fileName: string, span: TextSpan, format?: SemanticClassificationFormat): Classifications; 10623 /** 10624 * Gets completion entries at a particular position in a file. 10625 * 10626 * @param fileName The path to the file 10627 * @param position A zero-based index of the character where you want the entries 10628 * @param options An object describing how the request was triggered and what kinds 10629 * of code actions can be returned with the completions. 10630 * @param formattingSettings settings needed for calling formatting functions. 10631 */ 10632 getCompletionsAtPosition(fileName: string, position: number, options: GetCompletionsAtPositionOptions | undefined, formattingSettings?: FormatCodeSettings): WithMetadata<CompletionInfo> | undefined; 10633 /** 10634 * Gets the extended details for a completion entry retrieved from `getCompletionsAtPosition`. 10635 * 10636 * @param fileName The path to the file 10637 * @param position A zero based index of the character where you want the entries 10638 * @param entryName The `name` from an existing completion which came from `getCompletionsAtPosition` 10639 * @param formatOptions How should code samples in the completions be formatted, can be undefined for backwards compatibility 10640 * @param source `source` property from the completion entry 10641 * @param preferences User settings, can be undefined for backwards compatibility 10642 * @param data `data` property from the completion entry 10643 */ 10644 getCompletionEntryDetails(fileName: string, position: number, entryName: string, formatOptions: FormatCodeOptions | FormatCodeSettings | undefined, source: string | undefined, preferences: UserPreferences | undefined, data: CompletionEntryData | undefined): CompletionEntryDetails | undefined; 10645 getCompletionEntrySymbol(fileName: string, position: number, name: string, source: string | undefined): Symbol | undefined; 10646 /** 10647 * Gets semantic information about the identifier at a particular position in a 10648 * file. Quick info is what you typically see when you hover in an editor. 10649 * 10650 * @param fileName The path to the file 10651 * @param position A zero-based index of the character where you want the quick info 10652 */ 10653 getQuickInfoAtPosition(fileName: string, position: number): QuickInfo | undefined; 10654 getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): TextSpan | undefined; 10655 getBreakpointStatementAtPosition(fileName: string, position: number): TextSpan | undefined; 10656 getSignatureHelpItems(fileName: string, position: number, options: SignatureHelpItemsOptions | undefined): SignatureHelpItems | undefined; 10657 getRenameInfo(fileName: string, position: number, preferences: UserPreferences): RenameInfo; 10658 /** @deprecated Use the signature with `UserPreferences` instead. */ 10659 getRenameInfo(fileName: string, position: number, options?: RenameInfoOptions): RenameInfo; 10660 findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean, providePrefixAndSuffixTextForRename?: boolean): readonly RenameLocation[] | undefined; 10661 getSmartSelectionRange(fileName: string, position: number): SelectionRange; 10662 getDefinitionAtPosition(fileName: string, position: number): readonly DefinitionInfo[] | undefined; 10663 getDefinitionAndBoundSpan(fileName: string, position: number): DefinitionInfoAndBoundSpan | undefined; 10664 getTypeDefinitionAtPosition(fileName: string, position: number): readonly DefinitionInfo[] | undefined; 10665 getImplementationAtPosition(fileName: string, position: number): readonly ImplementationLocation[] | undefined; 10666 getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[] | undefined; 10667 findReferences(fileName: string, position: number): ReferencedSymbol[] | undefined; 10668 getDocumentHighlights(fileName: string, position: number, filesToSearch: string[]): DocumentHighlights[] | undefined; 10669 getFileReferences(fileName: string): ReferenceEntry[]; 10670 /** @deprecated */ 10671 getOccurrencesAtPosition(fileName: string, position: number): readonly ReferenceEntry[] | undefined; 10672 getNavigateToItems(searchValue: string, maxResultCount?: number, fileName?: string, excludeDtsFiles?: boolean): NavigateToItem[]; 10673 getNavigationBarItems(fileName: string): NavigationBarItem[]; 10674 getNavigationTree(fileName: string): NavigationTree; 10675 prepareCallHierarchy(fileName: string, position: number): CallHierarchyItem | CallHierarchyItem[] | undefined; 10676 provideCallHierarchyIncomingCalls(fileName: string, position: number): CallHierarchyIncomingCall[]; 10677 provideCallHierarchyOutgoingCalls(fileName: string, position: number): CallHierarchyOutgoingCall[]; 10678 provideInlayHints(fileName: string, span: TextSpan, preferences: UserPreferences | undefined): InlayHint[]; 10679 getOutliningSpans(fileName: string): OutliningSpan[]; 10680 getTodoComments(fileName: string, descriptors: TodoCommentDescriptor[]): TodoComment[]; 10681 getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[]; 10682 getIndentationAtPosition(fileName: string, position: number, options: EditorOptions | EditorSettings): number; 10683 getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; 10684 getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; 10685 getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions | FormatCodeSettings): TextChange[]; 10686 getDocCommentTemplateAtPosition(fileName: string, position: number, options?: DocCommentTemplateOptions): TextInsertion | undefined; 10687 isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): boolean; 10688 /** 10689 * This will return a defined result if the position is after the `>` of the opening tag, or somewhere in the text, of a JSXElement with no closing tag. 10690 * Editors should call this after `>` is typed. 10691 */ 10692 getJsxClosingTagAtPosition(fileName: string, position: number): JsxClosingTagInfo | undefined; 10693 getSpanOfEnclosingComment(fileName: string, position: number, onlyMultiLine: boolean): TextSpan | undefined; 10694 toLineColumnOffset?(fileName: string, position: number): LineAndCharacter; 10695 getCodeFixesAtPosition(fileName: string, start: number, end: number, errorCodes: readonly number[], formatOptions: FormatCodeSettings, preferences: UserPreferences): readonly CodeFixAction[]; 10696 getCombinedCodeFix(scope: CombinedCodeFixScope, fixId: {}, formatOptions: FormatCodeSettings, preferences: UserPreferences): CombinedCodeActions; 10697 applyCodeActionCommand(action: CodeActionCommand, formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult>; 10698 applyCodeActionCommand(action: CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult[]>; 10699 applyCodeActionCommand(action: CodeActionCommand | CodeActionCommand[], formatSettings?: FormatCodeSettings): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>; 10700 /** @deprecated `fileName` will be ignored */ 10701 applyCodeActionCommand(fileName: string, action: CodeActionCommand): Promise<ApplyCodeActionCommandResult>; 10702 /** @deprecated `fileName` will be ignored */ 10703 applyCodeActionCommand(fileName: string, action: CodeActionCommand[]): Promise<ApplyCodeActionCommandResult[]>; 10704 /** @deprecated `fileName` will be ignored */ 10705 applyCodeActionCommand(fileName: string, action: CodeActionCommand | CodeActionCommand[]): Promise<ApplyCodeActionCommandResult | ApplyCodeActionCommandResult[]>; 10706 getApplicableRefactors(fileName: string, positionOrRange: number | TextRange, preferences: UserPreferences | undefined, triggerReason?: RefactorTriggerReason, kind?: string): ApplicableRefactorInfo[]; 10707 getEditsForRefactor(fileName: string, formatOptions: FormatCodeSettings, positionOrRange: number | TextRange, refactorName: string, actionName: string, preferences: UserPreferences | undefined): RefactorEditInfo | undefined; 10708 organizeImports(args: OrganizeImportsArgs, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): readonly FileTextChanges[]; 10709 getEditsForFileRename(oldFilePath: string, newFilePath: string, formatOptions: FormatCodeSettings, preferences: UserPreferences | undefined): readonly FileTextChanges[]; 10710 getEmitOutput(fileName: string, emitOnlyDtsFiles?: boolean, forceDtsEmit?: boolean): EmitOutput; 10711 getProgram(): Program | undefined; 10712 getBuilderProgram(): BuilderProgram | undefined; 10713 toggleLineComment(fileName: string, textRange: TextRange): TextChange[]; 10714 toggleMultilineComment(fileName: string, textRange: TextRange): TextChange[]; 10715 commentSelection(fileName: string, textRange: TextRange): TextChange[]; 10716 uncommentSelection(fileName: string, textRange: TextRange): TextChange[]; 10717 dispose(): void; 10718 updateRootFiles?(rootFiles: string[]): void; 10719 getProps?(propsSwitch: boolean): string[] | Set<string>; 10720 } 10721 interface JsxClosingTagInfo { 10722 readonly newText: string; 10723 } 10724 interface CombinedCodeFixScope { 10725 type: "file"; 10726 fileName: string; 10727 } 10728 enum OrganizeImportsMode { 10729 All = "All", 10730 SortAndCombine = "SortAndCombine", 10731 RemoveUnused = "RemoveUnused" 10732 } 10733 interface OrganizeImportsArgs extends CombinedCodeFixScope { 10734 /** @deprecated Use `mode` instead */ 10735 skipDestructiveCodeActions?: boolean; 10736 mode?: OrganizeImportsMode; 10737 } 10738 type CompletionsTriggerCharacter = "." | '"' | "'" | "`" | "/" | "@" | "<" | "#" | " "; 10739 enum CompletionTriggerKind { 10740 /** Completion was triggered by typing an identifier, manual invocation (e.g Ctrl+Space) or via API. */ 10741 Invoked = 1, 10742 /** Completion was triggered by a trigger character. */ 10743 TriggerCharacter = 2, 10744 /** Completion was re-triggered as the current completion list is incomplete. */ 10745 TriggerForIncompleteCompletions = 3 10746 } 10747 interface GetCompletionsAtPositionOptions extends UserPreferences { 10748 /** 10749 * If the editor is asking for completions because a certain character was typed 10750 * (as opposed to when the user explicitly requested them) this should be set. 10751 */ 10752 triggerCharacter?: CompletionsTriggerCharacter; 10753 triggerKind?: CompletionTriggerKind; 10754 /** @deprecated Use includeCompletionsForModuleExports */ 10755 includeExternalModuleExports?: boolean; 10756 /** @deprecated Use includeCompletionsWithInsertText */ 10757 includeInsertTextCompletions?: boolean; 10758 } 10759 type SignatureHelpTriggerCharacter = "," | "(" | "<"; 10760 type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")"; 10761 interface SignatureHelpItemsOptions { 10762 triggerReason?: SignatureHelpTriggerReason; 10763 } 10764 type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason; 10765 /** 10766 * Signals that the user manually requested signature help. 10767 * The language service will unconditionally attempt to provide a result. 10768 */ 10769 interface SignatureHelpInvokedReason { 10770 kind: "invoked"; 10771 triggerCharacter?: undefined; 10772 } 10773 /** 10774 * Signals that the signature help request came from a user typing a character. 10775 * Depending on the character and the syntactic context, the request may or may not be served a result. 10776 */ 10777 interface SignatureHelpCharacterTypedReason { 10778 kind: "characterTyped"; 10779 /** 10780 * Character that was responsible for triggering signature help. 10781 */ 10782 triggerCharacter: SignatureHelpTriggerCharacter; 10783 } 10784 /** 10785 * Signals that this signature help request came from typing a character or moving the cursor. 10786 * This should only occur if a signature help session was already active and the editor needs to see if it should adjust. 10787 * The language service will unconditionally attempt to provide a result. 10788 * `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move. 10789 */ 10790 interface SignatureHelpRetriggeredReason { 10791 kind: "retrigger"; 10792 /** 10793 * Character that was responsible for triggering signature help. 10794 */ 10795 triggerCharacter?: SignatureHelpRetriggerCharacter; 10796 } 10797 interface ApplyCodeActionCommandResult { 10798 successMessage: string; 10799 } 10800 interface Classifications { 10801 spans: number[]; 10802 endOfLineState: EndOfLineState; 10803 } 10804 interface ClassifiedSpan { 10805 textSpan: TextSpan; 10806 classificationType: ClassificationTypeNames; 10807 } 10808 interface ClassifiedSpan2020 { 10809 textSpan: TextSpan; 10810 classificationType: number; 10811 } 10812 /** 10813 * Navigation bar interface designed for visual studio's dual-column layout. 10814 * This does not form a proper tree. 10815 * The navbar is returned as a list of top-level items, each of which has a list of child items. 10816 * Child items always have an empty array for their `childItems`. 10817 */ 10818 interface NavigationBarItem { 10819 text: string; 10820 kind: ScriptElementKind; 10821 kindModifiers: string; 10822 spans: TextSpan[]; 10823 childItems: NavigationBarItem[]; 10824 indent: number; 10825 bolded: boolean; 10826 grayed: boolean; 10827 } 10828 /** 10829 * Node in a tree of nested declarations in a file. 10830 * The top node is always a script or module node. 10831 */ 10832 interface NavigationTree { 10833 /** Name of the declaration, or a short description, e.g. "<class>". */ 10834 text: string; 10835 kind: ScriptElementKind; 10836 /** ScriptElementKindModifier separated by commas, e.g. "public,abstract" */ 10837 kindModifiers: string; 10838 /** 10839 * Spans of the nodes that generated this declaration. 10840 * There will be more than one if this is the result of merging. 10841 */ 10842 spans: TextSpan[]; 10843 nameSpan: TextSpan | undefined; 10844 /** Present if non-empty */ 10845 childItems?: NavigationTree[]; 10846 } 10847 interface CallHierarchyItem { 10848 name: string; 10849 kind: ScriptElementKind; 10850 kindModifiers?: string; 10851 file: string; 10852 span: TextSpan; 10853 selectionSpan: TextSpan; 10854 containerName?: string; 10855 } 10856 interface CallHierarchyIncomingCall { 10857 from: CallHierarchyItem; 10858 fromSpans: TextSpan[]; 10859 } 10860 interface CallHierarchyOutgoingCall { 10861 to: CallHierarchyItem; 10862 fromSpans: TextSpan[]; 10863 } 10864 enum InlayHintKind { 10865 Type = "Type", 10866 Parameter = "Parameter", 10867 Enum = "Enum" 10868 } 10869 interface InlayHint { 10870 text: string; 10871 position: number; 10872 kind: InlayHintKind; 10873 whitespaceBefore?: boolean; 10874 whitespaceAfter?: boolean; 10875 } 10876 interface TodoCommentDescriptor { 10877 text: string; 10878 priority: number; 10879 } 10880 interface TodoComment { 10881 descriptor: TodoCommentDescriptor; 10882 message: string; 10883 position: number; 10884 } 10885 interface TextChange { 10886 span: TextSpan; 10887 newText: string; 10888 } 10889 interface FileTextChanges { 10890 fileName: string; 10891 textChanges: readonly TextChange[]; 10892 isNewFile?: boolean; 10893 } 10894 interface CodeAction { 10895 /** Description of the code action to display in the UI of the editor */ 10896 description: string; 10897 /** Text changes to apply to each file as part of the code action */ 10898 changes: FileTextChanges[]; 10899 /** 10900 * If the user accepts the code fix, the editor should send the action back in a `applyAction` request. 10901 * This allows the language service to have side effects (e.g. installing dependencies) upon a code fix. 10902 */ 10903 commands?: CodeActionCommand[]; 10904 } 10905 interface CodeFixAction extends CodeAction { 10906 /** Short name to identify the fix, for use by telemetry. */ 10907 fixName: string; 10908 /** 10909 * If present, one may call 'getCombinedCodeFix' with this fixId. 10910 * This may be omitted to indicate that the code fix can't be applied in a group. 10911 */ 10912 fixId?: {}; 10913 fixAllDescription?: string; 10914 } 10915 interface CombinedCodeActions { 10916 changes: readonly FileTextChanges[]; 10917 commands?: readonly CodeActionCommand[]; 10918 } 10919 type CodeActionCommand = InstallPackageAction; 10920 interface InstallPackageAction { 10921 } 10922 /** 10923 * A set of one or more available refactoring actions, grouped under a parent refactoring. 10924 */ 10925 interface ApplicableRefactorInfo { 10926 /** 10927 * The programmatic name of the refactoring 10928 */ 10929 name: string; 10930 /** 10931 * A description of this refactoring category to show to the user. 10932 * If the refactoring gets inlined (see below), this text will not be visible. 10933 */ 10934 description: string; 10935 /** 10936 * Inlineable refactorings can have their actions hoisted out to the top level 10937 * of a context menu. Non-inlineanable refactorings should always be shown inside 10938 * their parent grouping. 10939 * 10940 * If not specified, this value is assumed to be 'true' 10941 */ 10942 inlineable?: boolean; 10943 actions: RefactorActionInfo[]; 10944 } 10945 /** 10946 * Represents a single refactoring action - for example, the "Extract Method..." refactor might 10947 * offer several actions, each corresponding to a surround class or closure to extract into. 10948 */ 10949 interface RefactorActionInfo { 10950 /** 10951 * The programmatic name of the refactoring action 10952 */ 10953 name: string; 10954 /** 10955 * A description of this refactoring action to show to the user. 10956 * If the parent refactoring is inlined away, this will be the only text shown, 10957 * so this description should make sense by itself if the parent is inlineable=true 10958 */ 10959 description: string; 10960 /** 10961 * A message to show to the user if the refactoring cannot be applied in 10962 * the current context. 10963 */ 10964 notApplicableReason?: string; 10965 /** 10966 * The hierarchical dotted name of the refactor action. 10967 */ 10968 kind?: string; 10969 } 10970 /** 10971 * A set of edits to make in response to a refactor action, plus an optional 10972 * location where renaming should be invoked from 10973 */ 10974 interface RefactorEditInfo { 10975 edits: FileTextChanges[]; 10976 renameFilename?: string; 10977 renameLocation?: number; 10978 commands?: CodeActionCommand[]; 10979 } 10980 type RefactorTriggerReason = "implicit" | "invoked"; 10981 interface TextInsertion { 10982 newText: string; 10983 /** The position in newText the caret should point to after the insertion. */ 10984 caretOffset: number; 10985 } 10986 interface DocumentSpan { 10987 textSpan: TextSpan; 10988 fileName: string; 10989 /** 10990 * If the span represents a location that was remapped (e.g. via a .d.ts.map file), 10991 * then the original filename and span will be specified here 10992 */ 10993 originalTextSpan?: TextSpan; 10994 originalFileName?: string; 10995 /** 10996 * If DocumentSpan.textSpan is the span for name of the declaration, 10997 * then this is the span for relevant declaration 10998 */ 10999 contextSpan?: TextSpan; 11000 originalContextSpan?: TextSpan; 11001 } 11002 interface RenameLocation extends DocumentSpan { 11003 readonly prefixText?: string; 11004 readonly suffixText?: string; 11005 } 11006 interface ReferenceEntry extends DocumentSpan { 11007 isWriteAccess: boolean; 11008 isInString?: true; 11009 } 11010 interface ImplementationLocation extends DocumentSpan { 11011 kind: ScriptElementKind; 11012 displayParts: SymbolDisplayPart[]; 11013 } 11014 enum HighlightSpanKind { 11015 none = "none", 11016 definition = "definition", 11017 reference = "reference", 11018 writtenReference = "writtenReference" 11019 } 11020 interface HighlightSpan { 11021 fileName?: string; 11022 isInString?: true; 11023 textSpan: TextSpan; 11024 contextSpan?: TextSpan; 11025 kind: HighlightSpanKind; 11026 } 11027 interface NavigateToItem { 11028 name: string; 11029 kind: ScriptElementKind; 11030 kindModifiers: string; 11031 matchKind: "exact" | "prefix" | "substring" | "camelCase"; 11032 isCaseSensitive: boolean; 11033 fileName: string; 11034 textSpan: TextSpan; 11035 containerName: string; 11036 containerKind: ScriptElementKind; 11037 } 11038 enum IndentStyle { 11039 None = 0, 11040 Block = 1, 11041 Smart = 2 11042 } 11043 enum SemicolonPreference { 11044 Ignore = "ignore", 11045 Insert = "insert", 11046 Remove = "remove" 11047 } 11048 /** @deprecated - consider using EditorSettings instead */ 11049 interface EditorOptions { 11050 BaseIndentSize?: number; 11051 IndentSize: number; 11052 TabSize: number; 11053 NewLineCharacter: string; 11054 ConvertTabsToSpaces: boolean; 11055 IndentStyle: IndentStyle; 11056 } 11057 interface EditorSettings { 11058 baseIndentSize?: number; 11059 indentSize?: number; 11060 tabSize?: number; 11061 newLineCharacter?: string; 11062 convertTabsToSpaces?: boolean; 11063 indentStyle?: IndentStyle; 11064 trimTrailingWhitespace?: boolean; 11065 } 11066 /** @deprecated - consider using FormatCodeSettings instead */ 11067 interface FormatCodeOptions extends EditorOptions { 11068 InsertSpaceAfterCommaDelimiter: boolean; 11069 InsertSpaceAfterSemicolonInForStatements: boolean; 11070 InsertSpaceBeforeAndAfterBinaryOperators: boolean; 11071 InsertSpaceAfterConstructor?: boolean; 11072 InsertSpaceAfterKeywordsInControlFlowStatements: boolean; 11073 InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean; 11074 InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean; 11075 InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: boolean; 11076 InsertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean; 11077 InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: boolean; 11078 InsertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean; 11079 InsertSpaceAfterTypeAssertion?: boolean; 11080 InsertSpaceBeforeFunctionParenthesis?: boolean; 11081 PlaceOpenBraceOnNewLineForFunctions: boolean; 11082 PlaceOpenBraceOnNewLineForControlBlocks: boolean; 11083 insertSpaceBeforeTypeAnnotation?: boolean; 11084 } 11085 interface FormatCodeSettings extends EditorSettings { 11086 readonly insertSpaceAfterCommaDelimiter?: boolean; 11087 readonly insertSpaceAfterSemicolonInForStatements?: boolean; 11088 readonly insertSpaceBeforeAndAfterBinaryOperators?: boolean; 11089 readonly insertSpaceAfterConstructor?: boolean; 11090 readonly insertSpaceAfterKeywordsInControlFlowStatements?: boolean; 11091 readonly insertSpaceAfterFunctionKeywordForAnonymousFunctions?: boolean; 11092 readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis?: boolean; 11093 readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets?: boolean; 11094 readonly insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces?: boolean; 11095 readonly insertSpaceAfterOpeningAndBeforeClosingEmptyBraces?: boolean; 11096 readonly insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces?: boolean; 11097 readonly insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces?: boolean; 11098 readonly insertSpaceAfterTypeAssertion?: boolean; 11099 readonly insertSpaceBeforeFunctionParenthesis?: boolean; 11100 readonly placeOpenBraceOnNewLineForFunctions?: boolean; 11101 readonly placeOpenBraceOnNewLineForControlBlocks?: boolean; 11102 readonly insertSpaceBeforeTypeAnnotation?: boolean; 11103 readonly indentMultiLineObjectLiteralBeginningOnBlankLine?: boolean; 11104 readonly semicolons?: SemicolonPreference; 11105 } 11106 interface DefinitionInfo extends DocumentSpan { 11107 kind: ScriptElementKind; 11108 name: string; 11109 containerKind: ScriptElementKind; 11110 containerName: string; 11111 unverified?: boolean; 11112 } 11113 interface DefinitionInfoAndBoundSpan { 11114 definitions?: readonly DefinitionInfo[]; 11115 textSpan: TextSpan; 11116 } 11117 interface ReferencedSymbolDefinitionInfo extends DefinitionInfo { 11118 displayParts: SymbolDisplayPart[]; 11119 } 11120 interface ReferencedSymbol { 11121 definition: ReferencedSymbolDefinitionInfo; 11122 references: ReferencedSymbolEntry[]; 11123 } 11124 interface ReferencedSymbolEntry extends ReferenceEntry { 11125 isDefinition?: boolean; 11126 } 11127 enum SymbolDisplayPartKind { 11128 aliasName = 0, 11129 className = 1, 11130 enumName = 2, 11131 fieldName = 3, 11132 interfaceName = 4, 11133 keyword = 5, 11134 lineBreak = 6, 11135 numericLiteral = 7, 11136 stringLiteral = 8, 11137 localName = 9, 11138 methodName = 10, 11139 moduleName = 11, 11140 operator = 12, 11141 parameterName = 13, 11142 propertyName = 14, 11143 punctuation = 15, 11144 space = 16, 11145 text = 17, 11146 typeParameterName = 18, 11147 enumMemberName = 19, 11148 functionName = 20, 11149 regularExpressionLiteral = 21, 11150 link = 22, 11151 linkName = 23, 11152 linkText = 24 11153 } 11154 interface JSDocLinkDisplayPart extends SymbolDisplayPart { 11155 target: DocumentSpan; 11156 } 11157 interface JSDocTagInfo { 11158 name: string; 11159 text?: SymbolDisplayPart[] | string; 11160 index?: number; 11161 } 11162 interface QuickInfo { 11163 kind: ScriptElementKind; 11164 kindModifiers: string; 11165 textSpan: TextSpan; 11166 displayParts?: SymbolDisplayPart[]; 11167 documentation?: SymbolDisplayPart[]; 11168 tags?: JSDocTagInfo[]; 11169 } 11170 type RenameInfo = RenameInfoSuccess | RenameInfoFailure; 11171 interface RenameInfoSuccess { 11172 canRename: true; 11173 /** 11174 * File or directory to rename. 11175 * If set, `getEditsForFileRename` should be called instead of `findRenameLocations`. 11176 */ 11177 fileToRename?: string; 11178 displayName: string; 11179 fullDisplayName: string; 11180 kind: ScriptElementKind; 11181 kindModifiers: string; 11182 triggerSpan: TextSpan; 11183 } 11184 interface RenameInfoFailure { 11185 canRename: false; 11186 localizedErrorMessage: string; 11187 } 11188 /** 11189 * @deprecated Use `UserPreferences` instead. 11190 */ 11191 interface RenameInfoOptions { 11192 readonly allowRenameOfImportPath?: boolean; 11193 } 11194 interface DocCommentTemplateOptions { 11195 readonly generateReturnInDocTemplate?: boolean; 11196 } 11197 interface SignatureHelpParameter { 11198 name: string; 11199 documentation: SymbolDisplayPart[]; 11200 displayParts: SymbolDisplayPart[]; 11201 isOptional: boolean; 11202 isRest?: boolean; 11203 } 11204 interface SelectionRange { 11205 textSpan: TextSpan; 11206 parent?: SelectionRange; 11207 } 11208 /** 11209 * Represents a single signature to show in signature help. 11210 * The id is used for subsequent calls into the language service to ask questions about the 11211 * signature help item in the context of any documents that have been updated. i.e. after 11212 * an edit has happened, while signature help is still active, the host can ask important 11213 * questions like 'what parameter is the user currently contained within?'. 11214 */ 11215 interface SignatureHelpItem { 11216 isVariadic: boolean; 11217 prefixDisplayParts: SymbolDisplayPart[]; 11218 suffixDisplayParts: SymbolDisplayPart[]; 11219 separatorDisplayParts: SymbolDisplayPart[]; 11220 parameters: SignatureHelpParameter[]; 11221 documentation: SymbolDisplayPart[]; 11222 tags: JSDocTagInfo[]; 11223 } 11224 /** 11225 * Represents a set of signature help items, and the preferred item that should be selected. 11226 */ 11227 interface SignatureHelpItems { 11228 items: SignatureHelpItem[]; 11229 applicableSpan: TextSpan; 11230 selectedItemIndex: number; 11231 argumentIndex: number; 11232 argumentCount: number; 11233 } 11234 enum CompletionInfoFlags { 11235 None = 0, 11236 MayIncludeAutoImports = 1, 11237 IsImportStatementCompletion = 2, 11238 IsContinuation = 4, 11239 ResolvedModuleSpecifiers = 8, 11240 ResolvedModuleSpecifiersBeyondLimit = 16, 11241 MayIncludeMethodSnippets = 32 11242 } 11243 interface CompletionInfo { 11244 /** For performance telemetry. */ 11245 flags?: CompletionInfoFlags; 11246 /** Not true for all global completions. This will be true if the enclosing scope matches a few syntax kinds. See `isSnippetScope`. */ 11247 isGlobalCompletion: boolean; 11248 isMemberCompletion: boolean; 11249 /** 11250 * In the absence of `CompletionEntry["replacementSpan"]`, the editor may choose whether to use 11251 * this span or its default one. If `CompletionEntry["replacementSpan"]` is defined, that span 11252 * must be used to commit that completion entry. 11253 */ 11254 optionalReplacementSpan?: TextSpan; 11255 /** 11256 * true when the current location also allows for a new identifier 11257 */ 11258 isNewIdentifierLocation: boolean; 11259 /** 11260 * Indicates to client to continue requesting completions on subsequent keystrokes. 11261 */ 11262 isIncomplete?: true; 11263 entries: CompletionEntry[]; 11264 } 11265 interface CompletionEntryDataAutoImport { 11266 /** 11267 * The name of the property or export in the module's symbol table. Differs from the completion name 11268 * in the case of InternalSymbolName.ExportEquals and InternalSymbolName.Default. 11269 */ 11270 exportName: string; 11271 moduleSpecifier?: string; 11272 /** The file name declaring the export's module symbol, if it was an external module */ 11273 fileName?: string; 11274 /** The module name (with quotes stripped) of the export's module symbol, if it was an ambient module */ 11275 ambientModuleName?: string; 11276 /** True if the export was found in the package.json AutoImportProvider */ 11277 isPackageJsonImport?: true; 11278 } 11279 interface CompletionEntryDataUnresolved extends CompletionEntryDataAutoImport { 11280 /** The key in the `ExportMapCache` where the completion entry's `SymbolExportInfo[]` is found */ 11281 exportMapKey: string; 11282 } 11283 interface CompletionEntryDataResolved extends CompletionEntryDataAutoImport { 11284 moduleSpecifier: string; 11285 } 11286 type CompletionEntryData = CompletionEntryDataUnresolved | CompletionEntryDataResolved; 11287 interface CompletionEntry { 11288 name: string; 11289 kind: ScriptElementKind; 11290 kindModifiers?: string; 11291 sortText: string; 11292 insertText?: string; 11293 isSnippet?: true; 11294 /** 11295 * An optional span that indicates the text to be replaced by this completion item. 11296 * If present, this span should be used instead of the default one. 11297 * It will be set if the required span differs from the one generated by the default replacement behavior. 11298 */ 11299 replacementSpan?: TextSpan; 11300 hasAction?: true; 11301 source?: string; 11302 sourceDisplay?: SymbolDisplayPart[]; 11303 labelDetails?: CompletionEntryLabelDetails; 11304 isRecommended?: true; 11305 isFromUncheckedFile?: true; 11306 isPackageJsonImport?: true; 11307 isImportStatementCompletion?: true; 11308 /** 11309 * A property to be sent back to TS Server in the CompletionDetailsRequest, along with `name`, 11310 * that allows TS Server to look up the symbol represented by the completion item, disambiguating 11311 * items with the same name. Currently only defined for auto-import completions, but the type is 11312 * `unknown` in the protocol, so it can be changed as needed to support other kinds of completions. 11313 * The presence of this property should generally not be used to assume that this completion entry 11314 * is an auto-import. 11315 */ 11316 data?: CompletionEntryData; 11317 jsDoc?: JSDocTagInfo[]; 11318 displayParts?: SymbolDisplayPart[]; 11319 } 11320 interface CompletionEntryLabelDetails { 11321 detail?: string; 11322 description?: string; 11323 } 11324 interface CompletionEntryDetails { 11325 name: string; 11326 kind: ScriptElementKind; 11327 kindModifiers: string; 11328 displayParts: SymbolDisplayPart[]; 11329 documentation?: SymbolDisplayPart[]; 11330 tags?: JSDocTagInfo[]; 11331 codeActions?: CodeAction[]; 11332 /** @deprecated Use `sourceDisplay` instead. */ 11333 source?: SymbolDisplayPart[]; 11334 sourceDisplay?: SymbolDisplayPart[]; 11335 } 11336 interface OutliningSpan { 11337 /** The span of the document to actually collapse. */ 11338 textSpan: TextSpan; 11339 /** The span of the document to display when the user hovers over the collapsed span. */ 11340 hintSpan: TextSpan; 11341 /** The text to display in the editor for the collapsed region. */ 11342 bannerText: string; 11343 /** 11344 * Whether or not this region should be automatically collapsed when 11345 * the 'Collapse to Definitions' command is invoked. 11346 */ 11347 autoCollapse: boolean; 11348 /** 11349 * Classification of the contents of the span 11350 */ 11351 kind: OutliningSpanKind; 11352 } 11353 enum OutliningSpanKind { 11354 /** Single or multi-line comments */ 11355 Comment = "comment", 11356 /** Sections marked by '// #region' and '// #endregion' comments */ 11357 Region = "region", 11358 /** Declarations and expressions */ 11359 Code = "code", 11360 /** Contiguous blocks of import declarations */ 11361 Imports = "imports" 11362 } 11363 enum OutputFileType { 11364 JavaScript = 0, 11365 SourceMap = 1, 11366 Declaration = 2 11367 } 11368 enum EndOfLineState { 11369 None = 0, 11370 InMultiLineCommentTrivia = 1, 11371 InSingleQuoteStringLiteral = 2, 11372 InDoubleQuoteStringLiteral = 3, 11373 InTemplateHeadOrNoSubstitutionTemplate = 4, 11374 InTemplateMiddleOrTail = 5, 11375 InTemplateSubstitutionPosition = 6 11376 } 11377 enum TokenClass { 11378 Punctuation = 0, 11379 Keyword = 1, 11380 Operator = 2, 11381 Comment = 3, 11382 Whitespace = 4, 11383 Identifier = 5, 11384 NumberLiteral = 6, 11385 BigIntLiteral = 7, 11386 StringLiteral = 8, 11387 RegExpLiteral = 9 11388 } 11389 interface ClassificationResult { 11390 finalLexState: EndOfLineState; 11391 entries: ClassificationInfo[]; 11392 } 11393 interface ClassificationInfo { 11394 length: number; 11395 classification: TokenClass; 11396 } 11397 interface Classifier { 11398 /** 11399 * Gives lexical classifications of tokens on a line without any syntactic context. 11400 * For instance, a token consisting of the text 'string' can be either an identifier 11401 * named 'string' or the keyword 'string', however, because this classifier is not aware, 11402 * it relies on certain heuristics to give acceptable results. For classifications where 11403 * speed trumps accuracy, this function is preferable; however, for true accuracy, the 11404 * syntactic classifier is ideal. In fact, in certain editing scenarios, combining the 11405 * lexical, syntactic, and semantic classifiers may issue the best user experience. 11406 * 11407 * @param text The text of a line to classify. 11408 * @param lexState The state of the lexical classifier at the end of the previous line. 11409 * @param syntacticClassifierAbsent Whether the client is *not* using a syntactic classifier. 11410 * If there is no syntactic classifier (syntacticClassifierAbsent=true), 11411 * certain heuristics may be used in its place; however, if there is a 11412 * syntactic classifier (syntacticClassifierAbsent=false), certain 11413 * classifications which may be incorrectly categorized will be given 11414 * back as Identifiers in order to allow the syntactic classifier to 11415 * subsume the classification. 11416 * @deprecated Use getLexicalClassifications instead. 11417 */ 11418 getClassificationsForLine(text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean): ClassificationResult; 11419 getEncodedLexicalClassifications(text: string, endOfLineState: EndOfLineState, syntacticClassifierAbsent: boolean): Classifications; 11420 } 11421 enum ScriptElementKind { 11422 unknown = "", 11423 warning = "warning", 11424 /** predefined type (void) or keyword (class) */ 11425 keyword = "keyword", 11426 /** top level script node */ 11427 scriptElement = "script", 11428 /** module foo {} */ 11429 moduleElement = "module", 11430 /** class X {} */ 11431 classElement = "class", 11432 /** var x = class X {} */ 11433 localClassElement = "local class", 11434 /** struct X {} */ 11435 structElement = "struct", 11436 /** interface Y {} */ 11437 interfaceElement = "interface", 11438 /** type T = ... */ 11439 typeElement = "type", 11440 /** enum E */ 11441 enumElement = "enum", 11442 enumMemberElement = "enum member", 11443 /** 11444 * Inside module and script only 11445 * const v = .. 11446 */ 11447 variableElement = "var", 11448 /** Inside function */ 11449 localVariableElement = "local var", 11450 /** 11451 * Inside module and script only 11452 * function f() { } 11453 */ 11454 functionElement = "function", 11455 /** Inside function */ 11456 localFunctionElement = "local function", 11457 /** class X { [public|private]* foo() {} } */ 11458 memberFunctionElement = "method", 11459 /** class X { [public|private]* [get|set] foo:number; } */ 11460 memberGetAccessorElement = "getter", 11461 memberSetAccessorElement = "setter", 11462 /** 11463 * class X { [public|private]* foo:number; } 11464 * interface Y { foo:number; } 11465 */ 11466 memberVariableElement = "property", 11467 /** class X { [public|private]* accessor foo: number; } */ 11468 memberAccessorVariableElement = "accessor", 11469 /** 11470 * class X { constructor() { } } 11471 * class X { static { } } 11472 */ 11473 constructorImplementationElement = "constructor", 11474 /** interface Y { ():number; } */ 11475 callSignatureElement = "call", 11476 /** interface Y { []:number; } */ 11477 indexSignatureElement = "index", 11478 /** interface Y { new():Y; } */ 11479 constructSignatureElement = "construct", 11480 /** function foo(*Y*: string) */ 11481 parameterElement = "parameter", 11482 typeParameterElement = "type parameter", 11483 primitiveType = "primitive type", 11484 label = "label", 11485 alias = "alias", 11486 constElement = "const", 11487 letElement = "let", 11488 directory = "directory", 11489 externalModuleName = "external module name", 11490 /** 11491 * <JsxTagName attribute1 attribute2={0} /> 11492 * @deprecated 11493 */ 11494 jsxAttribute = "JSX attribute", 11495 /** String literal */ 11496 string = "string", 11497 /** Jsdoc @link: in `{@link C link text}`, the before and after text "{@link " and "}" */ 11498 link = "link", 11499 /** Jsdoc @link: in `{@link C link text}`, the entity name "C" */ 11500 linkName = "link name", 11501 /** Jsdoc @link: in `{@link C link text}`, the link text "link text" */ 11502 linkText = "link text" 11503 } 11504 enum ScriptElementKindModifier { 11505 none = "", 11506 publicMemberModifier = "public", 11507 privateMemberModifier = "private", 11508 protectedMemberModifier = "protected", 11509 exportedModifier = "export", 11510 ambientModifier = "declare", 11511 staticModifier = "static", 11512 abstractModifier = "abstract", 11513 optionalModifier = "optional", 11514 deprecatedModifier = "deprecated", 11515 dtsModifier = ".d.ts", 11516 tsModifier = ".ts", 11517 tsxModifier = ".tsx", 11518 jsModifier = ".js", 11519 jsxModifier = ".jsx", 11520 jsonModifier = ".json", 11521 dmtsModifier = ".d.mts", 11522 mtsModifier = ".mts", 11523 mjsModifier = ".mjs", 11524 dctsModifier = ".d.cts", 11525 ctsModifier = ".cts", 11526 cjsModifier = ".cjs", 11527 etsModifier = ".ets", 11528 detsModifier = ".d.ets" 11529 } 11530 enum ClassificationTypeNames { 11531 comment = "comment", 11532 identifier = "identifier", 11533 keyword = "keyword", 11534 numericLiteral = "number", 11535 bigintLiteral = "bigint", 11536 operator = "operator", 11537 stringLiteral = "string", 11538 whiteSpace = "whitespace", 11539 text = "text", 11540 punctuation = "punctuation", 11541 className = "class name", 11542 enumName = "enum name", 11543 interfaceName = "interface name", 11544 moduleName = "module name", 11545 typeParameterName = "type parameter name", 11546 typeAliasName = "type alias name", 11547 parameterName = "parameter name", 11548 docCommentTagName = "doc comment tag name", 11549 jsxOpenTagName = "jsx open tag name", 11550 jsxCloseTagName = "jsx close tag name", 11551 jsxSelfClosingTagName = "jsx self closing tag name", 11552 jsxAttribute = "jsx attribute", 11553 jsxText = "jsx text", 11554 jsxAttributeStringLiteralValue = "jsx attribute string literal value" 11555 } 11556 enum ClassificationType { 11557 comment = 1, 11558 identifier = 2, 11559 keyword = 3, 11560 numericLiteral = 4, 11561 operator = 5, 11562 stringLiteral = 6, 11563 regularExpressionLiteral = 7, 11564 whiteSpace = 8, 11565 text = 9, 11566 punctuation = 10, 11567 className = 11, 11568 enumName = 12, 11569 interfaceName = 13, 11570 moduleName = 14, 11571 typeParameterName = 15, 11572 typeAliasName = 16, 11573 parameterName = 17, 11574 docCommentTagName = 18, 11575 jsxOpenTagName = 19, 11576 jsxCloseTagName = 20, 11577 jsxSelfClosingTagName = 21, 11578 jsxAttribute = 22, 11579 jsxText = 23, 11580 jsxAttributeStringLiteralValue = 24, 11581 bigintLiteral = 25 11582 } 11583 interface InlayHintsContext { 11584 file: SourceFile; 11585 program: Program; 11586 cancellationToken: CancellationToken; 11587 host: LanguageServiceHost; 11588 span: TextSpan; 11589 preferences: UserPreferences; 11590 } 11591 /** The classifier is used for syntactic highlighting in editors via the TSServer */ 11592 function createClassifier(): Classifier; 11593 interface DocumentHighlights { 11594 fileName: string; 11595 highlightSpans: HighlightSpan[]; 11596 } 11597 function createDocumentRegistry(useCaseSensitiveFileNames?: boolean, currentDirectory?: string): DocumentRegistry; 11598 /** 11599 * The document registry represents a store of SourceFile objects that can be shared between 11600 * multiple LanguageService instances. A LanguageService instance holds on the SourceFile (AST) 11601 * of files in the context. 11602 * SourceFile objects account for most of the memory usage by the language service. Sharing 11603 * the same DocumentRegistry instance between different instances of LanguageService allow 11604 * for more efficient memory utilization since all projects will share at least the library 11605 * file (lib.d.ts). 11606 * 11607 * A more advanced use of the document registry is to serialize sourceFile objects to disk 11608 * and re-hydrate them when needed. 11609 * 11610 * To create a default DocumentRegistry, use createDocumentRegistry to create one, and pass it 11611 * to all subsequent createLanguageService calls. 11612 */ 11613 interface DocumentRegistry { 11614 /** 11615 * Request a stored SourceFile with a given fileName and compilationSettings. 11616 * The first call to acquire will call createLanguageServiceSourceFile to generate 11617 * the SourceFile if was not found in the registry. 11618 * 11619 * @param fileName The name of the file requested 11620 * @param compilationSettingsOrHost Some compilation settings like target affects the 11621 * shape of a the resulting SourceFile. This allows the DocumentRegistry to store 11622 * multiple copies of the same file for different compilation settings. A minimal 11623 * resolution cache is needed to fully define a source file's shape when 11624 * the compilation settings include `module: node16`+, so providing a cache host 11625 * object should be preferred. A common host is a language service `ConfiguredProject`. 11626 * @param scriptSnapshot Text of the file. Only used if the file was not found 11627 * in the registry and a new one was created. 11628 * @param version Current version of the file. Only used if the file was not found 11629 * in the registry and a new one was created. 11630 */ 11631 acquireDocument(fileName: string, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile; 11632 acquireDocumentWithKey(fileName: string, path: Path, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, key: DocumentRegistryBucketKey, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile; 11633 /** 11634 * Request an updated version of an already existing SourceFile with a given fileName 11635 * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile 11636 * to get an updated SourceFile. 11637 * 11638 * @param fileName The name of the file requested 11639 * @param compilationSettingsOrHost Some compilation settings like target affects the 11640 * shape of a the resulting SourceFile. This allows the DocumentRegistry to store 11641 * multiple copies of the same file for different compilation settings. A minimal 11642 * resolution cache is needed to fully define a source file's shape when 11643 * the compilation settings include `module: node16`+, so providing a cache host 11644 * object should be preferred. A common host is a language service `ConfiguredProject`. 11645 * @param scriptSnapshot Text of the file. 11646 * @param version Current version of the file. 11647 */ 11648 updateDocument(fileName: string, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile; 11649 updateDocumentWithKey(fileName: string, path: Path, compilationSettingsOrHost: CompilerOptions | MinimalResolutionCacheHost, key: DocumentRegistryBucketKey, scriptSnapshot: IScriptSnapshot, version: string, scriptKind?: ScriptKind, sourceFileOptions?: CreateSourceFileOptions | ScriptTarget): SourceFile; 11650 getKeyForCompilationSettings(settings: CompilerOptions): DocumentRegistryBucketKey; 11651 /** 11652 * Informs the DocumentRegistry that a file is not needed any longer. 11653 * 11654 * Note: It is not allowed to call release on a SourceFile that was not acquired from 11655 * this registry originally. 11656 * 11657 * @param fileName The name of the file to be released 11658 * @param compilationSettings The compilation settings used to acquire the file 11659 * @param scriptKind The script kind of the file to be released 11660 * 11661 * @deprecated pass scriptKind and impliedNodeFormat for correctness 11662 */ 11663 releaseDocument(fileName: string, compilationSettings: CompilerOptions, scriptKind?: ScriptKind): void; 11664 /** 11665 * Informs the DocumentRegistry that a file is not needed any longer. 11666 * 11667 * Note: It is not allowed to call release on a SourceFile that was not acquired from 11668 * this registry originally. 11669 * 11670 * @param fileName The name of the file to be released 11671 * @param compilationSettings The compilation settings used to acquire the file 11672 * @param scriptKind The script kind of the file to be released 11673 * @param impliedNodeFormat The implied source file format of the file to be released 11674 */ 11675 releaseDocument(fileName: string, compilationSettings: CompilerOptions, scriptKind: ScriptKind, impliedNodeFormat: SourceFile["impliedNodeFormat"]): void; 11676 /** 11677 * @deprecated pass scriptKind for and impliedNodeFormat correctness */ 11678 releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind?: ScriptKind): void; 11679 releaseDocumentWithKey(path: Path, key: DocumentRegistryBucketKey, scriptKind: ScriptKind, impliedNodeFormat: SourceFile["impliedNodeFormat"]): void; 11680 reportStats(): string; 11681 } 11682 type DocumentRegistryBucketKey = string & { 11683 __bucketKey: any; 11684 }; 11685 function preProcessFile(sourceText: string, readImportFiles?: boolean, detectJavaScriptImports?: boolean): PreProcessedFileInfo; 11686 function transpileModule(input: string, transpileOptions: TranspileOptions): TranspileOutput; 11687 function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[], moduleName?: string): string; 11688 interface TranspileOptions { 11689 compilerOptions?: CompilerOptions; 11690 fileName?: string; 11691 reportDiagnostics?: boolean; 11692 moduleName?: string; 11693 renamedDependencies?: MapLike<string>; 11694 transformers?: CustomTransformers; 11695 } 11696 interface TranspileOutput { 11697 outputText: string; 11698 diagnostics?: Diagnostic[]; 11699 sourceMapText?: string; 11700 } 11701 function toEditorSettings(options: EditorOptions | EditorSettings): EditorSettings; 11702 function displayPartsToString(displayParts: SymbolDisplayPart[] | undefined): string; 11703 function getDefaultCompilerOptions(): CompilerOptions; 11704 function getSupportedCodeFixes(): string[]; 11705 function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTargetOrOptions: ScriptTarget | CreateSourceFileOptions, version: string, setNodeParents: boolean, scriptKind?: ScriptKind, option?: CompilerOptions): SourceFile; 11706 function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange | undefined, aggressiveChecks?: boolean, option?: CompilerOptions): SourceFile; 11707 function createLanguageService(host: LanguageServiceHost, documentRegistry?: DocumentRegistry, syntaxOnlyOrLanguageServiceMode?: boolean | LanguageServiceMode): LanguageService; 11708 /** 11709 * Get the path of the default library files (lib.d.ts) as distributed with the typescript 11710 * node package. 11711 * The functionality is not supported if the ts module is consumed outside of a node module. 11712 */ 11713 function getDefaultLibFilePath(options: CompilerOptions): string; 11714 /** The version of the language service API */ 11715 const servicesVersion = "0.8"; 11716 /** 11717 * Transform one or more nodes using the supplied transformers. 11718 * @param source A single `Node` or an array of `Node` objects. 11719 * @param transformers An array of `TransformerFactory` callbacks used to process the transformation. 11720 * @param compilerOptions Optional compiler options. 11721 */ 11722 function transform<T extends Node>(source: T | T[], transformers: TransformerFactory<T>[], compilerOptions?: CompilerOptions): TransformationResult<T>; 11723 /** @deprecated Use `factory.createNodeArray` or the factory supplied by your transformation context instead. */ 11724 const createNodeArray: typeof factory.createNodeArray; 11725 /** @deprecated Use `factory.createNumericLiteral` or the factory supplied by your transformation context instead. */ 11726 const createNumericLiteral: typeof factory.createNumericLiteral; 11727 /** @deprecated Use `factory.createBigIntLiteral` or the factory supplied by your transformation context instead. */ 11728 const createBigIntLiteral: typeof factory.createBigIntLiteral; 11729 /** @deprecated Use `factory.createStringLiteral` or the factory supplied by your transformation context instead. */ 11730 const createStringLiteral: typeof factory.createStringLiteral; 11731 /** @deprecated Use `factory.createStringLiteralFromNode` or the factory supplied by your transformation context instead. */ 11732 const createStringLiteralFromNode: typeof factory.createStringLiteralFromNode; 11733 /** @deprecated Use `factory.createRegularExpressionLiteral` or the factory supplied by your transformation context instead. */ 11734 const createRegularExpressionLiteral: typeof factory.createRegularExpressionLiteral; 11735 /** @deprecated Use `factory.createLoopVariable` or the factory supplied by your transformation context instead. */ 11736 const createLoopVariable: typeof factory.createLoopVariable; 11737 /** @deprecated Use `factory.createUniqueName` or the factory supplied by your transformation context instead. */ 11738 const createUniqueName: typeof factory.createUniqueName; 11739 /** @deprecated Use `factory.createPrivateIdentifier` or the factory supplied by your transformation context instead. */ 11740 const createPrivateIdentifier: typeof factory.createPrivateIdentifier; 11741 /** @deprecated Use `factory.createSuper` or the factory supplied by your transformation context instead. */ 11742 const createSuper: typeof factory.createSuper; 11743 /** @deprecated Use `factory.createThis` or the factory supplied by your transformation context instead. */ 11744 const createThis: typeof factory.createThis; 11745 /** @deprecated Use `factory.createNull` or the factory supplied by your transformation context instead. */ 11746 const createNull: typeof factory.createNull; 11747 /** @deprecated Use `factory.createTrue` or the factory supplied by your transformation context instead. */ 11748 const createTrue: typeof factory.createTrue; 11749 /** @deprecated Use `factory.createFalse` or the factory supplied by your transformation context instead. */ 11750 const createFalse: typeof factory.createFalse; 11751 /** @deprecated Use `factory.createModifier` or the factory supplied by your transformation context instead. */ 11752 const createModifier: typeof factory.createModifier; 11753 /** @deprecated Use `factory.createModifiersFromModifierFlags` or the factory supplied by your transformation context instead. */ 11754 const createModifiersFromModifierFlags: typeof factory.createModifiersFromModifierFlags; 11755 /** @deprecated Use `factory.createQualifiedName` or the factory supplied by your transformation context instead. */ 11756 const createQualifiedName: typeof factory.createQualifiedName; 11757 /** @deprecated Use `factory.updateQualifiedName` or the factory supplied by your transformation context instead. */ 11758 const updateQualifiedName: typeof factory.updateQualifiedName; 11759 /** @deprecated Use `factory.createComputedPropertyName` or the factory supplied by your transformation context instead. */ 11760 const createComputedPropertyName: typeof factory.createComputedPropertyName; 11761 /** @deprecated Use `factory.updateComputedPropertyName` or the factory supplied by your transformation context instead. */ 11762 const updateComputedPropertyName: typeof factory.updateComputedPropertyName; 11763 /** @deprecated Use `factory.createTypeParameterDeclaration` or the factory supplied by your transformation context instead. */ 11764 const createTypeParameterDeclaration: typeof factory.createTypeParameterDeclaration; 11765 /** @deprecated Use `factory.updateTypeParameterDeclaration` or the factory supplied by your transformation context instead. */ 11766 const updateTypeParameterDeclaration: typeof factory.updateTypeParameterDeclaration; 11767 /** @deprecated Use `factory.createParameterDeclaration` or the factory supplied by your transformation context instead. */ 11768 const createParameter: typeof factory.createParameterDeclaration; 11769 /** @deprecated Use `factory.updateParameterDeclaration` or the factory supplied by your transformation context instead. */ 11770 const updateParameter: typeof factory.updateParameterDeclaration; 11771 /** @deprecated Use `factory.createDecorator` or the factory supplied by your transformation context instead. */ 11772 const createDecorator: typeof factory.createDecorator; 11773 /** @deprecated Use `factory.updateDecorator` or the factory supplied by your transformation context instead. */ 11774 const updateDecorator: typeof factory.updateDecorator; 11775 /** @deprecated Use `factory.createPropertyDeclaration` or the factory supplied by your transformation context instead. */ 11776 const createProperty: typeof factory.createPropertyDeclaration; 11777 /** @deprecated Use `factory.updatePropertyDeclaration` or the factory supplied by your transformation context instead. */ 11778 const updateProperty: typeof factory.updatePropertyDeclaration; 11779 /** @deprecated Use `factory.createMethodDeclaration` or the factory supplied by your transformation context instead. */ 11780 const createMethod: typeof factory.createMethodDeclaration; 11781 /** @deprecated Use `factory.updateMethodDeclaration` or the factory supplied by your transformation context instead. */ 11782 const updateMethod: typeof factory.updateMethodDeclaration; 11783 /** @deprecated Use `factory.createConstructorDeclaration` or the factory supplied by your transformation context instead. */ 11784 const createConstructor: typeof factory.createConstructorDeclaration; 11785 /** @deprecated Use `factory.updateConstructorDeclaration` or the factory supplied by your transformation context instead. */ 11786 const updateConstructor: typeof factory.updateConstructorDeclaration; 11787 /** @deprecated Use `factory.createGetAccessorDeclaration` or the factory supplied by your transformation context instead. */ 11788 const createGetAccessor: typeof factory.createGetAccessorDeclaration; 11789 /** @deprecated Use `factory.updateGetAccessorDeclaration` or the factory supplied by your transformation context instead. */ 11790 const updateGetAccessor: typeof factory.updateGetAccessorDeclaration; 11791 /** @deprecated Use `factory.createSetAccessorDeclaration` or the factory supplied by your transformation context instead. */ 11792 const createSetAccessor: typeof factory.createSetAccessorDeclaration; 11793 /** @deprecated Use `factory.updateSetAccessorDeclaration` or the factory supplied by your transformation context instead. */ 11794 const updateSetAccessor: typeof factory.updateSetAccessorDeclaration; 11795 /** @deprecated Use `factory.createCallSignature` or the factory supplied by your transformation context instead. */ 11796 const createCallSignature: typeof factory.createCallSignature; 11797 /** @deprecated Use `factory.updateCallSignature` or the factory supplied by your transformation context instead. */ 11798 const updateCallSignature: typeof factory.updateCallSignature; 11799 /** @deprecated Use `factory.createConstructSignature` or the factory supplied by your transformation context instead. */ 11800 const createConstructSignature: typeof factory.createConstructSignature; 11801 /** @deprecated Use `factory.updateConstructSignature` or the factory supplied by your transformation context instead. */ 11802 const updateConstructSignature: typeof factory.updateConstructSignature; 11803 /** @deprecated Use `factory.updateIndexSignature` or the factory supplied by your transformation context instead. */ 11804 const updateIndexSignature: typeof factory.updateIndexSignature; 11805 /** @deprecated Use `factory.createKeywordTypeNode` or the factory supplied by your transformation context instead. */ 11806 const createKeywordTypeNode: typeof factory.createKeywordTypeNode; 11807 /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */ 11808 const createTypePredicateNodeWithModifier: typeof factory.createTypePredicateNode; 11809 /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */ 11810 const updateTypePredicateNodeWithModifier: typeof factory.updateTypePredicateNode; 11811 /** @deprecated Use `factory.createTypeReferenceNode` or the factory supplied by your transformation context instead. */ 11812 const createTypeReferenceNode: typeof factory.createTypeReferenceNode; 11813 /** @deprecated Use `factory.updateTypeReferenceNode` or the factory supplied by your transformation context instead. */ 11814 const updateTypeReferenceNode: typeof factory.updateTypeReferenceNode; 11815 /** @deprecated Use `factory.createFunctionTypeNode` or the factory supplied by your transformation context instead. */ 11816 const createFunctionTypeNode: typeof factory.createFunctionTypeNode; 11817 /** @deprecated Use `factory.updateFunctionTypeNode` or the factory supplied by your transformation context instead. */ 11818 const updateFunctionTypeNode: typeof factory.updateFunctionTypeNode; 11819 /** @deprecated Use `factory.createConstructorTypeNode` or the factory supplied by your transformation context instead. */ 11820 const createConstructorTypeNode: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => ConstructorTypeNode; 11821 /** @deprecated Use `factory.updateConstructorTypeNode` or the factory supplied by your transformation context instead. */ 11822 const updateConstructorTypeNode: (node: ConstructorTypeNode, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode) => ConstructorTypeNode; 11823 /** @deprecated Use `factory.createTypeQueryNode` or the factory supplied by your transformation context instead. */ 11824 const createTypeQueryNode: typeof factory.createTypeQueryNode; 11825 /** @deprecated Use `factory.updateTypeQueryNode` or the factory supplied by your transformation context instead. */ 11826 const updateTypeQueryNode: typeof factory.updateTypeQueryNode; 11827 /** @deprecated Use `factory.createTypeLiteralNode` or the factory supplied by your transformation context instead. */ 11828 const createTypeLiteralNode: typeof factory.createTypeLiteralNode; 11829 /** @deprecated Use `factory.updateTypeLiteralNode` or the factory supplied by your transformation context instead. */ 11830 const updateTypeLiteralNode: typeof factory.updateTypeLiteralNode; 11831 /** @deprecated Use `factory.createArrayTypeNode` or the factory supplied by your transformation context instead. */ 11832 const createArrayTypeNode: typeof factory.createArrayTypeNode; 11833 /** @deprecated Use `factory.updateArrayTypeNode` or the factory supplied by your transformation context instead. */ 11834 const updateArrayTypeNode: typeof factory.updateArrayTypeNode; 11835 /** @deprecated Use `factory.createTupleTypeNode` or the factory supplied by your transformation context instead. */ 11836 const createTupleTypeNode: typeof factory.createTupleTypeNode; 11837 /** @deprecated Use `factory.updateTupleTypeNode` or the factory supplied by your transformation context instead. */ 11838 const updateTupleTypeNode: typeof factory.updateTupleTypeNode; 11839 /** @deprecated Use `factory.createOptionalTypeNode` or the factory supplied by your transformation context instead. */ 11840 const createOptionalTypeNode: typeof factory.createOptionalTypeNode; 11841 /** @deprecated Use `factory.updateOptionalTypeNode` or the factory supplied by your transformation context instead. */ 11842 const updateOptionalTypeNode: typeof factory.updateOptionalTypeNode; 11843 /** @deprecated Use `factory.createRestTypeNode` or the factory supplied by your transformation context instead. */ 11844 const createRestTypeNode: typeof factory.createRestTypeNode; 11845 /** @deprecated Use `factory.updateRestTypeNode` or the factory supplied by your transformation context instead. */ 11846 const updateRestTypeNode: typeof factory.updateRestTypeNode; 11847 /** @deprecated Use `factory.createUnionTypeNode` or the factory supplied by your transformation context instead. */ 11848 const createUnionTypeNode: typeof factory.createUnionTypeNode; 11849 /** @deprecated Use `factory.updateUnionTypeNode` or the factory supplied by your transformation context instead. */ 11850 const updateUnionTypeNode: typeof factory.updateUnionTypeNode; 11851 /** @deprecated Use `factory.createIntersectionTypeNode` or the factory supplied by your transformation context instead. */ 11852 const createIntersectionTypeNode: typeof factory.createIntersectionTypeNode; 11853 /** @deprecated Use `factory.updateIntersectionTypeNode` or the factory supplied by your transformation context instead. */ 11854 const updateIntersectionTypeNode: typeof factory.updateIntersectionTypeNode; 11855 /** @deprecated Use `factory.createConditionalTypeNode` or the factory supplied by your transformation context instead. */ 11856 const createConditionalTypeNode: typeof factory.createConditionalTypeNode; 11857 /** @deprecated Use `factory.updateConditionalTypeNode` or the factory supplied by your transformation context instead. */ 11858 const updateConditionalTypeNode: typeof factory.updateConditionalTypeNode; 11859 /** @deprecated Use `factory.createInferTypeNode` or the factory supplied by your transformation context instead. */ 11860 const createInferTypeNode: typeof factory.createInferTypeNode; 11861 /** @deprecated Use `factory.updateInferTypeNode` or the factory supplied by your transformation context instead. */ 11862 const updateInferTypeNode: typeof factory.updateInferTypeNode; 11863 /** @deprecated Use `factory.createImportTypeNode` or the factory supplied by your transformation context instead. */ 11864 const createImportTypeNode: typeof factory.createImportTypeNode; 11865 /** @deprecated Use `factory.updateImportTypeNode` or the factory supplied by your transformation context instead. */ 11866 const updateImportTypeNode: typeof factory.updateImportTypeNode; 11867 /** @deprecated Use `factory.createParenthesizedType` or the factory supplied by your transformation context instead. */ 11868 const createParenthesizedType: typeof factory.createParenthesizedType; 11869 /** @deprecated Use `factory.updateParenthesizedType` or the factory supplied by your transformation context instead. */ 11870 const updateParenthesizedType: typeof factory.updateParenthesizedType; 11871 /** @deprecated Use `factory.createThisTypeNode` or the factory supplied by your transformation context instead. */ 11872 const createThisTypeNode: typeof factory.createThisTypeNode; 11873 /** @deprecated Use `factory.updateTypeOperatorNode` or the factory supplied by your transformation context instead. */ 11874 const updateTypeOperatorNode: typeof factory.updateTypeOperatorNode; 11875 /** @deprecated Use `factory.createIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */ 11876 const createIndexedAccessTypeNode: typeof factory.createIndexedAccessTypeNode; 11877 /** @deprecated Use `factory.updateIndexedAccessTypeNode` or the factory supplied by your transformation context instead. */ 11878 const updateIndexedAccessTypeNode: typeof factory.updateIndexedAccessTypeNode; 11879 /** @deprecated Use `factory.createMappedTypeNode` or the factory supplied by your transformation context instead. */ 11880 const createMappedTypeNode: typeof factory.createMappedTypeNode; 11881 /** @deprecated Use `factory.updateMappedTypeNode` or the factory supplied by your transformation context instead. */ 11882 const updateMappedTypeNode: typeof factory.updateMappedTypeNode; 11883 /** @deprecated Use `factory.createLiteralTypeNode` or the factory supplied by your transformation context instead. */ 11884 const createLiteralTypeNode: typeof factory.createLiteralTypeNode; 11885 /** @deprecated Use `factory.updateLiteralTypeNode` or the factory supplied by your transformation context instead. */ 11886 const updateLiteralTypeNode: typeof factory.updateLiteralTypeNode; 11887 /** @deprecated Use `factory.createObjectBindingPattern` or the factory supplied by your transformation context instead. */ 11888 const createObjectBindingPattern: typeof factory.createObjectBindingPattern; 11889 /** @deprecated Use `factory.updateObjectBindingPattern` or the factory supplied by your transformation context instead. */ 11890 const updateObjectBindingPattern: typeof factory.updateObjectBindingPattern; 11891 /** @deprecated Use `factory.createArrayBindingPattern` or the factory supplied by your transformation context instead. */ 11892 const createArrayBindingPattern: typeof factory.createArrayBindingPattern; 11893 /** @deprecated Use `factory.updateArrayBindingPattern` or the factory supplied by your transformation context instead. */ 11894 const updateArrayBindingPattern: typeof factory.updateArrayBindingPattern; 11895 /** @deprecated Use `factory.createBindingElement` or the factory supplied by your transformation context instead. */ 11896 const createBindingElement: typeof factory.createBindingElement; 11897 /** @deprecated Use `factory.updateBindingElement` or the factory supplied by your transformation context instead. */ 11898 const updateBindingElement: typeof factory.updateBindingElement; 11899 /** @deprecated Use `factory.createArrayLiteralExpression` or the factory supplied by your transformation context instead. */ 11900 const createArrayLiteral: typeof factory.createArrayLiteralExpression; 11901 /** @deprecated Use `factory.updateArrayLiteralExpression` or the factory supplied by your transformation context instead. */ 11902 const updateArrayLiteral: typeof factory.updateArrayLiteralExpression; 11903 /** @deprecated Use `factory.createObjectLiteralExpression` or the factory supplied by your transformation context instead. */ 11904 const createObjectLiteral: typeof factory.createObjectLiteralExpression; 11905 /** @deprecated Use `factory.updateObjectLiteralExpression` or the factory supplied by your transformation context instead. */ 11906 const updateObjectLiteral: typeof factory.updateObjectLiteralExpression; 11907 /** @deprecated Use `factory.createPropertyAccessExpression` or the factory supplied by your transformation context instead. */ 11908 const createPropertyAccess: typeof factory.createPropertyAccessExpression; 11909 /** @deprecated Use `factory.updatePropertyAccessExpression` or the factory supplied by your transformation context instead. */ 11910 const updatePropertyAccess: typeof factory.updatePropertyAccessExpression; 11911 /** @deprecated Use `factory.createPropertyAccessChain` or the factory supplied by your transformation context instead. */ 11912 const createPropertyAccessChain: typeof factory.createPropertyAccessChain; 11913 /** @deprecated Use `factory.updatePropertyAccessChain` or the factory supplied by your transformation context instead. */ 11914 const updatePropertyAccessChain: typeof factory.updatePropertyAccessChain; 11915 /** @deprecated Use `factory.createElementAccessExpression` or the factory supplied by your transformation context instead. */ 11916 const createElementAccess: typeof factory.createElementAccessExpression; 11917 /** @deprecated Use `factory.updateElementAccessExpression` or the factory supplied by your transformation context instead. */ 11918 const updateElementAccess: typeof factory.updateElementAccessExpression; 11919 /** @deprecated Use `factory.createElementAccessChain` or the factory supplied by your transformation context instead. */ 11920 const createElementAccessChain: typeof factory.createElementAccessChain; 11921 /** @deprecated Use `factory.updateElementAccessChain` or the factory supplied by your transformation context instead. */ 11922 const updateElementAccessChain: typeof factory.updateElementAccessChain; 11923 /** @deprecated Use `factory.createCallExpression` or the factory supplied by your transformation context instead. */ 11924 const createCall: typeof factory.createCallExpression; 11925 /** @deprecated Use `factory.updateCallExpression` or the factory supplied by your transformation context instead. */ 11926 const updateCall: typeof factory.updateCallExpression; 11927 /** @deprecated Use `factory.createCallChain` or the factory supplied by your transformation context instead. */ 11928 const createCallChain: typeof factory.createCallChain; 11929 /** @deprecated Use `factory.updateCallChain` or the factory supplied by your transformation context instead. */ 11930 const updateCallChain: typeof factory.updateCallChain; 11931 /** @deprecated Use `factory.createNewExpression` or the factory supplied by your transformation context instead. */ 11932 const createNew: typeof factory.createNewExpression; 11933 /** @deprecated Use `factory.updateNewExpression` or the factory supplied by your transformation context instead. */ 11934 const updateNew: typeof factory.updateNewExpression; 11935 /** @deprecated Use `factory.createTypeAssertion` or the factory supplied by your transformation context instead. */ 11936 const createTypeAssertion: typeof factory.createTypeAssertion; 11937 /** @deprecated Use `factory.updateTypeAssertion` or the factory supplied by your transformation context instead. */ 11938 const updateTypeAssertion: typeof factory.updateTypeAssertion; 11939 /** @deprecated Use `factory.createParenthesizedExpression` or the factory supplied by your transformation context instead. */ 11940 const createParen: typeof factory.createParenthesizedExpression; 11941 /** @deprecated Use `factory.updateParenthesizedExpression` or the factory supplied by your transformation context instead. */ 11942 const updateParen: typeof factory.updateParenthesizedExpression; 11943 /** @deprecated Use `factory.createFunctionExpression` or the factory supplied by your transformation context instead. */ 11944 const createFunctionExpression: typeof factory.createFunctionExpression; 11945 /** @deprecated Use `factory.updateFunctionExpression` or the factory supplied by your transformation context instead. */ 11946 const updateFunctionExpression: typeof factory.updateFunctionExpression; 11947 /** @deprecated Use `factory.createDeleteExpression` or the factory supplied by your transformation context instead. */ 11948 const createDelete: typeof factory.createDeleteExpression; 11949 /** @deprecated Use `factory.updateDeleteExpression` or the factory supplied by your transformation context instead. */ 11950 const updateDelete: typeof factory.updateDeleteExpression; 11951 /** @deprecated Use `factory.createTypeOfExpression` or the factory supplied by your transformation context instead. */ 11952 const createTypeOf: typeof factory.createTypeOfExpression; 11953 /** @deprecated Use `factory.updateTypeOfExpression` or the factory supplied by your transformation context instead. */ 11954 const updateTypeOf: typeof factory.updateTypeOfExpression; 11955 /** @deprecated Use `factory.createVoidExpression` or the factory supplied by your transformation context instead. */ 11956 const createVoid: typeof factory.createVoidExpression; 11957 /** @deprecated Use `factory.updateVoidExpression` or the factory supplied by your transformation context instead. */ 11958 const updateVoid: typeof factory.updateVoidExpression; 11959 /** @deprecated Use `factory.createAwaitExpression` or the factory supplied by your transformation context instead. */ 11960 const createAwait: typeof factory.createAwaitExpression; 11961 /** @deprecated Use `factory.updateAwaitExpression` or the factory supplied by your transformation context instead. */ 11962 const updateAwait: typeof factory.updateAwaitExpression; 11963 /** @deprecated Use `factory.createPrefixExpression` or the factory supplied by your transformation context instead. */ 11964 const createPrefix: typeof factory.createPrefixUnaryExpression; 11965 /** @deprecated Use `factory.updatePrefixExpression` or the factory supplied by your transformation context instead. */ 11966 const updatePrefix: typeof factory.updatePrefixUnaryExpression; 11967 /** @deprecated Use `factory.createPostfixUnaryExpression` or the factory supplied by your transformation context instead. */ 11968 const createPostfix: typeof factory.createPostfixUnaryExpression; 11969 /** @deprecated Use `factory.updatePostfixUnaryExpression` or the factory supplied by your transformation context instead. */ 11970 const updatePostfix: typeof factory.updatePostfixUnaryExpression; 11971 /** @deprecated Use `factory.createBinaryExpression` or the factory supplied by your transformation context instead. */ 11972 const createBinary: typeof factory.createBinaryExpression; 11973 /** @deprecated Use `factory.updateConditionalExpression` or the factory supplied by your transformation context instead. */ 11974 const updateConditional: typeof factory.updateConditionalExpression; 11975 /** @deprecated Use `factory.createTemplateExpression` or the factory supplied by your transformation context instead. */ 11976 const createTemplateExpression: typeof factory.createTemplateExpression; 11977 /** @deprecated Use `factory.updateTemplateExpression` or the factory supplied by your transformation context instead. */ 11978 const updateTemplateExpression: typeof factory.updateTemplateExpression; 11979 /** @deprecated Use `factory.createTemplateHead` or the factory supplied by your transformation context instead. */ 11980 const createTemplateHead: typeof factory.createTemplateHead; 11981 /** @deprecated Use `factory.createTemplateMiddle` or the factory supplied by your transformation context instead. */ 11982 const createTemplateMiddle: typeof factory.createTemplateMiddle; 11983 /** @deprecated Use `factory.createTemplateTail` or the factory supplied by your transformation context instead. */ 11984 const createTemplateTail: typeof factory.createTemplateTail; 11985 /** @deprecated Use `factory.createNoSubstitutionTemplateLiteral` or the factory supplied by your transformation context instead. */ 11986 const createNoSubstitutionTemplateLiteral: typeof factory.createNoSubstitutionTemplateLiteral; 11987 /** @deprecated Use `factory.updateYieldExpression` or the factory supplied by your transformation context instead. */ 11988 const updateYield: typeof factory.updateYieldExpression; 11989 /** @deprecated Use `factory.createSpreadExpression` or the factory supplied by your transformation context instead. */ 11990 const createSpread: typeof factory.createSpreadElement; 11991 /** @deprecated Use `factory.updateSpreadExpression` or the factory supplied by your transformation context instead. */ 11992 const updateSpread: typeof factory.updateSpreadElement; 11993 /** @deprecated Use `factory.createOmittedExpression` or the factory supplied by your transformation context instead. */ 11994 const createOmittedExpression: typeof factory.createOmittedExpression; 11995 /** @deprecated Use `factory.createAsExpression` or the factory supplied by your transformation context instead. */ 11996 const createAsExpression: typeof factory.createAsExpression; 11997 /** @deprecated Use `factory.updateAsExpression` or the factory supplied by your transformation context instead. */ 11998 const updateAsExpression: typeof factory.updateAsExpression; 11999 /** @deprecated Use `factory.createNonNullExpression` or the factory supplied by your transformation context instead. */ 12000 const createNonNullExpression: typeof factory.createNonNullExpression; 12001 /** @deprecated Use `factory.updateNonNullExpression` or the factory supplied by your transformation context instead. */ 12002 const updateNonNullExpression: typeof factory.updateNonNullExpression; 12003 /** @deprecated Use `factory.createNonNullChain` or the factory supplied by your transformation context instead. */ 12004 const createNonNullChain: typeof factory.createNonNullChain; 12005 /** @deprecated Use `factory.updateNonNullChain` or the factory supplied by your transformation context instead. */ 12006 const updateNonNullChain: typeof factory.updateNonNullChain; 12007 /** @deprecated Use `factory.createMetaProperty` or the factory supplied by your transformation context instead. */ 12008 const createMetaProperty: typeof factory.createMetaProperty; 12009 /** @deprecated Use `factory.updateMetaProperty` or the factory supplied by your transformation context instead. */ 12010 const updateMetaProperty: typeof factory.updateMetaProperty; 12011 /** @deprecated Use `factory.createTemplateSpan` or the factory supplied by your transformation context instead. */ 12012 const createTemplateSpan: typeof factory.createTemplateSpan; 12013 /** @deprecated Use `factory.updateTemplateSpan` or the factory supplied by your transformation context instead. */ 12014 const updateTemplateSpan: typeof factory.updateTemplateSpan; 12015 /** @deprecated Use `factory.createSemicolonClassElement` or the factory supplied by your transformation context instead. */ 12016 const createSemicolonClassElement: typeof factory.createSemicolonClassElement; 12017 /** @deprecated Use `factory.createBlock` or the factory supplied by your transformation context instead. */ 12018 const createBlock: typeof factory.createBlock; 12019 /** @deprecated Use `factory.updateBlock` or the factory supplied by your transformation context instead. */ 12020 const updateBlock: typeof factory.updateBlock; 12021 /** @deprecated Use `factory.createVariableStatement` or the factory supplied by your transformation context instead. */ 12022 const createVariableStatement: typeof factory.createVariableStatement; 12023 /** @deprecated Use `factory.updateVariableStatement` or the factory supplied by your transformation context instead. */ 12024 const updateVariableStatement: typeof factory.updateVariableStatement; 12025 /** @deprecated Use `factory.createEmptyStatement` or the factory supplied by your transformation context instead. */ 12026 const createEmptyStatement: typeof factory.createEmptyStatement; 12027 /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */ 12028 const createExpressionStatement: typeof factory.createExpressionStatement; 12029 /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */ 12030 const updateExpressionStatement: typeof factory.updateExpressionStatement; 12031 /** @deprecated Use `factory.createExpressionStatement` or the factory supplied by your transformation context instead. */ 12032 const createStatement: typeof factory.createExpressionStatement; 12033 /** @deprecated Use `factory.updateExpressionStatement` or the factory supplied by your transformation context instead. */ 12034 const updateStatement: typeof factory.updateExpressionStatement; 12035 /** @deprecated Use `factory.createIfStatement` or the factory supplied by your transformation context instead. */ 12036 const createIf: typeof factory.createIfStatement; 12037 /** @deprecated Use `factory.updateIfStatement` or the factory supplied by your transformation context instead. */ 12038 const updateIf: typeof factory.updateIfStatement; 12039 /** @deprecated Use `factory.createDoStatement` or the factory supplied by your transformation context instead. */ 12040 const createDo: typeof factory.createDoStatement; 12041 /** @deprecated Use `factory.updateDoStatement` or the factory supplied by your transformation context instead. */ 12042 const updateDo: typeof factory.updateDoStatement; 12043 /** @deprecated Use `factory.createWhileStatement` or the factory supplied by your transformation context instead. */ 12044 const createWhile: typeof factory.createWhileStatement; 12045 /** @deprecated Use `factory.updateWhileStatement` or the factory supplied by your transformation context instead. */ 12046 const updateWhile: typeof factory.updateWhileStatement; 12047 /** @deprecated Use `factory.createForStatement` or the factory supplied by your transformation context instead. */ 12048 const createFor: typeof factory.createForStatement; 12049 /** @deprecated Use `factory.updateForStatement` or the factory supplied by your transformation context instead. */ 12050 const updateFor: typeof factory.updateForStatement; 12051 /** @deprecated Use `factory.createForInStatement` or the factory supplied by your transformation context instead. */ 12052 const createForIn: typeof factory.createForInStatement; 12053 /** @deprecated Use `factory.updateForInStatement` or the factory supplied by your transformation context instead. */ 12054 const updateForIn: typeof factory.updateForInStatement; 12055 /** @deprecated Use `factory.createForOfStatement` or the factory supplied by your transformation context instead. */ 12056 const createForOf: typeof factory.createForOfStatement; 12057 /** @deprecated Use `factory.updateForOfStatement` or the factory supplied by your transformation context instead. */ 12058 const updateForOf: typeof factory.updateForOfStatement; 12059 /** @deprecated Use `factory.createContinueStatement` or the factory supplied by your transformation context instead. */ 12060 const createContinue: typeof factory.createContinueStatement; 12061 /** @deprecated Use `factory.updateContinueStatement` or the factory supplied by your transformation context instead. */ 12062 const updateContinue: typeof factory.updateContinueStatement; 12063 /** @deprecated Use `factory.createBreakStatement` or the factory supplied by your transformation context instead. */ 12064 const createBreak: typeof factory.createBreakStatement; 12065 /** @deprecated Use `factory.updateBreakStatement` or the factory supplied by your transformation context instead. */ 12066 const updateBreak: typeof factory.updateBreakStatement; 12067 /** @deprecated Use `factory.createReturnStatement` or the factory supplied by your transformation context instead. */ 12068 const createReturn: typeof factory.createReturnStatement; 12069 /** @deprecated Use `factory.updateReturnStatement` or the factory supplied by your transformation context instead. */ 12070 const updateReturn: typeof factory.updateReturnStatement; 12071 /** @deprecated Use `factory.createWithStatement` or the factory supplied by your transformation context instead. */ 12072 const createWith: typeof factory.createWithStatement; 12073 /** @deprecated Use `factory.updateWithStatement` or the factory supplied by your transformation context instead. */ 12074 const updateWith: typeof factory.updateWithStatement; 12075 /** @deprecated Use `factory.createSwitchStatement` or the factory supplied by your transformation context instead. */ 12076 const createSwitch: typeof factory.createSwitchStatement; 12077 /** @deprecated Use `factory.updateSwitchStatement` or the factory supplied by your transformation context instead. */ 12078 const updateSwitch: typeof factory.updateSwitchStatement; 12079 /** @deprecated Use `factory.createLabelStatement` or the factory supplied by your transformation context instead. */ 12080 const createLabel: typeof factory.createLabeledStatement; 12081 /** @deprecated Use `factory.updateLabelStatement` or the factory supplied by your transformation context instead. */ 12082 const updateLabel: typeof factory.updateLabeledStatement; 12083 /** @deprecated Use `factory.createThrowStatement` or the factory supplied by your transformation context instead. */ 12084 const createThrow: typeof factory.createThrowStatement; 12085 /** @deprecated Use `factory.updateThrowStatement` or the factory supplied by your transformation context instead. */ 12086 const updateThrow: typeof factory.updateThrowStatement; 12087 /** @deprecated Use `factory.createTryStatement` or the factory supplied by your transformation context instead. */ 12088 const createTry: typeof factory.createTryStatement; 12089 /** @deprecated Use `factory.updateTryStatement` or the factory supplied by your transformation context instead. */ 12090 const updateTry: typeof factory.updateTryStatement; 12091 /** @deprecated Use `factory.createDebuggerStatement` or the factory supplied by your transformation context instead. */ 12092 const createDebuggerStatement: typeof factory.createDebuggerStatement; 12093 /** @deprecated Use `factory.createVariableDeclarationList` or the factory supplied by your transformation context instead. */ 12094 const createVariableDeclarationList: typeof factory.createVariableDeclarationList; 12095 /** @deprecated Use `factory.updateVariableDeclarationList` or the factory supplied by your transformation context instead. */ 12096 const updateVariableDeclarationList: typeof factory.updateVariableDeclarationList; 12097 /** @deprecated Use `factory.createFunctionDeclaration` or the factory supplied by your transformation context instead. */ 12098 const createFunctionDeclaration: typeof factory.createFunctionDeclaration; 12099 /** @deprecated Use `factory.updateFunctionDeclaration` or the factory supplied by your transformation context instead. */ 12100 const updateFunctionDeclaration: typeof factory.updateFunctionDeclaration; 12101 /** @deprecated Use `factory.createClassDeclaration` or the factory supplied by your transformation context instead. */ 12102 const createClassDeclaration: typeof factory.createClassDeclaration; 12103 /** @deprecated Use `factory.updateClassDeclaration` or the factory supplied by your transformation context instead. */ 12104 const updateClassDeclaration: typeof factory.updateClassDeclaration; 12105 /** @deprecated Use `factory.createInterfaceDeclaration` or the factory supplied by your transformation context instead. */ 12106 const createInterfaceDeclaration: typeof factory.createInterfaceDeclaration; 12107 /** @deprecated Use `factory.updateInterfaceDeclaration` or the factory supplied by your transformation context instead. */ 12108 const updateInterfaceDeclaration: typeof factory.updateInterfaceDeclaration; 12109 /** @deprecated Use `factory.createTypeAliasDeclaration` or the factory supplied by your transformation context instead. */ 12110 const createTypeAliasDeclaration: typeof factory.createTypeAliasDeclaration; 12111 /** @deprecated Use `factory.updateTypeAliasDeclaration` or the factory supplied by your transformation context instead. */ 12112 const updateTypeAliasDeclaration: typeof factory.updateTypeAliasDeclaration; 12113 /** @deprecated Use `factory.createEnumDeclaration` or the factory supplied by your transformation context instead. */ 12114 const createEnumDeclaration: typeof factory.createEnumDeclaration; 12115 /** @deprecated Use `factory.updateEnumDeclaration` or the factory supplied by your transformation context instead. */ 12116 const updateEnumDeclaration: typeof factory.updateEnumDeclaration; 12117 /** @deprecated Use `factory.createModuleDeclaration` or the factory supplied by your transformation context instead. */ 12118 const createModuleDeclaration: typeof factory.createModuleDeclaration; 12119 /** @deprecated Use `factory.updateModuleDeclaration` or the factory supplied by your transformation context instead. */ 12120 const updateModuleDeclaration: typeof factory.updateModuleDeclaration; 12121 /** @deprecated Use `factory.createModuleBlock` or the factory supplied by your transformation context instead. */ 12122 const createModuleBlock: typeof factory.createModuleBlock; 12123 /** @deprecated Use `factory.updateModuleBlock` or the factory supplied by your transformation context instead. */ 12124 const updateModuleBlock: typeof factory.updateModuleBlock; 12125 /** @deprecated Use `factory.createCaseBlock` or the factory supplied by your transformation context instead. */ 12126 const createCaseBlock: typeof factory.createCaseBlock; 12127 /** @deprecated Use `factory.updateCaseBlock` or the factory supplied by your transformation context instead. */ 12128 const updateCaseBlock: typeof factory.updateCaseBlock; 12129 /** @deprecated Use `factory.createNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */ 12130 const createNamespaceExportDeclaration: typeof factory.createNamespaceExportDeclaration; 12131 /** @deprecated Use `factory.updateNamespaceExportDeclaration` or the factory supplied by your transformation context instead. */ 12132 const updateNamespaceExportDeclaration: typeof factory.updateNamespaceExportDeclaration; 12133 /** @deprecated Use `factory.createImportEqualsDeclaration` or the factory supplied by your transformation context instead. */ 12134 const createImportEqualsDeclaration: typeof factory.createImportEqualsDeclaration; 12135 /** @deprecated Use `factory.updateImportEqualsDeclaration` or the factory supplied by your transformation context instead. */ 12136 const updateImportEqualsDeclaration: typeof factory.updateImportEqualsDeclaration; 12137 /** @deprecated Use `factory.createImportDeclaration` or the factory supplied by your transformation context instead. */ 12138 const createImportDeclaration: typeof factory.createImportDeclaration; 12139 /** @deprecated Use `factory.updateImportDeclaration` or the factory supplied by your transformation context instead. */ 12140 const updateImportDeclaration: typeof factory.updateImportDeclaration; 12141 /** @deprecated Use `factory.createNamespaceImport` or the factory supplied by your transformation context instead. */ 12142 const createNamespaceImport: typeof factory.createNamespaceImport; 12143 /** @deprecated Use `factory.updateNamespaceImport` or the factory supplied by your transformation context instead. */ 12144 const updateNamespaceImport: typeof factory.updateNamespaceImport; 12145 /** @deprecated Use `factory.createNamedImports` or the factory supplied by your transformation context instead. */ 12146 const createNamedImports: typeof factory.createNamedImports; 12147 /** @deprecated Use `factory.updateNamedImports` or the factory supplied by your transformation context instead. */ 12148 const updateNamedImports: typeof factory.updateNamedImports; 12149 /** @deprecated Use `factory.createImportSpecifier` or the factory supplied by your transformation context instead. */ 12150 const createImportSpecifier: typeof factory.createImportSpecifier; 12151 /** @deprecated Use `factory.updateImportSpecifier` or the factory supplied by your transformation context instead. */ 12152 const updateImportSpecifier: typeof factory.updateImportSpecifier; 12153 /** @deprecated Use `factory.createExportAssignment` or the factory supplied by your transformation context instead. */ 12154 const createExportAssignment: typeof factory.createExportAssignment; 12155 /** @deprecated Use `factory.updateExportAssignment` or the factory supplied by your transformation context instead. */ 12156 const updateExportAssignment: typeof factory.updateExportAssignment; 12157 /** @deprecated Use `factory.createNamedExports` or the factory supplied by your transformation context instead. */ 12158 const createNamedExports: typeof factory.createNamedExports; 12159 /** @deprecated Use `factory.updateNamedExports` or the factory supplied by your transformation context instead. */ 12160 const updateNamedExports: typeof factory.updateNamedExports; 12161 /** @deprecated Use `factory.createExportSpecifier` or the factory supplied by your transformation context instead. */ 12162 const createExportSpecifier: typeof factory.createExportSpecifier; 12163 /** @deprecated Use `factory.updateExportSpecifier` or the factory supplied by your transformation context instead. */ 12164 const updateExportSpecifier: typeof factory.updateExportSpecifier; 12165 /** @deprecated Use `factory.createExternalModuleReference` or the factory supplied by your transformation context instead. */ 12166 const createExternalModuleReference: typeof factory.createExternalModuleReference; 12167 /** @deprecated Use `factory.updateExternalModuleReference` or the factory supplied by your transformation context instead. */ 12168 const updateExternalModuleReference: typeof factory.updateExternalModuleReference; 12169 /** @deprecated Use `factory.createJSDocTypeExpression` or the factory supplied by your transformation context instead. */ 12170 const createJSDocTypeExpression: typeof factory.createJSDocTypeExpression; 12171 /** @deprecated Use `factory.createJSDocTypeTag` or the factory supplied by your transformation context instead. */ 12172 const createJSDocTypeTag: typeof factory.createJSDocTypeTag; 12173 /** @deprecated Use `factory.createJSDocReturnTag` or the factory supplied by your transformation context instead. */ 12174 const createJSDocReturnTag: typeof factory.createJSDocReturnTag; 12175 /** @deprecated Use `factory.createJSDocThisTag` or the factory supplied by your transformation context instead. */ 12176 const createJSDocThisTag: typeof factory.createJSDocThisTag; 12177 /** @deprecated Use `factory.createJSDocComment` or the factory supplied by your transformation context instead. */ 12178 const createJSDocComment: typeof factory.createJSDocComment; 12179 /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */ 12180 const createJSDocParameterTag: typeof factory.createJSDocParameterTag; 12181 /** @deprecated Use `factory.createJSDocClassTag` or the factory supplied by your transformation context instead. */ 12182 const createJSDocClassTag: typeof factory.createJSDocClassTag; 12183 /** @deprecated Use `factory.createJSDocAugmentsTag` or the factory supplied by your transformation context instead. */ 12184 const createJSDocAugmentsTag: typeof factory.createJSDocAugmentsTag; 12185 /** @deprecated Use `factory.createJSDocEnumTag` or the factory supplied by your transformation context instead. */ 12186 const createJSDocEnumTag: typeof factory.createJSDocEnumTag; 12187 /** @deprecated Use `factory.createJSDocTemplateTag` or the factory supplied by your transformation context instead. */ 12188 const createJSDocTemplateTag: typeof factory.createJSDocTemplateTag; 12189 /** @deprecated Use `factory.createJSDocTypedefTag` or the factory supplied by your transformation context instead. */ 12190 const createJSDocTypedefTag: typeof factory.createJSDocTypedefTag; 12191 /** @deprecated Use `factory.createJSDocCallbackTag` or the factory supplied by your transformation context instead. */ 12192 const createJSDocCallbackTag: typeof factory.createJSDocCallbackTag; 12193 /** @deprecated Use `factory.createJSDocSignature` or the factory supplied by your transformation context instead. */ 12194 const createJSDocSignature: typeof factory.createJSDocSignature; 12195 /** @deprecated Use `factory.createJSDocPropertyTag` or the factory supplied by your transformation context instead. */ 12196 const createJSDocPropertyTag: typeof factory.createJSDocPropertyTag; 12197 /** @deprecated Use `factory.createJSDocTypeLiteral` or the factory supplied by your transformation context instead. */ 12198 const createJSDocTypeLiteral: typeof factory.createJSDocTypeLiteral; 12199 /** @deprecated Use `factory.createJSDocImplementsTag` or the factory supplied by your transformation context instead. */ 12200 const createJSDocImplementsTag: typeof factory.createJSDocImplementsTag; 12201 /** @deprecated Use `factory.createJSDocAuthorTag` or the factory supplied by your transformation context instead. */ 12202 const createJSDocAuthorTag: typeof factory.createJSDocAuthorTag; 12203 /** @deprecated Use `factory.createJSDocPublicTag` or the factory supplied by your transformation context instead. */ 12204 const createJSDocPublicTag: typeof factory.createJSDocPublicTag; 12205 /** @deprecated Use `factory.createJSDocPrivateTag` or the factory supplied by your transformation context instead. */ 12206 const createJSDocPrivateTag: typeof factory.createJSDocPrivateTag; 12207 /** @deprecated Use `factory.createJSDocProtectedTag` or the factory supplied by your transformation context instead. */ 12208 const createJSDocProtectedTag: typeof factory.createJSDocProtectedTag; 12209 /** @deprecated Use `factory.createJSDocReadonlyTag` or the factory supplied by your transformation context instead. */ 12210 const createJSDocReadonlyTag: typeof factory.createJSDocReadonlyTag; 12211 /** @deprecated Use `factory.createJSDocUnknownTag` or the factory supplied by your transformation context instead. */ 12212 const createJSDocTag: typeof factory.createJSDocUnknownTag; 12213 /** @deprecated Use `factory.createJsxElement` or the factory supplied by your transformation context instead. */ 12214 const createJsxElement: typeof factory.createJsxElement; 12215 /** @deprecated Use `factory.updateJsxElement` or the factory supplied by your transformation context instead. */ 12216 const updateJsxElement: typeof factory.updateJsxElement; 12217 /** @deprecated Use `factory.createJsxSelfClosingElement` or the factory supplied by your transformation context instead. */ 12218 const createJsxSelfClosingElement: typeof factory.createJsxSelfClosingElement; 12219 /** @deprecated Use `factory.updateJsxSelfClosingElement` or the factory supplied by your transformation context instead. */ 12220 const updateJsxSelfClosingElement: typeof factory.updateJsxSelfClosingElement; 12221 /** @deprecated Use `factory.createJsxOpeningElement` or the factory supplied by your transformation context instead. */ 12222 const createJsxOpeningElement: typeof factory.createJsxOpeningElement; 12223 /** @deprecated Use `factory.updateJsxOpeningElement` or the factory supplied by your transformation context instead. */ 12224 const updateJsxOpeningElement: typeof factory.updateJsxOpeningElement; 12225 /** @deprecated Use `factory.createJsxClosingElement` or the factory supplied by your transformation context instead. */ 12226 const createJsxClosingElement: typeof factory.createJsxClosingElement; 12227 /** @deprecated Use `factory.updateJsxClosingElement` or the factory supplied by your transformation context instead. */ 12228 const updateJsxClosingElement: typeof factory.updateJsxClosingElement; 12229 /** @deprecated Use `factory.createJsxFragment` or the factory supplied by your transformation context instead. */ 12230 const createJsxFragment: typeof factory.createJsxFragment; 12231 /** @deprecated Use `factory.createJsxText` or the factory supplied by your transformation context instead. */ 12232 const createJsxText: typeof factory.createJsxText; 12233 /** @deprecated Use `factory.updateJsxText` or the factory supplied by your transformation context instead. */ 12234 const updateJsxText: typeof factory.updateJsxText; 12235 /** @deprecated Use `factory.createJsxOpeningFragment` or the factory supplied by your transformation context instead. */ 12236 const createJsxOpeningFragment: typeof factory.createJsxOpeningFragment; 12237 /** @deprecated Use `factory.createJsxJsxClosingFragment` or the factory supplied by your transformation context instead. */ 12238 const createJsxJsxClosingFragment: typeof factory.createJsxJsxClosingFragment; 12239 /** @deprecated Use `factory.updateJsxFragment` or the factory supplied by your transformation context instead. */ 12240 const updateJsxFragment: typeof factory.updateJsxFragment; 12241 /** @deprecated Use `factory.createJsxAttribute` or the factory supplied by your transformation context instead. */ 12242 const createJsxAttribute: typeof factory.createJsxAttribute; 12243 /** @deprecated Use `factory.updateJsxAttribute` or the factory supplied by your transformation context instead. */ 12244 const updateJsxAttribute: typeof factory.updateJsxAttribute; 12245 /** @deprecated Use `factory.createJsxAttributes` or the factory supplied by your transformation context instead. */ 12246 const createJsxAttributes: typeof factory.createJsxAttributes; 12247 /** @deprecated Use `factory.updateJsxAttributes` or the factory supplied by your transformation context instead. */ 12248 const updateJsxAttributes: typeof factory.updateJsxAttributes; 12249 /** @deprecated Use `factory.createJsxSpreadAttribute` or the factory supplied by your transformation context instead. */ 12250 const createJsxSpreadAttribute: typeof factory.createJsxSpreadAttribute; 12251 /** @deprecated Use `factory.updateJsxSpreadAttribute` or the factory supplied by your transformation context instead. */ 12252 const updateJsxSpreadAttribute: typeof factory.updateJsxSpreadAttribute; 12253 /** @deprecated Use `factory.createJsxExpression` or the factory supplied by your transformation context instead. */ 12254 const createJsxExpression: typeof factory.createJsxExpression; 12255 /** @deprecated Use `factory.updateJsxExpression` or the factory supplied by your transformation context instead. */ 12256 const updateJsxExpression: typeof factory.updateJsxExpression; 12257 /** @deprecated Use `factory.createCaseClause` or the factory supplied by your transformation context instead. */ 12258 const createCaseClause: typeof factory.createCaseClause; 12259 /** @deprecated Use `factory.updateCaseClause` or the factory supplied by your transformation context instead. */ 12260 const updateCaseClause: typeof factory.updateCaseClause; 12261 /** @deprecated Use `factory.createDefaultClause` or the factory supplied by your transformation context instead. */ 12262 const createDefaultClause: typeof factory.createDefaultClause; 12263 /** @deprecated Use `factory.updateDefaultClause` or the factory supplied by your transformation context instead. */ 12264 const updateDefaultClause: typeof factory.updateDefaultClause; 12265 /** @deprecated Use `factory.createHeritageClause` or the factory supplied by your transformation context instead. */ 12266 const createHeritageClause: typeof factory.createHeritageClause; 12267 /** @deprecated Use `factory.updateHeritageClause` or the factory supplied by your transformation context instead. */ 12268 const updateHeritageClause: typeof factory.updateHeritageClause; 12269 /** @deprecated Use `factory.createCatchClause` or the factory supplied by your transformation context instead. */ 12270 const createCatchClause: typeof factory.createCatchClause; 12271 /** @deprecated Use `factory.updateCatchClause` or the factory supplied by your transformation context instead. */ 12272 const updateCatchClause: typeof factory.updateCatchClause; 12273 /** @deprecated Use `factory.createPropertyAssignment` or the factory supplied by your transformation context instead. */ 12274 const createPropertyAssignment: typeof factory.createPropertyAssignment; 12275 /** @deprecated Use `factory.updatePropertyAssignment` or the factory supplied by your transformation context instead. */ 12276 const updatePropertyAssignment: typeof factory.updatePropertyAssignment; 12277 /** @deprecated Use `factory.createShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */ 12278 const createShorthandPropertyAssignment: typeof factory.createShorthandPropertyAssignment; 12279 /** @deprecated Use `factory.updateShorthandPropertyAssignment` or the factory supplied by your transformation context instead. */ 12280 const updateShorthandPropertyAssignment: typeof factory.updateShorthandPropertyAssignment; 12281 /** @deprecated Use `factory.createSpreadAssignment` or the factory supplied by your transformation context instead. */ 12282 const createSpreadAssignment: typeof factory.createSpreadAssignment; 12283 /** @deprecated Use `factory.updateSpreadAssignment` or the factory supplied by your transformation context instead. */ 12284 const updateSpreadAssignment: typeof factory.updateSpreadAssignment; 12285 /** @deprecated Use `factory.createEnumMember` or the factory supplied by your transformation context instead. */ 12286 const createEnumMember: typeof factory.createEnumMember; 12287 /** @deprecated Use `factory.updateEnumMember` or the factory supplied by your transformation context instead. */ 12288 const updateEnumMember: typeof factory.updateEnumMember; 12289 /** @deprecated Use `factory.updateSourceFile` or the factory supplied by your transformation context instead. */ 12290 const updateSourceFileNode: typeof factory.updateSourceFile; 12291 /** @deprecated Use `factory.createNotEmittedStatement` or the factory supplied by your transformation context instead. */ 12292 const createNotEmittedStatement: typeof factory.createNotEmittedStatement; 12293 /** @deprecated Use `factory.createPartiallyEmittedExpression` or the factory supplied by your transformation context instead. */ 12294 const createPartiallyEmittedExpression: typeof factory.createPartiallyEmittedExpression; 12295 /** @deprecated Use `factory.updatePartiallyEmittedExpression` or the factory supplied by your transformation context instead. */ 12296 const updatePartiallyEmittedExpression: typeof factory.updatePartiallyEmittedExpression; 12297 /** @deprecated Use `factory.createCommaListExpression` or the factory supplied by your transformation context instead. */ 12298 const createCommaList: typeof factory.createCommaListExpression; 12299 /** @deprecated Use `factory.updateCommaListExpression` or the factory supplied by your transformation context instead. */ 12300 const updateCommaList: typeof factory.updateCommaListExpression; 12301 /** @deprecated Use `factory.createBundle` or the factory supplied by your transformation context instead. */ 12302 const createBundle: typeof factory.createBundle; 12303 /** @deprecated Use `factory.updateBundle` or the factory supplied by your transformation context instead. */ 12304 const updateBundle: typeof factory.updateBundle; 12305 /** @deprecated Use `factory.createImmediatelyInvokedFunctionExpression` or the factory supplied by your transformation context instead. */ 12306 const createImmediatelyInvokedFunctionExpression: typeof factory.createImmediatelyInvokedFunctionExpression; 12307 /** @deprecated Use `factory.createImmediatelyInvokedArrowFunction` or the factory supplied by your transformation context instead. */ 12308 const createImmediatelyInvokedArrowFunction: typeof factory.createImmediatelyInvokedArrowFunction; 12309 /** @deprecated Use `factory.createVoidZero` or the factory supplied by your transformation context instead. */ 12310 const createVoidZero: typeof factory.createVoidZero; 12311 /** @deprecated Use `factory.createExportDefault` or the factory supplied by your transformation context instead. */ 12312 const createExportDefault: typeof factory.createExportDefault; 12313 /** @deprecated Use `factory.createExternalModuleExport` or the factory supplied by your transformation context instead. */ 12314 const createExternalModuleExport: typeof factory.createExternalModuleExport; 12315 /** @deprecated Use `factory.createNamespaceExport` or the factory supplied by your transformation context instead. */ 12316 const createNamespaceExport: typeof factory.createNamespaceExport; 12317 /** @deprecated Use `factory.updateNamespaceExport` or the factory supplied by your transformation context instead. */ 12318 const updateNamespaceExport: typeof factory.updateNamespaceExport; 12319 /** @deprecated Use `factory.createToken` or the factory supplied by your transformation context instead. */ 12320 const createToken: <TKind extends SyntaxKind>(kind: TKind) => Token<TKind>; 12321 /** @deprecated Use `factory.createIdentifier` or the factory supplied by your transformation context instead. */ 12322 const createIdentifier: (text: string) => Identifier; 12323 /** @deprecated Use `factory.createTempVariable` or the factory supplied by your transformation context instead. */ 12324 const createTempVariable: (recordTempVariable: ((node: Identifier) => void) | undefined) => Identifier; 12325 /** @deprecated Use `factory.getGeneratedNameForNode` or the factory supplied by your transformation context instead. */ 12326 const getGeneratedNameForNode: (node: Node | undefined) => Identifier; 12327 /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic)` or the factory supplied by your transformation context instead. */ 12328 const createOptimisticUniqueName: (text: string) => Identifier; 12329 /** @deprecated Use `factory.createUniqueName(text, GeneratedIdentifierFlags.Optimistic | GeneratedIdentifierFlags.FileLevel)` or the factory supplied by your transformation context instead. */ 12330 const createFileLevelUniqueName: (text: string) => Identifier; 12331 /** @deprecated Use `factory.createIndexSignature` or the factory supplied by your transformation context instead. */ 12332 const createIndexSignature: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode) => IndexSignatureDeclaration; 12333 /** @deprecated Use `factory.createTypePredicateNode` or the factory supplied by your transformation context instead. */ 12334 const createTypePredicateNode: (parameterName: Identifier | ThisTypeNode | string, type: TypeNode) => TypePredicateNode; 12335 /** @deprecated Use `factory.updateTypePredicateNode` or the factory supplied by your transformation context instead. */ 12336 const updateTypePredicateNode: (node: TypePredicateNode, parameterName: Identifier | ThisTypeNode, type: TypeNode) => TypePredicateNode; 12337 /** @deprecated Use `factory.createStringLiteral`, `factory.createStringLiteralFromNode`, `factory.createNumericLiteral`, `factory.createBigIntLiteral`, `factory.createTrue`, `factory.createFalse`, or the factory supplied by your transformation context instead. */ 12338 const createLiteral: { 12339 (value: string | StringLiteral | NoSubstitutionTemplateLiteral | NumericLiteral | Identifier): StringLiteral; 12340 (value: number | PseudoBigInt): NumericLiteral; 12341 (value: boolean): BooleanLiteral; 12342 (value: string | number | PseudoBigInt | boolean): PrimaryExpression; 12343 }; 12344 /** @deprecated Use `factory.createMethodSignature` or the factory supplied by your transformation context instead. */ 12345 const createMethodSignature: (typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, name: string | PropertyName, questionToken: QuestionToken | undefined) => MethodSignature; 12346 /** @deprecated Use `factory.updateMethodSignature` or the factory supplied by your transformation context instead. */ 12347 const updateMethodSignature: (node: MethodSignature, typeParameters: NodeArray<TypeParameterDeclaration> | undefined, parameters: NodeArray<ParameterDeclaration>, type: TypeNode | undefined, name: PropertyName, questionToken: QuestionToken | undefined) => MethodSignature; 12348 /** @deprecated Use `factory.createTypeOperatorNode` or the factory supplied by your transformation context instead. */ 12349 const createTypeOperatorNode: { 12350 (type: TypeNode): TypeOperatorNode; 12351 (operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode; 12352 }; 12353 /** @deprecated Use `factory.createTaggedTemplate` or the factory supplied by your transformation context instead. */ 12354 const createTaggedTemplate: { 12355 (tag: Expression, template: TemplateLiteral): TaggedTemplateExpression; 12356 (tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression; 12357 }; 12358 /** @deprecated Use `factory.updateTaggedTemplate` or the factory supplied by your transformation context instead. */ 12359 const updateTaggedTemplate: { 12360 (node: TaggedTemplateExpression, tag: Expression, template: TemplateLiteral): TaggedTemplateExpression; 12361 (node: TaggedTemplateExpression, tag: Expression, typeArguments: readonly TypeNode[] | undefined, template: TemplateLiteral): TaggedTemplateExpression; 12362 }; 12363 /** @deprecated Use `factory.updateBinary` or the factory supplied by your transformation context instead. */ 12364 const updateBinary: (node: BinaryExpression, left: Expression, right: Expression, operator?: BinaryOperator | BinaryOperatorToken) => BinaryExpression; 12365 /** @deprecated Use `factory.createConditional` or the factory supplied by your transformation context instead. */ 12366 const createConditional: { 12367 (condition: Expression, whenTrue: Expression, whenFalse: Expression): ConditionalExpression; 12368 (condition: Expression, questionToken: QuestionToken, whenTrue: Expression, colonToken: ColonToken, whenFalse: Expression): ConditionalExpression; 12369 }; 12370 /** @deprecated Use `factory.createYield` or the factory supplied by your transformation context instead. */ 12371 const createYield: { 12372 (expression?: Expression | undefined): YieldExpression; 12373 (asteriskToken: AsteriskToken | undefined, expression: Expression): YieldExpression; 12374 }; 12375 /** @deprecated Use `factory.createClassExpression` or the factory supplied by your transformation context instead. */ 12376 const createClassExpression: (modifiers: readonly Modifier[] | undefined, name: string | Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression; 12377 /** @deprecated Use `factory.updateClassExpression` or the factory supplied by your transformation context instead. */ 12378 const updateClassExpression: (node: ClassExpression, modifiers: readonly Modifier[] | undefined, name: Identifier | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, heritageClauses: readonly HeritageClause[] | undefined, members: readonly ClassElement[]) => ClassExpression; 12379 /** @deprecated Use `factory.createPropertySignature` or the factory supplied by your transformation context instead. */ 12380 const createPropertySignature: (modifiers: readonly Modifier[] | undefined, name: PropertyName | string, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer?: Expression | undefined) => PropertySignature; 12381 /** @deprecated Use `factory.updatePropertySignature` or the factory supplied by your transformation context instead. */ 12382 const updatePropertySignature: (node: PropertySignature, modifiers: readonly Modifier[] | undefined, name: PropertyName, questionToken: QuestionToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined) => PropertySignature; 12383 /** @deprecated Use `factory.createExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */ 12384 const createExpressionWithTypeArguments: (typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments; 12385 /** @deprecated Use `factory.updateExpressionWithTypeArguments` or the factory supplied by your transformation context instead. */ 12386 const updateExpressionWithTypeArguments: (node: ExpressionWithTypeArguments, typeArguments: readonly TypeNode[] | undefined, expression: Expression) => ExpressionWithTypeArguments; 12387 /** @deprecated Use `factory.createArrowFunction` or the factory supplied by your transformation context instead. */ 12388 const createArrowFunction: { 12389 (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken | undefined, body: ConciseBody): ArrowFunction; 12390 (modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction; 12391 }; 12392 /** @deprecated Use `factory.updateArrowFunction` or the factory supplied by your transformation context instead. */ 12393 const updateArrowFunction: { 12394 (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, equalsGreaterThanToken: EqualsGreaterThanToken, body: ConciseBody): ArrowFunction; 12395 (node: ArrowFunction, modifiers: readonly Modifier[] | undefined, typeParameters: readonly TypeParameterDeclaration[] | undefined, parameters: readonly ParameterDeclaration[], type: TypeNode | undefined, body: ConciseBody): ArrowFunction; 12396 }; 12397 /** @deprecated Use `factory.createVariableDeclaration` or the factory supplied by your transformation context instead. */ 12398 const createVariableDeclaration: { 12399 (name: string | BindingName, type?: TypeNode | undefined, initializer?: Expression | undefined): VariableDeclaration; 12400 (name: string | BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; 12401 }; 12402 /** @deprecated Use `factory.updateVariableDeclaration` or the factory supplied by your transformation context instead. */ 12403 const updateVariableDeclaration: { 12404 (node: VariableDeclaration, name: BindingName, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; 12405 (node: VariableDeclaration, name: BindingName, exclamationToken: ExclamationToken | undefined, type: TypeNode | undefined, initializer: Expression | undefined): VariableDeclaration; 12406 }; 12407 /** @deprecated Use `factory.createImportClause` or the factory supplied by your transformation context instead. */ 12408 const createImportClause: (name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly?: any) => ImportClause; 12409 /** @deprecated Use `factory.updateImportClause` or the factory supplied by your transformation context instead. */ 12410 const updateImportClause: (node: ImportClause, name: Identifier | undefined, namedBindings: NamedImportBindings | undefined, isTypeOnly: boolean) => ImportClause; 12411 /** @deprecated Use `factory.createExportDeclaration` or the factory supplied by your transformation context instead. */ 12412 const createExportDeclaration: (decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier?: Expression | undefined, isTypeOnly?: any) => ExportDeclaration; 12413 /** @deprecated Use `factory.updateExportDeclaration` or the factory supplied by your transformation context instead. */ 12414 const updateExportDeclaration: (node: ExportDeclaration, decorators: readonly Decorator[] | undefined, modifiers: readonly Modifier[] | undefined, exportClause: NamedExportBindings | undefined, moduleSpecifier: Expression | undefined, isTypeOnly: boolean) => ExportDeclaration; 12415 /** @deprecated Use `factory.createJSDocParameterTag` or the factory supplied by your transformation context instead. */ 12416 const createJSDocParamTag: (name: EntityName, isBracketed: boolean, typeExpression?: JSDocTypeExpression | undefined, comment?: string | undefined) => JSDocParameterTag; 12417 /** @deprecated Use `factory.createComma` or the factory supplied by your transformation context instead. */ 12418 const createComma: (left: Expression, right: Expression) => Expression; 12419 /** @deprecated Use `factory.createLessThan` or the factory supplied by your transformation context instead. */ 12420 const createLessThan: (left: Expression, right: Expression) => Expression; 12421 /** @deprecated Use `factory.createAssignment` or the factory supplied by your transformation context instead. */ 12422 const createAssignment: (left: Expression, right: Expression) => BinaryExpression; 12423 /** @deprecated Use `factory.createStrictEquality` or the factory supplied by your transformation context instead. */ 12424 const createStrictEquality: (left: Expression, right: Expression) => BinaryExpression; 12425 /** @deprecated Use `factory.createStrictInequality` or the factory supplied by your transformation context instead. */ 12426 const createStrictInequality: (left: Expression, right: Expression) => BinaryExpression; 12427 /** @deprecated Use `factory.createAdd` or the factory supplied by your transformation context instead. */ 12428 const createAdd: (left: Expression, right: Expression) => BinaryExpression; 12429 /** @deprecated Use `factory.createSubtract` or the factory supplied by your transformation context instead. */ 12430 const createSubtract: (left: Expression, right: Expression) => BinaryExpression; 12431 /** @deprecated Use `factory.createLogicalAnd` or the factory supplied by your transformation context instead. */ 12432 const createLogicalAnd: (left: Expression, right: Expression) => BinaryExpression; 12433 /** @deprecated Use `factory.createLogicalOr` or the factory supplied by your transformation context instead. */ 12434 const createLogicalOr: (left: Expression, right: Expression) => BinaryExpression; 12435 /** @deprecated Use `factory.createPostfixIncrement` or the factory supplied by your transformation context instead. */ 12436 const createPostfixIncrement: (operand: Expression) => PostfixUnaryExpression; 12437 /** @deprecated Use `factory.createLogicalNot` or the factory supplied by your transformation context instead. */ 12438 const createLogicalNot: (operand: Expression) => PrefixUnaryExpression; 12439 /** @deprecated Use an appropriate `factory` method instead. */ 12440 const createNode: (kind: SyntaxKind, pos?: any, end?: any) => Node; 12441 /** 12442 * Creates a shallow, memberwise clone of a node ~for mutation~ with its `pos`, `end`, and `parent` set. 12443 * 12444 * NOTE: It is unsafe to change any properties of a `Node` that relate to its AST children, as those changes won't be 12445 * captured with respect to transformations. 12446 * 12447 * @deprecated Use an appropriate `factory.update...` method instead, use `setCommentRange` or `setSourceMapRange`, and avoid setting `parent`. 12448 */ 12449 const getMutableClone: <T extends Node>(node: T) => T; 12450 /** @deprecated Use `isTypeAssertionExpression` instead. */ 12451 const isTypeAssertion: (node: Node) => node is TypeAssertion; 12452 /** 12453 * @deprecated Use `isMemberName` instead. 12454 */ 12455 const isIdentifierOrPrivateIdentifier: (node: Node) => node is MemberName; 12456 namespace ArkTSLinter_1_0 { 12457 interface AutofixInfo { 12458 problemID: string; 12459 start: number; 12460 end: number; 12461 } 12462 interface CommandLineOptions { 12463 strictMode?: boolean; 12464 ideMode?: boolean; 12465 logTscErrors?: boolean; 12466 warningsAsErrors: boolean; 12467 parsedConfigFile?: ParsedCommandLine; 12468 inputFiles: string[]; 12469 autofixInfo?: AutofixInfo[]; 12470 } 12471 interface LintOptions { 12472 cmdOptions: CommandLineOptions; 12473 tsProgram?: Program; 12474 [key: string]: any; 12475 } 12476 const cookBookMsg: string[]; 12477 const cookBookTag: string[]; 12478 interface DiagnosticChecker { 12479 checkDiagnosticMessage(msgText: string | DiagnosticMessageChain): boolean; 12480 } 12481 const TYPE_0_IS_NOT_ASSIGNABLE_TO_TYPE_1_ERROR_CODE = 2322; 12482 const TYPE_UNKNOWN_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp; 12483 const TYPE_NULL_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp; 12484 const TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp; 12485 const ARGUMENT_OF_TYPE_0_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_ERROR_CODE = 2345; 12486 const ARGUMENT_OF_TYPE_NULL_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp; 12487 const ARGUMENT_OF_TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp; 12488 const NO_OVERLOAD_MATCHES_THIS_CALL_ERROR_CODE = 2769; 12489 class LibraryTypeCallDiagnosticChecker implements DiagnosticChecker { 12490 inLibCall: boolean; 12491 diagnosticMessages: Array<DiagnosticMessageChain> | undefined; 12492 filteredDiagnosticMessages: DiagnosticMessageChain[]; 12493 constructor(filteredDiagnosticMessages: DiagnosticMessageChain[]); 12494 configure(inLibCall: boolean, diagnosticMessages: Array<DiagnosticMessageChain>): void; 12495 checkMessageText(msg: string): boolean; 12496 checkMessageChain(chain: DiagnosticMessageChain): boolean; 12497 checkFilteredDiagnosticMessages(msgText: DiagnosticMessageChain | string): boolean; 12498 checkDiagnosticMessage(msgText: string | DiagnosticMessageChain): boolean; 12499 } 12500 function setTypeChecker(tsTypeChecker: TypeChecker): void; 12501 function clearTypeChecker(): void; 12502 function setTestMode(tsTestMode: boolean): void; 12503 function getStartPos(nodeOrComment: Node | CommentRange): number; 12504 function getEndPos(nodeOrComment: Node | CommentRange): number; 12505 function isAssignmentOperator(tsBinOp: BinaryOperatorToken): boolean; 12506 function isTypedArray(tsType: TypeNode | undefined): boolean; 12507 function isType(tsType: TypeNode | undefined, checkType: string): boolean; 12508 function entityNameToString(name: EntityName): string; 12509 function isNumberType(tsType: Type): boolean; 12510 function isBooleanType(tsType: Type): boolean; 12511 function isStringLikeType(tsType: Type): boolean; 12512 function isStringType(type: Type): boolean; 12513 function isPrimitiveEnumType(type: Type, primitiveType: TypeFlags): boolean; 12514 function isPrimitiveEnumMemberType(type: Type, primitiveType: TypeFlags): boolean; 12515 function unwrapParenthesizedType(tsType: TypeNode): TypeNode; 12516 function findParentIf(asExpr: AsExpression): IfStatement | null; 12517 function isDestructuringAssignmentLHS(tsExpr: ArrayLiteralExpression | ObjectLiteralExpression): boolean; 12518 function isEnumType(tsType: Type): boolean; 12519 function isEnumMemberType(tsType: Type): boolean; 12520 function isObjectLiteralType(tsType: Type): boolean; 12521 function isNumberLikeType(tsType: Type): boolean; 12522 function hasModifier(tsModifiers: readonly Modifier[] | undefined, tsModifierKind: number): boolean; 12523 function unwrapParenthesized(tsExpr: Expression): Expression; 12524 function followIfAliased(sym: Symbol): Symbol; 12525 function trueSymbolAtLocation(node: Node): Symbol | undefined; 12526 function clearTrueSymbolAtLocationCache(): void; 12527 function isTypeDeclSyntaxKind(kind: SyntaxKind): boolean; 12528 function symbolHasDuplicateName(symbol: Symbol, tsDeclKind: SyntaxKind): boolean; 12529 function isReferenceType(tsType: Type): boolean; 12530 function isPrimitiveType(type: Type): boolean; 12531 function isTypeSymbol(symbol: Symbol | undefined): boolean; 12532 function isGenericArrayType(tsType: Type): tsType is TypeReference; 12533 function isDerivedFrom(tsType: Type, checkType: CheckType): tsType is TypeReference; 12534 function isTypeReference(tsType: Type): tsType is TypeReference; 12535 function isNullType(tsTypeNode: TypeNode): boolean; 12536 function isThisOrSuperExpr(tsExpr: Expression): boolean; 12537 function isPrototypeSymbol(symbol: Symbol | undefined): boolean; 12538 function isFunctionSymbol(symbol: Symbol | undefined): boolean; 12539 function isInterfaceType(tsType: Type | undefined): boolean; 12540 function isAnyType(tsType: Type): tsType is TypeReference; 12541 function isUnknownType(tsType: Type): boolean; 12542 function isUnsupportedType(tsType: Type): boolean; 12543 function isUnsupportedUnionType(tsType: Type): boolean; 12544 function isFunctionOrMethod(tsSymbol: Symbol | undefined): boolean; 12545 function isMethodAssignment(tsSymbol: Symbol | undefined): boolean; 12546 function getDeclaration(tsSymbol: Symbol | undefined): Declaration | undefined; 12547 function isValidEnumMemberInit(tsExpr: Expression): boolean; 12548 function isCompileTimeExpression(tsExpr: Expression): boolean; 12549 function isConst(tsNode: Node): boolean; 12550 function isNumberConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean; 12551 function isIntegerConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean; 12552 function isStringConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression): boolean; 12553 function relatedByInheritanceOrIdentical(typeA: Type, typeB: Type): boolean; 12554 function needToDeduceStructuralIdentity(typeFrom: Type, typeTo: Type, allowPromotion?: boolean): boolean; 12555 function hasPredecessor(node: Node, predicate: (node: Node) => boolean): boolean; 12556 function processParentTypes(parentTypes: NodeArray<ExpressionWithTypeArguments>, typeB: Type, processInterfaces: boolean): boolean; 12557 function processParentTypesCheck(parentTypes: NodeArray<ExpressionWithTypeArguments>, checkType: CheckType): boolean; 12558 function isObjectType(tsType: Type): boolean; 12559 function logTscDiagnostic(diagnostics: readonly Diagnostic[], log: (message: any, ...args: any[]) => void): void; 12560 function encodeProblemInfo(problem: ProblemInfo): string; 12561 function decodeAutofixInfo(info: string): AutofixInfo; 12562 function isCallToFunctionWithOmittedReturnType(tsExpr: Expression): boolean; 12563 function validateObjectLiteralType(type: Type | undefined): boolean; 12564 function isStructDeclarationKind(kind: SyntaxKind): boolean; 12565 function isStructDeclaration(node: Node): boolean; 12566 function isStructObjectInitializer(objectLiteral: ObjectLiteralExpression): boolean; 12567 function hasMethods(type: Type): boolean; 12568 function isExpressionAssignableToType(lhsType: Type | undefined, rhsExpr: Expression): boolean; 12569 function isLiteralType(type: Type): boolean; 12570 function validateFields(type: Type, objectLiteral: ObjectLiteralExpression): boolean; 12571 function isSupportedType(typeNode: TypeNode): boolean; 12572 function isStruct(symbol: Symbol): boolean; 12573 function getParentSymbolName(symbol: Symbol): string | undefined; 12574 function isGlobalSymbol(symbol: Symbol): boolean; 12575 function isSymbolAPI(symbol: Symbol): boolean; 12576 function isStdSymbol(symbol: Symbol): boolean; 12577 function isSymbolIterator(symbol: Symbol): boolean; 12578 function isDefaultImport(importSpec: ImportSpecifier): boolean; 12579 function hasAccessModifier(decl: Declaration): boolean; 12580 function getModifier(modifiers: readonly Modifier[] | undefined, modifierKind: SyntaxKind): Modifier | undefined; 12581 function getAccessModifier(modifiers: readonly Modifier[] | undefined): Modifier | undefined; 12582 function isStdRecordType(type: Type): boolean; 12583 function isStdPartialType(type: Type): boolean; 12584 function isStdRequiredType(type: Type): boolean; 12585 function isStdReadonlyType(type: Type): boolean; 12586 function isLibraryType(type: Type): boolean; 12587 function hasLibraryType(node: Node): boolean; 12588 function isLibrarySymbol(sym: Symbol | undefined): boolean; 12589 function pathContainsDirectory(targetPath: string, dir: string): boolean; 12590 function getScriptKind(srcFile: SourceFile): ScriptKind; 12591 function isStdLibraryType(type: Type): boolean; 12592 function isStdLibrarySymbol(sym: Symbol | undefined): boolean; 12593 function isIntrinsicObjectType(type: Type): boolean; 12594 function isDynamicType(type: Type | undefined): boolean | undefined; 12595 function isDynamicLiteralInitializer(expr: Expression): boolean; 12596 function isEsObjectType(typeNode: TypeNode): boolean; 12597 function isInsideBlock(node: Node): boolean; 12598 function isEsObjectPossiblyAllowed(typeRef: TypeReferenceNode): boolean; 12599 function isValueAssignableToESObject(node: Node): boolean; 12600 function getVariableDeclarationTypeNode(node: Node): TypeNode | undefined; 12601 function getSymbolDeclarationTypeNode(sym: Symbol): TypeNode | undefined; 12602 function hasEsObjectType(node: Node): boolean; 12603 function symbolHasEsObjectType(sym: Symbol): boolean; 12604 function isEsObjectSymbol(sym: Symbol): boolean; 12605 function isAnonymousType(type: Type): boolean; 12606 function getSymbolOfCallExpression(callExpr: CallExpression): Symbol | undefined; 12607 function typeIsRecursive(topType: Type, type?: Type | undefined): boolean; 12608 const PROPERTY_HAS_NO_INITIALIZER_ERROR_CODE = 2564; 12609 const NON_INITIALIZABLE_PROPERTY_DECORATORS: string[]; 12610 const NON_INITIALIZABLE_PROPERTY_ClASS_DECORATORS: string[]; 12611 const LIMITED_STANDARD_UTILITY_TYPES: string[]; 12612 const ALLOWED_STD_SYMBOL_API: string[]; 12613 enum ProblemSeverity { 12614 WARNING = 1, 12615 ERROR = 2 12616 } 12617 const ARKTS_IGNORE_DIRS: string[]; 12618 const ARKTS_IGNORE_FILES: string[]; 12619 enum CheckType { 12620 Array = 0, 12621 String = "String", 12622 Set = "Set", 12623 Map = "Map", 12624 Error = "Error" 12625 } 12626 const ES_OBJECT = "ESObject"; 12627 const LIMITED_STD_GLOBAL_FUNC: string[]; 12628 const LIMITED_STD_OBJECT_API: string[]; 12629 const LIMITED_STD_REFLECT_API: string[]; 12630 const LIMITED_STD_PROXYHANDLER_API: string[]; 12631 const ARKUI_DECORATORS: string[]; 12632 const FUNCTION_HAS_NO_RETURN_ERROR_CODE = 2366; 12633 const NON_RETURN_FUNCTION_DECORATORS: string[]; 12634 const STANDARD_LIBRARIES: string[]; 12635 const TYPED_ARRAYS: string[]; 12636 enum FaultID { 12637 AnyType = 0, 12638 SymbolType = 1, 12639 ObjectLiteralNoContextType = 2, 12640 ArrayLiteralNoContextType = 3, 12641 ComputedPropertyName = 4, 12642 LiteralAsPropertyName = 5, 12643 TypeQuery = 6, 12644 RegexLiteral = 7, 12645 IsOperator = 8, 12646 DestructuringParameter = 9, 12647 YieldExpression = 10, 12648 InterfaceMerging = 11, 12649 EnumMerging = 12, 12650 InterfaceExtendsClass = 13, 12651 IndexMember = 14, 12652 WithStatement = 15, 12653 ThrowStatement = 16, 12654 IndexedAccessType = 17, 12655 UnknownType = 18, 12656 ForInStatement = 19, 12657 InOperator = 20, 12658 ImportFromPath = 21, 12659 FunctionExpression = 22, 12660 IntersectionType = 23, 12661 ObjectTypeLiteral = 24, 12662 CommaOperator = 25, 12663 LimitedReturnTypeInference = 26, 12664 LambdaWithTypeParameters = 27, 12665 ClassExpression = 28, 12666 DestructuringAssignment = 29, 12667 DestructuringDeclaration = 30, 12668 VarDeclaration = 31, 12669 CatchWithUnsupportedType = 32, 12670 DeleteOperator = 33, 12671 DeclWithDuplicateName = 34, 12672 UnaryArithmNotNumber = 35, 12673 ConstructorType = 36, 12674 ConstructorIface = 37, 12675 ConstructorFuncs = 38, 12676 CallSignature = 39, 12677 TypeAssertion = 40, 12678 PrivateIdentifier = 41, 12679 LocalFunction = 42, 12680 ConditionalType = 43, 12681 MappedType = 44, 12682 NamespaceAsObject = 45, 12683 ClassAsObject = 46, 12684 NonDeclarationInNamespace = 47, 12685 GeneratorFunction = 48, 12686 FunctionContainsThis = 49, 12687 PropertyAccessByIndex = 50, 12688 JsxElement = 51, 12689 EnumMemberNonConstInit = 52, 12690 ImplementsClass = 53, 12691 NoUndefinedPropAccess = 54, 12692 MultipleStaticBlocks = 55, 12693 ThisType = 56, 12694 IntefaceExtendDifProps = 57, 12695 StructuralIdentity = 58, 12696 DefaultImport = 59, 12697 ExportAssignment = 60, 12698 ImportAssignment = 61, 12699 GenericCallNoTypeArgs = 62, 12700 ParameterProperties = 63, 12701 InstanceofUnsupported = 64, 12702 ShorthandAmbientModuleDecl = 65, 12703 WildcardsInModuleName = 66, 12704 UMDModuleDefinition = 67, 12705 NewTarget = 68, 12706 DefiniteAssignment = 69, 12707 Prototype = 70, 12708 GlobalThis = 71, 12709 UtilityType = 72, 12710 PropertyDeclOnFunction = 73, 12711 FunctionApplyBindCall = 74, 12712 ConstAssertion = 75, 12713 ImportAssertion = 76, 12714 SpreadOperator = 77, 12715 LimitedStdLibApi = 78, 12716 ErrorSuppression = 79, 12717 StrictDiagnostic = 80, 12718 UnsupportedDecorators = 81, 12719 ImportAfterStatement = 82, 12720 EsObjectType = 83, 12721 LAST_ID = 84 12722 } 12723 class FaultAttributs { 12724 migratable?: boolean; 12725 warning?: boolean; 12726 cookBookRef: string; 12727 } 12728 const faultsAttrs: FaultAttributs[]; 12729 function shouldAutofix(node: Node, faultID: FaultID): boolean; 12730 function fixLiteralAsPropertyName(node: Node): Autofix[] | undefined; 12731 function fixPropertyAccessByIndex(node: Node): Autofix[] | undefined; 12732 function fixFunctionExpression(funcExpr: FunctionExpression, params?: NodeArray<ParameterDeclaration>, retType?: TypeNode | undefined): Autofix; 12733 function fixReturnType(funcLikeDecl: FunctionLikeDeclaration, typeNode: TypeNode): Autofix; 12734 function fixCtorParameterProperties(ctorDecl: ConstructorDeclaration, paramTypes: TypeNode[]): Autofix[] | undefined; 12735 const AUTOFIX_ALL: AutofixInfo; 12736 const autofixInfo: AutofixInfo[]; 12737 interface Autofix { 12738 replacementText: string; 12739 start: number; 12740 end: number; 12741 } 12742 class LinterConfig { 12743 static nodeDesc: string[]; 12744 static tsSyntaxKindNames: string[]; 12745 static initStatic(): void; 12746 static terminalTokens: Set<SyntaxKind>; 12747 static incrementOnlyTokens: ESMap<SyntaxKind, FaultID>; 12748 } 12749 interface ProblemInfo { 12750 line: number; 12751 column: number; 12752 start: number; 12753 end: number; 12754 type: string; 12755 severity: number; 12756 problem: string; 12757 suggest: string; 12758 rule: string; 12759 ruleTag: number; 12760 autofixable: boolean; 12761 autofix?: Autofix[]; 12762 } 12763 class TypeScriptLinter { 12764 private sourceFile; 12765 private tscStrictDiagnostics?; 12766 static ideMode: boolean; 12767 static strictMode: boolean; 12768 static logTscErrors: boolean; 12769 static warningsAsErrors: boolean; 12770 static lintEtsOnly: boolean; 12771 static totalVisitedNodes: number; 12772 static nodeCounters: number[]; 12773 static lineCounters: number[]; 12774 static totalErrorLines: number; 12775 static errorLineNumbersString: string; 12776 static totalWarningLines: number; 12777 static warningLineNumbersString: string; 12778 static reportDiagnostics: boolean; 12779 static problemsInfos: ProblemInfo[]; 12780 static filteredDiagnosticMessages: DiagnosticMessageChain[]; 12781 static initGlobals(): void; 12782 static initStatic(): void; 12783 static tsTypeChecker: TypeChecker; 12784 currentErrorLine: number; 12785 currentWarningLine: number; 12786 staticBlocks: Set<string>; 12787 libraryTypeCallDiagnosticChecker: LibraryTypeCallDiagnosticChecker; 12788 skipArkTSStaticBlocksCheck: boolean; 12789 constructor(sourceFile: SourceFile, tsProgram: Program, tscStrictDiagnostics?: ts.Map<ts.Diagnostic[]> | undefined); 12790 static clearTsTypeChecker(): void; 12791 static clearQualifiedNameCache(): void; 12792 readonly handlersMap: ts.ESMap<SyntaxKind, (node: Node) => void>; 12793 incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void; 12794 visitTSNode(node: Node): void; 12795 private countInterfaceExtendsDifferentPropertyTypes; 12796 private countDeclarationsWithDuplicateName; 12797 private countClassMembersWithDuplicateName; 12798 private functionContainsThis; 12799 private isPrototypePropertyAccess; 12800 private interfaceInheritanceLint; 12801 private lintForInterfaceExtendsDifferentPorpertyTypes; 12802 private handleObjectLiteralExpression; 12803 private handleArrayLiteralExpression; 12804 private handleParameter; 12805 private handleEnumDeclaration; 12806 private handleInterfaceDeclaration; 12807 private handleThrowStatement; 12808 private handleForStatement; 12809 private handleForInStatement; 12810 private handleForOfStatement; 12811 private handleImportDeclaration; 12812 private handlePropertyAccessExpression; 12813 private handlePropertyAssignmentOrDeclaration; 12814 private filterOutDecoratorsDiagnostics; 12815 private checkInRange; 12816 private filterStrictDiagnostics; 12817 private handleFunctionExpression; 12818 private handleArrowFunction; 12819 private handleClassExpression; 12820 private handleFunctionDeclaration; 12821 private handleMissingReturnType; 12822 private hasLimitedTypeInferenceFromReturnExpr; 12823 private handlePrefixUnaryExpression; 12824 private handleBinaryExpression; 12825 private handleVariableDeclarationList; 12826 private handleVariableDeclaration; 12827 private handleEsObjectDelaration; 12828 private handleEsObjectAssignment; 12829 private handleCatchClause; 12830 private handleClassDeclaration; 12831 private handleModuleDeclaration; 12832 private handleTypeAliasDeclaration; 12833 private handleImportClause; 12834 private handleImportSpecifier; 12835 private handleNamespaceImport; 12836 private handleTypeAssertionExpression; 12837 private handleMethodDeclaration; 12838 private handleIdentifier; 12839 private isAllowedClassValueContext; 12840 private handleRestrictedValues; 12841 private identiferUseInValueContext; 12842 private isEnumPropAccess; 12843 private handleElementAccessExpression; 12844 private handleEnumMember; 12845 private handleExportAssignment; 12846 private handleCallExpression; 12847 private handleImportCall; 12848 private handleRequireCall; 12849 private handleGenericCallWithNoTypeArgs; 12850 private static listApplyBindCallApis; 12851 private handleFunctionApplyBindPropCall; 12852 private handleStructIdentAndUndefinedInArgs; 12853 private static LimitedApis; 12854 private handleStdlibAPICall; 12855 private findNonFilteringRangesFunctionCalls; 12856 private handleLibraryTypeCall; 12857 private handleNewExpression; 12858 private handleAsExpression; 12859 private handleTypeReference; 12860 private handleMetaProperty; 12861 private handleStructDeclaration; 12862 private handleSpreadOp; 12863 private handleConstructSignature; 12864 private handleComments; 12865 private handleExpressionWithTypeArguments; 12866 private handleComputedPropertyName; 12867 private checkErrorSuppressingAnnotation; 12868 private handleDecorators; 12869 private handleGetAccessor; 12870 private handleSetAccessor; 12871 private handleDeclarationInferredType; 12872 private handleDefiniteAssignmentAssertion; 12873 private validatedTypesSet; 12874 private checkAnyOrUnknownChildNode; 12875 private handleInferredObjectreference; 12876 private validateDeclInferredType; 12877 private handleClassStaticBlockDeclaration; 12878 lint(): void; 12879 } 12880 class TSCCompiledProgram { 12881 private diagnosticsExtractor; 12882 constructor(program: BuilderProgram); 12883 getProgram(): Program; 12884 getBuilderProgram(): BuilderProgram; 12885 getStrictDiagnostics(fileName: string): Diagnostic[]; 12886 doAllGetDiagnostics(): void; 12887 } 12888 function translateDiag(srcFile: SourceFile, problemInfo: ProblemInfo): Diagnostic; 12889 function runArkTSLinter(tsBuilderProgram: BuilderProgram, srcFile?: SourceFile, buildInfoWriteFile?: WriteFileCallback, arkTSVersion?: string): Diagnostic[]; 12890 } 12891 namespace ArkTSLinter_1_1 { 12892 interface AutofixInfo { 12893 problemID: string; 12894 start: number; 12895 end: number; 12896 } 12897 interface CommandLineOptions { 12898 strictMode?: boolean; 12899 ideMode?: boolean; 12900 logTscErrors?: boolean; 12901 warningsAsErrors: boolean; 12902 parsedConfigFile?: ParsedCommandLine; 12903 inputFiles: string[]; 12904 autofixInfo?: AutofixInfo[]; 12905 } 12906 interface LintOptions { 12907 cmdOptions: CommandLineOptions; 12908 tsProgram?: Program; 12909 [key: string]: any; 12910 } 12911 enum ProblemSeverity { 12912 WARNING = 1, 12913 ERROR = 2 12914 } 12915 const cookBookMsg: string[]; 12916 const cookBookTag: string[]; 12917 interface DiagnosticChecker { 12918 checkDiagnosticMessage(msgText: string | DiagnosticMessageChain): boolean; 12919 } 12920 const TYPE_0_IS_NOT_ASSIGNABLE_TO_TYPE_1_ERROR_CODE = 2322; 12921 const TYPE_UNKNOWN_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp; 12922 const TYPE_NULL_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp; 12923 const TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_TYPE_1_RE: RegExp; 12924 const ARGUMENT_OF_TYPE_0_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_ERROR_CODE = 2345; 12925 const OBJECT_IS_POSSIBLY_UNDEFINED_ERROR_CODE = 2532; 12926 const ARGUMENT_OF_TYPE_NULL_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp; 12927 const ARGUMENT_OF_TYPE_UNDEFINED_IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE_1_RE: RegExp; 12928 const NO_OVERLOAD_MATCHES_THIS_CALL_ERROR_CODE = 2769; 12929 const TYPE = "Type"; 12930 const IS_NOT_ASSIGNABLE_TO_TYPE = "is not assignable to type"; 12931 const ARGUMENT_OF_TYPE = "Argument of type"; 12932 const IS_NOT_ASSIGNABLE_TO_PARAMETER_OF_TYPE = "is not assignable to parameter of type"; 12933 enum ErrorType { 12934 NO_ERROR = 0, 12935 UNKNOW = 1, 12936 NULL = 2, 12937 POSSIBLY_UNDEFINED = 3 12938 } 12939 class LibraryTypeCallDiagnosticChecker { 12940 private static _instance; 12941 static get instance(): LibraryTypeCallDiagnosticChecker; 12942 private _diagnosticErrorTypeMap; 12943 private constructor(); 12944 clear(): void; 12945 rebuildTscDiagnostics(tscStrictDiagnostics: ESMap<string, ts.Diagnostic[]>): void; 12946 filterDiagnostics(tscDiagnostics: readonly ts.Diagnostic[], expr: ts.CallExpression | ts.NewExpression, isLibCall: boolean, filterHandle: (diagnositc: ts.Diagnostic, errorType: ErrorType) => void): void; 12947 private getErrorType; 12948 private static isValidErrorType; 12949 private static isValidDiagnosticRange; 12950 } 12951 enum FaultID { 12952 AnyType = 0, 12953 SymbolType = 1, 12954 ObjectLiteralNoContextType = 2, 12955 ArrayLiteralNoContextType = 3, 12956 ComputedPropertyName = 4, 12957 LiteralAsPropertyName = 5, 12958 TypeQuery = 6, 12959 IsOperator = 7, 12960 DestructuringParameter = 8, 12961 YieldExpression = 9, 12962 InterfaceMerging = 10, 12963 EnumMerging = 11, 12964 InterfaceExtendsClass = 12, 12965 IndexMember = 13, 12966 WithStatement = 14, 12967 ThrowStatement = 15, 12968 IndexedAccessType = 16, 12969 UnknownType = 17, 12970 ForInStatement = 18, 12971 InOperator = 19, 12972 FunctionExpression = 20, 12973 IntersectionType = 21, 12974 ObjectTypeLiteral = 22, 12975 CommaOperator = 23, 12976 LimitedReturnTypeInference = 24, 12977 ClassExpression = 25, 12978 DestructuringAssignment = 26, 12979 DestructuringDeclaration = 27, 12980 VarDeclaration = 28, 12981 CatchWithUnsupportedType = 29, 12982 DeleteOperator = 30, 12983 DeclWithDuplicateName = 31, 12984 UnaryArithmNotNumber = 32, 12985 ConstructorType = 33, 12986 ConstructorIface = 34, 12987 ConstructorFuncs = 35, 12988 CallSignature = 36, 12989 TypeAssertion = 37, 12990 PrivateIdentifier = 38, 12991 LocalFunction = 39, 12992 ConditionalType = 40, 12993 MappedType = 41, 12994 NamespaceAsObject = 42, 12995 ClassAsObject = 43, 12996 NonDeclarationInNamespace = 44, 12997 GeneratorFunction = 45, 12998 FunctionContainsThis = 46, 12999 PropertyAccessByIndex = 47, 13000 JsxElement = 48, 13001 EnumMemberNonConstInit = 49, 13002 ImplementsClass = 50, 13003 MethodReassignment = 51, 13004 MultipleStaticBlocks = 52, 13005 ThisType = 53, 13006 IntefaceExtendDifProps = 54, 13007 StructuralIdentity = 55, 13008 ExportAssignment = 56, 13009 ImportAssignment = 57, 13010 GenericCallNoTypeArgs = 58, 13011 ParameterProperties = 59, 13012 InstanceofUnsupported = 60, 13013 ShorthandAmbientModuleDecl = 61, 13014 WildcardsInModuleName = 62, 13015 UMDModuleDefinition = 63, 13016 NewTarget = 64, 13017 DefiniteAssignment = 65, 13018 Prototype = 66, 13019 GlobalThis = 67, 13020 UtilityType = 68, 13021 PropertyDeclOnFunction = 69, 13022 FunctionApplyCall = 70, 13023 FunctionBind = 71, 13024 ConstAssertion = 72, 13025 ImportAssertion = 73, 13026 SpreadOperator = 74, 13027 LimitedStdLibApi = 75, 13028 ErrorSuppression = 76, 13029 StrictDiagnostic = 77, 13030 ImportAfterStatement = 78, 13031 EsObjectType = 79, 13032 SendableClassInheritance = 80, 13033 SendablePropType = 81, 13034 SendableDefiniteAssignment = 82, 13035 SendableGenericTypes = 83, 13036 SendableCapturedVars = 84, 13037 SendableClassDecorator = 85, 13038 SendableObjectInitialization = 86, 13039 SendableComputedPropName = 87, 13040 SendableAsExpr = 88, 13041 SharedNoSideEffectImport = 89, 13042 SharedModuleExports = 90, 13043 SharedModuleNoWildcardExport = 91, 13044 NoTsImportEts = 92, 13045 SendableTypeInheritance = 93, 13046 SendableTypeExported = 94, 13047 NoTsReExportEts = 95, 13048 NoNamespaceImportEtsToTs = 96, 13049 NoSideEffectImportEtsToTs = 97, 13050 SendableExplicitFieldType = 98, 13051 SendableFunctionImportedVariables = 99, 13052 SendableFunctionDecorator = 100, 13053 SendableTypeAliasDecorator = 101, 13054 SendableTypeAliasDeclaration = 102, 13055 SendableFunctionAssignment = 103, 13056 SendableFunctionOverloadDecorator = 104, 13057 SendableFunctionProperty = 105, 13058 SendableFunctionAsExpr = 106, 13059 SendableDecoratorLimited = 107, 13060 SharedModuleExportsWarning = 108, 13061 SendableBetaCompatible = 109, 13062 SendablePropTypeWarning = 110, 13063 TaskpoolFunctionArg = 111, 13064 ObjectLiteralAmbiguity = 112, 13065 LAST_ID = 113 13066 } 13067 class FaultAttributes { 13068 cookBookRef: number; 13069 migratable: boolean; 13070 severity: ProblemSeverity; 13071 constructor(cookBookRef: number, migratable?: boolean, severity?: ProblemSeverity); 13072 } 13073 const faultsAttrs: FaultAttributes[]; 13074 function setTypeChecker(tsTypeChecker: TypeChecker): void; 13075 function clearTypeChecker(): void; 13076 function setTestMode(tsTestMode: boolean): void; 13077 function setMixCompile(isMixCompile: boolean): void; 13078 function getStartPos(nodeOrComment: Node | CommentRange): number; 13079 function getEndPos(nodeOrComment: Node | CommentRange): number; 13080 function getHighlightRange(nodeOrComment: Node | CommentRange, faultId: number): [ 13081 number, 13082 number 13083 ]; 13084 function getVarDeclarationHighlightRange(nodeOrComment: Node | CommentRange): [ 13085 number, 13086 number 13087 ] | undefined; 13088 function getCatchWithUnsupportedTypeHighlightRange(nodeOrComment: Node | CommentRange): [ 13089 number, 13090 number 13091 ] | undefined; 13092 function getForInStatementHighlightRange(nodeOrComment: Node | CommentRange): [ 13093 number, 13094 number 13095 ] | undefined; 13096 function getWithStatementHighlightRange(nodeOrComment: Node | CommentRange): [ 13097 number, 13098 number 13099 ] | undefined; 13100 function getDeleteOperatorHighlightRange(nodeOrComment: Node | CommentRange): [ 13101 number, 13102 number 13103 ] | undefined; 13104 function getTypeQueryHighlightRange(nodeOrComment: Node | CommentRange): [ 13105 number, 13106 number 13107 ] | undefined; 13108 function getInstanceofUnsupportedHighlightRange(nodeOrComment: Node | CommentRange): [ 13109 number, 13110 number 13111 ] | undefined; 13112 function getConstAssertionHighlightRange(nodeOrComment: Node | CommentRange): [ 13113 number, 13114 number 13115 ] | undefined; 13116 function getLimitedReturnTypeInferenceHighlightRange(nodeOrComment: Node | CommentRange): [ 13117 number, 13118 number 13119 ] | undefined; 13120 function getLocalFunctionHighlightRange(nodeOrComment: Node | CommentRange): [ 13121 number, 13122 number 13123 ] | undefined; 13124 function getFunctionApplyCallHighlightRange(nodeOrComment: Node | CommentRange): [ 13125 number, 13126 number 13127 ] | undefined; 13128 function getDeclWithDuplicateNameHighlightRange(nodeOrComment: Node | CommentRange): [ 13129 number, 13130 number 13131 ] | undefined; 13132 function getObjectLiteralNoContextTypeHighlightRange(nodeOrComment: Node | CommentRange): [ 13133 number, 13134 number 13135 ] | undefined; 13136 function getClassExpressionHighlightRange(nodeOrComment: Node | CommentRange): [ 13137 number, 13138 number 13139 ] | undefined; 13140 function getMultipleStaticBlocksHighlightRange(nodeOrComment: Node | CommentRange): [ 13141 number, 13142 number 13143 ] | undefined; 13144 function getSendableDefiniteAssignmentHighlightRange(nodeOrComment: Node | CommentRange): [ 13145 number, 13146 number 13147 ] | undefined; 13148 function getKeywordHighlightRange(nodeOrComment: Node | CommentRange, keyword: string): [ 13149 number, 13150 number 13151 ]; 13152 function isAssignmentOperator(tsBinOp: BinaryOperatorToken): boolean; 13153 function isType(tsType: TypeNode | undefined, checkType: string): boolean; 13154 function entityNameToString(name: EntityName): string; 13155 function isNumberLikeType(tsType: Type): boolean; 13156 function isBooleanLikeType(tsType: Type): boolean; 13157 function isStringLikeType(tsType: Type): boolean; 13158 function isStringType(tsType: Type): boolean; 13159 function isPrimitiveEnumMemberType(type: Type, primitiveType: TypeFlags): boolean; 13160 function unwrapParenthesizedType(tsType: TypeNode): TypeNode; 13161 function findParentIf(asExpr: AsExpression): IfStatement | null; 13162 function isDestructuringAssignmentLHS(tsExpr: ArrayLiteralExpression | ObjectLiteralExpression): boolean; 13163 function isEnumType(tsType: Type): boolean; 13164 function isEnum(tsSymbol: Symbol): boolean; 13165 function isEnumMemberType(tsType: Type): boolean; 13166 function isObjectLiteralType(tsType: Type): boolean; 13167 function hasModifier(tsModifiers: readonly Modifier[] | undefined, tsModifierKind: number): boolean; 13168 function unwrapParenthesized(tsExpr: Expression): Expression; 13169 function followIfAliased(sym: Symbol): Symbol; 13170 function trueSymbolAtLocation(node: Node): Symbol | undefined; 13171 function clearTrueSymbolAtLocationCache(): void; 13172 function isTypeDeclSyntaxKind(kind: SyntaxKind): boolean; 13173 function symbolHasDuplicateName(symbol: Symbol, tsDeclKind: SyntaxKind): boolean; 13174 function isReferenceType(tsType: Type): boolean; 13175 function isPrimitiveType(type: Type): boolean; 13176 function isPrimitiveLiteralType(type: Type): boolean; 13177 function isPurePrimitiveLiteralType(type: Type): boolean; 13178 function isTypeSymbol(symbol: Symbol | undefined): boolean; 13179 function isGenericArrayType(tsType: Type): tsType is TypeReference; 13180 function isReadonlyArrayType(tsType: Type): boolean; 13181 function isConcatArrayType(tsType: Type): boolean; 13182 function isArrayLikeType(tsType: Type): boolean; 13183 function isTypedArray(tsType: Type, allowTypeArrays: string[]): boolean; 13184 function isArray(tsType: Type): boolean; 13185 function isCollectionArrayType(tsType: Type): boolean; 13186 function isIndexableArray(tsType: Type): boolean; 13187 function isTuple(tsType: Type): boolean; 13188 function isOrDerivedFrom(tsType: Type, checkType: CheckType, checkedBaseTypes?: Set<Type>): boolean; 13189 function isTypeReference(tsType: Type): tsType is TypeReference; 13190 function isNullType(tsTypeNode: TypeNode): boolean; 13191 function isThisOrSuperExpr(tsExpr: Expression): boolean; 13192 function isPrototypeSymbol(symbol: Symbol | undefined): boolean; 13193 function isFunctionSymbol(symbol: Symbol | undefined): boolean; 13194 function isInterfaceType(tsType: Type | undefined): boolean; 13195 function isAnyType(tsType: Type): tsType is TypeReference; 13196 function isUnknownType(tsType: Type): boolean; 13197 function isUnsupportedType(tsType: Type): boolean; 13198 function isUnsupportedUnionType(tsType: Type): boolean; 13199 function isFunctionOrMethod(tsSymbol: Symbol | undefined): boolean; 13200 function isMethodAssignment(tsSymbol: Symbol | undefined): boolean; 13201 function getDeclaration(tsSymbol: Symbol | undefined): Declaration | undefined; 13202 function isValidEnumMemberInit(tsExpr: Expression): boolean; 13203 function isCompileTimeExpression(tsExpr: Expression): boolean; 13204 function isConst(tsNode: Node): boolean; 13205 function isNumberConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean; 13206 function isIntegerConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression | NumericLiteral): boolean; 13207 function isStringConstantValue(tsExpr: EnumMember | PropertyAccessExpression | ElementAccessExpression): boolean; 13208 function relatedByInheritanceOrIdentical(typeA: Type, typeB: Type): boolean; 13209 function reduceReference(t: Type): Type; 13210 function needToDeduceStructuralIdentity(lhsType: Type, rhsType: Type, rhsExpr: Expression, isStrict?: boolean): boolean; 13211 function needStrictMatchType(lhsType: Type, rhsType: Type): boolean; 13212 function hasPredecessor(node: Node, predicate: (node: Node) => boolean): boolean; 13213 function processParentTypes(parentTypes: NodeArray<ExpressionWithTypeArguments>, typeB: Type, processInterfaces: boolean): boolean; 13214 function isObject(tsType: Type): boolean; 13215 function logTscDiagnostic(diagnostics: readonly Diagnostic[], log: (message: any, ...args: any[]) => void): void; 13216 function encodeProblemInfo(problem: ProblemInfo): string; 13217 function decodeAutofixInfo(info: string): AutofixInfo; 13218 function isCallToFunctionWithOmittedReturnType(tsExpr: Expression): boolean; 13219 function validateObjectLiteralType(type: Type | undefined): boolean; 13220 function isStructDeclarationKind(kind: SyntaxKind): boolean; 13221 function isStructDeclaration(node: Node): boolean; 13222 function isStructObjectInitializer(objectLiteral: ObjectLiteralExpression): boolean; 13223 function hasMethods(type: Type): boolean; 13224 function checkTypeSet(typeSet: Type, predicate: CheckType): boolean; 13225 function getNonNullableType(t: Type): Type; 13226 function isObjectLiteralAssignable(lhsType: Type | undefined, rhsExpr: ObjectLiteralExpression): boolean; 13227 function isLiteralType(type: Type): boolean; 13228 function validateFields(objectType: Type, objectLiteral: ObjectLiteralExpression): boolean; 13229 function isSupportedType(typeNode: TypeNode): boolean; 13230 function isStruct(symbol: Symbol): boolean; 13231 function getParentSymbolName(symbol: Symbol): string | undefined; 13232 function isGlobalSymbol(symbol: Symbol): boolean; 13233 function isSymbolAPI(symbol: Symbol): boolean; 13234 function isStdSymbol(symbol: Symbol): boolean; 13235 function isSymbolIterator(symbol: Symbol): boolean; 13236 function isSymbolIteratorExpression(expr: Expression): boolean; 13237 function isDefaultImport(importSpec: ImportSpecifier): boolean; 13238 function hasAccessModifier(decl: Declaration): boolean; 13239 function getModifier(modifiers: readonly Modifier[] | undefined, modifierKind: SyntaxKind): Modifier | undefined; 13240 function getAccessModifier(modifiers: readonly Modifier[] | undefined): Modifier | undefined; 13241 function isStdRecordType(type: Type): boolean; 13242 function isStdMapType(type: Type): boolean; 13243 function isStdErrorType(type: Type): boolean; 13244 function isStdPartialType(type: Type): boolean; 13245 function isStdRequiredType(type: Type): boolean; 13246 function isStdReadonlyType(type: Type): boolean; 13247 function isLibraryType(type: Type): boolean; 13248 function hasLibraryType(node: Node): boolean; 13249 function isLibrarySymbol(sym: Symbol | undefined): boolean; 13250 function srcFilePathContainsDirectory(srcFile: SourceFile, dir: string): boolean; 13251 function pathContainsDirectory(targetPath: string, dir: string): boolean; 13252 function getScriptKind(srcFile: SourceFile): ScriptKind; 13253 function isStdLibraryType(type: Type): boolean; 13254 function isStdLibrarySymbol(sym: Symbol | undefined): boolean; 13255 function isIntrinsicObjectType(type: Type): boolean; 13256 function isOhModulesEtsSymbol(sym: Symbol | undefined): boolean; 13257 function isDynamicType(type: Type | undefined): boolean | undefined; 13258 function isObjectType(type: Type): type is ObjectType; 13259 function isAnonymous(type: Type): boolean; 13260 function isDynamicLiteralInitializer(expr: Expression): boolean; 13261 function isEsObjectType(typeNode: TypeNode | undefined): boolean; 13262 function isInsideBlock(node: Node): boolean; 13263 function isValueAssignableToESObject(node: Node): boolean; 13264 function getVariableDeclarationTypeNode(node: Node): TypeNode | undefined; 13265 function getSymbolDeclarationTypeNode(sym: Symbol): TypeNode | undefined; 13266 function hasEsObjectType(node: Node): boolean; 13267 function symbolHasEsObjectType(sym: Symbol): boolean; 13268 function isEsObjectSymbol(sym: Symbol): boolean; 13269 function isAnonymousType(type: Type): boolean; 13270 function getSymbolOfCallExpression(callExpr: CallExpression): Symbol | undefined; 13271 function typeIsRecursive(topType: Type, type?: Type | undefined): boolean; 13272 function getTypeOrTypeConstraintAtLocation(expr: Expression): Type; 13273 function isStdBigIntType(type: Type): boolean; 13274 function isStdNumberType(type: Type): boolean; 13275 function isStdBooleanType(type: Type): boolean; 13276 function isEnumStringLiteral(expr: Expression): boolean; 13277 function isValidComputedPropertyName(computedProperty: ComputedPropertyName, isRecordObjectInitializer?: boolean): boolean; 13278 function isAllowedIndexSignature(node: IndexSignatureDeclaration): boolean; 13279 function isArkTSCollectionsArrayLikeType(type: Type): boolean; 13280 function isArkTSCollectionsClassOrInterfaceDeclaration(decl: Node): boolean; 13281 function getDecoratorName(decorator: Decorator): string; 13282 function unwrapParenthesizedTypeNode(typeNode: TypeNode): TypeNode; 13283 function isSendableTypeNode(typeNode: TypeNode, isShared?: boolean): boolean; 13284 function isSendableType(type: Type): boolean; 13285 function isShareableType(tsType: Type): boolean; 13286 function isSendableClassOrInterface(type: Type): boolean; 13287 function typeContainsSendableClassOrInterface(type: Type): boolean; 13288 function typeContainsNonSendableClassOrInterface(type: Type): boolean; 13289 function isConstEnum(sym: Symbol | undefined): boolean; 13290 function isSendableUnionType(type: UnionType): boolean; 13291 function hasSendableDecorator(decl: ClassDeclaration | FunctionDeclaration | TypeAliasDeclaration): boolean; 13292 function getNonSendableDecorators(decl: ClassDeclaration | FunctionDeclaration | TypeAliasDeclaration): Decorator[] | undefined; 13293 function getSendableDecorator(decl: ClassDeclaration | FunctionDeclaration | TypeAliasDeclaration): Decorator | undefined; 13294 function getDecoratorsIfInSendableClass(declaration: HasDecorators): readonly Decorator[] | undefined; 13295 function isISendableInterface(type: Type): boolean; 13296 function isSharedModule(sourceFile: SourceFile): boolean; 13297 function getDeclarationNode(node: Node): Declaration | undefined; 13298 function isShareableEntity(node: Node): boolean; 13299 function isSendableClassOrInterfaceEntity(node: Node): boolean; 13300 function isInImportWhiteList(resolvedModule: ResolvedModuleFull): boolean; 13301 function hasSendableDecoratorFunctionOverload(decl: FunctionDeclaration): boolean; 13302 function isSendableFunction(type: Type): boolean; 13303 function isSendableTypeAlias(type: Type): boolean; 13304 function hasSendableTypeAlias(type: Type): boolean; 13305 function isNonSendableFunctionTypeAlias(type: Type): boolean; 13306 function isWrongSendableFunctionAssignment(lhsType: Type, rhsType: Type): boolean; 13307 function searchFileExportDecl(sourceFile: SourceFile, targetDecls?: SyntaxKind[]): Set<Node>; 13308 function clearUtilsGlobalvariables(): void; 13309 function isTaskPoolApi(exprSym: Symbol | undefined, node: Node): boolean; 13310 function isConcurrentFunction(type: Type): boolean; 13311 function hasConcurrentDecoratorFunctionOverload(decl: FunctionDeclaration): boolean; 13312 function hasUseConcurrentDirective(decl: FunctionDeclaration): boolean; 13313 function isDeclarationSymbol(sym: Symbol | undefined): boolean; 13314 function checkTaskpoolFunction(arg: Expression, argType: Type, argSym: Symbol | undefined): boolean; 13315 function getTypeAtLocationForLinter(node: Node): Type; 13316 const PROPERTY_HAS_NO_INITIALIZER_ERROR_CODE = 2564; 13317 const NON_INITIALIZABLE_PROPERTY_DECORATORS: string[]; 13318 const NON_INITIALIZABLE_PROPERTY_CLASS_DECORATORS: string[]; 13319 const LIMITED_STANDARD_UTILITY_TYPES: string[]; 13320 const ALLOWED_STD_SYMBOL_API: string[]; 13321 const ARKTS_IGNORE_DIRS: string[]; 13322 const ARKTS_IGNORE_FILES: string[]; 13323 const ARKTS_IGNORE_DIRS_OH_MODULES = "oh_modules"; 13324 const SENDABLE_DECORATOR = "Sendable"; 13325 const SENDABLE_INTERFACE = "ISendable"; 13326 const PROMISE = "Promise"; 13327 const SENDABLE_DECORATOR_NODES: SyntaxKind[]; 13328 const SENDABLE_CLOSURE_DECLS: SyntaxKind[]; 13329 const ARKTS_COLLECTIONS_D_ETS = "@arkts.collections.d.ets"; 13330 const COLLECTIONS_NAMESPACE = "collections"; 13331 const ARKTS_LANG_D_ETS = "@arkts.lang.d.ets"; 13332 const LANG_NAMESPACE = "lang"; 13333 const ISENDABLE_TYPE = "ISendable"; 13334 const USE_SHARED = "use shared"; 13335 const D_TS = ".d.ts"; 13336 const TASKPOOL = "taskpool"; 13337 const TASKGROUP = "TaskGroup"; 13338 const TASKPOOL_API: string[]; 13339 const TASK_LIST: string[]; 13340 const CONCURRENT_DECORATOR = "Concurrent"; 13341 const USE_CONCURRENT = "use concurrent"; 13342 type CheckType = ((t: Type) => boolean); 13343 const ES_OBJECT = "ESObject"; 13344 const LIMITED_STD_GLOBAL_FUNC: string[]; 13345 const LIMITED_STD_OBJECT_API: string[]; 13346 const LIMITED_STD_REFLECT_API: string[]; 13347 const LIMITED_STD_PROXYHANDLER_API: string[]; 13348 const FUNCTION_HAS_NO_RETURN_ERROR_CODE = 2366; 13349 const NON_RETURN_FUNCTION_DECORATORS: string[]; 13350 const STANDARD_LIBRARIES: string[]; 13351 const TYPED_ARRAYS: string[]; 13352 const TYPED_COLLECTIONS: string[]; 13353 function shouldAutofix(node: Node, faultID: FaultID): boolean; 13354 function fixLiteralAsPropertyName(node: Node): Autofix[] | undefined; 13355 function fixPropertyAccessByIndex(node: Node): Autofix[] | undefined; 13356 function fixFunctionExpression(funcExpr: FunctionExpression, params?: NodeArray<ParameterDeclaration>, retType?: TypeNode | undefined): Autofix; 13357 function fixReturnType(funcLikeDecl: FunctionLikeDeclaration, typeNode: TypeNode): Autofix; 13358 function fixCtorParameterProperties(ctorDecl: ConstructorDeclaration, paramTypes: TypeNode[]): Autofix[] | undefined; 13359 const AUTOFIX_ALL: AutofixInfo; 13360 const autofixInfo: AutofixInfo[]; 13361 interface Autofix { 13362 replacementText: string; 13363 start: number; 13364 end: number; 13365 } 13366 class LinterConfig { 13367 static nodeDesc: string[]; 13368 static tsSyntaxKindNames: string[]; 13369 static initStatic(): void; 13370 static terminalTokens: Set<SyntaxKind>; 13371 static incrementOnlyTokens: ESMap<SyntaxKind, FaultID>; 13372 } 13373 interface ProblemInfo { 13374 line: number; 13375 column: number; 13376 start: number; 13377 end: number; 13378 type: string; 13379 severity: number; 13380 problem: string; 13381 suggest: string; 13382 rule: string; 13383 ruleTag: number; 13384 autofixable: boolean; 13385 autofix?: Autofix[]; 13386 } 13387 class TypeScriptLinter { 13388 private sourceFile; 13389 private tscStrictDiagnostics?; 13390 static ideMode: boolean; 13391 static strictMode: boolean; 13392 static logTscErrors: boolean; 13393 static warningsAsErrors: boolean; 13394 static lintEtsOnly: boolean; 13395 static totalVisitedNodes: number; 13396 static nodeCounters: number[]; 13397 static lineCounters: number[]; 13398 static totalErrorLines: number; 13399 static errorLineNumbersString: string; 13400 static totalWarningLines: number; 13401 static warningLineNumbersString: string; 13402 static reportDiagnostics: boolean; 13403 static problemsInfos: ProblemInfo[]; 13404 static filteredDiagnosticMessages: DiagnosticMessageChain[]; 13405 static sharedModulesCache: ESMap<string, boolean>; 13406 static strictDiagnosticCache: Set<Diagnostic>; 13407 static unknowDiagnosticCache: Set<Diagnostic>; 13408 static initGlobals(): void; 13409 static initStatic(): void; 13410 static tsTypeChecker: TypeChecker; 13411 currentErrorLine: number; 13412 currentWarningLine: number; 13413 staticBlocks: Set<string>; 13414 skipArkTSStaticBlocksCheck: boolean; 13415 private fileExportDeclCaches?; 13416 private compatibleSdkVersionStage; 13417 private compatibleSdkVersion; 13418 private mixCompile; 13419 constructor(sourceFile: SourceFile, tsProgram: Program, tscStrictDiagnostics?: ts.Map<ts.Diagnostic[]> | undefined); 13420 static clearTsTypeChecker(): void; 13421 static clearQualifiedNameCache(): void; 13422 readonly handlersMap: ts.ESMap<ts.SyntaxKind, { 13423 handler: (node: Node) => void; 13424 name: string; 13425 }>; 13426 incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void; 13427 private forEachNodeInSubtree; 13428 private visitSourceFile; 13429 private countInterfaceExtendsDifferentPropertyTypes; 13430 private countDeclarationsWithDuplicateName; 13431 private countClassMembersWithDuplicateName; 13432 private static scopeContainsThis; 13433 private isPrototypePropertyAccess; 13434 private interfaceInheritanceLint; 13435 private lintForInterfaceExtendsDifferentPorpertyTypes; 13436 private handleObjectLiteralExpression; 13437 private handleUnionTypeObjectLiteral; 13438 private getSourceFileFromType; 13439 private handleArrayLiteralExpression; 13440 private handleParameter; 13441 private handleEnumDeclaration; 13442 private handleInterfaceDeclaration; 13443 private handleThrowStatement; 13444 private handleForStatement; 13445 private handleForInStatement; 13446 private handleForOfStatement; 13447 private handleImportDeclaration; 13448 private handleSharedModuleNoSideEffectImport; 13449 private static inSharedModule; 13450 private handlePropertyAccessExpression; 13451 private handleTaskpooApiForNewExpression; 13452 private handlePropertyDeclaration; 13453 private handleSendableClassProperty; 13454 private checkTypeAliasInSendableScope; 13455 private isNoneSendableTypeAlias; 13456 private handlePropertyAssignment; 13457 private handlePropertySignature; 13458 private handleSendableInterfaceProperty; 13459 private filterOutDecoratorsDiagnostics; 13460 private static isClassLikeOrIface; 13461 private handleFunctionExpression; 13462 private handleArrowFunction; 13463 private handleFunctionDeclaration; 13464 private handleMissingReturnType; 13465 private hasLimitedTypeInferenceFromReturnExpr; 13466 private checkReturnExpression; 13467 private isValidTypeForUnaryArithmeticOperator; 13468 private handlePrefixUnaryExpression; 13469 private handleBinaryExpression; 13470 private handleVariableDeclarationList; 13471 private handleVariableDeclaration; 13472 private handleEsObjectAssignment; 13473 private handleCatchClause; 13474 private handleClassDeclaration; 13475 private scanCapturedVarsInSendableScope; 13476 private checkLocalDecl; 13477 private checkLocalDeclWithSendableClosure; 13478 private checkIsTopClosure; 13479 private checkNamespaceImportVar; 13480 isFileExportDecl(decl: Declaration): boolean; 13481 private checkClassDeclarationHeritageClause; 13482 private isValidSendableClassExtends; 13483 private checkSendableTypeParameter; 13484 private processClassStaticBlocks; 13485 private handleModuleDeclaration; 13486 private handleTypeAliasDeclaration; 13487 private handleImportClause; 13488 private handleImportSpecifier; 13489 private handleNamespaceImport; 13490 private handleTypeAssertionExpression; 13491 private handleMethodDeclaration; 13492 private handleMethodSignature; 13493 private handleIdentifier; 13494 private isAllowedClassValueContext; 13495 private handleRestrictedValues; 13496 private identiferUseInValueContext; 13497 private isEnumPropAccess; 13498 private isElementAcessAllowed; 13499 private handleElementAccessExpression; 13500 private handleEnumMember; 13501 private handleExportAssignment; 13502 private handleCallExpression; 13503 private handleTaskpoolApiForCallExpression; 13504 private handleEtsComponentExpression; 13505 private handleImportCall; 13506 private handleRequireCall; 13507 private handleGenericCallWithNoTypeArgs; 13508 private static readonly listFunctionApplyCallApis; 13509 private static readonly listFunctionBindApis; 13510 private handleFunctionApplyBindPropCall; 13511 private handleStructIdentAndUndefinedInArgs; 13512 private static LimitedApis; 13513 private handleStdlibAPICall; 13514 private handleLibraryTypeCall; 13515 private handleNewExpression; 13516 private handleSendableGenericTypes; 13517 private handleAsExpression; 13518 isEsObjectPossiblyAllowed(typeRef: TypeReferenceNode): boolean; 13519 isObjectLiteralFromFunc(node: Node, isPromise?: boolean): boolean; 13520 private handleTypeReference; 13521 private checkSendableTypeArguments; 13522 private handleMetaProperty; 13523 private handleSpreadOp; 13524 private handleConstructSignature; 13525 private handleExpressionWithTypeArguments; 13526 private handleComputedPropertyName; 13527 private isSendableCompPropName; 13528 private handleGetAccessor; 13529 private handleSetAccessor; 13530 private handleDeclarationInferredType; 13531 private handleDefiniteAssignmentAssertion; 13532 private validatedTypesSet; 13533 private checkAnyOrUnknownChildNode; 13534 private handleInferredObjectreference; 13535 private validateDeclInferredType; 13536 private processNoCheckEntry; 13537 private reportThisKeywordsInScope; 13538 private handleCommentDirectives; 13539 private handleClassStaticBlockDeclaration; 13540 private handleIndexSignature; 13541 lint(): void; 13542 private handleExportKeyword; 13543 private handleExportDeclaration; 13544 private handleReturnStatement; 13545 /** 13546 * 'arkts-no-structural-typing' check was missing in some scenarios, 13547 * in order not to cause incompatibility, 13548 * only need to strictly match the type of filling the check again 13549 */ 13550 private checkAssignmentMatching; 13551 private handleDecorator; 13552 private isSendableDecoratorValid; 13553 } 13554 interface KitSymbol { 13555 source: string; 13556 bindings: string; 13557 } 13558 type KitSymbols = Record<string, KitSymbol>; 13559 interface KitInfo { 13560 symbols?: KitSymbols; 13561 } 13562 class InteropTypescriptLinter { 13563 private sourceFile; 13564 private isInSdk; 13565 static strictMode: boolean; 13566 static totalVisitedNodes: number; 13567 static nodeCounters: number[]; 13568 static lineCounters: number[]; 13569 static totalErrorLines: number; 13570 static errorLineNumbersString: string; 13571 static totalWarningLines: number; 13572 static warningLineNumbersString: string; 13573 static reportDiagnostics: boolean; 13574 static problemsInfos: ProblemInfo[]; 13575 static initGlobals(): void; 13576 static initStatic(): void; 13577 static tsTypeChecker: TypeChecker; 13578 static etsLoaderPath?: string; 13579 static kitInfos: Map<KitInfo>; 13580 private KIT; 13581 private D_TS; 13582 private D_ETS; 13583 private ETS; 13584 private SDK_PATH; 13585 currentErrorLine: number; 13586 currentWarningLine: number; 13587 constructor(sourceFile: SourceFile, tsProgram: Program, isInSdk: boolean); 13588 static clearTsTypeChecker(): void; 13589 readonly handlersMap: ts.ESMap<SyntaxKind, (node: Node) => void>; 13590 incrementCounters(node: Node | CommentRange, faultId: number, autofixable?: boolean, autofix?: Autofix[]): void; 13591 private forEachNodeInSubtree; 13592 private visitSourceFile; 13593 private handleImportDeclaration; 13594 private checkSendableClassorISendable; 13595 private checkKitImportClause; 13596 private checkImportClause; 13597 private allowInSdkImportSendable; 13598 private handleClassDeclaration; 13599 private checkClassOrInterfaceDeclarationHeritageClause; 13600 private handleInterfaceDeclaration; 13601 private handleNewExpression; 13602 private handleSendableGenericTypes; 13603 private handleObjectLiteralExpression; 13604 private handleArrayLiteralExpression; 13605 private handleAsExpression; 13606 private handleExportDeclaration; 13607 private handleExportAssignment; 13608 private initKitInfos; 13609 private getKitModuleFileNames; 13610 lint(): void; 13611 } 13612 class TSCCompiledProgram { 13613 private diagnosticsExtractor; 13614 constructor(program: BuilderProgram); 13615 getProgram(): Program; 13616 getBuilderProgram(): BuilderProgram; 13617 getStrictDiagnostics(sourceFile: SourceFile): Diagnostic[]; 13618 doAllGetDiagnostics(): void; 13619 } 13620 function translateDiag(srcFile: SourceFile, problemInfo: ProblemInfo): Diagnostic; 13621 function runArkTSLinter(tsBuilderProgram: BuilderProgram, srcFile?: SourceFile, buildInfoWriteFile?: WriteFileCallback, arkTSVersion?: string): Diagnostic[]; 13622 } 13623 enum TimePhase { 13624 START = "start", 13625 GET_PROGRAM = "getProgram(not ArkTSLinter)", 13626 UPDATE_ERROR_FILE = "updateErrorFile", 13627 INIT = "init", 13628 STRICT_PROGRAM_GET_SEMANTIC_DIAGNOSTICS = "strictProgramGetSemanticDiagnostics", 13629 NON_STRICT_PROGRAM_GET_SEMANTIC_DIAGNOSTICS = "nonStrictProgramGetSemanticDiagnostics", 13630 NON_STRICT_PROGRAM_GET_SYNTACTIC_DIAGNOSTICS = "nonStrictProgramGetSyntacticDiagnostics", 13631 GET_TSC_DIAGNOSTICS = "getTscDiagnostics", 13632 EMIT_BUILD_INFO = "emitBuildInfo", 13633 LINT = "lint" 13634 } 13635 class ArkTSLinterTimePrinter { 13636 private static instance?; 13637 private arkTSTimePrintSwitch; 13638 private timeMap; 13639 private constructor(); 13640 static getInstance(): ArkTSLinterTimePrinter; 13641 static destroyInstance(): void; 13642 setArkTSTimePrintSwitch(arkTSTimePrintSwitch: boolean): void; 13643 appendTime(key: string): void; 13644 private formatMapAsTable; 13645 printTimes(): void; 13646 } 13647} 13648export = ts;