@wrongstack/tools 0.299.0 → 0.300.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.
@@ -37,6 +37,12 @@ interface KillOpts {
37
37
  graceMs?: number | undefined;
38
38
  /** Leave explicitly backgrounded jobs alive. Default false. */
39
39
  preserveBackground?: boolean | undefined;
40
+ /**
41
+ * Also kill processes marked `protected` (browser open, etc.).
42
+ * Default false. Host-process shutdown should pass true so protected
43
+ * children cannot strand the parent event loop (issue #322).
44
+ */
45
+ includeProtected?: boolean | undefined;
40
46
  }
41
47
  /**
42
48
  * Snapshot of the armed auto kill/reset countdown, or null when nothing is
@@ -503,7 +503,7 @@ var ProcessRegistryImpl = class {
503
503
  const p = this.processes.get(pid);
504
504
  if (!p) return false;
505
505
  if (p.killed) return true;
506
- if (p.protected) return false;
506
+ if (p.protected && opts.includeProtected !== true) return false;
507
507
  if (opts.preserveBackground && p.background) return false;
508
508
  const { force = false, graceMs = DEFAULT_GRACE_MS } = opts;
509
509
  const isWin = os.platform() === "win32";
@@ -554,9 +554,13 @@ var ProcessRegistryImpl = class {
554
554
  killAll(opts = {}) {
555
555
  const pids = Array.from(this.processes.keys());
556
556
  const killed = [];
557
+ const includeProtected = opts.includeProtected === true;
557
558
  for (const pid of pids) {
558
559
  const p = this.processes.get(pid);
559
- if (p && !p.protected && this.kill(pid, opts)) killed.push(pid);
560
+ if (!p) continue;
561
+ if (p.protected && !includeProtected) continue;
562
+ if (opts.preserveBackground && p.background) continue;
563
+ if (this.kill(pid, opts)) killed.push(pid);
560
564
  }
561
565
  return killed;
562
566
  }
package/dist/ps-slash.js CHANGED
@@ -473,7 +473,7 @@ var ProcessRegistryImpl = class {
473
473
  const p = this.processes.get(pid);
474
474
  if (!p) return false;
475
475
  if (p.killed) return true;
476
- if (p.protected) return false;
476
+ if (p.protected && opts.includeProtected !== true) return false;
477
477
  if (opts.preserveBackground && p.background) return false;
478
478
  const { force = false, graceMs = DEFAULT_GRACE_MS } = opts;
479
479
  const isWin = os.platform() === "win32";
@@ -524,9 +524,13 @@ var ProcessRegistryImpl = class {
524
524
  killAll(opts = {}) {
525
525
  const pids = Array.from(this.processes.keys());
526
526
  const killed = [];
527
+ const includeProtected = opts.includeProtected === true;
527
528
  for (const pid of pids) {
528
529
  const p = this.processes.get(pid);
529
- if (p && !p.protected && this.kill(pid, opts)) killed.push(pid);
530
+ if (!p) continue;
531
+ if (p.protected && !includeProtected) continue;
532
+ if (opts.preserveBackground && p.background) continue;
533
+ if (this.kill(pid, opts)) killed.push(pid);
530
534
  }
531
535
  return killed;
532
536
  }