@theia/core 1.26.0 → 1.27.0-next.10

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.
Files changed (164) hide show
  1. package/README.md +6 -7
  2. package/lib/browser/messaging/ws-connection-provider.d.ts +5 -4
  3. package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
  4. package/lib/browser/messaging/ws-connection-provider.js +30 -23
  5. package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
  6. package/lib/browser/progress-status-bar-item.d.ts +1 -1
  7. package/lib/browser/progress-status-bar-item.d.ts.map +1 -1
  8. package/lib/browser/tree/tree-compression/compressed-tree-widget.js +2 -2
  9. package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
  10. package/lib/browser/widgets/select-component.d.ts +4 -1
  11. package/lib/browser/widgets/select-component.d.ts.map +1 -1
  12. package/lib/browser/widgets/select-component.js +30 -16
  13. package/lib/browser/widgets/select-component.js.map +1 -1
  14. package/lib/common/cancellation.d.ts +1 -0
  15. package/lib/common/cancellation.d.ts.map +1 -1
  16. package/lib/common/cancellation.js +8 -0
  17. package/lib/common/cancellation.js.map +1 -1
  18. package/lib/common/index.d.ts +2 -0
  19. package/lib/common/index.d.ts.map +1 -1
  20. package/lib/common/index.js +2 -0
  21. package/lib/common/index.js.map +1 -1
  22. package/lib/common/message-rpc/channel.d.ts +106 -0
  23. package/lib/common/message-rpc/channel.d.ts.map +1 -0
  24. package/lib/common/message-rpc/channel.js +195 -0
  25. package/lib/common/message-rpc/channel.js.map +1 -0
  26. package/lib/common/message-rpc/channel.spec.d.ts +9 -0
  27. package/lib/common/message-rpc/channel.spec.d.ts.map +1 -0
  28. package/lib/common/message-rpc/channel.spec.js +80 -0
  29. package/lib/common/message-rpc/channel.spec.js.map +1 -0
  30. package/lib/common/message-rpc/index.d.ts +4 -0
  31. package/lib/common/message-rpc/index.d.ts.map +1 -0
  32. package/lib/{node/messaging/logger.js → common/message-rpc/index.js} +6 -19
  33. package/lib/common/message-rpc/index.js.map +1 -0
  34. package/lib/common/message-rpc/message-buffer.d.ts +50 -0
  35. package/lib/common/message-rpc/message-buffer.d.ts.map +1 -0
  36. package/lib/common/message-rpc/message-buffer.js +56 -0
  37. package/lib/common/message-rpc/message-buffer.js.map +1 -0
  38. package/lib/common/message-rpc/rpc-message-encoder.d.ts +159 -0
  39. package/lib/common/message-rpc/rpc-message-encoder.d.ts.map +1 -0
  40. package/lib/common/message-rpc/rpc-message-encoder.js +362 -0
  41. package/lib/common/message-rpc/rpc-message-encoder.js.map +1 -0
  42. package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts +2 -0
  43. package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts.map +1 -0
  44. package/lib/common/message-rpc/rpc-message-encoder.spec.js +37 -0
  45. package/lib/common/message-rpc/rpc-message-encoder.spec.js.map +1 -0
  46. package/lib/common/message-rpc/rpc-protocol.d.ts +61 -0
  47. package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -0
  48. package/lib/common/message-rpc/rpc-protocol.js +183 -0
  49. package/lib/common/message-rpc/rpc-protocol.js.map +1 -0
  50. package/lib/common/message-rpc/uint8-array-message-buffer.d.ts +52 -0
  51. package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -0
  52. package/lib/common/message-rpc/uint8-array-message-buffer.js +169 -0
  53. package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -0
  54. package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts +2 -0
  55. package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts.map +1 -0
  56. package/lib/common/message-rpc/uint8-array-message-buffer.spec.js +39 -0
  57. package/lib/common/message-rpc/uint8-array-message-buffer.spec.js.map +1 -0
  58. package/lib/common/messaging/abstract-connection-provider.d.ts +9 -8
  59. package/lib/common/messaging/abstract-connection-provider.d.ts.map +1 -1
  60. package/lib/common/messaging/abstract-connection-provider.js +20 -35
  61. package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
  62. package/lib/common/messaging/connection-error-handler.d.ts +1 -2
  63. package/lib/common/messaging/connection-error-handler.d.ts.map +1 -1
  64. package/lib/common/messaging/connection-error-handler.js +1 -1
  65. package/lib/common/messaging/connection-error-handler.js.map +1 -1
  66. package/lib/common/messaging/handler.d.ts +2 -2
  67. package/lib/common/messaging/handler.d.ts.map +1 -1
  68. package/lib/common/messaging/proxy-factory.d.ts +13 -7
  69. package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
  70. package/lib/common/messaging/proxy-factory.js +18 -13
  71. package/lib/common/messaging/proxy-factory.js.map +1 -1
  72. package/lib/common/messaging/proxy-factory.spec.js +4 -15
  73. package/lib/common/messaging/proxy-factory.spec.js.map +1 -1
  74. package/lib/common/messaging/web-socket-channel.d.ts +54 -48
  75. package/lib/common/messaging/web-socket-channel.d.ts.map +1 -1
  76. package/lib/common/messaging/web-socket-channel.js +41 -105
  77. package/lib/common/messaging/web-socket-channel.js.map +1 -1
  78. package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts +2 -2
  79. package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts.map +1 -1
  80. package/lib/electron-browser/messaging/electron-ipc-connection-provider.js +18 -7
  81. package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +1 -1
  82. package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts +2 -2
  83. package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts.map +1 -1
  84. package/lib/electron-browser/messaging/electron-ws-connection-provider.js +5 -7
  85. package/lib/electron-browser/messaging/electron-ws-connection-provider.js.map +1 -1
  86. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +37 -9
  87. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
  88. package/lib/electron-main/messaging/electron-messaging-contribution.js +83 -68
  89. package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
  90. package/lib/electron-main/messaging/electron-messaging-service.d.ts +2 -8
  91. package/lib/electron-main/messaging/electron-messaging-service.d.ts.map +1 -1
  92. package/lib/electron-main/messaging/electron-messaging-service.js.map +1 -1
  93. package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
  94. package/lib/electron-main/theia-electron-window.js +11 -8
  95. package/lib/electron-main/theia-electron-window.js.map +1 -1
  96. package/lib/node/messaging/binary-message-pipe.d.ts +45 -0
  97. package/lib/node/messaging/binary-message-pipe.d.ts.map +1 -0
  98. package/lib/node/messaging/binary-message-pipe.js +152 -0
  99. package/lib/node/messaging/binary-message-pipe.js.map +1 -0
  100. package/lib/node/messaging/ipc-bootstrap.js +2 -11
  101. package/lib/node/messaging/ipc-bootstrap.js.map +1 -1
  102. package/lib/node/messaging/ipc-channel.d.ts +26 -0
  103. package/lib/node/messaging/ipc-channel.d.ts.map +1 -0
  104. package/lib/node/messaging/ipc-channel.js +86 -0
  105. package/lib/node/messaging/ipc-channel.js.map +1 -0
  106. package/lib/node/messaging/ipc-connection-provider.d.ts +3 -5
  107. package/lib/node/messaging/ipc-connection-provider.d.ts.map +1 -1
  108. package/lib/node/messaging/ipc-connection-provider.js +14 -31
  109. package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
  110. package/lib/node/messaging/ipc-protocol.d.ts +2 -2
  111. package/lib/node/messaging/ipc-protocol.d.ts.map +1 -1
  112. package/lib/node/messaging/messaging-contribution.d.ts +6 -9
  113. package/lib/node/messaging/messaging-contribution.d.ts.map +1 -1
  114. package/lib/node/messaging/messaging-contribution.js +23 -68
  115. package/lib/node/messaging/messaging-contribution.js.map +1 -1
  116. package/lib/node/messaging/messaging-service.d.ts +4 -23
  117. package/lib/node/messaging/messaging-service.d.ts.map +1 -1
  118. package/lib/node/messaging/messaging-service.js +1 -15
  119. package/lib/node/messaging/messaging-service.js.map +1 -1
  120. package/lib/node/messaging/test/test-web-socket-channel.d.ts +4 -2
  121. package/lib/node/messaging/test/test-web-socket-channel.d.ts.map +1 -1
  122. package/lib/node/messaging/test/test-web-socket-channel.js +25 -12
  123. package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
  124. package/package.json +5 -8
  125. package/src/browser/messaging/ws-connection-provider.ts +34 -25
  126. package/src/browser/progress-status-bar-item.ts +1 -1
  127. package/src/browser/style/menus.css +1 -0
  128. package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +2 -2
  129. package/src/browser/widgets/select-component.tsx +37 -17
  130. package/src/common/cancellation.ts +8 -0
  131. package/src/common/index.ts +2 -0
  132. package/src/common/message-rpc/channel.spec.ts +88 -0
  133. package/src/common/message-rpc/channel.ts +260 -0
  134. package/src/{node/messaging/logger.ts → common/message-rpc/index.ts} +4 -23
  135. package/src/common/message-rpc/message-buffer.ts +99 -0
  136. package/src/common/message-rpc/rpc-message-encoder.spec.ts +42 -0
  137. package/src/common/message-rpc/rpc-message-encoder.ts +497 -0
  138. package/src/common/message-rpc/rpc-protocol.ts +217 -0
  139. package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -0
  140. package/src/common/message-rpc/uint8-array-message-buffer.ts +206 -0
  141. package/src/common/messaging/abstract-connection-provider.ts +28 -37
  142. package/src/common/messaging/connection-error-handler.ts +1 -2
  143. package/src/common/messaging/handler.ts +2 -2
  144. package/src/common/messaging/proxy-factory.spec.ts +4 -17
  145. package/src/common/messaging/proxy-factory.ts +27 -16
  146. package/src/common/messaging/web-socket-channel.ts +79 -135
  147. package/src/electron-browser/messaging/electron-ipc-connection-provider.ts +21 -7
  148. package/src/electron-browser/messaging/electron-ws-connection-provider.ts +5 -8
  149. package/src/electron-main/messaging/electron-messaging-contribution.ts +87 -65
  150. package/src/electron-main/messaging/electron-messaging-service.ts +2 -8
  151. package/src/electron-main/theia-electron-window.ts +12 -9
  152. package/src/node/messaging/binary-message-pipe.ts +168 -0
  153. package/src/node/messaging/ipc-bootstrap.ts +3 -11
  154. package/src/node/messaging/ipc-channel.ts +97 -0
  155. package/src/node/messaging/ipc-connection-provider.ts +18 -35
  156. package/src/node/messaging/ipc-protocol.ts +2 -2
  157. package/src/node/messaging/messaging-contribution.ts +29 -74
  158. package/src/node/messaging/messaging-service.ts +4 -31
  159. package/src/node/messaging/test/test-web-socket-channel.ts +26 -17
  160. package/lib/node/messaging/logger.d.ts +0 -8
  161. package/lib/node/messaging/logger.d.ts.map +0 -1
  162. package/lib/node/messaging/logger.js.map +0 -1
  163. package/shared/vscode-ws-jsonrpc/index.d.ts +0 -1
  164. package/shared/vscode-ws-jsonrpc/index.js +0 -1
@@ -28,16 +28,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.MessagingContribution = exports.MessagingContainer = void 0;
29
29
  const socket_io_1 = require("socket.io");
30
30
  const inversify_1 = require("inversify");
31
- const connection_1 = require("vscode-ws-jsonrpc/lib/socket/connection");
32
- const launch = require("vscode-ws-jsonrpc/lib/server/launch");
33
31
  const common_1 = require("../../common");
34
32
  const web_socket_channel_1 = require("../../common/messaging/web-socket-channel");
35
33
  const messaging_service_1 = require("./messaging-service");
36
- const logger_1 = require("./logger");
37
34
  const connection_container_module_1 = require("./connection-container-module");
38
35
  const Route = require("route-parser");
39
36
  const ws_request_validators_1 = require("../ws-request-validators");
40
37
  const messaging_listeners_1 = require("./messaging-listeners");
38
+ const channel_1 = require("../../common/message-rpc/channel");
41
39
  exports.MessagingContainer = Symbol('MessagingContainer');
42
40
  let MessagingContribution = MessagingContribution_1 = class MessagingContribution {
43
41
  constructor() {
@@ -52,18 +50,6 @@ let MessagingContribution = MessagingContribution_1 = class MessagingContributio
52
50
  contribution.configure(this);
53
51
  }
54
52
  }
55
- listen(spec, callback) {
56
- this.wsChannel(spec, (params, channel) => {
57
- const connection = (0, connection_1.createWebSocketConnection)(channel, new logger_1.ConsoleLogger());
58
- callback(params, connection);
59
- });
60
- }
61
- forward(spec, callback) {
62
- this.wsChannel(spec, (params, channel) => {
63
- const connection = launch.createWebSocketConnection(channel);
64
- callback(params, messaging_service_1.WebSocketChannelConnection.create(connection, channel));
65
- });
66
- }
67
53
  wsChannel(spec, callback) {
68
54
  this.channelHandlers.push(spec, (params, channel) => callback(params, channel));
69
55
  }
@@ -106,54 +92,31 @@ let MessagingContribution = MessagingContribution_1 = class MessagingContributio
106
92
  }
107
93
  }
108
94
  handleChannels(socket) {
95
+ const socketChannel = new web_socket_channel_1.WebSocketChannel(this.toIWebSocket(socket));
96
+ const mulitplexer = new channel_1.ChannelMultiplexer(socketChannel);
109
97
  const channelHandlers = this.getConnectionChannelHandlers(socket);
110
- const channels = new Map();
111
- socket.on('message', data => {
112
- try {
113
- const message = JSON.parse(data.toString());
114
- if (message.kind === 'open') {
115
- const { id, path } = message;
116
- const channel = this.createChannel(id, socket);
117
- if (channelHandlers.route(path, channel)) {
118
- channel.ready();
119
- console.debug(`Opening channel for service path '${path}'. [ID: ${id}]`);
120
- channels.set(id, channel);
121
- channel.onClose(() => {
122
- console.debug(`Closing channel on service path '${path}'. [ID: ${id}]`);
123
- channels.delete(id);
124
- });
125
- }
126
- else {
127
- console.error('Cannot find a service for the path: ' + path);
128
- }
129
- }
130
- else {
131
- const { id } = message;
132
- const channel = channels.get(id);
133
- if (channel) {
134
- channel.handleMessage(message);
135
- }
136
- else {
137
- console.error('The ws channel does not exist', id);
138
- }
139
- }
98
+ mulitplexer.onDidOpenChannel(event => {
99
+ if (channelHandlers.route(event.id, event.channel)) {
100
+ console.debug(`Opening channel for service path '${event.id}'.`);
101
+ event.channel.onClose(() => console.debug(`Closing channel on service path '${event.id}'.`));
140
102
  }
141
- catch (error) {
142
- console.error('Failed to handle message', { error, data });
143
- }
144
- });
145
- socket.on('error', err => {
146
- for (const channel of channels.values()) {
147
- channel.fireError(err);
148
- }
149
- });
150
- socket.on('disconnect', reason => {
151
- for (const channel of channels.values()) {
152
- channel.close(undefined, reason);
153
- }
154
- channels.clear();
155
103
  });
156
104
  }
105
+ toIWebSocket(socket) {
106
+ return {
107
+ close: () => {
108
+ socket.removeAllListeners('disconnect');
109
+ socket.removeAllListeners('error');
110
+ socket.removeAllListeners('message');
111
+ socket.disconnect();
112
+ },
113
+ isConnected: () => socket.connected,
114
+ onClose: cb => socket.on('disconnect', reason => cb(reason)),
115
+ onError: cb => socket.on('error', error => cb(error)),
116
+ onMessage: cb => socket.on('message', data => cb(data)),
117
+ send: message => socket.emit('message', message)
118
+ };
119
+ }
157
120
  createSocketContainer(socket) {
158
121
  const connectionContainer = this.container.createChild();
159
122
  connectionContainer.bind(socket_io_1.Socket).toConstantValue(socket);
@@ -167,19 +130,11 @@ let MessagingContribution = MessagingContribution_1 = class MessagingContributio
167
130
  const connectionHandlers = connectionContainer.getNamed(common_1.ContributionProvider, common_1.ConnectionHandler);
168
131
  for (const connectionHandler of connectionHandlers.getContributions(true)) {
169
132
  connectionChannelHandlers.push(connectionHandler.path, (_, channel) => {
170
- const connection = (0, connection_1.createWebSocketConnection)(channel, new logger_1.ConsoleLogger());
171
- connectionHandler.onConnection(connection);
133
+ connectionHandler.onConnection(channel);
172
134
  });
173
135
  }
174
136
  return connectionChannelHandlers;
175
137
  }
176
- createChannel(id, socket) {
177
- return new web_socket_channel_1.WebSocketChannel(id, content => {
178
- if (socket.connected) {
179
- socket.send(content);
180
- }
181
- });
182
- }
183
138
  };
184
139
  __decorate([
185
140
  (0, inversify_1.inject)(exports.MessagingContainer),
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-contribution.js","sourceRoot":"","sources":["../../../src/node/messaging/messaging-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messaging-contribution.js","sourceRoot":"","sources":["../../../src/node/messaging/messaging-contribution.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,18 @@
1
1
  import { Socket } from 'socket.io';
2
- import { MessageConnection } from 'vscode-ws-jsonrpc';
3
- import { IConnection } from 'vscode-ws-jsonrpc/lib/server/connection';
4
- import { WebSocketChannel } from '../../common/messaging/web-socket-channel';
2
+ import { Channel } from '../../common/message-rpc/channel';
5
3
  export interface MessagingService {
6
- /**
7
- * Accept a JSON-RPC connection on the given path.
8
- * A path supports the route syntax: https://github.com/rcs/route-parser#what-can-i-use-in-my-routes.
9
- */
10
- listen(path: string, callback: (params: MessagingService.PathParams, connection: MessageConnection) => void): void;
11
- /**
12
- * Accept a raw JSON-RPC connection on the given path.
13
- * A path supports the route syntax: https://github.com/rcs/route-parser#what-can-i-use-in-my-routes.
14
- */
15
- forward(path: string, callback: (params: MessagingService.PathParams, connection: IConnection) => void): void;
16
4
  /**
17
5
  * Accept a web socket channel on the given path.
18
6
  * A path supports the route syntax: https://github.com/rcs/route-parser#what-can-i-use-in-my-routes.
19
7
  */
20
- wsChannel(path: string, callback: (params: MessagingService.PathParams, socket: WebSocketChannel) => void): void;
8
+ wsChannel(path: string, callback: (params: MessagingService.PathParams, channel: Channel) => void): void;
21
9
  /**
22
10
  * Accept a web socket connection on the given path.
23
11
  * A path supports the route syntax: https://github.com/rcs/route-parser#what-can-i-use-in-my-routes.
24
12
  *
25
13
  * #### Important
26
- * Prefer JSON-RPC connections or web socket channels over web sockets. Clients can handle only limited amount of web sockets
27
- * and excessive amount can cause performance degradation. All JSON-RPC connections and web socket channels share the single web socket connection.
14
+ * Prefer using web socket channels over establishing new web socket connection. Clients can handle only limited amount of web sockets
15
+ * and excessive amount can cause performance degradation. All web socket channels share a single web socket connection.
28
16
  */
29
17
  ws(path: string, callback: (params: MessagingService.PathParams, socket: Socket) => void): void;
30
18
  }
@@ -39,11 +27,4 @@ export declare namespace MessagingService {
39
27
  configure(service: MessagingService): void;
40
28
  }
41
29
  }
42
- export interface WebSocketChannelConnection extends IConnection {
43
- channel: WebSocketChannel;
44
- }
45
- export declare namespace WebSocketChannelConnection {
46
- function is(connection: IConnection): connection is WebSocketChannelConnection;
47
- function create(connection: IConnection, channel: WebSocketChannel): WebSocketChannelConnection;
48
- }
49
30
  //# sourceMappingURL=messaging-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-service.d.ts","sourceRoot":"","sources":["../../../src/node/messaging/messaging-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAAC;IACnH;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9G;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI,CAAC;IACjH;;;;;;;OAOG;IACH,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CACnG;AACD,yBAAiB,gBAAgB,CAAC;IAC9B,2EAA2E;IACpE,MAAM,UAAU,eAA6B,CAAC;IACrD,UAAiB,UAAU;QACvB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB;IACM,MAAM,YAAY,eAA0C,CAAC;IACpE,UAAiB,YAAY;QACzB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;KAC9C;CACJ;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC3D,OAAO,EAAE,gBAAgB,CAAC;CAC7B;AACD,yBAAiB,0BAA0B,CAAC;IACxC,SAAgB,EAAE,CAAC,UAAU,EAAE,WAAW,GAAG,UAAU,IAAI,0BAA0B,CAEpF;IAED,SAAgB,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,GAAG,0BAA0B,CAIrG;CACJ"}
1
+ {"version":3,"file":"messaging-service.d.ts","sourceRoot":"","sources":["../../../src/node/messaging/messaging-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACzG;;;;;;;OAOG;IACH,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;CACnG;AACD,yBAAiB,gBAAgB,CAAC;IAC9B,2EAA2E;IACpE,MAAM,UAAU,eAA6B,CAAC;IACrD,UAAiB,UAAU;QACvB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB;IACM,MAAM,YAAY,eAA0C,CAAC;IACpE,UAAiB,YAAY;QACzB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;KAC9C;CACJ"}
@@ -15,25 +15,11 @@
15
15
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.WebSocketChannelConnection = exports.MessagingService = void 0;
19
- const web_socket_channel_1 = require("../../common/messaging/web-socket-channel");
18
+ exports.MessagingService = void 0;
20
19
  var MessagingService;
21
20
  (function (MessagingService) {
22
21
  /** Inversify container identifier for the `MessagingService` component. */
23
22
  MessagingService.Identifier = Symbol('MessagingService');
24
23
  MessagingService.Contribution = Symbol('MessagingService.Contribution');
25
24
  })(MessagingService = exports.MessagingService || (exports.MessagingService = {}));
26
- var WebSocketChannelConnection;
27
- (function (WebSocketChannelConnection) {
28
- function is(connection) {
29
- return connection.channel instanceof web_socket_channel_1.WebSocketChannel;
30
- }
31
- WebSocketChannelConnection.is = is;
32
- function create(connection, channel) {
33
- const result = connection;
34
- result.channel = channel;
35
- return result;
36
- }
37
- WebSocketChannelConnection.create = create;
38
- })(WebSocketChannelConnection = exports.WebSocketChannelConnection || (exports.WebSocketChannelConnection = {}));
39
25
  //# sourceMappingURL=messaging-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-service.js","sourceRoot":"","sources":["../../../src/node/messaging/messaging-service.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;;;AAKhF,kFAA6E;AA4B7E,IAAiB,gBAAgB,CAUhC;AAVD,WAAiB,gBAAgB;IAC7B,2EAA2E;IAC9D,2BAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAIxC,6BAAY,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAIxE,CAAC,EAVgB,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAUhC;AAKD,IAAiB,0BAA0B,CAU1C;AAVD,WAAiB,0BAA0B;IACvC,SAAgB,EAAE,CAAC,UAAuB;QACtC,OAAQ,UAAyC,CAAC,OAAO,YAAY,qCAAgB,CAAC;IAC1F,CAAC;IAFe,6BAAE,KAEjB,CAAA;IAED,SAAgB,MAAM,CAAC,UAAuB,EAAE,OAAyB;QACrE,MAAM,MAAM,GAAG,UAAwC,CAAC;QACxD,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,OAAO,MAAM,CAAC;IAClB,CAAC;IAJe,iCAAM,SAIrB,CAAA;AACL,CAAC,EAVgB,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAU1C"}
1
+ {"version":3,"file":"messaging-service.js","sourceRoot":"","sources":["../../../src/node/messaging/messaging-service.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;;;AAqBhF,IAAiB,gBAAgB,CAUhC;AAVD,WAAiB,gBAAgB;IAC7B,2EAA2E;IAC9D,2BAAU,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAIxC,6BAAY,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAIxE,CAAC,EAVgB,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAUhC"}
@@ -1,8 +1,10 @@
1
1
  /// <reference types="node" />
2
2
  import * as http from 'http';
3
3
  import * as https from 'https';
4
- import { WebSocketChannel } from '../../../common/messaging/web-socket-channel';
5
- export declare class TestWebSocketChannel extends WebSocketChannel {
4
+ import { Channel, ChannelMultiplexer } from '../../../common/message-rpc/channel';
5
+ export declare class TestWebSocketChannelSetup {
6
+ readonly multiplexer: ChannelMultiplexer;
7
+ readonly channel: Channel;
6
8
  constructor({ server, path }: {
7
9
  server: http.Server | https.Server;
8
10
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"test-web-socket-channel.d.ts","sourceRoot":"","sources":["../../../../src/node/messaging/test/test-web-socket-channel.ts"],"names":[],"mappings":";AAgBA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAKhF,qBAAa,oBAAqB,SAAQ,gBAAgB;gBAE1C,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACnC,IAAI,EAAE,MAAM,CAAA;KACf;CAkBJ"}
1
+ {"version":3,"file":"test-web-socket-channel.d.ts","sourceRoot":"","sources":["../../../../src/node/messaging/test/test-web-socket-channel.ts"],"names":[],"mappings":";AAgBA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGlF,qBAAa,yBAAyB;IAClC,SAAgB,WAAW,EAAE,kBAAkB,CAAC;IAChD,SAAgB,OAAO,EAAE,OAAO,CAAC;gBAErB,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QACnC,IAAI,EAAE,MAAM,CAAA;KACf;CASJ"}
@@ -15,22 +15,35 @@
15
15
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.TestWebSocketChannel = void 0;
19
- const web_socket_channel_1 = require("../../../common/messaging/web-socket-channel");
20
- const disposable_1 = require("../../../common/disposable");
18
+ exports.TestWebSocketChannelSetup = void 0;
21
19
  const socket_io_client_1 = require("socket.io-client");
22
- class TestWebSocketChannel extends web_socket_channel_1.WebSocketChannel {
20
+ const channel_1 = require("../../../common/message-rpc/channel");
21
+ const web_socket_channel_1 = require("../../../common/messaging/web-socket-channel");
22
+ class TestWebSocketChannelSetup {
23
23
  constructor({ server, path }) {
24
- super(0, content => socket.send(content));
25
24
  const socket = (0, socket_io_client_1.io)(`ws://localhost:${server.address().port}${web_socket_channel_1.WebSocketChannel.wsPath}`);
26
- socket.on('error', error => this.fireError(error));
27
- socket.on('disconnect', reason => this.fireClose(0, reason));
28
- socket.on('message', data => {
29
- this.handleMessage(JSON.parse(data.toString()));
25
+ this.channel = new web_socket_channel_1.WebSocketChannel(toIWebSocket(socket));
26
+ this.multiplexer = new channel_1.ChannelMultiplexer(this.channel);
27
+ socket.on('connect', () => {
28
+ this.multiplexer.open(path);
30
29
  });
31
- socket.on('connect', () => this.open(path));
32
- this.toDispose.push(disposable_1.Disposable.create(() => socket.close()));
30
+ socket.connect();
33
31
  }
34
32
  }
35
- exports.TestWebSocketChannel = TestWebSocketChannel;
33
+ exports.TestWebSocketChannelSetup = TestWebSocketChannelSetup;
34
+ function toIWebSocket(socket) {
35
+ return {
36
+ close: () => {
37
+ socket.removeAllListeners('disconnect');
38
+ socket.removeAllListeners('error');
39
+ socket.removeAllListeners('message');
40
+ socket.close();
41
+ },
42
+ isConnected: () => socket.connected,
43
+ onClose: cb => socket.on('disconnect', reason => cb(reason)),
44
+ onError: cb => socket.on('error', reason => cb(reason)),
45
+ onMessage: cb => socket.on('message', data => cb(data)),
46
+ send: message => socket.emit('message', message)
47
+ };
48
+ }
36
49
  //# sourceMappingURL=test-web-socket-channel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-web-socket-channel.js","sourceRoot":"","sources":["../../../../src/node/messaging/test/test-web-socket-channel.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;;;AAIhF,qFAAgF;AAChF,2DAAwD;AAExD,uDAAsC;AAEtC,MAAa,oBAAqB,SAAQ,qCAAgB;IAEtD,YAAY,EAAE,MAAM,EAAE,IAAI,EAGzB;QACG,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAA,qBAAE,EAAC,kBAAmB,MAAM,CAAC,OAAO,EAAkB,CAAC,IAAI,GAAG,qCAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;QACxG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CACvB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACxB,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAC7B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAC5B,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CACtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAClB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;CAEJ;AAvBD,oDAuBC"}
1
+ {"version":3,"file":"test-web-socket-channel.js","sourceRoot":"","sources":["../../../../src/node/messaging/test/test-web-socket-channel.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;;;AAKhF,uDAA8C;AAC9C,iEAAkF;AAClF,qFAA4F;AAE5F,MAAa,yBAAyB;IAIlC,YAAY,EAAE,MAAM,EAAE,IAAI,EAGzB;QACG,MAAM,MAAM,GAAG,IAAA,qBAAE,EAAC,kBAAmB,MAAM,CAAC,OAAO,EAAkB,CAAC,IAAI,GAAG,qCAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;QACxG,IAAI,CAAC,OAAO,GAAG,IAAI,qCAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,4BAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;CACJ;AAhBD,8DAgBC;AAED,SAAS,YAAY,CAAC,MAAc;IAChC,OAAO;QACH,KAAK,EAAE,GAAG,EAAE;YACR,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACxC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS;QACnC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC5D,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QACvD,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;KACnD,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.26.0",
3
+ "version": "1.27.0-next.10+83d43084618",
4
4
  "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
@@ -16,8 +16,8 @@
16
16
  "@phosphor/signaling": "1",
17
17
  "@phosphor/virtualdom": "1",
18
18
  "@phosphor/widgets": "1",
19
- "@theia/application-package": "1.26.0",
20
- "@theia/request": "1.26.0",
19
+ "@theia/application-package": "1.27.0-next.10+83d43084618",
20
+ "@theia/request": "1.27.0-next.10+83d43084618",
21
21
  "@types/body-parser": "^1.16.4",
22
22
  "@types/cookie": "^0.3.3",
23
23
  "@types/dompurify": "^2.2.2",
@@ -61,7 +61,6 @@
61
61
  "react-dom": "^16.8.0",
62
62
  "react-tooltip": "^4.2.21",
63
63
  "react-virtualized": "^9.20.0",
64
- "reconnecting-websocket": "^4.2.0",
65
64
  "reflect-metadata": "^0.1.10",
66
65
  "route-parser": "^0.0.5",
67
66
  "safer-buffer": "^2.1.2",
@@ -70,7 +69,6 @@
70
69
  "uuid": "^8.3.2",
71
70
  "vscode-languageserver-protocol": "~3.15.3",
72
71
  "vscode-uri": "^2.1.1",
73
- "vscode-ws-jsonrpc": "^0.2.0",
74
72
  "ws": "^7.1.2",
75
73
  "yargs": "^15.3.1"
76
74
  },
@@ -113,8 +111,7 @@
113
111
  "react-dom",
114
112
  "react-virtualized",
115
113
  "vscode-languageserver-protocol",
116
- "vscode-uri",
117
- "vscode-ws-jsonrpc"
114
+ "vscode-uri"
118
115
  ],
119
116
  "export =": [
120
117
  "dompurify as DOMPurify",
@@ -203,5 +200,5 @@
203
200
  "nyc": {
204
201
  "extends": "../../configs/nyc.json"
205
202
  },
206
- "gitHead": "38e2466568e69d55a9c64c96878deff5a005b814"
203
+ "gitHead": "83d430846182a2ccd8465bcfd28ba7214c42abf3"
207
204
  }
@@ -15,11 +15,11 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { injectable, interfaces, decorate, unmanaged } from 'inversify';
18
- import { JsonRpcProxyFactory, JsonRpcProxy, Emitter, Event } from '../../common';
19
- import { WebSocketChannel } from '../../common/messaging/web-socket-channel';
18
+ import { JsonRpcProxyFactory, JsonRpcProxy, Emitter, Event, Channel } from '../../common';
20
19
  import { Endpoint } from '../endpoint';
21
20
  import { AbstractConnectionProvider } from '../../common/messaging/abstract-connection-provider';
22
21
  import { io, Socket } from 'socket.io-client';
22
+ import { IWebSocket, WebSocketChannel } from '../../common/messaging/web-socket-channel';
23
23
 
24
24
  decorate(injectable(), JsonRpcProxyFactory);
25
25
  decorate(unmanaged(), JsonRpcProxyFactory, 0);
@@ -53,26 +53,42 @@ export class WebSocketConnectionProvider extends AbstractConnectionProvider<WebS
53
53
  constructor() {
54
54
  super();
55
55
  const url = this.createWebSocketUrl(WebSocketChannel.wsPath);
56
- const socket = this.createWebSocket(url);
57
- socket.on('connect', () => {
58
- this.fireSocketDidOpen();
59
- });
60
- socket.on('disconnect', reason => {
61
- for (const channel of [...this.channels.values()]) {
62
- channel.close(undefined, reason);
56
+ this.socket = this.createWebSocket(url);
57
+ this.socket.on('connect', () => {
58
+ this.initializeMultiplexer();
59
+ if (this.reconnectChannelOpeners.length > 0) {
60
+ this.reconnectChannelOpeners.forEach(opener => opener());
61
+ this.reconnectChannelOpeners = [];
63
62
  }
64
- this.fireSocketDidClose();
65
- });
66
- socket.on('message', data => {
67
- this.handleIncomingRawMessage(data);
63
+ this.socket.on('disconnect', () => this.fireSocketDidClose());
64
+ this.socket.on('message', () => this.onIncomingMessageActivityEmitter.fire(undefined));
65
+ this.fireSocketDidOpen();
68
66
  });
69
- socket.connect();
70
- this.socket = socket;
67
+ this.socket.connect();
71
68
  }
72
69
 
73
- override openChannel(path: string, handler: (channel: WebSocketChannel) => void, options?: WebSocketOptions): void {
70
+ protected createMainChannel(): Channel {
71
+ return new WebSocketChannel(this.toIWebSocket(this.socket));
72
+ }
73
+
74
+ protected toIWebSocket(socket: Socket): IWebSocket {
75
+ return {
76
+ close: () => {
77
+ socket.removeAllListeners('disconnect');
78
+ socket.removeAllListeners('error');
79
+ socket.removeAllListeners('message');
80
+ },
81
+ isConnected: () => socket.connected,
82
+ onClose: cb => socket.on('disconnect', reason => cb(reason)),
83
+ onError: cb => socket.on('error', reason => cb(reason)),
84
+ onMessage: cb => socket.on('message', data => cb(data)),
85
+ send: message => socket.emit('message', message)
86
+ };
87
+ }
88
+
89
+ override async openChannel(path: string, handler: (channel: Channel) => void, options?: WebSocketOptions): Promise<void> {
74
90
  if (this.socket.connected) {
75
- super.openChannel(path, handler, options);
91
+ return super.openChannel(path, handler, options);
76
92
  } else {
77
93
  const openChannel = () => {
78
94
  this.socket.off('connect', openChannel);
@@ -82,14 +98,6 @@ export class WebSocketConnectionProvider extends AbstractConnectionProvider<WebS
82
98
  }
83
99
  }
84
100
 
85
- protected createChannel(id: number): WebSocketChannel {
86
- return new WebSocketChannel(id, content => {
87
- if (this.socket.connected) {
88
- this.socket.send(content);
89
- }
90
- });
91
- }
92
-
93
101
  /**
94
102
  * @param path The handler to reach in the backend.
95
103
  */
@@ -143,3 +151,4 @@ export class WebSocketConnectionProvider extends AbstractConnectionProvider<WebS
143
151
  this.onSocketDidCloseEmitter.fire(undefined);
144
152
  }
145
153
  }
154
+
@@ -15,7 +15,7 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { injectable, inject } from 'inversify';
18
- import { CancellationToken } from 'vscode-ws-jsonrpc';
18
+ import { CancellationToken } from '../../shared/vscode-languageserver-protocol';
19
19
  import { ProgressClient, ProgressMessage, ProgressUpdate } from '../common';
20
20
  import { StatusBar, StatusBarAlignment } from './status-bar';
21
21
  import { Deferred } from '../common/promise-util';
@@ -128,6 +128,7 @@
128
128
  color: var(--theia-menu-selectionForeground);
129
129
  border: thin solid var(--theia-menu-selectionBorder);
130
130
  opacity: 1;
131
+ cursor: pointer;
131
132
  }
132
133
 
133
134
 
@@ -123,8 +123,8 @@ export class CompressedTreeWidget extends TreeViewWelcomeWidget {
123
123
  protected getCaptionChildEventHandlers(node: TreeNode, props: CompressedNodeProps): React.Attributes & React.HtmlHTMLAttributes<HTMLElement> {
124
124
  return {
125
125
  onClick: event => (event.stopPropagation(), this.handleClickEvent(node, event)),
126
- onDoubleClick: event => (event.stopPropagation(), this.handleClickEvent(node, event)),
127
- onContextMenu: event => (event.stopPropagation(), this.handleClickEvent(node, event)),
126
+ onDoubleClick: event => (event.stopPropagation(), this.handleDblClickEvent(node, event)),
127
+ onContextMenu: event => (event.stopPropagation(), this.handleContextMenuEvent(node, event)),
128
128
  };
129
129
  }
130
130
 
@@ -34,8 +34,10 @@ export interface SelectOption {
34
34
 
35
35
  export interface SelectComponentProps {
36
36
  options: SelectOption[]
37
- value?: string | number
38
- onChange?: (option: SelectOption, index: number) => void
37
+ defaultValue?: string | number
38
+ onChange?: (option: SelectOption, index: number) => void,
39
+ onBlur?: () => void,
40
+ onFocus?: () => void
39
41
  }
40
42
 
41
43
  export interface SelectComponentDropdownDimensions {
@@ -64,10 +66,10 @@ export class SelectComponent extends React.Component<SelectComponentProps, Selec
64
66
  constructor(props: SelectComponentProps) {
65
67
  super(props);
66
68
  let selected = 0;
67
- if (typeof props.value === 'number') {
68
- selected = props.value;
69
- } else if (typeof props.value === 'string') {
70
- selected = Math.max(props.options.findIndex(e => e.value === props.value), 0);
69
+ if (typeof props.defaultValue === 'number') {
70
+ selected = props.defaultValue;
71
+ } else if (typeof props.defaultValue === 'string') {
72
+ selected = Math.max(props.options.findIndex(e => e.value === props.defaultValue), 0);
71
73
  }
72
74
  this.state = {
73
75
  selected,
@@ -162,8 +164,8 @@ export class SelectComponent extends React.Component<SelectComponentProps, Selec
162
164
  override render(): React.ReactNode {
163
165
  const { options } = this.props;
164
166
  let { selected } = this.state;
165
- while (options[selected]?.separator) {
166
- selected = (selected + 1) % this.props.options.length;
167
+ if (options[selected]?.separator) {
168
+ selected = this.nextNotSeparator('forwards');
167
169
  }
168
170
  const selectedItemLabel = options[selected].label ?? options[selected].value;
169
171
  return <>
@@ -173,7 +175,13 @@ export class SelectComponent extends React.Component<SelectComponentProps, Selec
173
175
  tabIndex={0}
174
176
  className="theia-select-component"
175
177
  onClick={e => this.handleClickEvent(e)}
176
- onBlur={() => this.hide()}
178
+ onBlur={
179
+ () => {
180
+ this.hide();
181
+ this.props.onBlur?.();
182
+ }
183
+ }
184
+ onFocus={() => this.props.onFocus?.()}
177
185
  onKeyDown={e => this.handleKeypress(e)}
178
186
  >
179
187
  <div key="label" className="theia-select-component-label">{selectedItemLabel}</div>
@@ -183,24 +191,36 @@ export class SelectComponent extends React.Component<SelectComponentProps, Selec
183
191
  </>;
184
192
  }
185
193
 
194
+ protected nextNotSeparator(direction: 'forwards' | 'backwards'): number {
195
+ const { options } = this.props;
196
+ const step = direction === 'forwards' ? 1 : -1;
197
+ const length = this.props.options.length;
198
+ let selected = this.state.selected;
199
+ let count = 0;
200
+ do {
201
+ selected = (selected + step) % length;
202
+ if (selected < 0) {
203
+ selected = length - 1;
204
+ }
205
+ count++;
206
+ }
207
+ while (options[selected]?.separator && count < length);
208
+ return selected;
209
+ }
210
+
186
211
  protected handleKeypress(ev: React.KeyboardEvent<HTMLDivElement>): void {
187
212
  if (!this.fieldRef.current) {
188
213
  return;
189
214
  }
190
215
  if (ev.key === 'ArrowUp') {
191
- let selected = this.state.selected;
192
- if (selected <= 0) {
193
- selected = this.props.options.length - 1;
194
- } else {
195
- selected--;
196
- }
216
+ const selected = this.nextNotSeparator('backwards');
197
217
  this.setState({
198
218
  selected,
199
219
  hover: selected
200
220
  });
201
221
  } else if (ev.key === 'ArrowDown') {
202
222
  if (this.state.dimensions) {
203
- const selected = (this.state.selected + 1) % this.props.options.length;
223
+ const selected = this.nextNotSeparator('forwards');
204
224
  this.setState({
205
225
  selected,
206
226
  hover: selected
@@ -208,8 +228,8 @@ export class SelectComponent extends React.Component<SelectComponentProps, Selec
208
228
  } else {
209
229
  this.toggleVisibility();
210
230
  this.setState({
231
+ selected: 0,
211
232
  hover: 0,
212
- selected: 0
213
233
  });
214
234
  }
215
235
  } else if (ev.key === 'Enter') {