const { execFileSync, spawn } = require("node:child_process"); const path = require("node:path"); function supportsNext(nodePath) { try { const version = execFileSync(nodePath, ["--version"], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], }).trim(); const [major, minor] = version.replace(/^v/, "").split(".").map(Number); return major >= 20 || (major === 18 && minor >= 18) || (major === 19 && minor >= 8); } catch { return false; } } function installedNodes() { const command = process.platform === "win32" ? "where.exe" : "which"; const args = process.platform === "win32" ? ["node"] : ["-a", "node"]; try { return execFileSync(command, args, { encoding: "utf8" }) .split(/\r?\n/) .map((item) => item.trim()) .filter(Boolean); } catch { return []; } } const nodePath = [process.execPath, ...installedNodes()].find(supportsNext); if (!nodePath) { console.error("Next.js به Node.js 18.18 یا جدیدتر نیاز دارد. لطفاً Node.js LTS را نصب کنید."); process.exit(1); } const nextCli = require.resolve("next/dist/bin/next"); const child = spawn(nodePath, [nextCli, "dev", ...process.argv.slice(2)], { cwd: path.resolve(__dirname, ".."), stdio: "inherit", env: process.env, }); child.on("exit", (code, signal) => { if (signal) process.kill(process.pid, signal); process.exit(code ?? 1); });