Buckets:
| import { type ChildProcess, spawnSync } from "node:child_process" | |
| // Duplicated from `packages/opencode/src/util/process.ts` because the SDK cannot | |
| // import `opencode` without creating a cycle (`opencode` depends on `@opencode-ai/sdk`). | |
| export function stop(proc: ChildProcess) { | |
| if (proc.exitCode !== null || proc.signalCode !== null) return | |
| if (process.platform === "win32" && proc.pid) { | |
| const out = spawnSync("taskkill", ["/pid", String(proc.pid), "/T", "/F"], { windowsHide: true }) | |
| if (!out.error && out.status === 0) return | |
| } | |
| proc.kill() | |
| } | |
| export function bindAbort(proc: ChildProcess, signal?: AbortSignal, onAbort?: () => void) { | |
| if (!signal) return () => {} | |
| const abort = () => { | |
| clear() | |
| stop(proc) | |
| onAbort?.() | |
| } | |
| const clear = () => { | |
| signal.removeEventListener("abort", abort) | |
| proc.off("exit", clear) | |
| proc.off("error", clear) | |
| } | |
| signal.addEventListener("abort", abort, { once: true }) | |
| proc.on("exit", clear) | |
| proc.on("error", clear) | |
| if (signal.aborted) abort() | |
| return clear | |
| } | |
Xet Storage Details
- Size:
- 1.05 kB
- Xet hash:
- 468792a71f58a1c9c86dd526895b6a93b156d5560aa9c7b98b3120dee1640fc3
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.