@opensumi/ide-connection 3.8.3-next-1741945847.0 → 3.8.3-next-1741949132.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 (38) hide show
  1. package/lib/common/buffers/buffers.d.ts +3 -0
  2. package/lib/common/buffers/buffers.d.ts.map +1 -1
  3. package/lib/common/buffers/buffers.js +32 -1
  4. package/lib/common/buffers/buffers.js.map +1 -1
  5. package/lib/common/connection/drivers/frame-decoder.d.ts +9 -14
  6. package/lib/common/connection/drivers/frame-decoder.d.ts.map +1 -1
  7. package/lib/common/connection/drivers/frame-decoder.js +95 -39
  8. package/lib/common/connection/drivers/frame-decoder.js.map +1 -1
  9. package/lib/common/connection/drivers/reconnecting-websocket.d.ts +8 -2
  10. package/lib/common/connection/drivers/reconnecting-websocket.d.ts.map +1 -1
  11. package/lib/common/connection/drivers/reconnecting-websocket.js +56 -26
  12. package/lib/common/connection/drivers/reconnecting-websocket.js.map +1 -1
  13. package/lib/common/connection/drivers/stream.d.ts.map +1 -1
  14. package/lib/common/connection/drivers/stream.js +11 -4
  15. package/lib/common/connection/drivers/stream.js.map +1 -1
  16. package/lib/common/connection/drivers/ws-websocket.d.ts +8 -1
  17. package/lib/common/connection/drivers/ws-websocket.d.ts.map +1 -1
  18. package/lib/common/connection/drivers/ws-websocket.js +77 -7
  19. package/lib/common/connection/drivers/ws-websocket.js.map +1 -1
  20. package/lib/common/constants.d.ts +4 -0
  21. package/lib/common/constants.d.ts.map +1 -1
  22. package/lib/common/constants.js +5 -1
  23. package/lib/common/constants.js.map +1 -1
  24. package/lib/common/fury-extends/one-of.d.ts.map +1 -1
  25. package/lib/common/fury-extends/one-of.js +3 -0
  26. package/lib/common/fury-extends/one-of.js.map +1 -1
  27. package/lib/node/common-channel-handler.d.ts.map +1 -1
  28. package/lib/node/common-channel-handler.js +1 -2
  29. package/lib/node/common-channel-handler.js.map +1 -1
  30. package/package.json +6 -6
  31. package/src/common/buffers/buffers.ts +40 -0
  32. package/src/common/connection/drivers/frame-decoder.ts +103 -43
  33. package/src/common/connection/drivers/reconnecting-websocket.ts +66 -26
  34. package/src/common/connection/drivers/stream.ts +11 -4
  35. package/src/common/connection/drivers/ws-websocket.ts +93 -8
  36. package/src/common/constants.ts +5 -0
  37. package/src/common/fury-extends/one-of.ts +3 -0
  38. package/src/node/common-channel-handler.ts +1 -2
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/stream.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,17 @@
1
1
  import { IDisposable } from '@opensumi/ide-core-common';
2
2
  import { BaseConnection } from './base';
3
+ import { LengthFieldBasedFrameDecoder } from './frame-decoder';
3
4
  import type WebSocket from 'ws';
4
5
  export declare class WSWebSocketConnection extends BaseConnection<Uint8Array> {
5
6
  socket: WebSocket;
7
+ protected decoder: LengthFieldBasedFrameDecoder;
8
+ private static readonly MAX_QUEUE_SIZE;
9
+ private sendQueue;
10
+ private pendingSize;
11
+ private sending;
6
12
  constructor(socket: WebSocket);
7
- send(data: Uint8Array): void;
13
+ private processSendQueue;
14
+ send(data: Uint8Array): Promise<void>;
8
15
  onMessage(cb: (data: Uint8Array) => void): IDisposable;
9
16
  onceClose(cb: () => void): IDisposable;
10
17
  isOpen(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ws-websocket.d.ts","sourceRoot":"","sources":["../../../../src/common/connection/drivers/ws-websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAEhC,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,UAAU,CAAC;IAChD,MAAM,EAAE,SAAS;gBAAjB,MAAM,EAAE,SAAS;IAGpC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAI5B,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,WAAW;IAQtD,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,WAAW;IAStC,MAAM;IAIN,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"ws-websocket.d.ts","sourceRoot":"","sources":["../../../../src/common/connection/drivers/ws-websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxD,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,SAAS,MAAM,IAAI,CAAC;AAQhC,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,UAAU,CAAC;IAQhD,MAAM,EAAE,SAAS;IAPpC,SAAS,CAAC,OAAO,+BAAsC;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAQ;IAE9C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEL,MAAM,EAAE,SAAS;YAOtB,gBAAgB;IAkD9B,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrC,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,WAAW;IAGtD,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,WAAW;IAStC,MAAM;IAIN,OAAO,IAAI,IAAI;CAUhB"}
@@ -1,22 +1,84 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WSWebSocketConnection = void 0;
4
+ const constants_1 = require("../../constants");
4
5
  const base_1 = require("./base");
6
+ const frame_decoder_1 = require("./frame-decoder");
5
7
  class WSWebSocketConnection extends base_1.BaseConnection {
6
8
  constructor(socket) {
7
9
  super();
8
10
  this.socket = socket;
11
+ this.decoder = new frame_decoder_1.LengthFieldBasedFrameDecoder();
12
+ this.sendQueue = [];
13
+ this.pendingSize = 0;
14
+ this.sending = false;
15
+ this.socket.on('message', (data) => {
16
+ this.decoder.push(data);
17
+ });
18
+ }
19
+ async processSendQueue() {
20
+ if (this.sending) {
21
+ return;
22
+ }
23
+ this.sending = true;
24
+ while (this.sendQueue.length > 0) {
25
+ const { data, resolve, reject } = this.sendQueue[0];
26
+ let handle = null;
27
+ try {
28
+ handle = frame_decoder_1.LengthFieldBasedFrameDecoder.construct(data).dumpAndOwn();
29
+ const packet = handle.get();
30
+ for (let i = 0; i < packet.byteLength; i += constants_1.chunkSize) {
31
+ if (!this.isOpen()) {
32
+ throw new Error('Connection closed while sending');
33
+ }
34
+ await new Promise((resolve, reject) => {
35
+ const chunk = packet.subarray(i, Math.min(i + constants_1.chunkSize, packet.byteLength));
36
+ this.socket.send(chunk, { binary: true }, (error) => {
37
+ if (error) {
38
+ reject(error);
39
+ }
40
+ else {
41
+ resolve();
42
+ }
43
+ });
44
+ });
45
+ }
46
+ resolve();
47
+ }
48
+ catch (error) {
49
+ reject(error instanceof Error ? error : new Error(String(error)));
50
+ }
51
+ finally {
52
+ if (handle) {
53
+ try {
54
+ handle.dispose();
55
+ }
56
+ catch (error) {
57
+ console.warn('[WSWebSocket] Error disposing handle:', error);
58
+ }
59
+ }
60
+ this.pendingSize -= this.sendQueue[0].data.byteLength;
61
+ this.sendQueue.shift();
62
+ }
63
+ }
64
+ this.sending = false;
9
65
  }
10
66
  send(data) {
11
- this.socket.send(data);
67
+ return new Promise((resolve, reject) => {
68
+ // 检查队列大小限制
69
+ if (this.sendQueue.length >= WSWebSocketConnection.MAX_QUEUE_SIZE) {
70
+ reject(new Error('Send queue full'));
71
+ return;
72
+ }
73
+ this.pendingSize += data.byteLength;
74
+ this.sendQueue.push({ data, resolve, reject });
75
+ this.processSendQueue().catch((error) => {
76
+ console.error('[WSWebSocket] Error processing queue:', error);
77
+ });
78
+ });
12
79
  }
13
80
  onMessage(cb) {
14
- this.socket.on('message', cb);
15
- return {
16
- dispose: () => {
17
- this.socket.off('message', cb);
18
- },
19
- };
81
+ return this.decoder.onData(cb);
20
82
  }
21
83
  onceClose(cb) {
22
84
  this.socket.once('close', cb);
@@ -31,7 +93,15 @@ class WSWebSocketConnection extends base_1.BaseConnection {
31
93
  }
32
94
  dispose() {
33
95
  this.socket.removeAllListeners();
96
+ // 拒绝所有待发送的消息
97
+ while (this.sendQueue.length > 0) {
98
+ const { reject } = this.sendQueue.shift();
99
+ reject(new Error('Connection disposed'));
100
+ }
101
+ this.pendingSize = 0;
102
+ this.sending = false;
34
103
  }
35
104
  }
36
105
  exports.WSWebSocketConnection = WSWebSocketConnection;
106
+ WSWebSocketConnection.MAX_QUEUE_SIZE = 1000; // 限制队列长度
37
107
  //# sourceMappingURL=ws-websocket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws-websocket.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/ws-websocket.ts"],"names":[],"mappings":";;;AAEA,iCAAwC;AAIxC,MAAa,qBAAsB,SAAQ,qBAA0B;IACnE,YAAmB,MAAiB;QAClC,KAAK,EAAE,CAAC;QADS,WAAM,GAAN,MAAM,CAAW;IAEpC,CAAC;IACD,IAAI,CAAC,IAAgB;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,EAA8B;QACtC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACjC,CAAC;SACF,CAAC;IACJ,CAAC;IACD,SAAS,CAAC,EAAc;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;SACF,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IACrD,CAAC;IAED,OAAO;QACL,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;CACF;AAhCD,sDAgCC"}
1
+ {"version":3,"file":"ws-websocket.js","sourceRoot":"","sources":["../../../../src/common/connection/drivers/ws-websocket.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,6 @@
1
1
  export declare const METHOD_NOT_REGISTERED = "$$METHOD_NOT_REGISTERED";
2
+ /**
3
+ * 分片大小, 1MB
4
+ */
5
+ export declare const chunkSize: number;
2
6
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,4BAA4B,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,SAAS,QAAkB,CAAC"}
@@ -1,5 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.METHOD_NOT_REGISTERED = void 0;
3
+ exports.chunkSize = exports.METHOD_NOT_REGISTERED = void 0;
4
4
  exports.METHOD_NOT_REGISTERED = '$$METHOD_NOT_REGISTERED';
5
+ /**
6
+ * 分片大小, 1MB
7
+ */
8
+ exports.chunkSize = 1 * 1024 * 1024;
5
9
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,yBAAyB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,yBAAyB,CAAC;AAE/D;;GAEG;AACU,QAAA,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"one-of.d.ts","sourceRoot":"","sources":["../../../src/common/fury-extends/one-of.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,eAAe,EAAE,MAAM,cAAc,CAAC;AAGlF,OAAO,EAAE,iBAAiB,EAAe,MAAM,UAAU,CAAC;AAE1D,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvD,eAAO,MAAM,KAAK,YACP,CACP,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,CAChB,YACS,iBAAiB;yBAoBC,UAAU;mBAoChB,QAAQ;CAyC/B,CAAC"}
1
+ {"version":3,"file":"one-of.d.ts","sourceRoot":"","sources":["../../../src/common/fury-extends/one-of.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,eAAe,EAAE,MAAM,cAAc,CAAC;AAGlF,OAAO,EAAE,iBAAiB,EAAe,MAAM,UAAU,CAAC;AAE1D,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAIvD,eAAO,MAAM,KAAK,YACP,CACP,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,CAChB,YACS,iBAAiB;yBAoBC,UAAU;mBAuChB,QAAQ;CAyC/B,CAAC"}
@@ -47,6 +47,9 @@ const oneOf = (schemas, context) => {
47
47
  case 7:
48
48
  v = serializers[7].read();
49
49
  break;
50
+ default: {
51
+ throw new Error('unknown index: ' + idx);
52
+ }
50
53
  }
51
54
  v.kind = kinds[idx];
52
55
  return v;
@@ -1 +1 @@
1
- {"version":3,"file":"one-of.js","sourceRoot":"","sources":["../../../src/common/fury-extends/one-of.ts"],"names":[],"mappings":";;;AACA,mDAA+D;AAE/D,qCAA0D;AAI1D,MAAM,GAAG,GAAG,CAAC,CAAC;AAEP,MAAM,KAAK,GAAG,CACnB,OASC,EACD,OAA2B,EAC3B,EAAE;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,IAAA,oBAAW,GAAE,CAAC;IAC1B,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEzC,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,GAAG,CAAiB,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAa,CAAC;IAEzC,MAAM,WAAW,GAAG,EAA4B,CAAC;IAEjD,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAI,MAAgC,CAAC,OAAO,CAAC,GAAG,CAAC;QAC3D,WAAW,CAAC,CAAC,CAAC,GAAG,IAAA,wBAAkB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAChB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,CAAC,KAAiB,EAAE,EAAE;QACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAE3B,IAAI,CAAM,CAAC;QACX,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,MAAM;QACV,CAAC;QAED,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAW,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEpB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM;QACV,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC,CAAC;AA5GW,QAAA,KAAK,SA4GhB"}
1
+ {"version":3,"file":"one-of.js","sourceRoot":"","sources":["../../../src/common/fury-extends/one-of.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE9F,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAErE,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAyB,YAAW,gBAAgB;IAM1F,SAAS,CAAC,wBAAwB,EAAE,wBAAwB;IAE5D,OAAO,CAAC,OAAO;IAPjB,OAAO,CAAC,QAAQ,CAAmB;IACnC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;gBAGpC,SAAS,EAAE,MAAM,EACP,wBAAwB,EAAE,wBAAwB,EAC5D,MAAM,GAAE,OAAiB,EACjB,OAAO,GAAE,2BAAgC;IAOnD,WAAW,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAIpD,OAAO,CAAC,YAAY;IAYb,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO;CAgBtF"}
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;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAE9F,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAErE,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAyB,YAAW,gBAAgB;IAM1F,SAAS,CAAC,wBAAwB,EAAE,wBAAwB;IAE5D,OAAO,CAAC,OAAO;IAPjB,OAAO,CAAC,QAAQ,CAAmB;IACnC,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;gBAGpC,SAAS,EAAE,MAAM,EACP,wBAAwB,EAAE,wBAAwB,EAC5D,MAAM,GAAE,OAAiB,EACjB,OAAO,GAAE,2BAAgC;IAOnD,WAAW,CAAC,UAAU,EAAE,qBAAqB,GAAG,IAAI;IAIpD,OAAO,CAAC,YAAY;IAWb,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO;CAgBtF"}
@@ -27,8 +27,7 @@ class CommonChannelHandler extends server_handler_1.BaseCommonChannelHandler {
27
27
  ...this.options.wsServerOptions,
28
28
  });
29
29
  this.wsServer.on('connection', (connection) => {
30
- const wsConnection = new connection_1.WSWebSocketConnection(connection);
31
- this.receiveConnection(wsConnection);
30
+ this.receiveConnection(new connection_1.WSWebSocketConnection(connection));
32
31
  });
33
32
  }
34
33
  handleUpgrade(pathname, request, socket, head) {
@@ -1 +1 @@
1
- {"version":3,"file":"common-channel-handler.js","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":";;;;AAAA,mDAAsD;AACtD,oDAA2B;AAG3B,qDAA6D;AAC7D,6DAA8F;AAU9F;;GAEG;AACH,MAAa,oBAAqB,SAAQ,yCAAwB;IAIhE,YACE,SAAiB,EACP,wBAAkD,EAC5D,SAAkB,OAAO,EACjB,UAAuC,EAAE;QAEjD,KAAK,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAJtD,6BAAwB,GAAxB,wBAAwB,CAA0B;QAEpD,YAAO,GAAP,OAAO,CAAkC;QAGjD,IAAI,CAAC,YAAY,GAAG,IAAA,sBAAK,EAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,UAAiC;QAC3C,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAS,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,IAAI;YACd,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,UAAqB,EAAE,EAAE;YACvD,MAAM,YAAY,GAAG,IAAI,kCAAqB,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,aAAa,CAAC,QAAgB,EAAE,OAAY,EAAE,MAAW,EAAE,IAAS;QACzE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE;gBAC/D,UAAkC,CAAC,UAAU,GAAG;oBAC/C,QAAQ;iBACT,CAAC;gBAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA/CD,oDA+CC"}
1
+ {"version":3,"file":"common-channel-handler.js","sourceRoot":"","sources":["../../src/node/common-channel-handler.ts"],"names":[],"mappings":";;;;AAAA,mDAAsD;AACtD,oDAA2B;AAG3B,qDAA6D;AAC7D,6DAA8F;AAU9F;;GAEG;AACH,MAAa,oBAAqB,SAAQ,yCAAwB;IAIhE,YACE,SAAiB,EACP,wBAAkD,EAC5D,SAAkB,OAAO,EACjB,UAAuC,EAAE;QAEjD,KAAK,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAJtD,6BAAwB,GAAxB,wBAAwB,CAA0B;QAEpD,YAAO,GAAP,OAAO,CAAkC;QAGjD,IAAI,CAAC,YAAY,GAAG,IAAA,sBAAK,EAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,UAAiC;QAC3C,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAS,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,IAAI;YACd,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,UAAqB,EAAE,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,IAAI,kCAAqB,CAAC,UAAU,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,aAAa,CAAC,QAAgB,EAAE,OAAY,EAAE,MAAW,EAAE,IAAS;QACzE,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE;gBAC/D,UAAkC,CAAC,UAAU,GAAG;oBAC/C,QAAQ;iBACT,CAAC;gBAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA9CD,oDA8CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-connection",
3
- "version": "3.8.3-next-1741945847.0",
3
+ "version": "3.8.3-next-1741949132.0",
4
4
  "files": [
5
5
  "lib",
6
6
  "src"
@@ -19,17 +19,17 @@
19
19
  "dependencies": {
20
20
  "@furyjs/fury": "0.5.9-beta",
21
21
  "@opensumi/events": "^1.0.0",
22
- "@opensumi/ide-core-common": "3.8.3-next-1741945847.0",
23
- "@opensumi/ide-utils": "3.8.3-next-1741945847.0",
22
+ "@opensumi/ide-core-common": "3.8.3-next-1741949132.0",
23
+ "@opensumi/ide-utils": "3.8.3-next-1741949132.0",
24
24
  "@opensumi/reconnecting-websocket": "^4.4.0",
25
25
  "@opensumi/vscode-jsonrpc": "^8.0.0-next.2",
26
26
  "path-to-regexp": "^6.2.1",
27
27
  "ws": "^8.16.0"
28
28
  },
29
29
  "devDependencies": {
30
- "@opensumi/ide-components": "3.8.3-next-1741945847.0",
31
- "@opensumi/ide-dev-tool": "3.8.3-next-1741945847.0",
30
+ "@opensumi/ide-components": "3.8.3-next-1741949132.0",
31
+ "@opensumi/ide-dev-tool": "3.8.3-next-1741949132.0",
32
32
  "@opensumi/mock-socket": "^9.3.1"
33
33
  },
34
- "gitHead": "b839295724afcd554b9eec1718887c8f216e5e32"
34
+ "gitHead": "d845e5d4e4a3f6ced08b98ed51d13ea92200ec26"
35
35
  }
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  export const emptyBuffer = new Uint8Array(0);
8
+ export const buffer4Capacity = new Uint8Array(4);
8
9
 
9
10
  export function copy(
10
11
  source: Uint8Array,
@@ -72,6 +73,39 @@ export class Buffers {
72
73
  return target;
73
74
  }
74
75
 
76
+ slice4(start: number) {
77
+ let end = start + 4;
78
+ const buffers = this.buffers;
79
+
80
+ if (end > this.size) {
81
+ end = this.size;
82
+ }
83
+
84
+ if (start >= end) {
85
+ return emptyBuffer;
86
+ }
87
+
88
+ let startBytes = 0;
89
+ let si = 0;
90
+ for (; si < buffers.length && startBytes + buffers[si].length <= start; si++) {
91
+ startBytes += buffers[si].length;
92
+ }
93
+
94
+ const target = buffer4Capacity;
95
+
96
+ let ti = 0;
97
+ for (let ii = si; ti < end - start && ii < buffers.length; ii++) {
98
+ const len = buffers[ii].length;
99
+
100
+ const _start = ti === 0 ? start - startBytes : 0;
101
+ const _end = ti + len >= end - start ? Math.min(_start + (end - start) - ti, len) : len;
102
+ copy(buffers[ii], target, ti, _start, _end);
103
+ ti += _end - _start;
104
+ }
105
+
106
+ return target;
107
+ }
108
+
75
109
  pos(i: number): { buf: number; offset: number } {
76
110
  if (i < 0 || i >= this.size) {
77
111
  throw new Error(`out of range, ${i} not in [0, ${this.size})`);
@@ -268,6 +302,12 @@ export class Cursor {
268
302
  return buffers;
269
303
  }
270
304
 
305
+ read4() {
306
+ const buffers = this.buffers.slice4(this.offset);
307
+ this.skip(4);
308
+ return buffers;
309
+ }
310
+
271
311
  skip(n: number) {
272
312
  let count = 0;
273
313
  while (this.chunkIndex < this.buffers.buffers.length) {
@@ -1,6 +1,7 @@
1
+ /* eslint-disable no-console */
1
2
  import { BinaryWriter } from '@furyjs/fury/dist/lib/writer';
2
3
 
3
- import { Emitter, readUInt32LE } from '@opensumi/ide-core-common';
4
+ import { MaybeNull, readUInt32LE, setImmediate } from '@opensumi/ide-core-common';
4
5
 
5
6
  import { Buffers } from '../../buffers/buffers';
6
7
 
@@ -9,30 +10,40 @@ import { Buffers } from '../../buffers/buffers';
9
10
  */
10
11
  export const indicator = new Uint8Array([0x0d, 0x0a, 0x0d, 0x0a]);
11
12
 
13
+ /**
14
+ * The number of bytes in the length field.
15
+ *
16
+ * How many bytes are used to represent data length.
17
+ *
18
+ * For example, if the length field is 4 bytes, then the maximum length of the data is 2^32 = 4GB
19
+ */
20
+ const lengthFieldLength = 4;
21
+
12
22
  /**
13
23
  * sticky packet unpacking problems are generally problems at the transport layer.
14
24
  * we use a length field to represent the length of the data, and then read the data according to the length
15
25
  */
16
26
  export class LengthFieldBasedFrameDecoder {
17
- protected dataEmitter = new Emitter<Uint8Array>();
18
- onData = this.dataEmitter.event;
27
+ private static readonly MAX_ITERATIONS = 50;
28
+
29
+ private _onDataListener: MaybeNull<(data: Uint8Array) => void>;
30
+ onData(listener: (data: Uint8Array) => void) {
31
+ this._onDataListener = listener;
32
+ return {
33
+ dispose: () => {
34
+ this._onDataListener = null;
35
+ },
36
+ };
37
+ }
19
38
 
20
39
  protected buffers = new Buffers();
21
40
  protected cursor = this.buffers.cursor();
41
+ private processingPromise: Promise<void> | null = null;
22
42
 
23
43
  protected contentLength = -1;
24
44
 
25
45
  protected state = 0;
26
46
 
27
- /**
28
- * The number of bytes in the length field.
29
- *
30
- * How many bytes are used to represent data length.
31
- *
32
- * For example, if the length field is 4 bytes, then the maximum length of the data is 2^32 = 4GB
33
- */
34
- lengthFieldLength = 4;
35
-
36
47
  reset() {
37
48
  this.contentLength = -1;
38
49
  this.state = 0;
@@ -41,38 +52,81 @@ export class LengthFieldBasedFrameDecoder {
41
52
 
42
53
  push(chunk: Uint8Array): void {
43
54
  this.buffers.push(chunk);
44
- let done = false;
45
55
 
46
- while (!done) {
47
- done = this.readFrame();
56
+ // 确保同一时间只有一个处理过程
57
+ if (!this.processingPromise) {
58
+ this.processingPromise = this.processBuffers().finally(() => {
59
+ this.processingPromise = null;
60
+ });
48
61
  }
49
62
  }
50
63
 
51
- protected readFrame(): boolean {
52
- const found = this.readLengthField();
64
+ private async processBuffers(): Promise<void> {
65
+ let iterations = 0;
66
+ let hasMoreData = false;
67
+
68
+ do {
69
+ hasMoreData = false;
70
+ while (iterations < LengthFieldBasedFrameDecoder.MAX_ITERATIONS) {
71
+ if (this.buffers.byteLength === 0) {
72
+ break;
73
+ }
74
+
75
+ const result = await this.readFrame();
76
+ if (result === true) {
77
+ break;
78
+ }
79
+
80
+ iterations++;
81
+ if (iterations % 10 === 0) {
82
+ await new Promise((resolve) => setTimeout(resolve, 0));
83
+ }
84
+ }
85
+
86
+ // 检查剩余数据
87
+ if (this.buffers.byteLength > 0) {
88
+ hasMoreData = true;
89
+ // 异步继续处理,避免阻塞
90
+ await new Promise((resolve) => setImmediate(resolve));
91
+ iterations = 0; // 重置迭代计数器
92
+ }
93
+ } while (hasMoreData);
94
+ }
95
+
96
+ protected async readFrame(): Promise<boolean> {
97
+ try {
98
+ const found = this.readLengthField();
99
+ if (!found) {
100
+ return true;
101
+ }
53
102
 
54
- if (found) {
55
103
  const start = this.cursor.offset;
56
104
  const end = start + this.contentLength;
57
105
 
106
+ if (end > this.buffers.byteLength) {
107
+ return true;
108
+ }
109
+
58
110
  const binary = this.buffers.slice(start, end);
59
111
 
60
- this.dataEmitter.fire(binary);
112
+ // 立即清理已处理的数据
113
+ this.buffers.splice(0, end);
114
+ this.reset();
61
115
 
62
- if (this.buffers.byteLength > end) {
63
- this.contentLength = -1;
64
- this.state = 0;
65
- this.cursor.moveTo(end);
66
- // has more data, continue to parse
67
- return false;
116
+ if (this._onDataListener) {
117
+ try {
118
+ await Promise.resolve().then(() => this._onDataListener?.(binary));
119
+ } catch (error) {
120
+ console.error('[Frame Decoder] Error in data listener:', error);
121
+ }
68
122
  }
69
123
 
70
- // delete used buffers
71
- this.buffers.splice(0, end);
124
+ return false;
125
+ } catch (error) {
126
+ console.error('[Frame Decoder] Error processing frame:', error);
72
127
  this.reset();
128
+ return true;
73
129
  }
74
-
75
- return true;
76
130
  }
77
131
 
78
132
  protected readLengthField() {
@@ -93,13 +147,13 @@ export class LengthFieldBasedFrameDecoder {
93
147
  }
94
148
 
95
149
  if (this.contentLength === -1) {
96
- if (this.cursor.offset + this.lengthFieldLength > bufferLength) {
150
+ if (this.cursor.offset + lengthFieldLength > bufferLength) {
97
151
  // Not enough data yet, wait for more data
98
152
  return false;
99
153
  }
100
154
 
101
155
  // read the content length
102
- const buf = this.cursor.read(this.lengthFieldLength);
156
+ const buf = this.cursor.read4();
103
157
  // fury writer use little endian
104
158
  this.contentLength = readUInt32LE(buf, 0);
105
159
  }
@@ -118,12 +172,12 @@ export class LengthFieldBasedFrameDecoder {
118
172
  let result = iter.next();
119
173
  while (!result.done) {
120
174
  switch (result.value) {
121
- case 0x0d:
175
+ case 0x0d: // \r
122
176
  switch (this.state) {
123
177
  case 0:
124
178
  this.state = 1;
125
179
  break;
126
- case 2:
180
+ case 2: // 第二个 \r
127
181
  this.state = 3;
128
182
  break;
129
183
  default:
@@ -131,12 +185,12 @@ export class LengthFieldBasedFrameDecoder {
131
185
  break;
132
186
  }
133
187
  break;
134
- case 0x0a:
188
+ case 0x0a: // \n
135
189
  switch (this.state) {
136
190
  case 1:
137
191
  this.state = 2;
138
192
  break;
139
- case 3:
193
+ case 3: // 第二个 \n
140
194
  this.state = 4;
141
195
  iter.return();
142
196
  break;
@@ -154,17 +208,23 @@ export class LengthFieldBasedFrameDecoder {
154
208
  }
155
209
 
156
210
  dispose() {
157
- this.dataEmitter.dispose();
211
+ this._onDataListener = null;
158
212
  this.buffers.dispose();
213
+ this.reset();
159
214
  }
160
215
 
161
- static writer = BinaryWriter({});
162
-
163
216
  static construct(content: Uint8Array) {
164
- LengthFieldBasedFrameDecoder.writer.reset();
165
- LengthFieldBasedFrameDecoder.writer.buffer(indicator);
166
- LengthFieldBasedFrameDecoder.writer.uint32(content.byteLength);
167
- LengthFieldBasedFrameDecoder.writer.buffer(content);
168
- return LengthFieldBasedFrameDecoder.writer.dump();
217
+ // 每次都创建新的 writer,避免所有权问题
218
+ const writer = BinaryWriter({});
219
+
220
+ try {
221
+ writer.buffer(indicator);
222
+ writer.uint32(content.byteLength);
223
+ writer.buffer(content);
224
+ return writer;
225
+ } catch (error) {
226
+ console.warn('[Frame Decoder] Error constructing frame:', error);
227
+ throw error;
228
+ }
169
229
  }
170
230
  }