bdy 1.19.5-dev → 1.19.6-stage

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.19.5-dev",
4
+ "version": "1.19.6-stage",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "scripts": {
@@ -8,6 +8,7 @@ const uuid_1 = require("uuid");
8
8
  const http_1 = __importDefault(require("http"));
9
9
  const utils_1 = require("../utils");
10
10
  const stream_1 = __importDefault(require("stream"));
11
+ const node_stream_1 = require("node:stream");
11
12
  const texts_1 = require("../texts");
12
13
  const logger_1 = __importDefault(require("../logger"));
13
14
  const serve_1 = __importDefault(require("./http/serve"));
@@ -236,28 +237,15 @@ class TunnelHttp extends events_1.default {
236
237
  r.on('upgrade', (proxyRes, socket, head) => this.upgrade(proxyRes, socket, head));
237
238
  r.on('response', (proxyRes) => {
238
239
  this.proxyRes = proxyRes;
239
- this.proxyRes.on('error', () => {
240
- try {
241
- this.res.end();
242
- }
243
- catch {
244
- // do nothing
245
- }
246
- });
247
240
  const statusCode = this.proxyRes.statusCode;
248
241
  const resHeaders = this.proxyRes.headers;
249
242
  const compressionMethod = compression_1.default.detect(this.compression || false, reqHeaders, resHeaders);
250
243
  this.outputHeaders(statusCode, this.getClearedHeaders(resHeaders, compressionMethod));
251
244
  if (this.logRequest) {
252
- this.proxyRes
253
- .pipe(this.logRequest.responseBody)
254
- .pipe(compression_1.default.compress(compressionMethod))
255
- .pipe(this.res);
245
+ (0, node_stream_1.pipeline)(this.proxyRes, this.logRequest.responseBody, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
256
246
  }
257
247
  else {
258
- this.proxyRes
259
- .pipe(compression_1.default.compress(compressionMethod))
260
- .pipe(this.res);
248
+ (0, node_stream_1.pipeline)(this.proxyRes, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
261
249
  }
262
250
  if (this.httpLog) {
263
251
  this.httpLog.newResponse(statusCode, resHeaders, this.logRequest);
@@ -291,28 +279,15 @@ class TunnelHttp extends events_1.default {
291
279
  r.on('upgrade', (proxyRes, socket, head) => this.upgrade(proxyRes, socket, head));
292
280
  r.on('response', (proxyRes) => {
293
281
  this.proxyRes = proxyRes;
294
- this.proxyRes.on('error', () => {
295
- try {
296
- this.res.end();
297
- }
298
- catch {
299
- // do nothing
300
- }
301
- });
302
282
  const statusCode = this.proxyRes.statusCode;
303
283
  const resHeaders = this.proxyRes.headers;
304
284
  const compressionMethod = compression_1.default.detect(this.compression || false, reqHeaders, resHeaders);
305
285
  this.outputHeaders(statusCode, this.getClearedHeaders(resHeaders, compressionMethod));
306
286
  if (this.logRequest) {
307
- this.proxyRes
308
- .pipe(this.logRequest.responseBody)
309
- .pipe(compression_1.default.compress(compressionMethod))
310
- .pipe(this.res);
287
+ (0, node_stream_1.pipeline)(this.proxyRes, this.logRequest.responseBody, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
311
288
  }
312
289
  else {
313
- this.proxyRes
314
- .pipe(compression_1.default.compress(compressionMethod))
315
- .pipe(this.res);
290
+ (0, node_stream_1.pipeline)(this.proxyRes, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
316
291
  }
317
292
  if (this.httpLog) {
318
293
  this.httpLog.newResponse(statusCode, resHeaders, this.logRequest);
@@ -337,15 +312,10 @@ class TunnelHttp extends events_1.default {
337
312
  const compressionMethod = compression_1.default.detect(this.compression || false, reqHeaders, resHeaders);
338
313
  this.outputHeaders(statusCode, this.getClearedHeaders(resHeaders, compressionMethod));
339
314
  if (this.logRequest) {
340
- stream
341
- .pipe(this.logRequest.responseBody)
342
- .pipe(compression_1.default.compress(compressionMethod))
343
- .pipe(this.res);
315
+ (0, node_stream_1.pipeline)(stream, this.logRequest.responseBody, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
344
316
  }
345
317
  else {
346
- stream
347
- .pipe(compression_1.default.compress(compressionMethod))
348
- .pipe(this.res);
318
+ (0, node_stream_1.pipeline)(stream, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
349
319
  }
350
320
  }
351
321
  if (this.httpLog) {
@@ -382,12 +352,10 @@ class TunnelHttp extends events_1.default {
382
352
  const compressionMethod = compression_1.default.detect(this.compression || false, reqHeaders, resHeaders);
383
353
  this.outputHeaders(status, this.getClearedHeaders(resHeaders, compressionMethod));
384
354
  if (this.logRequest) {
385
- r.pipe(this.logRequest.responseBody)
386
- .pipe(compression_1.default.compress(compressionMethod))
387
- .pipe(this.res);
355
+ (0, node_stream_1.pipeline)(r, this.logRequest.responseBody, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
388
356
  }
389
357
  else {
390
- r.pipe(compression_1.default.compress(compressionMethod)).pipe(this.res);
358
+ (0, node_stream_1.pipeline)(r, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
391
359
  }
392
360
  if (this.httpLog) {
393
361
  this.httpLog.newResponse(status, resHeaders, this.logRequest);
@@ -452,7 +420,11 @@ class TunnelHttp extends events_1.default {
452
420
  msg += '\r\n';
453
421
  reqSocket.removeAllListeners();
454
422
  socket.removeAllListeners();
423
+ let cleaned = false;
455
424
  const cleanup = () => {
425
+ if (cleaned)
426
+ return;
427
+ cleaned = true;
456
428
  try {
457
429
  socket.removeAllListeners();
458
430
  socket.destroy();
@@ -469,15 +441,21 @@ class TunnelHttp extends events_1.default {
469
441
  }
470
442
  this.emit(tunnel_1.TUNNEL_HTTP_SOCKET.CLOSED, reqSocket);
471
443
  };
472
- reqSocket.on('close', cleanup);
473
- reqSocket.on('error', cleanup);
474
- socket.on('close', cleanup);
475
- socket.on('error', cleanup);
476
444
  if (head && head.length) {
477
445
  socket.unshift(head);
478
446
  }
447
+ let failed = false;
448
+ const onWriteError = () => {
449
+ failed = true;
450
+ cleanup();
451
+ };
452
+ reqSocket.on('error', onWriteError);
479
453
  reqSocket.write(msg);
480
- reqSocket.pipe(socket).pipe(reqSocket);
454
+ reqSocket.off('error', onWriteError);
455
+ if (failed)
456
+ return;
457
+ (0, node_stream_1.pipeline)(reqSocket, socket, cleanup);
458
+ (0, node_stream_1.pipeline)(socket, reqSocket, cleanup);
481
459
  }
482
460
  async pipe() {
483
461
  if (this.serve) {
@@ -493,11 +471,6 @@ class TunnelHttp extends events_1.default {
493
471
  this.proxyReq.on('error', () => {
494
472
  this.output504();
495
473
  });
496
- this.proxyReq.on('close', () => {
497
- setTimeout(() => {
498
- this.clear();
499
- }, 5000);
500
- });
501
474
  this.proxyReq.process(this.req);
502
475
  }
503
476
  else {
@@ -523,21 +496,17 @@ class TunnelHttp extends events_1.default {
523
496
  this.proxyReq.on('timeout', () => {
524
497
  this.output504();
525
498
  });
526
- this.proxyReq.on('error', (err) => {
527
- logger_1.default.debug(texts_1.LOG_ERROR);
528
- logger_1.default.debug(err);
529
- this.output504();
530
- });
531
- this.proxyReq.on('close', () => {
532
- setTimeout(() => {
533
- this.clear();
534
- }, 5000);
535
- });
536
499
  if (this.logRequest) {
537
- this.req.pipe(this.logRequest.requestBody).pipe(this.proxyReq);
500
+ (0, node_stream_1.pipeline)(this.req, this.logRequest.requestBody, this.proxyReq, (err) => {
501
+ if (err)
502
+ this.output504();
503
+ });
538
504
  }
539
505
  else {
540
- this.req.pipe(this.proxyReq);
506
+ (0, node_stream_1.pipeline)(this.req, this.proxyReq, (err) => {
507
+ if (err)
508
+ this.output504();
509
+ });
541
510
  }
542
511
  }
543
512
  }
@@ -7,6 +7,7 @@ const net_1 = require("net");
7
7
  const uuid_1 = require("uuid");
8
8
  const events_1 = __importDefault(require("events"));
9
9
  const utils_1 = require("../utils");
10
+ const node_stream_1 = require("node:stream");
10
11
  const tunnel_1 = require("../types/tunnel");
11
12
  class TunnelTcp extends events_1.default {
12
13
  id;
@@ -23,6 +24,8 @@ class TunnelTcp extends events_1.default {
23
24
  this.socket = new net_1.Socket();
24
25
  }
25
26
  end() {
27
+ if (!this.stream && !this.socket)
28
+ return;
26
29
  try {
27
30
  if (this.stream)
28
31
  this.stream.unpipe();
@@ -107,7 +110,8 @@ class TunnelTcp extends events_1.default {
107
110
  this.socket.setTimeout(0);
108
111
  }
109
112
  if (this.socket && this.stream) {
110
- this.socket.pipe(this.stream).pipe(this.socket);
113
+ (0, node_stream_1.pipeline)(this.socket, this.stream, () => { this.end(); });
114
+ (0, node_stream_1.pipeline)(this.stream, this.socket, () => { this.end(); });
111
115
  }
112
116
  });
113
117
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bdy",
3
3
  "preferGlobal": false,
4
- "version": "1.19.5-dev",
4
+ "version": "1.19.6-stage",
5
5
  "type": "commonjs",
6
6
  "license": "MIT",
7
7
  "scripts": {