/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ /// declare namespace monaco.languages.typescript { export enum ModuleKind { None = 0, CommonJS = 1, AMD = 2, UMD = 3, System = 4, ES2015 = 5, ESNext = 99 } export enum JsxEmit { None = 0, Preserve = 1, React = 2, ReactNative = 3, ReactJSX = 4, ReactJSXDev = 5 } export enum NewLineKind { CarriageReturnLineFeed = 0, LineFeed = 1 } export enum ScriptTarget { ES3 = 0, ES5 = 1, ES2015 = 2, ES2016 = 3, ES2017 = 4, ES2018 = 5, ES2019 = 6, ES2020 = 7, ESNext = 99, JSON = 100, Latest = 99 } export enum ModuleResolutionKind { Classic = 1, NodeJs = 2 } interface MapLike { [index: string]: T; } type CompilerOptionsValue = | string | number | boolean | (string | number)[] | string[] | MapLike | null | undefined; interface CompilerOptions { allowJs?: boolean; allowSyntheticDefaultImports?: boolean; allowUmdGlobalAccess?: boolean; allowUnreachableCode?: boolean; allowUnusedLabels?: boolean; alwaysStrict?: boolean; baseUrl?: string; charset?: string; checkJs?: boolean; declaration?: boolean; declarationMap?: boolean; emitDeclarationOnly?: boolean; declarationDir?: string; disableSizeLimit?: boolean; disableSourceOfProjectReferenceRedirect?: boolean; downlevelIteration?: boolean; emitBOM?: boolean; emitDecoratorMetadata?: boolean; experimentalDecorators?: boolean; forceConsistentCasingInFileNames?: boolean; importHelpers?: boolean; inlineSourceMap?: boolean; inlineSources?: boolean; isolatedModules?: boolean; jsx?: JsxEmit; keyofStringsOnly?: boolean; lib?: string[]; locale?: string; mapRoot?: string; maxNodeModuleJsDepth?: number; module?: ModuleKind; moduleResolution?: ModuleResolutionKind; newLine?: NewLineKind; noEmit?: boolean; noEmitHelpers?: boolean; noEmitOnError?: boolean; noErrorTruncation?: boolean; noFallthroughCasesInSwitch?: boolean; noImplicitAny?: boolean; noImplicitReturns?: boolean; noImplicitThis?: boolean; noStrictGenericChecks?: boolean; noUnusedLocals?: boolean; noUnusedParameters?: boolean; noImplicitUseStrict?: boolean; noLib?: boolean; noResolve?: boolean; out?: string; outDir?: string; outFile?: string; paths?: MapLike; preserveConstEnums?: boolean; preserveSymlinks?: boolean; project?: string; reactNamespace?: string; jsxFactory?: string; composite?: boolean; removeComments?: boolean; rootDir?: string; rootDirs?: string[]; skipLibCheck?: boolean; skipDefaultLibCheck?: boolean; sourceMap?: boolean; sourceRoot?: string; strict?: boolean; strictFunctionTypes?: boolean; strictBindCallApply?: boolean; strictNullChecks?: boolean; strictPropertyInitialization?: boolean; stripInternal?: boolean; suppressExcessPropertyErrors?: boolean; suppressImplicitAnyIndexErrors?: boolean; target?: ScriptTarget; traceResolution?: boolean; resolveJsonModule?: boolean; types?: string[]; /** Paths used to compute primary types search locations */ typeRoots?: string[]; esModuleInterop?: boolean; useDefineForClassFields?: boolean; [option: string]: CompilerOptionsValue | undefined; } export interface DiagnosticsOptions { noSemanticValidation?: boolean; noSyntaxValidation?: boolean; noSuggestionDiagnostics?: boolean; /** * Limit diagnostic computation to only visible files. * Defaults to false. */ onlyVisible?: boolean; diagnosticCodesToIgnore?: number[]; } export interface WorkerOptions { /** A full HTTP path to a JavaScript file which adds a function `customTSWorkerFactory` to the self inside a web-worker */ customWorkerPath?: string; } interface InlayHintsOptions { readonly includeInlayParameterNameHints?: 'none' | 'literals' | 'all'; readonly includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean; readonly includeInlayFunctionParameterTypeHints?: boolean; readonly includeInlayVariableTypeHints?: boolean; readonly includeInlayPropertyDeclarationTypeHints?: boolean; readonly includeInlayFunctionLikeReturnTypeHints?: boolean; readonly includeInlayEnumMemberValueHints?: boolean; } interface IExtraLib { content: string; version: number; } export interface IExtraLibs { [path: string]: IExtraLib; } /** * A linked list of formatted diagnostic messages to be used as part of a multiline message. * It is built from the bottom up, leaving the head to be the "main" diagnostic. */ interface DiagnosticMessageChain { messageText: string; /** Diagnostic category: warning = 0, error = 1, suggestion = 2, message = 3 */ category: 0 | 1 | 2 | 3; code: number; next?: DiagnosticMessageChain[]; } export interface Diagnostic extends DiagnosticRelatedInformation { /** May store more in future. For now, this will simply be `true` to indicate when a diagnostic is an unused-identifier diagnostic. */ reportsUnnecessary?: {}; reportsDeprecated?: {}; source?: string; relatedInformation?: DiagnosticRelatedInformation[]; } export interface DiagnosticRelatedInformation { /** Diagnostic category: warning = 0, error = 1, suggestion = 2, message = 3 */ category: 0 | 1 | 2 | 3; code: number; /** TypeScriptWorker removes all but the `fileName` property to avoid serializing circular JSON structures. */ file: | { fileName: string; } | undefined; start: number | undefined; length: number | undefined; messageText: string | DiagnosticMessageChain; } interface EmitOutput { outputFiles: OutputFile[]; emitSkipped: boolean; } interface OutputFile { name: string; writeByteOrderMark: boolean; text: string; } export interface LanguageServiceDefaults { /** * Event fired when compiler options or diagnostics options are changed. */ readonly onDidChange: IEvent; /** * Event fired when extra libraries registered with the language service change. */ readonly onDidExtraLibsChange: IEvent; readonly workerOptions: WorkerOptions; readonly inlayHintsOptions: InlayHintsOptions; /** * Get the current extra libs registered with the language service. */ getExtraLibs(): IExtraLibs; /** * Add an additional source file to the language service. Use this * for typescript (definition) files that won't be loaded as editor * documents, like `jquery.d.ts`. * * @param content The file content * @param filePath An optional file path * @returns A disposable which will remove the file from the * language service upon disposal. */ addExtraLib(content: string, filePath?: string): IDisposable; /** * Remove all existing extra libs and set the additional source * files to the language service. Use this for typescript definition * files that won't be loaded as editor documents, like `jquery.d.ts`. * @param libs An array of entries to register. */ setExtraLibs( libs: { content: string; filePath?: string; }[] ): void; /** * Get current TypeScript compiler options for the language service. */ getCompilerOptions(): CompilerOptions; /** * Set TypeScript compiler options. */ setCompilerOptions(options: CompilerOptions): void; /** * Get the current diagnostics options for the language service. */ getDiagnosticsOptions(): DiagnosticsOptions; /** * Configure whether syntactic and/or semantic validation should * be performed */ setDiagnosticsOptions(options: DiagnosticsOptions): void; /** * Configure webworker options */ setWorkerOptions(options: WorkerOptions): void; /** * No-op. */ setMaximumWorkerIdleTime(value: number): void; /** * Configure if all existing models should be eagerly sync'd * to the worker on start or restart. */ setEagerModelSync(value: boolean): void; /** * Get the current setting for whether all existing models should be eagerly sync'd * to the worker on start or restart. */ getEagerModelSync(): boolean; /** * Configure inlay hints options. */ setInlayHintsOptions(options: InlayHintsOptions): void; } export interface TypeScriptWorker { /** * Get diagnostic messages for any syntax issues in the given file. */ getSyntacticDiagnostics(fileName: string): Promise; /** * Get diagnostic messages for any semantic issues in the given file. */ getSemanticDiagnostics(fileName: string): Promise; /** * Get diagnostic messages for any suggestions related to the given file. */ getSuggestionDiagnostics(fileName: string): Promise; /** * Get the content of a given file. */ getScriptText(fileName: string): Promise; /** * Get diagnostic messages related to the current compiler options. * @param fileName Not used */ getCompilerOptionsDiagnostics(fileName: string): Promise; /** * Get code completions for the given file and position. * @returns `Promise` */ getCompletionsAtPosition(fileName: string, position: number): Promise; /** * Get code completion details for the given file, position, and entry. * @returns `Promise` */ getCompletionEntryDetails( fileName: string, position: number, entry: string ): Promise; /** * Get signature help items for the item at the given file and position. * @returns `Promise` */ getSignatureHelpItems( fileName: string, position: number, options: any ): Promise; /** * Get quick info for the item at the given position in the file. * @returns `Promise` */ getQuickInfoAtPosition(fileName: string, position: number): Promise; /** * Get other ranges which are related to the item at the given position in the file (often used for highlighting). * @returns `Promise | undefined>` */ getOccurrencesAtPosition( fileName: string, position: number ): Promise | undefined>; /** * Get the definition of the item at the given position in the file. * @returns `Promise | undefined>` */ getDefinitionAtPosition( fileName: string, position: number ): Promise | undefined>; /** * Get references to the item at the given position in the file. * @returns `Promise` */ getReferencesAtPosition(fileName: string, position: number): Promise; /** * Get outline entries for the item at the given position in the file. * @returns `Promise` */ getNavigationBarItems(fileName: string): Promise; /** * Get changes which should be applied to format the given file. * @param options `typescript.FormatCodeOptions` * @returns `Promise` */ getFormattingEditsForDocument(fileName: string, options: any): Promise; /** * Get changes which should be applied to format the given range in the file. * @param options `typescript.FormatCodeOptions` * @returns `Promise` */ getFormattingEditsForRange( fileName: string, start: number, end: number, options: any ): Promise; /** * Get formatting changes which should be applied after the given keystroke. * @param options `typescript.FormatCodeOptions` * @returns `Promise` */ getFormattingEditsAfterKeystroke( fileName: string, postion: number, ch: string, options: any ): Promise; /** * Get other occurrences which should be updated when renaming the item at the given file and position. * @returns `Promise` */ findRenameLocations( fileName: string, positon: number, findInStrings: boolean, findInComments: boolean, providePrefixAndSuffixTextForRename: boolean ): Promise; /** * Get edits which should be applied to rename the item at the given file and position (or a failure reason). * @param options `typescript.RenameInfoOptions` * @returns `Promise` */ getRenameInfo(fileName: string, positon: number, options: any): Promise; /** * Get transpiled output for the given file. * @returns `typescript.EmitOutput` */ getEmitOutput(fileName: string): Promise; /** * Get possible code fixes at the given position in the file. * @param formatOptions `typescript.FormatCodeOptions` * @returns `Promise>` */ getCodeFixesAtPosition( fileName: string, start: number, end: number, errorCodes: number[], formatOptions: any ): Promise>; /** * Get inlay hints in the range of the file. * @param fileName * @returns `Promise` */ provideInlayHints(fileName: string, start: number, end: number): Promise>; } export const typescriptVersion: string; export const typescriptDefaults: LanguageServiceDefaults; export const javascriptDefaults: LanguageServiceDefaults; export const getTypeScriptWorker: () => Promise<(...uris: Uri[]) => Promise>; export const getJavaScriptWorker: () => Promise<(...uris: Uri[]) => Promise>; }