@theia/plugin-ext 1.74.0-next.5 → 1.74.0-next.51
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/hosted/browser/hosted-plugin.d.ts.map +1 -1
- package/lib/hosted/browser/hosted-plugin.js +14 -3
- package/lib/hosted/browser/hosted-plugin.js.map +1 -1
- package/lib/hosted/node/plugin-reader.d.ts +6 -5
- package/lib/hosted/node/plugin-reader.d.ts.map +1 -1
- package/lib/hosted/node/plugin-reader.js +14 -7
- package/lib/hosted/node/plugin-reader.js.map +1 -1
- package/lib/hosted/node/plugin-reader.spec.d.ts +2 -0
- package/lib/hosted/node/plugin-reader.spec.d.ts.map +1 -0
- package/lib/hosted/node/plugin-reader.spec.js +72 -0
- package/lib/hosted/node/plugin-reader.spec.js.map +1 -0
- package/lib/main/browser/custom-editors/custom-editor-opener.d.ts.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.js +25 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.spec.d.ts +2 -0
- package/lib/main/browser/custom-editors/custom-editor-opener.spec.d.ts.map +1 -0
- package/lib/main/browser/custom-editors/custom-editor-opener.spec.js +90 -0
- package/lib/main/browser/custom-editors/custom-editor-opener.spec.js.map +1 -0
- package/lib/main/browser/custom-editors/custom-editor-widget.d.ts +4 -1
- package/lib/main/browser/custom-editors/custom-editor-widget.d.ts.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-widget.js +14 -0
- package/lib/main/browser/custom-editors/custom-editor-widget.js.map +1 -1
- package/lib/main/browser/preference-registry-main.d.ts.map +1 -1
- package/lib/main/browser/preference-registry-main.js +8 -0
- package/lib/main/browser/preference-registry-main.js.map +1 -1
- package/lib/main/node/plugin-http-resolver.d.ts.map +1 -1
- package/lib/main/node/plugin-http-resolver.js +5 -3
- package/lib/main/node/plugin-http-resolver.js.map +1 -1
- package/lib/main/node/plugin-http-resolver.spec.d.ts +2 -0
- package/lib/main/node/plugin-http-resolver.spec.d.ts.map +1 -0
- package/lib/main/node/plugin-http-resolver.spec.js +40 -0
- package/lib/main/node/plugin-http-resolver.spec.js.map +1 -0
- package/lib/main/node/plugin-service.d.ts.map +1 -1
- package/lib/main/node/plugin-service.js +8 -3
- package/lib/main/node/plugin-service.js.map +1 -1
- package/lib/plugin/telemetry-ext.d.ts +4 -1
- package/lib/plugin/telemetry-ext.d.ts.map +1 -1
- package/lib/plugin/telemetry-ext.js +19 -3
- package/lib/plugin/telemetry-ext.js.map +1 -1
- package/lib/plugin/telemetry-ext.spec.d.ts +2 -0
- package/lib/plugin/telemetry-ext.spec.d.ts.map +1 -0
- package/lib/plugin/telemetry-ext.spec.js +51 -0
- package/lib/plugin/telemetry-ext.spec.js.map +1 -0
- package/package.json +31 -31
- package/src/hosted/browser/hosted-plugin.ts +14 -3
- package/src/hosted/node/plugin-reader.spec.ts +80 -0
- package/src/hosted/node/plugin-reader.ts +16 -7
- package/src/main/browser/custom-editors/custom-editor-opener.spec.ts +104 -0
- package/src/main/browser/custom-editors/custom-editor-opener.tsx +26 -1
- package/src/main/browser/custom-editors/custom-editor-widget.ts +15 -1
- package/src/main/browser/preference-registry-main.ts +8 -0
- package/src/main/node/plugin-http-resolver.spec.ts +41 -0
- package/src/main/node/plugin-http-resolver.ts +4 -3
- package/src/main/node/plugin-service.ts +7 -3
- package/src/plugin/telemetry-ext.spec.ts +61 -0
- package/src/plugin/telemetry-ext.ts +23 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-editor-widget.js","sourceRoot":"","sources":["../../../../src/main/browser/custom-editors/custom-editor-widget.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oEAAoE;AACpE,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,4DAAiF;AACjF,oDAA6C;AAE7C,
|
|
1
|
+
{"version":3,"file":"custom-editor-widget.js","sourceRoot":"","sources":["../../../../src/main/browser/custom-editors/custom-editor-widget.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preference-registry-main.d.ts","sourceRoot":"","sources":["../../../src/main/browser/preference-registry-main.ts"],"names":[],"mappings":"AAgBA,OAAO,EAGH,eAAe,EACf,0BAA0B,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAGH,sBAAsB,EACtB,cAAc,EAEjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAErF,wBAAgB,cAAc,CAAC,0BAA0B,EAAE,0BAA0B,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"preference-registry-main.d.ts","sourceRoot":"","sources":["../../../src/main/browser/preference-registry-main.ts"],"names":[],"mappings":"AAgBA,OAAO,EAGH,eAAe,EACf,0BAA0B,EAC7B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAGH,sBAAsB,EACtB,cAAc,EAEjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAErF,wBAAgB,cAAc,CAAC,0BAA0B,EAAE,0BAA0B,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,cAAc,CA0B9H;AAED,qBAAa,0BAA2B,YAAW,sBAAsB,EAAE,UAAU;IACjF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;gBAE9C,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS;IAqB7D,OAAO,IAAI,IAAI;IAKT,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxK,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlK,OAAO,CAAC,wBAAwB;IAiBhC,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,oBAAoB,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;CAQ5H"}
|
|
@@ -24,8 +24,16 @@ const browser_1 = require("@theia/workspace/lib/browser");
|
|
|
24
24
|
const disposable_1 = require("@theia/core/lib/common/disposable");
|
|
25
25
|
function getPreferences(preferenceProviderProvider, rootFolders) {
|
|
26
26
|
const folders = rootFolders.map(root => root.resource.toString());
|
|
27
|
+
// Session-scoped values are process-lifetime CLI overrides (see PreferenceScope.Session).
|
|
28
|
+
// The plugin-side `parse()` in `preference-registry.ts` only reads up to Folder, so
|
|
29
|
+
// shipping session data across would leak potentially security-sensitive overrides
|
|
30
|
+
// (e.g. AI tool auto-approval) into the plugin host without any consumer on the other
|
|
31
|
+
// side. Exclude the scope explicitly until plugins can opt in to session values.
|
|
27
32
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
33
|
return preferences_1.PreferenceScope.getScopes().reduce((result, scope) => {
|
|
34
|
+
if (scope === preferences_1.PreferenceScope.Session) {
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
29
37
|
result[scope] = {};
|
|
30
38
|
const provider = preferenceProviderProvider(scope);
|
|
31
39
|
if (provider) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preference-registry-main.js","sourceRoot":"","sources":["../../../src/main/browser/preference-registry-main.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,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;;;AAsBhF,
|
|
1
|
+
{"version":3,"file":"preference-registry-main.js","sourceRoot":"","sources":["../../../src/main/browser/preference-registry-main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-http-resolver.d.ts","sourceRoot":"","sources":["../../../src/main/node/plugin-http-resolver.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAkB,cAAc,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-http-resolver.d.ts","sourceRoot":"","sources":["../../../src/main/node/plugin-http-resolver.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAkB,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAKnF,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAGrF;;;;GAIG;AACH,qBACa,0BAA2B,YAAW,sBAAsB;IAErE,OAAO,CAAC,cAAc,CAAmB;IAGzC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;;IAc3C;;OAEG;IACG,OAAO,CAAC,qBAAqB,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAkClF;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGpC"}
|
|
@@ -22,7 +22,6 @@ const inversify_1 = require("@theia/core/shared/inversify");
|
|
|
22
22
|
const promise_util_1 = require("@theia/core/lib/common/promise-util");
|
|
23
23
|
const fs_1 = require("fs");
|
|
24
24
|
const path = require("path");
|
|
25
|
-
const url = require("url");
|
|
26
25
|
const temp_dir_util_1 = require("./temp-dir-util");
|
|
27
26
|
/**
|
|
28
27
|
* Resolver that handle the http(s): protocol
|
|
@@ -49,8 +48,11 @@ let HttpPluginDeployerResolver = class HttpPluginDeployerResolver {
|
|
|
49
48
|
// download the file
|
|
50
49
|
// keep filename of the url
|
|
51
50
|
const urlPath = pluginResolverContext.getOriginId();
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
let link;
|
|
52
|
+
try {
|
|
53
|
+
link = new URL(urlPath);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
54
56
|
throw new Error('invalid link URI' + urlPath);
|
|
55
57
|
}
|
|
56
58
|
const dirname = path.dirname(link.pathname);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-http-resolver.js","sourceRoot":"","sources":["../../../src/main/node/plugin-http-resolver.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,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,+DAAmF;AACnF,4DAAkE;AAClE,sEAA+D;AAC/D,2BAAoC;AACpC,6BAA6B;
|
|
1
|
+
{"version":3,"file":"plugin-http-resolver.js","sourceRoot":"","sources":["../../../src/main/node/plugin-http-resolver.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,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,+DAAmF;AACnF,4DAAkE;AAClE,sEAA+D;AAC/D,2BAAoC;AACpC,6BAA6B;AAE7B,mDAAsD;AAEtD;;;;GAIG;AAEI,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAOnC;QACI,IAAI,CAAC,cAAc,GAAG,IAAI,uBAAQ,EAAE,CAAC;QACrC,IAAA,mCAAmB,EAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,cAAc,EAAC,EAAE;YAC3D,IAAI,CAAC;gBACD,MAAM,aAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,qBAAoD;QAE9D,oBAAoB;QACpB,2BAA2B;QAC3B,MAAM,OAAO,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,IAAS,CAAC;QACd,IAAI,CAAC;YACD,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QAChE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QACzD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE3E,IAAI,CAAC;YACD,MAAM,aAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC9B,yDAAyD;YACzD,OAAO;QACX,CAAC;QAAC,MAAM,CAAC,CAAC,CAAC;QAEX,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,qBAAqB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1F,IAAI,wBAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,MAAM,aAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClD,qBAAqB,CAAC,SAAS,CAAC,qBAAqB,CAAC,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,sCAAsC,qBAAqB,CAAC,WAAW,EAAE,uBAAuB,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/I,CAAC;IAEL,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAgB;QACnB,OAAO,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;CACJ,CAAA;AA9DY,gEAA0B;AAKhB;IADlB,IAAA,kBAAM,EAAC,wBAAc,CAAC;;2DACoB;qCALlC,0BAA0B;IADtC,IAAA,sBAAU,GAAE;;GACA,0BAA0B,CA8DtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-http-resolver.spec.d.ts","sourceRoot":"","sources":["../../../src/main/node/plugin-http-resolver.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const plugin_http_resolver_1 = require("./plugin-http-resolver");
|
|
20
|
+
describe('HttpPluginDeployerResolver', () => {
|
|
21
|
+
function createContext(originId) {
|
|
22
|
+
return {
|
|
23
|
+
getOriginId: () => originId
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
it('should reject a malformed link URI', async () => {
|
|
28
|
+
const resolver = new plugin_http_resolver_1.HttpPluginDeployerResolver();
|
|
29
|
+
let error;
|
|
30
|
+
try {
|
|
31
|
+
await resolver.resolve(createContext(':::not a url'));
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
error = e;
|
|
35
|
+
}
|
|
36
|
+
(0, chai_1.expect)(error).to.be.an.instanceOf(Error);
|
|
37
|
+
(0, chai_1.expect)(error.message).to.contain('invalid link URI');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=plugin-http-resolver.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-http-resolver.spec.js","sourceRoot":"","sources":["../../../src/main/node/plugin-http-resolver.spec.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,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,+BAA8B;AAC9B,iEAAoE;AAGpE,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAExC,SAAS,aAAa,CAAC,QAAgB;QACnC,OAAO;YACH,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ;YAC3B,8DAA8D;SACzB,CAAC;IAC9C,CAAC;IAED,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,QAAQ,GAAG,IAAI,iDAA0B,EAAE,CAAC;QAClD,IAAI,KAAwB,CAAC;QAC7B,IAAI,CAAC;YACD,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,KAAK,GAAG,CAAU,CAAC;QACvB,CAAC;QACD,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,IAAA,aAAM,EAAC,KAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-service.d.ts","sourceRoot":"","sources":["../../../src/main/node/plugin-service.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-service.d.ts","sourceRoot":"","sources":["../../../src/main/node/plugin-service.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,KAAK,OAAO,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAI1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAE1F,qBACa,qBAAsB,YAAW,8BAA8B,EAAE,8BAA8B;IAExG,SAAS,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAEhD,SAAS,CAAC,eAAe,EAAE,OAAO,CAAS;IAG3C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAG1D,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAGvD,SAAS,CAAC,IAAI,IAAI,IAAI;IAMtB,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI;IAazC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC;IAgBpE,SAAS,CAAC,8BAA8B,IAAI,MAAM;IAalD;;OAEG;IACH,SAAS,CAAC,uBAAuB,IAAI,MAAM;CAM9C"}
|
|
@@ -18,7 +18,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.PluginApiContribution = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
20
|
const path = require("path");
|
|
21
|
-
const url = require("url");
|
|
22
21
|
const vhost = require('vhost');
|
|
23
22
|
const express = require("@theia/core/shared/express");
|
|
24
23
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
@@ -50,8 +49,14 @@ let PluginApiContribution = class PluginApiContribution {
|
|
|
50
49
|
}
|
|
51
50
|
allowWsUpgrade(request) {
|
|
52
51
|
if (request.headers.origin && !this.serveSameOrigin) {
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
let host;
|
|
53
|
+
try {
|
|
54
|
+
host = new URL(request.headers.origin).host;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
host = undefined;
|
|
58
|
+
}
|
|
59
|
+
if (host && this.webviewExternalEndpointRegExp.test(host)) {
|
|
55
60
|
// If the origin comes from the WebViews, refuse:
|
|
56
61
|
return false;
|
|
57
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-service.js","sourceRoot":"","sources":["../../../src/main/node/plugin-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,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;;;;AAGhF,6BAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"plugin-service.js","sourceRoot":"","sources":["../../../src/main/node/plugin-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,16 +12,19 @@ export declare class TelemetryLogger {
|
|
|
12
12
|
private sender;
|
|
13
13
|
readonly options: TelemetryLoggerOptions | undefined;
|
|
14
14
|
readonly commonProperties: Record<string, any>;
|
|
15
|
-
|
|
15
|
+
private _telemetryEnabled;
|
|
16
16
|
private readonly onDidChangeEnableStatesEmitter;
|
|
17
17
|
readonly onDidChangeEnableStates: Event<TelemetryLogger>;
|
|
18
18
|
private _isUsageEnabled;
|
|
19
19
|
private _isErrorsEnabled;
|
|
20
20
|
constructor(sender: TelemetrySender, telemetryEnabled: boolean, options?: TelemetryLoggerOptions);
|
|
21
|
+
get telemetryEnabled(): boolean;
|
|
22
|
+
set telemetryEnabled(telemetryEnabled: boolean);
|
|
21
23
|
get isUsageEnabled(): boolean;
|
|
22
24
|
set isUsageEnabled(isUsageEnabled: boolean);
|
|
23
25
|
get isErrorsEnabled(): boolean;
|
|
24
26
|
set isErrorsEnabled(isErrorsEnabled: boolean);
|
|
27
|
+
private updateEnableStates;
|
|
25
28
|
logUsage(eventName: string, data?: Record<string, any | TelemetryTrustedValue<any>>): void;
|
|
26
29
|
logError(eventNameOrException: string | Error, data?: Record<string, any | TelemetryTrustedValue<any>>): void;
|
|
27
30
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry-ext.d.ts","sourceRoot":"","sources":["../../src/plugin/telemetry-ext.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAW,MAAM,8BAA8B,CAAC;AAG9D,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE7E,qBAAa,gBAAgB;IAEzB,mBAAmB,EAAE,OAAO,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAA0B;IAC7E,QAAQ,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAiD;IAErG,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,EAKjD;IAED,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,SAAS,GAAG,eAAe;CAOhH;AAED,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAA8B;IAC5C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAErD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,
|
|
1
|
+
{"version":3,"file":"telemetry-ext.d.ts","sourceRoot":"","sources":["../../src/plugin/telemetry-ext.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAW,MAAM,8BAA8B,CAAC;AAG9D,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE7E,qBAAa,gBAAgB;IAEzB,mBAAmB,EAAE,OAAO,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAA0B;IAC7E,QAAQ,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAiD;IAErG,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,IAAI,kBAAkB,CAAC,kBAAkB,EAAE,OAAO,EAKjD;IAED,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,SAAS,GAAG,eAAe;CAOhH;AAED,qBAAa,eAAe;IACxB,OAAO,CAAC,MAAM,CAA8B;IAC5C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAErD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,OAAO,CAAC,iBAAiB,CAAU;IAEnC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAA2C;IAC1F,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC,eAAe,CAAC,CAA6C;IACrG,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,gBAAgB,CAAU;gBAEtB,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB;IAShG,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,EAK7C;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,cAAc,CAAC,cAAc,EAAE,OAAO,EAKzC;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,eAAe,CAAC,eAAe,EAAE,OAAO,EAK3C;IAED,OAAO,CAAC,kBAAkB;IAS1B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;IAQ1F,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;IAY7G,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,mBAAmB;CAG9B;AAED,UAAU,eAAe;IAErB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAEnE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9D,KAAK,CAAC,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;CACnC;AAyHD;;;;;GAKG;AAEH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA2BnG"}
|
|
@@ -51,9 +51,18 @@ class TelemetryLogger {
|
|
|
51
51
|
this.sender = sender;
|
|
52
52
|
this.options = options;
|
|
53
53
|
this.commonProperties = this.getCommonProperties();
|
|
54
|
-
this.
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
54
|
+
this._telemetryEnabled = telemetryEnabled;
|
|
55
|
+
this._isErrorsEnabled = telemetryEnabled;
|
|
56
|
+
this._isUsageEnabled = telemetryEnabled;
|
|
57
|
+
}
|
|
58
|
+
get telemetryEnabled() {
|
|
59
|
+
return this._telemetryEnabled;
|
|
60
|
+
}
|
|
61
|
+
set telemetryEnabled(telemetryEnabled) {
|
|
62
|
+
if (this._telemetryEnabled !== telemetryEnabled) {
|
|
63
|
+
this._telemetryEnabled = telemetryEnabled;
|
|
64
|
+
this.updateEnableStates(telemetryEnabled, telemetryEnabled);
|
|
65
|
+
}
|
|
57
66
|
}
|
|
58
67
|
get isUsageEnabled() {
|
|
59
68
|
return this._isUsageEnabled;
|
|
@@ -73,6 +82,13 @@ class TelemetryLogger {
|
|
|
73
82
|
this.onDidChangeEnableStatesEmitter.fire(this);
|
|
74
83
|
}
|
|
75
84
|
}
|
|
85
|
+
updateEnableStates(isUsageEnabled, isErrorsEnabled) {
|
|
86
|
+
if (this._isUsageEnabled !== isUsageEnabled || this._isErrorsEnabled !== isErrorsEnabled) {
|
|
87
|
+
this._isUsageEnabled = isUsageEnabled;
|
|
88
|
+
this._isErrorsEnabled = isErrorsEnabled;
|
|
89
|
+
this.onDidChangeEnableStatesEmitter.fire(this);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
76
92
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
77
93
|
logUsage(eventName, data) {
|
|
78
94
|
if (!this.telemetryEnabled || !this.isUsageEnabled) {
|
|
@@ -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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-ext.spec.d.ts","sourceRoot":"","sources":["../../src/plugin/telemetry-ext.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 suzunn and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai = require("chai");
|
|
19
|
+
const telemetry_ext_1 = require("./telemetry-ext");
|
|
20
|
+
const expect = chai.expect;
|
|
21
|
+
describe('TelemetryLogger', () => {
|
|
22
|
+
const sender = {
|
|
23
|
+
sendEventData: () => { },
|
|
24
|
+
sendErrorData: () => { }
|
|
25
|
+
};
|
|
26
|
+
it('reflects the current telemetry enabled state', () => {
|
|
27
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
28
|
+
const logger = telemetry.createTelemetryLogger(sender);
|
|
29
|
+
expect(logger.telemetryEnabled).to.equal(false);
|
|
30
|
+
expect(logger.isUsageEnabled).to.equal(false);
|
|
31
|
+
expect(logger.isErrorsEnabled).to.equal(false);
|
|
32
|
+
telemetry.isTelemetryEnabled = true;
|
|
33
|
+
expect(logger.telemetryEnabled).to.equal(true);
|
|
34
|
+
expect(logger.isUsageEnabled).to.equal(true);
|
|
35
|
+
expect(logger.isErrorsEnabled).to.equal(true);
|
|
36
|
+
telemetry.isTelemetryEnabled = false;
|
|
37
|
+
expect(logger.telemetryEnabled).to.equal(false);
|
|
38
|
+
expect(logger.isUsageEnabled).to.equal(false);
|
|
39
|
+
expect(logger.isErrorsEnabled).to.equal(false);
|
|
40
|
+
});
|
|
41
|
+
it('emits enable-state changes when telemetry is toggled', () => {
|
|
42
|
+
const telemetry = new telemetry_ext_1.TelemetryExtImpl();
|
|
43
|
+
const logger = telemetry.createTelemetryLogger(sender);
|
|
44
|
+
let changes = 0;
|
|
45
|
+
logger.onDidChangeEnableStates(() => changes++);
|
|
46
|
+
telemetry.isTelemetryEnabled = true;
|
|
47
|
+
telemetry.isTelemetryEnabled = false;
|
|
48
|
+
expect(changes).to.equal(2);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=telemetry-ext.spec.js.map
|
|
@@ -0,0 +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;AAC7B,mDAAmD;AAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,MAAM,MAAM,GAAG;QACX,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC;QACxB,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC;KAC3B,CAAC;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEvD,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE/C,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAEpC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9C,SAAS,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAErC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC5D,MAAM,SAAS,GAAG,IAAI,gCAAgB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,MAAM,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhD,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACpC,SAAS,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAErC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/plugin-ext",
|
|
3
|
-
"version": "1.74.0-next.
|
|
3
|
+
"version": "1.74.0-next.51+bb9fc73ef",
|
|
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.74.0-next.
|
|
9
|
-
"@theia/ai-mcp": "1.74.0-next.
|
|
10
|
-
"@theia/bulk-edit": "1.74.0-next.
|
|
11
|
-
"@theia/callhierarchy": "1.74.0-next.
|
|
12
|
-
"@theia/console": "1.74.0-next.
|
|
13
|
-
"@theia/core": "1.74.0-next.
|
|
14
|
-
"@theia/debug": "1.74.0-next.
|
|
15
|
-
"@theia/editor": "1.74.0-next.
|
|
16
|
-
"@theia/editor-preview": "1.74.0-next.
|
|
17
|
-
"@theia/file-search": "1.74.0-next.
|
|
18
|
-
"@theia/filesystem": "1.74.0-next.
|
|
19
|
-
"@theia/markers": "1.74.0-next.
|
|
20
|
-
"@theia/messages": "1.74.0-next.
|
|
21
|
-
"@theia/monaco": "1.74.0-next.
|
|
8
|
+
"@theia/ai-core": "1.74.0-next.51+bb9fc73ef",
|
|
9
|
+
"@theia/ai-mcp": "1.74.0-next.51+bb9fc73ef",
|
|
10
|
+
"@theia/bulk-edit": "1.74.0-next.51+bb9fc73ef",
|
|
11
|
+
"@theia/callhierarchy": "1.74.0-next.51+bb9fc73ef",
|
|
12
|
+
"@theia/console": "1.74.0-next.51+bb9fc73ef",
|
|
13
|
+
"@theia/core": "1.74.0-next.51+bb9fc73ef",
|
|
14
|
+
"@theia/debug": "1.74.0-next.51+bb9fc73ef",
|
|
15
|
+
"@theia/editor": "1.74.0-next.51+bb9fc73ef",
|
|
16
|
+
"@theia/editor-preview": "1.74.0-next.51+bb9fc73ef",
|
|
17
|
+
"@theia/file-search": "1.74.0-next.51+bb9fc73ef",
|
|
18
|
+
"@theia/filesystem": "1.74.0-next.51+bb9fc73ef",
|
|
19
|
+
"@theia/markers": "1.74.0-next.51+bb9fc73ef",
|
|
20
|
+
"@theia/messages": "1.74.0-next.51+bb9fc73ef",
|
|
21
|
+
"@theia/monaco": "1.74.0-next.51+bb9fc73ef",
|
|
22
22
|
"@theia/monaco-editor-core": "1.108.201",
|
|
23
|
-
"@theia/navigator": "1.74.0-next.
|
|
24
|
-
"@theia/notebook": "1.74.0-next.
|
|
25
|
-
"@theia/output": "1.74.0-next.
|
|
26
|
-
"@theia/plugin": "1.74.0-next.
|
|
27
|
-
"@theia/preferences": "1.74.0-next.
|
|
28
|
-
"@theia/scm": "1.74.0-next.
|
|
29
|
-
"@theia/search-in-workspace": "1.74.0-next.
|
|
30
|
-
"@theia/task": "1.74.0-next.
|
|
31
|
-
"@theia/terminal": "1.74.0-next.
|
|
32
|
-
"@theia/test": "1.74.0-next.
|
|
33
|
-
"@theia/timeline": "1.74.0-next.
|
|
34
|
-
"@theia/typehierarchy": "1.74.0-next.
|
|
35
|
-
"@theia/variable-resolver": "1.74.0-next.
|
|
36
|
-
"@theia/workspace": "1.74.0-next.
|
|
23
|
+
"@theia/navigator": "1.74.0-next.51+bb9fc73ef",
|
|
24
|
+
"@theia/notebook": "1.74.0-next.51+bb9fc73ef",
|
|
25
|
+
"@theia/output": "1.74.0-next.51+bb9fc73ef",
|
|
26
|
+
"@theia/plugin": "1.74.0-next.51+bb9fc73ef",
|
|
27
|
+
"@theia/preferences": "1.74.0-next.51+bb9fc73ef",
|
|
28
|
+
"@theia/scm": "1.74.0-next.51+bb9fc73ef",
|
|
29
|
+
"@theia/search-in-workspace": "1.74.0-next.51+bb9fc73ef",
|
|
30
|
+
"@theia/task": "1.74.0-next.51+bb9fc73ef",
|
|
31
|
+
"@theia/terminal": "1.74.0-next.51+bb9fc73ef",
|
|
32
|
+
"@theia/test": "1.74.0-next.51+bb9fc73ef",
|
|
33
|
+
"@theia/timeline": "1.74.0-next.51+bb9fc73ef",
|
|
34
|
+
"@theia/typehierarchy": "1.74.0-next.51+bb9fc73ef",
|
|
35
|
+
"@theia/variable-resolver": "1.74.0-next.51+bb9fc73ef",
|
|
36
|
+
"@theia/workspace": "1.74.0-next.51+bb9fc73ef",
|
|
37
37
|
"@types/mime": "^2.0.3",
|
|
38
38
|
"@vscode/debugprotocol": "^1.68.0",
|
|
39
39
|
"@vscode/proxy-agent": "^0.13.2",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"macaddress": "^0.5.4",
|
|
48
48
|
"mime": "^2.6.0",
|
|
49
49
|
"node-pty": "1.2.0-beta.12",
|
|
50
|
-
"semver": "^7.8.
|
|
50
|
+
"semver": "^7.8.5",
|
|
51
51
|
"tslib": "^2.8.1",
|
|
52
52
|
"vhost": "^3.0.2",
|
|
53
53
|
"vscode-textmate": "^9.3.2"
|
|
@@ -98,5 +98,5 @@
|
|
|
98
98
|
"nyc": {
|
|
99
99
|
"extends": "../../configs/nyc.json"
|
|
100
100
|
},
|
|
101
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "bb9fc73ef01cc1add76946df2597681888f6199b"
|
|
102
102
|
}
|
|
@@ -277,9 +277,20 @@ export class HostedPluginSupport extends AbstractHostedPluginSupport<PluginManag
|
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
protected override async afterLoadContributions(toDisconnect: DisposableCollection): Promise<void> {
|
|
280
|
-
|
|
281
|
-
//
|
|
282
|
-
|
|
280
|
+
// Defer view initialization until the layout has been restored: initWidgets/removeStaleWidgets
|
|
281
|
+
// must not run while the ShellLayoutRestorer still holds restored plugin view widgets, otherwise
|
|
282
|
+
// removeStaleWidgets can dispose a restored view container mid-restore and abort the whole
|
|
283
|
+
// layout restoration (see https://github.com/eclipse-theia/theia/issues/17770).
|
|
284
|
+
// Deliberately not awaited: startPlugins runs after this hook and may register file system
|
|
285
|
+
// providers the layout restoration depends on (see beforeLoadContributions).
|
|
286
|
+
this.appState.reachedState('initialized_layout').then(async () => {
|
|
287
|
+
if (toDisconnect.disposed) {
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
await this.viewRegistry.initWidgets();
|
|
291
|
+
// remove restored plugin widgets which were not registered by contributions
|
|
292
|
+
this.viewRegistry.removeStaleWidgets();
|
|
293
|
+
}).catch(console.error);
|
|
283
294
|
this.workspaceTrustService.refreshRestrictedModeIndicator();
|
|
284
295
|
}
|
|
285
296
|
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource 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 * as fs from 'fs';
|
|
19
|
+
import * as os from 'os';
|
|
20
|
+
import * as path from 'path';
|
|
21
|
+
import { HostedPluginReader } from './plugin-reader';
|
|
22
|
+
|
|
23
|
+
class TestHostedPluginReader extends HostedPluginReader {
|
|
24
|
+
resolve(localPath: string, filePath: string): Promise<string | undefined> {
|
|
25
|
+
return this.resolveFile(localPath, filePath);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe('HostedPluginReader#resolveFile', () => {
|
|
30
|
+
|
|
31
|
+
let pluginDir: string;
|
|
32
|
+
let nearSiblingFile: string;
|
|
33
|
+
let farSiblingFile: string;
|
|
34
|
+
const reader = new TestHostedPluginReader();
|
|
35
|
+
|
|
36
|
+
before(() => {
|
|
37
|
+
// Layout:
|
|
38
|
+
// <root>/far-sibling.txt (reachable via `../../far-sibling.txt`)
|
|
39
|
+
// <root>/wrapper/sibling.txt (reachable via `../sibling.txt`)
|
|
40
|
+
// <root>/wrapper/plugin/ (pluginDir)
|
|
41
|
+
// ├── main.js
|
|
42
|
+
// └── media/icon.png
|
|
43
|
+
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'theia-plugin-reader-'));
|
|
44
|
+
const wrapper = path.join(root, 'wrapper');
|
|
45
|
+
pluginDir = path.join(wrapper, 'plugin');
|
|
46
|
+
fs.mkdirSync(pluginDir, { recursive: true });
|
|
47
|
+
fs.writeFileSync(path.join(pluginDir, 'main.js'), 'console.log("ok");');
|
|
48
|
+
fs.mkdirSync(path.join(pluginDir, 'media'));
|
|
49
|
+
fs.writeFileSync(path.join(pluginDir, 'media', 'icon.png'), 'png');
|
|
50
|
+
nearSiblingFile = path.join(wrapper, 'sibling.txt');
|
|
51
|
+
fs.writeFileSync(nearSiblingFile, 'near');
|
|
52
|
+
farSiblingFile = path.join(root, 'far-sibling.txt');
|
|
53
|
+
fs.writeFileSync(farSiblingFile, 'far');
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it('serves a file inside the plugin directory', async () => {
|
|
57
|
+
expect(await reader.resolve(pluginDir, 'main.js')).to.equal(path.join(pluginDir, 'main.js'));
|
|
58
|
+
expect(await reader.resolve(pluginDir, 'media/icon.png')).to.equal(path.join(pluginDir, 'media', 'icon.png'));
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('resolves extensionless references with the .js fallback', async () => {
|
|
62
|
+
expect(await reader.resolve(pluginDir, 'main')).to.equal(path.join(pluginDir, 'main.js'));
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('returns undefined for a relative path pointing outside the plugin directory', async () => {
|
|
66
|
+
expect(await reader.resolve(pluginDir, '../sibling.txt')).to.be.undefined;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('returns undefined for a relative path composed of parent-directory segments', async () => {
|
|
70
|
+
expect(await reader.resolve(pluginDir, '../../far-sibling.txt')).to.be.undefined;
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('returns undefined for an absolute path outside the plugin directory', async () => {
|
|
74
|
+
expect(await reader.resolve(pluginDir, nearSiblingFile)).to.be.undefined;
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it('returns undefined for a missing file inside the plugin directory', async () => {
|
|
78
|
+
expect(await reader.resolve(pluginDir, 'does-not-exist.js')).to.be.undefined;
|
|
79
|
+
});
|
|
80
|
+
});
|
|
@@ -49,8 +49,7 @@ export class HostedPluginReader implements BackendApplicationContribution {
|
|
|
49
49
|
|
|
50
50
|
const localPath = this.pluginsIdsFiles.get(pluginId);
|
|
51
51
|
if (localPath) {
|
|
52
|
-
const
|
|
53
|
-
const resolvedFile = await this.resolveFile(absolutePath);
|
|
52
|
+
const resolvedFile = await this.resolveFile(localPath, filePath);
|
|
54
53
|
if (!resolvedFile) {
|
|
55
54
|
res.status(404).send(`No such file found in '${escape_html(pluginId)}' plugin.`);
|
|
56
55
|
return;
|
|
@@ -79,13 +78,23 @@ export class HostedPluginReader implements BackendApplicationContribution {
|
|
|
79
78
|
}
|
|
80
79
|
|
|
81
80
|
/**
|
|
82
|
-
* Resolves
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
* which is common in Node.js/CommonJS environments.
|
|
81
|
+
* Resolves `filePath` under `localPath`, with fallback to `.js`, `.cjs` and `.mjs`
|
|
82
|
+
* extensions. Returns `undefined` if the resolved path is not under `localPath`
|
|
83
|
+
* or if no candidate exists on disk.
|
|
86
84
|
*
|
|
85
|
+
* The extension fallback handles cases where plugins reference modules without
|
|
86
|
+
* extensions, which is common in Node.js/CommonJS environments.
|
|
87
87
|
*/
|
|
88
|
-
protected async resolveFile(
|
|
88
|
+
protected async resolveFile(localPath: string, filePath: string): Promise<string | undefined> {
|
|
89
|
+
const absolutePath = path.resolve(localPath, filePath);
|
|
90
|
+
|
|
91
|
+
// `path.relative` yields a path starting with '..' (or an absolute path on
|
|
92
|
+
// Windows when the drive differs) when `absolutePath` is not under `localPath`.
|
|
93
|
+
const relativePath = path.relative(localPath, absolutePath);
|
|
94
|
+
if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
|
|
89
98
|
const candidates = [absolutePath];
|
|
90
99
|
const pathExtension = path.extname(absolutePath).toLowerCase();
|
|
91
100
|
|