mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-27 12:04:04 +01:00
Merge #15152: Adapt TSServer 2.0.8
This commit is contained in:
20
extensions/typescript/src/protocol.d.ts
vendored
20
extensions/typescript/src/protocol.d.ts
vendored
@@ -1524,6 +1524,26 @@ declare namespace ts.server.protocol {
|
||||
spans: TextSpan[];
|
||||
childItems?: NavigationTree[];
|
||||
}
|
||||
type TelemetryEventName = "telemetry";
|
||||
interface TelemetryEvent extends Event {
|
||||
event: TelemetryEventName;
|
||||
body: TelemetryEventBody;
|
||||
}
|
||||
interface TelemetryEventBody {
|
||||
telemetryEventName: string;
|
||||
payload: any;
|
||||
}
|
||||
type TypingsInstalledTelemetryEventName = "typingsInstalled";
|
||||
interface TypingsInstalledTelemetryEventBody extends TelemetryEventBody {
|
||||
telemetryEventName: TypingsInstalledTelemetryEventName;
|
||||
payload: TypingsInstalledTelemetryEventPayload;
|
||||
}
|
||||
interface TypingsInstalledTelemetryEventPayload {
|
||||
/**
|
||||
* Comma separated list of installed typing packages
|
||||
*/
|
||||
installedPackages: string;
|
||||
}
|
||||
interface NavBarResponse extends Response {
|
||||
body?: NavigationBarItem[];
|
||||
}
|
||||
|
||||
@@ -49,6 +49,10 @@ export class API {
|
||||
public has206Features(): boolean {
|
||||
return semver.gte(this._version, '2.0.6');
|
||||
}
|
||||
|
||||
public has208Features(): boolean {
|
||||
return semver.gte(this._version, '2.0.8');
|
||||
}
|
||||
}
|
||||
|
||||
export interface ITypescriptServiceClient {
|
||||
|
||||
@@ -405,6 +405,9 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
|
||||
args.push('--disableAutomaticTypingAcquisition');
|
||||
}
|
||||
}
|
||||
if (this.apiVersion.has208Features()) {
|
||||
args.push('--enableTelemetry');
|
||||
}
|
||||
electron.fork(modulePath, args, options, (err: any, childProcess: cp.ChildProcess) => {
|
||||
if (err) {
|
||||
this.lastError = err;
|
||||
@@ -648,6 +651,25 @@ export default class TypeScriptServiceClient implements ITypescriptServiceClient
|
||||
this.host.semanticDiagnosticsReceived(event as Proto.DiagnosticEvent);
|
||||
} else if (event.event === 'configFileDiag') {
|
||||
this.host.configFileDiagnosticsReceived(event as Proto.ConfigFileDiagnosticEvent);
|
||||
} else if (event.event === 'telemetry') {
|
||||
let telemetryData = (event as Proto.TelemetryEvent).body;
|
||||
let properties: Map<string> = Object.create(null);
|
||||
switch (telemetryData.telemetryEventName) {
|
||||
case 'typingsInstalled':
|
||||
properties['installedPackages'] = (telemetryData.payload as Proto.TypingsInstalledTelemetryEventPayload).installedPackages;
|
||||
break;
|
||||
default:
|
||||
let payload = telemetryData.payload;
|
||||
if (payload) {
|
||||
Object.keys(payload).forEach((key) => {
|
||||
if (payload.hasOwnProperty(key) && is.string(payload[key])) {
|
||||
properties[key] = payload[key];
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
this.logTelemetry(telemetryData.telemetryEventName, properties);
|
||||
}
|
||||
} else {
|
||||
throw new Error('Unknown message type ' + message.type + ' recevied');
|
||||
|
||||
Reference in New Issue
Block a user