@theia/plugin-ext 1.76.0-next.34 → 1.76.0-next.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common/plugin-api-rpc.d.ts +14 -0
- package/lib/common/plugin-api-rpc.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc.js +1 -1
- package/lib/common/plugin-api-rpc.js.map +1 -1
- package/lib/hosted/browser/hosted-plugin.d.ts +2 -0
- package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
- package/lib/hosted/browser/hosted-plugin.js +8 -2
- package/lib/hosted/browser/hosted-plugin.js.map +1 -1
- package/lib/hosted/browser/worker/worker-main.js +3 -1
- package/lib/hosted/browser/worker/worker-main.js.map +1 -1
- package/lib/hosted/browser/worker/worker-plugin-module.d.ts.map +1 -1
- package/lib/hosted/browser/worker/worker-plugin-module.js +2 -0
- package/lib/hosted/browser/worker/worker-plugin-module.js.map +1 -1
- package/lib/hosted/node/plugin-host-module.d.ts.map +1 -1
- package/lib/hosted/node/plugin-host-module.js +2 -0
- package/lib/hosted/node/plugin-host-module.js.map +1 -1
- package/lib/hosted/node/plugin-host-rpc.d.ts +3 -0
- package/lib/hosted/node/plugin-host-rpc.d.ts.map +1 -1
- package/lib/hosted/node/plugin-host-rpc.js +9 -3
- package/lib/hosted/node/plugin-host-rpc.js.map +1 -1
- package/lib/main/browser/main-context.d.ts.map +1 -1
- package/lib/main/browser/main-context.js +3 -0
- package/lib/main/browser/main-context.js.map +1 -1
- package/lib/main/browser/telemetry-main.d.ts +20 -0
- package/lib/main/browser/telemetry-main.d.ts.map +1 -0
- package/lib/main/browser/telemetry-main.js +43 -0
- package/lib/main/browser/telemetry-main.js.map +1 -0
- package/lib/main/browser/telemetry-main.spec.d.ts +2 -0
- package/lib/main/browser/telemetry-main.spec.d.ts.map +1 -0
- package/lib/main/browser/telemetry-main.spec.js +66 -0
- package/lib/main/browser/telemetry-main.spec.js.map +1 -0
- package/lib/plugin/plugin-context.d.ts +2 -1
- package/lib/plugin/plugin-context.d.ts.map +1 -1
- package/lib/plugin/plugin-context.js +2 -3
- package/lib/plugin/plugin-context.js.map +1 -1
- package/lib/plugin/plugin-manager.d.ts +2 -0
- package/lib/plugin/plugin-manager.d.ts.map +1 -1
- package/lib/plugin/plugin-manager.js +7 -0
- package/lib/plugin/plugin-manager.js.map +1 -1
- package/lib/plugin/telemetry-ext.d.ts +23 -7
- package/lib/plugin/telemetry-ext.d.ts.map +1 -1
- package/lib/plugin/telemetry-ext.js +60 -33
- package/lib/plugin/telemetry-ext.js.map +1 -1
- package/lib/plugin/telemetry-ext.spec.js +121 -16
- package/lib/plugin/telemetry-ext.spec.js.map +1 -1
- package/package.json +32 -31
- package/src/common/plugin-api-rpc.ts +15 -1
- package/src/hosted/browser/hosted-plugin.ts +7 -2
- package/src/hosted/browser/worker/worker-main.ts +4 -1
- package/src/hosted/browser/worker/worker-plugin-module.ts +2 -0
- package/src/hosted/node/plugin-host-module.ts +2 -0
- package/src/hosted/node/plugin-host-rpc.ts +10 -4
- package/src/main/browser/main-context.ts +4 -0
- package/src/main/browser/telemetry-main.spec.ts +77 -0
- package/src/main/browser/telemetry-main.ts +46 -0
- package/src/plugin/plugin-context.ts +3 -2
- package/src/plugin/plugin-manager.ts +6 -0
- package/src/plugin/telemetry-ext.spec.ts +158 -17
- package/src/plugin/telemetry-ext.ts +63 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-ext.js","sourceRoot":"","sources":["../../src/plugin/telemetry-ext.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;;;
|
|
1
|
+
{"version":3,"file":"telemetry-ext.js","sourceRoot":"","sources":["../../src/plugin/telemetry-ext.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,34 +18,139 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
const chai = require("chai");
|
|
19
19
|
const telemetry_ext_1 = require("./telemetry-ext");
|
|
20
20
|
const expect = chai.expect;
|
|
21
|
-
describe('
|
|
21
|
+
describe('TelemetryExtImpl', () => {
|
|
22
22
|
const sender = {
|
|
23
23
|
sendEventData: () => { },
|
|
24
24
|
sendErrorData: () => { }
|
|
25
25
|
};
|
|
26
|
-
|
|
26
|
+
const expectations = {
|
|
27
|
+
off: { isTelemetryEnabled: false, isUsageEnabled: false, isErrorsEnabled: false },
|
|
28
|
+
crash: { isTelemetryEnabled: false, isUsageEnabled: false, isErrorsEnabled: false },
|
|
29
|
+
error: { isTelemetryEnabled: false, isUsageEnabled: false, isErrorsEnabled: true },
|
|
30
|
+
all: { isTelemetryEnabled: true, isUsageEnabled: true, isErrorsEnabled: true }
|
|
31
|
+
};
|
|
32
|
+
for (const level of ['off', 'crash', 'error', 'all']) {
|
|
33
|
+
const expected = expectations[level];
|
|
34
|
+
it(`derives the enablement states from telemetry level '${level}'`, () => {
|
|
35
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
36
|
+
telemetry.$onDidChangeTelemetryLevel(level);
|
|
37
|
+
const logger = telemetry.createTelemetryLogger(sender);
|
|
38
|
+
expect(telemetry.level).to.equal(level);
|
|
39
|
+
expect(telemetry.isTelemetryEnabled).to.equal(expected.isTelemetryEnabled);
|
|
40
|
+
expect(logger.isUsageEnabled).to.equal(expected.isUsageEnabled);
|
|
41
|
+
expect(logger.isErrorsEnabled).to.equal(expected.isErrorsEnabled);
|
|
42
|
+
});
|
|
43
|
+
it(`applies telemetry level '${level}' to loggers created before the level arrived`, () => {
|
|
44
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
45
|
+
const logger = telemetry.createTelemetryLogger(sender);
|
|
46
|
+
telemetry.$onDidChangeTelemetryLevel(level);
|
|
47
|
+
expect(logger.isUsageEnabled).to.equal(expected.isUsageEnabled);
|
|
48
|
+
expect(logger.isErrorsEnabled).to.equal(expected.isErrorsEnabled);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
it('only fires onDidChangeTelemetryEnabled when the boolean it reports changes', () => {
|
|
52
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
53
|
+
const fired = [];
|
|
54
|
+
telemetry.onDidChangeTelemetryEnabled(enabled => fired.push(enabled));
|
|
55
|
+
telemetry.$onDidChangeTelemetryLevel('crash');
|
|
56
|
+
telemetry.$onDidChangeTelemetryLevel('error');
|
|
57
|
+
telemetry.$onDidChangeTelemetryLevel('all');
|
|
58
|
+
telemetry.$onDidChangeTelemetryLevel('off');
|
|
59
|
+
expect(fired).to.deep.equal([true, false]);
|
|
60
|
+
});
|
|
61
|
+
it('fires onDidChangeEnableStates once per transition that changes an enablement state', () => {
|
|
27
62
|
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
28
63
|
const logger = telemetry.createTelemetryLogger(sender);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
expect(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
64
|
+
let changes = 0;
|
|
65
|
+
logger.onDidChangeEnableStates(() => changes++);
|
|
66
|
+
telemetry.$onDidChangeTelemetryLevel('crash'); // off -> crash: both stay false
|
|
67
|
+
expect(changes).to.equal(0);
|
|
68
|
+
telemetry.$onDidChangeTelemetryLevel('error'); // errors become enabled
|
|
69
|
+
expect(changes).to.equal(1);
|
|
70
|
+
telemetry.$onDidChangeTelemetryLevel('all'); // usage becomes enabled
|
|
71
|
+
expect(changes).to.equal(2);
|
|
72
|
+
telemetry.$onDidChangeTelemetryLevel('off');
|
|
73
|
+
expect(changes).to.equal(3);
|
|
74
|
+
});
|
|
75
|
+
it('stops following the level once the logger is disposed', () => {
|
|
76
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
77
|
+
const logger = telemetry.createTelemetryLogger(sender);
|
|
78
|
+
let changes = 0;
|
|
79
|
+
logger.onDidChangeEnableStates(() => changes++);
|
|
80
|
+
logger.dispose();
|
|
81
|
+
telemetry.$onDidChangeTelemetryLevel('all');
|
|
38
82
|
expect(logger.isUsageEnabled).to.equal(false);
|
|
39
|
-
|
|
83
|
+
logger.isUsageEnabled = true;
|
|
84
|
+
expect(changes).to.equal(0);
|
|
40
85
|
});
|
|
41
|
-
it('
|
|
86
|
+
it('logs rather than propagates a sender that fails to flush on disposal', async () => {
|
|
87
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
88
|
+
const logged = [];
|
|
89
|
+
const consoleError = console.error;
|
|
90
|
+
console.error = (...args) => { logged.push(args); };
|
|
91
|
+
try {
|
|
92
|
+
telemetry.createTelemetryLogger({ ...sender, flush: () => { throw new Error('boom'); } }).dispose();
|
|
93
|
+
telemetry.createTelemetryLogger({ ...sender, flush: () => Promise.reject(new Error('boom')) }).dispose();
|
|
94
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
console.error = consoleError;
|
|
98
|
+
}
|
|
99
|
+
expect(logged).to.have.lengthOf(2);
|
|
100
|
+
});
|
|
101
|
+
it('ignores a repeated telemetry level', () => {
|
|
42
102
|
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
43
103
|
const logger = telemetry.createTelemetryLogger(sender);
|
|
44
104
|
let changes = 0;
|
|
45
105
|
logger.onDidChangeEnableStates(() => changes++);
|
|
46
|
-
telemetry
|
|
47
|
-
telemetry
|
|
48
|
-
expect(changes).to.equal(
|
|
106
|
+
telemetry.$onDidChangeTelemetryLevel('all');
|
|
107
|
+
telemetry.$onDidChangeTelemetryLevel('all');
|
|
108
|
+
expect(changes).to.equal(1);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
describe('TelemetryLogger', () => {
|
|
112
|
+
function createSender() {
|
|
113
|
+
const events = [];
|
|
114
|
+
const errors = [];
|
|
115
|
+
return {
|
|
116
|
+
events,
|
|
117
|
+
errors,
|
|
118
|
+
sendEventData: (eventName) => events.push(eventName),
|
|
119
|
+
sendErrorData: (error) => errors.push(error)
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
it('delivers errors but suppresses usage at telemetry level \'error\'', () => {
|
|
123
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
124
|
+
telemetry.$onDidChangeTelemetryLevel('error');
|
|
125
|
+
const sender = createSender();
|
|
126
|
+
const logger = telemetry.createTelemetryLogger(sender);
|
|
127
|
+
logger.logUsage('usage-event');
|
|
128
|
+
logger.logError('error-event');
|
|
129
|
+
logger.logError(new Error('boom'));
|
|
130
|
+
expect(sender.events).to.deep.equal(['error-event']);
|
|
131
|
+
expect(sender.errors).to.have.lengthOf(1);
|
|
132
|
+
});
|
|
133
|
+
it('suppresses usage that a plugin re-enables while the telemetry level forbids it', () => {
|
|
134
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
135
|
+
telemetry.$onDidChangeTelemetryLevel('off');
|
|
136
|
+
const sender = createSender();
|
|
137
|
+
const logger = telemetry.createTelemetryLogger(sender);
|
|
138
|
+
logger.isUsageEnabled = true;
|
|
139
|
+
logger.isErrorsEnabled = true;
|
|
140
|
+
logger.logUsage('usage-event');
|
|
141
|
+
logger.logError('error-event');
|
|
142
|
+
expect(sender.events).to.be.empty;
|
|
143
|
+
});
|
|
144
|
+
it('refuses to let a plugin assign the telemetry level of its logger', () => {
|
|
145
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
146
|
+
telemetry.$onDidChangeTelemetryLevel('off');
|
|
147
|
+
const sender = createSender();
|
|
148
|
+
const logger = telemetry.createTelemetryLogger(sender);
|
|
149
|
+
expect(Reflect.set(logger, 'level', 'all')).to.be.false;
|
|
150
|
+
logger.logUsage('usage-event');
|
|
151
|
+
expect(logger.level).to.equal('off');
|
|
152
|
+
expect(logger.isUsageEnabled).to.be.false;
|
|
153
|
+
expect(sender.events).to.be.empty;
|
|
49
154
|
});
|
|
50
155
|
});
|
|
51
156
|
//# sourceMappingURL=telemetry-ext.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-ext.spec.js","sourceRoot":"","sources":["../../src/plugin/telemetry-ext.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,wCAAwC;AACxC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,6BAA6B;
|
|
1
|
+
{"version":3,"file":"telemetry-ext.spec.js","sourceRoot":"","sources":["../../src/plugin/telemetry-ext.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,wCAAwC;AACxC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,6BAA6B;AAE7B,mDAAmD;AAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,MAAM,MAAM,GAAG;QACX,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC;QACxB,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC;KAC3B,CAAC;IAQF,MAAM,YAAY,GAAwC;QACtD,GAAG,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;QACjF,KAAK,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;QACnF,KAAK,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;QAClF,GAAG,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE;KACjF,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAU,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAErC,EAAE,CAAC,uDAAuD,KAAK,GAAG,EAAE,GAAG,EAAE;YACrE,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;YACzC,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEvD,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YAC3E,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,KAAK,+CAA+C,EAAE,GAAG,EAAE;YACtF,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACvD,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAE5C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,EAAE,CAAC,4EAA4E,EAAE,GAAG,EAAE;QAClF,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,SAAS,CAAC,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAEtE,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC9C,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC9C,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC5C,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAE5C,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC1F,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhD,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC;QAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;QACvE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB;QACrE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE9C,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QACnC,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC;YACD,SAAS,CAAC,qBAAqB,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACpG,SAAS,CAAC,qBAAqB,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACzG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;gBAAS,CAAC;YACP,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC;QACjC,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC1C,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhD,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC5C,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAE5C,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAS7B,SAAS,YAAY;QACjB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,OAAO;YACH,MAAM;YACN,MAAM;YACN,aAAa,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5D,aAAa,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACtD,CAAC;IACN,CAAC;IAED,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QACzE,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEvD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACtF,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEvD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAE/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QACxE,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,SAAS,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEvD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACxD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAE/B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,40 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/plugin-ext",
|
|
3
|
-
"version": "1.76.0-next.
|
|
3
|
+
"version": "1.76.0-next.42+b0f9e63a6",
|
|
4
4
|
"description": "Theia - Plugin Extension",
|
|
5
5
|
"main": "lib/common/index.js",
|
|
6
6
|
"typings": "lib/common/index.d.ts",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@theia/ai-core": "1.76.0-next.
|
|
9
|
-
"@theia/ai-mcp": "1.76.0-next.
|
|
10
|
-
"@theia/bulk-edit": "1.76.0-next.
|
|
11
|
-
"@theia/callhierarchy": "1.76.0-next.
|
|
12
|
-
"@theia/console": "1.76.0-next.
|
|
13
|
-
"@theia/core": "1.76.0-next.
|
|
14
|
-
"@theia/debug": "1.76.0-next.
|
|
15
|
-
"@theia/editor": "1.76.0-next.
|
|
16
|
-
"@theia/editor-preview": "1.76.0-next.
|
|
17
|
-
"@theia/file-search": "1.76.0-next.
|
|
18
|
-
"@theia/filesystem": "1.76.0-next.
|
|
19
|
-
"@theia/markers": "1.76.0-next.
|
|
20
|
-
"@theia/messages": "1.76.0-next.
|
|
21
|
-
"@theia/monaco": "1.76.0-next.
|
|
8
|
+
"@theia/ai-core": "1.76.0-next.42+b0f9e63a6",
|
|
9
|
+
"@theia/ai-mcp": "1.76.0-next.42+b0f9e63a6",
|
|
10
|
+
"@theia/bulk-edit": "1.76.0-next.42+b0f9e63a6",
|
|
11
|
+
"@theia/callhierarchy": "1.76.0-next.42+b0f9e63a6",
|
|
12
|
+
"@theia/console": "1.76.0-next.42+b0f9e63a6",
|
|
13
|
+
"@theia/core": "1.76.0-next.42+b0f9e63a6",
|
|
14
|
+
"@theia/debug": "1.76.0-next.42+b0f9e63a6",
|
|
15
|
+
"@theia/editor": "1.76.0-next.42+b0f9e63a6",
|
|
16
|
+
"@theia/editor-preview": "1.76.0-next.42+b0f9e63a6",
|
|
17
|
+
"@theia/file-search": "1.76.0-next.42+b0f9e63a6",
|
|
18
|
+
"@theia/filesystem": "1.76.0-next.42+b0f9e63a6",
|
|
19
|
+
"@theia/markers": "1.76.0-next.42+b0f9e63a6",
|
|
20
|
+
"@theia/messages": "1.76.0-next.42+b0f9e63a6",
|
|
21
|
+
"@theia/monaco": "1.76.0-next.42+b0f9e63a6",
|
|
22
22
|
"@theia/monaco-editor-core": "1.108.201",
|
|
23
|
-
"@theia/navigator": "1.76.0-next.
|
|
24
|
-
"@theia/notebook": "1.76.0-next.
|
|
25
|
-
"@theia/output": "1.76.0-next.
|
|
26
|
-
"@theia/plugin": "1.76.0-next.
|
|
27
|
-
"@theia/plugin-utils": "1.76.0-next.
|
|
28
|
-
"@theia/preferences": "1.76.0-next.
|
|
29
|
-
"@theia/scm": "1.76.0-next.
|
|
30
|
-
"@theia/search-in-workspace": "1.76.0-next.
|
|
31
|
-
"@theia/task": "1.76.0-next.
|
|
32
|
-
"@theia/
|
|
33
|
-
"@theia/
|
|
34
|
-
"@theia/
|
|
35
|
-
"@theia/
|
|
36
|
-
"@theia/
|
|
37
|
-
"@theia/
|
|
23
|
+
"@theia/navigator": "1.76.0-next.42+b0f9e63a6",
|
|
24
|
+
"@theia/notebook": "1.76.0-next.42+b0f9e63a6",
|
|
25
|
+
"@theia/output": "1.76.0-next.42+b0f9e63a6",
|
|
26
|
+
"@theia/plugin": "1.76.0-next.42+b0f9e63a6",
|
|
27
|
+
"@theia/plugin-utils": "1.76.0-next.42+b0f9e63a6",
|
|
28
|
+
"@theia/preferences": "1.76.0-next.42+b0f9e63a6",
|
|
29
|
+
"@theia/scm": "1.76.0-next.42+b0f9e63a6",
|
|
30
|
+
"@theia/search-in-workspace": "1.76.0-next.42+b0f9e63a6",
|
|
31
|
+
"@theia/task": "1.76.0-next.42+b0f9e63a6",
|
|
32
|
+
"@theia/telemetry": "1.76.0-next.42+b0f9e63a6",
|
|
33
|
+
"@theia/terminal": "1.76.0-next.42+b0f9e63a6",
|
|
34
|
+
"@theia/test": "1.76.0-next.42+b0f9e63a6",
|
|
35
|
+
"@theia/timeline": "1.76.0-next.42+b0f9e63a6",
|
|
36
|
+
"@theia/typehierarchy": "1.76.0-next.42+b0f9e63a6",
|
|
37
|
+
"@theia/variable-resolver": "1.76.0-next.42+b0f9e63a6",
|
|
38
|
+
"@theia/workspace": "1.76.0-next.42+b0f9e63a6",
|
|
38
39
|
"@types/mime": "^2.0.3",
|
|
39
40
|
"@vscode/debugprotocol": "^1.68.0",
|
|
40
41
|
"@vscode/proxy-agent": "^0.13.2",
|
|
@@ -99,5 +100,5 @@
|
|
|
99
100
|
"nyc": {
|
|
100
101
|
"extends": "../../configs/nyc.json"
|
|
101
102
|
},
|
|
102
|
-
"gitHead": "
|
|
103
|
+
"gitHead": "b0f9e63a6d331135265869a341dce7c7f1eef158"
|
|
103
104
|
}
|
|
@@ -125,6 +125,7 @@ import * as notebookCommon from '@theia/notebook/lib/common';
|
|
|
125
125
|
import { CellExecutionUpdateType, CellRange, NotebookCellExecutionState } from '@theia/notebook/lib/common';
|
|
126
126
|
import { LanguagePackBundle } from './language-pack-service';
|
|
127
127
|
import { AccessibilityInformation } from '@theia/core/lib/common/accessibility';
|
|
128
|
+
import { TelemetryLevel } from '@theia/telemetry/lib/common/telemetry-types';
|
|
128
129
|
|
|
129
130
|
import { TreeDelta } from '@theia/test/lib/common/tree-delta';
|
|
130
131
|
import { TestItemDTO, TestOutputDTO, TestRunDTO, TestRunProfileDTO, TestRunRequestDTO, TestStateChangeDTO } from './test-types';
|
|
@@ -258,6 +259,12 @@ export interface PluginManagerInitializeParams {
|
|
|
258
259
|
webview: WebviewInitData
|
|
259
260
|
jsonValidation: PluginJsonValidationContribution[]
|
|
260
261
|
supportedActivationEvents?: string[]
|
|
262
|
+
/**
|
|
263
|
+
* The telemetry level the plugin host starts with. Defaults to `off` when absent.
|
|
264
|
+
*
|
|
265
|
+
* @experimental
|
|
266
|
+
*/
|
|
267
|
+
telemetryLevel?: TelemetryLevel
|
|
261
268
|
}
|
|
262
269
|
|
|
263
270
|
export interface PluginManagerStartParams {
|
|
@@ -2362,6 +2369,13 @@ export interface TelemetryMain {
|
|
|
2362
2369
|
}
|
|
2363
2370
|
|
|
2364
2371
|
export interface TelemetryExt {
|
|
2372
|
+
/**
|
|
2373
|
+
* Applies the telemetry level the user consented to. Only changes are sent this way;
|
|
2374
|
+
* the initial level arrives with `PluginManagerInitializeParams`.
|
|
2375
|
+
*
|
|
2376
|
+
* @experimental
|
|
2377
|
+
*/
|
|
2378
|
+
$onDidChangeTelemetryLevel(level: TelemetryLevel): void;
|
|
2365
2379
|
}
|
|
2366
2380
|
|
|
2367
2381
|
// endregion
|
|
@@ -2524,7 +2538,7 @@ export const MAIN_RPC_CONTEXT = {
|
|
|
2524
2538
|
THEMING_EXT: createProxyIdentifier<ThemingExt>('ThemingExt'),
|
|
2525
2539
|
COMMENTS_EXT: createProxyIdentifier<CommentsExt>('CommentsExt'),
|
|
2526
2540
|
TABS_EXT: createProxyIdentifier<TabsExt>('TabsExt'),
|
|
2527
|
-
TELEMETRY_EXT: createProxyIdentifier<TelemetryExt>('TelemetryExt
|
|
2541
|
+
TELEMETRY_EXT: createProxyIdentifier<TelemetryExt>('TelemetryExt'),
|
|
2528
2542
|
TESTING_EXT: createProxyIdentifier<TestingExt>('TestingExt'),
|
|
2529
2543
|
URI_EXT: createProxyIdentifier<UriExt>('UriExt'),
|
|
2530
2544
|
MCP_SERVER_DEFINITION_REGISTRY_EXT: createProxyIdentifier<McpServerDefinitionRegistryExt>('McpServerDefinitionRegistryExt'),
|
|
@@ -73,6 +73,7 @@ import {
|
|
|
73
73
|
} from '../common/hosted-plugin';
|
|
74
74
|
import { isRemote } from '@theia/core/lib/browser/browser';
|
|
75
75
|
import { WorkspaceTrustService } from '@theia/workspace/lib/browser/workspace-trust-service';
|
|
76
|
+
import { TelemetryConsentProvider } from '@theia/telemetry/lib/common/telemetry-consent-provider';
|
|
76
77
|
|
|
77
78
|
export type DebugActivationEvent = 'onDebugResolve' | 'onDebugInitialConfigurations' | 'onDebugAdapterProtocolTracker' | 'onDebugDynamicConfigurations';
|
|
78
79
|
|
|
@@ -183,6 +184,9 @@ export class HostedPluginSupport extends AbstractHostedPluginSupport<PluginManag
|
|
|
183
184
|
@inject(WorkspaceTrustService)
|
|
184
185
|
protected readonly workspaceTrustService: WorkspaceTrustService;
|
|
185
186
|
|
|
187
|
+
@inject(TelemetryConsentProvider)
|
|
188
|
+
protected readonly telemetryConsentProvider: TelemetryConsentProvider;
|
|
189
|
+
|
|
186
190
|
@inject(ILogger) @named('plugin-ext:HostedPluginSupport')
|
|
187
191
|
protected override readonly logger: ILogger;
|
|
188
192
|
|
|
@@ -245,7 +249,7 @@ export class HostedPluginSupport extends AbstractHostedPluginSupport<PluginManag
|
|
|
245
249
|
}
|
|
246
250
|
|
|
247
251
|
protected createTheiaReadyPromise(): Promise<unknown> {
|
|
248
|
-
return Promise.all([this.preferenceServiceImpl.ready, this.workspaceService.roots]);
|
|
252
|
+
return Promise.all([this.preferenceServiceImpl.ready, this.workspaceService.roots, this.telemetryConsentProvider.ready]);
|
|
249
253
|
}
|
|
250
254
|
|
|
251
255
|
protected override runOperation(operation: () => Promise<void>): Promise<void> {
|
|
@@ -364,7 +368,8 @@ export class HostedPluginSupport extends AbstractHostedPluginSupport<PluginManag
|
|
|
364
368
|
},
|
|
365
369
|
jsonValidation,
|
|
366
370
|
pluginKind: isRemote ? ExtensionKind.Workspace : ExtensionKind.UI,
|
|
367
|
-
supportedActivationEvents
|
|
371
|
+
supportedActivationEvents,
|
|
372
|
+
telemetryLevel: this.telemetryConsentProvider.level
|
|
368
373
|
});
|
|
369
374
|
if (toDisconnect.disposed) {
|
|
370
375
|
return undefined;
|
|
@@ -34,6 +34,7 @@ import { loadManifest } from './plugin-manifest-loader';
|
|
|
34
34
|
import { EnvExtImpl } from '../../../plugin/env';
|
|
35
35
|
import { DebugExtImpl } from '../../../plugin/debug/debug-ext';
|
|
36
36
|
import { LocalizationExtImpl } from '../../../plugin/localization-ext';
|
|
37
|
+
import { TelemetryExtImpl } from '../../../plugin/telemetry-ext';
|
|
37
38
|
import pluginHostModule from './worker-plugin-module';
|
|
38
39
|
import { PLUGINS_BASE_PATH } from '@theia/plugin-utils/lib/common/constants';
|
|
39
40
|
|
|
@@ -162,6 +163,7 @@ const messageRegistryExt = container.get(MessageRegistryExt);
|
|
|
162
163
|
const clipboardExt = container.get(ClipboardExt);
|
|
163
164
|
const webviewExt = container.get(WebviewsExtImpl);
|
|
164
165
|
const localizationExt = container.get(LocalizationExtImpl);
|
|
166
|
+
const telemetryExt = container.get(TelemetryExtImpl);
|
|
165
167
|
const storageProxy = container.get(KeyValueStorageProxy);
|
|
166
168
|
|
|
167
169
|
const apiFactory = createAPIFactory(
|
|
@@ -175,7 +177,8 @@ const apiFactory = createAPIFactory(
|
|
|
175
177
|
messageRegistryExt,
|
|
176
178
|
clipboardExt,
|
|
177
179
|
webviewExt,
|
|
178
|
-
localizationExt
|
|
180
|
+
localizationExt,
|
|
181
|
+
telemetryExt
|
|
179
182
|
);
|
|
180
183
|
let defaultApi: typeof theia;
|
|
181
184
|
|
|
@@ -36,6 +36,7 @@ import { WorkerEnvExtImpl } from './worker-env-ext';
|
|
|
36
36
|
import { DebugExtImpl } from '../../../plugin/debug/debug-ext';
|
|
37
37
|
import { LocalizationExtImpl } from '../../../plugin/localization-ext';
|
|
38
38
|
import { EncodingService } from '@theia/core/lib/common/encoding-service';
|
|
39
|
+
import { TelemetryExtImpl } from '../../../plugin/telemetry-ext';
|
|
39
40
|
|
|
40
41
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
42
|
const ctx = self as any;
|
|
@@ -79,4 +80,5 @@ export default new ContainerModule(bind => {
|
|
|
79
80
|
bind(WebviewsExtImpl).toSelf().inSingletonScope();
|
|
80
81
|
bind(TerminalServiceExtImpl).toSelf().inSingletonScope();
|
|
81
82
|
bind(MinimalTerminalServiceExt).toService(TerminalServiceExtImpl);
|
|
83
|
+
bind(TelemetryExtImpl).toSelf().inSingletonScope();
|
|
82
84
|
});
|
|
@@ -39,6 +39,7 @@ import { setupPluginHostLogger } from './plugin-host-logger';
|
|
|
39
39
|
import { LmExtImpl } from '../../plugin/lm-ext';
|
|
40
40
|
import { LanguageModelToolsExtImpl } from '../../plugin/lm-tool-ext';
|
|
41
41
|
import { EncodingService } from '@theia/core/lib/common/encoding-service';
|
|
42
|
+
import { TelemetryExtImpl } from '../../plugin/telemetry-ext';
|
|
42
43
|
|
|
43
44
|
export default new ContainerModule(bind => {
|
|
44
45
|
const channel = new IPCChannel();
|
|
@@ -76,4 +77,5 @@ export default new ContainerModule(bind => {
|
|
|
76
77
|
bind(WebviewsExtImpl).toSelf().inSingletonScope();
|
|
77
78
|
bind(MinimalTerminalServiceExt).toService(TerminalServiceExtImpl);
|
|
78
79
|
bind(TerminalServiceExtImpl).toSelf().inSingletonScope();
|
|
80
|
+
bind(TelemetryExtImpl).toSelf().inSingletonScope();
|
|
79
81
|
});
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
import { PluginMetadata, PluginModel, PluginPackage } from '../../common/plugin-protocol';
|
|
32
32
|
import { createAPIFactory } from '../../plugin/plugin-context';
|
|
33
33
|
import { EnvExtImpl } from '../../plugin/env';
|
|
34
|
+
import { TelemetryExtImpl } from '../../plugin/telemetry-ext';
|
|
34
35
|
import { PreferenceRegistryExtImpl } from '../../plugin/preference-registry';
|
|
35
36
|
import { ExtPluginApi, ExtPluginApiBackendInitializationFn } from '../../common/plugin-ext-api-contribution';
|
|
36
37
|
import { DebugExtImpl } from '../../plugin/debug/debug-ext';
|
|
@@ -64,7 +65,8 @@ export interface ExtInterfaces {
|
|
|
64
65
|
webviewExt: WebviewsExtImpl,
|
|
65
66
|
terminalServiceExt: TerminalServiceExtImpl,
|
|
66
67
|
secretsExt: SecretsExtImpl,
|
|
67
|
-
localizationExt: LocalizationExtImpl
|
|
68
|
+
localizationExt: LocalizationExtImpl,
|
|
69
|
+
telemetryExt: TelemetryExtImpl
|
|
68
70
|
}
|
|
69
71
|
|
|
70
72
|
/**
|
|
@@ -352,6 +354,9 @@ export class PluginHostRPC extends AbstractPluginHostRPC<PluginManagerExtImpl, P
|
|
|
352
354
|
@inject(SecretsExtImpl)
|
|
353
355
|
protected readonly secretsExt: SecretsExtImpl;
|
|
354
356
|
|
|
357
|
+
@inject(TelemetryExtImpl)
|
|
358
|
+
protected readonly telemetryExt: TelemetryExtImpl;
|
|
359
|
+
|
|
355
360
|
constructor() {
|
|
356
361
|
super('PLUGIN_HOST', '/scanners/backend-init-theia.js',
|
|
357
362
|
{
|
|
@@ -380,18 +385,19 @@ export class PluginHostRPC extends AbstractPluginHostRPC<PluginManagerExtImpl, P
|
|
|
380
385
|
webviewExt: this.webviewExt,
|
|
381
386
|
terminalServiceExt: this.terminalServiceExt,
|
|
382
387
|
secretsExt: this.secretsExt,
|
|
383
|
-
localizationExt: this.localizationExt
|
|
388
|
+
localizationExt: this.localizationExt,
|
|
389
|
+
telemetryExt: this.telemetryExt
|
|
384
390
|
};
|
|
385
391
|
}
|
|
386
392
|
|
|
387
393
|
protected createAPIFactory(extInterfaces: ExtInterfaces): PluginAPIFactory {
|
|
388
394
|
const {
|
|
389
395
|
envExt, debugExt, preferenceRegistryExt, editorsAndDocumentsExt, workspaceExt,
|
|
390
|
-
messageRegistryExt, clipboardExt, webviewExt, localizationExt
|
|
396
|
+
messageRegistryExt, clipboardExt, webviewExt, localizationExt, telemetryExt
|
|
391
397
|
} = extInterfaces;
|
|
392
398
|
return createAPIFactory(this.rpc, this.pluginManager, envExt, debugExt, preferenceRegistryExt,
|
|
393
399
|
editorsAndDocumentsExt, workspaceExt, messageRegistryExt, clipboardExt, webviewExt,
|
|
394
|
-
localizationExt);
|
|
400
|
+
localizationExt, telemetryExt);
|
|
395
401
|
}
|
|
396
402
|
|
|
397
403
|
protected initExtApi(extApi: ExtPluginApi): void {
|
|
@@ -68,6 +68,7 @@ import { UriMainImpl } from './uri-main';
|
|
|
68
68
|
import { LoggerMainImpl } from './logger-main';
|
|
69
69
|
import { McpServerDefinitionRegistryMainImpl } from './lm-main';
|
|
70
70
|
import { LanguageModelToolsMainImpl } from './lm-tool-main';
|
|
71
|
+
import { TelemetryMainImpl } from './telemetry-main';
|
|
71
72
|
|
|
72
73
|
export function setUpPluginApi(rpc: RPCProtocol, container: interfaces.Container): void {
|
|
73
74
|
const loggerMain = new LoggerMainImpl(container);
|
|
@@ -215,4 +216,7 @@ export function setUpPluginApi(rpc: RPCProtocol, container: interfaces.Container
|
|
|
215
216
|
|
|
216
217
|
const languageModelToolsMain = new LanguageModelToolsMainImpl(rpc, container);
|
|
217
218
|
rpc.set(PLUGIN_RPC_CONTEXT.LM_TOOLS_MAIN, languageModelToolsMain);
|
|
219
|
+
|
|
220
|
+
const telemetryMain = new TelemetryMainImpl(rpc, container);
|
|
221
|
+
rpc.set(PLUGIN_RPC_CONTEXT.TELEMETRY_MAIN, telemetryMain);
|
|
218
222
|
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 JuliaHub, Inc. and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { expect } from 'chai';
|
|
18
|
+
import { Emitter } from '@theia/core/lib/common/event';
|
|
19
|
+
import { Container } from '@theia/core/shared/inversify';
|
|
20
|
+
import { TelemetryConsentProvider } from '@theia/telemetry/lib/common/telemetry-consent-provider';
|
|
21
|
+
import { TelemetryLevel } from '@theia/telemetry/lib/common/telemetry-types';
|
|
22
|
+
import { RPCProtocol } from '../../common/rpc-protocol';
|
|
23
|
+
import { TelemetryMainImpl } from './telemetry-main';
|
|
24
|
+
|
|
25
|
+
describe('TelemetryMainImpl', () => {
|
|
26
|
+
|
|
27
|
+
let level: TelemetryLevel;
|
|
28
|
+
let pushed: TelemetryLevel[];
|
|
29
|
+
let levelChanged: Emitter<TelemetryLevel>;
|
|
30
|
+
let container: Container;
|
|
31
|
+
let rpc: RPCProtocol;
|
|
32
|
+
|
|
33
|
+
beforeEach(() => {
|
|
34
|
+
level = 'off';
|
|
35
|
+
pushed = [];
|
|
36
|
+
levelChanged = new Emitter<TelemetryLevel>();
|
|
37
|
+
container = new Container();
|
|
38
|
+
container.bind(TelemetryConsentProvider).toConstantValue(<TelemetryConsentProvider>{
|
|
39
|
+
get level(): TelemetryLevel { return level; },
|
|
40
|
+
onDidChangeTelemetryLevel: levelChanged.event,
|
|
41
|
+
ready: Promise.resolve()
|
|
42
|
+
});
|
|
43
|
+
rpc = {
|
|
44
|
+
getProxy<T>(_proxyId: unknown): T {
|
|
45
|
+
return {
|
|
46
|
+
$onDidChangeTelemetryLevel: (next: TelemetryLevel) => { pushed.push(next); }
|
|
47
|
+
} as unknown as T;
|
|
48
|
+
},
|
|
49
|
+
set: <T, R extends T>(_identifier: unknown, instance: R) => instance,
|
|
50
|
+
dispose: () => { }
|
|
51
|
+
} as RPCProtocol;
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('does not push a level on construction, the initial level is seeded through $init', () => {
|
|
55
|
+
new TelemetryMainImpl(rpc, container);
|
|
56
|
+
|
|
57
|
+
expect(pushed).to.be.empty;
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('pushes every level change to the plugin host', () => {
|
|
61
|
+
new TelemetryMainImpl(rpc, container);
|
|
62
|
+
|
|
63
|
+
levelChanged.fire('all');
|
|
64
|
+
levelChanged.fire('error');
|
|
65
|
+
|
|
66
|
+
expect(pushed).to.deep.equal(['all', 'error']);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('stops pushing once disposed', () => {
|
|
70
|
+
const telemetryMain = new TelemetryMainImpl(rpc, container);
|
|
71
|
+
|
|
72
|
+
telemetryMain.dispose();
|
|
73
|
+
levelChanged.fire('all');
|
|
74
|
+
|
|
75
|
+
expect(pushed).to.be.empty;
|
|
76
|
+
});
|
|
77
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 JuliaHub, Inc. and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { Disposable, DisposableCollection } from '@theia/core/lib/common/disposable';
|
|
18
|
+
import { interfaces } from '@theia/core/shared/inversify';
|
|
19
|
+
import { TelemetryConsentProvider } from '@theia/telemetry/lib/common/telemetry-consent-provider';
|
|
20
|
+
import { MAIN_RPC_CONTEXT, TelemetryExt, TelemetryMain } from '../../common/plugin-api-rpc';
|
|
21
|
+
import { RPCProtocol } from '../../common/rpc-protocol';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Forwards the user's telemetry consent to the plugin host. The initial level is seeded through
|
|
25
|
+
* `PluginManagerInitializeParams` so that it is in place before any plugin activates.
|
|
26
|
+
*
|
|
27
|
+
* `TelemetryMain` declares no `$` methods; the instance is registered with the RPC protocol so that the consent
|
|
28
|
+
* subscription is disposed along with the channel.
|
|
29
|
+
*
|
|
30
|
+
* @experimental
|
|
31
|
+
*/
|
|
32
|
+
export class TelemetryMainImpl implements TelemetryMain, Disposable {
|
|
33
|
+
|
|
34
|
+
protected readonly proxy: TelemetryExt;
|
|
35
|
+
protected readonly toDispose = new DisposableCollection();
|
|
36
|
+
|
|
37
|
+
constructor(rpc: RPCProtocol, container: interfaces.Container) {
|
|
38
|
+
this.proxy = rpc.getProxy(MAIN_RPC_CONTEXT.TELEMETRY_EXT);
|
|
39
|
+
const consentProvider = container.get<TelemetryConsentProvider>(TelemetryConsentProvider);
|
|
40
|
+
this.toDispose.push(consentProvider.onDidChangeTelemetryLevel(level => this.proxy.$onDidChangeTelemetryLevel(level)));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
dispose(): void {
|
|
44
|
+
this.toDispose.dispose();
|
|
45
|
+
}
|
|
46
|
+
}
|