@sma1lboy/kobe 0.8.157 → 0.8.159

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.
@@ -743,6 +743,7 @@ var FREEZE_INTERVAL_MS = 5000;
743
743
  class PtyHost {
744
744
  sessions = new Map;
745
745
  opts;
746
+ scrollbackCap;
746
747
  parkRestoreDeltas = 0;
747
748
  parkRestoreFallbacks = 0;
748
749
  warmSpare = new WarmSpare({
@@ -754,6 +755,7 @@ class PtyHost {
754
755
  });
755
756
  constructor(opts = {}) {
756
757
  this.opts = opts;
758
+ this.scrollbackCap = opts.scrollbackCap ?? DEFAULT_SCROLLBACK_CAP;
757
759
  }
758
760
  open(key, spec, token, sink, sinceOffset, sincePid) {
759
761
  let session = this.sessions.get(key);
@@ -841,20 +843,20 @@ class PtyHost {
841
843
  if (!session)
842
844
  return;
843
845
  session.sinks.delete(token);
844
- if (session.sinks.size === 0) {
845
- session.parked = parked;
846
- session.parkedScreenBytes = parked ? Math.max(0, parkedScreenBytes) : 0;
847
- }
846
+ this.applyParkedOnDetach(session, parked, parkedScreenBytes);
848
847
  }
849
848
  detachClient(token) {
850
849
  for (const session of this.sessions.values()) {
851
850
  session.sinks.delete(token);
852
- if (session.sinks.size === 0) {
853
- session.parked = false;
854
- session.parkedScreenBytes = 0;
855
- }
851
+ this.applyParkedOnDetach(session);
856
852
  }
857
853
  }
854
+ applyParkedOnDetach(session, parked = false, parkedScreenBytes = 0) {
855
+ if (session.sinks.size !== 0)
856
+ return;
857
+ session.parked = parked;
858
+ session.parkedScreenBytes = parked ? Math.max(0, parkedScreenBytes) : 0;
859
+ }
858
860
  list() {
859
861
  return Array.from(this.sessions.values(), (s) => sessionInfo(s));
860
862
  }
@@ -862,7 +864,7 @@ class PtyHost {
862
864
  return peekRing(this.sessions.get(key), sinceOffset);
863
865
  }
864
866
  stats() {
865
- return hostStats(this.sessions.values(), this.opts.scrollbackCap ?? DEFAULT_SCROLLBACK_CAP, this.parkRestoreDeltas, this.parkRestoreFallbacks);
867
+ return hostStats(this.sessions.values(), this.scrollbackCap, this.parkRestoreDeltas, this.parkRestoreFallbacks);
866
868
  }
867
869
  sweepTasks(liveTaskIds) {
868
870
  for (const key of Array.from(this.sessions.keys())) {
@@ -891,7 +893,7 @@ class PtyHost {
891
893
  for (const record of records) {
892
894
  if (this.sessions.has(record.key))
893
895
  continue;
894
- const session = thawSession(record, this.opts.scrollbackCap ?? DEFAULT_SCROLLBACK_CAP);
896
+ const session = thawSession(record, this.scrollbackCap);
895
897
  if (!session)
896
898
  continue;
897
899
  this.sessions.set(record.key, session);
@@ -971,7 +973,7 @@ class PtyHost {
971
973
  session.chunks.push(buf);
972
974
  session.bytes += buf.byteLength;
973
975
  session.totalBytes += buf.byteLength;
974
- while (session.bytes > (this.opts.scrollbackCap ?? DEFAULT_SCROLLBACK_CAP) && session.chunks.length > 1) {
976
+ while (session.bytes > this.scrollbackCap && session.chunks.length > 1) {
975
977
  const dropped = session.chunks.shift();
976
978
  if (dropped)
977
979
  session.bytes -= dropped.byteLength;