import { spawn } from "node:child_process"; import path from "node:path"; import { fileURLToPath, pathToFileURL } from "node:url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const repoRoot = path.resolve(__dirname, "../.."); const pnpm = "pnpm"; export async function runVitestBatch(params) { return await new Promise((resolve, reject) => { const child = spawn( pnpm, ["exec", "vitest", "run", "--config", params.config, ...params.targets, ...params.args], { cwd: repoRoot, stdio: "inherit", shell: process.platform === "win32", env: params.env, }, ); child.on("error", reject); child.on("exit", (code, signal) => { if (signal) { process.kill(process.pid, signal); return; } resolve(code ?? 1); }); }); } export function isDirectScriptRun(metaUrl) { const entryHref = process.argv[1] ? pathToFileURL(path.resolve(process.argv[1])).href : ""; return metaUrl === entryHref; }