// Node.js 22+; server-side only. Install: npm install cosmicephemeris@0.5.0
// Set COSMICEPHEMERIS_KEY privately. No automatic retries.
import { mkdir, writeFile } from "node:fs/promises";
import { CosmicEphemeris, CosmicEphemerisError } from "cosmicephemeris";

// Optional first argument: north_indian (default) or south_indian.
const layout = process.argv[2] ?? "north_indian";
const output = "vedic-charts-output";
try {
  if (!["north_indian", "south_indian"].includes(layout)) {
    console.error("Choose north_indian or south_indian.");
    process.exit(1);
  }
  const api = new CosmicEphemeris();
  await mkdir(output, { mode: 0o700 });
  const birth = {
    date: "1990-01-01", time: "12:00", timezone: "America/New_York",
    lat: 40.7128, lon: -74.006,
  };
  // Two metered requests, one at a time. Stop if either request fails.
  for (const division of [1, 9]) {
    const chart = await api.vargaSvg({
      birth, division, ayanamsa: "lahiri", layout, theme: "dark",
    });
    await writeFile(`${output}/d${division}.svg`, chart.svg, {
      encoding: "utf8", flag: "wx", mode: 0o600,
    });
    console.log(`Created vedic-charts-output/d${division}.svg (${layout}).`);
  }
} catch (error) {
  if (error instanceof CosmicEphemerisError) {
    console.error("API request failed:", error.code, error.status ?? "");
  } else if (error?.code === "EEXIST") {
    console.error("Output folder already exists. Rename it before another run.");
  } else {
    console.error("Could not finish. Check the input and folder permissions.");
  }
  process.exitCode = 1;
}
