UNPKG

astrology-insights

Version:

Comprehensive Vedic astrology engine for Node.js — Panchang, birth charts (Kundli), Vimshottari Dasha, divisional charts, dosha analysis, and planetary remedies. Swiss Ephemeris precision, validated against Drik Panchang.

88 lines (87 loc) 3.63 kB
"use strict"; /** * Shodashvarga Summary Table * Shows each planet's dignity across all 16 divisional charts * and computes Varga Viswa points. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.calculateShodashvarga = void 0; const constants_1 = require("../core/constants"); const charts_1 = require("./charts"); const calculator_1 = require("./calculator"); // ── Dignity detection for varga charts ────────────────────────────────────── /** * Determine a planet's dignity in a given sign (simplified for varga scoring). * Returns: 'exalted' | 'moolatrikona' | 'own_sign' | 'friendly' | 'neutral' | 'enemy' | 'debilitated' */ function getVargaDignity(planet, signNumber) { const grahaName = planet; // Check exaltation (just sign match, ignoring exact degree for vargas) const exalt = constants_1.EXALTATION_TABLE[grahaName]; if (exalt && exalt.sign === signNumber) { return 'exalted'; } // Check debilitation const debi = constants_1.DEBILITATION_TABLE[grahaName]; if (debi && debi.sign === signNumber) { return 'debilitated'; } // Check moolatrikona (sign match only for vargas) const moola = constants_1.MOOLATRIKONA_TABLE[grahaName]; if (moola && moola.sign === signNumber) { return 'moolatrikona'; } // Check own sign const ownSigns = constants_1.OWN_SIGNS[grahaName]; if (ownSigns && ownSigns.includes(signNumber)) { return 'own_sign'; } // For simplified scoring, everything else is neutral. // A full implementation would check natural friendships with the sign lord. return 'neutral'; } // ── Varga Viswa point values ──────────────────────────────────────────────── const DIGNITY_POINTS = { exalted: 20, moolatrikona: 15, own_sign: 20, friendly: 10, neutral: 5, enemy: 2, debilitated: 0, }; // ── Public API ────────────────────────────────────────────────────────────── /** * Calculate the Shodashvarga summary for all planets. * Returns each planet's sign and dignity in all 16 charts plus total Varga Viswa points. */ function calculateShodashvarga(planets, lagnaSignNumber, lagnaDegree) { // Pre-compute all 16 divisional charts const charts = charts_1.SHODASHVARGA_CHARTS.map(chartDef => (0, calculator_1.calculateDivisionalChart)(chartDef.division, planets, lagnaSignNumber, lagnaDegree)); // Build per-planet summaries return planets.map(planet => { const scores = []; let totalPoints = 0; charts.forEach((chart, idx) => { const chartDef = charts_1.SHODASHVARGA_CHARTS[idx]; const pos = chart.planets.find(p => p.planet === planet.name); if (pos) { const dignity = getVargaDignity(planet.name, pos.vargaSignNumber); const points = DIGNITY_POINTS[dignity] ?? 5; totalPoints += points; scores.push({ chart: chartDef.shortName, sign: pos.vargaSignName, signNumber: pos.vargaSignNumber, dignity, }); } }); return { planet: planet.name, scores, totalPoints, }; }); } exports.calculateShodashvarga = calculateShodashvarga;