Skip to content

Commit ea61a7b

Browse files
committed
Enable telemetry in Web extension
Signed-off-by: Fred Bricon <fbricon@gmail.com>
1 parent c395794 commit ea61a7b

File tree

8 files changed

+1232
-1399
lines changed

8 files changed

+1232
-1399
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ dist/
66
test/testFixture/.vscode
77
*.vsix
88
.DS_Store
9-
test-resources
9+
test-resources
10+
yarn-error.log

.vscode/launch.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
"request": "launch",
99
"runtimeExecutable": "${execPath}",
1010
"args": ["--extensionDevelopmentPath=${workspaceRoot}"],
11-
"stopOnEntry": false,
1211
"sourceMaps": true,
1312
"outFiles": ["${workspaceRoot}/dist/**/*.js"],
1413
"preLaunchTask": "compile typescript",
@@ -36,13 +35,16 @@
3635
},
3736
{
3837
"name": "Launch Web Extension",
39-
"type": "pwa-extensionHost",
38+
"type": "extensionHost",
4039
"debugWebWorkerHost": true,
4140
"request": "launch",
4241
"args": [
4342
"--extensionDevelopmentPath=${workspaceFolder}",
4443
"--extensionDevelopmentKind=web"
4544
],
45+
"env": {
46+
"VSCODE_REDHAT_TELEMETRY_DEBUG":"true"
47+
},
4648
"outFiles": ["${workspaceRoot}/dist/**/*.js"],
4749
"preLaunchTask": "compile webpack"
4850
},

package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@
268268
"@vscode/test-web": "0.0.11",
269269
"buffer": "^6.0.3",
270270
"chai": "^4.2.0",
271+
"crypto-browserify": "^3.12.0",
271272
"eslint": "^7.6.0",
272273
"eslint-config-prettier": "^6.11.0",
273274
"eslint-plugin-prettier": "^3.1.4",
@@ -284,19 +285,20 @@
284285
"typescript": "4.4.3",
285286
"umd-compat-loader": "^2.1.2",
286287
"url": "^0.11.0",
287-
"util": "^0.12.4",
288+
"util": "^0.12.5",
288289
"vscode-extension-tester": "^5.3.0",
289290
"vscode-test": "^1.4.0",
290-
"webpack": "^5.52.1",
291-
"webpack-cli": "^4.8.0"
291+
"webpack": "^5.76.1",
292+
"webpack-cli": "^5.0.1"
292293
},
293294
"dependencies": {
294-
"@redhat-developer/vscode-redhat-telemetry": "0.5.2",
295+
"@redhat-developer/vscode-redhat-telemetry": "^0.6.0",
295296
"fs-extra": "^9.1.0",
296297
"request-light": "^0.5.7",
297298
"vscode-languageclient": "7.0.0",
298299
"vscode-nls": "^3.2.1",
299300
"vscode-uri": "^2.0.3",
301+
"whatwg-fetch": "^3.6.2",
300302
"yaml-language-server": "next"
301303
}
302304
}

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export type LanguageClientConstructor = (
9797
) => CommonLanguageClient;
9898

9999
export interface RuntimeEnvironment {
100-
readonly telemetry: TelemetryService;
100+
readonly telemetry?: TelemetryService;
101101
readonly schemaCache: IJSONSchemaCache;
102102
}
103103

src/webworker/yamlClientMain.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import { startClient, LanguageClientConstructor, RuntimeEnvironment } from '../e
1010
import { LanguageClient } from 'vscode-languageclient/browser';
1111
import { SchemaExtensionAPI } from '../schema-extension-api';
1212
import { IJSONSchemaCache } from '../json-schema-content-provider';
13-
13+
import { getRedHatService } from '@redhat-developer/vscode-redhat-telemetry/lib/webworker';
1414
// this method is called when vs code is activated
15-
export async function activate(context: ExtensionContext): Promise<SchemaExtensionAPI> {
15+
export async function activate(context: ExtensionContext): Promise<SchemaExtensionAPI | undefined> {
1616
const extensionUri = context.extensionUri;
1717
const serverMain = extensionUri.with({
1818
path: extensionUri.path + '/dist/languageserver-web.js',
@@ -25,12 +25,12 @@ export async function activate(context: ExtensionContext): Promise<SchemaExtensi
2525

2626
const schemaCache: IJSONSchemaCache = {
2727
getETag: () => undefined,
28-
getSchema: () => undefined,
28+
getSchema: async () => undefined,
2929
putSchema: () => Promise.resolve(),
3030
};
31-
31+
const telemetry = await (await getRedHatService(context)).getTelemetryService();
3232
const runtime: RuntimeEnvironment = {
33-
telemetry: { send: () => undefined, sendStartupEvent: () => undefined },
33+
telemetry,
3434
schemaCache,
3535
};
3636
return startClient(context, newLanguageClient, runtime);

test/telemetry.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as sinonChai from 'sinon-chai';
77
import * as chai from 'chai';
88
import * as vscode from 'vscode';
99
import { TelemetryErrorHandler, TelemetryOutputChannel } from '../src/telemetry';
10-
import { TelemetryEvent, TelemetryService } from '@redhat-developer/vscode-redhat-telemetry/lib/interfaces/telemetry';
10+
import { TelemetryEvent, TelemetryService } from '@redhat-developer/vscode-redhat-telemetry';
1111

1212
const expect = chai.expect;
1313
chai.use(sinonChai);

webpack.config.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,13 @@ const clientWeb = {
7272
resolve: {
7373
mainFields: ['module', 'main'],
7474
extensions: ['.ts', '.js'], // support ts-files and js-files
75-
alias: {},
75+
alias: {
76+
'node-fetch': 'whatwg-fetch',
77+
'object-hash': 'object-hash/dist/object_hash.js',
78+
},
7679
fallback: {
7780
path: require.resolve('path-browserify'),
81+
'node-fetch': require.resolve('whatwg-fetch'),
7882
util: require.resolve('util'),
7983
fs: false,
8084
},
@@ -102,7 +106,7 @@ const clientWeb = {
102106
},
103107
plugins: [
104108
new webpack.ProvidePlugin({
105-
process: 'process/browser.js', // provide a shim for the global `process` variable
109+
process: path.resolve(path.join(__dirname, 'node_modules/process/browser.js')), // provide a shim for the global `process` variable
106110
}),
107111
],
108112
externals: {

0 commit comments

Comments
 (0)