Skip to content

Commit a6ece0f

Browse files
author
Paul van Brenk
committed
Telemetry for NPM manager
1 parent 6f3cfa9 commit a6ece0f

File tree

5 files changed

+76
-0
lines changed

5 files changed

+76
-0
lines changed

Nodejs/Product/Nodejs/NpmUI/NpmPackageInstallViewModel.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using System.Windows.Input;
1111
using System.Windows.Threading;
1212
using Microsoft.NodejsTools.Npm;
13+
using Microsoft.NodejsTools.Telemetry;
1314
using Microsoft.VisualStudio.Shell;
1415

1516
namespace Microsoft.NodejsTools.NpmUI
@@ -302,6 +303,9 @@ internal void Install(PackageCatalogEntryViewModel package)
302303
if (!string.IsNullOrEmpty(package.Name))
303304
{
304305
var selectedVersion = this.SelectedVersion is SemverVersion ? ((SemverVersion)this.SelectedVersion).ToString() : string.Empty;
306+
307+
TelemetryHelper.LogInstallNpmPackage(package.Name, selectedVersion);
308+
305309
this.npmWorker.QueueCommand(
306310
NpmArgumentBuilder.GetNpmInstallArguments(
307311
package.Name,

Nodejs/Product/Nodejs/NpmUI/NpmWorker.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System.Threading;
1212
using System.Threading.Tasks;
1313
using Microsoft.NodejsTools.Npm;
14+
using Microsoft.NodejsTools.Telemetry;
1415
using Newtonsoft.Json;
1516
using Newtonsoft.Json.Linq;
1617

@@ -103,6 +104,8 @@ public async Task<IEnumerable<IPackage>> GetCatalogPackagesAsync(string filterTe
103104
return Enumerable.Empty<IPackage>();
104105
}
105106

107+
TelemetryHelper.LogSearchNpm(filterText);
108+
106109
var relativeUri = string.Format("/-/v1/search?text={0}", WebUtility.UrlEncode(filterText));
107110
var searchUri = new Uri(defaultRegistryUri, relativeUri);
108111

Nodejs/Product/Nodejs/Project/NodeModulesNode.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Threading;
88
using Microsoft.NodejsTools.Npm;
99
using Microsoft.NodejsTools.NpmUI;
10+
using Microsoft.NodejsTools.Telemetry;
1011
using Microsoft.VisualStudio;
1112
using Microsoft.VisualStudio.Shell.Interop;
1213
using Microsoft.VisualStudioTools;
@@ -620,6 +621,7 @@ public System.Threading.Tasks.Task UninstallModules()
620621
{
621622
foreach (var node in selected.OfType<DependencyNode>().Where(this.CheckValidCommandTarget))
622623
{
624+
TelemetryHelper.LogUnInstallNpmPackage(node.Package.Name);
623625
await commander.UninstallPackageAsync(node.Package.Name);
624626
}
625627
});
@@ -632,6 +634,8 @@ public async System.Threading.Tasks.Task UninstallModule(DependencyNode node)
632634
return;
633635
}
634636

637+
TelemetryHelper.LogUnInstallNpmPackage(node.Package.Name);
638+
635639
await RunNpmCommand(async commander =>
636640
{
637641
await commander.UninstallPackageAsync(node.Package.Name);

Nodejs/Product/Nodejs/Telemetry/TelemetryEvents.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,21 @@ internal static class TelemetryEvents
1818
/// User started debugging.
1919
/// </summary>
2020
public const string DebbugerStarted = Prefix + "DebuggerStarted";
21+
22+
/// <summary>
23+
/// User queried NPM for a package.
24+
/// </summary>
25+
public const string SearchNpm = Prefix + "SearchNpm";
26+
27+
/// <summary>
28+
/// User installed NPM package.
29+
/// </summary>
30+
public const string InstallNpm = Prefix + "InstallNpm";
31+
32+
/// <summary>
33+
/// User uninstalled package.
34+
/// </summary>
35+
public const string UnInstallNpm = Prefix + "UnInstallNpm";
2136
}
2237

2338
internal static class TelemetryProperties
@@ -42,5 +57,20 @@ internal static class TelemetryProperties
4257
/// The version of Node the user is using.
4358
/// </summary>
4459
public const string NodeVersion = Prefix + "NodeVersion";
60+
61+
/// <summary>
62+
/// The query the user send to NPM.
63+
/// </summary>
64+
public const string NpmSearchQuery = Prefix + "NpmSearchQuery";
65+
66+
/// <summary>
67+
/// The NPM package being installed/uninstalled/updated.
68+
/// </summary>
69+
public const string NpmPackageName = Prefix + "NpmPackageName";
70+
71+
/// <summary>
72+
/// The version of the NPM package being installed/uninstalled/updated.
73+
/// </summary>
74+
public const string NpmPackageVersion = Prefix + "NpmPackageVersion";
4575
}
4676
}

Nodejs/Product/Nodejs/Telemetry/TelemetryHelper.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
namespace Microsoft.NodejsTools.Telemetry
77
{
8+
using System;
89
using static TelemetryEvents;
910
using static TelemetryProperties;
1011

@@ -35,5 +36,39 @@ public static void LogDebuggingStarted(string debuggerName, string nodeVersion,
3536

3637
defaultSession.PostEvent(userTask);
3738
}
39+
40+
public static void LogSearchNpm(string query)
41+
{
42+
var userTask = new UserTaskEvent(SearchNpm, TelemetryResult.Success);
43+
userTask.Properties[NpmSearchQuery] = query;
44+
45+
defaultSession.PostEvent(userTask);
46+
}
47+
48+
public static void LogInstallNpmPackage(string packageName, string version)
49+
{
50+
var userTask = new UserTaskEvent(InstallNpm, TelemetryResult.Success);
51+
userTask.Properties[NpmPackageName] = packageName;
52+
userTask.Properties[NpmPackageVersion] = packageName;
53+
54+
defaultSession.PostEvent(userTask);
55+
}
56+
57+
public static void LogUnInstallNpmPackage(string packageName)
58+
{
59+
var userTask = new UserTaskEvent(UnInstallNpm, TelemetryResult.Success);
60+
userTask.Properties[NpmPackageName] = packageName;
61+
62+
defaultSession.PostEvent(userTask);
63+
}
64+
65+
public static void LogUpdateNpmPackage(string packageName, string version)
66+
{
67+
var userTask = new UserTaskEvent(UpdateNpm, TelemetryResult.Success);
68+
userTask.Properties[NpmPackageName] = packageName;
69+
userTask.Properties[NpmPackageVersion] = version;
70+
71+
defaultSession.PostEvent(userTask);
72+
}
3873
}
3974
}

0 commit comments

Comments
 (0)