Skip to content

Commit 2db4a7f

Browse files
committed
setup telemetry
Signed-off-by: shmck <shawn.j.mckay@gmail.com>
1 parent 7652ee6 commit 2db4a7f

File tree

5 files changed

+126
-5
lines changed

5 files changed

+126
-5
lines changed

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@
5252
"node-fetch": "^2.6.0",
5353
"semver": "^7.3.2",
5454
"ts-jest": "^26.1.3",
55-
"typescript": "^3.9.7"
55+
"typescript": "^3.9.7",
56+
"vscode-extension-telemetry": "^0.1.6"
5657
},
5758
"devDependencies": {
5859
"eslint-config-prettier": "^6.11.0",

src/editor/index.ts

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as vscode from 'vscode'
22
import { createCommands } from './commands'
3+
import * as telemetry from '../services/telemetry'
34

45
class Editor {
56
// extension context set on activation
@@ -27,12 +28,16 @@ class Editor {
2728
const command: vscode.Disposable = vscode.commands.registerCommand(cmd, commands[cmd])
2829
this.vscodeExt.subscriptions.push(command)
2930
}
31+
32+
telemetry.activate()
3033
}
3134
public deactivate = (): void => {
3235
// cleanup subscriptions/tasks
3336
for (const disposable of this.vscodeExt.subscriptions) {
3437
disposable.dispose()
3538
}
39+
40+
telemetry.deactivate()
3641
}
3742
}
3843

src/environment.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { getWorkspaceRoot } from './services/workspace'
22
import * as os from 'os'
33

4-
// CodeRoad version
5-
export const VERSION = 'unknown'
4+
export const VERSION = require('../package.json').version
5+
6+
export const EXTENSION_ID = 'coderoad'
67

78
// Node env
89
export type Env = 'test' | 'local' | 'development' | 'production'
@@ -13,7 +14,7 @@ export const NODE_ENV: Env = process.env.NODE_ENV || 'production'
1314
export const LOG = false
1415

1516
// error logging tool
16-
export const SENTRY_DSN: string | null = null
17+
export const INSTRUMENTATION_KEY = '6ff37c76-72f3-48e3-a1b9-d5636f519b7b'
1718

1819
// uri path to the users project workspace
1920
export const WORKSPACE_ROOT: string = getWorkspaceRoot()

src/services/telemetry/index.ts

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import TelemetryReporter from 'vscode-extension-telemetry'
2+
import { EXTENSION_ID, VERSION, INSTRUMENTATION_KEY, NODE_ENV } from '../../environment'
3+
4+
interface Properties {
5+
[key: string]: string
6+
}
7+
8+
interface Measurements {
9+
[key: string]: number
10+
}
11+
12+
let reporter: any
13+
14+
export const activate = (): void => {
15+
if (NODE_ENV === 'production') {
16+
reporter = new TelemetryReporter(EXTENSION_ID, VERSION, INSTRUMENTATION_KEY)
17+
}
18+
}
19+
20+
export const deactivate = (): void => {
21+
if (reporter) {
22+
reporter.dispose()
23+
}
24+
}
25+
26+
export const onError = (error: Error, properties: Properties, measurements: Measurements): void => {
27+
if (reporter) {
28+
reporter.sendTelemetryException(error, properties, measurements)
29+
}
30+
}
31+
32+
export const onEvent = (eventName: string, properties: Properties, measurements: Measurements): void => {
33+
if (reporter) {
34+
reporter.sendTelemetryEvent(eventName, properties, measurements)
35+
}
36+
}

yarn.lock

+79-1
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,16 @@ anymatch@^3.0.3, anymatch@~3.1.1:
903903
normalize-path "^3.0.0"
904904
picomatch "^2.0.4"
905905

906+
applicationinsights@1.7.4:
907+
version "1.7.4"
908+
resolved "https://registry.yarnpkg.com/applicationinsights/-/applicationinsights-1.7.4.tgz#e7d96435594d893b00cf49f70a5927105dbb8749"
909+
integrity sha512-XFLsNlcanpjFhHNvVWEfcm6hr7lu9znnb6Le1Lk5RE03YUV9X2B2n2MfM4kJZRrUdV+C0hdHxvWyv+vWoLfY7A==
910+
dependencies:
911+
cls-hooked "^4.2.2"
912+
continuation-local-storage "^3.2.1"
913+
diagnostic-channel "0.2.0"
914+
diagnostic-channel-publishers "^0.3.3"
915+
906916
argparse@^1.0.7:
907917
version "1.0.10"
908918
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -952,6 +962,21 @@ astral-regex@^1.0.0:
952962
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
953963
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
954964

965+
async-hook-jl@^1.7.6:
966+
version "1.7.6"
967+
resolved "https://registry.yarnpkg.com/async-hook-jl/-/async-hook-jl-1.7.6.tgz#4fd25c2f864dbaf279c610d73bf97b1b28595e68"
968+
integrity sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==
969+
dependencies:
970+
stack-chain "^1.3.7"
971+
972+
async-listener@^0.6.0:
973+
version "0.6.10"
974+
resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc"
975+
integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==
976+
dependencies:
977+
semver "^5.3.0"
978+
shimmer "^1.1.0"
979+
955980
asynckit@^0.4.0:
956981
version "0.4.0"
957982
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -1232,6 +1257,15 @@ cliui@^6.0.0:
12321257
strip-ansi "^6.0.0"
12331258
wrap-ansi "^6.2.0"
12341259

1260+
cls-hooked@^4.2.2:
1261+
version "4.2.2"
1262+
resolved "https://registry.yarnpkg.com/cls-hooked/-/cls-hooked-4.2.2.tgz#ad2e9a4092680cdaffeb2d3551da0e225eae1908"
1263+
integrity sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==
1264+
dependencies:
1265+
async-hook-jl "^1.7.6"
1266+
emitter-listener "^1.0.1"
1267+
semver "^5.4.1"
1268+
12351269
co@^4.6.0:
12361270
version "4.6.0"
12371271
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@@ -1301,6 +1335,14 @@ confusing-browser-globals@^1.0.9:
13011335
resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd"
13021336
integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==
13031337

1338+
continuation-local-storage@^3.2.1:
1339+
version "3.2.1"
1340+
resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb"
1341+
integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==
1342+
dependencies:
1343+
async-listener "^0.6.0"
1344+
emitter-listener "^1.1.1"
1345+
13041346
convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
13051347
version "1.7.0"
13061348
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
@@ -1470,6 +1512,18 @@ detect-newline@^3.0.0:
14701512
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
14711513
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
14721514

1515+
diagnostic-channel-publishers@^0.3.3:
1516+
version "0.3.5"
1517+
resolved "https://registry.yarnpkg.com/diagnostic-channel-publishers/-/diagnostic-channel-publishers-0.3.5.tgz#a84a05fd6cc1d7619fdd17791c17e540119a7536"
1518+
integrity sha512-AOIjw4T7Nxl0G2BoBPhkQ6i7T4bUd9+xvdYizwvG7vVAM1dvr+SDrcUudlmzwH0kbEwdR2V1EcnKT0wAeYLQNQ==
1519+
1520+
diagnostic-channel@0.2.0:
1521+
version "0.2.0"
1522+
resolved "https://registry.yarnpkg.com/diagnostic-channel/-/diagnostic-channel-0.2.0.tgz#cc99af9612c23fb1fff13612c72f2cbfaa8d5a17"
1523+
integrity sha1-zJmvlhLCP7H/8TYSxy8sv6qNWhc=
1524+
dependencies:
1525+
semver "^5.3.0"
1526+
14731527
diff-sequences@^25.2.6:
14741528
version "25.2.6"
14751529
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
@@ -1512,6 +1566,13 @@ ecc-jsbn@~0.1.1:
15121566
jsbn "~0.1.0"
15131567
safer-buffer "^2.1.0"
15141568

1569+
emitter-listener@^1.0.1, emitter-listener@^1.1.1:
1570+
version "1.1.2"
1571+
resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8"
1572+
integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==
1573+
dependencies:
1574+
shimmer "^1.2.0"
1575+
15151576
emoji-regex@^7.0.1:
15161577
version "7.0.3"
15171578
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
@@ -3816,7 +3877,7 @@ saxes@^5.0.0:
38163877
dependencies:
38173878
xmlchars "^2.2.0"
38183879

3819-
"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0:
3880+
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0:
38203881
version "5.7.1"
38213882
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
38223883
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -3875,6 +3936,11 @@ shellwords@^0.1.1:
38753936
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
38763937
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
38773938

3939+
shimmer@^1.1.0, shimmer@^1.2.0:
3940+
version "1.2.1"
3941+
resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337"
3942+
integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==
3943+
38783944
signal-exit@^3.0.0, signal-exit@^3.0.2:
38793945
version "3.0.3"
38803946
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
@@ -4021,6 +4087,11 @@ sshpk@^1.7.0:
40214087
safer-buffer "^2.0.2"
40224088
tweetnacl "~0.14.0"
40234089

4090+
stack-chain@^1.3.7:
4091+
version "1.3.7"
4092+
resolved "https://registry.yarnpkg.com/stack-chain/-/stack-chain-1.3.7.tgz#d192c9ff4ea6a22c94c4dd459171e3f00cea1285"
4093+
integrity sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=
4094+
40244095
stack-utils@^2.0.2:
40254096
version "2.0.2"
40264097
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593"
@@ -4400,6 +4471,13 @@ verror@1.10.0:
44004471
core-util-is "1.0.2"
44014472
extsprintf "^1.2.0"
44024473

4474+
vscode-extension-telemetry@^0.1.6:
4475+
version "0.1.6"
4476+
resolved "https://registry.yarnpkg.com/vscode-extension-telemetry/-/vscode-extension-telemetry-0.1.6.tgz#048b70c93243413036a8315cda493b8e7342980c"
4477+
integrity sha512-rbzSg7k4NnsCdF4Lz0gI4jl3JLXR0hnlmfFgsY8CSDYhXgdoIxcre8jw5rjkobY0xhSDhbG7xCjP8zxskySJ/g==
4478+
dependencies:
4479+
applicationinsights "1.7.4"
4480+
44034481
vscode-test@^0.4.1:
44044482
version "0.4.3"
44054483
resolved "https://registry.yarnpkg.com/vscode-test/-/vscode-test-0.4.3.tgz#461ebf25fc4bc93d77d982aed556658a2e2b90b8"

0 commit comments

Comments
 (0)