@opensumi/ide-connection 2.27.3-next-1706520813.0 → 2.27.3-rc-1706687185.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 (158) hide show
  1. package/lib/browser/ws-channel-handler.d.ts +9 -7
  2. package/lib/browser/ws-channel-handler.d.ts.map +1 -1
  3. package/lib/browser/ws-channel-handler.js +65 -64
  4. package/lib/browser/ws-channel-handler.js.map +1 -1
  5. package/lib/common/connect.d.ts +6 -57
  6. package/lib/common/connect.d.ts.map +1 -1
  7. package/lib/common/connect.js +9 -168
  8. package/lib/common/connect.js.map +1 -1
  9. package/lib/common/connection/buffers.d.ts +55 -0
  10. package/lib/common/connection/buffers.d.ts.map +1 -0
  11. package/lib/common/connection/buffers.js +244 -0
  12. package/lib/common/connection/buffers.js.map +1 -0
  13. package/lib/common/connection/drivers/base.d.ts +9 -0
  14. package/lib/common/connection/drivers/base.d.ts.map +1 -0
  15. package/lib/common/connection/drivers/base.js +11 -0
  16. package/lib/common/connection/drivers/base.js.map +1 -0
  17. package/lib/common/connection/drivers/empty.d.ts +8 -0
  18. package/lib/common/connection/drivers/empty.d.ts.map +1 -0
  19. package/lib/common/connection/drivers/empty.js +21 -0
  20. package/lib/common/connection/drivers/empty.js.map +1 -0
  21. package/lib/common/connection/drivers/index.d.ts +6 -0
  22. package/lib/common/connection/drivers/index.d.ts.map +1 -0
  23. package/lib/common/connection/drivers/index.js +9 -0
  24. package/lib/common/connection/drivers/index.js.map +1 -0
  25. package/lib/common/connection/drivers/node-message-port.d.ts +12 -0
  26. package/lib/common/connection/drivers/node-message-port.d.ts.map +1 -0
  27. package/lib/common/connection/drivers/node-message-port.js +31 -0
  28. package/lib/common/connection/drivers/node-message-port.js.map +1 -0
  29. package/lib/common/connection/drivers/reconnecting-websocket.d.ts +15 -0
  30. package/lib/common/connection/drivers/reconnecting-websocket.d.ts.map +1 -0
  31. package/lib/common/connection/drivers/reconnecting-websocket.js +83 -0
  32. package/lib/common/connection/drivers/reconnecting-websocket.js.map +1 -0
  33. package/lib/common/connection/drivers/socket.d.ts +17 -0
  34. package/lib/common/connection/drivers/socket.d.ts.map +1 -0
  35. package/lib/common/connection/drivers/socket.js +56 -0
  36. package/lib/common/connection/drivers/socket.js.map +1 -0
  37. package/lib/common/connection/drivers/stream-decoder.d.ts +67 -0
  38. package/lib/common/connection/drivers/stream-decoder.d.ts.map +1 -0
  39. package/lib/common/connection/drivers/stream-decoder.js +171 -0
  40. package/lib/common/connection/drivers/stream-decoder.js.map +1 -0
  41. package/lib/common/connection/drivers/utils.d.ts +12 -0
  42. package/lib/common/connection/drivers/utils.d.ts.map +1 -0
  43. package/lib/common/connection/drivers/utils.js +49 -0
  44. package/lib/common/connection/drivers/utils.js.map +1 -0
  45. package/lib/common/connection/drivers/ws-websocket.d.ts +11 -0
  46. package/lib/common/connection/drivers/ws-websocket.d.ts.map +1 -0
  47. package/lib/common/connection/drivers/ws-websocket.js +31 -0
  48. package/lib/common/connection/drivers/ws-websocket.js.map +1 -0
  49. package/lib/common/connection/index.d.ts +2 -0
  50. package/lib/common/connection/index.d.ts.map +1 -0
  51. package/lib/common/connection/index.js +5 -0
  52. package/lib/common/connection/index.js.map +1 -0
  53. package/lib/common/connection/types.d.ts +7 -0
  54. package/lib/common/connection/types.d.ts.map +1 -0
  55. package/lib/common/connection/types.js +3 -0
  56. package/lib/common/connection/types.js.map +1 -0
  57. package/lib/common/constants.d.ts +2 -0
  58. package/lib/common/constants.d.ts.map +1 -0
  59. package/lib/common/constants.js +5 -0
  60. package/lib/common/constants.js.map +1 -0
  61. package/lib/common/{rpcProtocol.d.ts → ext-rpc-protocol.d.ts} +10 -11
  62. package/lib/common/ext-rpc-protocol.d.ts.map +1 -0
  63. package/lib/common/{rpcProtocol.js → ext-rpc-protocol.js} +22 -19
  64. package/lib/common/ext-rpc-protocol.js.map +1 -0
  65. package/lib/common/index.d.ts +2 -1
  66. package/lib/common/index.d.ts.map +1 -1
  67. package/lib/common/index.js +2 -1
  68. package/lib/common/index.js.map +1 -1
  69. package/lib/common/proxy/base.d.ts +22 -0
  70. package/lib/common/proxy/base.d.ts.map +1 -0
  71. package/lib/common/proxy/base.js +47 -0
  72. package/lib/common/proxy/base.js.map +1 -0
  73. package/lib/common/proxy/index.d.ts +8 -0
  74. package/lib/common/proxy/index.d.ts.map +1 -0
  75. package/lib/common/proxy/index.js +12 -0
  76. package/lib/common/proxy/index.js.map +1 -0
  77. package/lib/common/proxy/legacy.d.ts +23 -0
  78. package/lib/common/proxy/legacy.d.ts.map +1 -0
  79. package/lib/common/proxy/legacy.js +183 -0
  80. package/lib/common/proxy/legacy.js.map +1 -0
  81. package/lib/common/rpc-service/center.d.ts +20 -0
  82. package/lib/common/rpc-service/center.d.ts.map +1 -0
  83. package/lib/common/rpc-service/center.js +100 -0
  84. package/lib/common/rpc-service/center.js.map +1 -0
  85. package/lib/common/rpc-service/index.d.ts +3 -0
  86. package/lib/common/rpc-service/index.d.ts.map +1 -0
  87. package/lib/common/rpc-service/index.js +6 -0
  88. package/lib/common/rpc-service/index.js.map +1 -0
  89. package/lib/common/rpc-service/stub.d.ts +15 -0
  90. package/lib/common/rpc-service/stub.d.ts.map +1 -0
  91. package/lib/common/rpc-service/stub.js +48 -0
  92. package/lib/common/rpc-service/stub.js.map +1 -0
  93. package/lib/common/types.d.ts +15 -0
  94. package/lib/common/types.d.ts.map +1 -0
  95. package/lib/common/types.js +9 -0
  96. package/lib/common/types.js.map +1 -0
  97. package/lib/common/utils.d.ts +4 -2
  98. package/lib/common/utils.d.ts.map +1 -1
  99. package/lib/common/utils.js +32 -9
  100. package/lib/common/utils.js.map +1 -1
  101. package/lib/common/ws-channel.d.ts +104 -27
  102. package/lib/common/ws-channel.d.ts.map +1 -1
  103. package/lib/common/ws-channel.js +96 -27
  104. package/lib/common/ws-channel.js.map +1 -1
  105. package/lib/node/common-channel-handler.d.ts +18 -16
  106. package/lib/node/common-channel-handler.d.ts.map +1 -1
  107. package/lib/node/common-channel-handler.js +42 -59
  108. package/lib/node/common-channel-handler.js.map +1 -1
  109. package/lib/node/index.d.ts +0 -3
  110. package/lib/node/index.d.ts.map +1 -1
  111. package/lib/node/index.js +0 -5
  112. package/lib/node/index.js.map +1 -1
  113. package/lib/node/ws.d.ts +1 -1
  114. package/lib/node/ws.d.ts.map +1 -1
  115. package/lib/node/ws.js +2 -0
  116. package/lib/node/ws.js.map +1 -1
  117. package/package.json +9 -7
  118. package/src/browser/ws-channel-handler.ts +82 -70
  119. package/src/common/connect.ts +7 -193
  120. package/src/common/connection/buffers.ts +284 -0
  121. package/src/common/connection/drivers/base.ts +15 -0
  122. package/src/common/connection/drivers/empty.ts +19 -0
  123. package/src/common/connection/drivers/index.ts +5 -0
  124. package/src/common/connection/drivers/node-message-port.ts +33 -0
  125. package/src/common/connection/drivers/reconnecting-websocket.ts +86 -0
  126. package/src/common/connection/drivers/socket.ts +62 -0
  127. package/src/common/connection/drivers/stream-decoder.ts +196 -0
  128. package/src/common/connection/drivers/utils.ts +52 -0
  129. package/src/common/connection/drivers/ws-websocket.ts +31 -0
  130. package/src/common/connection/index.ts +1 -0
  131. package/src/common/connection/types.ts +7 -0
  132. package/src/common/constants.ts +1 -0
  133. package/src/common/{rpcProtocol.ts → ext-rpc-protocol.ts} +43 -31
  134. package/src/common/index.ts +2 -1
  135. package/src/common/proxy/base.ts +67 -0
  136. package/src/common/proxy/index.ts +10 -0
  137. package/src/common/proxy/legacy.ts +200 -0
  138. package/src/common/rpc-service/center.ts +124 -0
  139. package/src/common/rpc-service/index.ts +2 -0
  140. package/src/common/rpc-service/stub.ts +49 -0
  141. package/src/common/types.ts +17 -0
  142. package/src/common/utils.ts +31 -8
  143. package/src/common/ws-channel.ts +175 -48
  144. package/src/node/common-channel-handler.ts +68 -80
  145. package/src/node/index.ts +0 -5
  146. package/src/node/ws.ts +3 -1
  147. package/lib/common/proxy.d.ts +0 -47
  148. package/lib/common/proxy.d.ts.map +0 -1
  149. package/lib/common/proxy.js +0 -272
  150. package/lib/common/proxy.js.map +0 -1
  151. package/lib/common/rpcProtocol.d.ts.map +0 -1
  152. package/lib/common/rpcProtocol.js.map +0 -1
  153. package/lib/node/connect.d.ts +0 -4
  154. package/lib/node/connect.d.ts.map +0 -1
  155. package/lib/node/connect.js +0 -9
  156. package/lib/node/connect.js.map +0 -1
  157. package/src/common/proxy.ts +0 -303
  158. package/src/node/connect.ts +0 -11
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getCapturer = exports.parse = exports.stringify = exports.ResponseStatus = exports.MessageType = void 0;
3
+ exports.getMethodName = exports.getRequestName = exports.getNotificationName = exports.getServiceMethods = exports.getCapturer = exports.ResponseStatus = exports.MessageType = void 0;
4
4
  var MessageType;
5
5
  (function (MessageType) {
6
6
  MessageType["SendNotification"] = "sendNotification";
@@ -15,14 +15,6 @@ var ResponseStatus;
15
15
  ResponseStatus["Success"] = "success";
16
16
  ResponseStatus["Fail"] = "fail";
17
17
  })(ResponseStatus = exports.ResponseStatus || (exports.ResponseStatus = {}));
18
- function stringify(obj) {
19
- return JSON.stringify(obj);
20
- }
21
- exports.stringify = stringify;
22
- function parse(input, reviver) {
23
- return JSON.parse(input, reviver);
24
- }
25
- exports.parse = parse;
26
18
  function getCapturer() {
27
19
  var _a;
28
20
  if (typeof window !== 'undefined' && ((_a = window.__OPENSUMI_DEVTOOLS_GLOBAL_HOOK__) === null || _a === void 0 ? void 0 : _a.captureRPC)) {
@@ -31,4 +23,35 @@ function getCapturer() {
31
23
  return;
32
24
  }
33
25
  exports.getCapturer = getCapturer;
26
+ function getServiceMethods(service) {
27
+ let props = [];
28
+ if (/^\s*class/.test(service.constructor.toString())) {
29
+ let obj = service;
30
+ do {
31
+ props = props.concat(Object.getOwnPropertyNames(obj));
32
+ } while ((obj = Object.getPrototypeOf(obj)));
33
+ props = props.sort().filter((e, i, arr) => e !== arr[i + 1] && typeof service[e] === 'function');
34
+ }
35
+ else {
36
+ for (const prop in service) {
37
+ if (service[prop] && typeof service[prop] === 'function') {
38
+ props.push(prop);
39
+ }
40
+ }
41
+ }
42
+ return props;
43
+ }
44
+ exports.getServiceMethods = getServiceMethods;
45
+ function getNotificationName(serviceName, name) {
46
+ return `on:${serviceName}:${name}`;
47
+ }
48
+ exports.getNotificationName = getNotificationName;
49
+ function getRequestName(serviceName, name) {
50
+ return `${serviceName}:${name}`;
51
+ }
52
+ exports.getRequestName = getRequestName;
53
+ function getMethodName(serviceName, name) {
54
+ return name.startsWith('on') ? getNotificationName(serviceName, name) : getRequestName(serviceName, name);
55
+ }
56
+ exports.getMethodName = getMethodName;
34
57
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":";;;AAMA,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,oDAAqC,CAAA;IACrC,0CAA2B,CAAA;IAC3B,8CAA+B,CAAA;IAC/B,gDAAiC,CAAA;IACjC,sCAAuB,CAAA;IACvB,kDAAmC,CAAA;AACrC,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAyBD,SAAgB,SAAS,CAAC,GAAQ;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAFD,8BAEC;AAED,SAAgB,KAAK,CAAC,KAAa,EAAE,OAAqD;IACxF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAFD,sBAEC;AAED,SAAgB,WAAW;;IACzB,IAAI,OAAO,MAAM,KAAK,WAAW,KAAI,MAAA,MAAM,CAAC,iCAAiC,0CAAE,UAAU,CAAA,EAAE;QACzF,OAAO,MAAM,CAAC,iCAAiC,CAAC,UAAU,CAAC;KAC5D;IACD,OAAO;AACT,CAAC;AALD,kCAKC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/common/utils.ts"],"names":[],"mappings":";;;AAMA,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,oDAAqC,CAAA;IACrC,0CAA2B,CAAA;IAC3B,8CAA+B,CAAA;IAC/B,gDAAiC,CAAA;IACjC,sCAAuB,CAAA;IACvB,kDAAmC,CAAA;AACrC,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAyBD,SAAgB,WAAW;;IACzB,IAAI,OAAO,MAAM,KAAK,WAAW,KAAI,MAAA,MAAM,CAAC,iCAAiC,0CAAE,UAAU,CAAA,EAAE;QACzF,OAAO,MAAM,CAAC,iCAAiC,CAAC,UAAU,CAAC;KAC5D;IACD,OAAO;AACT,CAAC;AALD,kCAKC;AAED,SAAgB,iBAAiB,CAAC,OAAY;IAC5C,IAAI,KAAK,GAAU,EAAE,CAAC;IAEtB,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE;QACpD,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,GAAG;YACD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;SACvD,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;QAC7C,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;KAClG;SAAM;QACL,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YAC1B,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE;gBACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClB;SACF;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAlBD,8CAkBC;AAED,SAAgB,mBAAmB,CAAC,WAAmB,EAAE,IAAY;IACnE,OAAO,MAAM,WAAW,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC;AAFD,kDAEC;AACD,SAAgB,cAAc,CAAC,WAAmB,EAAE,IAAY;IAC9D,OAAO,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC;AAClC,CAAC;AAFD,wCAEC;AAED,SAAgB,aAAa,CAAC,WAAmB,EAAE,IAAY;IAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC5G,CAAC;AAFD,sCAEC"}
@@ -1,3 +1,9 @@
1
+ /// <reference types="node" />
2
+ import type net from 'net';
3
+ import type WebSocket from 'ws';
4
+ import { EventEmitter } from '@opensumi/events';
5
+ import { IConnectionShape } from './connection/types';
6
+ import { ILogger } from './types';
1
7
  export interface IWebSocket {
2
8
  send(content: string): void;
3
9
  close(...args: any[]): void;
@@ -5,56 +11,96 @@ export interface IWebSocket {
5
11
  onError(cb: (reason: any) => void): void;
6
12
  onClose(cb: (code: number, reason: string) => void): void;
7
13
  }
8
- export interface ClientMessage {
9
- kind: 'client';
14
+ /**
15
+ * `ping` and `pong` are used to detect whether the connection is alive.
16
+ */
17
+ export interface PingMessage {
18
+ kind: 'ping';
19
+ id: string;
10
20
  clientId: string;
11
21
  }
12
- export interface HeartbeatMessage {
13
- kind: 'heartbeat';
22
+ /**
23
+ * when server receive a `ping` message, it should reply a `pong` message, vice versa.
24
+ */
25
+ export interface PongMessage {
26
+ kind: 'pong';
27
+ id: string;
14
28
  clientId: string;
15
29
  }
30
+ /**
31
+ * `open` message is used to open a new channel.
32
+ * `path` is used to identify which handler should be used to handle the channel.
33
+ * `clientId` is used to identify the client.
34
+ */
16
35
  export interface OpenMessage {
17
36
  kind: 'open';
18
- id: number;
37
+ id: string;
19
38
  path: string;
39
+ clientId: string;
20
40
  }
21
- export interface ReadyMessage {
22
- kind: 'ready';
23
- id: number;
41
+ /**
42
+ * when server receive a `open` message, it should reply a `server-ready` message.
43
+ * this is indicate that the channel is ready to use.
44
+ */
45
+ export interface ServerReadyMessage {
46
+ kind: 'server-ready';
47
+ id: string;
24
48
  }
49
+ /**
50
+ * `data` message indicate that the channel has received some data.
51
+ * the `content` field is the data, it should be a string.
52
+ */
25
53
  export interface DataMessage {
26
54
  kind: 'data';
27
- id: number;
55
+ id: string;
28
56
  content: string;
29
57
  }
30
58
  export interface CloseMessage {
31
59
  kind: 'close';
32
- id: number;
60
+ id: string;
33
61
  code: number;
34
62
  reason: string;
35
63
  }
36
- export type ChannelMessage = HeartbeatMessage | ClientMessage | OpenMessage | ReadyMessage | DataMessage | CloseMessage;
64
+ export type ChannelMessage = PingMessage | PongMessage | OpenMessage | ServerReadyMessage | DataMessage | CloseMessage;
65
+ export interface IWSChannelCreateOptions {
66
+ /**
67
+ * every channel's unique id, it only used in client to server architecture.
68
+ * server will store this id and use it to identify which channel should be used.
69
+ */
70
+ id: string;
71
+ logger?: ILogger;
72
+ }
37
73
  export declare class WSChannel implements IWebSocket {
38
- id: number | string;
74
+ connection: IConnectionShape<Uint8Array>;
75
+ protected emitter: EventEmitter<{
76
+ message: [data: string];
77
+ open: [id: string];
78
+ reopen: [];
79
+ close: [code?: number, reason?: string];
80
+ }>;
81
+ id: string;
82
+ LOG_TAG: string;
39
83
  channelPath: string;
40
- private connectionSend;
41
- private fireMessage;
42
- private fireOpen;
43
- fireReOpen: () => void;
44
- private fireClose;
45
- messageConnection: any;
46
- constructor(connectionSend: (content: string) => void, id?: number | string);
47
- setConnectionSend(connectionSend: (content: string) => void): void;
48
- onMessage(cb: (data: any) => any): void;
49
- onOpen(cb: (id: number) => void): void;
50
- onReOpen(cb: () => void): void;
51
- ready(): void;
84
+ logger: ILogger;
85
+ static forClient(connection: IConnectionShape<Uint8Array>, options: IWSChannelCreateOptions): WSChannel;
86
+ static forWebSocket(socket: WebSocket, options: IWSChannelCreateOptions): WSChannel;
87
+ static forNetSocket(socket: net.Socket, options: IWSChannelCreateOptions): WSChannel;
88
+ constructor(connection: IConnectionShape<Uint8Array>, options: IWSChannelCreateOptions);
89
+ onMessage(cb: (data: string) => any): () => void;
90
+ onOpen(cb: (id: string) => void): () => void;
91
+ onReopen(cb: () => void): () => void;
92
+ serverReady(): void;
52
93
  handleMessage(msg: ChannelMessage): void;
53
- open(path: string): void;
94
+ open(path: string, clientId: string): void;
54
95
  send(content: string): void;
96
+ hasMessageListener(): boolean;
55
97
  onError(): void;
56
- close(code: number, reason: string): void;
57
- onClose(cb: (code: number, reason: string) => void): void;
98
+ close(code?: number, reason?: string): void;
99
+ fireReopen(): void;
100
+ onClose(cb: (code: number, reason: string) => void): () => void;
101
+ createMessageConnection(): import("@opensumi/vscode-jsonrpc").MessageConnection;
102
+ dispose(): void;
103
+ listen(channel: WSChannel): void;
58
104
  }
59
105
  export type MessageString = string & {
60
106
  origin?: any;
@@ -71,4 +117,35 @@ export declare class ChildConnectPath {
71
117
  clientId: string;
72
118
  };
73
119
  }
120
+ export declare const wsChannelProtocol: {
121
+ type: import("@furyjs/fury").InternalSerializerType.FURY_TYPE_TAG;
122
+ options: {
123
+ tag: string;
124
+ props: {
125
+ kind: {
126
+ type: import("@furyjs/fury").InternalSerializerType.STRING;
127
+ };
128
+ clientId: {
129
+ type: import("@furyjs/fury").InternalSerializerType.STRING;
130
+ };
131
+ id: {
132
+ type: import("@furyjs/fury").InternalSerializerType.STRING;
133
+ };
134
+ path: {
135
+ type: import("@furyjs/fury").InternalSerializerType.STRING;
136
+ };
137
+ content: {
138
+ type: import("@furyjs/fury").InternalSerializerType.STRING;
139
+ };
140
+ code: {
141
+ type: import("@furyjs/fury").InternalSerializerType.UINT32;
142
+ };
143
+ reason: {
144
+ type: import("@furyjs/fury").InternalSerializerType.STRING;
145
+ };
146
+ } | undefined;
147
+ };
148
+ };
149
+ export declare function stringify(obj: ChannelMessage): Uint8Array;
150
+ export declare function parse(input: Uint8Array): ChannelMessage;
74
151
  //# sourceMappingURL=ws-channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws-channel.d.ts","sourceRoot":"","sources":["../../src/common/ws-channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws-channel.d.ts","sourceRoot":"","sources":["../../src/common/ws-channel.ts"],"names":[],"mappings":"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"}
@@ -1,65 +1,115 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChildConnectPath = exports.WSChannel = void 0;
4
- const utils_1 = require("./utils");
3
+ exports.parse = exports.stringify = exports.wsChannelProtocol = exports.ChildConnectPath = exports.WSChannel = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const fury_1 = tslib_1.__importStar(require("@furyjs/fury"));
6
+ const events_1 = require("@opensumi/events");
7
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
8
+ const connection_1 = require("./connection");
9
+ const message_1 = require("./message");
5
10
  class WSChannel {
6
- constructor(connectionSend, id) {
7
- this.connectionSend = connectionSend;
8
- if (id) {
9
- this.id = id;
10
- }
11
+ static forClient(connection, options) {
12
+ const disposable = new ide_core_common_1.DisposableCollection();
13
+ const channel = new WSChannel(connection, options);
14
+ disposable.push(connection.onMessage((data) => {
15
+ channel.handleMessage(parse(data));
16
+ }));
17
+ disposable.push(channel);
18
+ disposable.push(connection.onceClose(() => {
19
+ disposable.dispose();
20
+ }));
21
+ return channel;
22
+ }
23
+ static forWebSocket(socket, options) {
24
+ const wsConnection = new connection_1.WSWebSocketConnection(socket);
25
+ return WSChannel.forClient(wsConnection, options);
11
26
  }
12
- setConnectionSend(connectionSend) {
13
- this.connectionSend = connectionSend;
27
+ static forNetSocket(socket, options) {
28
+ const wsConnection = new connection_1.NetSocketConnection(socket);
29
+ return WSChannel.forClient(wsConnection, options);
30
+ }
31
+ constructor(connection, options) {
32
+ this.connection = connection;
33
+ this.emitter = new events_1.EventEmitter();
34
+ this.LOG_TAG = '[WSChannel]';
35
+ this.logger = console;
36
+ const { id, logger } = options;
37
+ this.id = id;
38
+ if (logger) {
39
+ this.logger = logger;
40
+ }
41
+ this.LOG_TAG = `[WSChannel] [id:${id}]`;
14
42
  }
15
43
  // server
16
44
  onMessage(cb) {
17
- this.fireMessage = cb;
45
+ return this.emitter.on('message', cb);
18
46
  }
19
47
  onOpen(cb) {
20
- this.fireOpen = cb;
48
+ return this.emitter.on('open', cb);
21
49
  }
22
- onReOpen(cb) {
23
- this.fireReOpen = cb;
50
+ onReopen(cb) {
51
+ return this.emitter.on('reopen', cb);
24
52
  }
25
- ready() {
26
- this.connectionSend((0, utils_1.stringify)({
27
- kind: 'ready',
53
+ serverReady() {
54
+ this.connection.send(stringify({
55
+ kind: 'server-ready',
28
56
  id: this.id,
29
57
  }));
30
58
  }
31
59
  handleMessage(msg) {
32
- if (msg.kind === 'ready' && this.fireOpen) {
33
- this.fireOpen(msg.id);
60
+ if (msg.kind === 'server-ready') {
61
+ this.emitter.emit('open', msg.id);
34
62
  }
35
- else if (msg.kind === 'data' && this.fireMessage) {
36
- this.fireMessage(msg.content);
63
+ else if (msg.kind === 'data') {
64
+ this.emitter.emit('message', msg.content);
37
65
  }
38
66
  }
39
67
  // client
40
- open(path) {
68
+ open(path, clientId) {
41
69
  this.channelPath = path;
42
- this.connectionSend((0, utils_1.stringify)({
70
+ this.connection.send(stringify({
43
71
  kind: 'open',
44
72
  id: this.id,
45
73
  path,
74
+ clientId,
46
75
  }));
47
76
  }
48
77
  send(content) {
49
- this.connectionSend((0, utils_1.stringify)({
78
+ this.connection.send(stringify({
50
79
  kind: 'data',
51
80
  id: this.id,
52
81
  content,
53
82
  }));
54
83
  }
84
+ hasMessageListener() {
85
+ return this.emitter.hasListener('message');
86
+ }
55
87
  onError() { }
56
88
  close(code, reason) {
57
- if (this.fireClose) {
58
- this.fireClose(code, reason);
59
- }
89
+ this.emitter.emit('close', code, reason);
90
+ }
91
+ fireReopen() {
92
+ this.emitter.emit('reopen');
60
93
  }
61
94
  onClose(cb) {
62
- this.fireClose = cb;
95
+ return this.emitter.on('close', cb);
96
+ }
97
+ createMessageConnection() {
98
+ return (0, message_1.createWebSocketConnection)(this);
99
+ }
100
+ dispose() {
101
+ this.emitter.dispose();
102
+ }
103
+ listen(channel) {
104
+ channel.onMessage((data) => {
105
+ this.send(data);
106
+ });
107
+ channel.onClose((code, reason) => {
108
+ this.close(code, reason);
109
+ });
110
+ channel.onReopen(() => {
111
+ this.fireReopen();
112
+ });
63
113
  }
64
114
  }
65
115
  exports.WSChannel = WSChannel;
@@ -83,4 +133,23 @@ class ChildConnectPath {
83
133
  }
84
134
  }
85
135
  exports.ChildConnectPath = ChildConnectPath;
136
+ const fury = new fury_1.default({});
137
+ exports.wsChannelProtocol = fury_1.Type.object('ws-channel-protocol', {
138
+ kind: fury_1.Type.string(),
139
+ clientId: fury_1.Type.string(),
140
+ id: fury_1.Type.string(),
141
+ path: fury_1.Type.string(),
142
+ content: fury_1.Type.string(),
143
+ code: fury_1.Type.uint32(),
144
+ reason: fury_1.Type.string(),
145
+ });
146
+ const wsChannelProtocolSerializer = fury.registerSerializer(exports.wsChannelProtocol);
147
+ function stringify(obj) {
148
+ return wsChannelProtocolSerializer.serialize(obj);
149
+ }
150
+ exports.stringify = stringify;
151
+ function parse(input) {
152
+ return wsChannelProtocolSerializer.deserialize(input);
153
+ }
154
+ exports.parse = parse;
86
155
  //# sourceMappingURL=ws-channel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws-channel.js","sourceRoot":"","sources":["../../src/common/ws-channel.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAwCpC,MAAa,SAAS;IAYpB,YAAY,cAAyC,EAAE,EAAoB;QACzE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,EAAE,EAAE;YACN,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;SACd;IACH,CAAC;IAEM,iBAAiB,CAAC,cAAyC;QAChE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,SAAS;IACT,SAAS,CAAC,EAAsB;QAC9B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,CAAC,EAAwB;QAC7B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IACD,QAAQ,CAAC,EAAc;QACrB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,KAAK;QACH,IAAI,CAAC,cAAc,CACjB,IAAA,iBAAS,EAAC;YACR,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC,CACH,CAAC;IACJ,CAAC;IACD,aAAa,CAAC,GAAmB;QAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SACvB;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YAClD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC/B;IACH,CAAC;IAED,SAAS;IACT,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,cAAc,CACjB,IAAA,iBAAS,EAAC;YACR,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI;SACL,CAAC,CACH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAe;QAClB,IAAI,CAAC,cAAc,CACjB,IAAA,iBAAS,EAAC;YACR,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,OAAO;SACR,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,KAAI,CAAC;IACZ,KAAK,CAAC,IAAY,EAAE,MAAc;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SAC9B;IACH,CAAC;IACD,OAAO,CAAC,EAA0C;QAChD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;CACF;AA9ED,8BA8EC;AAMD;;GAEG;AACH,MAAa,gBAAgB;IAA7B;QACS,YAAO,GAAG,gBAAgB,CAAC;IAepC,CAAC;IAbC,cAAc,CAAC,KAAa,EAAE,QAAgB;QAC5C,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,UAAkB;QAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEnC,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;YACZ,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACd,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;SAClB,CAAC;IACJ,CAAC;CACF;AAhBD,4CAgBC"}
1
+ {"version":3,"file":"ws-channel.js","sourceRoot":"","sources":["../../src/common/ws-channel.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,38 @@
1
- import ws from 'ws';
1
+ import { MatchFunction } from 'path-to-regexp';
2
+ import WebSocket from 'ws';
3
+ import { ILogger } from '../common';
2
4
  import { WebSocketHandler, CommonChannelHandlerOptions } from './ws';
3
- export interface IPathHander {
5
+ export interface IPathHandler {
4
6
  dispose: (connection: any, connectionId: string) => void;
5
- handler: (connection: any, connectionId: string, params?: any) => void;
7
+ handler: (connection: any, connectionId: string, params?: Record<string, string>) => void;
6
8
  reconnect?: (connection: any, connectionId: string) => void;
7
9
  connection?: any;
8
10
  }
9
11
  export declare class CommonChannelPathHandler {
10
12
  private handlerMap;
11
13
  private paramsKey;
12
- register(channelPath: string, handler: IPathHander): void;
13
- getParams(channelPath: string, value: string): {};
14
- removeHandler(channelPath: string, handler: IPathHander): void;
15
- get(channelPath: string): IPathHander[] | undefined;
16
- disposeConnectionClientId(connection: ws, clientId: string): void;
17
- getAll(): IPathHander[][];
14
+ register(channelPath: string, handler: IPathHandler): void;
15
+ getParams(channelPath: string, value: string): Record<string, string>;
16
+ removeHandler(channelPath: string, handler: IPathHandler): void;
17
+ get(channelPath: string): IPathHandler[] | undefined;
18
+ disposeConnectionClientId(connection: WebSocket, clientId: string): void;
19
+ getAll(): IPathHandler[][];
18
20
  }
19
21
  export declare const commonChannelPathHandler: CommonChannelPathHandler;
22
+ /**
23
+ * Channel Handler for nodejs
24
+ */
20
25
  export declare class CommonChannelHandler extends WebSocketHandler {
21
26
  private logger;
22
27
  private options;
23
- static channelId: number;
24
28
  handlerId: string;
25
29
  private wsServer;
26
- protected handlerRoute: (wsPathname: string) => any;
30
+ protected handlerRoute: MatchFunction;
27
31
  private channelMap;
28
- private connectionMap;
29
32
  private heartbeatMap;
30
- constructor(routePath: string, logger?: any, options?: CommonChannelHandlerOptions);
31
- private hearbeat;
33
+ constructor(routePath: string, logger?: ILogger, options?: CommonChannelHandlerOptions);
34
+ private heartbeat;
32
35
  private initWSServer;
33
- private channelConnectionSend;
34
- handleUpgrade(wsPathname: string, request: any, socket: any, head: any): boolean;
36
+ handleUpgrade(pathname: string, request: any, socket: any, head: any): boolean;
35
37
  }
36
38
  //# sourceMappingURL=common-channel-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common-channel-handler.d.ts","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,MAAM,CAAC;AAErE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,OAAO,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvE,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,UAAU,CAAyC;IAC3D,OAAO,CAAC,SAAS,CAAkC;IAEnD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAqBlD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAU5C,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAcvD,GAAG,CAAC,WAAW,EAAE,MAAM;IAGvB,yBAAyB,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM;IAO1D,MAAM;CAGP;AAED,eAAO,MAAM,wBAAwB,0BAAiC,CAAC;AAGvE,qBAAa,oBAAqB,SAAQ,gBAAgB;IAUzB,OAAO,CAAC,MAAM;IAAiB,OAAO,CAAC,OAAO;IAT7E,MAAM,CAAC,SAAS,SAAK;IAEd,SAAS,SAAoB;IACpC,OAAO,CAAC,QAAQ,CAAY;IAC5B,SAAS,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,GAAG,CAAC;IACpD,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA0C;gBAElD,SAAS,EAAE,MAAM,EAAU,MAAM,GAAE,GAAa,EAAU,OAAO,GAAE,2BAAgC;IAM/G,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,YAAY;IAyFpB,OAAO,CAAC,qBAAqB,CAQ3B;IACK,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO;CAiBxF"}
1
+ {"version":3,"file":"common-channel-handler.d.ts","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAS,MAAM,gBAAgB,CAAC;AACtD,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,MAAM,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,OAAO,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC1F,SAAS,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED,qBAAa,wBAAwB;IACnC,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,SAAS,CAAkC;IAEnD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAqBnD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUrE,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAcxD,GAAG,CAAC,WAAW,EAAE,MAAM;IAGvB,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM;IAOjE,MAAM;CAGP;AAED,eAAO,MAAM,wBAAwB,0BAAiC,CAAC;AAEvE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IAOzB,OAAO,CAAC,MAAM;IAAqB,OAAO,CAAC,OAAO;IAN1E,SAAS,SAAoB;IACpC,OAAO,CAAC,QAAQ,CAAmB;IACnC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;IACtC,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,YAAY,CAA0C;gBAElD,SAAS,EAAE,MAAM,EAAU,MAAM,GAAE,OAAiB,EAAU,OAAO,GAAE,2BAAgC;IAMnH,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;IAwFb,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO;CAgBtF"}