Browse Source

Merge pull request #56 from orta/allow_access_to_dts

Allow access to read files which workers host, notably the default dts
Alexandru Dima 5 years ago
parent
commit
6d49c51b83
2 changed files with 23 additions and 5 deletions
  1. 5 0
      src/monaco.d.ts
  2. 18 5
      src/tsWorker.ts

+ 5 - 0
src/monaco.d.ts

@@ -275,6 +275,11 @@ declare module monaco.languages.typescript {
          */
         getSuggestionDiagnostics(fileName: string): Promise<Diagnostic[]>;
 
+        /**
+         * Get the content of a given file.
+         */
+        getScriptText(fileName: string): Promise<string | undefined>;
+
         /**
          * Get diagnostic messages related to the current compiler options.
          * @param fileName Not used

+ 18 - 5
src/tsWorker.ts

@@ -69,7 +69,11 @@ export class TypeScriptWorker implements ts.LanguageServiceHost, monaco.language
 		return '';
 	}
 
-	getScriptSnapshot(fileName: string): ts.IScriptSnapshot | undefined {
+	getScriptText(fileName: string): Promise<string | undefined> {
+		return Promise.resolve(this._getScriptText(fileName));
+	}
+
+	_getScriptText(fileName: string): string | undefined {
 		let text: string;
 		let model = this._getModel(fileName);
 		if (model) {
@@ -88,6 +92,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 <ts.IScriptSnapshot>{
 			getText: (start, end) => text.substring(start, end),
 			getLength: () => text.length,
@@ -200,12 +213,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<readonly ts.RenameLocation[] | undefined> {
-		return Promise.resolve(this._languageService.findRenameLocations(fileName, positon, findInStrings, findInComments, providePrefixAndSuffixTextForRename));
+	findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean, providePrefixAndSuffixTextForRename: boolean): Promise<readonly ts.RenameLocation[] | undefined> {
+		return Promise.resolve(this._languageService.findRenameLocations(fileName, position, findInStrings, findInComments, providePrefixAndSuffixTextForRename));
 	}
 
-	getRenameInfo(fileName: string, positon: number, options: ts.RenameInfoOptions): Promise<ts.RenameInfo> {
-		return Promise.resolve(this._languageService.getRenameInfo(fileName, positon, options));
+	getRenameInfo(fileName: string, position: number, options: ts.RenameInfoOptions): Promise<ts.RenameInfo> {
+		return Promise.resolve(this._languageService.getRenameInfo(fileName, position, options));
 	}
 
 	getEmitOutput(fileName: string): Promise<ts.EmitOutput> {