From f7c4281f6b0c59e62b77f9cbbf9647a7b6e25e2e Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 1 Jul 2016 17:35:12 -0700 Subject: [PATCH 1/2] add new method getEmitOutputObject to return result of the emit as object with properties instead of json string --- src/services/shims.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/services/shims.ts b/src/services/shims.ts index e0f7cc6dc76..e53203c211f 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -231,6 +231,7 @@ namespace ts { isValidBraceCompletionAtPosition(fileName: string, position: number, openingBrace: number): string; getEmitOutput(fileName: string): string; + getEmitOutputObject(fileName: string): EmitOutput; } export interface ClassifierShim extends Shim { @@ -518,9 +519,13 @@ namespace ts { } function forwardJSONCall(logger: Logger, actionDescription: string, action: () => any, logPerformance: boolean): string { + return forwardCall(logger, actionDescription, /*returnJson*/ true, action, logPerformance); + } + + function forwardCall(logger: Logger, actionDescription: string, returnJson: boolean, action: () => T, logPerformance: boolean): T | string { try { const result = simpleForwardCall(logger, actionDescription, action, logPerformance); - return JSON.stringify({ result }); + return returnJson ? JSON.stringify({ result }) : result; } catch (err) { if (err instanceof OperationCanceledException) { @@ -532,6 +537,7 @@ namespace ts { } } + class ShimBase implements Shim { constructor(private factory: ShimFactory) { factory.registerShim(this); @@ -918,6 +924,15 @@ namespace ts { () => this.languageService.getEmitOutput(fileName) ); } + + public getEmitOutputObject(fileName: string): any { + return forwardCall( + this.logger, + `getEmitOutput('${fileName}')`, + /*returnJson*/ false, + () => this.languageService.getEmitOutput(fileName), + this.logPerformance); + } } function convertClassifications(classifications: Classifications): { spans: string, endOfLineState: EndOfLineState } { From f9a5593f6a2570691d4030c8497ae9c5bc771214 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Fri, 1 Jul 2016 20:30:08 -0700 Subject: [PATCH 2/2] fix linter --- src/services/shims.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/shims.ts b/src/services/shims.ts index e53203c211f..a233f99d03f 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -927,7 +927,7 @@ namespace ts { public getEmitOutputObject(fileName: string): any { return forwardCall( - this.logger, + this.logger, `getEmitOutput('${fileName}')`, /*returnJson*/ false, () => this.languageService.getEmitOutput(fileName),