From b96bd94b8d9784ca69f1fa28b3b48f30bed36ddb Mon Sep 17 00:00:00 2001 From: Blake Newman Date: Mon, 6 Jun 2022 09:48:49 +0100 Subject: [PATCH 1/2] feat(vue-tsc): support tracing Proxy tracing API to `tsserverlibrary` fixes: #1375 --- packages/vue-tsc/bin/vue-tsc.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/vue-tsc/bin/vue-tsc.js b/packages/vue-tsc/bin/vue-tsc.js index 80ac8132c..de6c7a79a 100755 --- a/packages/vue-tsc/bin/vue-tsc.js +++ b/packages/vue-tsc/bin/vue-tsc.js @@ -32,6 +32,18 @@ fs.readFileSync = (...args) => { `function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _configFileParsingDiagnostics) {`, `function createProgram(rootNamesOrOptions, _options, _host, _oldProgram, _configFileParsingDiagnostics) { return require(${JSON.stringify(proxyPath)}).createProgramProxy(...arguments);`, ); + + // proxy tracing + tsc = tsc.replace( + `ts.startTracing = tracingEnabled.startTracing;`, + `ts.startTracing = require("typescript/lib/tsserverlibrary").startTracing;`, + ); + + tsc = tsc.replace( + `ts.dumpTracingLegend = tracingEnabled.dumpLegend;`, + `ts.dumpTracingLegend = require("typescript/lib/tsserverlibrary").dumpTracingLegend;`, + ); + return tsc; } return readFileSync(...args); From 86c7b4b069acdf9046a50b599713ec4082bc678c Mon Sep 17 00:00:00 2001 From: johnsoncodehk Date: Mon, 6 Jun 2022 20:46:10 +0800 Subject: [PATCH 2/2] fix: ensure tsc use same tsserverlibrary with vue-tsc --- packages/vue-tsc/bin/vue-tsc.js | 4 ++-- packages/vue-tsc/src/proxy.ts | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/vue-tsc/bin/vue-tsc.js b/packages/vue-tsc/bin/vue-tsc.js index de6c7a79a..dab125f8b 100755 --- a/packages/vue-tsc/bin/vue-tsc.js +++ b/packages/vue-tsc/bin/vue-tsc.js @@ -36,12 +36,12 @@ fs.readFileSync = (...args) => { // proxy tracing tsc = tsc.replace( `ts.startTracing = tracingEnabled.startTracing;`, - `ts.startTracing = require("typescript/lib/tsserverlibrary").startTracing;`, + `ts.startTracing = require(${JSON.stringify(proxyPath)}).loadTsLib().startTracing;`, ); tsc = tsc.replace( `ts.dumpTracingLegend = tracingEnabled.dumpLegend;`, - `ts.dumpTracingLegend = require("typescript/lib/tsserverlibrary").dumpTracingLegend;`, + `ts.dumpTracingLegend = require(${JSON.stringify(proxyPath)}).loadTsLib().dumpTracingLegend;`, ); return tsc; diff --git a/packages/vue-tsc/src/proxy.ts b/packages/vue-tsc/src/proxy.ts index a23ddce99..1affe0156 100644 --- a/packages/vue-tsc/src/proxy.ts +++ b/packages/vue-tsc/src/proxy.ts @@ -119,6 +119,10 @@ export function createProgramProxy( } } +export function loadTsLib() { + return ts; +} + function doThrow(msg: string) { console.error(msg); throw msg;