@intuned/runtime-dev 1.3.24-pipe.6 → 1.3.24-pipe.7

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.
@@ -357,7 +357,9 @@ var require_interfaceClient = __commonJS({
357
357
  var util_1 = require("util");
358
358
  var SocketClient = class _SocketClient {
359
359
  constructor(socket) {
360
+ this.dataListener = null;
360
361
  this.socket = socket;
362
+ this.closeAbortController = new AbortController();
361
363
  }
362
364
  async sendJSON(data) {
363
365
  if (this.socket.closed) {
@@ -372,21 +374,30 @@ var require_interfaceClient = __commonJS({
372
374
  }
373
375
  async *receiveJSON() {
374
376
  let buffer = Buffer.alloc(0);
377
+ let endListener;
378
+ let rejectListener;
375
379
  const endPromise = new Promise((resolve, reject) => {
376
- this.socket.once("end", () => {
377
- resolve();
378
- });
379
- this.socket.once("error", reject);
380
+ endListener = () => resolve();
381
+ this.socket.once("end", endListener);
382
+ rejectListener = (e) => reject(e);
383
+ this.socket.once("error", rejectListener);
384
+ });
385
+ const closePromise = new Promise((resolve) => {
386
+ this.closeAbortController.signal.addEventListener("abort", () => resolve());
380
387
  });
381
388
  while (true) {
382
389
  const chunk = await Promise.race([
383
- new Promise((resolve) => this.socket.once("data", (data2) => {
384
- if (typeof data2 === "string") {
385
- return resolve(Buffer.from(data2));
386
- }
387
- resolve(data2);
388
- })),
389
- endPromise
390
+ new Promise((resolve) => {
391
+ this.dataListener = (data2) => {
392
+ if (typeof data2 === "string") {
393
+ return resolve(Buffer.from(data2));
394
+ }
395
+ resolve(data2);
396
+ };
397
+ this.socket.once("data", this.dataListener);
398
+ }),
399
+ endPromise,
400
+ closePromise
390
401
  ]);
391
402
  if (!(chunk instanceof Buffer)) {
392
403
  break;
@@ -408,7 +419,18 @@ var require_interfaceClient = __commonJS({
408
419
  }
409
420
  }
410
421
  async close() {
422
+ console.log(`[${process.pid}] Closing socket client`);
423
+ if (this.dataListener) {
424
+ this.socket.off("data", this.dataListener);
425
+ console.log(`[${process.pid}] Removed data listener`);
426
+ } else {
427
+ console.log(`[${process.pid}] No data listener to remove`);
428
+ }
429
+ this.closeAbortController.abort();
430
+ console.log(`[${process.pid}] Called abort on closeAbortController`);
431
+ console.log(`[${process.pid}] Sending FIN to socket`);
411
432
  await (0, util_1.promisify)((cb) => this.socket.end(cb))();
433
+ console.log(`[${process.pid}] Socket finished, destroying`);
412
434
  this.socket.destroy();
413
435
  }
414
436
  get closed() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intuned/runtime-dev",
3
- "version": "1.3.24-pipe.6",
3
+ "version": "1.3.24-pipe.7",
4
4
  "description": "Intuned runtime",
5
5
  "packageManager": "yarn@4.12.0",
6
6
  "main": "./dist/index.js",