grpc-libp2p-client 0.0.37 → 0.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/grpc.js CHANGED
@@ -575,7 +575,7 @@
575
575
  try {
576
576
  result = this.decode(bytes);
577
577
  }
578
- catch (e) {
578
+ catch (_b) {
579
579
  result = '';
580
580
  }
581
581
  }
@@ -583,7 +583,7 @@
583
583
  try {
584
584
  result = new TextDecoder().decode(bytes);
585
585
  }
586
- catch (e) {
586
+ catch (_c) {
587
587
  result = '';
588
588
  }
589
589
  }
@@ -632,7 +632,8 @@
632
632
  // 编码SETTINGS帧
633
633
  FrameEncoder.encodeSettingsFrame = function (frame) {
634
634
  // 计算payload总长度:每个设置项占6字节
635
- var payloadLength = frame.payload.length * 6;
635
+ var settingsPayload = frame.payload;
636
+ var payloadLength = settingsPayload.length * 6;
636
637
  // 分配缓冲区:9字节头部 + payload长度
637
638
  var buffer = new Uint8Array(9 + payloadLength);
638
639
  // 编码帧头部(前9个字节)
@@ -643,7 +644,7 @@
643
644
  streamId: frame.streamId
644
645
  });
645
646
  // 编码payload
646
- _encodeSettingsPayload(buffer, frame.payload);
647
+ _encodeSettingsPayload(buffer, settingsPayload);
647
648
  return buffer;
648
649
  };
649
650
  // 编码SETTINGS ACK帧
@@ -716,13 +717,13 @@
716
717
  _a[SETTINGS_PARAMETERS.MAX_FRAME_SIZE] = 16 << 10,
717
718
  _a[SETTINGS_PARAMETERS.MAX_HEADER_LIST_SIZE] = 8192,
718
719
  _a);
719
- var HTTP2_PREFACE = 'PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n';
720
+ var HTTP2_PREFACE$1 = 'PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n';
720
721
  var Http2Frame = /** @class */ (function () {
721
722
  function Http2Frame() {
722
723
  }
723
724
  // 创建并编码PREFACE帧
724
725
  Http2Frame.createPreface = function () {
725
- return new TextEncoder().encode(HTTP2_PREFACE);
726
+ return new TextEncoder().encode(HTTP2_PREFACE$1);
726
727
  };
727
728
  Http2Frame.createPongFrame = function (payload) {
728
729
  return Http2Frame.createFrame(0x6, 0x1, 0, payload);
@@ -949,6 +950,7 @@
949
950
  return payload;
950
951
  }
951
952
 
953
+ var HTTP2_PREFACE = new TextEncoder().encode("PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n");
952
954
  var HTTP2Parser = /** @class */ (function () {
953
955
  function HTTP2Parser(writer, options) {
954
956
  var _a;
@@ -1039,44 +1041,49 @@
1039
1041
  // 处理单个数据块
1040
1042
  HTTP2Parser.prototype._processChunk = function (chunk) {
1041
1043
  // chunk 是 Uint8ArrayList 或 Uint8Array
1042
- var newData = chunk.subarray ? chunk.subarray() : new Uint8Array(chunk);
1043
- // 累积数据到buffer
1044
+ var newData = 'subarray' in chunk && typeof chunk.subarray === 'function'
1045
+ ? chunk.subarray()
1046
+ : chunk;
1047
+ // 原作者之前的 O(N) 内存拷贝优化被保留,去掉了存在 onEnd 竞态的 setTimeout
1044
1048
  var newBuffer = new Uint8Array(this.buffer.length + newData.length);
1045
1049
  newBuffer.set(this.buffer);
1046
1050
  newBuffer.set(newData, this.buffer.length);
1047
1051
  this.buffer = newBuffer;
1048
1052
  // 持续处理所有完整的帧
1049
- while (this.buffer.length >= 9) {
1053
+ var readOffset = 0;
1054
+ while (this.buffer.length - readOffset >= 9) {
1050
1055
  // 判断是否有HTTP/2前导
1051
- if (this.buffer.length >= 24 && this.isHttp2Preface(this.buffer)) {
1052
- this.buffer = this.buffer.slice(24);
1056
+ if (this.buffer.length - readOffset >= 24 && this.isHttp2Preface(this.buffer.subarray(readOffset))) {
1057
+ readOffset += 24;
1053
1058
  // 发送SETTINGS帧
1054
1059
  var settingFrame = Http2Frame.createSettingsFrame();
1055
1060
  this.writer.write(settingFrame);
1056
- break;
1061
+ continue;
1057
1062
  }
1058
- var frameHeader = this._parseFrameHeader(this.buffer);
1063
+ var frameHeader = this._parseFrameHeader(this.buffer.subarray(readOffset));
1059
1064
  var totalFrameLength = 9 + frameHeader.length;
1060
1065
  // 检查是否有完整的帧
1061
- if (this.buffer.length < totalFrameLength) {
1066
+ if (this.buffer.length - readOffset < totalFrameLength) {
1062
1067
  break;
1063
1068
  }
1064
1069
  // 获取完整帧数据
1065
- var frameData = this.buffer.slice(0, totalFrameLength);
1070
+ var frameData = this.buffer.subarray(readOffset, readOffset + totalFrameLength);
1066
1071
  // 处理不同类型的帧
1067
1072
  this._handleFrame(frameHeader, frameData).catch(function (err) {
1068
1073
  console.error("Error handling frame:", err);
1069
1074
  });
1070
- // 移除已处理的帧
1071
- this.buffer = this.buffer.slice(totalFrameLength);
1075
+ // 移动偏移量
1076
+ readOffset += totalFrameLength;
1077
+ }
1078
+ if (readOffset > 0) {
1079
+ this.buffer = this.buffer.slice(readOffset);
1072
1080
  }
1073
1081
  };
1074
1082
  HTTP2Parser.prototype.isHttp2Preface = function (buffer) {
1075
- var PREFACE = new TextEncoder().encode("PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n");
1076
- if (buffer.length < PREFACE.length)
1083
+ if (buffer.length < HTTP2_PREFACE.length)
1077
1084
  return false;
1078
- for (var i = 0; i < PREFACE.length; i++) {
1079
- if (buffer[i] !== PREFACE[i])
1085
+ for (var i = 0; i < HTTP2_PREFACE.length; i++) {
1086
+ if (buffer[i] !== HTTP2_PREFACE[i])
1080
1087
  return false;
1081
1088
  }
1082
1089
  return true;
@@ -1282,7 +1289,9 @@
1282
1289
  waiters.forEach(function (fn) { try {
1283
1290
  fn();
1284
1291
  }
1285
- catch (_a) { } });
1292
+ catch (e) {
1293
+ console.debug('waiter error', e);
1294
+ } });
1286
1295
  }
1287
1296
  break;
1288
1297
  case FRAME_TYPES.DATA:
@@ -1330,7 +1339,7 @@
1330
1339
  break;
1331
1340
  case FRAME_TYPES.WINDOW_UPDATE:
1332
1341
  // 处理窗口更新帧
1333
- this.handleWindowUpdateFrame(frameHeader, frameData, frameHeader.streamId);
1342
+ this.handleWindowUpdateFrame(frameHeader, frameData);
1334
1343
  // 更新发送窗口(对端接收窗口)
1335
1344
  try {
1336
1345
  inc = this.parseWindowUpdateFrame(frameData, frameHeader).windowSizeIncrement;
@@ -1345,9 +1354,11 @@
1345
1354
  waiters.forEach(function (fn) { try {
1346
1355
  fn();
1347
1356
  }
1348
- catch (_a) { } });
1357
+ catch (e) {
1358
+ console.debug('waiter error', e);
1359
+ } });
1349
1360
  }
1350
- catch (e) { }
1361
+ catch ( /* ignore WINDOW_UPDATE parse errors */_g) { /* ignore WINDOW_UPDATE parse errors */ }
1351
1362
  break;
1352
1363
  case FRAME_TYPES.PING:
1353
1364
  // 处理PING帧
@@ -1369,7 +1380,7 @@
1369
1380
  info = {};
1370
1381
  }
1371
1382
  }
1372
- catch (_g) { }
1383
+ catch ( /* ignore GOAWAY parse errors */_h) { /* ignore GOAWAY parse errors */ }
1373
1384
  try {
1374
1385
  (_d = this.onGoaway) === null || _d === void 0 ? void 0 : _d.call(this, info !== null && info !== void 0 ? info : {});
1375
1386
  }
@@ -1506,7 +1517,7 @@
1506
1517
  };
1507
1518
  };
1508
1519
  // 处理 WINDOW_UPDATE 帧
1509
- HTTP2Parser.prototype.handleWindowUpdateFrame = function (frameHeader, payload, streamId) {
1520
+ HTTP2Parser.prototype.handleWindowUpdateFrame = function (frameHeader, payload) {
1510
1521
  try {
1511
1522
  var windowUpdate = this.parseWindowUpdateFrame(payload, frameHeader);
1512
1523
  this.connectionWindowSize += windowUpdate.windowSizeIncrement;
@@ -1976,23 +1987,23 @@
1976
1987
  return __awaiter(this, void 0, void 0, function () {
1977
1988
  var _a, _b, _c, chunk, canContinue, err_1, errMsg, e_1_1;
1978
1989
  var _d, e_1, _e, _f;
1979
- var _g, _h, _j, _k, _l;
1980
- return __generator(this, function (_m) {
1981
- switch (_m.label) {
1990
+ var _g, _h, _j, _k;
1991
+ return __generator(this, function (_l) {
1992
+ switch (_l.label) {
1982
1993
  case 0:
1983
1994
  // 检查 stream 是否有效
1984
1995
  if (!this.stream) {
1985
1996
  (_h = (_g = this.log) === null || _g === void 0 ? void 0 : _g.trace) === null || _h === void 0 ? void 0 : _h.call(_g, 'Stream is null/undefined, cannot start pipeline');
1986
1997
  return [2 /*return*/];
1987
1998
  }
1988
- _m.label = 1;
1999
+ _l.label = 1;
1989
2000
  case 1:
1990
- _m.trys.push([1, 10, 11, 16]);
2001
+ _l.trys.push([1, 10, 11, 16]);
1991
2002
  _a = true, _b = __asyncValues(this.createTransform()(this.p));
1992
- _m.label = 2;
2003
+ _l.label = 2;
1993
2004
  case 2: return [4 /*yield*/, _b.next()];
1994
2005
  case 3:
1995
- if (!(_c = _m.sent(), _d = _c.done, !_d)) return [3 /*break*/, 9];
2006
+ if (!(_c = _l.sent(), _d = _c.done, !_d)) return [3 /*break*/, 9];
1996
2007
  _f = _c.value;
1997
2008
  _a = false;
1998
2009
  chunk = _f;
@@ -2000,26 +2011,26 @@
2000
2011
  if (this.abortController.signal.aborted) {
2001
2012
  return [3 /*break*/, 9];
2002
2013
  }
2003
- _m.label = 4;
2014
+ _l.label = 4;
2004
2015
  case 4:
2005
- _m.trys.push([4, 7, , 8]);
2016
+ _l.trys.push([4, 7, , 8]);
2006
2017
  canContinue = this.stream.send(chunk);
2007
2018
  if (!!canContinue) return [3 /*break*/, 6];
2008
2019
  // 等待 drain 事件
2009
2020
  return [4 /*yield*/, this.stream.onDrain()];
2010
2021
  case 5:
2011
2022
  // 等待 drain 事件
2012
- _m.sent();
2013
- _m.label = 6;
2023
+ _l.sent();
2024
+ _l.label = 6;
2014
2025
  case 6: return [3 /*break*/, 8];
2015
2026
  case 7:
2016
- err_1 = _m.sent();
2017
- errMsg = ((_j = err_1.message) === null || _j === void 0 ? void 0 : _j.toLowerCase()) || '';
2018
- if (err_1.name === 'StreamStateError' ||
2027
+ err_1 = _l.sent();
2028
+ errMsg = (err_1 instanceof Error ? err_1.message : '').toLowerCase();
2029
+ if ((err_1 instanceof Error && err_1.name === 'StreamStateError') ||
2019
2030
  errMsg.includes('closing') ||
2020
2031
  errMsg.includes('closed') ||
2021
2032
  errMsg.includes('write to a stream that is closed')) {
2022
- (_l = (_k = this.log) === null || _k === void 0 ? void 0 : _k.trace) === null || _l === void 0 ? void 0 : _l.call(_k, 'Stream is closing/closed, stopping pipeline');
2033
+ (_k = (_j = this.log) === null || _j === void 0 ? void 0 : _j.trace) === null || _k === void 0 ? void 0 : _k.call(_j, 'Stream is closing/closed, stopping pipeline');
2023
2034
  return [3 /*break*/, 9];
2024
2035
  }
2025
2036
  throw err_1;
@@ -2028,16 +2039,16 @@
2028
2039
  return [3 /*break*/, 2];
2029
2040
  case 9: return [3 /*break*/, 16];
2030
2041
  case 10:
2031
- e_1_1 = _m.sent();
2042
+ e_1_1 = _l.sent();
2032
2043
  e_1 = { error: e_1_1 };
2033
2044
  return [3 /*break*/, 16];
2034
2045
  case 11:
2035
- _m.trys.push([11, , 14, 15]);
2046
+ _l.trys.push([11, , 14, 15]);
2036
2047
  if (!(!_a && !_d && (_e = _b.return))) return [3 /*break*/, 13];
2037
2048
  return [4 /*yield*/, _e.call(_b)];
2038
2049
  case 12:
2039
- _m.sent();
2040
- _m.label = 13;
2050
+ _l.sent();
2051
+ _l.label = 13;
2041
2052
  case 13: return [3 /*break*/, 15];
2042
2053
  case 14:
2043
2054
  if (e_1) throw e_1.error;
@@ -2049,21 +2060,21 @@
2049
2060
  });
2050
2061
  };
2051
2062
  StreamWriter.prototype.createTransform = function () {
2063
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
2052
2064
  var self = this;
2053
2065
  return function (source) {
2054
2066
  return __asyncGenerator(this, arguments, function () {
2055
2067
  var _a, source_1, source_1_1, chunk, now, e_2_1;
2056
2068
  var _b, e_2, _c, _d;
2057
- var _e;
2058
- return __generator(this, function (_f) {
2059
- switch (_f.label) {
2069
+ return __generator(this, function (_e) {
2070
+ switch (_e.label) {
2060
2071
  case 0:
2061
- _f.trys.push([0, 7, 8, 13]);
2072
+ _e.trys.push([0, 7, 8, 13]);
2062
2073
  _a = true, source_1 = __asyncValues(source);
2063
- _f.label = 1;
2074
+ _e.label = 1;
2064
2075
  case 1: return [4 /*yield*/, __await(source_1.next())];
2065
2076
  case 2:
2066
- if (!(source_1_1 = _f.sent(), _b = source_1_1.done, !_b)) return [3 /*break*/, 6];
2077
+ if (!(source_1_1 = _e.sent(), _b = source_1_1.done, !_b)) return [3 /*break*/, 6];
2067
2078
  _d = source_1_1.value;
2068
2079
  _a = false;
2069
2080
  chunk = _d;
@@ -2073,15 +2084,15 @@
2073
2084
  )];
2074
2085
  case 3:
2075
2086
  // 将数据交给下游
2076
- return [4 /*yield*/, _f.sent()];
2087
+ return [4 /*yield*/, _e.sent()];
2077
2088
  case 4:
2078
2089
  // 将数据交给下游
2079
- _f.sent();
2090
+ _e.sent();
2080
2091
  // 注意:在 async generator 中,yield 返回后到下一次循环之间,表示下游已经“取走并处理了这个 chunk”,
2081
2092
  // 因此这里统计的 bytesDrained 更接近实际被 sink 消费的字节数
2082
2093
  try {
2083
2094
  // 在下游消费后再扣减待消费队列,避免误判“next 没取”
2084
- if (((_e = self.p) === null || _e === void 0 ? void 0 : _e._queueSize) != null) {
2095
+ if (self.p._queueSize != null) {
2085
2096
  self.p._queueSize = Math.max(0, self.p._queueSize - chunk.byteLength);
2086
2097
  }
2087
2098
  self.bytesDrained += chunk.byteLength;
@@ -2097,22 +2108,22 @@
2097
2108
  //打印错误
2098
2109
  console.error('Error updating bytesDrained in StreamWriter transform', err);
2099
2110
  }
2100
- _f.label = 5;
2111
+ _e.label = 5;
2101
2112
  case 5:
2102
2113
  _a = true;
2103
2114
  return [3 /*break*/, 1];
2104
2115
  case 6: return [3 /*break*/, 13];
2105
2116
  case 7:
2106
- e_2_1 = _f.sent();
2117
+ e_2_1 = _e.sent();
2107
2118
  e_2 = { error: e_2_1 };
2108
2119
  return [3 /*break*/, 13];
2109
2120
  case 8:
2110
- _f.trys.push([8, , 11, 12]);
2121
+ _e.trys.push([8, , 11, 12]);
2111
2122
  if (!(!_a && !_b && (_c = source_1.return))) return [3 /*break*/, 10];
2112
2123
  return [4 /*yield*/, __await(_c.call(source_1))];
2113
2124
  case 9:
2114
- _f.sent();
2115
- _f.label = 10;
2125
+ _e.sent();
2126
+ _e.label = 10;
2116
2127
  case 10: return [3 /*break*/, 12];
2117
2128
  case 11:
2118
2129
  if (e_2) throw e_2.error;
@@ -2208,6 +2219,8 @@
2208
2219
  return [2 /*return*/, data.arrayBuffer()];
2209
2220
  if (typeof data === 'string')
2210
2221
  return [2 /*return*/, new TextEncoder().encode(data).buffer];
2222
+ if (data instanceof Uint8Array)
2223
+ return [2 /*return*/, data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength)];
2211
2224
  return [2 /*return*/, data];
2212
2225
  });
2213
2226
  });
@@ -2411,24 +2424,24 @@
2411
2424
  StreamWriter.prototype.end = function () {
2412
2425
  return __awaiter(this, void 0, void 0, function () {
2413
2426
  var err_4, errMsg;
2414
- var _a, _b, _c;
2415
- return __generator(this, function (_d) {
2416
- switch (_d.label) {
2427
+ var _a, _b;
2428
+ return __generator(this, function (_c) {
2429
+ switch (_c.label) {
2417
2430
  case 0:
2418
2431
  this.p.end();
2419
2432
  if (!(this.stream && typeof this.stream.close === 'function')) return [3 /*break*/, 4];
2420
- _d.label = 1;
2433
+ _c.label = 1;
2421
2434
  case 1:
2422
- _d.trys.push([1, 3, , 4]);
2435
+ _c.trys.push([1, 3, , 4]);
2423
2436
  return [4 /*yield*/, this.stream.close()];
2424
2437
  case 2:
2425
- _d.sent();
2438
+ _c.sent();
2426
2439
  return [3 /*break*/, 4];
2427
2440
  case 3:
2428
- err_4 = _d.sent();
2429
- errMsg = ((_a = err_4.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
2441
+ err_4 = _c.sent();
2442
+ errMsg = (err_4 instanceof Error ? err_4.message : '').toLowerCase();
2430
2443
  if (!errMsg.includes('closed') && !errMsg.includes('closing')) {
2431
- (_c = (_b = this.log) === null || _b === void 0 ? void 0 : _b.trace) === null || _c === void 0 ? void 0 : _c.call(_b, 'Stream close error:', err_4);
2444
+ (_b = (_a = this.log) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'Stream close error:', err_4);
2432
2445
  }
2433
2446
  return [3 /*break*/, 4];
2434
2447
  case 4:
@@ -2439,7 +2452,7 @@
2439
2452
  });
2440
2453
  };
2441
2454
  StreamWriter.prototype.abort = function (reason) {
2442
- var _a, _b, _c, _d, _e;
2455
+ var _a, _b, _c, _d;
2443
2456
  if (reason === void 0) { reason = 'User aborted'; }
2444
2457
  if (this.abortController.signal.aborted) {
2445
2458
  return; // Already aborted, prevent multiple abort calls
@@ -2450,7 +2463,8 @@
2450
2463
  // 先检查流状态,避免在已关闭的流上调用 abort
2451
2464
  if (this.stream && typeof this.stream.abort === 'function') {
2452
2465
  // 检查流的状态,避免操作已关闭的流
2453
- var streamState = this.stream.status || this.stream.state;
2466
+ var streamState = this.stream.status ||
2467
+ this.stream.state;
2454
2468
  if (streamState !== 'closed' && streamState !== 'closing') {
2455
2469
  this.stream.abort(new Error(reason));
2456
2470
  }
@@ -2459,9 +2473,9 @@
2459
2473
  catch (err) {
2460
2474
  // Stream may already be closed, ignore all stream-related errors
2461
2475
  // 完全忽略流操作错误,避免在错误处理中再次抛出错误
2462
- var errMsg = ((_a = err.message) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || '';
2476
+ var errMsg = (err instanceof Error ? err.message : '').toLowerCase();
2463
2477
  if (!errMsg.includes('closed') && !errMsg.includes('closing') && !errMsg.includes('write')) {
2464
- (_c = (_b = this.log) === null || _b === void 0 ? void 0 : _b.trace) === null || _c === void 0 ? void 0 : _c.call(_b, 'Stream abort error:', err);
2478
+ (_b = (_a = this.log) === null || _a === void 0 ? void 0 : _a.trace) === null || _b === void 0 ? void 0 : _b.call(_a, 'Stream abort error:', err);
2465
2479
  }
2466
2480
  }
2467
2481
  this.cleanup();
@@ -2471,7 +2485,7 @@
2471
2485
  }
2472
2486
  catch (eventErr) {
2473
2487
  // 忽略事件处理器错误
2474
- (_e = (_d = this.log) === null || _d === void 0 ? void 0 : _d.trace) === null || _e === void 0 ? void 0 : _e.call(_d, 'Error in abort event handler:', eventErr);
2488
+ (_d = (_c = this.log) === null || _c === void 0 ? void 0 : _c.trace) === null || _d === void 0 ? void 0 : _d.call(_c, 'Error in abort event handler:', eventErr);
2475
2489
  }
2476
2490
  };
2477
2491
  StreamWriter.prototype.cleanup = function () {
@@ -2481,13 +2495,13 @@
2481
2495
  }
2482
2496
  // 立即拒绝所有待处理的写入任务,避免它们继续执行
2483
2497
  var pendingTasks = this.writeQueue.splice(0);
2484
- pendingTasks.forEach(function (task) {
2498
+ pendingTasks.forEach(function () {
2485
2499
  // 这些任务的 Promise 会在执行时因为检查到 aborted 而被拒绝
2486
2500
  });
2487
2501
  try {
2488
2502
  this.p.end();
2489
2503
  }
2490
- catch (err) {
2504
+ catch (_a) {
2491
2505
  // Ignore errors when ending pushable
2492
2506
  }
2493
2507
  if (this.watchdogTimer) {
@@ -2652,6 +2666,7 @@
2652
2666
  }
2653
2667
  return [4 /*yield*/, new Promise(function (resolve, reject) {
2654
2668
  var settled = false;
2669
+ // eslint-disable-next-line prefer-const
2655
2670
  var timeoutId;
2656
2671
  var cleanup = function () {
2657
2672
  var idx = state.waiters.indexOf(waiter);
@@ -2755,15 +2770,14 @@
2755
2770
  return __awaiter(this, void 0, void 0, function () {
2756
2771
  var key, pooled, conn, status_1, dialPromise;
2757
2772
  var _this = this;
2758
- var _a, _b, _c;
2759
- return __generator(this, function (_d) {
2773
+ return __generator(this, function (_a) {
2760
2774
  key = this.peerAddr.toString();
2761
2775
  if (!forceNew) {
2762
2776
  pooled = this.connectionPool.get(key);
2763
2777
  if (pooled) {
2764
2778
  conn = pooled.connection;
2765
2779
  if (conn) {
2766
- status_1 = (_c = (_b = (_a = conn === null || conn === void 0 ? void 0 : conn.stat) === null || _a === void 0 ? void 0 : _a.status) === null || _b === void 0 ? void 0 : _b.toLowerCase) === null || _c === void 0 ? void 0 : _c.call(_b);
2780
+ status_1 = conn.status;
2767
2781
  if (!status_1 || status_1 === "open") {
2768
2782
  return [2 /*return*/, conn];
2769
2783
  }
@@ -2779,7 +2793,7 @@
2779
2793
  signal: AbortSignal.timeout(dialTimeout),
2780
2794
  })
2781
2795
  .then(function (conn) { return __awaiter(_this, void 0, void 0, function () {
2782
- var poolEntry, removeFromPool, anyConn;
2796
+ var poolEntry, removeFromPool;
2783
2797
  var _this = this;
2784
2798
  return __generator(this, function (_a) {
2785
2799
  if (!forceNew) {
@@ -2793,17 +2807,9 @@
2793
2807
  }
2794
2808
  };
2795
2809
  try {
2796
- anyConn = conn;
2797
- if (typeof anyConn.addEventListener === "function") {
2798
- anyConn.addEventListener("close", removeFromPool, {
2799
- once: true,
2800
- });
2801
- }
2802
- else if (typeof anyConn.once === "function") {
2803
- anyConn.once("close", removeFromPool);
2804
- }
2810
+ conn.addEventListener("close", removeFromPool, { once: true });
2805
2811
  }
2806
- catch (_b) { }
2812
+ catch ( /* ignore event listener registration errors */_b) { /* ignore event listener registration errors */ }
2807
2813
  }
2808
2814
  }
2809
2815
  return [2 /*return*/, conn];
@@ -2841,12 +2847,11 @@
2841
2847
  };
2842
2848
  Libp2pGrpcClient.prototype.unaryCall = function (method_1, requestData_1) {
2843
2849
  return __awaiter(this, arguments, void 0, function (method, requestData, timeout) {
2844
- var stream, responseData, responseBuffer, responseDataExpectedLength, hpack, exitFlag, errMsg, isResponseComplete, connection, state, streamSlotAcquired, connectionKey_1, err_2, streamManager, streamId_1, writer_1, parser_1, preface, settingFrme, headerFrame, dataFrames, frameSendTimeout, _i, dataFrames_1, df, err_3;
2850
+ var stream, responseData, responseBuffer, responseDataExpectedLength, hpack, exitFlag, errMsg, isResponseComplete, connection, state, streamSlotAcquired, connectionKey_1, err_2, streamManager, streamId_1, writer_1, parser, preface, settingFrme, headerFrame, dataFrames, frameSendTimeout, _i, dataFrames_1, df, err_3;
2845
2851
  var _this = this;
2846
- var _b, _c;
2847
2852
  if (timeout === void 0) { timeout = 30000; }
2848
- return __generator(this, function (_d) {
2849
- switch (_d.label) {
2853
+ return __generator(this, function (_b) {
2854
+ switch (_b.label) {
2850
2855
  case 0:
2851
2856
  stream = null;
2852
2857
  responseData = null;
@@ -2859,26 +2864,26 @@
2859
2864
  connection = null;
2860
2865
  state = null;
2861
2866
  streamSlotAcquired = false;
2862
- _d.label = 1;
2867
+ _b.label = 1;
2863
2868
  case 1:
2864
- _d.trys.push([1, 23, 24, 27]);
2869
+ _b.trys.push([1, 23, 24, 27]);
2865
2870
  return [4 /*yield*/, this.acquireConnection(false)];
2866
2871
  case 2:
2867
2872
  // const stream = await this.node.dialProtocol(this.peerAddr, this.protocol)
2868
- connection = _d.sent();
2873
+ connection = _b.sent();
2869
2874
  connectionKey_1 = this.peerAddr.toString();
2870
2875
  state = this.getConnectionState(connection);
2871
- _d.label = 3;
2876
+ _b.label = 3;
2872
2877
  case 3:
2873
- _d.trys.push([3, 5, , 6]);
2878
+ _b.trys.push([3, 5, , 6]);
2874
2879
  return [4 /*yield*/, this.waitForStreamSlot(state, undefined, timeout)];
2875
2880
  case 4:
2876
- _d.sent();
2881
+ _b.sent();
2877
2882
  state.activeStreams += 1;
2878
2883
  streamSlotAcquired = true;
2879
2884
  return [3 /*break*/, 6];
2880
2885
  case 5:
2881
- err_2 = _d.sent();
2886
+ err_2 = _b.sent();
2882
2887
  console.warn("[unaryCall] waiting for stream slot failed:", err_2);
2883
2888
  throw err_2;
2884
2889
  case 6: return [4 /*yield*/, connection.newStream(this.protocol, {
@@ -2886,25 +2891,25 @@
2886
2891
  negotiateFully: false,
2887
2892
  })];
2888
2893
  case 7:
2889
- stream = _d.sent();
2894
+ stream = _b.sent();
2890
2895
  streamManager = this.getStreamManagerFor(connection);
2891
2896
  return [4 /*yield*/, streamManager.getNextAppLevelStreamId()];
2892
2897
  case 8:
2893
- streamId_1 = _d.sent();
2898
+ streamId_1 = _b.sent();
2894
2899
  writer_1 = new StreamWriter(stream, {
2895
2900
  bufferSize: 16 * 1024 * 1024,
2896
2901
  });
2897
2902
  try {
2898
2903
  writer_1.addEventListener("backpressure", function (e) {
2899
- var d = (e === null || e === void 0 ? void 0 : e.detail) || {};
2904
+ var d = e.detail || {};
2900
2905
  console.warn("[unary stream ".concat(streamId_1, "] backpressure current=").concat(d.currentSize, " avg=").concat(d.averageSize, " threshold=").concat(d.threshold));
2901
2906
  });
2902
- writer_1.addEventListener("drain", function (e) {
2903
- var d = (e === null || e === void 0 ? void 0 : e.detail) || {};
2907
+ writer_1.addEventListener("drain", function () {
2908
+ // drain event - no action needed
2904
2909
  });
2905
2910
  writer_1.addEventListener("stalled", function (e) {
2906
2911
  var _a;
2907
- var d = (e === null || e === void 0 ? void 0 : e.detail) || {};
2912
+ var d = e.detail || {};
2908
2913
  console.warn("[unary stream ".concat(streamId_1, "] stalled queue=").concat(d.queueSize, " drained=").concat(d.drained, " since=").concat(d.sinceMs, "ms \u2014 sending PING"));
2909
2914
  try {
2910
2915
  var payload = new Uint8Array(8);
@@ -2912,13 +2917,12 @@
2912
2917
  var ping = Http2Frame.createFrame(0x6, 0x0, 0, payload);
2913
2918
  writer_1.write(ping);
2914
2919
  }
2915
- catch (_b) { }
2920
+ catch ( /* ignore ping write errors */_b) { /* ignore ping write errors */ }
2916
2921
  });
2917
2922
  }
2918
- catch (_e) { }
2919
- parser_1 = new HTTP2Parser(writer_1);
2920
- parser_1.onGoaway = function (info) {
2921
- var _a;
2923
+ catch ( /* ignore addEventListener errors */_c) { /* ignore addEventListener errors */ }
2924
+ parser = new HTTP2Parser(writer_1);
2925
+ parser.onGoaway = function (info) {
2922
2926
  console.warn("[unaryCall] GOAWAY received from server", info);
2923
2927
  _this.connectionPool.delete(connectionKey_1);
2924
2928
  if (state) {
@@ -2927,13 +2931,13 @@
2927
2931
  exitFlag = true;
2928
2932
  errMsg = "GOAWAY received: code=".concat(info.errorCode);
2929
2933
  try {
2930
- (_a = connection === null || connection === void 0 ? void 0 : connection.close) === null || _a === void 0 ? void 0 : _a.call(connection);
2934
+ connection === null || connection === void 0 ? void 0 : connection.close();
2931
2935
  }
2932
2936
  catch (err) {
2933
2937
  console.warn("Error closing connection after GOAWAY:", err);
2934
2938
  }
2935
2939
  };
2936
- parser_1.onSettingsParsed = function (settings) {
2940
+ parser.onSettingsParsed = function (settings) {
2937
2941
  if (state &&
2938
2942
  settings.maxConcurrentStreams !== undefined &&
2939
2943
  settings.maxConcurrentStreams > 0) {
@@ -2941,10 +2945,10 @@
2941
2945
  _this.notifyStreamSlotAvailable(state);
2942
2946
  }
2943
2947
  };
2944
- parser_1.registerOutboundStream(streamId_1);
2948
+ parser.registerOutboundStream(streamId_1);
2945
2949
  responseDataExpectedLength = -1; // 重置期望长度
2946
2950
  responseBuffer = []; // 重置缓冲区
2947
- parser_1.onData = function (payload, frameHeader) {
2951
+ parser.onData = function (payload, frameHeader) {
2948
2952
  //接收数据
2949
2953
  if (responseDataExpectedLength === -1) {
2950
2954
  //grpc消息头部未读取
@@ -2952,7 +2956,6 @@
2952
2956
  if (payload.length < 5) {
2953
2957
  return;
2954
2958
  }
2955
- payload[0]; // 压缩标志
2956
2959
  var lengthBytes = payload.slice(1, 5); // 消息长度的4字节
2957
2960
  responseDataExpectedLength = new DataView(lengthBytes.buffer, lengthBytes.byteOffset).getUint32(0, false); // big-endian
2958
2961
  if (responseDataExpectedLength < 0) {
@@ -3006,7 +3009,7 @@
3006
3009
  isResponseComplete = true;
3007
3010
  }
3008
3011
  };
3009
- parser_1.onEnd = function () {
3012
+ parser.onEnd = function () {
3010
3013
  //接收结束
3011
3014
  if (!isResponseComplete) {
3012
3015
  isResponseComplete = true; // 设置响应完成标志
@@ -3027,12 +3030,12 @@
3027
3030
  }
3028
3031
  }
3029
3032
  };
3030
- parser_1.onSettings = function () {
3033
+ parser.onSettings = function () {
3031
3034
  //接收settings,反馈ack
3032
3035
  var ackSettingFrame = Http2Frame.createSettingsAckFrame();
3033
3036
  writer_1.write(ackSettingFrame);
3034
3037
  };
3035
- parser_1.onHeaders = function (headers, header) {
3038
+ parser.onHeaders = function (headers) {
3036
3039
  var plainHeaders = hpack.decodeHeaderFields(headers);
3037
3040
  if (plainHeaders.get("grpc-status") === "0") ;
3038
3041
  else if (plainHeaders.get("grpc-status") !== undefined) {
@@ -3041,7 +3044,7 @@
3041
3044
  }
3042
3045
  };
3043
3046
  // 启动后台流处理,捕获任何异步错误
3044
- parser_1.processStream(stream).catch(function (error) {
3047
+ parser.processStream(stream).catch(function (error) {
3045
3048
  console.error('Error in processStream:', error);
3046
3049
  exitFlag = true;
3047
3050
  if (!errMsg) {
@@ -3051,51 +3054,35 @@
3051
3054
  preface = Http2Frame.createPreface();
3052
3055
  return [4 /*yield*/, writer_1.write(preface)];
3053
3056
  case 9:
3054
- _d.sent();
3057
+ _b.sent();
3055
3058
  settingFrme = Http2Frame.createSettingsFrame();
3056
3059
  return [4 /*yield*/, writer_1.write(settingFrme)];
3057
3060
  case 10:
3058
- _d.sent();
3061
+ _b.sent();
3062
+ // 等待对端 SETTINGS 或 ACK,择一即可,避免偶发握手竞态
3059
3063
  return [4 /*yield*/, Promise.race([
3060
- (function () { return __awaiter(_this, void 0, void 0, function () {
3061
- return __generator(this, function (_a) {
3062
- switch (_a.label) {
3063
- case 0: return [4 /*yield*/, parser_1.waitForPeerSettings(1000)];
3064
- case 1:
3065
- _a.sent();
3066
- return [2 /*return*/];
3067
- }
3068
- });
3069
- }); })(),
3070
- (function () { return __awaiter(_this, void 0, void 0, function () {
3071
- return __generator(this, function (_a) {
3072
- switch (_a.label) {
3073
- case 0: return [4 /*yield*/, parser_1.waitForSettingsAck()];
3074
- case 1:
3075
- _a.sent();
3076
- return [2 /*return*/];
3077
- }
3078
- });
3079
- }); })(),
3064
+ parser.waitForPeerSettings(1000),
3065
+ parser.waitForSettingsAck(),
3080
3066
  new Promise(function (res) { return setTimeout(res, 300); }),
3081
3067
  ])];
3082
3068
  case 11:
3083
- _d.sent();
3069
+ // 等待对端 SETTINGS 或 ACK,择一即可,避免偶发握手竞态
3070
+ _b.sent();
3084
3071
  headerFrame = Http2Frame.createHeadersFrame(streamId_1, method, true, this.token);
3085
3072
  return [4 /*yield*/, writer_1.write(headerFrame)];
3086
3073
  case 12:
3087
- _d.sent();
3074
+ _b.sent();
3088
3075
  dataFrames = Http2Frame.createDataFrames(streamId_1, requestData, true);
3089
3076
  frameSendTimeout = timeout > 0 ? timeout : DEFAULT_SEND_WINDOW_TIMEOUT;
3090
3077
  _i = 0, dataFrames_1 = dataFrames;
3091
- _d.label = 13;
3078
+ _b.label = 13;
3092
3079
  case 13:
3093
3080
  if (!(_i < dataFrames_1.length)) return [3 /*break*/, 16];
3094
3081
  df = dataFrames_1[_i];
3095
- return [4 /*yield*/, this.sendFrameWithFlowControl(parser_1, streamId_1, df, writer_1, undefined, frameSendTimeout)];
3082
+ return [4 /*yield*/, this.sendFrameWithFlowControl(parser, streamId_1, df, writer_1, undefined, frameSendTimeout)];
3096
3083
  case 14:
3097
- _d.sent();
3098
- _d.label = 15;
3084
+ _b.sent();
3085
+ _b.label = 15;
3099
3086
  case 15:
3100
3087
  _i++;
3101
3088
  return [3 /*break*/, 13];
@@ -3119,31 +3106,31 @@
3119
3106
  })];
3120
3107
  case 17:
3121
3108
  // 等待responseData 不为空,或超时
3122
- _d.sent();
3123
- _d.label = 18;
3109
+ _b.sent();
3110
+ _b.label = 18;
3124
3111
  case 18:
3125
- _d.trys.push([18, 20, , 21]);
3126
- return [4 /*yield*/, ((_c = (_b = writer_1).flush) === null || _c === void 0 ? void 0 : _c.call(_b, timeout))];
3112
+ _b.trys.push([18, 20, , 21]);
3113
+ return [4 /*yield*/, writer_1.flush(timeout)];
3127
3114
  case 19:
3128
- _d.sent();
3115
+ _b.sent();
3129
3116
  return [3 /*break*/, 21];
3130
3117
  case 20:
3131
- _d.sent();
3118
+ _b.sent();
3132
3119
  return [3 /*break*/, 21];
3133
3120
  case 21: return [4 /*yield*/, writer_1.end()];
3134
3121
  case 22:
3135
- _d.sent();
3122
+ _b.sent();
3136
3123
  return [3 /*break*/, 27];
3137
3124
  case 23:
3138
- err_3 = _d.sent();
3125
+ err_3 = _b.sent();
3139
3126
  console.error("unaryCall error:", err_3);
3140
3127
  throw err_3;
3141
3128
  case 24:
3142
3129
  if (!stream) return [3 /*break*/, 26];
3143
3130
  return [4 /*yield*/, stream.close()];
3144
3131
  case 25:
3145
- _d.sent();
3146
- _d.label = 26;
3132
+ _b.sent();
3133
+ _b.label = 26;
3147
3134
  case 26:
3148
3135
  if (streamSlotAcquired && state) {
3149
3136
  state.activeStreams = Math.max(0, state.activeStreams - 1);
@@ -3225,12 +3212,12 @@
3225
3212
  }, timeout);
3226
3213
  });
3227
3214
  operationPromise = (function () { return __awaiter(_this, void 0, void 0, function () {
3228
- var messageBuffer, expectedMessageLength, hpack, connection, connectionKey, state, streamSlotAcquired, err_4, err_5, streamManager, streamId_2, writer_2, parser_2, sendWindowTimeout_1, writeFrame_1, writeDataFrames_1, preface, settingFrame, headerFrame, dfs, dfs0, batchSize_1, processingQueue_1, isProcessing_1, processNextBatch_1, addToQueue_1, _a, _b, _c, chunkOrChunks, chunksToProcess, addPromises, e_1_1, error_2, remainingQueue, queueWaitStart, maxQueueWaitMs, remainingQueue, finalFrame, err_6, err_7, conns, _i, conns_1, c;
3215
+ var messageBuffer, expectedMessageLength, hpack, connection, connectionKey, state, streamSlotAcquired, err_4, err_5, streamManager, streamId_2, writer_2, parser_1, sendWindowTimeout_1, writeFrame_1, writeDataFrames_1, preface, settingFrame, headerFrame, dfs, dfs0, batchSize_1, processingQueue_1, isProcessing_1, processNextBatch_1, addToQueue_1, _a, _b, _c, chunkOrChunks, chunksToProcess, addPromises, e_1_1, error_2, remainingQueue, queueWaitStart, maxQueueWaitMs, remainingQueue, finalFrame, err_6, err_7, conns, _i, conns_1, c;
3229
3216
  var _this = this;
3230
3217
  var _g, e_1, _h, _j;
3231
- var _k, _l, _m, _o, _p, _q, _r;
3232
- return __generator(this, function (_s) {
3233
- switch (_s.label) {
3218
+ var _k, _l, _m;
3219
+ return __generator(this, function (_o) {
3220
+ switch (_o.label) {
3234
3221
  case 0:
3235
3222
  messageBuffer = new Uint8Array(0);
3236
3223
  expectedMessageLength = -1;
@@ -3239,44 +3226,44 @@
3239
3226
  connectionKey = null;
3240
3227
  state = null;
3241
3228
  streamSlotAcquired = false;
3242
- _s.label = 1;
3229
+ _o.label = 1;
3243
3230
  case 1:
3244
- _s.trys.push([1, 49, 50, 64]);
3231
+ _o.trys.push([1, 49, 50, 64]);
3245
3232
  // 检查是否已经中止
3246
3233
  if (internalController.signal.aborted) {
3247
3234
  throw new Error("Operation aborted");
3248
3235
  }
3249
3236
  if (!(options === null || options === void 0 ? void 0 : options.freshConnection)) return [3 /*break*/, 5];
3250
- _s.label = 2;
3237
+ _o.label = 2;
3251
3238
  case 2:
3252
- _s.trys.push([2, 4, , 5]);
3239
+ _o.trys.push([2, 4, , 5]);
3253
3240
  this.connectionPool.delete(this.peerAddr.toString());
3254
- return [4 /*yield*/, ((_l = (_k = this.node) === null || _k === void 0 ? void 0 : _k.hangUp) === null || _l === void 0 ? void 0 : _l.call(_k, this.peerAddr))];
3241
+ return [4 /*yield*/, this.node.hangUp(this.peerAddr)];
3255
3242
  case 3:
3256
- _s.sent();
3243
+ _o.sent();
3257
3244
  console.warn("[Call] hangUp existing connection before dialing due to freshConnection=true");
3258
3245
  return [3 /*break*/, 5];
3259
3246
  case 4:
3260
- err_4 = _s.sent();
3247
+ err_4 = _o.sent();
3261
3248
  console.warn("[Call] hangUp failed or not supported, proceeding to dial", err_4);
3262
3249
  return [3 /*break*/, 5];
3263
3250
  case 5: return [4 /*yield*/, this.acquireConnection(Boolean(options === null || options === void 0 ? void 0 : options.freshConnection))];
3264
3251
  case 6:
3265
- connection = _s.sent();
3252
+ connection = _o.sent();
3266
3253
  connectionKey = this.peerAddr.toString();
3267
3254
  state = this.getConnectionState(connection);
3268
3255
  if (!state) return [3 /*break*/, 10];
3269
- _s.label = 7;
3256
+ _o.label = 7;
3270
3257
  case 7:
3271
- _s.trys.push([7, 9, , 10]);
3258
+ _o.trys.push([7, 9, , 10]);
3272
3259
  return [4 /*yield*/, this.waitForStreamSlot(state, internalController.signal, timeout)];
3273
3260
  case 8:
3274
- _s.sent();
3261
+ _o.sent();
3275
3262
  state.activeStreams += 1;
3276
3263
  streamSlotAcquired = true;
3277
3264
  return [3 /*break*/, 10];
3278
3265
  case 9:
3279
- err_5 = _s.sent();
3266
+ err_5 = _o.sent();
3280
3267
  console.warn("[Call] waiting for stream slot failed:", err_5);
3281
3268
  throw err_5;
3282
3269
  case 10: return [4 /*yield*/, connection.newStream(this.protocol, {
@@ -3285,25 +3272,25 @@
3285
3272
  negotiateFully: false,
3286
3273
  })];
3287
3274
  case 11:
3288
- stream = _s.sent();
3275
+ stream = _o.sent();
3289
3276
  streamManager = this.getStreamManagerFor(connection);
3290
3277
  return [4 /*yield*/, streamManager.getNextAppLevelStreamId()];
3291
3278
  case 12:
3292
- streamId_2 = _s.sent();
3279
+ streamId_2 = _o.sent();
3293
3280
  writer_2 = new StreamWriter(stream, {
3294
3281
  bufferSize: 16 * 1024 * 1024,
3295
3282
  });
3296
3283
  try {
3297
3284
  writer_2.addEventListener("backpressure", function (e) {
3298
- var d = (e === null || e === void 0 ? void 0 : e.detail) || {};
3285
+ var d = e.detail || {};
3299
3286
  console.warn("[stream ".concat(streamId_2, "] backpressure current=").concat(d.currentSize, " avg=").concat(d.averageSize, " threshold=").concat(d.threshold));
3300
3287
  });
3301
- writer_2.addEventListener("drain", function (e) {
3302
- var d = (e === null || e === void 0 ? void 0 : e.detail) || {};
3288
+ writer_2.addEventListener("drain", function () {
3289
+ // drain event - no action needed
3303
3290
  });
3304
3291
  writer_2.addEventListener("stalled", function (e) {
3305
3292
  var _a;
3306
- var d = (e === null || e === void 0 ? void 0 : e.detail) || {};
3293
+ var d = e.detail || {};
3307
3294
  console.warn("[stream ".concat(streamId_2, "] stalled queue=").concat(d.queueSize, " drained=").concat(d.drained, " since=").concat(d.sinceMs, "ms \u2014 sending PING"));
3308
3295
  try {
3309
3296
  var payload = new Uint8Array(8);
@@ -3311,15 +3298,14 @@
3311
3298
  var ping = Http2Frame.createFrame(0x6, 0x0, 0, payload);
3312
3299
  writer_2.write(ping);
3313
3300
  }
3314
- catch ( /* empty */_b) { /* empty */ }
3301
+ catch ( /* ignore ping write errors */_b) { /* ignore ping write errors */ }
3315
3302
  });
3316
3303
  }
3317
- catch ( /* empty */_t) { /* empty */ }
3318
- parser_2 = new HTTP2Parser(writer_2, {
3304
+ catch ( /* ignore addEventListener errors */_p) { /* ignore addEventListener errors */ }
3305
+ parser_1 = new HTTP2Parser(writer_2, {
3319
3306
  compatibilityMode: !useFlowControl,
3320
3307
  });
3321
- parser_2.onGoaway = function (info) {
3322
- var _a;
3308
+ parser_1.onGoaway = function (info) {
3323
3309
  console.warn("[Call] GOAWAY received from server", info);
3324
3310
  if (connectionKey) {
3325
3311
  _this.connectionPool.delete(connectionKey);
@@ -3332,13 +3318,13 @@
3332
3318
  }
3333
3319
  internalController.abort();
3334
3320
  try {
3335
- (_a = connection === null || connection === void 0 ? void 0 : connection.close) === null || _a === void 0 ? void 0 : _a.call(connection);
3321
+ connection === null || connection === void 0 ? void 0 : connection.close();
3336
3322
  }
3337
3323
  catch (err) {
3338
3324
  console.warn("Error closing connection after GOAWAY:", err);
3339
3325
  }
3340
3326
  };
3341
- parser_2.onSettingsParsed = function (settings) {
3327
+ parser_1.onSettingsParsed = function (settings) {
3342
3328
  if (state &&
3343
3329
  settings.maxConcurrentStreams !== undefined &&
3344
3330
  settings.maxConcurrentStreams > 0) {
@@ -3347,7 +3333,7 @@
3347
3333
  }
3348
3334
  };
3349
3335
  if (useFlowControl) {
3350
- parser_2.registerOutboundStream(streamId_2);
3336
+ parser_1.registerOutboundStream(streamId_2);
3351
3337
  }
3352
3338
  sendWindowTimeout_1 = timeout > 0 ? timeout : DEFAULT_SEND_WINDOW_TIMEOUT;
3353
3339
  writeFrame_1 = function (frame) { return __awaiter(_this, void 0, void 0, function () {
@@ -3355,7 +3341,7 @@
3355
3341
  switch (_a.label) {
3356
3342
  case 0:
3357
3343
  if (!useFlowControl) return [3 /*break*/, 2];
3358
- return [4 /*yield*/, this.sendFrameWithFlowControl(parser_2, streamId_2, frame, writer_2, internalController.signal, sendWindowTimeout_1)];
3344
+ return [4 /*yield*/, this.sendFrameWithFlowControl(parser_1, streamId_2, frame, writer_2, internalController.signal, sendWindowTimeout_1)];
3359
3345
  case 1:
3360
3346
  _a.sent();
3361
3347
  return [3 /*break*/, 4];
@@ -3393,8 +3379,8 @@
3393
3379
  });
3394
3380
  }); };
3395
3381
  // 在各个回调中检查是否已中止
3396
- parser_2.onData = function (payload, frameHeader) { return __awaiter(_this, void 0, void 0, function () {
3397
- var newBuffer, compressionFlag, lengthBytes, completeMessage;
3382
+ parser_1.onData = function (payload) { return __awaiter(_this, void 0, void 0, function () {
3383
+ var newBuffer, lengthBytes, completeMessage;
3398
3384
  return __generator(this, function (_a) {
3399
3385
  // 检查是否已中止
3400
3386
  if (internalController.signal.aborted) {
@@ -3413,7 +3399,6 @@
3413
3399
  }
3414
3400
  // 如果还没有读取消息长度,且缓冲区有足够数据
3415
3401
  if (expectedMessageLength === -1 && messageBuffer.length >= 5) {
3416
- compressionFlag = messageBuffer[0];
3417
3402
  lengthBytes = messageBuffer.slice(1, 5);
3418
3403
  expectedMessageLength = new DataView(lengthBytes.buffer, lengthBytes.byteOffset).getUint32(0, false); // big-endian
3419
3404
  }
@@ -3444,14 +3429,14 @@
3444
3429
  return [2 /*return*/];
3445
3430
  });
3446
3431
  }); };
3447
- parser_2.onSettings = function () {
3432
+ parser_1.onSettings = function () {
3448
3433
  // 检查是否已中止
3449
3434
  if (internalController.signal.aborted)
3450
3435
  return;
3451
3436
  var ackSettingFrame = Http2Frame.createSettingsAckFrame();
3452
3437
  writer_2.write(ackSettingFrame);
3453
3438
  };
3454
- parser_2.onHeaders = function (headers, header) {
3439
+ parser_1.onHeaders = function (headers) {
3455
3440
  // 检查是否已中止
3456
3441
  if (internalController.signal.aborted)
3457
3442
  return;
@@ -3469,7 +3454,7 @@
3469
3454
  }
3470
3455
  };
3471
3456
  // 启动后台流处理
3472
- parser_2.processStream(stream).catch(function (error) {
3457
+ parser_1.processStream(stream).catch(function (error) {
3473
3458
  console.error('Error in processStream:', error);
3474
3459
  if (onErrorCallback) {
3475
3460
  onErrorCallback(error);
@@ -3482,7 +3467,7 @@
3482
3467
  preface = Http2Frame.createPreface();
3483
3468
  return [4 /*yield*/, writer_2.write(preface)];
3484
3469
  case 13:
3485
- _s.sent();
3470
+ _o.sent();
3486
3471
  // 检查是否已中止
3487
3472
  if (internalController.signal.aborted) {
3488
3473
  throw new Error("Operation aborted");
@@ -3490,36 +3475,18 @@
3490
3475
  settingFrame = Http2Frame.createSettingsFrame();
3491
3476
  return [4 /*yield*/, writer_2.write(settingFrame)];
3492
3477
  case 14:
3493
- _s.sent();
3478
+ _o.sent();
3494
3479
  // 检查是否已中止
3495
3480
  if (internalController.signal.aborted) {
3496
3481
  throw new Error("Operation aborted");
3497
3482
  }
3498
3483
  return [4 /*yield*/, Promise.race([
3499
- (function () { return __awaiter(_this, void 0, void 0, function () {
3500
- return __generator(this, function (_a) {
3501
- switch (_a.label) {
3502
- case 0: return [4 /*yield*/, parser_2.waitForPeerSettings(1000)];
3503
- case 1:
3504
- _a.sent();
3505
- return [2 /*return*/];
3506
- }
3507
- });
3508
- }); })(),
3509
- (function () { return __awaiter(_this, void 0, void 0, function () {
3510
- return __generator(this, function (_a) {
3511
- switch (_a.label) {
3512
- case 0: return [4 /*yield*/, parser_2.waitForSettingsAck()];
3513
- case 1:
3514
- _a.sent();
3515
- return [2 /*return*/];
3516
- }
3517
- });
3518
- }); })(),
3484
+ parser_1.waitForPeerSettings(1000),
3485
+ parser_1.waitForSettingsAck(),
3519
3486
  new Promise(function (res) { return setTimeout(res, 300); }),
3520
3487
  ])];
3521
3488
  case 15:
3522
- _s.sent();
3489
+ _o.sent();
3523
3490
  // 检查是否已中止
3524
3491
  if (internalController.signal.aborted) {
3525
3492
  throw new Error("Operation aborted");
@@ -3532,11 +3499,11 @@
3532
3499
  if (!(mode === "unary" || mode === "server-streaming")) return [3 /*break*/, 18];
3533
3500
  return [4 /*yield*/, writer_2.write(headerFrame)];
3534
3501
  case 16:
3535
- _s.sent();
3502
+ _o.sent();
3536
3503
  dfs = Http2Frame.createDataFrames(streamId_2, requestData, true);
3537
3504
  return [4 /*yield*/, writeDataFrames_1(dfs)];
3538
3505
  case 17:
3539
- _s.sent();
3506
+ _o.sent();
3540
3507
  // 检查是否已中止
3541
3508
  if (internalController.signal.aborted) {
3542
3509
  throw new Error("Operation aborted");
@@ -3547,7 +3514,7 @@
3547
3514
  dataSourceCallback)) return [3 /*break*/, 47];
3548
3515
  return [4 /*yield*/, writer_2.write(headerFrame)];
3549
3516
  case 19:
3550
- _s.sent();
3517
+ _o.sent();
3551
3518
  // 检查是否已中止
3552
3519
  if (internalController.signal.aborted) {
3553
3520
  throw new Error("Operation aborted");
@@ -3556,11 +3523,10 @@
3556
3523
  dfs0 = Http2Frame.createDataFrames(streamId_2, requestData, false);
3557
3524
  return [4 /*yield*/, writeDataFrames_1(dfs0)];
3558
3525
  case 20:
3559
- _s.sent();
3560
- _s.label = 21;
3526
+ _o.sent();
3527
+ _o.label = 21;
3561
3528
  case 21:
3562
3529
  batchSize_1 = (options === null || options === void 0 ? void 0 : options.batchSize) || 10;
3563
- (options === null || options === void 0 ? void 0 : options.maxBatchWaitMs) || 50;
3564
3530
  processingQueue_1 = [];
3565
3531
  isProcessing_1 = false;
3566
3532
  processNextBatch_1 = function () { return __awaiter(_this, void 0, void 0, function () {
@@ -3649,17 +3615,17 @@
3649
3615
  }
3650
3616
  });
3651
3617
  };
3652
- _s.label = 22;
3618
+ _o.label = 22;
3653
3619
  case 22:
3654
- _s.trys.push([22, 36, , 37]);
3655
- _s.label = 23;
3620
+ _o.trys.push([22, 36, , 37]);
3621
+ _o.label = 23;
3656
3622
  case 23:
3657
- _s.trys.push([23, 29, 30, 35]);
3623
+ _o.trys.push([23, 29, 30, 35]);
3658
3624
  _a = true, _b = __asyncValues(dataSourceCallback());
3659
- _s.label = 24;
3625
+ _o.label = 24;
3660
3626
  case 24: return [4 /*yield*/, _b.next()];
3661
3627
  case 25:
3662
- if (!(_c = _s.sent(), _g = _c.done, !_g)) return [3 /*break*/, 28];
3628
+ if (!(_c = _o.sent(), _g = _c.done, !_g)) return [3 /*break*/, 28];
3663
3629
  _j = _c.value;
3664
3630
  _a = false;
3665
3631
  chunkOrChunks = _j;
@@ -3677,23 +3643,23 @@
3677
3643
  return [4 /*yield*/, Promise.all(addPromises)];
3678
3644
  case 26:
3679
3645
  // 等待当前批次的chunks被添加到队列(不等待处理完成)
3680
- _s.sent();
3681
- _s.label = 27;
3646
+ _o.sent();
3647
+ _o.label = 27;
3682
3648
  case 27:
3683
3649
  _a = true;
3684
3650
  return [3 /*break*/, 24];
3685
3651
  case 28: return [3 /*break*/, 35];
3686
3652
  case 29:
3687
- e_1_1 = _s.sent();
3653
+ e_1_1 = _o.sent();
3688
3654
  e_1 = { error: e_1_1 };
3689
3655
  return [3 /*break*/, 35];
3690
3656
  case 30:
3691
- _s.trys.push([30, , 33, 34]);
3657
+ _o.trys.push([30, , 33, 34]);
3692
3658
  if (!(!_a && !_g && (_h = _b.return))) return [3 /*break*/, 32];
3693
3659
  return [4 /*yield*/, _h.call(_b)];
3694
3660
  case 31:
3695
- _s.sent();
3696
- _s.label = 32;
3661
+ _o.sent();
3662
+ _o.label = 32;
3697
3663
  case 32: return [3 /*break*/, 34];
3698
3664
  case 33:
3699
3665
  if (e_1) throw e_1.error;
@@ -3701,7 +3667,7 @@
3701
3667
  case 34: return [7 /*endfinally*/];
3702
3668
  case 35: return [3 /*break*/, 37];
3703
3669
  case 36:
3704
- error_2 = _s.sent();
3670
+ error_2 = _o.sent();
3705
3671
  remainingQueue = processingQueue_1.splice(0);
3706
3672
  remainingQueue.forEach(function (item) {
3707
3673
  try {
@@ -3715,7 +3681,7 @@
3715
3681
  case 37:
3716
3682
  queueWaitStart = Date.now();
3717
3683
  maxQueueWaitMs = timeout;
3718
- _s.label = 38;
3684
+ _o.label = 38;
3719
3685
  case 38:
3720
3686
  if (!(processingQueue_1.length > 0 || isProcessing_1)) return [3 /*break*/, 40];
3721
3687
  if (internalController.signal.aborted) {
@@ -3736,7 +3702,7 @@
3736
3702
  }
3737
3703
  return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 10); })];
3738
3704
  case 39:
3739
- _s.sent();
3705
+ _o.sent();
3740
3706
  return [3 /*break*/, 38];
3741
3707
  case 40:
3742
3708
  // 检查是否已中止
@@ -3746,35 +3712,35 @@
3746
3712
  finalFrame = Http2Frame.createDataFrame(streamId_2, new Uint8Array(), true);
3747
3713
  return [4 /*yield*/, writeFrame_1(finalFrame)];
3748
3714
  case 41:
3749
- _s.sent();
3750
- _s.label = 42;
3715
+ _o.sent();
3716
+ _o.label = 42;
3751
3717
  case 42:
3752
- _s.trys.push([42, 44, , 45]);
3753
- return [4 /*yield*/, ((_o = (_m = writer_2).flush) === null || _o === void 0 ? void 0 : _o.call(_m, timeout))];
3718
+ _o.trys.push([42, 44, , 45]);
3719
+ return [4 /*yield*/, writer_2.flush(timeout)];
3754
3720
  case 43:
3755
- _s.sent();
3721
+ _o.sent();
3756
3722
  return [3 /*break*/, 45];
3757
3723
  case 44:
3758
- _s.sent();
3724
+ _o.sent();
3759
3725
  return [3 /*break*/, 45];
3760
3726
  case 45: return [4 /*yield*/, writer_2.end()];
3761
3727
  case 46:
3762
- _s.sent();
3763
- _s.label = 47;
3728
+ _o.sent();
3729
+ _o.label = 47;
3764
3730
  case 47:
3765
3731
  // 检查是否已中止
3766
3732
  if (internalController.signal.aborted) {
3767
3733
  throw new Error("Operation aborted");
3768
3734
  }
3769
- return [4 /*yield*/, parser_2.waitForEndOfStream(0)];
3735
+ return [4 /*yield*/, parser_1.waitForEndOfStream(0)];
3770
3736
  case 48:
3771
- _s.sent();
3737
+ _o.sent();
3772
3738
  if (onEndCallback) {
3773
3739
  onEndCallback();
3774
3740
  }
3775
3741
  return [3 /*break*/, 64];
3776
3742
  case 49:
3777
- err_6 = _s.sent();
3743
+ err_6 = _o.sent();
3778
3744
  // 如果是由于取消导致的错误,使用特定的错误消息
3779
3745
  if (internalController.signal.aborted &&
3780
3746
  err_6 instanceof Error &&
@@ -3798,44 +3764,44 @@
3798
3764
  case 50:
3799
3765
  clearTimeout(timeoutHandle);
3800
3766
  if (!stream) return [3 /*break*/, 54];
3801
- _s.label = 51;
3767
+ _o.label = 51;
3802
3768
  case 51:
3803
- _s.trys.push([51, 53, , 54]);
3769
+ _o.trys.push([51, 53, , 54]);
3804
3770
  return [4 /*yield*/, stream.close()];
3805
3771
  case 52:
3806
- _s.sent();
3772
+ _o.sent();
3807
3773
  return [3 /*break*/, 54];
3808
3774
  case 53:
3809
- err_7 = _s.sent();
3775
+ err_7 = _o.sent();
3810
3776
  console.error("Error closing stream:", err_7);
3811
3777
  return [3 /*break*/, 54];
3812
3778
  case 54:
3813
3779
  if (!(options === null || options === void 0 ? void 0 : options.freshConnection)) return [3 /*break*/, 63];
3814
- _s.label = 55;
3780
+ _o.label = 55;
3815
3781
  case 55:
3816
- _s.trys.push([55, 62, , 63]);
3817
- conns = ((_q = (_p = this.node) === null || _p === void 0 ? void 0 : _p.getConnections) === null || _q === void 0 ? void 0 : _q.call(_p, this.peerAddr)) || [];
3782
+ _o.trys.push([55, 62, , 63]);
3783
+ conns = ((_l = (_k = this.node).getConnections) === null || _l === void 0 ? void 0 : _l.call(_k, this.peerAddr)) || [];
3818
3784
  _i = 0, conns_1 = conns;
3819
- _s.label = 56;
3785
+ _o.label = 56;
3820
3786
  case 56:
3821
3787
  if (!(_i < conns_1.length)) return [3 /*break*/, 61];
3822
3788
  c = conns_1[_i];
3823
- _s.label = 57;
3789
+ _o.label = 57;
3824
3790
  case 57:
3825
- _s.trys.push([57, 59, , 60]);
3826
- return [4 /*yield*/, ((_r = c.close) === null || _r === void 0 ? void 0 : _r.call(c))];
3791
+ _o.trys.push([57, 59, , 60]);
3792
+ return [4 /*yield*/, ((_m = c.close) === null || _m === void 0 ? void 0 : _m.call(c))];
3827
3793
  case 58:
3828
- _s.sent();
3794
+ _o.sent();
3829
3795
  return [3 /*break*/, 60];
3830
3796
  case 59:
3831
- _s.sent();
3797
+ _o.sent();
3832
3798
  return [3 /*break*/, 60];
3833
3799
  case 60:
3834
3800
  _i++;
3835
3801
  return [3 /*break*/, 56];
3836
3802
  case 61: return [3 /*break*/, 63];
3837
3803
  case 62:
3838
- _s.sent();
3804
+ _o.sent();
3839
3805
  return [3 /*break*/, 63];
3840
3806
  case 63:
3841
3807
  if (streamSlotAcquired && state) {