@theia/core 1.73.0-next.9 → 1.73.1
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/README.md +26 -16
- package/i18n/nls.cs.json +273 -36
- package/i18n/nls.de.json +273 -36
- package/i18n/nls.es.json +273 -36
- package/i18n/nls.fr.json +273 -36
- package/i18n/nls.hu.json +273 -36
- package/i18n/nls.it.json +273 -36
- package/i18n/nls.ja.json +273 -36
- package/i18n/nls.json +273 -36
- package/i18n/nls.ko.json +273 -36
- package/i18n/nls.pl.json +273 -36
- package/i18n/nls.pt-br.json +273 -36
- package/i18n/nls.ru.json +273 -36
- package/i18n/nls.tr.json +273 -36
- package/i18n/nls.zh-cn.json +273 -36
- package/i18n/nls.zh-tw.json +273 -36
- package/lib/browser/authentication-service.d.ts +2 -0
- package/lib/browser/authentication-service.d.ts.map +1 -1
- package/lib/browser/authentication-service.js +8 -2
- package/lib/browser/authentication-service.js.map +1 -1
- package/lib/browser/catalog.json +314 -77
- package/lib/browser/frontend-application.d.ts +2 -0
- package/lib/browser/frontend-application.d.ts.map +1 -1
- package/lib/browser/frontend-application.js +15 -9
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/json-schema-store.d.ts +2 -0
- package/lib/browser/json-schema-store.d.ts.map +1 -1
- package/lib/browser/json-schema-store.js +8 -2
- package/lib/browser/json-schema-store.js.map +1 -1
- package/lib/browser/keybinding.js +2 -1
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.d.ts +2 -0
- package/lib/browser/keyboard/keyboard-layout-service.d.ts.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.js +35 -12
- package/lib/browser/keyboard/keyboard-layout-service.js.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.spec.js +26 -0
- package/lib/browser/keyboard/keyboard-layout-service.spec.js.map +1 -1
- package/lib/browser/markdown-rendering/markdown.d.ts +1 -1
- package/lib/browser/markdown-rendering/markdown.d.ts.map +1 -1
- package/lib/browser/markdown-rendering/markdown.js +1 -1
- package/lib/browser/markdown-rendering/markdown.js.map +1 -1
- package/lib/browser/menu/composite-menu-node.js +4 -4
- package/lib/browser/menu/composite-menu-node.js.map +1 -1
- package/lib/browser/messaging/ws-connection-source.d.ts.map +1 -1
- package/lib/browser/messaging/ws-connection-source.js +1 -6
- package/lib/browser/messaging/ws-connection-source.js.map +1 -1
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts +2 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts.map +1 -1
- package/lib/browser/preferences/frontend-config-preference-contributions.js +7 -1
- package/lib/browser/preferences/frontend-config-preference-contributions.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.spec.js +7 -0
- package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
- package/lib/browser/preferences/preference-schema-provider.spec.js +3 -0
- package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.d.ts +2 -0
- package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
- package/lib/browser/preferences/preference-validation-service.js +11 -5
- package/lib/browser/preferences/preference-validation-service.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.spec.js +2 -0
- package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
- package/lib/browser/secondary-window-handler.d.ts +2 -0
- package/lib/browser/secondary-window-handler.d.ts.map +1 -1
- package/lib/browser/secondary-window-handler.js +12 -6
- package/lib/browser/secondary-window-handler.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +2 -0
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +9 -3
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +6 -6
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +2 -2
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js +131 -0
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js.map +1 -1
- package/lib/browser/status-bar/status-bar.d.ts +2 -2
- package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/test/jsdom.d.ts +4 -0
- package/lib/browser/test/jsdom.d.ts.map +1 -1
- package/lib/browser/test/jsdom.js +18 -0
- package/lib/browser/test/jsdom.js.map +1 -1
- package/lib/browser/tree/tree-container.spec.js +4 -0
- package/lib/browser/tree/tree-container.spec.js.map +1 -1
- package/lib/browser/tree/tree-model.d.ts +1 -0
- package/lib/browser/tree/tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-model.js +3 -0
- package/lib/browser/tree/tree-model.js.map +1 -1
- package/lib/browser/tree/tree-view-welcome-widget.d.ts +1 -0
- package/lib/browser/tree/tree-view-welcome-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-view-welcome-widget.js +8 -6
- package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
- package/lib/browser/tree/tree-view-welcome-widget.spec.d.ts +2 -0
- package/lib/browser/tree/tree-view-welcome-widget.spec.d.ts.map +1 -0
- package/lib/browser/tree/tree-view-welcome-widget.spec.js +68 -0
- package/lib/browser/tree/tree-view-welcome-widget.spec.js.map +1 -0
- package/lib/browser/tree/tree-widget.js +2 -2
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree.d.ts +24 -2
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +20 -2
- package/lib/browser/tree/tree.js.map +1 -1
- package/lib/browser/tree/tree.spec.js +27 -0
- package/lib/browser/tree/tree.spec.js.map +1 -1
- package/lib/browser/window/default-window-service.d.ts +2 -1
- package/lib/browser/window/default-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-window-service.js +10 -5
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.spec.js +2 -0
- package/lib/browser/window/default-window-service.spec.js.map +1 -1
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +2 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts.map +1 -1
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +8 -2
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -1
- package/lib/common/command.d.ts +2 -0
- package/lib/common/command.d.ts.map +1 -1
- package/lib/common/command.js +10 -4
- package/lib/common/command.js.map +1 -1
- package/lib/common/logger.d.ts.map +1 -1
- package/lib/common/logger.js +11 -1
- package/lib/common/logger.js.map +1 -1
- package/lib/common/logger.spec.js +46 -0
- package/lib/common/logger.spec.js.map +1 -1
- package/lib/common/preferences/injectable-preference-proxy.d.ts +3 -3
- package/lib/common/preferences/injectable-preference-proxy.d.ts.map +1 -1
- package/lib/common/preferences/injectable-preference-proxy.js +6 -1
- package/lib/common/preferences/injectable-preference-proxy.js.map +1 -1
- package/lib/common/preferences/preference-proxy.d.ts.map +1 -1
- package/lib/common/preferences/preference-proxy.js +6 -1
- package/lib/common/preferences/preference-proxy.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +4 -2
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-node/hosting/electron-ws-origin-validator.d.ts.map +1 -1
- package/lib/electron-node/hosting/electron-ws-origin-validator.js +5 -2
- package/lib/electron-node/hosting/electron-ws-origin-validator.js.map +1 -1
- package/lib/electron-node/hosting/electron-ws-origin-validator.spec.d.ts +2 -0
- package/lib/electron-node/hosting/electron-ws-origin-validator.spec.d.ts.map +1 -0
- package/lib/electron-node/hosting/electron-ws-origin-validator.spec.js +59 -0
- package/lib/electron-node/hosting/electron-ws-origin-validator.spec.js.map +1 -0
- package/lib/electron-node/request/electron-backend-request-service.d.ts +2 -0
- package/lib/electron-node/request/electron-backend-request-service.d.ts.map +1 -1
- package/lib/electron-node/request/electron-backend-request-service.js +7 -1
- package/lib/electron-node/request/electron-backend-request-service.js.map +1 -1
- package/lib/electron-node/token/electron-token-backend-contribution.d.ts +2 -0
- package/lib/electron-node/token/electron-token-backend-contribution.d.ts.map +1 -1
- package/lib/electron-node/token/electron-token-backend-contribution.js +7 -1
- package/lib/electron-node/token/electron-token-backend-contribution.js.map +1 -1
- package/lib/electron-node/token/electron-token-validator.d.ts +2 -0
- package/lib/electron-node/token/electron-token-validator.d.ts.map +1 -1
- package/lib/electron-node/token/electron-token-validator.js +7 -1
- package/lib/electron-node/token/electron-token-validator.js.map +1 -1
- package/lib/node/backend-application-module.d.ts.map +1 -1
- package/lib/node/backend-application-module.js +2 -0
- package/lib/node/backend-application-module.js.map +1 -1
- package/lib/node/backend-application.d.ts +11 -0
- package/lib/node/backend-application.d.ts.map +1 -1
- package/lib/node/backend-application.js +40 -12
- package/lib/node/backend-application.js.map +1 -1
- package/lib/node/backend-application.spec.js +4 -2
- package/lib/node/backend-application.spec.js.map +1 -1
- package/lib/node/hosting/backend-hosting-module.d.ts.map +1 -1
- package/lib/node/hosting/backend-hosting-module.js +7 -0
- package/lib/node/hosting/backend-hosting-module.js.map +1 -1
- package/lib/node/hosting/browser-connection-token.d.ts +46 -0
- package/lib/node/hosting/browser-connection-token.d.ts.map +1 -0
- package/lib/node/hosting/browser-connection-token.js +120 -0
- package/lib/node/hosting/browser-connection-token.js.map +1 -0
- package/lib/node/hosting/browser-connection-token.spec.d.ts +2 -0
- package/lib/node/hosting/browser-connection-token.spec.d.ts.map +1 -0
- package/lib/node/hosting/browser-connection-token.spec.js +128 -0
- package/lib/node/hosting/browser-connection-token.spec.js.map +1 -0
- package/lib/node/hosting/ws-origin-validator.d.ts.map +1 -1
- package/lib/node/hosting/ws-origin-validator.js +21 -4
- package/lib/node/hosting/ws-origin-validator.js.map +1 -1
- package/lib/node/hosting/ws-origin-validator.spec.d.ts +2 -0
- package/lib/node/hosting/ws-origin-validator.spec.d.ts.map +1 -0
- package/lib/node/hosting/ws-origin-validator.spec.js +131 -0
- package/lib/node/hosting/ws-origin-validator.spec.js.map +1 -0
- package/lib/node/index.d.ts +1 -0
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +3 -1
- package/lib/node/index.js.map +1 -1
- package/lib/node/logger-cli-contribution.d.ts +6 -0
- package/lib/node/logger-cli-contribution.d.ts.map +1 -1
- package/lib/node/logger-cli-contribution.js +28 -5
- package/lib/node/logger-cli-contribution.js.map +1 -1
- package/lib/node/logger-cli-contribution.spec.js +54 -0
- package/lib/node/logger-cli-contribution.spec.js.map +1 -1
- package/lib/node/messaging/default-messaging-service.d.ts +2 -0
- package/lib/node/messaging/default-messaging-service.d.ts.map +1 -1
- package/lib/node/messaging/default-messaging-service.js +8 -2
- package/lib/node/messaging/default-messaging-service.js.map +1 -1
- package/lib/node/messaging/test/default-messaging-service.spec.js +2 -0
- package/lib/node/messaging/test/default-messaging-service.spec.js.map +1 -1
- package/lib/node/messaging/websocket-endpoint.d.ts +7 -0
- package/lib/node/messaging/websocket-endpoint.d.ts.map +1 -1
- package/lib/node/messaging/websocket-endpoint.js +21 -6
- package/lib/node/messaging/websocket-endpoint.js.map +1 -1
- package/lib/node/process-utils.d.ts +2 -0
- package/lib/node/process-utils.d.ts.map +1 -1
- package/lib/node/process-utils.js +8 -2
- package/lib/node/process-utils.js.map +1 -1
- package/lib/node/process-utils.spec.js +11 -9
- package/lib/node/process-utils.spec.js.map +1 -1
- package/lib/node/request/backend-request-facade.d.ts +19 -0
- package/lib/node/request/backend-request-facade.d.ts.map +1 -1
- package/lib/node/request/backend-request-facade.js +93 -3
- package/lib/node/request/backend-request-facade.js.map +1 -1
- package/lib/node/request/backend-request-facade.spec.d.ts +2 -0
- package/lib/node/request/backend-request-facade.spec.d.ts.map +1 -0
- package/lib/node/request/backend-request-facade.spec.js +171 -0
- package/lib/node/request/backend-request-facade.spec.js.map +1 -0
- package/package.json +29 -20
- package/src/browser/authentication-service.ts +6 -3
- package/src/browser/frontend-application.ts +13 -9
- package/src/browser/json-schema-store.ts +6 -2
- package/src/browser/keybinding.ts +2 -2
- package/src/browser/keyboard/keyboard-layout-service.spec.ts +28 -0
- package/src/browser/keyboard/keyboard-layout-service.ts +38 -14
- package/src/browser/markdown-rendering/markdown.tsx +2 -2
- package/src/browser/menu/composite-menu-node.ts +4 -4
- package/src/browser/messaging/ws-connection-source.ts +1 -6
- package/src/browser/preferences/frontend-config-preference-contributions.ts +7 -2
- package/src/browser/preferences/preference-proxy.spec.ts +8 -0
- package/src/browser/preferences/preference-schema-provider.spec.ts +5 -0
- package/src/browser/preferences/preference-validation-service.spec.ts +3 -1
- package/src/browser/preferences/preference-validation-service.ts +9 -6
- package/src/browser/secondary-window-handler.ts +11 -7
- package/src/browser/shell/application-shell.ts +8 -4
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.tsx +6 -6
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +2 -2
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.ts +159 -1
- package/src/browser/status-bar/status-bar.tsx +3 -3
- package/src/browser/test/jsdom.ts +18 -0
- package/src/browser/tree/tree-container.spec.ts +6 -0
- package/src/browser/tree/tree-model.ts +4 -0
- package/src/browser/tree/tree-view-welcome-widget.spec.ts +82 -0
- package/src/browser/tree/tree-view-welcome-widget.tsx +10 -11
- package/src/browser/tree/tree-widget.tsx +2 -2
- package/src/browser/tree/tree.spec.ts +30 -0
- package/src/browser/tree/tree.ts +31 -4
- package/src/browser/window/default-window-service.spec.ts +3 -1
- package/src/browser/window/default-window-service.ts +9 -6
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +8 -3
- package/src/common/command.ts +8 -4
- package/src/common/i18n/nls.metadata.json +2659 -374
- package/src/common/logger.spec.ts +62 -1
- package/src/common/logger.ts +13 -4
- package/src/common/preferences/injectable-preference-proxy.ts +10 -4
- package/src/common/preferences/preference-proxy.ts +10 -4
- package/src/electron-main/electron-main-application.ts +4 -2
- package/src/electron-node/hosting/electron-ws-origin-validator.spec.ts +69 -0
- package/src/electron-node/hosting/electron-ws-origin-validator.ts +5 -2
- package/src/electron-node/request/electron-backend-request-service.ts +6 -2
- package/src/electron-node/token/electron-token-backend-contribution.ts +6 -2
- package/src/electron-node/token/electron-token-validator.ts +6 -2
- package/src/node/backend-application-module.ts +4 -2
- package/src/node/backend-application.spec.ts +5 -3
- package/src/node/backend-application.ts +33 -11
- package/src/node/hosting/backend-hosting-module.ts +10 -0
- package/src/node/hosting/browser-connection-token.spec.ts +167 -0
- package/src/node/hosting/browser-connection-token.ts +126 -0
- package/src/node/hosting/ws-origin-validator.spec.ts +193 -0
- package/src/node/hosting/ws-origin-validator.ts +23 -4
- package/src/node/index.ts +1 -0
- package/src/node/logger-cli-contribution.spec.ts +65 -0
- package/src/node/logger-cli-contribution.ts +32 -5
- package/src/node/messaging/default-messaging-service.ts +6 -2
- package/src/node/messaging/test/default-messaging-service.spec.ts +3 -1
- package/src/node/messaging/websocket-endpoint.ts +23 -7
- package/src/node/process-utils.spec.ts +12 -9
- package/src/node/process-utils.ts +7 -3
- package/src/node/request/backend-request-facade.spec.ts +203 -0
- package/src/node/request/backend-request-facade.ts +108 -3
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 STMicroelectronics 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 browser_connection_token_1 = require("./browser-connection-token");
|
|
20
|
+
describe('BrowserConnectionToken', () => {
|
|
21
|
+
it('should generate unique tokens', () => {
|
|
22
|
+
const token1 = (0, browser_connection_token_1.createBrowserConnectionToken)();
|
|
23
|
+
const token2 = (0, browser_connection_token_1.createBrowserConnectionToken)();
|
|
24
|
+
(0, chai_1.expect)(token1.value).to.not.equal(token2.value);
|
|
25
|
+
});
|
|
26
|
+
it('should generate tokens of sufficient length', () => {
|
|
27
|
+
const token = (0, browser_connection_token_1.createBrowserConnectionToken)();
|
|
28
|
+
(0, chai_1.expect)(token.value.length).to.be.greaterThan(16);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('BrowserConnectionTokenBackendContribution', () => {
|
|
32
|
+
const token = (0, browser_connection_token_1.createBrowserConnectionToken)();
|
|
33
|
+
function createContribution() {
|
|
34
|
+
const contribution = new browser_connection_token_1.BrowserConnectionTokenBackendContribution();
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
+
contribution['browserConnectionToken'] = token;
|
|
37
|
+
return contribution;
|
|
38
|
+
}
|
|
39
|
+
function createRequest(cookieValue) {
|
|
40
|
+
const request = {
|
|
41
|
+
headers: {}
|
|
42
|
+
};
|
|
43
|
+
if (cookieValue !== undefined) {
|
|
44
|
+
request.headers.cookie = `${browser_connection_token_1.BROWSER_TOKEN_COOKIE_NAME}=${cookieValue}`;
|
|
45
|
+
}
|
|
46
|
+
return request;
|
|
47
|
+
}
|
|
48
|
+
describe('allowWsUpgrade (WebSocket validation)', () => {
|
|
49
|
+
it('should allow WebSocket with valid token cookie', () => {
|
|
50
|
+
const contribution = createContribution();
|
|
51
|
+
(0, chai_1.expect)(contribution.allowWsUpgrade(createRequest(token.value))).to.be.true;
|
|
52
|
+
});
|
|
53
|
+
it('should reject WebSocket with no cookie', () => {
|
|
54
|
+
const contribution = createContribution();
|
|
55
|
+
(0, chai_1.expect)(contribution.allowWsUpgrade(createRequest())).to.be.false;
|
|
56
|
+
});
|
|
57
|
+
it('should reject WebSocket with invalid token', () => {
|
|
58
|
+
const contribution = createContribution();
|
|
59
|
+
(0, chai_1.expect)(contribution.allowWsUpgrade(createRequest('wrong-token'))).to.be.false;
|
|
60
|
+
});
|
|
61
|
+
it('should reject WebSocket with stale token from previous server', () => {
|
|
62
|
+
const contribution = createContribution();
|
|
63
|
+
const staleToken = (0, browser_connection_token_1.createBrowserConnectionToken)().value;
|
|
64
|
+
(0, chai_1.expect)(contribution.allowWsUpgrade(createRequest(staleToken))).to.be.false;
|
|
65
|
+
});
|
|
66
|
+
it('should reject WebSocket with empty token', () => {
|
|
67
|
+
const contribution = createContribution();
|
|
68
|
+
(0, chai_1.expect)(contribution.allowWsUpgrade(createRequest(''))).to.be.false;
|
|
69
|
+
});
|
|
70
|
+
it('should handle multiple cookies correctly', () => {
|
|
71
|
+
const contribution = createContribution();
|
|
72
|
+
const request = {
|
|
73
|
+
headers: {
|
|
74
|
+
cookie: `other-cookie=foo; ${browser_connection_token_1.BROWSER_TOKEN_COOKIE_NAME}=${token.value}; another=bar`
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
(0, chai_1.expect)(contribution.allowWsUpgrade(request)).to.be.true;
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('expressMiddleware (HTTP cookie flow)', () => {
|
|
81
|
+
function callMiddleware(cookieValue) {
|
|
82
|
+
const contribution = createContribution();
|
|
83
|
+
const result = { cookieCalls: [], nextCalled: false };
|
|
84
|
+
const req = {
|
|
85
|
+
headers: {},
|
|
86
|
+
socket: { remoteAddress: '127.0.0.1' }
|
|
87
|
+
};
|
|
88
|
+
if (cookieValue !== undefined) {
|
|
89
|
+
req.headers.cookie = `${browser_connection_token_1.BROWSER_TOKEN_COOKIE_NAME}=${cookieValue}`;
|
|
90
|
+
}
|
|
91
|
+
const res = {
|
|
92
|
+
cookie: (name, value, options) => {
|
|
93
|
+
result.cookieCalls.push({ name, value, options });
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
const next = () => { result.nextCalled = true; };
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
98
|
+
contribution.expressMiddleware(req, res, next);
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
it('should set cookie and allow request when no cookie present', () => {
|
|
102
|
+
const result = callMiddleware();
|
|
103
|
+
(0, chai_1.expect)(result.nextCalled).to.be.true;
|
|
104
|
+
(0, chai_1.expect)(result.cookieCalls).to.have.length(1);
|
|
105
|
+
(0, chai_1.expect)(result.cookieCalls[0].name).to.equal(browser_connection_token_1.BROWSER_TOKEN_COOKIE_NAME);
|
|
106
|
+
(0, chai_1.expect)(result.cookieCalls[0].value).to.equal(token.value);
|
|
107
|
+
});
|
|
108
|
+
it('should set cookie with HttpOnly, SameSite=Strict, and path=/', () => {
|
|
109
|
+
const result = callMiddleware();
|
|
110
|
+
const opts = result.cookieCalls[0].options;
|
|
111
|
+
(0, chai_1.expect)(opts.httpOnly).to.be.true;
|
|
112
|
+
(0, chai_1.expect)(opts.sameSite).to.equal('strict');
|
|
113
|
+
(0, chai_1.expect)(opts.path).to.equal('/');
|
|
114
|
+
});
|
|
115
|
+
it('should allow request with valid cookie without re-setting it', () => {
|
|
116
|
+
const result = callMiddleware(token.value);
|
|
117
|
+
(0, chai_1.expect)(result.nextCalled).to.be.true;
|
|
118
|
+
(0, chai_1.expect)(result.cookieCalls).to.have.length(0);
|
|
119
|
+
});
|
|
120
|
+
it('should refresh stale cookie and allow request', () => {
|
|
121
|
+
const result = callMiddleware('stale-token-from-old-server');
|
|
122
|
+
(0, chai_1.expect)(result.nextCalled).to.be.true;
|
|
123
|
+
(0, chai_1.expect)(result.cookieCalls).to.have.length(1);
|
|
124
|
+
(0, chai_1.expect)(result.cookieCalls[0].value).to.equal(token.value);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=browser-connection-token.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-connection-token.spec.js","sourceRoot":"","sources":["../../../src/node/hosting/browser-connection-token.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-origin-validator.d.ts","sourceRoot":"","sources":["../../../src/node/hosting/ws-origin-validator.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ws-origin-validator.d.ts","sourceRoot":"","sources":["../../../src/node/hosting/ws-origin-validator.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,qBACa,iBAAkB,YAAW,8BAA8B;IAGpE,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAEpE,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO;CA2BzD"}
|
|
@@ -18,15 +18,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.WsOriginValidator = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
20
|
const inversify_1 = require("inversify");
|
|
21
|
-
const url = require("url");
|
|
22
21
|
const backend_application_hosts_1 = require("./backend-application-hosts");
|
|
23
22
|
let WsOriginValidator = class WsOriginValidator {
|
|
24
23
|
allowWsUpgrade(request) {
|
|
25
|
-
if (!
|
|
24
|
+
if (!request.headers.origin) {
|
|
25
|
+
// Browsers omit the Origin header for same-origin requests (e.g. Socket.IO polling).
|
|
26
|
+
// Absent Origin is safe: cross-origin browser requests always include it.
|
|
26
27
|
return true;
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
let originHost;
|
|
30
|
+
try {
|
|
31
|
+
originHost = new URL(request.headers.origin).host;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
if (this.backendApplicationHosts.hasKnownHosts()) {
|
|
37
|
+
// When THEIA_HOSTS is configured, validate against the explicit allowlist.
|
|
38
|
+
return this.backendApplicationHosts.hosts.has(originHost);
|
|
39
|
+
}
|
|
40
|
+
// When THEIA_HOSTS is not configured (the common development/default case),
|
|
41
|
+
// enforce same-origin: the Origin's host must match the request's Host header.
|
|
42
|
+
const hostHeader = request.headers.host;
|
|
43
|
+
if (!hostHeader) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return originHost === hostHeader;
|
|
30
47
|
}
|
|
31
48
|
};
|
|
32
49
|
exports.WsOriginValidator = WsOriginValidator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-origin-validator.js","sourceRoot":"","sources":["../../../src/node/hosting/ws-origin-validator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,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,yCAA+C;
|
|
1
|
+
{"version":3,"file":"ws-origin-validator.js","sourceRoot":"","sources":["../../../src/node/hosting/ws-origin-validator.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,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,yCAA+C;AAE/C,2EAAsE;AAG/D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAK1B,cAAc,CAAC,OAA6B;QACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1B,qFAAqF;YACrF,0EAA0E;YAC1E,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,UAAkB,CAAC;QACvB,IAAI,CAAC;YACD,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,EAAE,CAAC;YAC/C,2EAA2E;YAC3E,OAAO,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9D,CAAC;QAED,4EAA4E;QAC5E,+EAA+E;QAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,UAAU,KAAK,UAAU,CAAC;IACrC,CAAC;CACJ,CAAA;AAhCY,8CAAiB;AAGP;IADlB,IAAA,kBAAM,EAAC,mDAAuB,CAAC;sCACY,mDAAuB;kEAAC;4BAH3D,iBAAiB;IAD7B,IAAA,sBAAU,GAAE;GACA,iBAAiB,CAgC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-origin-validator.spec.d.ts","sourceRoot":"","sources":["../../../src/node/hosting/ws-origin-validator.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 STMicroelectronics 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 ws_origin_validator_1 = require("./ws-origin-validator");
|
|
20
|
+
const backend_application_hosts_1 = require("./backend-application-hosts");
|
|
21
|
+
describe('WsOriginValidator', () => {
|
|
22
|
+
function createValidator(hosts) {
|
|
23
|
+
const backendHosts = new backend_application_hosts_1.BackendApplicationHosts();
|
|
24
|
+
if (hosts) {
|
|
25
|
+
for (const h of hosts) {
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
backendHosts['_hosts'].add(h);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const validator = new ws_origin_validator_1.WsOriginValidator();
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
+
validator['backendApplicationHosts'] = backendHosts;
|
|
33
|
+
return validator;
|
|
34
|
+
}
|
|
35
|
+
function createRequest(origin, host) {
|
|
36
|
+
const request = {
|
|
37
|
+
headers: {}
|
|
38
|
+
};
|
|
39
|
+
if (origin !== undefined) {
|
|
40
|
+
request.headers.origin = origin;
|
|
41
|
+
}
|
|
42
|
+
if (host !== undefined) {
|
|
43
|
+
request.headers.host = host;
|
|
44
|
+
}
|
|
45
|
+
return request;
|
|
46
|
+
}
|
|
47
|
+
describe('when THEIA_HOSTS is not set', () => {
|
|
48
|
+
it('should allow same-origin requests', () => {
|
|
49
|
+
const validator = createValidator();
|
|
50
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://localhost:3000', 'localhost:3000'))).to.be.true;
|
|
51
|
+
});
|
|
52
|
+
it('should allow same-origin requests on default ports', () => {
|
|
53
|
+
const validator = createValidator();
|
|
54
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://myhost.com', 'myhost.com'))).to.be.true;
|
|
55
|
+
});
|
|
56
|
+
it('should reject cross-origin requests', () => {
|
|
57
|
+
const validator = createValidator();
|
|
58
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://evil.com', 'localhost:3000'))).to.be.false;
|
|
59
|
+
});
|
|
60
|
+
it('should allow requests with no Origin header (same-origin polling)', () => {
|
|
61
|
+
const validator = createValidator();
|
|
62
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest(undefined, 'localhost:3000'))).to.be.true;
|
|
63
|
+
});
|
|
64
|
+
it('should reject requests with no Host header when Origin is present', () => {
|
|
65
|
+
const validator = createValidator();
|
|
66
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://localhost:3000', undefined))).to.be.false;
|
|
67
|
+
});
|
|
68
|
+
it('should reject requests with malformed Origin', () => {
|
|
69
|
+
const validator = createValidator();
|
|
70
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('not-a-valid-url', 'localhost:3000'))).to.be.false;
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe('when THEIA_HOSTS is set', () => {
|
|
74
|
+
it('should allow requests from a listed host', () => {
|
|
75
|
+
const validator = createValidator(['myhost.com']);
|
|
76
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://myhost.com', 'myhost.com'))).to.be.true;
|
|
77
|
+
});
|
|
78
|
+
it('should allow requests from a listed host with port', () => {
|
|
79
|
+
const validator = createValidator(['myhost.com:8080']);
|
|
80
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://myhost.com:8080', 'myhost.com:8080'))).to.be.true;
|
|
81
|
+
});
|
|
82
|
+
it('should reject requests from an unlisted host', () => {
|
|
83
|
+
const validator = createValidator(['myhost.com']);
|
|
84
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://evil.com', 'myhost.com'))).to.be.false;
|
|
85
|
+
});
|
|
86
|
+
it('should allow requests with no Origin header (same-origin polling)', () => {
|
|
87
|
+
const validator = createValidator(['myhost.com']);
|
|
88
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest(undefined, 'myhost.com'))).to.be.true;
|
|
89
|
+
});
|
|
90
|
+
it('should allow when origin host is in the allowlist regardless of Host header', () => {
|
|
91
|
+
const validator = createValidator(['myhost.com']);
|
|
92
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://myhost.com', 'internal-host:3000'))).to.be.true;
|
|
93
|
+
});
|
|
94
|
+
it('should reject malformed Origin even with THEIA_HOSTS', () => {
|
|
95
|
+
const validator = createValidator(['myhost.com']);
|
|
96
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('not-a-valid-url', 'myhost.com'))).to.be.false;
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('edge cases', () => {
|
|
100
|
+
it('should reject cross-origin with port mismatch', () => {
|
|
101
|
+
const validator = createValidator();
|
|
102
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://localhost:4000', 'localhost:3000'))).to.be.false;
|
|
103
|
+
});
|
|
104
|
+
it('should handle HTTPS origins', () => {
|
|
105
|
+
const validator = createValidator();
|
|
106
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('https://localhost:3000', 'localhost:3000'))).to.be.true;
|
|
107
|
+
});
|
|
108
|
+
it('should reject Origin: null (opaque origin from sandboxed pages)', () => {
|
|
109
|
+
const validator = createValidator();
|
|
110
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('null', 'localhost:3000'))).to.be.false;
|
|
111
|
+
});
|
|
112
|
+
it('should allow empty Origin string (treated as absent)', () => {
|
|
113
|
+
const validator = createValidator();
|
|
114
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('', 'localhost:3000'))).to.be.true;
|
|
115
|
+
});
|
|
116
|
+
it('should handle IPv6 same-origin', () => {
|
|
117
|
+
const validator = createValidator();
|
|
118
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://[::1]:3000', '[::1]:3000'))).to.be.true;
|
|
119
|
+
});
|
|
120
|
+
it('should strip credentials from Origin when comparing', () => {
|
|
121
|
+
const validator = createValidator();
|
|
122
|
+
// new URL('http://user:pass@localhost:3000').host === 'localhost:3000'
|
|
123
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://user:pass@localhost:3000', 'localhost:3000'))).to.be.true;
|
|
124
|
+
});
|
|
125
|
+
it('should ignore path component in Origin', () => {
|
|
126
|
+
const validator = createValidator();
|
|
127
|
+
(0, chai_1.expect)(validator.allowWsUpgrade(createRequest('http://localhost:3000/some/path', 'localhost:3000'))).to.be.true;
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
//# sourceMappingURL=ws-origin-validator.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-origin-validator.spec.js","sourceRoot":"","sources":["../../../src/node/hosting/ws-origin-validator.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/node/index.d.ts
CHANGED
|
@@ -6,4 +6,5 @@ export * from './messaging';
|
|
|
6
6
|
export * from './cli';
|
|
7
7
|
export * from './setting-service';
|
|
8
8
|
export { FileSystemLocking } from './filesystem-locking';
|
|
9
|
+
export { BackendRequestAllowedContribution } from './request/backend-request-facade';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAgBA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":"AAgBA,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC"}
|
package/lib/node/index.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.FileSystemLocking = void 0;
|
|
18
|
+
exports.BackendRequestAllowedContribution = exports.FileSystemLocking = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
20
|
tslib_1.__exportStar(require("./backend-application"), exports);
|
|
21
21
|
tslib_1.__exportStar(require("./backend-global"), exports);
|
|
@@ -26,4 +26,6 @@ tslib_1.__exportStar(require("./cli"), exports);
|
|
|
26
26
|
tslib_1.__exportStar(require("./setting-service"), exports);
|
|
27
27
|
var filesystem_locking_1 = require("./filesystem-locking");
|
|
28
28
|
Object.defineProperty(exports, "FileSystemLocking", { enumerable: true, get: function () { return filesystem_locking_1.FileSystemLocking; } });
|
|
29
|
+
var backend_request_facade_1 = require("./request/backend-request-facade");
|
|
30
|
+
Object.defineProperty(exports, "BackendRequestAllowedContribution", { enumerable: true, get: function () { return backend_request_facade_1.BackendRequestAllowedContribution; } });
|
|
29
31
|
//# sourceMappingURL=index.js.map
|
package/lib/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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,gEAAsC;AACtC,2DAAiC;AACjC,kDAAwB;AACxB,6DAAmC;AACnC,sDAA4B;AAC5B,gDAAsB;AACtB,4DAAkC;AAClC,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node/index.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,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,gEAAsC;AACtC,2DAAiC;AACjC,kDAAwB;AACxB,6DAAmC;AACnC,sDAA4B;AAC5B,gDAAsB;AACtB,4DAAkC;AAClC,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,2EAAqF;AAA5E,2IAAA,iCAAiC,OAAA"}
|
|
@@ -15,6 +15,7 @@ export interface LogLevels {
|
|
|
15
15
|
*/
|
|
16
16
|
export declare class LogLevelCliContribution implements CliContribution, Disposable {
|
|
17
17
|
protected _logLevels: LogLevels;
|
|
18
|
+
protected wildcardRegexCache: Map<string, RegExp>;
|
|
18
19
|
protected asyncSubscriptions: AsyncSubscription[];
|
|
19
20
|
protected toDispose: DisposableCollection;
|
|
20
21
|
/**
|
|
@@ -38,5 +39,10 @@ export declare class LogLevelCliContribution implements CliContribution, Disposa
|
|
|
38
39
|
* Converts the string to a `LogLevel`. Throws an error if invalid.
|
|
39
40
|
*/
|
|
40
41
|
protected readLogLevelString(levelStr: string, errMessagePrefix: string): LogLevel;
|
|
42
|
+
/**
|
|
43
|
+
* Converts a wildcard string into a strict regular expression and caches it.
|
|
44
|
+
* Example: "ai-core*" -> /^ai-core.*$/
|
|
45
|
+
*/
|
|
46
|
+
protected getWildcardRegex(pattern: string): RegExp;
|
|
41
47
|
}
|
|
42
48
|
//# sourceMappingURL=logger-cli-contribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-cli-contribution.d.ts","sourceRoot":"","sources":["../../src/node/logger-cli-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAa,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"logger-cli-contribution.d.ts","sourceRoot":"","sources":["../../src/node/logger-cli-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAa,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAG7D,wCAAwC;AACxC,MAAM,WAAW,SAAS;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B;AAED;;;;GAIG;AACH,qBACa,uBAAwB,YAAW,eAAe,EAAE,UAAU;IAEvE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAM;IACrC,SAAS,CAAC,kBAAkB,sBAA6B;IACzD,SAAS,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAAM;IACvD,SAAS,CAAC,SAAS,uBAA8B;IAEjD;;OAEG;IACH,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAiB;IAErD,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE5B,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAuB;IAErE,IAAI,eAAe,IAAI,QAAQ,CAE9B;IAED,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;;IAMD,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI;IAoB3B,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;cAgDxC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B7D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;cAOd,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BnE,IAAI,kBAAkB,IAAI,KAAK,CAAC,IAAI,CAAC,CAEpC;IAED,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ;IAoBzC;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,QAAQ;IAUlF;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAStD"}
|
|
@@ -24,6 +24,7 @@ const watcher_1 = require("@parcel/watcher");
|
|
|
24
24
|
const event_1 = require("../common/event");
|
|
25
25
|
const path = require("path");
|
|
26
26
|
const common_1 = require("../common");
|
|
27
|
+
const strings_1 = require("../common/strings");
|
|
27
28
|
/**
|
|
28
29
|
* Parses command line switches related to log levels, then watches the log
|
|
29
30
|
* levels file (if specified) for changes. This is the source of truth for
|
|
@@ -41,6 +42,7 @@ let LogLevelCliContribution = class LogLevelCliContribution {
|
|
|
41
42
|
}
|
|
42
43
|
constructor() {
|
|
43
44
|
this._logLevels = {};
|
|
45
|
+
this.wildcardRegexCache = new Map();
|
|
44
46
|
this.asyncSubscriptions = [];
|
|
45
47
|
this.toDispose = new common_1.DisposableCollection();
|
|
46
48
|
/**
|
|
@@ -162,6 +164,7 @@ let LogLevelCliContribution = class LogLevelCliContribution {
|
|
|
162
164
|
}
|
|
163
165
|
this._defaultLogLevel = newDefaultLogLevel;
|
|
164
166
|
this._logLevels = newLogLevels;
|
|
167
|
+
this.wildcardRegexCache.clear();
|
|
165
168
|
console.log(`Successfully read new log config from ${filename}.`);
|
|
166
169
|
}
|
|
167
170
|
catch (e) {
|
|
@@ -172,13 +175,20 @@ let LogLevelCliContribution = class LogLevelCliContribution {
|
|
|
172
175
|
return this.logConfigChangedEvent.event;
|
|
173
176
|
}
|
|
174
177
|
logLevelFor(loggerName) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
return level;
|
|
178
|
+
if (loggerName in this._logLevels) {
|
|
179
|
+
return this._logLevels[loggerName];
|
|
178
180
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
+
const keys = Object.keys(this._logLevels);
|
|
182
|
+
for (let i = keys.length - 1; i >= 0; i--) {
|
|
183
|
+
const pattern = keys[i];
|
|
184
|
+
if (pattern.includes('*')) {
|
|
185
|
+
const regex = this.getWildcardRegex(pattern);
|
|
186
|
+
if (regex.test(loggerName)) {
|
|
187
|
+
return this._logLevels[pattern];
|
|
188
|
+
}
|
|
189
|
+
}
|
|
181
190
|
}
|
|
191
|
+
return this.defaultLogLevel;
|
|
182
192
|
}
|
|
183
193
|
/**
|
|
184
194
|
* Converts the string to a `LogLevel`. Throws an error if invalid.
|
|
@@ -190,6 +200,19 @@ let LogLevelCliContribution = class LogLevelCliContribution {
|
|
|
190
200
|
}
|
|
191
201
|
return level;
|
|
192
202
|
}
|
|
203
|
+
/**
|
|
204
|
+
* Converts a wildcard string into a strict regular expression and caches it.
|
|
205
|
+
* Example: "ai-core*" -> /^ai-core.*$/
|
|
206
|
+
*/
|
|
207
|
+
getWildcardRegex(pattern) {
|
|
208
|
+
let regex = this.wildcardRegexCache.get(pattern);
|
|
209
|
+
if (!regex) {
|
|
210
|
+
const escapedPattern = pattern.split('*').map(strings_1.escapeRegExpCharacters).join('.*');
|
|
211
|
+
regex = new RegExp(`^${escapedPattern}$`);
|
|
212
|
+
this.wildcardRegexCache.set(pattern, regex);
|
|
213
|
+
}
|
|
214
|
+
return regex;
|
|
215
|
+
}
|
|
193
216
|
};
|
|
194
217
|
exports.LogLevelCliContribution = LogLevelCliContribution;
|
|
195
218
|
exports.LogLevelCliContribution = LogLevelCliContribution = tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-cli-contribution.js","sourceRoot":"","sources":["../../src/node/logger-cli-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,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,yCAAuC;AACvC,6CAA4C;AAE5C,+BAA+B;AAC/B,6CAA+D;AAC/D,2CAAiD;AACjD,6BAA6B;AAC7B,sCAA6D;
|
|
1
|
+
{"version":3,"file":"logger-cli-contribution.js","sourceRoot":"","sources":["../../src/node/logger-cli-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -215,5 +215,59 @@ describe('log-level-cli-contribution', () => {
|
|
|
215
215
|
world: logger_1.LogLevel.FATAL,
|
|
216
216
|
});
|
|
217
217
|
});
|
|
218
|
+
describe('Wildcard Matching', () => {
|
|
219
|
+
async function setupLogLevels(levels) {
|
|
220
|
+
const file = track.openSync();
|
|
221
|
+
fs.writeFileSync(file.fd, JSON.stringify({
|
|
222
|
+
defaultLevel: 'info',
|
|
223
|
+
levels
|
|
224
|
+
}));
|
|
225
|
+
fs.fsyncSync(file.fd);
|
|
226
|
+
fs.closeSync(file.fd);
|
|
227
|
+
const args = await yargs.parse(['--log-config', file.path]);
|
|
228
|
+
await cli.setArguments(args);
|
|
229
|
+
}
|
|
230
|
+
it('should respect exact matches without wildcards', async () => {
|
|
231
|
+
await setupLogLevels({
|
|
232
|
+
'unrelated:Service': 'debug'
|
|
233
|
+
});
|
|
234
|
+
(0, chai_1.expect)(cli.logLevelFor('unrelated:Service')).to.equal(logger_1.LogLevel.DEBUG);
|
|
235
|
+
(0, chai_1.expect)(cli.logLevelFor('something-else')).to.equal(logger_1.LogLevel.INFO);
|
|
236
|
+
});
|
|
237
|
+
it('should match prefix wildcards', async () => {
|
|
238
|
+
await setupLogLevels({
|
|
239
|
+
'ai-core*': 'error'
|
|
240
|
+
});
|
|
241
|
+
(0, chai_1.expect)(cli.logLevelFor('ai-core:SomeOtherService')).to.equal(logger_1.LogLevel.ERROR);
|
|
242
|
+
});
|
|
243
|
+
it('should match suffix wildcards', async () => {
|
|
244
|
+
await setupLogLevels({
|
|
245
|
+
'*TokenUsageFrontendServiceImpl': 'warn'
|
|
246
|
+
});
|
|
247
|
+
(0, chai_1.expect)(cli.logLevelFor('my-package:MyTokenUsageFrontendServiceImpl')).to.equal(logger_1.LogLevel.WARN);
|
|
248
|
+
});
|
|
249
|
+
it('should match middle wildcards', async () => {
|
|
250
|
+
await setupLogLevels({
|
|
251
|
+
'*ai*:*': 'warn'
|
|
252
|
+
});
|
|
253
|
+
(0, chai_1.expect)(cli.logLevelFor('foo-ai-bar:SomeService')).to.equal(logger_1.LogLevel.WARN);
|
|
254
|
+
});
|
|
255
|
+
it('should enforce perfect match first, then last wildcard wins', async () => {
|
|
256
|
+
await setupLogLevels({
|
|
257
|
+
'ai-core*': 'error',
|
|
258
|
+
'*ai*:*': 'warn',
|
|
259
|
+
'ai-core:SpecificService': 'debug'
|
|
260
|
+
});
|
|
261
|
+
(0, chai_1.expect)(cli.logLevelFor('ai-core:SpecificService')).to.equal(logger_1.LogLevel.DEBUG);
|
|
262
|
+
(0, chai_1.expect)(cli.logLevelFor('ai-core:OtherService')).to.equal(logger_1.LogLevel.WARN);
|
|
263
|
+
});
|
|
264
|
+
it('should properly escape regex specifics like periods', async () => {
|
|
265
|
+
await setupLogLevels({
|
|
266
|
+
'.*': 'error'
|
|
267
|
+
});
|
|
268
|
+
(0, chai_1.expect)(cli.logLevelFor('anything-else')).to.equal(logger_1.LogLevel.INFO);
|
|
269
|
+
(0, chai_1.expect)(cli.logLevelFor('.*')).to.equal(logger_1.LogLevel.ERROR);
|
|
270
|
+
});
|
|
271
|
+
});
|
|
218
272
|
});
|
|
219
273
|
//# sourceMappingURL=logger-cli-contribution.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger-cli-contribution.spec.js","sourceRoot":"","sources":["../../src/node/logger-cli-contribution.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logger-cli-contribution.spec.js","sourceRoot":"","sources":["../../src/node/logger-cli-contribution.spec.ts"],"names":[],"mappings":"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"}
|