From a5b927fca1b6b204bf01d43c601a961f9f66b099 Mon Sep 17 00:00:00 2001 From: Orta Therox Date: Sat, 15 Feb 2020 13:50:30 -0500 Subject: [PATCH 1/2] Allow access to read files which workers host, notably the default dts --- src/tsWorker.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/tsWorker.ts b/src/tsWorker.ts index 32b9a6bb..e0049e92 100644 --- a/src/tsWorker.ts +++ b/src/tsWorker.ts @@ -69,7 +69,7 @@ export class TypeScriptWorker implements ts.LanguageServiceHost, monaco.language return ''; } - getScriptSnapshot(fileName: string): ts.IScriptSnapshot | undefined { + getScriptText(fileName: string): string | undefined { let text: string; let model = this._getModel(fileName); if (model) { @@ -88,6 +88,15 @@ export class TypeScriptWorker implements ts.LanguageServiceHost, monaco.language return; } + return text; + } + + getScriptSnapshot(fileName: string): ts.IScriptSnapshot | undefined { + const text = this.getScriptText(fileName); + if (!text) { + return; + } + return { getText: (start, end) => text.substring(start, end), getLength: () => text.length, @@ -200,12 +209,12 @@ export class TypeScriptWorker implements ts.LanguageServiceHost, monaco.language return Promise.resolve(this._languageService.getFormattingEditsAfterKeystroke(fileName, postion, ch, options)); } - findRenameLocations(fileName: string, positon: number, findInStrings: boolean, findInComments: boolean, providePrefixAndSuffixTextForRename: boolean): Promise { - return Promise.resolve(this._languageService.findRenameLocations(fileName, positon, findInStrings, findInComments, providePrefixAndSuffixTextForRename)); + findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean, providePrefixAndSuffixTextForRename: boolean): Promise { + return Promise.resolve(this._languageService.findRenameLocations(fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename)); } - getRenameInfo(fileName: string, positon: number, options: ts.RenameInfoOptions): Promise { - return Promise.resolve(this._languageService.getRenameInfo(fileName, positon, options)); + getRenameInfo(fileName: string, position: number, options: ts.RenameInfoOptions): Promise { + return Promise.resolve(this._languageService.getRenameInfo(fileName, position, options)); } getEmitOutput(fileName: string): Promise { From aee134f9c1c462fcbf8d8d8cfe3c14d617a7f702 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Mon, 17 Feb 2020 16:56:39 +0100 Subject: [PATCH 2/2] Add API to .d.ts --- src/monaco.d.ts | 5 +++++ src/tsWorker.ts | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/monaco.d.ts b/src/monaco.d.ts index d17315d7..1e99b41b 100644 --- a/src/monaco.d.ts +++ b/src/monaco.d.ts @@ -275,6 +275,11 @@ declare module monaco.languages.typescript { */ 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 diff --git a/src/tsWorker.ts b/src/tsWorker.ts index e0049e92..873885f5 100644 --- a/src/tsWorker.ts +++ b/src/tsWorker.ts @@ -69,7 +69,11 @@ export class TypeScriptWorker implements ts.LanguageServiceHost, monaco.language return ''; } - getScriptText(fileName: string): string | undefined { + getScriptText(fileName: string): Promise { + return Promise.resolve(this._getScriptText(fileName)); + } + + _getScriptText(fileName: string): string | undefined { let text: string; let model = this._getModel(fileName); if (model) { @@ -92,7 +96,7 @@ export class TypeScriptWorker implements ts.LanguageServiceHost, monaco.language } getScriptSnapshot(fileName: string): ts.IScriptSnapshot | undefined { - const text = this.getScriptText(fileName); + const text = this._getScriptText(fileName); if (!text) { return; }