@opensumi/ide-connection 2.27.3-rc-1706687185.0 → 2.27.3-rc-1708222409.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/lib/browser/ws-channel-handler.d.ts.map +1 -1
  2. package/lib/browser/ws-channel-handler.js +2 -6
  3. package/lib/browser/ws-channel-handler.js.map +1 -1
  4. package/lib/common/{connection → buffers}/buffers.d.ts +2 -1
  5. package/lib/common/buffers/buffers.d.ts.map +1 -0
  6. package/lib/common/{connection → buffers}/buffers.js +21 -3
  7. package/lib/common/buffers/buffers.js.map +1 -0
  8. package/lib/common/connection/drivers/base.d.ts +2 -2
  9. package/lib/common/connection/drivers/base.d.ts.map +1 -1
  10. package/lib/common/connection/drivers/base.js +0 -4
  11. package/lib/common/connection/drivers/base.js.map +1 -1
  12. package/lib/common/connection/drivers/frame-decoder.d.ts +34 -0
  13. package/lib/common/connection/drivers/frame-decoder.d.ts.map +1 -0
  14. package/lib/common/connection/drivers/frame-decoder.js +147 -0
  15. package/lib/common/connection/drivers/frame-decoder.js.map +1 -0
  16. package/lib/common/connection/drivers/{empty.d.ts → message-port.d.ts} +5 -2
  17. package/lib/common/connection/drivers/message-port.d.ts.map +1 -0
  18. package/lib/common/connection/drivers/message-port.js +41 -0
  19. package/lib/common/connection/drivers/message-port.js.map +1 -0
  20. package/lib/common/connection/drivers/node-message-port.d.ts +1 -0
  21. package/lib/common/connection/drivers/node-message-port.d.ts.map +1 -1
  22. package/lib/common/connection/drivers/node-message-port.js +3 -0
  23. package/lib/common/connection/drivers/node-message-port.js.map +1 -1
  24. package/lib/common/connection/drivers/reconnecting-websocket.d.ts +1 -0
  25. package/lib/common/connection/drivers/reconnecting-websocket.d.ts.map +1 -1
  26. package/lib/common/connection/drivers/reconnecting-websocket.js +3 -0
  27. package/lib/common/connection/drivers/reconnecting-websocket.js.map +1 -1
  28. package/lib/common/connection/drivers/simple.d.ts +17 -0
  29. package/lib/common/connection/drivers/simple.d.ts.map +1 -0
  30. package/lib/common/connection/drivers/simple.js +32 -0
  31. package/lib/common/connection/drivers/simple.js.map +1 -0
  32. package/lib/common/connection/drivers/socket.d.ts +4 -2
  33. package/lib/common/connection/drivers/socket.d.ts.map +1 -1
  34. package/lib/common/connection/drivers/socket.js +10 -7
  35. package/lib/common/connection/drivers/socket.js.map +1 -1
  36. package/lib/common/connection/drivers/ws-websocket.d.ts +2 -0
  37. package/lib/common/connection/drivers/ws-websocket.d.ts.map +1 -1
  38. package/lib/common/connection/drivers/ws-websocket.js +6 -0
  39. package/lib/common/connection/drivers/ws-websocket.js.map +1 -1
  40. package/lib/common/connection/types.d.ts +1 -1
  41. package/lib/common/connection/types.d.ts.map +1 -1
  42. package/lib/common/ext-rpc-protocol.d.ts +7 -21
  43. package/lib/common/ext-rpc-protocol.d.ts.map +1 -1
  44. package/lib/common/ext-rpc-protocol.js +13 -33
  45. package/lib/common/ext-rpc-protocol.js.map +1 -1
  46. package/lib/common/fury-extends/any.d.ts +22 -0
  47. package/lib/common/fury-extends/any.d.ts.map +1 -0
  48. package/lib/common/fury-extends/any.js +143 -0
  49. package/lib/common/fury-extends/any.js.map +1 -0
  50. package/lib/common/fury-extends/one-of.d.ts +14 -0
  51. package/lib/common/fury-extends/one-of.d.ts.map +1 -0
  52. package/lib/common/fury-extends/one-of.js +50 -0
  53. package/lib/common/fury-extends/one-of.js.map +1 -0
  54. package/lib/common/fury-extends/shared.d.ts +142 -0
  55. package/lib/common/fury-extends/shared.d.ts.map +1 -0
  56. package/lib/common/fury-extends/shared.js +17 -0
  57. package/lib/common/fury-extends/shared.js.map +1 -0
  58. package/lib/common/index.d.ts +2 -1
  59. package/lib/common/index.d.ts.map +1 -1
  60. package/lib/common/index.js +2 -1
  61. package/lib/common/index.js.map +1 -1
  62. package/lib/common/protocols/common-server.d.ts +3 -0
  63. package/lib/common/protocols/common-server.d.ts.map +1 -0
  64. package/lib/common/protocols/common-server.js +18 -0
  65. package/lib/common/protocols/common-server.js.map +1 -0
  66. package/lib/common/protocols/common.d.ts +24 -0
  67. package/lib/common/protocols/common.d.ts.map +1 -0
  68. package/lib/common/protocols/common.js +12 -0
  69. package/lib/common/protocols/common.js.map +1 -0
  70. package/lib/common/rpc/connection.d.ts +44 -0
  71. package/lib/common/rpc/connection.d.ts.map +1 -0
  72. package/lib/common/rpc/connection.js +256 -0
  73. package/lib/common/rpc/connection.js.map +1 -0
  74. package/lib/common/rpc/errors.d.ts +4 -0
  75. package/lib/common/rpc/errors.d.ts.map +1 -0
  76. package/lib/common/rpc/errors.js +10 -0
  77. package/lib/common/rpc/errors.js.map +1 -0
  78. package/lib/common/rpc/index.d.ts +3 -0
  79. package/lib/common/rpc/index.d.ts.map +1 -0
  80. package/lib/common/rpc/index.js +6 -0
  81. package/lib/common/rpc/index.js.map +1 -0
  82. package/lib/common/rpc/multiplexer.d.ts +28 -0
  83. package/lib/common/rpc/multiplexer.d.ts.map +1 -0
  84. package/lib/common/rpc/multiplexer.js +82 -0
  85. package/lib/common/rpc/multiplexer.js.map +1 -0
  86. package/lib/common/rpc/packet.d.ts +65 -0
  87. package/lib/common/rpc/packet.d.ts.map +1 -0
  88. package/lib/common/rpc/packet.js +82 -0
  89. package/lib/common/rpc/packet.js.map +1 -0
  90. package/lib/common/rpc/protocol-repository.d.ts +32 -0
  91. package/lib/common/rpc/protocol-repository.d.ts.map +1 -0
  92. package/lib/common/rpc/protocol-repository.js +118 -0
  93. package/lib/common/rpc/protocol-repository.js.map +1 -0
  94. package/lib/common/rpc/types.d.ts +13 -0
  95. package/lib/common/rpc/types.d.ts.map +1 -0
  96. package/lib/common/rpc/types.js +3 -0
  97. package/lib/common/rpc/types.js.map +1 -0
  98. package/lib/common/rpc/utils.d.ts +2 -0
  99. package/lib/common/rpc/utils.d.ts.map +1 -0
  100. package/lib/common/rpc/utils.js +10 -0
  101. package/lib/common/rpc/utils.js.map +1 -0
  102. package/lib/common/rpc-service/center.d.ts +12 -5
  103. package/lib/common/rpc-service/center.d.ts.map +1 -1
  104. package/lib/common/rpc-service/center.js +47 -42
  105. package/lib/common/rpc-service/center.js.map +1 -1
  106. package/lib/common/rpc-service/index.d.ts +6 -0
  107. package/lib/common/rpc-service/index.d.ts.map +1 -1
  108. package/lib/common/rpc-service/index.js +7 -0
  109. package/lib/common/rpc-service/index.js.map +1 -1
  110. package/lib/common/rpc-service/proxy/base.d.ts +32 -0
  111. package/lib/common/rpc-service/proxy/base.d.ts.map +1 -0
  112. package/lib/common/rpc-service/proxy/base.js +93 -0
  113. package/lib/common/rpc-service/proxy/base.js.map +1 -0
  114. package/lib/common/rpc-service/proxy/index.d.ts +5 -0
  115. package/lib/common/rpc-service/proxy/index.d.ts.map +1 -0
  116. package/lib/common/rpc-service/proxy/index.js +8 -0
  117. package/lib/common/rpc-service/proxy/index.js.map +1 -0
  118. package/lib/common/rpc-service/proxy/invoker.d.ts +14 -0
  119. package/lib/common/rpc-service/proxy/invoker.d.ts.map +1 -0
  120. package/lib/common/rpc-service/proxy/invoker.js +34 -0
  121. package/lib/common/rpc-service/proxy/invoker.js.map +1 -0
  122. package/lib/common/{proxy → rpc-service/proxy}/legacy.d.ts +3 -7
  123. package/lib/common/rpc-service/proxy/legacy.d.ts.map +1 -0
  124. package/lib/common/rpc-service/proxy/legacy.js +136 -0
  125. package/lib/common/rpc-service/proxy/legacy.js.map +1 -0
  126. package/lib/common/rpc-service/proxy/registry.d.ts +18 -0
  127. package/lib/common/rpc-service/proxy/registry.d.ts.map +1 -0
  128. package/lib/common/rpc-service/proxy/registry.js +46 -0
  129. package/lib/common/rpc-service/proxy/registry.js.map +1 -0
  130. package/lib/common/rpc-service/proxy/sumi.d.ts +9 -0
  131. package/lib/common/rpc-service/proxy/sumi.d.ts.map +1 -0
  132. package/lib/common/rpc-service/proxy/sumi.js +86 -0
  133. package/lib/common/rpc-service/proxy/sumi.js.map +1 -0
  134. package/lib/common/rpc-service/stub.d.ts +0 -1
  135. package/lib/common/rpc-service/stub.d.ts.map +1 -1
  136. package/lib/common/rpc-service/stub.js +3 -11
  137. package/lib/common/rpc-service/stub.js.map +1 -1
  138. package/lib/common/types.d.ts +1 -1
  139. package/lib/common/types.d.ts.map +1 -1
  140. package/lib/common/ws-channel.d.ts +97 -32
  141. package/lib/common/ws-channel.d.ts.map +1 -1
  142. package/lib/common/ws-channel.js +75 -51
  143. package/lib/common/ws-channel.js.map +1 -1
  144. package/lib/node/common-channel-handler.js +1 -1
  145. package/lib/node/common-channel-handler.js.map +1 -1
  146. package/package.json +5 -5
  147. package/src/browser/ws-channel-handler.ts +2 -6
  148. package/src/common/{connection → buffers}/buffers.ts +24 -3
  149. package/src/common/connection/drivers/base.ts +2 -6
  150. package/src/common/connection/drivers/frame-decoder.ts +170 -0
  151. package/src/common/connection/drivers/message-port.ts +42 -0
  152. package/src/common/connection/drivers/node-message-port.ts +3 -0
  153. package/src/common/connection/drivers/reconnecting-websocket.ts +4 -0
  154. package/src/common/connection/drivers/simple.ts +33 -0
  155. package/src/common/connection/drivers/socket.ts +11 -7
  156. package/src/common/connection/drivers/ws-websocket.ts +8 -0
  157. package/src/common/connection/types.ts +1 -1
  158. package/src/common/ext-rpc-protocol.ts +16 -51
  159. package/src/common/fury-extends/any.ts +144 -0
  160. package/src/common/fury-extends/one-of.ts +61 -0
  161. package/src/common/fury-extends/shared.ts +15 -0
  162. package/src/common/index.ts +2 -1
  163. package/src/common/protocols/common-server.ts +18 -0
  164. package/src/common/protocols/common.ts +9 -0
  165. package/src/common/rpc/connection.ts +345 -0
  166. package/src/common/rpc/errors.ts +5 -0
  167. package/src/common/rpc/index.ts +2 -0
  168. package/src/common/rpc/multiplexer.ts +105 -0
  169. package/src/common/rpc/packet.ts +104 -0
  170. package/src/common/rpc/protocol-repository.ts +180 -0
  171. package/src/common/rpc/types.ts +23 -0
  172. package/src/common/rpc/utils.ts +5 -0
  173. package/src/common/rpc-service/center.ts +59 -49
  174. package/src/common/rpc-service/index.ts +9 -0
  175. package/src/common/rpc-service/proxy/base.ts +126 -0
  176. package/src/common/rpc-service/proxy/index.ts +4 -0
  177. package/src/common/rpc-service/proxy/invoker.ts +45 -0
  178. package/src/common/rpc-service/proxy/legacy.ts +150 -0
  179. package/src/common/rpc-service/proxy/registry.ts +56 -0
  180. package/src/common/rpc-service/proxy/sumi.ts +81 -0
  181. package/src/common/rpc-service/stub.ts +4 -11
  182. package/src/common/types.ts +1 -1
  183. package/src/common/ws-channel.ts +100 -61
  184. package/src/node/common-channel-handler.ts +1 -1
  185. package/lib/common/connection/buffers.d.ts.map +0 -1
  186. package/lib/common/connection/buffers.js.map +0 -1
  187. package/lib/common/connection/drivers/empty.d.ts.map +0 -1
  188. package/lib/common/connection/drivers/empty.js +0 -21
  189. package/lib/common/connection/drivers/empty.js.map +0 -1
  190. package/lib/common/connection/drivers/stream-decoder.d.ts +0 -67
  191. package/lib/common/connection/drivers/stream-decoder.d.ts.map +0 -1
  192. package/lib/common/connection/drivers/stream-decoder.js +0 -171
  193. package/lib/common/connection/drivers/stream-decoder.js.map +0 -1
  194. package/lib/common/proxy/base.d.ts +0 -22
  195. package/lib/common/proxy/base.d.ts.map +0 -1
  196. package/lib/common/proxy/base.js +0 -47
  197. package/lib/common/proxy/base.js.map +0 -1
  198. package/lib/common/proxy/index.d.ts +0 -8
  199. package/lib/common/proxy/index.d.ts.map +0 -1
  200. package/lib/common/proxy/index.js +0 -12
  201. package/lib/common/proxy/index.js.map +0 -1
  202. package/lib/common/proxy/legacy.d.ts.map +0 -1
  203. package/lib/common/proxy/legacy.js +0 -183
  204. package/lib/common/proxy/legacy.js.map +0 -1
  205. package/src/common/connection/drivers/empty.ts +0 -19
  206. package/src/common/connection/drivers/stream-decoder.ts +0 -196
  207. package/src/common/proxy/base.ts +0 -67
  208. package/src/common/proxy/index.ts +0 -10
  209. package/src/common/proxy/legacy.ts +0 -200
@@ -1,6 +1,6 @@
1
1
  import type net from 'net';
2
2
 
3
- import Fury, { Type } from '@furyjs/fury';
3
+ import { Type } from '@furyjs/fury';
4
4
  import type WebSocket from 'ws';
5
5
 
6
6
  import { EventEmitter } from '@opensumi/events';
@@ -8,17 +8,11 @@ import { DisposableCollection } from '@opensumi/ide-core-common';
8
8
 
9
9
  import { NetSocketConnection, WSWebSocketConnection } from './connection';
10
10
  import { IConnectionShape } from './connection/types';
11
+ import { oneOf } from './fury-extends/one-of';
11
12
  import { createWebSocketConnection } from './message';
13
+ import { SumiConnection, ISumiConnectionOptions } from './rpc/connection';
12
14
  import { ILogger } from './types';
13
15
 
14
- export interface IWebSocket {
15
- send(content: string): void;
16
- close(...args: any[]): void;
17
- onMessage(cb: (data: any) => void): void;
18
- onError(cb: (reason: any) => void): void;
19
- onClose(cb: (code: number, reason: string) => void): void;
20
- }
21
-
22
16
  /**
23
17
  * `ping` and `pong` are used to detect whether the connection is alive.
24
18
  */
@@ -68,6 +62,12 @@ export interface DataMessage {
68
62
  content: string;
69
63
  }
70
64
 
65
+ export interface BinaryMessage {
66
+ kind: 'binary';
67
+ id: string;
68
+ binary: Uint8Array;
69
+ }
70
+
71
71
  export interface CloseMessage {
72
72
  kind: 'close';
73
73
  id: string;
@@ -75,7 +75,14 @@ export interface CloseMessage {
75
75
  reason: string;
76
76
  }
77
77
 
78
- export type ChannelMessage = PingMessage | PongMessage | OpenMessage | ServerReadyMessage | DataMessage | CloseMessage;
78
+ export type ChannelMessage =
79
+ | PingMessage
80
+ | PongMessage
81
+ | OpenMessage
82
+ | ServerReadyMessage
83
+ | DataMessage
84
+ | BinaryMessage
85
+ | CloseMessage;
79
86
 
80
87
  export interface IWSChannelCreateOptions {
81
88
  /**
@@ -86,12 +93,13 @@ export interface IWSChannelCreateOptions {
86
93
  logger?: ILogger;
87
94
  }
88
95
 
89
- export class WSChannel implements IWebSocket {
96
+ export class WSChannel {
90
97
  protected emitter = new EventEmitter<{
91
98
  message: [data: string];
92
99
  open: [id: string];
93
100
  reopen: [];
94
101
  close: [code?: number, reason?: string];
102
+ binary: [data: Uint8Array];
95
103
  }>();
96
104
 
97
105
  public id: string;
@@ -107,7 +115,7 @@ export class WSChannel implements IWebSocket {
107
115
 
108
116
  disposable.push(
109
117
  connection.onMessage((data) => {
110
- channel.handleMessage(parse(data));
118
+ channel.dispatchChannelMessage(parse(data));
111
119
  }),
112
120
  );
113
121
  disposable.push(channel);
@@ -142,16 +150,19 @@ export class WSChannel implements IWebSocket {
142
150
  this.LOG_TAG = `[WSChannel] [id:${id}]`;
143
151
  }
144
152
 
145
- // server
146
153
  onMessage(cb: (data: string) => any) {
147
154
  return this.emitter.on('message', cb);
148
155
  }
156
+ onBinary(cb: (data: Uint8Array) => any) {
157
+ return this.emitter.on('binary', cb);
158
+ }
149
159
  onOpen(cb: (id: string) => void) {
150
160
  return this.emitter.on('open', cb);
151
161
  }
152
162
  onReopen(cb: () => void) {
153
163
  return this.emitter.on('reopen', cb);
154
164
  }
165
+
155
166
  serverReady() {
156
167
  this.connection.send(
157
168
  stringify({
@@ -161,15 +172,20 @@ export class WSChannel implements IWebSocket {
161
172
  );
162
173
  }
163
174
 
164
- handleMessage(msg: ChannelMessage) {
165
- if (msg.kind === 'server-ready') {
166
- this.emitter.emit('open', msg.id);
167
- } else if (msg.kind === 'data') {
168
- this.emitter.emit('message', msg.content);
175
+ dispatchChannelMessage(msg: ChannelMessage) {
176
+ switch (msg.kind) {
177
+ case 'server-ready':
178
+ this.emitter.emit('open', msg.id);
179
+ break;
180
+ case 'data':
181
+ this.emitter.emit('message', msg.content);
182
+ break;
183
+ case 'binary':
184
+ this.emitter.emit('binary', msg.binary);
185
+ break;
169
186
  }
170
187
  }
171
188
 
172
- // client
173
189
  open(path: string, clientId: string) {
174
190
  this.channelPath = path;
175
191
  this.connection.send(
@@ -181,6 +197,7 @@ export class WSChannel implements IWebSocket {
181
197
  }),
182
198
  );
183
199
  }
200
+
184
201
  send(content: string) {
185
202
  this.connection.send(
186
203
  stringify({
@@ -190,8 +207,15 @@ export class WSChannel implements IWebSocket {
190
207
  }),
191
208
  );
192
209
  }
193
- hasMessageListener() {
194
- return this.emitter.hasListener('message');
210
+
211
+ sendBinary(data: Uint8Array) {
212
+ this.connection.send(
213
+ stringify({
214
+ kind: 'binary',
215
+ id: this.id,
216
+ binary: data,
217
+ }),
218
+ );
195
219
  }
196
220
  onError() {}
197
221
  close(code?: number, reason?: string) {
@@ -203,69 +227,84 @@ export class WSChannel implements IWebSocket {
203
227
  onClose(cb: (code: number, reason: string) => void) {
204
228
  return this.emitter.on('close', cb);
205
229
  }
230
+ onceClose(cb: (code: number, reason: string) => void) {
231
+ return this.emitter.once('close', cb);
232
+ }
206
233
  createMessageConnection() {
207
234
  return createWebSocketConnection(this);
208
235
  }
209
- dispose() {
210
- this.emitter.dispose();
211
- }
212
236
 
213
- listen(channel: WSChannel) {
214
- channel.onMessage((data) => {
215
- this.send(data);
216
- });
217
- channel.onClose((code, reason) => {
218
- this.close(code, reason);
219
- });
220
- channel.onReopen(() => {
221
- this.fireReopen();
222
- });
237
+ createConnection() {
238
+ return {
239
+ onceClose: (cb) => this.onceClose(cb),
240
+ onMessage: (cb) => this.onBinary(cb),
241
+ send: (data) => {
242
+ this.sendBinary(data);
243
+ },
244
+ dispose() {},
245
+ };
223
246
  }
224
- }
225
-
226
- export type MessageString = string & {
227
- origin?: any;
228
- };
229
-
230
- /**
231
- * 路径信息 ${pre}-${index}
232
- */
233
- export class ChildConnectPath {
234
- public pathPre = 'child_connect-';
235
247
 
236
- getConnectPath(index: number, clientId: string) {
237
- return `${this.pathPre}${index + 1}`;
248
+ createSumiConnection(options: ISumiConnectionOptions = {}) {
249
+ const conn = new SumiConnection(this.createConnection(), options);
250
+ return conn;
238
251
  }
239
252
 
240
- parseInfo(pathString: string) {
241
- const list = pathString.split('-');
242
-
243
- return {
244
- pre: list[0],
245
- index: list[1],
246
- clientId: list[2],
247
- };
253
+ dispose() {
254
+ this.emitter.dispose();
248
255
  }
249
256
  }
250
257
 
251
- const fury = new Fury({});
258
+ export const PingProtocol = Type.object('ping', {
259
+ clientId: Type.string(),
260
+ id: Type.string(),
261
+ });
262
+
263
+ export const PongProtocol = Type.object('pong', {
264
+ clientId: Type.string(),
265
+ id: Type.string(),
266
+ });
252
267
 
253
- export const wsChannelProtocol = Type.object('ws-channel-protocol', {
254
- kind: Type.string(),
268
+ export const OpenProtocol = Type.object('open', {
255
269
  clientId: Type.string(),
256
270
  id: Type.string(),
257
271
  path: Type.string(),
272
+ });
273
+
274
+ export const ServerReadyProtocol = Type.object('server-ready', {
275
+ id: Type.string(),
276
+ });
277
+
278
+ export const DataProtocol = Type.object('data', {
279
+ id: Type.string(),
258
280
  content: Type.string(),
281
+ });
282
+
283
+ export const BinaryProtocol = Type.object('binary', {
284
+ id: Type.string(),
285
+ binary: Type.binary(),
286
+ });
287
+
288
+ export const CloseProtocol = Type.object('close', {
289
+ id: Type.string(),
259
290
  code: Type.uint32(),
260
291
  reason: Type.string(),
261
292
  });
262
293
 
263
- const wsChannelProtocolSerializer = fury.registerSerializer(wsChannelProtocol);
294
+ const serializer = oneOf([
295
+ PingProtocol,
296
+ PongProtocol,
297
+ OpenProtocol,
298
+ ServerReadyProtocol,
299
+ DataProtocol,
300
+ BinaryProtocol,
301
+ CloseProtocol,
302
+ ]);
264
303
 
265
304
  export function stringify(obj: ChannelMessage): Uint8Array {
266
- return wsChannelProtocolSerializer.serialize(obj);
305
+ return serializer.serialize(obj);
267
306
  }
268
307
 
269
308
  export function parse(input: Uint8Array): ChannelMessage {
270
- return wsChannelProtocolSerializer.deserialize(input) as any;
309
+ return serializer.deserialize(input) as any;
271
310
  }
@@ -161,7 +161,7 @@ export class CommonChannelHandler extends WebSocketHandler {
161
161
  const { id } = msgObj;
162
162
  const channel = this.channelMap.get(id);
163
163
  if (channel) {
164
- channel.handleMessage(msgObj);
164
+ channel.dispatchChannelMessage(msgObj);
165
165
  } else {
166
166
  this.logger.warn(`The channel(${id}) was not found`);
167
167
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../../../src/common/connection/buffers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAgB,IAAI,CAClB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,QAGnB;AAED,qBAAa,OAAO;IAClB,OAAO,eAAsB;IAC7B,SAAS,CAAC,IAAI,SAAK;IAEnB,IAAI,UAAU,WAEb;IAED,IAAI,CAAC,MAAM,EAAE,UAAU;IAKvB,OAAO,CAAC,MAAM,EAAE,UAAU;IAK1B,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAsClC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAkB/C,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,SAAI,EAAE,WAAW,SAAI,EAAE,SAAS,SAAY;IAIhF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE;IAiFhE,GAAG,CAAC,CAAC,EAAE,MAAM;IAKb,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKxB,MAAM,CAAC,MAAM,SAAI;IAIjB,OAAO;CAIR;AAED;;;;;;GAMG;AACH,qBAAa,MAAM;IAIL,SAAS,CAAC,OAAO,EAAE,OAAO;IAAS,MAAM;IAHrD,SAAS,CAAC,UAAU,SAAK;IACzB,SAAS,CAAC,WAAW,SAAK;gBAEJ,OAAO,EAAE,OAAO,EAAS,MAAM,SAAI;IAIzD,SAAS,CAAC,cAAc;IAYxB;;OAEG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,KAAK,WAER;IAED;;OAEG;IACH,IAAI,UAAU,WAEb;IAEA,QAAQ;IAiBT,IAAI,CAAC,CAAC,EAAE,MAAM;IAKd,MAAM,CAAC,CAAC,EAAE,MAAM;IAKhB,OAAO;IAKP,KAAK;CAKN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"buffers.js","sourceRoot":"","sources":["../../../src/common/connection/buffers.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../../../src/common/connection/drivers/empty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,qBAAa,eAAgB,SAAQ,cAAc,CAAC,UAAU,CAAC;IAC7D,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAG5B,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,WAAW;IAKtD,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,WAAW;CAKvC"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmptyConnection = void 0;
4
- const base_1 = require("./base");
5
- class EmptyConnection extends base_1.BaseConnection {
6
- send(data) {
7
- // do nothing
8
- }
9
- onMessage(cb) {
10
- return {
11
- dispose: () => { },
12
- };
13
- }
14
- onceClose(cb) {
15
- return {
16
- dispose: () => { },
17
- };
18
- }
19
- }
20
- exports.EmptyConnection = EmptyConnection;
21
- //# sourceMappingURL=empty.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/empty.ts"],"names":[],"mappings":";;;AAEA,iCAAwC;AAExC,MAAa,eAAgB,SAAQ,qBAA0B;IAC7D,IAAI,CAAC,IAAgB;QACnB,aAAa;IACf,CAAC;IACD,SAAS,CAAC,EAA8B;QACtC,OAAO;YACL,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAC;IACJ,CAAC;IACD,SAAS,CAAC,EAAc;QACtB,OAAO;YACL,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAC;IACJ,CAAC;CACF;AAdD,0CAcC"}
@@ -1,67 +0,0 @@
1
- import { EventEmitter } from '@opensumi/events';
2
- import { Buffers } from '../buffers';
3
- /**
4
- * You can use `Buffer.from('Sumi')` to get this magic number
5
- */
6
- export declare const kMagicNumber = 1400204649;
7
- /**
8
- * When we send data through net.Socket, the data is not guaranteed to be sent as a whole.
9
- *
10
- * So we need to add a header to the data, so that the receiver can know the length of the data,
11
- * The header is 4 bytes, the first 4 bytes is a magic number, which is `Sumi` in little endian.
12
- * use magic number can help us to detect the start of the packet in the stream.
13
- *
14
- * The next 4 bytes is a varUInt32, which means the length of the following data, and
15
- * the following data is the content.
16
- */
17
- export declare function createStreamPacket(content: Uint8Array): import("@furyjs/fury/dist/lib/platformBuffer").PlatformBuffer;
18
- export declare class StreamPacketDecoder {
19
- protected emitter: EventEmitter<{
20
- data: [Uint8Array];
21
- }>;
22
- protected buffers: Buffers;
23
- protected cursor: import("../buffers").Cursor;
24
- protected reader: {
25
- getCursor: () => number;
26
- setCursor: (v: number) => number;
27
- varInt32: () => number;
28
- varInt64: () => bigint;
29
- varUInt32: () => number;
30
- varUInt64: () => bigint;
31
- int8: () => number;
32
- buffer: (len: number) => import("@furyjs/fury/dist/lib/platformBuffer").PlatformBuffer;
33
- bufferRef: (len: number) => Uint8Array;
34
- uint8: () => number;
35
- reset: (ab: Uint8Array) => void;
36
- stringUtf8At: (start: number, len: number) => string;
37
- stringUtf8: (len: number) => string;
38
- stringLatin1: (len: number) => string;
39
- stringOfVarUInt32: () => string;
40
- double: () => number;
41
- float: () => number;
42
- uint16: () => number;
43
- int16: () => number;
44
- uint64: () => bigint;
45
- skip: (len: number) => void;
46
- int64: () => bigint;
47
- sliLong: () => bigint;
48
- uint32: () => number;
49
- int32: () => number;
50
- };
51
- protected state: number;
52
- protected contentLength: number;
53
- reset(): void;
54
- push(chunk: Uint8Array): void;
55
- protected readPacket(): boolean;
56
- /**
57
- * First we read the first 4 bytes, if it is not magic 4 bytes
58
- * discard it and continue to read the next byte until we get magic 4 bytes
59
- * Then read the next byte, this is a varUint32, which means the length of the following data
60
- * Then read the following data, until we get the length of varUint32, then return this data and continue to read the next packet
61
- */
62
- protected readHeader(): boolean;
63
- protected readMagicNumber(): void;
64
- onData(cb: (data: Uint8Array) => void): () => void;
65
- dispose(): void;
66
- }
67
- //# sourceMappingURL=stream-decoder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-decoder.d.ts","sourceRoot":"","sources":["../../../../src/common/connection/drivers/stream-decoder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,YAAY,aAAa,CAAC;AAIvC;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,iEAMrD;AAED,qBAAa,mBAAmB;IAC9B,SAAS,CAAC,OAAO;cACT,CAAC,UAAU,CAAC;OACf;IAEL,SAAS,CAAC,OAAO,UAAiB;IAClC,SAAS,CAAC,MAAM,8BAAyB;IAEzC,SAAS,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;MAAoB;IAEpC,SAAS,CAAC,KAAK,SAAK;IACpB,SAAS,CAAC,aAAa,SAAK;IAE5B,KAAK;IAOL,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAS7B,SAAS,CAAC,UAAU,IAAI,OAAO;IA2B/B;;;;;OAKG;IACH,SAAS,CAAC,UAAU;IAmCpB,SAAS,CAAC,eAAe;IAwDzB,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI;IAIrC,OAAO;CAMR"}
@@ -1,171 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StreamPacketDecoder = exports.createStreamPacket = exports.kMagicNumber = void 0;
4
- const reader_1 = require("@furyjs/fury/dist/lib/reader");
5
- const writer_1 = require("@furyjs/fury/dist/lib/writer");
6
- const events_1 = require("@opensumi/events");
7
- const buffers_1 = require("../buffers");
8
- /**
9
- * You can use `Buffer.from('Sumi')` to get this magic number
10
- */
11
- exports.kMagicNumber = 0x53756d69;
12
- const writer = (0, writer_1.BinaryWriter)({});
13
- /**
14
- * When we send data through net.Socket, the data is not guaranteed to be sent as a whole.
15
- *
16
- * So we need to add a header to the data, so that the receiver can know the length of the data,
17
- * The header is 4 bytes, the first 4 bytes is a magic number, which is `Sumi` in little endian.
18
- * use magic number can help us to detect the start of the packet in the stream.
19
- *
20
- * The next 4 bytes is a varUInt32, which means the length of the following data, and
21
- * the following data is the content.
22
- */
23
- function createStreamPacket(content) {
24
- writer.reset();
25
- writer.uint32(exports.kMagicNumber);
26
- writer.varUInt32(content.byteLength);
27
- writer.buffer(content);
28
- return writer.dump();
29
- }
30
- exports.createStreamPacket = createStreamPacket;
31
- class StreamPacketDecoder {
32
- constructor() {
33
- this.emitter = new events_1.EventEmitter();
34
- this.buffers = new buffers_1.Buffers();
35
- this.cursor = this.buffers.cursor();
36
- this.reader = (0, reader_1.BinaryReader)({});
37
- this.state = 0;
38
- this.contentLength = 0;
39
- }
40
- reset() {
41
- this.state = 0;
42
- this.contentLength = 0;
43
- this.cursor.reset();
44
- }
45
- push(chunk) {
46
- this.buffers.push(chunk);
47
- let done = false;
48
- while (!done) {
49
- done = this.readPacket();
50
- }
51
- }
52
- readPacket() {
53
- const found = this.readHeader();
54
- if (found) {
55
- const start = this.cursor.offset;
56
- const end = start + this.contentLength;
57
- const binary = this.buffers.slice(start, end);
58
- this.emitter.emit('data', binary);
59
- if (this.buffers.byteLength > end) {
60
- this.cursor.moveTo(end);
61
- this.state = 0;
62
- this.contentLength = 0;
63
- // has more data, continue to parse
64
- return false;
65
- }
66
- // delete used buffers
67
- this.buffers.splice(0, end);
68
- this.reset();
69
- }
70
- return true;
71
- }
72
- /**
73
- * First we read the first 4 bytes, if it is not magic 4 bytes
74
- * discard it and continue to read the next byte until we get magic 4 bytes
75
- * Then read the next byte, this is a varUint32, which means the length of the following data
76
- * Then read the following data, until we get the length of varUint32, then return this data and continue to read the next packet
77
- */
78
- readHeader() {
79
- if (this.buffers.byteLength === 0) {
80
- return false;
81
- }
82
- if (this.state !== 4) {
83
- this.readMagicNumber();
84
- }
85
- if (this.state !== 4) {
86
- // Not enough data yet, wait for more data
87
- return false;
88
- }
89
- if (this.cursor.offset + 4 > this.buffers.byteLength) {
90
- // Not enough data yet, wait for more data
91
- return false;
92
- }
93
- if (!this.contentLength) {
94
- // read the content length
95
- const buffers = this.buffers.slice(this.cursor.offset, this.cursor.offset + 4);
96
- this.reader.reset(buffers);
97
- this.contentLength = this.reader.varUInt32();
98
- this.cursor.move(this.reader.getCursor());
99
- }
100
- if (this.cursor.offset + this.contentLength > this.buffers.byteLength) {
101
- // Not enough data yet, wait for more data
102
- return false;
103
- }
104
- return true;
105
- }
106
- readMagicNumber() {
107
- const iter = this.cursor.iterator();
108
- let result = iter.next();
109
- while (!result.done) {
110
- // Fury use little endian to store data
111
- switch (result.value) {
112
- case 0x69:
113
- switch (this.state) {
114
- case 0:
115
- this.state = 1;
116
- break;
117
- default:
118
- this.state = 0;
119
- break;
120
- }
121
- break;
122
- case 0x6d:
123
- switch (this.state) {
124
- case 1:
125
- this.state = 2;
126
- break;
127
- default:
128
- this.state = 0;
129
- break;
130
- }
131
- break;
132
- case 0x75:
133
- switch (this.state) {
134
- case 2:
135
- this.state = 3;
136
- break;
137
- default:
138
- this.state = 0;
139
- break;
140
- }
141
- break;
142
- case 0x53:
143
- switch (this.state) {
144
- case 3:
145
- this.state = 4;
146
- iter.return();
147
- break;
148
- default:
149
- this.state = 0;
150
- break;
151
- }
152
- break;
153
- default:
154
- this.state = 0;
155
- break;
156
- }
157
- result = iter.next();
158
- }
159
- }
160
- onData(cb) {
161
- return this.emitter.on('data', cb);
162
- }
163
- dispose() {
164
- this.reader = (0, reader_1.BinaryReader)({});
165
- this.emitter.dispose();
166
- this.buffers.dispose();
167
- this.cursor.dispose();
168
- }
169
- }
170
- exports.StreamPacketDecoder = StreamPacketDecoder;
171
- //# sourceMappingURL=stream-decoder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream-decoder.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/stream-decoder.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { Deferred } from '@opensumi/ide-core-common';
2
- import { ILogger, IRPCServiceMap } from '../types';
3
- import { ICapturedMessage } from '../utils';
4
- interface IBaseConnection {
5
- listen(): void;
6
- }
7
- export declare abstract class ProxyBase<T extends IBaseConnection> {
8
- target?: IRPCServiceMap | undefined;
9
- protected proxyService: any;
10
- protected logger: ILogger;
11
- protected connection: T;
12
- protected connectionPromise: Deferred<void>;
13
- protected abstract engine: 'legacy';
14
- constructor(target?: IRPCServiceMap | undefined, logger?: ILogger);
15
- protected capture(message: ICapturedMessage): void;
16
- listen(connection: T): void;
17
- listenService(service: IRPCServiceMap): void;
18
- abstract getInvokeProxy(): any;
19
- protected abstract bindOnRequest(service: IRPCServiceMap, cb: (service: IRPCServiceMap, prop: string) => void): void;
20
- }
21
- export {};
22
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/common/proxy/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAkC,MAAM,UAAU,CAAC;AAE5E,UAAU,eAAe;IACvB,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,8BAAsB,SAAS,CAAC,CAAC,SAAS,eAAe;IAUpC,MAAM,CAAC;IAT1B,SAAS,CAAC,YAAY,EAAE,GAAG,CAAM;IAEjC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAExB,SAAS,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAwB;IAEnE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAEjB,MAAM,CAAC,4BAAgB,EAAE,MAAM,CAAC,EAAE,OAAO;IAK5D,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAUlD,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI;IAWpB,aAAa,CAAC,OAAO,EAAE,cAAc;IAkB5C,QAAQ,CAAC,cAAc,IAAI,GAAG;IAE9B,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CACrH"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProxyBase = void 0;
4
- const ide_core_common_1 = require("@opensumi/ide-core-common");
5
- const utils_1 = require("../utils");
6
- class ProxyBase {
7
- constructor(target, logger) {
8
- this.target = target;
9
- this.proxyService = {};
10
- this.connectionPromise = new ide_core_common_1.Deferred();
11
- this.logger = logger || console;
12
- }
13
- // capture messages for opensumi devtools
14
- capture(message) {
15
- const capturer = (0, utils_1.getCapturer)();
16
- if ((0, ide_core_common_1.isDefined)(capturer)) {
17
- capturer(Object.assign(Object.assign({}, message), { engine: this.engine }));
18
- }
19
- }
20
- listen(connection) {
21
- this.connection = connection;
22
- if (this.target) {
23
- this.listenService(this.target);
24
- }
25
- connection.listen();
26
- this.connectionPromise.resolve();
27
- }
28
- listenService(service) {
29
- if (this.connection) {
30
- this.bindOnRequest(service, (service, prop) => {
31
- this.proxyService[prop] = service[prop].bind(service);
32
- });
33
- }
34
- else {
35
- if (!this.target) {
36
- this.target = {};
37
- }
38
- const methods = (0, utils_1.getServiceMethods)(service);
39
- for (const method of methods) {
40
- // `getServiceMethods` ensure that method is a function
41
- this.target[method] = service[method].bind(service);
42
- }
43
- }
44
- }
45
- }
46
- exports.ProxyBase = ProxyBase;
47
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/common/proxy/base.ts"],"names":[],"mappings":";;;AAAA,+DAAgE;AAGhE,oCAA4E;AAM5E,MAAsB,SAAS;IAU7B,YAAmB,MAAuB,EAAE,MAAgB;QAAzC,WAAM,GAAN,MAAM,CAAiB;QAThC,iBAAY,GAAQ,EAAE,CAAC;QAKvB,sBAAiB,GAAmB,IAAI,0BAAQ,EAAQ,CAAC;QAKjE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC;IAClC,CAAC;IAED,yCAAyC;IAC/B,OAAO,CAAC,OAAyB;QACzC,MAAM,QAAQ,GAAG,IAAA,mBAAW,GAAE,CAAC;QAC/B,IAAI,IAAA,2BAAS,EAAC,QAAQ,CAAC,EAAE;YACvB,QAAQ,iCACH,OAAO,KACV,MAAM,EAAE,IAAI,CAAC,MAAM,IACnB,CAAC;SACJ;IACH,CAAC;IAED,MAAM,CAAC,UAAa;QAClB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACjC;QAED,UAAU,CAAC,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAEM,aAAa,CAAC,OAAuB;QAC1C,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,CAAC,MAAM,GAAG,EAAS,CAAC;aACzB;YAED,MAAM,OAAO,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;YAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,uDAAuD;gBACtD,IAAI,CAAC,MAAc,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/D;SACF;IACH,CAAC;CAKF;AAzDD,8BAyDC"}