UNPKG

@nrweb/astro-calc

Version:

Comprehensive astrological calculations using Swiss Ephemeris and astronomy-engine for positions, aspects, houses, lots, and scoring metrics

46 lines 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const retrograde_1 = require("./retrograde"); const constants_1 = require("./constants"); function generateRetrogradeCalendar(startDate, years) { const calendar = {}; const endDate = new Date(startDate.getTime() + years * 365 * 24 * 60 * 60 * 1000); // Initialize calendar with empty arrays for each planet constants_1.RETROGRADE_PLANETS.forEach((planet) => { calendar[planet.toString()] = []; }); // For each planet, find all retrograde periods constants_1.RETROGRADE_PLANETS.forEach((planet) => { console.log(`Finding retrograde periods for ${planet}...`); let currentDate = new Date(startDate); let inRetrograde = false; let periodStart = null; while (currentDate < endDate) { const retro = (0, retrograde_1.isRetrograde)(currentDate, planet); if (!inRetrograde && retro) { inRetrograde = true; periodStart = new Date(currentDate); } else if (inRetrograde && !retro && periodStart) { inRetrograde = false; calendar[planet.toString()].push({ startDate: periodStart.toISOString().split("T")[0], endDate: new Date(currentDate.getTime() - 24 * 60 * 60 * 1000) .toISOString() .split("T")[0], }); periodStart = null; } currentDate = new Date(currentDate.getTime() + 24 * 60 * 60 * 1000); } // Handle case where planet is still in retrograde at end date if (inRetrograde && periodStart) { calendar[planet.toString()].push({ startDate: periodStart.toISOString().split("T")[0], endDate: endDate.toISOString().split("T")[0], }); } }); return calendar; } //# sourceMappingURL=generate-retrograde-calendar.js.map