klio 1.5.7 → 1.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/astrology/astrologyService.js +31 -13
- package/src/cli/cli.js +3 -3
package/package.json
CHANGED
|
@@ -1461,7 +1461,7 @@ async function calculatePersonalTransits(transitDate = null, birthData = null) {
|
|
|
1461
1461
|
}
|
|
1462
1462
|
|
|
1463
1463
|
// Function to calculate personal transit aspects
|
|
1464
|
-
function calculatePersonalTransitAspects(transitDate = null, birthData = null, targetPlanet = null) {
|
|
1464
|
+
function calculatePersonalTransitAspects(transitDate = null, birthData = null, targetPlanet = null, useHuberOrbs = true) {
|
|
1465
1465
|
if (!birthData) {
|
|
1466
1466
|
birthData = getBirthDataFromConfig();
|
|
1467
1467
|
if (!birthData) {
|
|
@@ -1500,36 +1500,54 @@ function calculatePersonalTransitAspects(transitDate = null, birthData = null, t
|
|
|
1500
1500
|
|
|
1501
1501
|
// Calculate aspects between transit and birth planets
|
|
1502
1502
|
const aspects = [];
|
|
1503
|
-
|
|
1503
|
+
// Use the same orb model as other aspect calculations; default to Huber orbs
|
|
1504
|
+
const aspectTypes = useHuberOrbs ? [
|
|
1504
1505
|
{ name: 'Conjunction', angle: 0, orb: 8 },
|
|
1505
1506
|
{ name: 'Opposition', angle: 180, orb: 8 },
|
|
1506
1507
|
{ name: 'Square', angle: 90, orb: 6 },
|
|
1507
1508
|
{ name: 'Trine', angle: 120, orb: 6 },
|
|
1508
|
-
{ name: 'Sextile', angle: 60, orb: 4 }
|
|
1509
|
+
{ name: 'Sextile', angle: 60, orb: 4 },
|
|
1510
|
+
{ name: 'Quincunx', angle: 150, orb: 3 }
|
|
1511
|
+
] : [
|
|
1512
|
+
{ name: 'Conjunction', angle: 0, orb: 10 },
|
|
1513
|
+
{ name: 'Opposition', angle: 180, orb: 10 },
|
|
1514
|
+
{ name: 'Square', angle: 90, orb: 8 },
|
|
1515
|
+
{ name: 'Trine', angle: 120, orb: 8 },
|
|
1516
|
+
{ name: 'Sextile', angle: 60, orb: 6 },
|
|
1517
|
+
{ name: 'Quincunx', angle: 150, orb: 4 }
|
|
1509
1518
|
];
|
|
1510
1519
|
|
|
1511
1520
|
// Compare each transit planet with each birth planet
|
|
1512
1521
|
for (const [transitName, transitLongitude] of Object.entries(transitPlanets)) {
|
|
1522
|
+
// If filtering by target planet, only calculate for that transit planet
|
|
1523
|
+
if (targetPlanet && transitName !== targetPlanet) continue;
|
|
1524
|
+
|
|
1513
1525
|
for (const [birthName, birthLongitude] of Object.entries(birthPlanets)) {
|
|
1514
1526
|
// Skip if it's the same planet
|
|
1515
1527
|
if (transitName === birthName) continue;
|
|
1516
1528
|
|
|
1517
|
-
// Calculate the angle
|
|
1518
|
-
|
|
1519
|
-
|
|
1529
|
+
// Calculate the angle between the two planets
|
|
1530
|
+
let rawDiff = transitLongitude - birthLongitude;
|
|
1531
|
+
let angleDiff = ((rawDiff % 360) + 360) % 360;
|
|
1520
1532
|
|
|
1521
|
-
// Check for aspects
|
|
1533
|
+
// Check for aspects using the actual angle
|
|
1522
1534
|
for (const aspect of aspectTypes) {
|
|
1523
|
-
|
|
1535
|
+
// Check both the angle and its complement (360 - angle)
|
|
1536
|
+
const diff1 = Math.abs(angleDiff - aspect.angle);
|
|
1537
|
+
const diff2 = Math.abs((360 - angleDiff) - aspect.angle);
|
|
1538
|
+
const diff = Math.min(diff1, diff2);
|
|
1539
|
+
|
|
1540
|
+
if (diff <= aspect.orb) {
|
|
1524
1541
|
aspects.push({
|
|
1525
1542
|
transitPlanet: transitName,
|
|
1526
1543
|
birthPlanet: birthName,
|
|
1527
1544
|
type: aspect.name,
|
|
1528
|
-
angle:
|
|
1529
|
-
orb:
|
|
1545
|
+
angle: angleDiff.toFixed(2),
|
|
1546
|
+
orb: diff.toFixed(2),
|
|
1530
1547
|
transitLongitude: transitLongitude,
|
|
1531
1548
|
birthLongitude: birthLongitude
|
|
1532
1549
|
});
|
|
1550
|
+
break; // Only match one aspect per planet pair
|
|
1533
1551
|
}
|
|
1534
1552
|
}
|
|
1535
1553
|
}
|
|
@@ -1548,8 +1566,8 @@ function calculatePersonalTransitAspects(transitDate = null, birthData = null, t
|
|
|
1548
1566
|
}
|
|
1549
1567
|
|
|
1550
1568
|
// Function to display personal transit aspects
|
|
1551
|
-
function showPersonalTransitAspects(transitDate = null, birthData = null, targetPlanet = null) {
|
|
1552
|
-
const aspectData = calculatePersonalTransitAspects(transitDate, birthData, targetPlanet);
|
|
1569
|
+
function showPersonalTransitAspects(transitDate = null, birthData = null, targetPlanet = null, useHuberOrbs = true) {
|
|
1570
|
+
const aspectData = calculatePersonalTransitAspects(transitDate, birthData, targetPlanet, useHuberOrbs);
|
|
1553
1571
|
|
|
1554
1572
|
if (!aspectData || aspectData.aspects.length === 0) {
|
|
1555
1573
|
console.log('No personal transit aspects found.');
|
|
@@ -1557,7 +1575,7 @@ function showPersonalTransitAspects(transitDate = null, birthData = null, target
|
|
|
1557
1575
|
}
|
|
1558
1576
|
|
|
1559
1577
|
const transitDateDisplay = transitDate || getCurrentTimeInTimezone();
|
|
1560
|
-
console.log(`Personal Transit Aspects (${transitDateDisplay.day}.${transitDateDisplay.month}.${transitDateDisplay.year}):`);
|
|
1578
|
+
console.log(`Personal Transit Aspects (${transitDateDisplay.day}.${transitDateDisplay.month}.${transitDateDisplay.year}) [${(aspectData && aspectData.aspects.length>0) ? (useHuberOrbs ? 'Huber orbs' : 'Standard orbs') : ''}]:`);
|
|
1561
1579
|
console.log('================================================================================');
|
|
1562
1580
|
console.log('| Transit | Birth | Aspect | Orb | Transit Pos | Birth Pos |');
|
|
1563
1581
|
console.log('================================================================================');
|
package/src/cli/cli.js
CHANGED
|
@@ -882,7 +882,7 @@ program
|
|
|
882
882
|
for (const [planetName] of Object.entries(planets)) {
|
|
883
883
|
const transitPlanetData = getAstrologicalData(planetName, transitDateDisplay);
|
|
884
884
|
const transitHouse = getPlanetHouse(parseFloat(transitPlanetData.degreeInSign) + (signs.indexOf(transitPlanetData.sign) * 30), houses.house);
|
|
885
|
-
const transitAspectsData = calculatePersonalTransitAspects(transitDateDisplay, birthData, planetName);
|
|
885
|
+
const transitAspectsData = calculatePersonalTransitAspects(transitDateDisplay, birthData, planetName, true);
|
|
886
886
|
const transitAspects = transitAspectsData ? transitAspectsData.aspects : [];
|
|
887
887
|
|
|
888
888
|
// Add planet data to each aspect for later display
|
|
@@ -999,13 +999,13 @@ program
|
|
|
999
999
|
// Show personal transit aspects
|
|
1000
1000
|
// Use the specific planet if specified, or all planets
|
|
1001
1001
|
const targetPlanet = planetArg ? planetArg.toLowerCase() : null;
|
|
1002
|
-
showPersonalTransitAspects(transitDate, birthData, targetPlanet);
|
|
1002
|
+
showPersonalTransitAspects(transitDate, birthData, targetPlanet, true);
|
|
1003
1003
|
|
|
1004
1004
|
// Handle AI request for personal transit aspects
|
|
1005
1005
|
if (options.p) {
|
|
1006
1006
|
// Get the transit aspects data for AI
|
|
1007
1007
|
const { calculatePersonalTransitAspects } = require('../astrology/astrologyService');
|
|
1008
|
-
const transitAspectsData = calculatePersonalTransitAspects(transitDate, birthData, targetPlanet);
|
|
1008
|
+
const transitAspectsData = calculatePersonalTransitAspects(transitDate, birthData, targetPlanet, true);
|
|
1009
1009
|
const transitAspects = transitAspectsData ? transitAspectsData.aspects : [];
|
|
1010
1010
|
|
|
1011
1011
|
const aiData = {
|