@spencer-kit/coder-studio 0.4.2 → 0.4.3

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#56](https://github.com/spencerkit/coder-studio/pull/56) [`5b93d9d`](https://github.com/spencerkit/coder-studio/commit/5b93d9d994c6d33f738fa0657c3d37e7cd93a157) Thanks [@pallyoung](https://github.com/pallyoung)! - Fix terminal recovery so session output no longer stalls after noop reconcile
8
+ decisions or gets cleared when queued live chunks flush after snapshot
9
+ hydration.
10
+
3
11
  ## 0.4.2
4
12
 
5
13
  ### Patch Changes
package/dist/esm/bin.mjs CHANGED
@@ -18099,6 +18099,28 @@ var waitForManagedServerDeletion = async (pm2, waitMs) => {
18099
18099
  }
18100
18100
  throw new Error(`Timed out waiting for the managed server to stop after ${waitMs}ms.`);
18101
18101
  };
18102
+ var isMissingProcessError = (error) => Boolean(
18103
+ error && typeof error === "object" && "code" in error && error.code === "ESRCH"
18104
+ );
18105
+ var waitForProcessExit = async (pid, waitMs) => {
18106
+ const deadline = Date.now() + waitMs;
18107
+ while (Date.now() <= deadline) {
18108
+ try {
18109
+ process.kill(pid, 0);
18110
+ } catch (error) {
18111
+ if (isMissingProcessError(error)) {
18112
+ return;
18113
+ }
18114
+ throw error;
18115
+ }
18116
+ const remainingMs = deadline - Date.now();
18117
+ if (remainingMs <= 0) {
18118
+ break;
18119
+ }
18120
+ await sleep(Math.min(STARTUP_POLL_INTERVAL_MS, remainingMs));
18121
+ }
18122
+ throw new Error(`Timed out waiting for the managed server pid ${pid} to exit after ${waitMs}ms.`);
18123
+ };
18102
18124
  var deleteManagedServerInSession = async (pm2, {
18103
18125
  ignoreMissing = false
18104
18126
  } = {}) => {
@@ -18106,16 +18128,24 @@ var deleteManagedServerInSession = async (pm2, {
18106
18128
  if (processes.length === 0) {
18107
18129
  return false;
18108
18130
  }
18131
+ const previousPid = processes[0]?.pid;
18132
+ const deadline = Date.now() + PM2_DELETE_WAIT_MS;
18109
18133
  try {
18110
18134
  await removeManagedServer(pm2);
18111
18135
  } catch (error) {
18112
18136
  if (ignoreMissing && isMissingManagedServerError(error)) {
18113
- await waitForManagedServerDeletion(pm2, PM2_DELETE_WAIT_MS);
18137
+ await waitForManagedServerDeletion(pm2, Math.max(0, deadline - Date.now()));
18138
+ if (typeof previousPid === "number" && previousPid > 0) {
18139
+ await waitForProcessExit(previousPid, Math.max(0, deadline - Date.now()));
18140
+ }
18114
18141
  return false;
18115
18142
  }
18116
18143
  throw error;
18117
18144
  }
18118
- await waitForManagedServerDeletion(pm2, PM2_DELETE_WAIT_MS);
18145
+ await waitForManagedServerDeletion(pm2, Math.max(0, deadline - Date.now()));
18146
+ if (typeof previousPid === "number" && previousPid > 0) {
18147
+ await waitForProcessExit(previousPid, Math.max(0, deadline - Date.now()));
18148
+ }
18119
18149
  return true;
18120
18150
  };
18121
18151
  var ensureLogDirectory = () => {