@theia/core 1.44.0 → 1.45.0
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 +6 -6
- package/i18n/nls.cs.json +10 -3
- package/i18n/nls.de.json +10 -3
- package/i18n/nls.es.json +10 -3
- package/i18n/nls.fr.json +10 -3
- package/i18n/nls.hu.json +10 -3
- package/i18n/nls.it.json +10 -3
- package/i18n/nls.ja.json +10 -3
- package/i18n/nls.json +10 -3
- package/i18n/nls.pl.json +10 -3
- package/i18n/nls.pt-br.json +10 -3
- package/i18n/nls.pt-pt.json +10 -3
- package/i18n/nls.ru.json +10 -3
- package/i18n/nls.zh-cn.json +10 -3
- package/lib/browser/common-frontend-contribution.d.ts +6 -0
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +52 -9
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/connection-status-service.d.ts +2 -2
- package/lib/browser/connection-status-service.d.ts.map +1 -1
- package/lib/browser/connection-status-service.js +3 -3
- package/lib/browser/connection-status-service.js.map +1 -1
- package/lib/browser/connection-status-service.spec.js +6 -6
- package/lib/browser/connection-status-service.spec.js.map +1 -1
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +16 -0
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/dialogs.d.ts +0 -1
- package/lib/browser/dialogs.d.ts.map +1 -1
- package/lib/browser/dialogs.js +1 -34
- package/lib/browser/dialogs.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +1 -0
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/messaging/connection-source.d.ts +9 -0
- package/lib/browser/messaging/connection-source.d.ts.map +1 -0
- package/lib/browser/messaging/connection-source.js +20 -0
- package/lib/browser/messaging/connection-source.js.map +1 -0
- package/lib/browser/messaging/frontend-id-provider.d.ts +13 -0
- package/lib/browser/messaging/frontend-id-provider.d.ts.map +1 -0
- package/lib/browser/messaging/frontend-id-provider.js +40 -0
- package/lib/browser/messaging/frontend-id-provider.js.map +1 -0
- package/lib/browser/messaging/messaging-frontend-module.d.ts.map +1 -1
- package/lib/browser/messaging/messaging-frontend-module.js +18 -1
- package/lib/browser/messaging/messaging-frontend-module.js.map +1 -1
- package/lib/browser/messaging/service-connection-provider.d.ts +48 -0
- package/lib/browser/messaging/service-connection-provider.d.ts.map +1 -0
- package/lib/browser/messaging/service-connection-provider.js +115 -0
- package/lib/browser/messaging/service-connection-provider.js.map +1 -0
- package/lib/browser/messaging/ws-connection-provider.d.ts +7 -38
- package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.js +17 -121
- package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
- package/lib/browser/messaging/ws-connection-source.d.ts +41 -0
- package/lib/browser/messaging/ws-connection-source.d.ts.map +1 -0
- package/lib/browser/messaging/ws-connection-source.js +210 -0
- package/lib/browser/messaging/ws-connection-source.js.map +1 -0
- package/lib/browser/preload/i18n-preload-contribution.js +1 -1
- package/lib/browser/preload/i18n-preload-contribution.js.map +1 -1
- package/lib/browser/shell/application-shell.js +1 -1
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts +1 -0
- package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js +5 -0
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +6 -0
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +21 -11
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/user-working-directory-provider.d.ts +8 -1
- package/lib/browser/user-working-directory-provider.d.ts.map +1 -1
- package/lib/browser/user-working-directory-provider.js +22 -1
- package/lib/browser/user-working-directory-provider.js.map +1 -1
- package/lib/browser/window/default-secondary-window-service.d.ts +3 -0
- package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +55 -1
- package/lib/browser/window/default-secondary-window-service.js.map +1 -1
- package/lib/common/message-rpc/channel.d.ts.map +1 -1
- package/lib/common/message-rpc/channel.js +7 -1
- package/lib/common/message-rpc/channel.js.map +1 -1
- package/lib/common/message-rpc/message-buffer.d.ts +2 -0
- package/lib/common/message-rpc/message-buffer.d.ts.map +1 -1
- package/lib/common/message-rpc/message-buffer.js +4 -0
- package/lib/common/message-rpc/message-buffer.js.map +1 -1
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -1
- package/lib/common/message-rpc/uint8-array-message-buffer.js +6 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -1
- package/lib/common/messaging/connection-management.d.ts +25 -0
- package/lib/common/messaging/connection-management.d.ts.map +1 -0
- package/lib/common/messaging/connection-management.js +38 -0
- package/lib/common/messaging/connection-management.js.map +1 -0
- package/lib/common/messaging/handler.d.ts +1 -0
- package/lib/common/messaging/handler.d.ts.map +1 -1
- package/lib/common/messaging/handler.js +2 -1
- package/lib/common/messaging/handler.js.map +1 -1
- package/lib/common/messaging/socket-write-buffer.d.ts +11 -0
- package/lib/common/messaging/socket-write-buffer.d.ts.map +1 -0
- package/lib/common/messaging/socket-write-buffer.js +50 -0
- package/lib/common/messaging/socket-write-buffer.js.map +1 -0
- package/lib/common/messaging/web-socket-channel.d.ts +7 -35
- package/lib/common/messaging/web-socket-channel.d.ts.map +1 -1
- package/lib/common/messaging/web-socket-channel.js +20 -9
- package/lib/common/messaging/web-socket-channel.js.map +1 -1
- package/lib/electron-browser/messaging/electron-frontend-id-provider.d.ts +5 -0
- package/lib/electron-browser/messaging/electron-frontend-id-provider.d.ts.map +1 -0
- package/lib/{electron-node/token/electron-token-messaging-contribution.js → electron-browser/messaging/electron-frontend-id-provider.js} +9 -28
- package/lib/electron-browser/messaging/electron-frontend-id-provider.js.map +1 -0
- package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts +24 -0
- package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts.map +1 -0
- package/lib/electron-browser/messaging/{electron-ipc-connection-provider.js → electron-ipc-connection-source.js} +19 -19
- package/lib/electron-browser/messaging/electron-ipc-connection-source.js.map +1 -0
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.d.ts +7 -0
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.d.ts.map +1 -0
- package/lib/electron-browser/messaging/{electron-local-ws-connection-provider.js → electron-local-ws-connection-source.js} +7 -7
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.js.map +1 -0
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js +45 -13
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-source.d.ts +12 -0
- package/lib/electron-browser/messaging/electron-ws-connection-source.d.ts.map +1 -0
- package/lib/electron-browser/messaging/{electron-ws-connection-provider.js → electron-ws-connection-source.js} +14 -21
- package/lib/electron-browser/messaging/electron-ws-connection-source.js.map +1 -0
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +10 -0
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +2 -2
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts +4 -0
- package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +13 -0
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +6 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +3 -1
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/electron-main/electron-api-main.d.ts +1 -0
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +15 -0
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application-module.js +5 -5
- package/lib/electron-main/electron-main-application-module.js.map +1 -1
- package/lib/electron-main/electron-main-application.d.ts +7 -13
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +36 -26
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/messaging/electron-connection-handler.d.ts.map +1 -0
- package/lib/electron-main/messaging/electron-connection-handler.js.map +1 -0
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +13 -22
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.js +39 -39
- package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-service.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-service.js.map +1 -1
- package/lib/electron-main/theia-electron-window.d.ts +2 -2
- package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
- package/lib/electron-main/theia-electron-window.js +3 -2
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/lib/node/messaging/default-messaging-service.d.ts +29 -0
- package/lib/node/messaging/default-messaging-service.d.ts.map +1 -0
- package/lib/node/messaging/default-messaging-service.js +140 -0
- package/lib/node/messaging/default-messaging-service.js.map +1 -0
- package/lib/node/messaging/frontend-connection-service.d.ts +7 -0
- package/lib/node/messaging/frontend-connection-service.d.ts.map +1 -0
- package/lib/node/messaging/frontend-connection-service.js +19 -0
- package/lib/node/messaging/frontend-connection-service.js.map +1 -0
- package/lib/node/messaging/messaging-backend-module.d.ts.map +1 -1
- package/lib/node/messaging/messaging-backend-module.js +23 -9
- package/lib/node/messaging/messaging-backend-module.js.map +1 -1
- package/lib/node/messaging/messaging-service.d.ts +2 -3
- package/lib/node/messaging/messaging-service.d.ts.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.d.ts +3 -3
- package/lib/node/messaging/test/test-web-socket-channel.d.ts.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.js +38 -24
- package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
- package/lib/node/messaging/websocket-endpoint.d.ts +21 -0
- package/lib/node/messaging/websocket-endpoint.d.ts.map +1 -0
- package/lib/node/messaging/websocket-endpoint.js +89 -0
- package/lib/node/messaging/websocket-endpoint.js.map +1 -0
- package/lib/node/messaging/websocket-frontend-connection-service.d.ts +30 -0
- package/lib/node/messaging/websocket-frontend-connection-service.d.ts.map +1 -0
- package/lib/node/messaging/websocket-frontend-connection-service.js +173 -0
- package/lib/node/messaging/websocket-frontend-connection-service.js.map +1 -0
- package/package.json +6 -6
- package/src/browser/common-frontend-contribution.ts +55 -9
- package/src/browser/connection-status-service.spec.ts +6 -6
- package/src/browser/connection-status-service.ts +2 -2
- package/src/browser/core-preferences.ts +16 -0
- package/src/browser/dialogs.ts +0 -34
- package/src/browser/frontend-application-module.ts +1 -0
- package/src/browser/messaging/connection-source.ts +26 -0
- package/src/browser/messaging/frontend-id-provider.ts +37 -0
- package/src/browser/messaging/messaging-frontend-module.ts +20 -2
- package/src/browser/messaging/service-connection-provider.ts +126 -0
- package/src/browser/messaging/ws-connection-provider.ts +16 -141
- package/src/browser/messaging/ws-connection-source.ts +210 -0
- package/src/browser/preload/i18n-preload-contribution.ts +1 -1
- package/src/browser/shell/application-shell.ts +1 -1
- package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +27 -7
- package/src/browser/tree/tree-widget.tsx +21 -10
- package/src/browser/user-working-directory-provider.ts +32 -3
- package/src/browser/window/default-secondary-window-service.ts +54 -1
- package/src/common/i18n/nls.metadata.json +7208 -6923
- package/src/common/message-rpc/channel.ts +5 -1
- package/src/common/message-rpc/message-buffer.ts +6 -0
- package/src/common/message-rpc/uint8-array-message-buffer.ts +7 -0
- package/src/common/messaging/connection-management.ts +43 -0
- package/src/common/messaging/handler.ts +2 -0
- package/src/common/messaging/socket-write-buffer.ts +52 -0
- package/src/common/messaging/web-socket-channel.ts +28 -45
- package/src/electron-browser/messaging/electron-frontend-id-provider.ts +25 -0
- package/src/electron-browser/messaging/{electron-ipc-connection-provider.ts → electron-ipc-connection-source.ts} +17 -13
- package/src/electron-browser/messaging/{electron-local-ws-connection-provider.ts → electron-local-ws-connection-source.ts} +2 -2
- package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +49 -12
- package/src/electron-browser/messaging/{electron-ws-connection-provider.ts → electron-ws-connection-source.ts} +6 -17
- package/src/electron-browser/preload.ts +15 -1
- package/src/electron-browser/window/electron-window-module.ts +1 -1
- package/src/electron-browser/window/electron-window-service.ts +11 -0
- package/src/electron-common/electron-api.ts +7 -0
- package/src/electron-main/electron-api-main.ts +20 -1
- package/src/electron-main/electron-main-application-module.ts +5 -5
- package/src/electron-main/electron-main-application.ts +46 -41
- package/src/electron-main/messaging/electron-messaging-contribution.ts +45 -43
- package/src/electron-main/messaging/electron-messaging-service.ts +1 -0
- package/src/electron-main/theia-electron-window.ts +4 -3
- package/src/node/messaging/default-messaging-service.ts +129 -0
- package/src/node/messaging/frontend-connection-service.ts +24 -0
- package/src/node/messaging/messaging-backend-module.ts +25 -10
- package/src/node/messaging/messaging-service.ts +3 -3
- package/src/node/messaging/test/test-web-socket-channel.ts +32 -27
- package/src/node/messaging/websocket-endpoint.ts +79 -0
- package/src/node/messaging/websocket-frontend-connection-service.ts +171 -0
- package/lib/common/messaging/abstract-connection-provider.d.ts +0 -45
- package/lib/common/messaging/abstract-connection-provider.d.ts.map +0 -1
- package/lib/common/messaging/abstract-connection-provider.js +0 -93
- package/lib/common/messaging/abstract-connection-provider.js.map +0 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts +0 -19
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts.map +0 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +0 -1
- package/lib/electron-browser/messaging/electron-local-ws-connection-provider.d.ts +0 -7
- package/lib/electron-browser/messaging/electron-local-ws-connection-provider.d.ts.map +0 -1
- package/lib/electron-browser/messaging/electron-local-ws-connection-provider.js.map +0 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts +0 -17
- package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts.map +0 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.js.map +0 -1
- package/lib/electron-common/messaging/electron-connection-handler.d.ts.map +0 -1
- package/lib/electron-common/messaging/electron-connection-handler.js.map +0 -1
- package/lib/electron-node/token/electron-token-messaging-contribution.d.ts +0 -16
- package/lib/electron-node/token/electron-token-messaging-contribution.d.ts.map +0 -1
- package/lib/electron-node/token/electron-token-messaging-contribution.js.map +0 -1
- package/lib/node/messaging/messaging-contribution.d.ts +0 -44
- package/lib/node/messaging/messaging-contribution.d.ts.map +0 -1
- package/lib/node/messaging/messaging-contribution.js +0 -210
- package/lib/node/messaging/messaging-contribution.js.map +0 -1
- package/src/common/messaging/abstract-connection-provider.ts +0 -115
- package/src/electron-node/token/electron-token-messaging-contribution.ts +0 -41
- package/src/node/messaging/messaging-contribution.ts +0 -197
- /package/lib/{electron-common → electron-main}/messaging/electron-connection-handler.d.ts +0 -0
- /package/lib/{electron-common → electron-main}/messaging/electron-connection-handler.js +0 -0
- /package/src/{electron-common → electron-main}/messaging/electron-connection-handler.ts +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @theia/runtime-import-check */
|
|
1
2
|
// *****************************************************************************
|
|
2
3
|
// Copyright (C) 2018 TypeFox and others.
|
|
3
4
|
//
|
|
@@ -17,40 +18,44 @@
|
|
|
17
18
|
import * as http from 'http';
|
|
18
19
|
import * as https from 'https';
|
|
19
20
|
import { AddressInfo } from 'net';
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
21
|
+
import { servicesPath } from '../../../common';
|
|
22
|
+
import { WebSocketConnectionSource } from '../../../browser/messaging/ws-connection-source';
|
|
23
|
+
import { Container, inject } from 'inversify';
|
|
24
|
+
import { RemoteConnectionProvider, ServiceConnectionProvider } from '../../../browser/messaging/service-connection-provider';
|
|
25
|
+
import { messagingFrontendModule } from '../../../browser/messaging/messaging-frontend-module';
|
|
26
|
+
import { Socket, io } from 'socket.io-client';
|
|
27
|
+
|
|
28
|
+
const websocketUrl = Symbol('testWebsocketUrl');
|
|
29
|
+
class TestWebsocketConnectionSource extends WebSocketConnectionSource {
|
|
30
|
+
@inject(websocketUrl)
|
|
31
|
+
readonly websocketUrl: string;
|
|
32
|
+
|
|
33
|
+
protected override createWebSocketUrl(path: string): string {
|
|
34
|
+
return this.websocketUrl;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
protected override createWebSocket(url: string): Socket {
|
|
38
|
+
return io(url);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
23
41
|
|
|
24
42
|
export class TestWebSocketChannelSetup {
|
|
25
|
-
public readonly
|
|
26
|
-
public readonly channel: Channel;
|
|
43
|
+
public readonly connectionProvider: ServiceConnectionProvider;
|
|
27
44
|
|
|
28
45
|
constructor({ server, path }: {
|
|
29
46
|
server: http.Server | https.Server,
|
|
30
47
|
path: string
|
|
31
48
|
}) {
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
this.
|
|
35
|
-
socket.on('connect', () => {
|
|
36
|
-
this.multiplexer.open(path);
|
|
37
|
-
});
|
|
38
|
-
socket.connect();
|
|
49
|
+
const address = (server.address() as AddressInfo);
|
|
50
|
+
const url = `ws://${address.address}:${address.port}${servicesPath}`;
|
|
51
|
+
this.connectionProvider = this.createConnectionProvider(url);
|
|
39
52
|
}
|
|
40
|
-
}
|
|
41
53
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
},
|
|
50
|
-
isConnected: () => socket.connected,
|
|
51
|
-
onClose: cb => socket.on('disconnect', reason => cb(reason)),
|
|
52
|
-
onError: cb => socket.on('error', reason => cb(reason)),
|
|
53
|
-
onMessage: cb => socket.on('message', data => cb(data)),
|
|
54
|
-
send: message => socket.emit('message', message)
|
|
55
|
-
};
|
|
54
|
+
protected createConnectionProvider(socketUrl: string): ServiceConnectionProvider {
|
|
55
|
+
const container = new Container();
|
|
56
|
+
container.bind(websocketUrl).toConstantValue(socketUrl);
|
|
57
|
+
container.load(messagingFrontendModule);
|
|
58
|
+
container.rebind(WebSocketConnectionSource).to(TestWebsocketConnectionSource);
|
|
59
|
+
return container.get(RemoteConnectionProvider);
|
|
60
|
+
}
|
|
56
61
|
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2023 STMicroelectronics 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
|
+
import { MessagingService } from './messaging-service';
|
|
17
|
+
import * as http from 'http';
|
|
18
|
+
import * as https from 'https';
|
|
19
|
+
import { inject, injectable } from 'inversify';
|
|
20
|
+
import { Server, Socket } from 'socket.io';
|
|
21
|
+
import { WsRequestValidator } from '../ws-request-validators';
|
|
22
|
+
import { MessagingListener } from './messaging-listeners';
|
|
23
|
+
import { ConnectionHandlers } from './default-messaging-service';
|
|
24
|
+
import { BackendApplicationContribution } from '../backend-application';
|
|
25
|
+
|
|
26
|
+
@injectable()
|
|
27
|
+
export class WebsocketEndpoint implements BackendApplicationContribution {
|
|
28
|
+
@inject(WsRequestValidator)
|
|
29
|
+
protected readonly wsRequestValidator: WsRequestValidator;
|
|
30
|
+
|
|
31
|
+
@inject(MessagingListener)
|
|
32
|
+
protected readonly messagingListener: MessagingListener;
|
|
33
|
+
|
|
34
|
+
protected checkAliveTimeout = 30000; // 30 seconds
|
|
35
|
+
protected maxHttpBufferSize = 1e8; // 100 MB
|
|
36
|
+
|
|
37
|
+
protected readonly wsHandlers = new ConnectionHandlers<Socket>();
|
|
38
|
+
|
|
39
|
+
registerConnectionHandler(spec: string, callback: (params: MessagingService.PathParams, socket: Socket) => void): void {
|
|
40
|
+
this.wsHandlers.push(spec, callback);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
onStart(server: http.Server | https.Server): void {
|
|
44
|
+
const socketServer = new Server(server, {
|
|
45
|
+
pingInterval: this.checkAliveTimeout,
|
|
46
|
+
pingTimeout: this.checkAliveTimeout * 2,
|
|
47
|
+
maxHttpBufferSize: this.maxHttpBufferSize
|
|
48
|
+
});
|
|
49
|
+
// Accept every namespace by using /.*/
|
|
50
|
+
socketServer.of(/.*/).on('connection', async socket => {
|
|
51
|
+
const request = socket.request;
|
|
52
|
+
// Socket.io strips the `origin` header of the incoming request
|
|
53
|
+
// We provide a `fix-origin` header in the `WebSocketConnectionProvider`
|
|
54
|
+
request.headers.origin = request.headers['fix-origin'] as string;
|
|
55
|
+
if (await this.allowConnect(socket.request)) {
|
|
56
|
+
await this.handleConnection(socket);
|
|
57
|
+
this.messagingListener.onDidWebSocketUpgrade(socket.request, socket);
|
|
58
|
+
} else {
|
|
59
|
+
socket.disconnect(true);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
protected async allowConnect(request: http.IncomingMessage): Promise<boolean> {
|
|
65
|
+
try {
|
|
66
|
+
return this.wsRequestValidator.allowWsUpgrade(request);
|
|
67
|
+
} catch (e) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
protected async handleConnection(socket: Socket): Promise<void> {
|
|
73
|
+
const pathname = socket.nsp.name;
|
|
74
|
+
if (pathname && !this.wsHandlers.route(pathname, socket)) {
|
|
75
|
+
console.error('Cannot find a ws handler for the path: ' + pathname);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2023 STMicroelectronics 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
|
+
import { Channel, WriteBuffer } from '../../common/message-rpc';
|
|
17
|
+
import { MessagingService } from './messaging-service';
|
|
18
|
+
import { inject, injectable } from 'inversify';
|
|
19
|
+
import { Socket } from 'socket.io';
|
|
20
|
+
import { ConnectionHandlers } from './default-messaging-service';
|
|
21
|
+
import { SocketWriteBuffer } from '../../common/messaging/socket-write-buffer';
|
|
22
|
+
import { FrontendConnectionService } from './frontend-connection-service';
|
|
23
|
+
import { AbstractChannel } from '../../common/message-rpc/channel';
|
|
24
|
+
import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '../../common/message-rpc/uint8-array-message-buffer';
|
|
25
|
+
import { BackendApplicationConfigProvider } from '../backend-application-config-provider';
|
|
26
|
+
import { WebsocketEndpoint } from './websocket-endpoint';
|
|
27
|
+
import { ConnectionManagementMessages } from '../../common/messaging/connection-management';
|
|
28
|
+
import { Disposable, DisposableCollection } from '../../common';
|
|
29
|
+
|
|
30
|
+
@injectable()
|
|
31
|
+
export class WebsocketFrontendConnectionService implements FrontendConnectionService {
|
|
32
|
+
|
|
33
|
+
@inject(WebsocketEndpoint)
|
|
34
|
+
protected readonly websocketServer: WebsocketEndpoint;
|
|
35
|
+
|
|
36
|
+
protected readonly wsHandlers = new ConnectionHandlers();
|
|
37
|
+
protected readonly connectionsByFrontend = new Map<string, ReconnectableSocketChannel>();
|
|
38
|
+
protected readonly closeTimeouts = new Map<string, NodeJS.Timeout>();
|
|
39
|
+
protected readonly channelsMarkedForClose = new Set<string>();
|
|
40
|
+
|
|
41
|
+
registerConnectionHandler(spec: string, callback: (params: MessagingService.PathParams, channel: Channel) => void): void {
|
|
42
|
+
this.websocketServer.registerConnectionHandler(spec, (params, socket) => this.handleConnection(socket, channel => callback(params, channel)));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
protected async handleConnection(socket: Socket, channelCreatedHandler: (channel: Channel) => void): Promise<void> {
|
|
46
|
+
// eslint-disable-next-line prefer-const
|
|
47
|
+
let reconnectListener: (frontEndId: string) => void;
|
|
48
|
+
const initialConnectListener = (frontEndId: string) => {
|
|
49
|
+
socket.off(ConnectionManagementMessages.INITIAL_CONNECT, initialConnectListener);
|
|
50
|
+
socket.off(ConnectionManagementMessages.RECONNECT, reconnectListener);
|
|
51
|
+
if (this.connectionsByFrontend.has(frontEndId)) {
|
|
52
|
+
this.closeConnection(frontEndId, 'reconnecting same front end');
|
|
53
|
+
}
|
|
54
|
+
channelCreatedHandler(this.createConnection(socket, frontEndId));
|
|
55
|
+
socket.emit(ConnectionManagementMessages.INITIAL_CONNECT);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
reconnectListener = (frontEndId: string) => {
|
|
59
|
+
socket.off(ConnectionManagementMessages.INITIAL_CONNECT, initialConnectListener);
|
|
60
|
+
socket.off(ConnectionManagementMessages.RECONNECT, reconnectListener);
|
|
61
|
+
const channel = this.connectionsByFrontend.get(frontEndId);
|
|
62
|
+
if (channel) {
|
|
63
|
+
console.info(`Reconnecting to front end ${frontEndId}`);
|
|
64
|
+
socket.emit(ConnectionManagementMessages.RECONNECT, true);
|
|
65
|
+
channel.connect(socket);
|
|
66
|
+
const pendingTimeout = this.closeTimeouts.get(frontEndId);
|
|
67
|
+
clearTimeout(pendingTimeout);
|
|
68
|
+
this.closeTimeouts.delete(frontEndId);
|
|
69
|
+
} else {
|
|
70
|
+
console.info(`Reconnecting failed for ${frontEndId}`);
|
|
71
|
+
socket.emit(ConnectionManagementMessages.RECONNECT, false);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
socket.on(ConnectionManagementMessages.INITIAL_CONNECT, initialConnectListener);
|
|
75
|
+
socket.on(ConnectionManagementMessages.RECONNECT, reconnectListener);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
protected closeConnection(frontEndId: string, reason: string): void {
|
|
79
|
+
console.info(`closing connection for ${frontEndId}`);
|
|
80
|
+
const connection = this.connectionsByFrontend.get(frontEndId)!; // not called when no connection is present
|
|
81
|
+
|
|
82
|
+
this.connectionsByFrontend.delete(frontEndId);
|
|
83
|
+
|
|
84
|
+
const pendingTimeout = this.closeTimeouts.get(frontEndId);
|
|
85
|
+
clearTimeout(pendingTimeout);
|
|
86
|
+
this.closeTimeouts.delete(frontEndId);
|
|
87
|
+
|
|
88
|
+
connection.onCloseEmitter.fire({ reason });
|
|
89
|
+
connection.close();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
protected createConnection(socket: Socket, frontEndId: string): Channel {
|
|
93
|
+
console.info(`creating connection for ${frontEndId}`);
|
|
94
|
+
const channel = new ReconnectableSocketChannel();
|
|
95
|
+
channel.connect(socket);
|
|
96
|
+
|
|
97
|
+
socket.on('disconnect', evt => {
|
|
98
|
+
console.info('socked closed');
|
|
99
|
+
channel.disconnect();
|
|
100
|
+
const timeout = BackendApplicationConfigProvider.get().frontendConnectionTimeout;
|
|
101
|
+
const isMarkedForClose = this.channelsMarkedForClose.delete(frontEndId);
|
|
102
|
+
if (timeout === 0 || isMarkedForClose) {
|
|
103
|
+
this.closeConnection(frontEndId, evt);
|
|
104
|
+
} else if (timeout > 0) {
|
|
105
|
+
console.info(`setting close timeout for id ${frontEndId} to ${timeout}`);
|
|
106
|
+
const handle = setTimeout(() => {
|
|
107
|
+
this.closeConnection(frontEndId, evt);
|
|
108
|
+
}, timeout);
|
|
109
|
+
this.closeTimeouts.set(frontEndId, handle);
|
|
110
|
+
} else {
|
|
111
|
+
// timeout < 0: never close the back end
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
this.connectionsByFrontend.set(frontEndId, channel);
|
|
116
|
+
return channel;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
markForClose(channelId: string): void {
|
|
120
|
+
this.channelsMarkedForClose.add(channelId);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
class ReconnectableSocketChannel extends AbstractChannel {
|
|
125
|
+
private socket: Socket | undefined;
|
|
126
|
+
private socketBuffer = new SocketWriteBuffer();
|
|
127
|
+
private disposables = new DisposableCollection();
|
|
128
|
+
|
|
129
|
+
connect(socket: Socket): void {
|
|
130
|
+
this.disposables = new DisposableCollection();
|
|
131
|
+
this.socket = socket;
|
|
132
|
+
const errorHandler = (err: Error) => {
|
|
133
|
+
this.onErrorEmitter.fire(err);
|
|
134
|
+
};
|
|
135
|
+
this.disposables.push(Disposable.create(() => {
|
|
136
|
+
socket.off('error', errorHandler);
|
|
137
|
+
}));
|
|
138
|
+
socket.on('error', errorHandler);
|
|
139
|
+
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
141
|
+
const dataListener = (data: any) => {
|
|
142
|
+
// In the browser context socketIO receives binary messages as ArrayBuffers.
|
|
143
|
+
// So we have to convert them to a Uint8Array before delegating the message to the read buffer.
|
|
144
|
+
const buffer = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
|
|
145
|
+
this.onMessageEmitter.fire(() => new Uint8ArrayReadBuffer(buffer));
|
|
146
|
+
};
|
|
147
|
+
this.disposables.push(Disposable.create(() => {
|
|
148
|
+
socket.off('message', dataListener);
|
|
149
|
+
}));
|
|
150
|
+
socket.on('message', dataListener);
|
|
151
|
+
this.socketBuffer.flush(socket);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
disconnect(): void {
|
|
155
|
+
this.disposables.dispose();
|
|
156
|
+
this.socket = undefined;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
override getWriteBuffer(): WriteBuffer {
|
|
160
|
+
const writeBuffer = new Uint8ArrayWriteBuffer();
|
|
161
|
+
writeBuffer.onCommit(data => {
|
|
162
|
+
if (this.socket?.connected) {
|
|
163
|
+
this.socket.send(data);
|
|
164
|
+
} else {
|
|
165
|
+
this.socketBuffer.buffer(data);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return writeBuffer;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { interfaces } from 'inversify';
|
|
2
|
-
import { Emitter, Event } from '../event';
|
|
3
|
-
import { ConnectionHandler } from './handler';
|
|
4
|
-
import { RpcProxy, RpcProxyFactory } from './proxy-factory';
|
|
5
|
-
import { Channel, ChannelMultiplexer } from '../message-rpc/channel';
|
|
6
|
-
/**
|
|
7
|
-
* Factor common logic according to `ElectronIpcConnectionProvider` and
|
|
8
|
-
* `WebSocketConnectionProvider`. This class handles channels in a somewhat
|
|
9
|
-
* generic way.
|
|
10
|
-
*/
|
|
11
|
-
export declare abstract class AbstractConnectionProvider<AbstractOptions extends object> {
|
|
12
|
-
/**
|
|
13
|
-
* Create a proxy object to remote interface of T type
|
|
14
|
-
* over an electron ipc connection for the given path and proxy factory.
|
|
15
|
-
*/
|
|
16
|
-
static createProxy<T extends object>(container: interfaces.Container, path: string, factory: RpcProxyFactory<T>): RpcProxy<T>;
|
|
17
|
-
protected readonly onIncomingMessageActivityEmitter: Emitter<void>;
|
|
18
|
-
get onIncomingMessageActivity(): Event<void>;
|
|
19
|
-
/**
|
|
20
|
-
* Create a proxy object to remote interface of T type
|
|
21
|
-
* over a web socket connection for the given path and proxy factory.
|
|
22
|
-
*/
|
|
23
|
-
createProxy<T extends object>(path: string, factory: RpcProxyFactory<T>): RpcProxy<T>;
|
|
24
|
-
/**
|
|
25
|
-
* Create a proxy object to remote interface of T type
|
|
26
|
-
* over a web socket connection for the given path.
|
|
27
|
-
*
|
|
28
|
-
* An optional target can be provided to handle
|
|
29
|
-
* notifications and requests from a remote side.
|
|
30
|
-
*/
|
|
31
|
-
createProxy<T extends object>(path: string, target?: object): RpcProxy<T>;
|
|
32
|
-
protected channelMultiplexer?: ChannelMultiplexer;
|
|
33
|
-
protected reconnectChannelOpeners: Array<() => Promise<void>>;
|
|
34
|
-
protected initializeMultiplexer(): void;
|
|
35
|
-
/**
|
|
36
|
-
* Install a connection handler for the given path.
|
|
37
|
-
*/
|
|
38
|
-
listen(handler: ConnectionHandler, options?: AbstractOptions): void;
|
|
39
|
-
openChannel(path: string, handler: (channel: Channel) => void, options?: AbstractOptions): Promise<void>;
|
|
40
|
-
/**
|
|
41
|
-
* Create the main connection that is used for multiplexing all service channels.
|
|
42
|
-
*/
|
|
43
|
-
protected abstract createMainChannel(): Channel;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=abstract-connection-provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/common/messaging/abstract-connection-provider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAErE;;;;GAIG;AACH,8BACsB,0BAA0B,CAAC,eAAe,SAAS,MAAM;IAE3E;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAY7H,SAAS,CAAC,QAAQ,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAiB;IACnF,IAAI,yBAAyB,IAAI,KAAK,CAAC,IAAI,CAAC,CAE3C;IAED;;;OAGG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IACrF;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAUzE,SAAS,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAIlD,SAAS,CAAC,uBAAuB,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM;IAEnE,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAMvC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAM7D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAe9G;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO;CAElD"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// *****************************************************************************
|
|
3
|
-
// Copyright (C) 2020 Ericsson 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
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
18
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
19
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
20
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
|
-
};
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.AbstractConnectionProvider = void 0;
|
|
25
|
-
const inversify_1 = require("inversify");
|
|
26
|
-
const event_1 = require("../event");
|
|
27
|
-
const proxy_factory_1 = require("./proxy-factory");
|
|
28
|
-
const channel_1 = require("../message-rpc/channel");
|
|
29
|
-
/**
|
|
30
|
-
* Factor common logic according to `ElectronIpcConnectionProvider` and
|
|
31
|
-
* `WebSocketConnectionProvider`. This class handles channels in a somewhat
|
|
32
|
-
* generic way.
|
|
33
|
-
*/
|
|
34
|
-
let AbstractConnectionProvider = class AbstractConnectionProvider {
|
|
35
|
-
constructor() {
|
|
36
|
-
this.onIncomingMessageActivityEmitter = new event_1.Emitter();
|
|
37
|
-
// A set of channel opening functions that are executed if the backend reconnects to restore the
|
|
38
|
-
// the channels that were open before the disconnect occurred.
|
|
39
|
-
this.reconnectChannelOpeners = [];
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Create a proxy object to remote interface of T type
|
|
43
|
-
* over an electron ipc connection for the given path.
|
|
44
|
-
*
|
|
45
|
-
* An optional target can be provided to handle
|
|
46
|
-
* notifications and requests from a remote side.
|
|
47
|
-
*/
|
|
48
|
-
static createProxy(container, path, target) {
|
|
49
|
-
throw new Error('abstract');
|
|
50
|
-
}
|
|
51
|
-
get onIncomingMessageActivity() {
|
|
52
|
-
return this.onIncomingMessageActivityEmitter.event;
|
|
53
|
-
}
|
|
54
|
-
createProxy(path, arg) {
|
|
55
|
-
const factory = arg instanceof proxy_factory_1.RpcProxyFactory ? arg : new proxy_factory_1.RpcProxyFactory(arg);
|
|
56
|
-
this.listen({
|
|
57
|
-
path,
|
|
58
|
-
onConnection: c => factory.listen(c)
|
|
59
|
-
});
|
|
60
|
-
return factory.createProxy();
|
|
61
|
-
}
|
|
62
|
-
initializeMultiplexer() {
|
|
63
|
-
const mainChannel = this.createMainChannel();
|
|
64
|
-
mainChannel.onMessage(() => this.onIncomingMessageActivityEmitter.fire());
|
|
65
|
-
this.channelMultiplexer = new channel_1.ChannelMultiplexer(mainChannel);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Install a connection handler for the given path.
|
|
69
|
-
*/
|
|
70
|
-
listen(handler, options) {
|
|
71
|
-
this.openChannel(handler.path, channel => {
|
|
72
|
-
handler.onConnection(channel);
|
|
73
|
-
}, options);
|
|
74
|
-
}
|
|
75
|
-
async openChannel(path, handler, options) {
|
|
76
|
-
if (!this.channelMultiplexer) {
|
|
77
|
-
throw new Error('The channel multiplexer has not been initialized yet!');
|
|
78
|
-
}
|
|
79
|
-
const newChannel = await this.channelMultiplexer.open(path);
|
|
80
|
-
newChannel.onClose(() => {
|
|
81
|
-
const { reconnecting } = { reconnecting: true, ...options };
|
|
82
|
-
if (reconnecting) {
|
|
83
|
-
this.reconnectChannelOpeners.push(() => this.openChannel(path, handler, options));
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
handler(newChannel);
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
AbstractConnectionProvider = __decorate([
|
|
90
|
-
(0, inversify_1.injectable)()
|
|
91
|
-
], AbstractConnectionProvider);
|
|
92
|
-
exports.AbstractConnectionProvider = AbstractConnectionProvider;
|
|
93
|
-
//# sourceMappingURL=abstract-connection-provider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-connection-provider.js","sourceRoot":"","sources":["../../../src/common/messaging/abstract-connection-provider.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;;;;;;;;;AAEhF,yCAAmD;AACnD,oCAA0C;AAE1C,mDAA4D;AAC5D,oDAAqE;AAErE;;;;GAIG;AAEH,IAAsB,0BAA0B,GAAhD,MAAsB,0BAA0B;IAAhD;QAkBuB,qCAAgC,GAAkB,IAAI,eAAO,EAAE,CAAC;QA6BnF,gGAAgG;QAChG,8DAA8D;QACpD,4BAAuB,GAA+B,EAAE,CAAC;IAqCvE,CAAC;IA/EG;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAmB,SAA+B,EAAE,IAAY,EAAE,MAAe;QAC/F,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAGD,IAAI,yBAAyB;QACzB,OAAO,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC;IACvD,CAAC;IAeD,WAAW,CAAmB,IAAY,EAAE,GAAY;QACpD,MAAM,OAAO,GAAG,GAAG,YAAY,+BAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,+BAAe,CAAI,GAAG,CAAC,CAAC;QACnF,IAAI,CAAC,MAAM,CAAC;YACR,IAAI;YACJ,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;SACvC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IAQS,qBAAqB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7C,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,kBAAkB,GAAG,IAAI,4BAAkB,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAA0B,EAAE,OAAyB;QACxD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YACrC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,EAAE,OAAO,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,OAAmC,EAAE,OAAyB;QAC1F,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC5E;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE;YACpB,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;YAC5D,IAAI,YAAY,EAAE;gBACd,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;aACrF;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;CAOJ,CAAA;AAtFqB,0BAA0B;IAD/C,IAAA,sBAAU,GAAE;GACS,0BAA0B,CAsF/C;AAtFqB,gEAA0B"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { interfaces } from 'inversify';
|
|
2
|
-
import { RpcProxy } from '../../common/messaging';
|
|
3
|
-
import { AbstractConnectionProvider } from '../../common/messaging/abstract-connection-provider';
|
|
4
|
-
import { AbstractChannel, Channel, WriteBuffer } from '../../common';
|
|
5
|
-
export interface ElectronIpcOptions {
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Connection provider between the Theia frontend and the electron-main process via IPC.
|
|
9
|
-
*/
|
|
10
|
-
export declare class ElectronIpcConnectionProvider extends AbstractConnectionProvider<ElectronIpcOptions> {
|
|
11
|
-
static createProxy<T extends object>(container: interfaces.Container, path: string, arg?: object): RpcProxy<T>;
|
|
12
|
-
constructor();
|
|
13
|
-
protected createMainChannel(): Channel;
|
|
14
|
-
}
|
|
15
|
-
export declare class ElectronIpcRendererChannel extends AbstractChannel {
|
|
16
|
-
constructor();
|
|
17
|
-
getWriteBuffer(): WriteBuffer;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=electron-ipc-connection-provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-ipc-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-ipc-connection-provider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAc,UAAU,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGrE,MAAM,WAAW,kBAAkB;CAClC;AAED;;GAEG;AACH,qBACa,6BAA8B,SAAQ,0BAA0B,CAAC,kBAAkB,CAAC;WAE7E,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;;IASvH,SAAS,CAAC,iBAAiB,IAAI,OAAO;CAIzC;AAED,qBAAa,0BAA2B,SAAQ,eAAe;;IAQ3D,cAAc,IAAI,WAAW;CAMhC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-ipc-connection-provider.js","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-ipc-connection-provider.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,yCAAmD;AAEnD,sGAAiG;AACjG,yCAAqE;AACrE,oGAAkH;AAKlH;;GAEG;AAEH,IAAa,6BAA6B,qCAA1C,MAAa,6BAA8B,SAAQ,yDAA8C;IAE7F,MAAM,CAAU,WAAW,CAAmB,SAA+B,EAAE,IAAY,EAAE,GAAY;QACrG,OAAO,SAAS,CAAC,GAAG,CAAC,+BAA6B,CAAC,CAAC,WAAW,CAAI,IAAI,EAAE,GAAG,CAAC,CAAC;IAClF,CAAC;IAED;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAES,iBAAiB;QACvB,OAAO,IAAI,0BAA0B,EAAE,CAAC;IAC5C,CAAC;CAEJ,CAAA;AAfY,6BAA6B;IADzC,IAAA,sBAAU,GAAE;;GACA,6BAA6B,CAezC;AAfY,sEAA6B;AAiB1C,MAAa,0BAA2B,SAAQ,wBAAe;IAE3D;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,iDAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnI,CAAC;IAED,cAAc;QACV,MAAM,MAAM,GAAG,IAAI,kDAAqB,EAAE,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC;IAClB,CAAC;CAEJ;AAdD,gEAcC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { WebSocketConnectionProvider } from '../../browser/messaging/ws-connection-provider';
|
|
2
|
-
import { Endpoint } from '../../browser/endpoint';
|
|
3
|
-
export declare function getLocalPort(): string | undefined;
|
|
4
|
-
export declare class ElectronLocalWebSocketConnectionProvider extends WebSocketConnectionProvider {
|
|
5
|
-
protected createEndpoint(path: string): Endpoint;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=electron-local-ws-connection-provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-local-ws-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-local-ws-connection-provider.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAGjD;AAED,qBACa,wCAAyC,SAAQ,2BAA2B;cAElE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ;CAgB5D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-local-ws-connection-provider.js","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-local-ws-connection-provider.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,yCAAuC;AACvC,2FAA6F;AAC7F,qDAAkD;AAElD,SAAgB,YAAY;;IACxB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO,MAAA,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,mCAAI,SAAS,CAAC;AAChD,CAAC;AAHD,oCAGC;AAGD,IAAa,wCAAwC,GAArD,MAAa,wCAAyC,SAAQ,oDAA2B;IAElE,cAAc,CAAC,IAAY;QAC1C,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SAC1F;QACD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC;YAC1B,IAAI;SACP,EAAE;YACC,IAAI,EAAE,aAAa,SAAS,EAAE;YAC9B,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,EAAE;SACb,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IACpB,CAAC;CAEJ,CAAA;AAlBY,wCAAwC;IADpD,IAAA,sBAAU,GAAE;GACA,wCAAwC,CAkBpD;AAlBY,4FAAwC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { WebSocketConnectionProvider, WebSocketOptions } from '../../browser/messaging/ws-connection-provider';
|
|
2
|
-
import { FrontendApplicationContribution } from '../../browser/frontend-application-contribution';
|
|
3
|
-
import { Channel } from '../../common';
|
|
4
|
-
/**
|
|
5
|
-
* Customized connection provider between the frontend and the backend in electron environment.
|
|
6
|
-
* This customized connection provider makes sure the websocket connection does not try to reconnect
|
|
7
|
-
* once the electron-browser window is refreshed. Otherwise, backend resources are not disposed.
|
|
8
|
-
*/
|
|
9
|
-
export declare class ElectronWebSocketConnectionProvider extends WebSocketConnectionProvider implements FrontendApplicationContribution {
|
|
10
|
-
/**
|
|
11
|
-
* Do not try to reconnect when the frontend application is stopping. The browser is navigating away from this page.
|
|
12
|
-
*/
|
|
13
|
-
protected stopping: boolean;
|
|
14
|
-
onStop(): void;
|
|
15
|
-
openChannel(path: string, handler: (channel: Channel) => void, options?: WebSocketOptions): Promise<void>;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=electron-ws-connection-provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-ws-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-ws-connection-provider.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAC/G,OAAO,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAClG,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;GAIG;AACH,qBACa,mCAAoC,SAAQ,2BAA4B,YAAW,+BAA+B;IAE3H;;OAEG;IACH,SAAS,CAAC,QAAQ,UAAS;IAE3B,MAAM,IAAI,IAAI;IAQC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAM3H"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-ws-connection-provider.js","sourceRoot":"","sources":["../../../src/electron-browser/messaging/electron-ws-connection-provider.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,yCAAuC;AACvC,2FAA+G;AAI/G;;;;GAIG;AAEH,IAAa,mCAAmC,GAAhD,MAAa,mCAAoC,SAAQ,oDAA2B;IAApF;;QAEI;;WAEG;QACO,aAAQ,GAAG,KAAK,CAAC;IAgB/B,CAAC;IAdG,MAAM;;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,2JAA2J;QAC3J,qDAAqD;QACrD,iIAAiI;QACjI,MAAA,IAAI,CAAC,kBAAkB,0CAAE,wBAAwB,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9G,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,OAAmC,EAAE,OAA0B;QACpG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC7C;IACL,CAAC;CAEJ,CAAA;AArBY,mCAAmC;IAD/C,IAAA,sBAAU,GAAE;GACA,mCAAmC,CAqB/C;AArBY,kFAAmC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-connection-handler.d.ts","sourceRoot":"","sources":["../../../src/electron-common/messaging/electron-connection-handler.ts"],"names":[],"mappings":"AAgBA;;;GAGG;AACH,eAAO,MAAM,yBAAyB,eAAsC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-connection-handler.js","sourceRoot":"","sources":["../../../src/electron-common/messaging/electron-connection-handler.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;;;AAEhF;;;GAGG;AACU,QAAA,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import * as http from 'http';
|
|
3
|
-
import { MessagingContribution } from '../../node/messaging/messaging-contribution';
|
|
4
|
-
import { ElectronTokenValidator } from './electron-token-validator';
|
|
5
|
-
/**
|
|
6
|
-
* Override the browser MessagingContribution class to refuse connections that do not include a specific token.
|
|
7
|
-
* @deprecated since 1.8.0
|
|
8
|
-
*/
|
|
9
|
-
export declare class ElectronMessagingContribution extends MessagingContribution {
|
|
10
|
-
protected readonly tokenValidator: ElectronTokenValidator;
|
|
11
|
-
/**
|
|
12
|
-
* Only allow token-bearers.
|
|
13
|
-
*/
|
|
14
|
-
protected allowConnect(request: http.IncomingMessage): Promise<boolean>;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=electron-token-messaging-contribution.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-token-messaging-contribution.d.ts","sourceRoot":"","sources":["../../../src/electron-node/token/electron-token-messaging-contribution.ts"],"names":[],"mappings":";AAgBA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE;;;GAGG;AACH,qBACa,6BAA8B,SAAQ,qBAAqB;IAGpE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAE1D;;OAEG;cACsB,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;CAMzF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"electron-token-messaging-contribution.js","sourceRoot":"","sources":["../../../src/electron-node/token/electron-token-messaging-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,yCAA+C;AAC/C,wFAAoF;AACpF,yEAAoE;AAEpE;;;GAGG;AAEH,IAAa,6BAA6B,GAA1C,MAAa,6BAA8B,SAAQ,8CAAqB;IAKpE;;OAEG;IACgB,KAAK,CAAC,YAAY,CAAC,OAA6B;QAC/D,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YAC3C,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACtC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ,CAAA;AAXG;IADC,IAAA,kBAAM,EAAC,iDAAsB,CAAC;8BACI,iDAAsB;qEAAC;AAHjD,6BAA6B;IADzC,IAAA,sBAAU,GAAE;GACA,6BAA6B,CAczC;AAdY,sEAA6B"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import * as http from 'http';
|
|
3
|
-
import * as https from 'https';
|
|
4
|
-
import { Socket } from 'socket.io';
|
|
5
|
-
import { interfaces, Container } from 'inversify';
|
|
6
|
-
import { ContributionProvider } from '../../common';
|
|
7
|
-
import { IWebSocket } from '../../common/messaging/web-socket-channel';
|
|
8
|
-
import { BackendApplicationContribution } from '../backend-application';
|
|
9
|
-
import { MessagingService } from './messaging-service';
|
|
10
|
-
import { WsRequestValidator } from '../ws-request-validators';
|
|
11
|
-
import { MessagingListener } from './messaging-listeners';
|
|
12
|
-
import { Channel } from '../../common/message-rpc/channel';
|
|
13
|
-
export declare const MessagingContainer: unique symbol;
|
|
14
|
-
export declare class MessagingContribution implements BackendApplicationContribution, MessagingService {
|
|
15
|
-
protected readonly container: interfaces.Container;
|
|
16
|
-
protected readonly connectionModules: ContributionProvider<interfaces.ContainerModule>;
|
|
17
|
-
protected readonly contributions: ContributionProvider<MessagingService.Contribution>;
|
|
18
|
-
protected readonly wsRequestValidator: WsRequestValidator;
|
|
19
|
-
protected readonly messagingListener: MessagingListener;
|
|
20
|
-
protected readonly wsHandlers: MessagingContribution.ConnectionHandlers<Socket<import("socket.io/dist/typed-events").DefaultEventsMap, import("socket.io/dist/typed-events").DefaultEventsMap, import("socket.io/dist/typed-events").DefaultEventsMap, any>>;
|
|
21
|
-
protected readonly channelHandlers: MessagingContribution.ConnectionHandlers<Channel>;
|
|
22
|
-
protected init(): void;
|
|
23
|
-
wsChannel(spec: string, callback: (params: MessagingService.PathParams, channel: Channel) => void): void;
|
|
24
|
-
ws(spec: string, callback: (params: MessagingService.PathParams, socket: Socket) => void): void;
|
|
25
|
-
protected checkAliveTimeout: number;
|
|
26
|
-
protected maxHttpBufferSize: number;
|
|
27
|
-
onStart(server: http.Server | https.Server): void;
|
|
28
|
-
protected handleConnection(socket: Socket): Promise<void>;
|
|
29
|
-
protected allowConnect(request: http.IncomingMessage): Promise<boolean>;
|
|
30
|
-
protected handleChannels(socket: Socket): void;
|
|
31
|
-
protected toIWebSocket(socket: Socket): IWebSocket;
|
|
32
|
-
protected createSocketContainer(socket: Socket): Container;
|
|
33
|
-
protected getConnectionChannelHandlers(socket: Socket): MessagingContribution.ConnectionHandlers<Channel>;
|
|
34
|
-
}
|
|
35
|
-
export declare namespace MessagingContribution {
|
|
36
|
-
class ConnectionHandlers<T> {
|
|
37
|
-
protected readonly parent?: ConnectionHandlers<T> | undefined;
|
|
38
|
-
protected readonly handlers: ((path: string, connection: T) => string | false)[];
|
|
39
|
-
constructor(parent?: ConnectionHandlers<T> | undefined);
|
|
40
|
-
push(spec: string, callback: (params: MessagingService.PathParams, connection: T) => void): void;
|
|
41
|
-
route(path: string, connection: T): string | false;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=messaging-contribution.d.ts.map
|