@node-jhora/analytics 1.2.0 → 1.4.0
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/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/rules.d.ts +28 -30
- package/dist/yogas/engine.d.ts +17 -53
- package/dist/yogas/engine.js +164 -142
- package/dist/yogas/engine.js.map +1 -1
- package/dist/yogas/library.d.ts +2 -2
- package/dist/yogas/library.js +46 -30
- package/dist/yogas/library.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { calculateShadbala, ShadbalaResult } from './shadbala.js';
|
|
2
2
|
import { AshtakavargaCalculator, AshtakavargaResult } from './ashtakavarga/core.js';
|
|
3
|
-
import { YogaEngine, ChartData } from './engine
|
|
3
|
+
import { YogaEngine, ChartData } from './yogas/engine.js';
|
|
4
4
|
import { YOGA_LIBRARY } from './yogas/library.js';
|
|
5
|
-
import {
|
|
5
|
+
import { YogaDef, YogaResult } from './types/rules.js';
|
|
6
6
|
import { KPEngine, KPPlanetSignificator, KPHouseSignificator } from './kp_engine.js';
|
|
7
|
-
export type { ShadbalaResult, AshtakavargaResult, ChartData, KPPlanetSignificator, KPHouseSignificator };
|
|
8
|
-
export { calculateShadbala, AshtakavargaCalculator as Ashtakavarga, YogaEngine, YOGA_LIBRARY,
|
|
7
|
+
export type { ShadbalaResult, AshtakavargaResult, ChartData, KPPlanetSignificator, KPHouseSignificator, YogaDef, YogaResult };
|
|
8
|
+
export { calculateShadbala, AshtakavargaCalculator as Ashtakavarga, YogaEngine, YOGA_LIBRARY, KPEngine };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { calculateShadbala } from './shadbala.js';
|
|
2
2
|
import { AshtakavargaCalculator } from './ashtakavarga/core.js';
|
|
3
|
-
import { YogaEngine } from './engine
|
|
3
|
+
import { YogaEngine } from './yogas/engine.js';
|
|
4
4
|
import { YOGA_LIBRARY } from './yogas/library.js';
|
|
5
5
|
import { KPEngine } from './kp_engine.js';
|
|
6
6
|
export { calculateShadbala, AshtakavargaCalculator as Ashtakavarga, YogaEngine, YOGA_LIBRARY, KPEngine };
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAsB,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAsB,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAa,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAA6C,MAAM,gBAAgB,CAAC;AAIrF,OAAO,EACH,iBAAiB,EACjB,sBAAsB,IAAI,YAAY,EACtC,UAAU,EACV,YAAY,EACZ,QAAQ,EACX,CAAC"}
|
package/dist/types/rules.d.ts
CHANGED
|
@@ -1,45 +1,43 @@
|
|
|
1
|
-
export type YogaCategory = 'Raja' | 'Dhana' | 'Nabhasa' | 'Arishta';
|
|
2
|
-
export
|
|
1
|
+
export type YogaCategory = 'Raja' | 'Dhana' | 'Nabhasa' | 'Arishta' | 'Parivartana';
|
|
2
|
+
export type Condition = {
|
|
3
3
|
type: 'placement';
|
|
4
4
|
planet: string;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
relativeTo?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface LordshipCondition {
|
|
5
|
+
houses: number[];
|
|
6
|
+
signs?: number[];
|
|
7
|
+
from?: 'Lagna' | 'Moon' | 'Sun';
|
|
8
|
+
} | {
|
|
12
9
|
type: 'lordship';
|
|
13
10
|
lordOf: number;
|
|
14
|
-
placedIn: number;
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
placedIn: number[];
|
|
12
|
+
from?: 'Lagna' | 'Moon';
|
|
13
|
+
} | {
|
|
17
14
|
type: 'conjunction';
|
|
18
15
|
planets: string[];
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
minOrb?: number;
|
|
17
|
+
} | {
|
|
21
18
|
type: 'aspect';
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
kind
|
|
25
|
-
}
|
|
26
|
-
export interface StrengthCondition {
|
|
19
|
+
aspector: string;
|
|
20
|
+
target: string | number;
|
|
21
|
+
kind: 'graha' | 'rashi';
|
|
22
|
+
} | {
|
|
27
23
|
type: 'strength';
|
|
28
24
|
planet: string;
|
|
29
25
|
minShadbala: number;
|
|
30
|
-
}
|
|
31
|
-
export interface DistanceCondition {
|
|
26
|
+
} | {
|
|
32
27
|
type: 'distance';
|
|
28
|
+
planet: string;
|
|
33
29
|
from: string;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
export type Condition = PlacementCondition | LordshipCondition | ConjunctionCondition | AspectCondition | StrengthCondition | DistanceCondition;
|
|
39
|
-
export interface YogaDefinition {
|
|
40
|
-
id: string;
|
|
30
|
+
range: [number, number];
|
|
31
|
+
};
|
|
32
|
+
export interface YogaDef {
|
|
33
|
+
key: string;
|
|
41
34
|
name: string;
|
|
42
|
-
|
|
35
|
+
category: YogaCategory;
|
|
43
36
|
conditions: Condition[];
|
|
44
|
-
|
|
37
|
+
description_template: string;
|
|
38
|
+
}
|
|
39
|
+
export interface YogaResult {
|
|
40
|
+
yoga: YogaDef;
|
|
41
|
+
triggeringPlanets: string[];
|
|
42
|
+
strength?: number;
|
|
45
43
|
}
|
package/dist/yogas/engine.d.ts
CHANGED
|
@@ -1,62 +1,26 @@
|
|
|
1
1
|
import { PlanetPosition } from '@node-jhora/core';
|
|
2
|
-
|
|
3
|
-
export type ConditionType = 'placement' | 'aspect' | 'conjunction' | 'lordship' | 'strength';
|
|
4
|
-
export interface BaseCondition {
|
|
5
|
-
type: ConditionType;
|
|
6
|
-
}
|
|
7
|
-
export interface PlacementCondition extends BaseCondition {
|
|
8
|
-
type: 'placement';
|
|
9
|
-
planet: string;
|
|
10
|
-
house?: number[];
|
|
11
|
-
sign?: number[];
|
|
12
|
-
inOwnSign?: boolean;
|
|
13
|
-
inExaltation?: boolean;
|
|
14
|
-
relativeTo?: string;
|
|
15
|
-
}
|
|
16
|
-
export interface AspectCondition extends BaseCondition {
|
|
17
|
-
type: 'aspect';
|
|
18
|
-
from: string;
|
|
19
|
-
to: string;
|
|
20
|
-
}
|
|
21
|
-
export interface ConjunctionCondition extends BaseCondition {
|
|
22
|
-
type: 'conjunction';
|
|
23
|
-
planets: string[];
|
|
24
|
-
}
|
|
25
|
-
export interface LordshipCondition extends BaseCondition {
|
|
26
|
-
type: 'lordship';
|
|
27
|
-
lord_of: number;
|
|
28
|
-
placed_in: number;
|
|
29
|
-
}
|
|
30
|
-
export interface StrengthCondition extends BaseCondition {
|
|
31
|
-
type: 'strength';
|
|
32
|
-
planet: string;
|
|
33
|
-
min_shadbala: number;
|
|
34
|
-
}
|
|
35
|
-
export type Condition = PlacementCondition | AspectCondition | ConjunctionCondition | LordshipCondition | StrengthCondition;
|
|
36
|
-
export interface YogaDefinition {
|
|
37
|
-
name: string;
|
|
38
|
-
category: YogaCategory;
|
|
39
|
-
description?: string;
|
|
40
|
-
conditions: Condition[];
|
|
41
|
-
}
|
|
2
|
+
import { YogaDef, YogaResult } from '../types/rules.js';
|
|
42
3
|
export interface ChartData {
|
|
43
4
|
planets: PlanetPosition[];
|
|
44
5
|
cusps: number[];
|
|
45
6
|
ascendant: number;
|
|
46
7
|
}
|
|
47
8
|
export declare class YogaEngine {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
private static
|
|
53
|
-
private static
|
|
54
|
-
private static
|
|
55
|
-
private static
|
|
56
|
-
private static
|
|
57
|
-
private static
|
|
9
|
+
/**
|
|
10
|
+
* Finds all yogas from a library that match the current chart.
|
|
11
|
+
*/
|
|
12
|
+
static findYogas(chart: ChartData, library: YogaDef[]): YogaResult[];
|
|
13
|
+
private static checkCondition;
|
|
14
|
+
private static evaluatePlacement;
|
|
15
|
+
private static evaluateLordship;
|
|
16
|
+
private static evaluateConjunction;
|
|
17
|
+
private static evaluateAspect;
|
|
18
|
+
private static evaluateStrength;
|
|
19
|
+
private static evaluateDistance;
|
|
20
|
+
private static resolvePlanet;
|
|
21
|
+
private static getLordOfHouse;
|
|
58
22
|
private static getSignRuler;
|
|
59
|
-
private static
|
|
60
|
-
private static
|
|
61
|
-
private static
|
|
23
|
+
private static getHouseNum;
|
|
24
|
+
private static getRelativeHouse;
|
|
25
|
+
private static checkGrahaAspect;
|
|
62
26
|
}
|
package/dist/yogas/engine.js
CHANGED
|
@@ -1,202 +1,224 @@
|
|
|
1
1
|
export class YogaEngine {
|
|
2
|
+
/**
|
|
3
|
+
* Finds all yogas from a library that match the current chart.
|
|
4
|
+
*/
|
|
2
5
|
static findYogas(chart, library) {
|
|
3
6
|
const results = [];
|
|
4
7
|
for (const yoga of library) {
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
const triggeringPlanets = new Set();
|
|
9
|
+
let allMatch = true;
|
|
10
|
+
for (const condition of yoga.conditions) {
|
|
11
|
+
const match = this.checkCondition(chart, condition, triggeringPlanets);
|
|
12
|
+
if (!match) {
|
|
13
|
+
allMatch = false;
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
7
16
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (!this.evaluateCondition(chart, condition)) {
|
|
14
|
-
return false;
|
|
17
|
+
if (allMatch) {
|
|
18
|
+
results.push({
|
|
19
|
+
yoga,
|
|
20
|
+
triggeringPlanets: Array.from(triggeringPlanets)
|
|
21
|
+
});
|
|
15
22
|
}
|
|
16
23
|
}
|
|
17
|
-
return
|
|
24
|
+
return results;
|
|
18
25
|
}
|
|
19
|
-
static
|
|
20
|
-
switch (
|
|
26
|
+
static checkCondition(chart, cond, triggeringPlanets) {
|
|
27
|
+
switch (cond.type) {
|
|
21
28
|
case 'placement':
|
|
22
|
-
return this.
|
|
23
|
-
case 'aspect':
|
|
24
|
-
return this.checkAspect(chart, condition);
|
|
25
|
-
case 'conjunction':
|
|
26
|
-
return this.checkConjunction(chart, condition);
|
|
29
|
+
return this.evaluatePlacement(chart, cond, triggeringPlanets);
|
|
27
30
|
case 'lordship':
|
|
28
|
-
return this.
|
|
31
|
+
return this.evaluateLordship(chart, cond, triggeringPlanets);
|
|
32
|
+
case 'conjunction':
|
|
33
|
+
return this.evaluateConjunction(chart, cond, triggeringPlanets);
|
|
34
|
+
case 'aspect':
|
|
35
|
+
return this.evaluateAspect(chart, cond, triggeringPlanets);
|
|
29
36
|
case 'strength':
|
|
30
|
-
return this.
|
|
37
|
+
return this.evaluateStrength(chart, cond, triggeringPlanets);
|
|
38
|
+
case 'distance':
|
|
39
|
+
return this.evaluateDistance(chart, cond, triggeringPlanets);
|
|
31
40
|
default:
|
|
32
41
|
return false;
|
|
33
42
|
}
|
|
34
43
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
44
|
+
static evaluatePlacement(chart, cond, triggeringPlanets) {
|
|
45
|
+
const planetName = this.resolvePlanet(chart, cond.planet);
|
|
46
|
+
if (!planetName)
|
|
47
|
+
return false;
|
|
48
|
+
const planet = chart.planets.find(p => p.name === planetName);
|
|
38
49
|
if (!planet)
|
|
39
50
|
return false;
|
|
40
51
|
const planetLon = planet.longitude;
|
|
41
52
|
const signIndex = Math.floor(planetLon / 30);
|
|
42
53
|
// Sign Check
|
|
43
|
-
if (cond.
|
|
54
|
+
if (cond.signs && !cond.signs.includes(signIndex))
|
|
44
55
|
return false;
|
|
45
|
-
|
|
46
|
-
if (cond.
|
|
47
|
-
|
|
48
|
-
if (cond.relativeTo) {
|
|
49
|
-
// Relative Placement: Calculate house from Reference Planet
|
|
50
|
-
const refPlanet = chart.planets.find(p => p.name === cond.relativeTo);
|
|
51
|
-
if (!refPlanet)
|
|
52
|
-
return false;
|
|
53
|
-
const refSign = Math.floor(refPlanet.longitude / 30);
|
|
54
|
-
const pSign = signIndex;
|
|
55
|
-
// Count signs from Ref to Planet (Inclusive)
|
|
56
|
-
// Same sign = 1. Next sign = 2.
|
|
57
|
-
let count = (pSign - refSign) + 1;
|
|
58
|
-
if (count <= 0)
|
|
59
|
-
count += 12;
|
|
60
|
-
currentHouse = count;
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
// Absolute Placement (using Cusps)
|
|
64
|
-
currentHouse = this.getHouse(planetLon, chart.cusps);
|
|
65
|
-
}
|
|
66
|
-
if (!cond.house.includes(currentHouse))
|
|
67
|
-
return false;
|
|
56
|
+
let house;
|
|
57
|
+
if (cond.from === 'Moon') {
|
|
58
|
+
house = this.getRelativeHouse(chart, planetName, 'Moon');
|
|
68
59
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (!this.isOwnSign(cond.planet, signIndex))
|
|
72
|
-
return false;
|
|
60
|
+
else if (cond.from === 'Sun') {
|
|
61
|
+
house = this.getRelativeHouse(chart, planetName, 'Sun');
|
|
73
62
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (!this.isExaltationSign(cond.planet, signIndex))
|
|
77
|
-
return false;
|
|
63
|
+
else {
|
|
64
|
+
house = this.getHouseNum(chart, planet.longitude);
|
|
78
65
|
}
|
|
79
|
-
|
|
66
|
+
if (cond.houses.includes(house)) {
|
|
67
|
+
triggeringPlanets.add(planetName);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
80
71
|
}
|
|
81
|
-
static
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
72
|
+
static evaluateLordship(chart, cond, triggeringPlanets) {
|
|
73
|
+
const lordName = this.getLordOfHouse(chart, cond.lordOf);
|
|
74
|
+
if (!lordName)
|
|
75
|
+
return false;
|
|
76
|
+
const lord = chart.planets.find(p => p.name === lordName);
|
|
77
|
+
if (!lord)
|
|
78
|
+
return false;
|
|
79
|
+
let house;
|
|
80
|
+
if (cond.from === 'Moon') {
|
|
81
|
+
house = this.getRelativeHouse(chart, lordName, 'Moon');
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
house = this.getHouseNum(chart, lord.longitude);
|
|
85
|
+
}
|
|
86
|
+
if (cond.placedIn.includes(house)) {
|
|
87
|
+
triggeringPlanets.add(lordName);
|
|
85
88
|
return true;
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
static evaluateConjunction(chart, cond, triggeringPlanets) {
|
|
93
|
+
const resolvedPlanets = cond.planets.map((p) => this.resolvePlanet(chart, p)).filter((p) => !!p);
|
|
94
|
+
if (resolvedPlanets.length < cond.planets.length)
|
|
95
|
+
return false;
|
|
96
|
+
const firstP = chart.planets.find(p => p.name === resolvedPlanets[0]);
|
|
97
|
+
if (!firstP)
|
|
88
98
|
return false;
|
|
89
|
-
const firstSign = Math.floor(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
99
|
+
const firstSign = Math.floor(firstP.longitude / 30);
|
|
100
|
+
const orb = cond.minOrb || 15;
|
|
101
|
+
for (let i = 1; i < resolvedPlanets.length; i++) {
|
|
102
|
+
const currentP = chart.planets.find(p => p.name === resolvedPlanets[i]);
|
|
103
|
+
if (!currentP)
|
|
93
104
|
return false;
|
|
94
|
-
const
|
|
95
|
-
if (
|
|
105
|
+
const currentSign = Math.floor(currentP.longitude / 30);
|
|
106
|
+
if (currentSign !== firstSign)
|
|
107
|
+
return false;
|
|
108
|
+
const dist = Math.abs(currentP.longitude - firstP.longitude);
|
|
109
|
+
if (dist > orb)
|
|
96
110
|
return false;
|
|
97
111
|
}
|
|
112
|
+
resolvedPlanets.forEach((p) => triggeringPlanets.add(p));
|
|
98
113
|
return true;
|
|
99
114
|
}
|
|
100
|
-
static
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
// Mars: 4,7,8. Saturn: 3,7,10. Jupiter: 5,7,9.
|
|
104
|
-
// Needs helper.
|
|
105
|
-
const pFrom = chart.planets.find(p => p.name === cond.from);
|
|
106
|
-
const pTo = chart.planets.find(p => p.name === cond.to);
|
|
107
|
-
if (!pFrom || !pTo)
|
|
115
|
+
static evaluateAspect(chart, cond, triggeringPlanets) {
|
|
116
|
+
const aspectorName = this.resolvePlanet(chart, cond.aspector);
|
|
117
|
+
if (!aspectorName)
|
|
108
118
|
return false;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
static checkLordship(chart, cond) {
|
|
112
|
-
// Lord of X placed in Y.
|
|
113
|
-
// 1. Determine Lord of House X.
|
|
114
|
-
const lord = this.getHouseLord(cond.lord_of, chart);
|
|
115
|
-
if (!lord)
|
|
116
|
-
return false; // Lord unknown (e.g. Rahu/Ketu ownership debated, usually signs ruled by 7 planets)
|
|
117
|
-
// 2. Check placement of that Lord.
|
|
118
|
-
const lordPlanet = chart.planets.find(p => p.name === lord);
|
|
119
|
-
if (!lordPlanet)
|
|
119
|
+
const aspector = chart.planets.find(p => p.name === aspectorName);
|
|
120
|
+
if (!aspector)
|
|
120
121
|
return false;
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
if (typeof cond.target === 'string') {
|
|
123
|
+
const targetName = this.resolvePlanet(chart, cond.target);
|
|
124
|
+
const target = chart.planets.find(p => p.name === targetName);
|
|
125
|
+
if (!target)
|
|
126
|
+
return false;
|
|
127
|
+
const hasAspect = this.checkGrahaAspect(aspectorName, aspector.longitude, target.longitude);
|
|
128
|
+
if (hasAspect) {
|
|
129
|
+
triggeringPlanets.add(aspectorName);
|
|
130
|
+
triggeringPlanets.add(targetName);
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// House aspect logic could go here
|
|
135
|
+
return false;
|
|
123
136
|
}
|
|
124
|
-
static
|
|
125
|
-
//
|
|
137
|
+
static evaluateStrength(chart, cond, triggeringPlanets) {
|
|
138
|
+
// Shadbala required here. Mocking for now.
|
|
126
139
|
return true;
|
|
127
140
|
}
|
|
141
|
+
static evaluateDistance(chart, cond, triggeringPlanets) {
|
|
142
|
+
const p1Name = this.resolvePlanet(chart, cond.planet);
|
|
143
|
+
const p2Name = this.resolvePlanet(chart, cond.from);
|
|
144
|
+
if (!p1Name || !p2Name)
|
|
145
|
+
return false;
|
|
146
|
+
const p1 = chart.planets.find(p => p.name === p1Name);
|
|
147
|
+
const p2 = chart.planets.find(p => p.name === p2Name);
|
|
148
|
+
if (!p1 || !p2)
|
|
149
|
+
return false;
|
|
150
|
+
const s1 = Math.floor(p1.longitude / 30);
|
|
151
|
+
const s2 = Math.floor(p2.longitude / 30);
|
|
152
|
+
let dist = (s1 - s2) + 1;
|
|
153
|
+
if (dist <= 0)
|
|
154
|
+
dist += 12;
|
|
155
|
+
if (dist >= cond.range[0] && dist <= cond.range[1]) {
|
|
156
|
+
triggeringPlanets.add(p1Name);
|
|
157
|
+
triggeringPlanets.add(p2Name);
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
128
162
|
// --- Helpers ---
|
|
129
|
-
static
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
const start = cusps[i];
|
|
134
|
-
const end = cusps[(i + 1) % 12];
|
|
135
|
-
// Handle wrap around 360
|
|
136
|
-
if (start < end) {
|
|
137
|
-
if (lon >= start && lon < end)
|
|
138
|
-
return i + 1;
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
if (lon >= start || lon < end)
|
|
142
|
-
return i + 1;
|
|
143
|
-
}
|
|
163
|
+
static resolvePlanet(chart, identifier) {
|
|
164
|
+
if (identifier.startsWith('LordOf')) {
|
|
165
|
+
const houseNum = parseInt(identifier.replace('LordOf', ''), 10);
|
|
166
|
+
return this.getLordOfHouse(chart, houseNum) || '';
|
|
144
167
|
}
|
|
145
|
-
return
|
|
168
|
+
return identifier;
|
|
146
169
|
}
|
|
147
|
-
static
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const cuspDegree = chart.cusps[houseNum - 1]; // 0-indexed
|
|
152
|
-
const signIndex = Math.floor(cuspDegree / 30);
|
|
153
|
-
return this.getSignRuler(signIndex);
|
|
170
|
+
static getLordOfHouse(chart, houseNum) {
|
|
171
|
+
const cuspIdx = houseNum - 1;
|
|
172
|
+
const signIdx = Math.floor(chart.cusps[cuspIdx] / 30);
|
|
173
|
+
return this.getSignRuler(signIdx);
|
|
154
174
|
}
|
|
155
|
-
static getSignRuler(
|
|
156
|
-
// 0=Ar(Mar), 1=Ta(Ven), 2=Ge(Mer), 3=Cn(Mon), 4=Le(Sun), 5=Vi(Mer)
|
|
157
|
-
// 6=Li(Ven), 7=Sc(Mar), 8=Sa(Jup), 9=Cp(Sat), 10=Aq(Sat), 11=Pi(Jup)
|
|
175
|
+
static getSignRuler(signIdx) {
|
|
158
176
|
const rulers = [
|
|
159
177
|
'Mars', 'Venus', 'Mercury', 'Moon', 'Sun', 'Mercury',
|
|
160
178
|
'Venus', 'Mars', 'Jupiter', 'Saturn', 'Saturn', 'Jupiter'
|
|
161
179
|
];
|
|
162
|
-
return rulers[
|
|
180
|
+
return rulers[signIdx];
|
|
163
181
|
}
|
|
164
|
-
static
|
|
165
|
-
|
|
166
|
-
|
|
182
|
+
static getHouseNum(chart, longitude) {
|
|
183
|
+
for (let i = 0; i < 12; i++) {
|
|
184
|
+
const start = chart.cusps[i];
|
|
185
|
+
const end = chart.cusps[(i + 1) % 12];
|
|
186
|
+
if (start < end) {
|
|
187
|
+
if (longitude >= start && longitude < end)
|
|
188
|
+
return i + 1;
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
if (longitude >= start || longitude < end)
|
|
192
|
+
return i + 1;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return 1;
|
|
167
196
|
}
|
|
168
|
-
static
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
197
|
+
static getRelativeHouse(chart, planetName, relativeTo) {
|
|
198
|
+
const p = chart.planets.find(pl => pl.name === planetName);
|
|
199
|
+
const ref = chart.planets.find(pl => pl.name === relativeTo);
|
|
200
|
+
if (!p || !ref)
|
|
201
|
+
return 0;
|
|
202
|
+
const pSign = Math.floor(p.longitude / 30);
|
|
203
|
+
const refSign = Math.floor(ref.longitude / 30);
|
|
204
|
+
let count = (pSign - refSign) + 1;
|
|
205
|
+
if (count <= 0)
|
|
206
|
+
count += 12;
|
|
207
|
+
return count;
|
|
177
208
|
}
|
|
178
|
-
static
|
|
179
|
-
// Sign-based Aspect for definition ease? Or specific degrees?
|
|
180
|
-
// Yoga definitions usually implicit "Full Aspect".
|
|
181
|
-
// Distance from -> to.
|
|
209
|
+
static checkGrahaAspect(aspector, fromLon, toLon) {
|
|
182
210
|
const fromSign = Math.floor(fromLon / 30);
|
|
183
211
|
const toSign = Math.floor(toLon / 30);
|
|
184
|
-
// Count signs inclusive. 1 = Same sign.
|
|
185
212
|
let count = (toSign - fromSign) + 1;
|
|
186
213
|
if (count <= 0)
|
|
187
214
|
count += 12;
|
|
188
|
-
// Standard Rules:
|
|
189
|
-
// All aspect 7.
|
|
190
215
|
if (count === 7)
|
|
191
216
|
return true;
|
|
192
|
-
|
|
193
|
-
if (planet === 'Mars' && (count === 4 || count === 8))
|
|
217
|
+
if (aspector === 'Mars' && (count === 4 || count === 8))
|
|
194
218
|
return true;
|
|
195
|
-
|
|
196
|
-
if (planet === 'Jupiter' && (count === 5 || count === 9))
|
|
219
|
+
if (aspector === 'Jupiter' && (count === 5 || count === 9))
|
|
197
220
|
return true;
|
|
198
|
-
|
|
199
|
-
if (planet === 'Saturn' && (count === 3 || count === 10))
|
|
221
|
+
if (aspector === 'Saturn' && (count === 3 || count === 10))
|
|
200
222
|
return true;
|
|
201
223
|
return false;
|
|
202
224
|
}
|
package/dist/yogas/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/yogas/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/yogas/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/yogas/library.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const YOGA_LIBRARY:
|
|
1
|
+
import { YogaDef } from '../types/rules.js';
|
|
2
|
+
export declare const YOGA_LIBRARY: YogaDef[];
|
package/dist/yogas/library.js
CHANGED
|
@@ -1,89 +1,105 @@
|
|
|
1
1
|
export const YOGA_LIBRARY = [
|
|
2
2
|
// --- Pancha Mahapurusha Yogas ---
|
|
3
|
+
// Rule: Planet in Kendra (1,4,7,10) AND in Own or Exaltation sign.
|
|
3
4
|
{
|
|
4
|
-
|
|
5
|
+
key: 'HAMSA_YOGA',
|
|
5
6
|
name: 'Hamsa Yoga',
|
|
6
|
-
|
|
7
|
+
category: 'Raja',
|
|
7
8
|
conditions: [
|
|
8
9
|
{
|
|
9
10
|
type: 'placement',
|
|
10
11
|
planet: 'Jupiter',
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
houses: [1, 4, 7, 10],
|
|
13
|
+
signs: [3, 8, 11] // Cancer(3), Sag(8), Pis(11)
|
|
13
14
|
}
|
|
14
15
|
],
|
|
15
|
-
|
|
16
|
+
description_template: 'Jupiter in a Kendra and in Cancer, Sagittarius, or Pisces causes Hamsa Yoga.'
|
|
16
17
|
},
|
|
17
18
|
{
|
|
18
|
-
|
|
19
|
+
key: 'MALAVYA_YOGA',
|
|
19
20
|
name: 'Malavya Yoga',
|
|
20
|
-
|
|
21
|
+
category: 'Raja',
|
|
21
22
|
conditions: [
|
|
22
23
|
{
|
|
23
24
|
type: 'placement',
|
|
24
25
|
planet: 'Venus',
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
houses: [1, 4, 7, 10],
|
|
27
|
+
signs: [1, 6, 11] // Tau(1), Lib(6), Pis(11)
|
|
27
28
|
}
|
|
28
29
|
],
|
|
29
|
-
|
|
30
|
+
description_template: 'Venus in a Kendra and in Taurus, Libra, or Pisces causes Malavya Yoga.'
|
|
30
31
|
},
|
|
31
32
|
{
|
|
32
|
-
|
|
33
|
+
key: 'RUCHAKA_YOGA',
|
|
33
34
|
name: 'Ruchaka Yoga',
|
|
34
|
-
|
|
35
|
+
category: 'Raja',
|
|
35
36
|
conditions: [
|
|
36
37
|
{
|
|
37
38
|
type: 'placement',
|
|
38
39
|
planet: 'Mars',
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
houses: [1, 4, 7, 10],
|
|
41
|
+
signs: [0, 7, 9] // Ari(0), Sco(7), Cap(9)
|
|
41
42
|
}
|
|
42
43
|
],
|
|
43
|
-
|
|
44
|
+
description_template: 'Mars in a Kendra and in Aries, Scorpio, or Capricorn causes Ruchaka Yoga.'
|
|
44
45
|
},
|
|
45
46
|
{
|
|
46
|
-
|
|
47
|
+
key: 'BHADRA_YOGA',
|
|
47
48
|
name: 'Bhadra Yoga',
|
|
48
|
-
|
|
49
|
+
category: 'Raja',
|
|
49
50
|
conditions: [
|
|
50
51
|
{
|
|
51
52
|
type: 'placement',
|
|
52
53
|
planet: 'Mercury',
|
|
53
|
-
|
|
54
|
-
|
|
54
|
+
houses: [1, 4, 7, 10],
|
|
55
|
+
signs: [2, 5] // Gem(2), Vir(5)
|
|
55
56
|
}
|
|
56
57
|
],
|
|
57
|
-
|
|
58
|
+
description_template: 'Mercury in a Kendra and in Gemini or Virgo causes Bhadra Yoga.'
|
|
58
59
|
},
|
|
59
60
|
{
|
|
60
|
-
|
|
61
|
+
key: 'SASA_YOGA',
|
|
61
62
|
name: 'Sasa Yoga',
|
|
62
|
-
|
|
63
|
+
category: 'Raja',
|
|
63
64
|
conditions: [
|
|
64
65
|
{
|
|
65
66
|
type: 'placement',
|
|
66
67
|
planet: 'Saturn',
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
houses: [1, 4, 7, 10],
|
|
69
|
+
signs: [9, 10, 6] // Cap(9), Aqu(10), Lib(6)
|
|
69
70
|
}
|
|
70
71
|
],
|
|
71
|
-
|
|
72
|
+
description_template: 'Saturn in a Kendra and in Capricorn, Aquarius, or Libra causes Sasa Yoga.'
|
|
72
73
|
},
|
|
73
74
|
// --- Gaja Kesari Yoga ---
|
|
75
|
+
// Rule: Jupiter in Kendra from Moon.
|
|
74
76
|
{
|
|
75
|
-
|
|
77
|
+
key: 'GAJA_KESARI',
|
|
76
78
|
name: 'Gaja Kesari Yoga',
|
|
77
|
-
|
|
79
|
+
category: 'Raja',
|
|
78
80
|
conditions: [
|
|
79
81
|
{
|
|
80
82
|
type: 'placement',
|
|
81
83
|
planet: 'Jupiter',
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
houses: [1, 4, 7, 10],
|
|
85
|
+
from: 'Moon'
|
|
84
86
|
}
|
|
85
87
|
],
|
|
86
|
-
|
|
88
|
+
description_template: 'Jupiter in a Kendra from the Moon causes Gaja Kesari Yoga.'
|
|
89
|
+
},
|
|
90
|
+
// --- Dharma-Karma Adhipati Yoga ---
|
|
91
|
+
// Rule: Conjunction or mutual aspect between Lords of 9th and 10th.
|
|
92
|
+
{
|
|
93
|
+
key: 'DHARMA_KARMA_ADHIPATI',
|
|
94
|
+
name: 'Dharma-Karma Adhipati Yoga',
|
|
95
|
+
category: 'Raja',
|
|
96
|
+
conditions: [
|
|
97
|
+
{
|
|
98
|
+
type: 'conjunction',
|
|
99
|
+
planets: ['LordOf9', 'LordOf10']
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
description_template: 'The conjunction of the lords of the 9th and 10th houses causes Dharma-Karma Adhipati Yoga.'
|
|
87
103
|
}
|
|
88
104
|
];
|
|
89
105
|
//# sourceMappingURL=library.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/yogas/library.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/yogas/library.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-jhora/analytics",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"build": "tsc"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@node-jhora/core": "
|
|
22
|
+
"@node-jhora/core": "^1.4.0",
|
|
23
23
|
"luxon": "^3.7.2"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"typescript": "*"
|
|
27
27
|
}
|
|
28
|
-
}
|
|
28
|
+
}
|