@theia/core 1.73.0-next.2 → 1.73.0-next.24
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/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 +204 -73
- 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/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-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/quick-input/quick-view-service.d.ts +1 -0
- package/lib/browser/quick-input/quick-view-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-view-service.js +6 -1
- package/lib/browser/quick-input/quick-view-service.js.map +1 -1
- package/lib/browser/quick-input/quick-view-service.spec.d.ts +2 -0
- package/lib/browser/quick-input/quick-view-service.spec.d.ts.map +1 -0
- package/lib/browser/quick-input/quick-view-service.spec.js +41 -0
- package/lib/browser/quick-input/quick-view-service.spec.js.map +1 -0
- 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/tree/tree-container.spec.js +4 -0
- package/lib/browser/tree/tree-container.spec.js.map +1 -1
- package/lib/browser/tree/tree.d.ts +2 -0
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +7 -1
- package/lib/browser/tree/tree.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/electron-main/electron-main-application.d.ts +2 -0
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +17 -9
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +2 -0
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.js +9 -3
- package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
- 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.d.ts +2 -0
- package/lib/node/backend-application.d.ts.map +1 -1
- package/lib/node/backend-application.js +17 -11
- package/lib/node/backend-application.js.map +1 -1
- package/lib/node/backend-application.spec.js +3 -2
- package/lib/node/backend-application.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 +2 -0
- package/lib/node/messaging/websocket-endpoint.d.ts.map +1 -1
- package/lib/node/messaging/websocket-endpoint.js +7 -1
- 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/package.json +4 -4
- 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/preferences/frontend-config-preference-contributions.ts +7 -2
- 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/quick-input/quick-view-service.spec.ts +50 -0
- package/src/browser/quick-input/quick-view-service.ts +5 -0
- package/src/browser/secondary-window-handler.ts +11 -7
- package/src/browser/shell/application-shell.ts +8 -4
- package/src/browser/tree/tree-container.spec.ts +6 -0
- package/src/browser/tree/tree.ts +6 -2
- 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/electron-main/electron-main-application.ts +15 -9
- package/src/electron-main/messaging/electron-messaging-contribution.ts +7 -3
- 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.spec.ts +3 -3
- package/src/node/backend-application.ts +15 -11
- 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 +6 -2
- package/src/node/process-utils.spec.ts +12 -9
- package/src/node/process-utils.ts +7 -3
|
@@ -22,6 +22,7 @@ import Route = require('route-parser');
|
|
|
22
22
|
import { Channel, ChannelMultiplexer } from '../../common/message-rpc/channel';
|
|
23
23
|
import { FrontendConnectionService } from './frontend-connection-service';
|
|
24
24
|
import { BackendApplicationContribution } from '../backend-application';
|
|
25
|
+
import { ILogger } from '../../common/logger';
|
|
25
26
|
|
|
26
27
|
export const MessagingContainer = Symbol('MessagingContainer');
|
|
27
28
|
export const MainChannel = Symbol('MainChannel');
|
|
@@ -37,6 +38,9 @@ export class DefaultMessagingService implements MessagingService, BackendApplica
|
|
|
37
38
|
@inject(ContributionProvider) @named(ConnectionContainerModule)
|
|
38
39
|
protected readonly connectionModules: ContributionProvider<interfaces.ContainerModule>;
|
|
39
40
|
|
|
41
|
+
@inject(ILogger) @named('core:DefaultMessagingService')
|
|
42
|
+
protected readonly logger: ILogger;
|
|
43
|
+
|
|
40
44
|
@inject(ContributionProvider) @named(MessagingService.Contribution)
|
|
41
45
|
protected readonly contributions: ContributionProvider<MessagingService.Contribution>;
|
|
42
46
|
|
|
@@ -62,8 +66,8 @@ export class DefaultMessagingService implements MessagingService, BackendApplica
|
|
|
62
66
|
const channelHandlers = this.getConnectionChannelHandlers(channel);
|
|
63
67
|
multiplexer.onDidOpenChannel(event => {
|
|
64
68
|
if (channelHandlers.route(event.id, event.channel)) {
|
|
65
|
-
|
|
66
|
-
event.channel.onClose(() =>
|
|
69
|
+
this.logger.debug(`Opening channel for service path '${event.id}'.`);
|
|
70
|
+
event.channel.onClose(() => this.logger.info(`Closing channel on service path '${event.id}'.`));
|
|
67
71
|
}
|
|
68
72
|
});
|
|
69
73
|
}
|
|
@@ -16,13 +16,14 @@
|
|
|
16
16
|
|
|
17
17
|
import { expect } from 'chai';
|
|
18
18
|
import { Container, injectable, preDestroy } from 'inversify';
|
|
19
|
-
import { ConnectionHandler, bindContributionProvider, servicesPath } from '../../../common';
|
|
19
|
+
import { ConnectionHandler, bindContributionProvider, servicesPath, ILogger } from '../../../common';
|
|
20
20
|
import { BasicChannel, Channel } from '../../../common/message-rpc/channel';
|
|
21
21
|
import { Uint8ArrayWriteBuffer } from '../../../common/message-rpc/uint8-array-message-buffer';
|
|
22
22
|
import { ConnectionContainerModule } from '../connection-container-module';
|
|
23
23
|
import { DefaultMessagingService, MessagingContainer } from '../default-messaging-service';
|
|
24
24
|
import { FrontendConnectionService } from '../frontend-connection-service';
|
|
25
25
|
import { MessagingService } from '../messaging-service';
|
|
26
|
+
import { MockLogger } from '../../../common/test/mock-logger';
|
|
26
27
|
|
|
27
28
|
describe('DefaultMessagingService', () => {
|
|
28
29
|
|
|
@@ -63,6 +64,7 @@ describe('DefaultMessagingService', () => {
|
|
|
63
64
|
}
|
|
64
65
|
};
|
|
65
66
|
container.bind(FrontendConnectionService).toConstantValue(frontendConnectionService);
|
|
67
|
+
container.bind(ILogger).to(MockLogger).inSingletonScope();
|
|
66
68
|
|
|
67
69
|
const messagingService = container.get(DefaultMessagingService);
|
|
68
70
|
messagingService.initialize();
|
|
@@ -16,12 +16,13 @@
|
|
|
16
16
|
import { MessagingService } from './messaging-service';
|
|
17
17
|
import * as http from 'http';
|
|
18
18
|
import * as https from 'https';
|
|
19
|
-
import { inject, injectable } from 'inversify';
|
|
19
|
+
import { inject, injectable, named } from 'inversify';
|
|
20
20
|
import { Server, Socket } from 'socket.io';
|
|
21
21
|
import { WsRequestValidator } from '../ws-request-validators';
|
|
22
22
|
import { MessagingListener } from './messaging-listeners';
|
|
23
23
|
import { ConnectionHandlers } from './default-messaging-service';
|
|
24
24
|
import { BackendApplicationContribution } from '../backend-application';
|
|
25
|
+
import { ILogger } from '../../common/logger';
|
|
25
26
|
|
|
26
27
|
@injectable()
|
|
27
28
|
export class WebsocketEndpoint implements BackendApplicationContribution {
|
|
@@ -31,6 +32,9 @@ export class WebsocketEndpoint implements BackendApplicationContribution {
|
|
|
31
32
|
@inject(MessagingListener)
|
|
32
33
|
protected readonly messagingListener: MessagingListener;
|
|
33
34
|
|
|
35
|
+
@inject(ILogger) @named('core:WebsocketEndpoint')
|
|
36
|
+
protected readonly logger: ILogger;
|
|
37
|
+
|
|
34
38
|
protected checkAliveTimeout = 30000; // 30 seconds
|
|
35
39
|
protected maxHttpBufferSize = 1e8; // 100 MB
|
|
36
40
|
|
|
@@ -72,7 +76,7 @@ export class WebsocketEndpoint implements BackendApplicationContribution {
|
|
|
72
76
|
protected async handleConnection(socket: Socket): Promise<void> {
|
|
73
77
|
const pathname = socket.nsp.name;
|
|
74
78
|
if (pathname && !this.wsHandlers.route(pathname, socket)) {
|
|
75
|
-
|
|
79
|
+
this.logger.error('Cannot find a ws handler for the path: ' + pathname);
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
}
|
|
@@ -15,8 +15,11 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { expect } from 'chai';
|
|
18
|
+
import * as sinon from 'sinon';
|
|
18
19
|
import { Container } from 'inversify';
|
|
19
20
|
import { ProcessUtils } from './process-utils';
|
|
21
|
+
import { ILogger } from '../common';
|
|
22
|
+
import { MockLogger } from '../common/test/mock-logger';
|
|
20
23
|
|
|
21
24
|
/** PPID, PID */
|
|
22
25
|
const mockPsOutput = `\
|
|
@@ -36,6 +39,8 @@ describe('ProcessUtils', () => {
|
|
|
36
39
|
beforeEach(() => {
|
|
37
40
|
const container = new Container();
|
|
38
41
|
container.bind(ProcessUtils).toSelf().inSingletonScope();
|
|
42
|
+
container.bind(ILogger).to(MockLogger).inSingletonScope();
|
|
43
|
+
|
|
39
44
|
coreProcessManager = container.get(ProcessUtils);
|
|
40
45
|
});
|
|
41
46
|
|
|
@@ -48,8 +53,7 @@ describe('ProcessUtils', () => {
|
|
|
48
53
|
|
|
49
54
|
describe('#unixTerminateProcessTree', () => {
|
|
50
55
|
let originalKill: typeof process.kill;
|
|
51
|
-
let
|
|
52
|
-
let loggedErrors: unknown[];
|
|
56
|
+
let errorStub: sinon.SinonStub;
|
|
53
57
|
|
|
54
58
|
function throwingKill(code: string): typeof process.kill {
|
|
55
59
|
return (() => {
|
|
@@ -61,9 +65,8 @@ describe('ProcessUtils', () => {
|
|
|
61
65
|
|
|
62
66
|
beforeEach(() => {
|
|
63
67
|
originalKill = process.kill;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
console.error = (...args: unknown[]) => { loggedErrors.push(args); };
|
|
68
|
+
const mockLogger = (coreProcessManager as unknown as { logger: ILogger }).logger;
|
|
69
|
+
errorStub = sinon.stub(mockLogger, 'error');
|
|
67
70
|
// One child plus the parent; report the parent as its own group leader so the `kill(-ppid)` branch runs too.
|
|
68
71
|
coreProcessManager['unixGetChildrenRecursive'] = () => new Set([424242]);
|
|
69
72
|
coreProcessManager['unixGetPGID'] = (pid: number) => pid;
|
|
@@ -71,26 +74,26 @@ describe('ProcessUtils', () => {
|
|
|
71
74
|
|
|
72
75
|
afterEach(() => {
|
|
73
76
|
process.kill = originalKill;
|
|
74
|
-
|
|
77
|
+
sinon.restore();
|
|
75
78
|
});
|
|
76
79
|
|
|
77
80
|
it('does not throw or log when processes in the tree are already gone (ESRCH)', () => {
|
|
78
81
|
process.kill = throwingKill('ESRCH');
|
|
79
82
|
expect(() => coreProcessManager['unixTerminateProcessTree'](424243)).to.not.throw();
|
|
80
|
-
expect(
|
|
83
|
+
expect(errorStub.called).to.be.false;
|
|
81
84
|
});
|
|
82
85
|
|
|
83
86
|
it('logs unexpected kill errors (e.g. EPERM) without throwing', () => {
|
|
84
87
|
process.kill = throwingKill('EPERM');
|
|
85
88
|
expect(() => coreProcessManager['unixTerminateProcessTree'](424243)).to.not.throw();
|
|
86
|
-
expect(
|
|
89
|
+
expect(errorStub.called).to.be.true;
|
|
87
90
|
});
|
|
88
91
|
|
|
89
92
|
it('does not throw when a kill rejects with a value that has no code (e.g. undefined)', () => {
|
|
90
93
|
const thrown: unknown = undefined;
|
|
91
94
|
process.kill = (() => { throw thrown; }) as typeof process.kill;
|
|
92
95
|
expect(() => coreProcessManager['unixTerminateProcessTree'](424243)).to.not.throw();
|
|
93
|
-
expect(
|
|
96
|
+
expect(errorStub.called).to.be.true;
|
|
94
97
|
});
|
|
95
98
|
});
|
|
96
99
|
});
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import * as cp from 'child_process';
|
|
18
|
-
import { injectable } from 'inversify';
|
|
18
|
+
import { injectable, inject, named } from 'inversify';
|
|
19
|
+
import { ILogger } from '../common/logger';
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* `@theia/core` service with some process-related utilities.
|
|
@@ -23,6 +24,9 @@ import { injectable } from 'inversify';
|
|
|
23
24
|
@injectable()
|
|
24
25
|
export class ProcessUtils {
|
|
25
26
|
|
|
27
|
+
@inject(ILogger) @named('core:ProcessUtils')
|
|
28
|
+
protected readonly logger: ILogger;
|
|
29
|
+
|
|
26
30
|
terminateProcessTree(ppid: number): void {
|
|
27
31
|
if (process.platform === 'win32') {
|
|
28
32
|
this.winTerminateProcessTree(ppid);
|
|
@@ -39,7 +43,7 @@ export class ProcessUtils {
|
|
|
39
43
|
// taskkill may exit with a non-zero code when some child processes have already exited.
|
|
40
44
|
// This is expected during shutdown — log but don't throw.
|
|
41
45
|
if (result.status !== 0) {
|
|
42
|
-
|
|
46
|
+
this.logger.warn(`taskkill.exe exited with ${result.status} for PID ${ppid}. Output:\n${JSON.stringify(result.output)}`);
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
|
|
@@ -66,7 +70,7 @@ export class ProcessUtils {
|
|
|
66
70
|
// ESRCH means the process is already gone, which is the goal here. Log
|
|
67
71
|
// anything else but keep going so the rest of the tree is still killed.
|
|
68
72
|
if ((error as NodeJS.ErrnoException | undefined)?.code !== 'ESRCH') {
|
|
69
|
-
|
|
73
|
+
this.logger.error(`[${pid}] failed to kill`, error);
|
|
70
74
|
}
|
|
71
75
|
}
|
|
72
76
|
}
|