@zixt/host 0.0.34 → 0.0.35

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 (2) hide show
  1. package/dist/index.js +46 -17
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -31,7 +31,7 @@ import { homedir } from "node:os";
31
31
  // package.json
32
32
  var package_default = {
33
33
  name: "@zixt/host",
34
- version: "0.0.34",
34
+ version: "0.0.35",
35
35
  type: "module",
36
36
  exports: {
37
37
  ".": "./src/client.ts",
@@ -19437,6 +19437,25 @@ var heartbeatActive = false;
19437
19437
  var heartbeatUsesIpc = false;
19438
19438
  var heartbeatHasDurableOwner = false;
19439
19439
  var readinessReporter = null;
19440
+ function createWorkerWatchdogSendDrain() {
19441
+ let pending = 0;
19442
+ const drained = [];
19443
+ return {
19444
+ begin: () => {
19445
+ pending++;
19446
+ let completed = false;
19447
+ return () => {
19448
+ if (completed) return;
19449
+ completed = true;
19450
+ pending--;
19451
+ if (pending === 0) drained.splice(0).forEach((resolve14) => resolve14());
19452
+ };
19453
+ },
19454
+ drain: async () => {
19455
+ if (pending > 0) await new Promise((resolve14) => drained.push(resolve14));
19456
+ }
19457
+ };
19458
+ }
19440
19459
  function startWorkerWatchdogHeartbeat(env = process.env, argv = process.argv.slice(2)) {
19441
19460
  const ownership = consumeWorkerOwnershipArguments(argv, env);
19442
19461
  const nonce = env[WORKER_WATCHDOG_NONCE_ENV];
@@ -19445,7 +19464,7 @@ function startWorkerWatchdogHeartbeat(env = process.env, argv = process.argv.sli
19445
19464
  heartbeatUsesIpc = false;
19446
19465
  heartbeatHasDurableOwner = false;
19447
19466
  readinessReporter = null;
19448
- return { active: false, argv: ownership.argv, stop() {
19467
+ return { active: false, argv: ownership.argv, async stop() {
19449
19468
  } };
19450
19469
  }
19451
19470
  const heartbeatFile = env[WORKER_WATCHDOG_FILE_ENV];
@@ -19456,7 +19475,7 @@ function startWorkerWatchdogHeartbeat(env = process.env, argv = process.argv.sli
19456
19475
  heartbeatUsesIpc = false;
19457
19476
  heartbeatHasDurableOwner = false;
19458
19477
  readinessReporter = null;
19459
- return { active: false, argv: ownership.argv, stop() {
19478
+ return { active: false, argv: ownership.argv, async stop() {
19460
19479
  } };
19461
19480
  }
19462
19481
  const boundaryPidValue = !ipc ? env[WORKER_WATCHDOG_BOUNDARY_PID_ENV] : void 0;
@@ -19467,7 +19486,7 @@ function startWorkerWatchdogHeartbeat(env = process.env, argv = process.argv.sli
19467
19486
  heartbeatUsesIpc = false;
19468
19487
  heartbeatHasDurableOwner = false;
19469
19488
  readinessReporter = null;
19470
- return { active: false, argv: ownership.argv, stop() {
19489
+ return { active: false, argv: ownership.argv, async stop() {
19471
19490
  } };
19472
19491
  }
19473
19492
  if (ipc && (!ownership.requested || !ownership.valid || !recordWorkerOwnership(env[WORKER_OWNERSHIP_FILE_ENV], nonce))) {
@@ -19475,11 +19494,12 @@ function startWorkerWatchdogHeartbeat(env = process.env, argv = process.argv.sli
19475
19494
  heartbeatUsesIpc = false;
19476
19495
  heartbeatHasDurableOwner = false;
19477
19496
  readinessReporter = null;
19478
- return { active: false, argv: ownership.argv, stop() {
19497
+ return { active: false, argv: ownership.argv, async stop() {
19479
19498
  } };
19480
19499
  }
19481
19500
  let stopped = false;
19482
19501
  let sendPending = false;
19502
+ const sendDrain = createWorkerWatchdogSendDrain();
19483
19503
  let sequence = 0;
19484
19504
  let readinessSequence = 0;
19485
19505
  const reportReadiness = () => {
@@ -19493,26 +19513,32 @@ function startWorkerWatchdogHeartbeat(env = process.env, argv = process.argv.sli
19493
19513
  sequence: ++readinessSequence,
19494
19514
  heartbeatSequence: sequence
19495
19515
  };
19516
+ const sendComplete = sendDrain.begin();
19496
19517
  try {
19497
19518
  process.send(message, (error52) => {
19519
+ sendComplete();
19498
19520
  if (error52) stop();
19499
19521
  });
19500
19522
  return true;
19501
19523
  } catch {
19524
+ sendComplete();
19502
19525
  stop();
19503
19526
  return false;
19504
19527
  }
19505
19528
  };
19506
- const stop = () => {
19507
- if (stopped) return;
19508
- stopped = true;
19509
- heartbeatActive = false;
19510
- heartbeatUsesIpc = false;
19511
- heartbeatHasDurableOwner = false;
19512
- if (readinessReporter === reportReadiness) readinessReporter = null;
19513
- clearInterval(timer);
19514
- process.off("disconnect", stop);
19529
+ const stop = async () => {
19530
+ if (!stopped) {
19531
+ stopped = true;
19532
+ heartbeatActive = false;
19533
+ heartbeatUsesIpc = false;
19534
+ heartbeatHasDurableOwner = false;
19535
+ if (readinessReporter === reportReadiness) readinessReporter = null;
19536
+ clearInterval(timer);
19537
+ process.off("disconnect", onDisconnect);
19538
+ }
19539
+ await sendDrain.drain();
19515
19540
  };
19541
+ const onDisconnect = () => void stop();
19516
19542
  const send = () => {
19517
19543
  if (stopped || sendPending) return;
19518
19544
  sendPending = true;
@@ -19528,12 +19554,15 @@ function startWorkerWatchdogHeartbeat(env = process.env, argv = process.argv.sli
19528
19554
  stop();
19529
19555
  return;
19530
19556
  }
19557
+ const sendComplete = sendDrain.begin();
19531
19558
  try {
19532
19559
  process.send(message, (error52) => {
19560
+ sendComplete();
19533
19561
  sendPending = false;
19534
19562
  if (error52) stop();
19535
19563
  });
19536
19564
  } catch {
19565
+ sendComplete();
19537
19566
  sendPending = false;
19538
19567
  stop();
19539
19568
  }
@@ -19550,9 +19579,9 @@ function startWorkerWatchdogHeartbeat(env = process.env, argv = process.argv.sli
19550
19579
  const timer = setInterval(send, WORKER_HEARTBEAT_MS);
19551
19580
  timer.unref?.();
19552
19581
  send();
19553
- if (stopped) return { active: false, argv: ownership.argv, stop() {
19582
+ if (stopped) return { active: false, argv: ownership.argv, async stop() {
19554
19583
  } };
19555
- if (ipc) process.once("disconnect", stop);
19584
+ if (ipc) process.once("disconnect", onDisconnect);
19556
19585
  heartbeatUsesIpc = ipc;
19557
19586
  heartbeatHasDurableOwner = ipc;
19558
19587
  heartbeatActive = true;
@@ -37451,7 +37480,7 @@ function shutdown(exitCode = 0) {
37451
37480
  },
37452
37481
  recoveringLiveRuns ? 3e4 : 2e3
37453
37482
  ).unref();
37454
- void client.stop().then(() => process.exit(exitCode));
37483
+ void workerWatchdog.stop().then(() => client.stop()).then(() => process.exit(exitCode));
37455
37484
  }
37456
37485
  stopUpdateWatch = !packagedBuild ? () => {
37457
37486
  } : watchForUpdates({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zixt/host",
3
- "version": "0.0.34",
3
+ "version": "0.0.35",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./src/client.ts",