@theia/core 1.26.0-next.34 → 1.26.0-next.35
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 +3 -4
- package/lib/browser/messaging/ws-connection-provider.d.ts +6 -6
- package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.js +32 -32
- package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
- package/lib/browser/progress-status-bar-item.d.ts +1 -1
- package/lib/browser/progress-status-bar-item.d.ts.map +1 -1
- package/lib/common/cancellation.d.ts +1 -0
- package/lib/common/cancellation.d.ts.map +1 -1
- package/lib/common/cancellation.js +8 -0
- package/lib/common/cancellation.js.map +1 -1
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +1 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/message-rpc/channel.d.ts +103 -0
- package/lib/common/message-rpc/channel.d.ts.map +1 -0
- package/lib/common/message-rpc/channel.js +184 -0
- package/lib/common/message-rpc/channel.js.map +1 -0
- package/lib/common/message-rpc/channel.spec.d.ts +9 -0
- package/lib/common/message-rpc/channel.spec.d.ts.map +1 -0
- package/lib/common/message-rpc/channel.spec.js +80 -0
- package/lib/common/message-rpc/channel.spec.js.map +1 -0
- package/lib/common/message-rpc/index.d.ts +4 -0
- package/lib/common/message-rpc/index.d.ts.map +1 -0
- package/lib/{node/messaging/logger.js → common/message-rpc/index.js} +6 -19
- package/lib/common/message-rpc/index.js.map +1 -0
- package/lib/common/message-rpc/message-buffer.d.ts +50 -0
- package/lib/common/message-rpc/message-buffer.d.ts.map +1 -0
- package/lib/common/message-rpc/message-buffer.js +56 -0
- package/lib/common/message-rpc/message-buffer.js.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.d.ts +159 -0
- package/lib/common/message-rpc/rpc-message-encoder.d.ts.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.js +362 -0
- package/lib/common/message-rpc/rpc-message-encoder.js.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts +2 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.js +37 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.js.map +1 -0
- package/lib/common/message-rpc/rpc-protocol.d.ts +59 -0
- package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -0
- package/lib/common/message-rpc/rpc-protocol.js +177 -0
- package/lib/common/message-rpc/rpc-protocol.js.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts +52 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.js +169 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts +2 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.js +39 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.js.map +1 -0
- package/lib/common/messaging/abstract-connection-provider.d.ts +9 -8
- package/lib/common/messaging/abstract-connection-provider.d.ts.map +1 -1
- package/lib/common/messaging/abstract-connection-provider.js +18 -36
- package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
- package/lib/common/messaging/connection-error-handler.d.ts +1 -2
- package/lib/common/messaging/connection-error-handler.d.ts.map +1 -1
- package/lib/common/messaging/connection-error-handler.js +1 -1
- package/lib/common/messaging/connection-error-handler.js.map +1 -1
- package/lib/common/messaging/handler.d.ts +2 -2
- package/lib/common/messaging/handler.d.ts.map +1 -1
- package/lib/common/messaging/proxy-factory.d.ts +13 -7
- package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/common/messaging/proxy-factory.js +14 -13
- package/lib/common/messaging/proxy-factory.js.map +1 -1
- package/lib/common/messaging/proxy-factory.spec.js +4 -15
- package/lib/common/messaging/proxy-factory.spec.js.map +1 -1
- package/lib/common/messaging/web-socket-channel.d.ts +52 -48
- package/lib/common/messaging/web-socket-channel.d.ts.map +1 -1
- package/lib/common/messaging/web-socket-channel.js +42 -105
- package/lib/common/messaging/web-socket-channel.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts +2 -3
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.js +20 -15
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts +2 -2
- package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.js +4 -7
- package/lib/electron-browser/messaging/electron-ws-connection-provider.js.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +37 -9
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.js +83 -68
- package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-service.d.ts +2 -8
- 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/node/messaging/binary-message-pipe.d.ts +45 -0
- package/lib/node/messaging/binary-message-pipe.d.ts.map +1 -0
- package/lib/node/messaging/binary-message-pipe.js +152 -0
- package/lib/node/messaging/binary-message-pipe.js.map +1 -0
- package/lib/node/messaging/ipc-bootstrap.js +2 -11
- package/lib/node/messaging/ipc-bootstrap.js.map +1 -1
- package/lib/node/messaging/ipc-channel.d.ts +26 -0
- package/lib/node/messaging/ipc-channel.d.ts.map +1 -0
- package/lib/node/messaging/ipc-channel.js +87 -0
- package/lib/node/messaging/ipc-channel.js.map +1 -0
- package/lib/node/messaging/ipc-connection-provider.d.ts +3 -5
- package/lib/node/messaging/ipc-connection-provider.d.ts.map +1 -1
- package/lib/node/messaging/ipc-connection-provider.js +14 -31
- package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
- package/lib/node/messaging/ipc-protocol.d.ts +2 -2
- package/lib/node/messaging/ipc-protocol.d.ts.map +1 -1
- package/lib/node/messaging/messaging-contribution.d.ts +6 -9
- package/lib/node/messaging/messaging-contribution.d.ts.map +1 -1
- package/lib/node/messaging/messaging-contribution.js +23 -68
- package/lib/node/messaging/messaging-contribution.js.map +1 -1
- package/lib/node/messaging/messaging-service.d.ts +4 -23
- package/lib/node/messaging/messaging-service.d.ts.map +1 -1
- package/lib/node/messaging/messaging-service.js +1 -15
- package/lib/node/messaging/messaging-service.js.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.d.ts +4 -2
- package/lib/node/messaging/test/test-web-socket-channel.d.ts.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.js +25 -12
- package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
- package/package.json +4 -6
- package/src/browser/messaging/ws-connection-provider.ts +28 -25
- package/src/browser/progress-status-bar-item.ts +1 -1
- package/src/common/cancellation.ts +8 -0
- package/src/common/index.ts +1 -0
- package/src/common/message-rpc/channel.spec.ts +88 -0
- package/src/common/message-rpc/channel.ts +248 -0
- package/src/{node/messaging/logger.ts → common/message-rpc/index.ts} +4 -23
- package/src/common/message-rpc/message-buffer.ts +99 -0
- package/src/common/message-rpc/rpc-message-encoder.spec.ts +42 -0
- package/src/common/message-rpc/rpc-message-encoder.ts +497 -0
- package/src/common/message-rpc/rpc-protocol.ts +212 -0
- package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -0
- package/src/common/message-rpc/uint8-array-message-buffer.ts +206 -0
- package/src/common/messaging/abstract-connection-provider.ts +23 -38
- package/src/common/messaging/connection-error-handler.ts +1 -2
- package/src/common/messaging/handler.ts +2 -2
- package/src/common/messaging/proxy-factory.spec.ts +4 -17
- package/src/common/messaging/proxy-factory.ts +23 -14
- package/src/common/messaging/web-socket-channel.ts +79 -136
- package/src/electron-browser/messaging/electron-ipc-connection-provider.ts +21 -11
- package/src/electron-browser/messaging/electron-ws-connection-provider.ts +5 -8
- package/src/electron-main/messaging/electron-messaging-contribution.ts +87 -65
- package/src/electron-main/messaging/electron-messaging-service.ts +2 -8
- package/src/node/messaging/binary-message-pipe.ts +168 -0
- package/src/node/messaging/ipc-bootstrap.ts +3 -11
- package/src/node/messaging/ipc-channel.ts +98 -0
- package/src/node/messaging/ipc-connection-provider.ts +18 -35
- package/src/node/messaging/ipc-protocol.ts +2 -2
- package/src/node/messaging/messaging-contribution.ts +29 -74
- package/src/node/messaging/messaging-service.ts +4 -31
- package/src/node/messaging/test/test-web-socket-channel.ts +26 -17
- package/lib/node/messaging/logger.d.ts +0 -8
- package/lib/node/messaging/logger.d.ts.map +0 -1
- package/lib/node/messaging/logger.js.map +0 -1
- package/shared/vscode-ws-jsonrpc/index.d.ts +0 -1
- package/shared/vscode-ws-jsonrpc/index.js +0 -1
package/README.md
CHANGED
|
@@ -86,9 +86,9 @@ export class SomeClass {
|
|
|
86
86
|
- `@phosphor/signaling` (from [`@phosphor/signaling@1`](https://www.npmjs.com/package/@phosphor/signaling))
|
|
87
87
|
- `@phosphor/virtualdom` (from [`@phosphor/virtualdom@1`](https://www.npmjs.com/package/@phosphor/virtualdom))
|
|
88
88
|
- `@phosphor/widgets` (from [`@phosphor/widgets@1`](https://www.npmjs.com/package/@phosphor/widgets))
|
|
89
|
-
- `@theia/application-package` (from [`@theia/application-package@1.26.0-next.
|
|
90
|
-
- `@theia/application-package/lib/api` (from [`@theia/application-package@1.26.0-next.
|
|
91
|
-
- `@theia/application-package/lib/environment` (from [`@theia/application-package@1.26.0-next.
|
|
89
|
+
- `@theia/application-package` (from [`@theia/application-package@1.26.0-next.35+0ec8075c1ef`](https://www.npmjs.com/package/@theia/application-package/v/1.26.0-next.35))
|
|
90
|
+
- `@theia/application-package/lib/api` (from [`@theia/application-package@1.26.0-next.35+0ec8075c1ef`](https://www.npmjs.com/package/@theia/application-package/v/1.26.0-next.35))
|
|
91
|
+
- `@theia/application-package/lib/environment` (from [`@theia/application-package@1.26.0-next.35+0ec8075c1ef`](https://www.npmjs.com/package/@theia/application-package/v/1.26.0-next.35))
|
|
92
92
|
- `fs-extra` (from [`fs-extra@^4.0.2`](https://www.npmjs.com/package/fs-extra))
|
|
93
93
|
- `fuzzy` (from [`fuzzy@^0.1.3`](https://www.npmjs.com/package/fuzzy))
|
|
94
94
|
- `inversify` (from [`inversify@^5.1.1`](https://www.npmjs.com/package/inversify))
|
|
@@ -96,7 +96,6 @@ export class SomeClass {
|
|
|
96
96
|
- `react-virtualized` (from [`react-virtualized@^9.20.0`](https://www.npmjs.com/package/react-virtualized))
|
|
97
97
|
- `vscode-languageserver-protocol` (from [`vscode-languageserver-protocol@~3.15.3`](https://www.npmjs.com/package/vscode-languageserver-protocol))
|
|
98
98
|
- `vscode-uri` (from [`vscode-uri@^2.1.1`](https://www.npmjs.com/package/vscode-uri))
|
|
99
|
-
- `vscode-ws-jsonrpc` (from [`vscode-ws-jsonrpc@^0.2.0`](https://www.npmjs.com/package/vscode-ws-jsonrpc))
|
|
100
99
|
- `dompurify` (from [`dompurify@^2.2.9`](https://www.npmjs.com/package/dompurify))
|
|
101
100
|
- `express` (from [`express@^4.16.3`](https://www.npmjs.com/package/express))
|
|
102
101
|
- `lodash.debounce` (from [`lodash.debounce@^4.0.8`](https://www.npmjs.com/package/lodash.debounce))
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { interfaces } from 'inversify';
|
|
2
|
-
import { JsonRpcProxy, Emitter, Event } from '../../common';
|
|
3
|
-
import { WebSocketChannel } from '../../common/messaging/web-socket-channel';
|
|
2
|
+
import { JsonRpcProxy, Emitter, Event, Channel } from '../../common';
|
|
4
3
|
import { AbstractConnectionProvider } from '../../common/messaging/abstract-connection-provider';
|
|
5
4
|
import { Socket } from 'socket.io-client';
|
|
5
|
+
import { IWebSocket } from '../../common/messaging/web-socket-channel';
|
|
6
6
|
export interface WebSocketOptions {
|
|
7
7
|
/**
|
|
8
8
|
* True by default.
|
|
@@ -11,14 +11,14 @@ export interface WebSocketOptions {
|
|
|
11
11
|
}
|
|
12
12
|
export declare class WebSocketConnectionProvider extends AbstractConnectionProvider<WebSocketOptions> {
|
|
13
13
|
protected readonly onSocketDidOpenEmitter: Emitter<void>;
|
|
14
|
+
protected socket: Socket;
|
|
14
15
|
get onSocketDidOpen(): Event<void>;
|
|
15
16
|
protected readonly onSocketDidCloseEmitter: Emitter<void>;
|
|
16
17
|
get onSocketDidClose(): Event<void>;
|
|
17
18
|
static createProxy<T extends object>(container: interfaces.Container, path: string, arg?: object): JsonRpcProxy<T>;
|
|
18
|
-
protected
|
|
19
|
-
|
|
20
|
-
openChannel(path: string, handler: (channel:
|
|
21
|
-
protected createChannel(id: number): WebSocketChannel;
|
|
19
|
+
protected createMainChannel(): Channel;
|
|
20
|
+
protected toIWebSocket(socket: Socket): IWebSocket;
|
|
21
|
+
openChannel(path: string, handler: (channel: Channel) => void, options?: WebSocketOptions): Promise<void>;
|
|
22
22
|
/**
|
|
23
23
|
* @param path The handler to reach in the backend.
|
|
24
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/browser/messaging/ws-connection-provider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAc,UAAU,EAAuB,MAAM,WAAW,CAAC;AACxE,OAAO,EAAuB,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ws-connection-provider.d.ts","sourceRoot":"","sources":["../../../src/browser/messaging/ws-connection-provider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAc,UAAU,EAAuB,MAAM,WAAW,CAAC;AACxE,OAAO,EAAuB,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,EAAM,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAoB,MAAM,2CAA2C,CAAC;AAKzF,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBACa,2BAA4B,SAAQ,0BAA0B,CAAC,gBAAgB,CAAC;IAEzF,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAiB;IAEzE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,IAAI,eAAe,IAAI,KAAK,CAAC,IAAI,CAAC,CAEjC;IAED,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAiB;IAC1E,IAAI,gBAAgB,IAAI,KAAK,CAAC,IAAI,CAAC,CAElC;WAEe,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IAI3H,SAAS,CAAC,iBAAiB,IAAI,OAAO;IActC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAgBnC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxH;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAMlD,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAItD;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAe9C;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAW7D,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAInC,SAAS,CAAC,kBAAkB,IAAI,IAAI;CAGvC"}
|
|
@@ -20,41 +20,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
20
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
21
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
22
|
};
|
|
23
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
24
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
25
|
-
};
|
|
26
23
|
var WebSocketConnectionProvider_1;
|
|
27
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
25
|
exports.WebSocketConnectionProvider = void 0;
|
|
29
26
|
const inversify_1 = require("inversify");
|
|
30
27
|
const common_1 = require("../../common");
|
|
31
|
-
const web_socket_channel_1 = require("../../common/messaging/web-socket-channel");
|
|
32
28
|
const endpoint_1 = require("../endpoint");
|
|
33
29
|
const abstract_connection_provider_1 = require("../../common/messaging/abstract-connection-provider");
|
|
34
30
|
const socket_io_client_1 = require("socket.io-client");
|
|
31
|
+
const web_socket_channel_1 = require("../../common/messaging/web-socket-channel");
|
|
35
32
|
(0, inversify_1.decorate)((0, inversify_1.injectable)(), common_1.JsonRpcProxyFactory);
|
|
36
33
|
(0, inversify_1.decorate)((0, inversify_1.unmanaged)(), common_1.JsonRpcProxyFactory, 0);
|
|
37
34
|
let WebSocketConnectionProvider = WebSocketConnectionProvider_1 = class WebSocketConnectionProvider extends abstract_connection_provider_1.AbstractConnectionProvider {
|
|
38
35
|
constructor() {
|
|
39
|
-
super();
|
|
36
|
+
super(...arguments);
|
|
40
37
|
this.onSocketDidOpenEmitter = new common_1.Emitter();
|
|
41
38
|
this.onSocketDidCloseEmitter = new common_1.Emitter();
|
|
42
|
-
const url = this.createWebSocketUrl(web_socket_channel_1.WebSocketChannel.wsPath);
|
|
43
|
-
const socket = this.createWebSocket(url);
|
|
44
|
-
socket.on('connect', () => {
|
|
45
|
-
this.fireSocketDidOpen();
|
|
46
|
-
});
|
|
47
|
-
socket.on('disconnect', reason => {
|
|
48
|
-
for (const channel of [...this.channels.values()]) {
|
|
49
|
-
channel.close(undefined, reason);
|
|
50
|
-
}
|
|
51
|
-
this.fireSocketDidClose();
|
|
52
|
-
});
|
|
53
|
-
socket.on('message', data => {
|
|
54
|
-
this.handleIncomingRawMessage(data);
|
|
55
|
-
});
|
|
56
|
-
socket.connect();
|
|
57
|
-
this.socket = socket;
|
|
58
39
|
}
|
|
59
40
|
get onSocketDidOpen() {
|
|
60
41
|
return this.onSocketDidOpenEmitter.event;
|
|
@@ -65,9 +46,36 @@ let WebSocketConnectionProvider = WebSocketConnectionProvider_1 = class WebSocke
|
|
|
65
46
|
static createProxy(container, path, arg) {
|
|
66
47
|
return container.get(WebSocketConnectionProvider_1).createProxy(path, arg);
|
|
67
48
|
}
|
|
68
|
-
|
|
49
|
+
createMainChannel() {
|
|
50
|
+
const url = this.createWebSocketUrl(web_socket_channel_1.WebSocketChannel.wsPath);
|
|
51
|
+
const socket = this.createWebSocket(url);
|
|
52
|
+
const channel = new web_socket_channel_1.WebSocketChannel(this.toIWebSocket(socket));
|
|
53
|
+
socket.on('connect', () => {
|
|
54
|
+
this.fireSocketDidOpen();
|
|
55
|
+
});
|
|
56
|
+
channel.onClose(() => this.fireSocketDidClose());
|
|
57
|
+
socket.connect();
|
|
58
|
+
this.socket = socket;
|
|
59
|
+
return channel;
|
|
60
|
+
}
|
|
61
|
+
toIWebSocket(socket) {
|
|
62
|
+
return {
|
|
63
|
+
close: () => {
|
|
64
|
+
socket.removeAllListeners('disconnect');
|
|
65
|
+
socket.removeAllListeners('error');
|
|
66
|
+
socket.removeAllListeners('message');
|
|
67
|
+
socket.close();
|
|
68
|
+
},
|
|
69
|
+
isConnected: () => socket.connected,
|
|
70
|
+
onClose: cb => socket.on('disconnect', reason => cb(reason)),
|
|
71
|
+
onError: cb => socket.on('error', reason => cb(reason)),
|
|
72
|
+
onMessage: cb => socket.on('message', data => cb(data)),
|
|
73
|
+
send: message => socket.emit('message', message)
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async openChannel(path, handler, options) {
|
|
69
77
|
if (this.socket.connected) {
|
|
70
|
-
super.openChannel(path, handler, options);
|
|
78
|
+
return super.openChannel(path, handler, options);
|
|
71
79
|
}
|
|
72
80
|
else {
|
|
73
81
|
const openChannel = () => {
|
|
@@ -77,13 +85,6 @@ let WebSocketConnectionProvider = WebSocketConnectionProvider_1 = class WebSocke
|
|
|
77
85
|
this.socket.on('connect', openChannel);
|
|
78
86
|
}
|
|
79
87
|
}
|
|
80
|
-
createChannel(id) {
|
|
81
|
-
return new web_socket_channel_1.WebSocketChannel(id, content => {
|
|
82
|
-
if (this.socket.connected) {
|
|
83
|
-
this.socket.send(content);
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
88
|
/**
|
|
88
89
|
* @param path The handler to reach in the backend.
|
|
89
90
|
*/
|
|
@@ -133,8 +134,7 @@ let WebSocketConnectionProvider = WebSocketConnectionProvider_1 = class WebSocke
|
|
|
133
134
|
}
|
|
134
135
|
};
|
|
135
136
|
WebSocketConnectionProvider = WebSocketConnectionProvider_1 = __decorate([
|
|
136
|
-
(0, inversify_1.injectable)()
|
|
137
|
-
__metadata("design:paramtypes", [])
|
|
137
|
+
(0, inversify_1.injectable)()
|
|
138
138
|
], WebSocketConnectionProvider);
|
|
139
139
|
exports.WebSocketConnectionProvider = WebSocketConnectionProvider;
|
|
140
140
|
//# sourceMappingURL=ws-connection-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-connection-provider.js","sourceRoot":"","sources":["../../../src/browser/messaging/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,2EAA2E;AAC3E,gFAAgF
|
|
1
|
+
{"version":3,"file":"ws-connection-provider.js","sourceRoot":"","sources":["../../../src/browser/messaging/ws-connection-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="lodash" />
|
|
2
|
-
import { CancellationToken } from 'vscode-
|
|
2
|
+
import { CancellationToken } from '../../shared/vscode-languageserver-protocol';
|
|
3
3
|
import { ProgressClient, ProgressMessage, ProgressUpdate } from '../common';
|
|
4
4
|
import { StatusBar } from './status-bar';
|
|
5
5
|
export declare class ProgressStatusBarItem implements ProgressClient {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progress-status-bar-item.d.ts","sourceRoot":"","sources":["../../src/browser/progress-status-bar-item.ts"],"names":[],"mappings":";AAiBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"progress-status-bar-item.d.ts","sourceRoot":"","sources":["../../src/browser/progress-status-bar-item.ts"],"names":[],"mappings":";AAiBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAsB,MAAM,cAAc,CAAC;AAI7D,qBACa,qBAAsB,YAAW,cAAc;IAExD,SAAS,CAAC,QAAQ,CAAC,EAAE,oCAAoC;IAGzD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAExC,SAAS,CAAC,kBAAkB,kCAAyC;IAErE,SAAS,CAAC,aAAa,WAAuB;IAE9C,IAAI,eAAe,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAU7H,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAW3F,SAAS,CAAC,QAAQ,CAAC,aAAa,6CAA6F;IAEvH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxJ,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAczD"}
|
|
@@ -6,6 +6,7 @@ export interface CancellationToken {
|
|
|
6
6
|
export declare namespace CancellationToken {
|
|
7
7
|
const None: CancellationToken;
|
|
8
8
|
const Cancelled: CancellationToken;
|
|
9
|
+
function is(value: any): value is CancellationToken;
|
|
9
10
|
}
|
|
10
11
|
export declare class CancellationError extends Error {
|
|
11
12
|
constructor();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancellation.d.ts","sourceRoot":"","sources":["../../src/common/cancellation.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,EAAW,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAK1C,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CACjD;AAWD,yBAAiB,iBAAiB,CAAC;IAExB,MAAM,IAAI,EAAE,iBAGjB,CAAC;IAEI,MAAM,SAAS,EAAE,iBAGtB,CAAC;
|
|
1
|
+
{"version":3,"file":"cancellation.d.ts","sourceRoot":"","sources":["../../src/common/cancellation.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,EAAW,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAK1C,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;CACjD;AAWD,yBAAiB,iBAAiB,CAAC;IAExB,MAAM,IAAI,EAAE,iBAGjB,CAAC;IAEI,MAAM,SAAS,EAAE,iBAGtB,CAAC;IAGH,SAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,iBAAiB,CAKzD;CACJ;AAED,qBAAa,iBAAkB,SAAQ,KAAK;;CAK3C;AAgCD,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,MAAM,CAAoB;IAElC,IAAI,KAAK,IAAI,iBAAiB,CAO7B;IAED,MAAM,IAAI,IAAI;IAWd,OAAO,IAAI,IAAI;CAGlB;AAID,wBAAgB,SAAS,IAAI,KAAK,CAEjC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAE3D;AAED,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAI9D"}
|
|
@@ -39,6 +39,14 @@ var CancellationToken;
|
|
|
39
39
|
isCancellationRequested: true,
|
|
40
40
|
onCancellationRequested: shortcutEvent
|
|
41
41
|
});
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
function is(value) {
|
|
44
|
+
const candidate = value;
|
|
45
|
+
return candidate && (candidate === CancellationToken.None
|
|
46
|
+
|| candidate === CancellationToken.Cancelled
|
|
47
|
+
|| (typeof candidate.isCancellationRequested === 'boolean' && !!candidate.onCancellationRequested));
|
|
48
|
+
}
|
|
49
|
+
CancellationToken.is = is;
|
|
42
50
|
})(CancellationToken = exports.CancellationToken || (exports.CancellationToken = {}));
|
|
43
51
|
class CancellationError extends Error {
|
|
44
52
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../../src/common/cancellation.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,2EAA2E;AAC3E,gFAAgF;AAChF;;;gGAGgG;;;AAEhG,mCAAyC;AAWzC,8DAA8D;AAC9D,MAAM,aAAa,GAAgB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,QAAa,EAAE,OAAa;IACjG,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,EAAE,OAAO,KAAW,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC,EAAE;IACC,IAAI,YAAY,KAAa,OAAO,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,YAAY,CAAC,YAAoB,IAAI,CAAC;CAC7C,CAAC,CAAC,CAAC;AAEJ,IAAiB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../../src/common/cancellation.ts"],"names":[],"mappings":"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"}
|
package/lib/common/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * from './contribution-provider';
|
|
|
13
13
|
export * from './path';
|
|
14
14
|
export * from './logger';
|
|
15
15
|
export * from './messaging';
|
|
16
|
+
export * from './message-rpc';
|
|
16
17
|
export * from './message-service';
|
|
17
18
|
export * from './message-service-protocol';
|
|
18
19
|
export * from './progress-service';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAgBA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAgBA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,MAAM,CAAC;AACrB,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
package/lib/common/index.js
CHANGED
|
@@ -41,6 +41,7 @@ __exportStar(require("./contribution-provider"), exports);
|
|
|
41
41
|
__exportStar(require("./path"), exports);
|
|
42
42
|
__exportStar(require("./logger"), exports);
|
|
43
43
|
__exportStar(require("./messaging"), exports);
|
|
44
|
+
__exportStar(require("./message-rpc"), exports);
|
|
44
45
|
__exportStar(require("./message-service"), exports);
|
|
45
46
|
__exportStar(require("./message-service-protocol"), exports);
|
|
46
47
|
__exportStar(require("./progress-service"), exports);
|
package/lib/common/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/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,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;;AAEhF,0CAAwB;AACxB,+CAA6B;AAC7B,8CAA4B;AAC5B,0CAAwB;AACxB,iDAA+B;AAC/B,4CAA0B;AAC1B,yCAAuB;AACvB,sDAAoC;AACpC,4CAA0B;AAC1B,uCAAqB;AACrB,6CAA2B;AAC3B,0DAAwC;AACxC,yCAAuB;AACvB,2CAAyB;AACzB,8CAA4B;AAC5B,oDAAkC;AAClC,6DAA2C;AAC3C,qDAAmC;AACnC,8DAA4C;AAC5C,8CAA4B;AAC5B,4CAA0B;AAC1B,sDAAoC;AACpC,8CAA4B;AAC5B,wDAAsC;AACtC,wCAAsB;AACtB,4CAA0B;AAC1B,gDAA8B;AAE9B,4EAAyE;AAChE,4FADA,yBAAW,OACA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/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,2EAA2E;AAC3E,gFAAgF;;;;;;;;;;;;;AAEhF,0CAAwB;AACxB,+CAA6B;AAC7B,8CAA4B;AAC5B,0CAAwB;AACxB,iDAA+B;AAC/B,4CAA0B;AAC1B,yCAAuB;AACvB,sDAAoC;AACpC,4CAA0B;AAC1B,uCAAqB;AACrB,6CAA2B;AAC3B,0DAAwC;AACxC,yCAAuB;AACvB,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B;AAC9B,oDAAkC;AAClC,6DAA2C;AAC3C,qDAAmC;AACnC,8DAA4C;AAC5C,8CAA4B;AAC5B,4CAA0B;AAC1B,sDAAoC;AACpC,8CAA4B;AAC5B,wDAAsC;AACtC,wCAAsB;AACtB,4CAA0B;AAC1B,gDAA8B;AAE9B,4EAAyE;AAChE,4FADA,yBAAW,OACA"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Emitter, Event } from '../event';
|
|
2
|
+
import { ReadBuffer, WriteBuffer } from './message-buffer';
|
|
3
|
+
/**
|
|
4
|
+
* A channel is a bidirectional communications channel with lifecycle and
|
|
5
|
+
* error signalling. Note that creation of channels is specific to particular
|
|
6
|
+
* implementations and thus not part of the protocol.
|
|
7
|
+
*/
|
|
8
|
+
export interface Channel {
|
|
9
|
+
/**
|
|
10
|
+
* The remote side has closed the channel
|
|
11
|
+
*/
|
|
12
|
+
onClose: Event<ChannelCloseEvent>;
|
|
13
|
+
/**
|
|
14
|
+
* An error has occurred while writing to or reading from the channel
|
|
15
|
+
*/
|
|
16
|
+
onError: Event<unknown>;
|
|
17
|
+
/**
|
|
18
|
+
* A message has arrived and can be read by listeners using a {@link MessageProvider}.
|
|
19
|
+
*/
|
|
20
|
+
onMessage: Event<MessageProvider>;
|
|
21
|
+
/**
|
|
22
|
+
* Obtain a {@link WriteBuffer} to write a message to the channel.
|
|
23
|
+
*/
|
|
24
|
+
getWriteBuffer(): WriteBuffer;
|
|
25
|
+
/**
|
|
26
|
+
* Close this channel. No {@link onClose} event should be sent
|
|
27
|
+
*/
|
|
28
|
+
close(): void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The event that is emitted when a channel is closed from the remote side.
|
|
32
|
+
*/
|
|
33
|
+
export interface ChannelCloseEvent {
|
|
34
|
+
reason: string;
|
|
35
|
+
code?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The `MessageProvider` is emitted when a channel receives a new message.
|
|
39
|
+
* Listeners can invoke the provider to obtain a new {@link ReadBuffer} for the received message.
|
|
40
|
+
* This ensures that each listener has its own isolated {@link ReadBuffer} instance.
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
export declare type MessageProvider = () => ReadBuffer;
|
|
44
|
+
/**
|
|
45
|
+
* Helper class to implement the single channels on a {@link ChannelMultiplexer}. Simply forwards write requests to
|
|
46
|
+
* the given write buffer source i.e. the main channel of the {@link ChannelMultiplexer}.
|
|
47
|
+
*/
|
|
48
|
+
export declare class ForwardingChannel implements Channel {
|
|
49
|
+
readonly id: string;
|
|
50
|
+
protected readonly closeHandler: () => void;
|
|
51
|
+
protected readonly writeBufferSource: () => WriteBuffer;
|
|
52
|
+
constructor(id: string, closeHandler: () => void, writeBufferSource: () => WriteBuffer);
|
|
53
|
+
onCloseEmitter: Emitter<ChannelCloseEvent>;
|
|
54
|
+
get onClose(): Event<ChannelCloseEvent>;
|
|
55
|
+
onErrorEmitter: Emitter<unknown>;
|
|
56
|
+
get onError(): Event<unknown>;
|
|
57
|
+
onMessageEmitter: Emitter<MessageProvider>;
|
|
58
|
+
get onMessage(): Event<MessageProvider>;
|
|
59
|
+
getWriteBuffer(): WriteBuffer;
|
|
60
|
+
send(message: Uint8Array): void;
|
|
61
|
+
close(): void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The different message types used in the messaging protocol of the {@link ChannelMultiplexer}
|
|
65
|
+
*/
|
|
66
|
+
export declare enum MessageTypes {
|
|
67
|
+
Open = 1,
|
|
68
|
+
Close = 2,
|
|
69
|
+
AckOpen = 3,
|
|
70
|
+
Data = 4
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The write buffers in this implementation immediately write to the underlying
|
|
74
|
+
* channel, so we rely on writers to the multiplexed channels to always commit their
|
|
75
|
+
* messages and always in one go.
|
|
76
|
+
*/
|
|
77
|
+
export declare class ChannelMultiplexer {
|
|
78
|
+
protected readonly underlyingChannel: Channel;
|
|
79
|
+
protected pendingOpen: Map<string, (channel: ForwardingChannel) => void>;
|
|
80
|
+
protected openChannels: Map<string, ForwardingChannel>;
|
|
81
|
+
protected readonly onOpenChannelEmitter: Emitter<{
|
|
82
|
+
id: string;
|
|
83
|
+
channel: Channel;
|
|
84
|
+
}>;
|
|
85
|
+
get onDidOpenChannel(): Event<{
|
|
86
|
+
id: string;
|
|
87
|
+
channel: Channel;
|
|
88
|
+
}>;
|
|
89
|
+
constructor(underlyingChannel: Channel);
|
|
90
|
+
protected handleError(error: unknown): void;
|
|
91
|
+
closeUnderlyingChannel(event?: ChannelCloseEvent): void;
|
|
92
|
+
protected handleMessage(buffer: ReadBuffer): void;
|
|
93
|
+
protected handleAckOpen(id: string): void;
|
|
94
|
+
protected handleOpen(id: string): void;
|
|
95
|
+
protected handleClose(id: string): void;
|
|
96
|
+
protected handleData(id: string, data: ReadBuffer): void;
|
|
97
|
+
protected createChannel(id: string): ForwardingChannel;
|
|
98
|
+
protected prepareWriteBuffer(id: string): WriteBuffer;
|
|
99
|
+
protected closeChannel(id: string): void;
|
|
100
|
+
open(id: string): Promise<Channel>;
|
|
101
|
+
getOpenChannel(id: string): Channel | undefined;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../src/common/message-rpc/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2021 Red Hat, Inc. 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 WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ChannelMultiplexer = exports.MessageTypes = exports.ForwardingChannel = void 0;
|
|
19
|
+
const event_1 = require("../event");
|
|
20
|
+
;
|
|
21
|
+
/**
|
|
22
|
+
* Helper class to implement the single channels on a {@link ChannelMultiplexer}. Simply forwards write requests to
|
|
23
|
+
* the given write buffer source i.e. the main channel of the {@link ChannelMultiplexer}.
|
|
24
|
+
*/
|
|
25
|
+
class ForwardingChannel {
|
|
26
|
+
constructor(id, closeHandler, writeBufferSource) {
|
|
27
|
+
this.id = id;
|
|
28
|
+
this.closeHandler = closeHandler;
|
|
29
|
+
this.writeBufferSource = writeBufferSource;
|
|
30
|
+
this.onCloseEmitter = new event_1.Emitter();
|
|
31
|
+
this.onErrorEmitter = new event_1.Emitter();
|
|
32
|
+
this.onMessageEmitter = new event_1.Emitter();
|
|
33
|
+
}
|
|
34
|
+
get onClose() {
|
|
35
|
+
return this.onCloseEmitter.event;
|
|
36
|
+
}
|
|
37
|
+
;
|
|
38
|
+
get onError() {
|
|
39
|
+
return this.onErrorEmitter.event;
|
|
40
|
+
}
|
|
41
|
+
;
|
|
42
|
+
get onMessage() {
|
|
43
|
+
return this.onMessageEmitter.event;
|
|
44
|
+
}
|
|
45
|
+
;
|
|
46
|
+
getWriteBuffer() {
|
|
47
|
+
return this.writeBufferSource();
|
|
48
|
+
}
|
|
49
|
+
send(message) {
|
|
50
|
+
const writeBuffer = this.getWriteBuffer();
|
|
51
|
+
writeBuffer.writeBytes(message);
|
|
52
|
+
writeBuffer.commit();
|
|
53
|
+
}
|
|
54
|
+
close() {
|
|
55
|
+
this.closeHandler();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.ForwardingChannel = ForwardingChannel;
|
|
59
|
+
/**
|
|
60
|
+
* The different message types used in the messaging protocol of the {@link ChannelMultiplexer}
|
|
61
|
+
*/
|
|
62
|
+
var MessageTypes;
|
|
63
|
+
(function (MessageTypes) {
|
|
64
|
+
MessageTypes[MessageTypes["Open"] = 1] = "Open";
|
|
65
|
+
MessageTypes[MessageTypes["Close"] = 2] = "Close";
|
|
66
|
+
MessageTypes[MessageTypes["AckOpen"] = 3] = "AckOpen";
|
|
67
|
+
MessageTypes[MessageTypes["Data"] = 4] = "Data";
|
|
68
|
+
})(MessageTypes = exports.MessageTypes || (exports.MessageTypes = {}));
|
|
69
|
+
/**
|
|
70
|
+
* The write buffers in this implementation immediately write to the underlying
|
|
71
|
+
* channel, so we rely on writers to the multiplexed channels to always commit their
|
|
72
|
+
* messages and always in one go.
|
|
73
|
+
*/
|
|
74
|
+
class ChannelMultiplexer {
|
|
75
|
+
constructor(underlyingChannel) {
|
|
76
|
+
this.underlyingChannel = underlyingChannel;
|
|
77
|
+
this.pendingOpen = new Map();
|
|
78
|
+
this.openChannels = new Map();
|
|
79
|
+
this.onOpenChannelEmitter = new event_1.Emitter();
|
|
80
|
+
this.underlyingChannel.onMessage(buffer => this.handleMessage(buffer()));
|
|
81
|
+
this.underlyingChannel.onClose(event => this.closeUnderlyingChannel(event));
|
|
82
|
+
this.underlyingChannel.onError(error => this.handleError(error));
|
|
83
|
+
}
|
|
84
|
+
get onDidOpenChannel() {
|
|
85
|
+
return this.onOpenChannelEmitter.event;
|
|
86
|
+
}
|
|
87
|
+
handleError(error) {
|
|
88
|
+
this.openChannels.forEach(channel => {
|
|
89
|
+
channel.onErrorEmitter.fire(error);
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
closeUnderlyingChannel(event) {
|
|
93
|
+
this.pendingOpen.clear();
|
|
94
|
+
this.openChannels.forEach(channel => {
|
|
95
|
+
channel.onCloseEmitter.fire(event !== null && event !== void 0 ? event : { reason: 'Multiplexer main channel has been closed from the remote side!' });
|
|
96
|
+
});
|
|
97
|
+
this.openChannels.clear();
|
|
98
|
+
}
|
|
99
|
+
handleMessage(buffer) {
|
|
100
|
+
const type = buffer.readUint8();
|
|
101
|
+
const id = buffer.readString();
|
|
102
|
+
switch (type) {
|
|
103
|
+
case MessageTypes.AckOpen: {
|
|
104
|
+
return this.handleAckOpen(id);
|
|
105
|
+
}
|
|
106
|
+
case MessageTypes.Open: {
|
|
107
|
+
return this.handleOpen(id);
|
|
108
|
+
}
|
|
109
|
+
case MessageTypes.Close: {
|
|
110
|
+
return this.handleClose(id);
|
|
111
|
+
}
|
|
112
|
+
case MessageTypes.Data: {
|
|
113
|
+
return this.handleData(id, buffer.sliceAtReadPosition());
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
handleAckOpen(id) {
|
|
118
|
+
// edge case: both side try to open a channel at the same time.
|
|
119
|
+
const resolve = this.pendingOpen.get(id);
|
|
120
|
+
if (resolve) {
|
|
121
|
+
const channel = this.createChannel(id);
|
|
122
|
+
this.pendingOpen.delete(id);
|
|
123
|
+
this.openChannels.set(id, channel);
|
|
124
|
+
resolve(channel);
|
|
125
|
+
this.onOpenChannelEmitter.fire({ id, channel });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
handleOpen(id) {
|
|
129
|
+
if (!this.openChannels.has(id)) {
|
|
130
|
+
const channel = this.createChannel(id);
|
|
131
|
+
this.openChannels.set(id, channel);
|
|
132
|
+
const resolve = this.pendingOpen.get(id);
|
|
133
|
+
if (resolve) {
|
|
134
|
+
// edge case: both side try to open a channel at the same time.
|
|
135
|
+
resolve(channel);
|
|
136
|
+
}
|
|
137
|
+
this.underlyingChannel.getWriteBuffer().writeUint8(MessageTypes.AckOpen).writeString(id).commit();
|
|
138
|
+
this.onOpenChannelEmitter.fire({ id, channel });
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
handleClose(id) {
|
|
142
|
+
const channel = this.openChannels.get(id);
|
|
143
|
+
if (channel) {
|
|
144
|
+
channel.onCloseEmitter.fire({ reason: 'Channel has been closed from the remote side' });
|
|
145
|
+
this.openChannels.delete(id);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
handleData(id, data) {
|
|
149
|
+
const channel = this.openChannels.get(id);
|
|
150
|
+
if (channel) {
|
|
151
|
+
channel.onMessageEmitter.fire(() => data);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
createChannel(id) {
|
|
155
|
+
return new ForwardingChannel(id, () => this.closeChannel(id), () => this.prepareWriteBuffer(id));
|
|
156
|
+
}
|
|
157
|
+
// Prepare the write buffer for the channel with the give, id. The channel id has to be encoded
|
|
158
|
+
// and written to the buffer before the actual message.
|
|
159
|
+
prepareWriteBuffer(id) {
|
|
160
|
+
const underlying = this.underlyingChannel.getWriteBuffer();
|
|
161
|
+
underlying.writeUint8(MessageTypes.Data);
|
|
162
|
+
underlying.writeString(id);
|
|
163
|
+
return underlying;
|
|
164
|
+
}
|
|
165
|
+
closeChannel(id) {
|
|
166
|
+
this.underlyingChannel.getWriteBuffer()
|
|
167
|
+
.writeUint8(MessageTypes.Close)
|
|
168
|
+
.writeString(id)
|
|
169
|
+
.commit();
|
|
170
|
+
this.openChannels.delete(id);
|
|
171
|
+
}
|
|
172
|
+
open(id) {
|
|
173
|
+
const result = new Promise((resolve, reject) => {
|
|
174
|
+
this.pendingOpen.set(id, resolve);
|
|
175
|
+
});
|
|
176
|
+
this.underlyingChannel.getWriteBuffer().writeUint8(MessageTypes.Open).writeString(id).commit();
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
getOpenChannel(id) {
|
|
180
|
+
return this.openChannels.get(id);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.ChannelMultiplexer = ChannelMultiplexer;
|
|
184
|
+
//# sourceMappingURL=channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../src/common/message-rpc/channel.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;;;AAEhF,oCAA0C;AA0CzC,CAAC;AAUF;;;GAGG;AACH,MAAa,iBAAiB;IAE1B,YAAqB,EAAU,EAAqB,YAAwB,EAAqB,iBAAoC;QAAhH,OAAE,GAAF,EAAE,CAAQ;QAAqB,iBAAY,GAAZ,YAAY,CAAY;QAAqB,sBAAiB,GAAjB,iBAAiB,CAAmB;QAGrI,mBAAc,GAA+B,IAAI,eAAO,EAAE,CAAC;QAK3D,mBAAc,GAAqB,IAAI,eAAO,EAAE,CAAC;QAKjD,qBAAgB,GAA6B,IAAI,eAAO,EAAE,CAAC;IAZ3D,CAAC;IAGD,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IACrC,CAAC;IAAA,CAAC;IAGF,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;IACrC,CAAC;IAAA,CAAC;IAGF,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACvC,CAAC;IAAA,CAAC;IAEF,cAAc;QACV,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,OAAmB;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,WAAW,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;CACJ;AAjCD,8CAiCC;AAED;;GAEG;AACH,IAAY,YAKX;AALD,WAAY,YAAY;IACpB,+CAAQ,CAAA;IACR,iDAAS,CAAA;IACT,qDAAW,CAAA;IACX,+CAAQ,CAAA;AACZ,CAAC,EALW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAKvB;AAED;;;;GAIG;AACH,MAAa,kBAAkB;IAS3B,YAA+B,iBAA0B;QAA1B,sBAAiB,GAAjB,iBAAiB,CAAS;QAR/C,gBAAW,GAAsD,IAAI,GAAG,EAAE,CAAC;QAC3E,iBAAY,GAAmC,IAAI,GAAG,EAAE,CAAC;QAEhD,yBAAoB,GAAG,IAAI,eAAO,EAAoC,CAAC;QAMtF,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;IARD,IAAI,gBAAgB;QAChB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IAC3C,CAAC;IAQS,WAAW,CAAC,KAAc;QAChC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAChC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,sBAAsB,CAAC,KAAyB;QAE5C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAChC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,MAAM,EAAE,gEAAgE,EAAE,CAAC,CAAC;QACvH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAES,aAAa,CAAC,MAAkB;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,QAAQ,IAAI,EAAE;YACV,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC;gBACvB,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;aACjC;YACD,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;gBACpB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;aAC9B;YACD,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;aAC/B;YACD,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;gBACpB,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;aAC5D;SACJ;IACL,CAAC;IAES,aAAa,CAAC,EAAU;QAC9B,+DAA+D;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE;YACT,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACnC,OAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;SACnD;IACL,CAAC;IAES,UAAU,CAAC,EAAU;QAC3B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,OAAO,EAAE;gBACT,+DAA+D;gBAC/D,OAAO,CAAC,OAAO,CAAC,CAAC;aACpB;YACD,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YAClG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;SACnD;IACL,CAAC;IAES,WAAW,CAAC,EAAU;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAChC;IACL,CAAC;IAES,UAAU,CAAC,EAAU,EAAE,IAAgB;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;SAC7C;IACL,CAAC;IAES,aAAa,CAAC,EAAU;QAC9B,OAAO,IAAI,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC;IACrG,CAAC;IAED,+FAA+F;IAC/F,uDAAuD;IAC7C,kBAAkB,CAAC,EAAU;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;QAC3D,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,UAAU,CAAC;IACtB,CAAC;IAES,YAAY,CAAC,EAAU;QAC7B,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE;aAClC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC;aAC9B,WAAW,CAAC,EAAE,CAAC;aACf,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,EAAU;QACX,MAAM,MAAM,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/F,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,cAAc,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;CACJ;AA5HD,gDA4HC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ForwardingChannel } from './channel';
|
|
2
|
+
/**
|
|
3
|
+
* A pipe with two channels at each end for testing.
|
|
4
|
+
*/
|
|
5
|
+
export declare class ChannelPipe {
|
|
6
|
+
readonly left: ForwardingChannel;
|
|
7
|
+
readonly right: ForwardingChannel;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=channel.spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.spec.d.ts","sourceRoot":"","sources":["../../../src/common/message-rpc/channel.spec.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAsB,iBAAiB,EAAmB,MAAM,WAAW,CAAC;AAInF;;GAEG;AACH,qBAAa,WAAW;IACpB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAM7B;IACH,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAM9B;CACN"}
|