IOweb/node_modules/astro/dist/cli/dev/stop.js
2026-07-03 15:07:38 -05:00

43 lines
1 KiB
JavaScript

import { pathToFileURL } from "node:url";
import {
checkExistingServer,
removeLockFile,
isProcessAlive,
GRACEFUL_SHUTDOWN_TIMEOUT
} from "../../core/dev/lockfile.js";
import { resolveRoot } from "../../core/config/config.js";
function formatStopOutput(result) {
return JSON.stringify(result);
}
async function stop({
flags,
logger
}) {
const root = pathToFileURL(resolveRoot(flags.root) + "/");
const existing = checkExistingServer(root);
if (!existing) {
logger.info("SKIP_FORMAT", "No dev server is running.");
return;
}
try {
process.kill(existing.pid, "SIGTERM");
} catch {
}
const deadline = Date.now() + GRACEFUL_SHUTDOWN_TIMEOUT;
while (Date.now() < deadline) {
if (!isProcessAlive(existing.pid)) break;
await new Promise((r) => setTimeout(r, 100));
}
if (isProcessAlive(existing.pid)) {
try {
process.kill(existing.pid, "SIGKILL");
} catch {
}
}
removeLockFile(root);
logger.info("SKIP_FORMAT", `Stopped dev server (pid ${existing.pid}).`);
}
export {
formatStopOutput,
stop
};