From 6846ea3f883bcf7b5af6f037e869db4450caf394 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Tue, 15 Nov 2016 10:59:55 -0800 Subject: [PATCH] added extra check to prevent multiple installation of the same typing, added version field to telemetry event (#12258) * added extra check to prevent multiple installation of the same typing, added version field to telemetry event * use ts.version --- src/compiler/core.ts | 3 +++ src/compiler/program.ts | 2 -- src/server/protocol.ts | 5 +++++ src/server/server.ts | 3 ++- src/server/types.d.ts | 1 + src/server/typingsInstaller/typingsInstaller.ts | 5 +++-- 6 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/compiler/core.ts b/src/compiler/core.ts index dd84479fe2b..05b3a1398eb 100644 --- a/src/compiler/core.ts +++ b/src/compiler/core.ts @@ -3,6 +3,9 @@ /* @internal */ namespace ts { + + export const version = "2.0.9"; + /** * Ternary values are defined such that * x & y is False if either x or y is False. diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 3343c4407d5..9b42bcf1ee8 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -5,8 +5,6 @@ namespace ts { /** The version of the TypeScript compiler release */ - export const version = "2.0.9"; - const emptyArray: any[] = []; export function findConfigFile(searchPath: string, fileExists: (fileName: string) => boolean, configName = "tsconfig.json"): string { diff --git a/src/server/protocol.ts b/src/server/protocol.ts index 638abfa5880..bfd82cf60ee 100644 --- a/src/server/protocol.ts +++ b/src/server/protocol.ts @@ -1968,6 +1968,11 @@ namespace ts.server.protocol { * true if install request succeeded, otherwise - false */ installSuccess: boolean; + + /** + * version of typings installer + */ + typingsInstallerVersion: string; } export interface NavBarResponse extends Response { diff --git a/src/server/server.ts b/src/server/server.ts index 9f74c5c912b..5b2c8324812 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -266,7 +266,8 @@ namespace ts.server { telemetryEventName: "typingsInstalled", payload: { installedPackages: response.packagesToInstall.join(","), - installSuccess: response.installSuccess + installSuccess: response.installSuccess, + typingsInstallerVersion: response.typingsInstallerVersion } }; const eventName: protocol.TelemetryEventName = "telemetry"; diff --git a/src/server/types.d.ts b/src/server/types.d.ts index 9227364e17e..673bd39ca3d 100644 --- a/src/server/types.d.ts +++ b/src/server/types.d.ts @@ -63,6 +63,7 @@ declare namespace ts.server { readonly packagesToInstall: ReadonlyArray; readonly kind: EventInstall; readonly installSuccess: boolean; + readonly typingsInstallerVersion: string; } export interface InstallTypingHost extends JsTyping.TypingResolutionHost { diff --git a/src/server/typingsInstaller/typingsInstaller.ts b/src/server/typingsInstaller/typingsInstaller.ts index fa970a6afe8..3da65cba704 100644 --- a/src/server/typingsInstaller/typingsInstaller.ts +++ b/src/server/typingsInstaller/typingsInstaller.ts @@ -230,7 +230,7 @@ namespace ts.server.typingsInstaller { } const result: string[] = []; for (const typing of typingsToInstall) { - if (this.missingTypingsSet[typing]) { + if (this.missingTypingsSet[typing] || this.packageNameToTypingLocation[typing]) { continue; } const validationResult = validatePackageName(typing); @@ -308,7 +308,8 @@ namespace ts.server.typingsInstaller { this.sendResponse({ kind: EventInstall, packagesToInstall: scopedTypings, - installSuccess: ok + installSuccess: ok, + typingsInstallerVersion: ts.version // qualified explicitly to prevent occasional shadowing }); }