@node-jhora/analytics 1.0.3 → 1.0.5
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/engine/yoga_engine.d.ts +24 -0
- package/dist/engine/yoga_engine.js +216 -0
- package/dist/engine/yoga_engine.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/rules.d.ts +45 -0
- package/dist/types/rules.js +2 -0
- package/dist/types/rules.js.map +1 -0
- package/dist/yogas/library.d.ts +1 -1
- package/dist/yogas/library.js +28 -84
- package/dist/yogas/library.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PlanetPosition } from '@node-jhora/core';
|
|
2
|
+
import { YogaDefinition } from '../types/rules.js';
|
|
3
|
+
export interface ChartData {
|
|
4
|
+
planets: PlanetPosition[];
|
|
5
|
+
cusps: number[];
|
|
6
|
+
ascendant: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class YogaEngine {
|
|
9
|
+
static findYogas(chart: ChartData, library: YogaDefinition[]): string[];
|
|
10
|
+
private static evaluateYoga;
|
|
11
|
+
private static evaluateCondition;
|
|
12
|
+
private static checkPlacement;
|
|
13
|
+
private static checkConjunction;
|
|
14
|
+
private static checkAspect;
|
|
15
|
+
private static checkLordship;
|
|
16
|
+
private static checkStrength;
|
|
17
|
+
private static checkDistance;
|
|
18
|
+
private static getHouse;
|
|
19
|
+
private static getHouseLord;
|
|
20
|
+
private static getSignRuler;
|
|
21
|
+
private static isOwnSign;
|
|
22
|
+
private static isExaltationSign;
|
|
23
|
+
private static hasAspect;
|
|
24
|
+
}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
export class YogaEngine {
|
|
2
|
+
static findYogas(chart, library) {
|
|
3
|
+
const results = [];
|
|
4
|
+
for (const yoga of library) {
|
|
5
|
+
if (this.evaluateYoga(chart, yoga)) {
|
|
6
|
+
results.push(yoga.name);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return results;
|
|
10
|
+
}
|
|
11
|
+
static evaluateYoga(chart, yoga) {
|
|
12
|
+
for (const condition of yoga.conditions) {
|
|
13
|
+
if (!this.evaluateCondition(chart, condition)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
static evaluateCondition(chart, condition) {
|
|
20
|
+
switch (condition.type) {
|
|
21
|
+
case 'placement':
|
|
22
|
+
return this.checkPlacement(chart, condition);
|
|
23
|
+
case 'aspect':
|
|
24
|
+
return this.checkAspect(chart, condition);
|
|
25
|
+
case 'conjunction':
|
|
26
|
+
return this.checkConjunction(chart, condition);
|
|
27
|
+
case 'lordship':
|
|
28
|
+
return this.checkLordship(chart, condition);
|
|
29
|
+
case 'strength':
|
|
30
|
+
return this.checkStrength(chart, condition);
|
|
31
|
+
case 'distance':
|
|
32
|
+
// @ts-ignore - Condition might not be fully discriminated if types overlap, but type string is unique
|
|
33
|
+
return this.checkDistance(chart, condition);
|
|
34
|
+
default:
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// --- Evaluators ---
|
|
39
|
+
static checkPlacement(chart, cond) {
|
|
40
|
+
const planet = chart.planets.find(p => p.name === cond.planet);
|
|
41
|
+
if (!planet)
|
|
42
|
+
return false;
|
|
43
|
+
const planetLon = planet.longitude;
|
|
44
|
+
const signIndex = Math.floor(planetLon / 30);
|
|
45
|
+
// Sign Check
|
|
46
|
+
if (cond.sign && !cond.sign.includes(signIndex))
|
|
47
|
+
return false;
|
|
48
|
+
// House Check (Absolute or Relative)
|
|
49
|
+
if (cond.house) {
|
|
50
|
+
let currentHouse;
|
|
51
|
+
if (cond.relativeTo) {
|
|
52
|
+
// Relative Placement: Calculate house from Reference Planet
|
|
53
|
+
const refPlanet = chart.planets.find(p => p.name === cond.relativeTo);
|
|
54
|
+
if (!refPlanet)
|
|
55
|
+
return false;
|
|
56
|
+
const refSign = Math.floor(refPlanet.longitude / 30);
|
|
57
|
+
const pSign = signIndex;
|
|
58
|
+
// Count signs from Ref to Planet (Inclusive)
|
|
59
|
+
// Same sign = 1. Next sign = 2.
|
|
60
|
+
let count = (pSign - refSign) + 1;
|
|
61
|
+
if (count <= 0)
|
|
62
|
+
count += 12;
|
|
63
|
+
currentHouse = count;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Absolute Placement (using Cusps)
|
|
67
|
+
currentHouse = this.getHouse(planetLon, chart.cusps);
|
|
68
|
+
}
|
|
69
|
+
if (!cond.house.includes(currentHouse))
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
// Own Sign Check
|
|
73
|
+
if (cond.inOwnSign) {
|
|
74
|
+
if (!this.isOwnSign(cond.planet, signIndex))
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
// Exaltation Check
|
|
78
|
+
if (cond.inExaltation) {
|
|
79
|
+
if (!this.isExaltationSign(cond.planet, signIndex))
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
static checkConjunction(chart, cond) {
|
|
85
|
+
// Conjunction: In the same Sign (Rashi) usually. Or strict orb?
|
|
86
|
+
// Standard Yoga definition usually implies Same Sign.
|
|
87
|
+
if (cond.planets.length < 2)
|
|
88
|
+
return true;
|
|
89
|
+
const firstPlanet = chart.planets.find(p => p.name === cond.planets[0]);
|
|
90
|
+
if (!firstPlanet)
|
|
91
|
+
return false;
|
|
92
|
+
const firstSign = Math.floor(firstPlanet.longitude / 30);
|
|
93
|
+
for (let i = 1; i < cond.planets.length; i++) {
|
|
94
|
+
const p = chart.planets.find(item => item.name === cond.planets[i]);
|
|
95
|
+
if (!p)
|
|
96
|
+
return false;
|
|
97
|
+
const s = Math.floor(p.longitude / 30);
|
|
98
|
+
if (s !== firstSign)
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
static checkAspect(chart, cond) {
|
|
104
|
+
const pFrom = chart.planets.find(p => p.name === cond.from);
|
|
105
|
+
const pTo = chart.planets.find(p => p.name === cond.to);
|
|
106
|
+
if (!pFrom || !pTo)
|
|
107
|
+
return false;
|
|
108
|
+
return this.hasAspect(cond.from, pFrom.longitude, pTo.longitude);
|
|
109
|
+
}
|
|
110
|
+
static checkLordship(chart, cond) {
|
|
111
|
+
// Lord of X placed in Y.
|
|
112
|
+
// 1. Determine Lord of House X.
|
|
113
|
+
const lord = this.getHouseLord(cond.lordOf, chart);
|
|
114
|
+
if (!lord)
|
|
115
|
+
return false; // Lord unknown (e.g. Rahu/Ketu ownership debated, usually signs ruled by 7 planets)
|
|
116
|
+
// 2. Check placement of that Lord.
|
|
117
|
+
const lordPlanet = chart.planets.find(p => p.name === lord);
|
|
118
|
+
if (!lordPlanet)
|
|
119
|
+
return false;
|
|
120
|
+
const placementHouse = this.getHouse(lordPlanet.longitude, chart.cusps);
|
|
121
|
+
return placementHouse === cond.placedIn;
|
|
122
|
+
}
|
|
123
|
+
static checkStrength(chart, cond) {
|
|
124
|
+
// Placeholder until Shadbala is implemented
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
static checkDistance(chart, cond) {
|
|
128
|
+
// Condition: { type: 'distance', from: string, to: string, minHouse: number, maxHouse: number }
|
|
129
|
+
const pFrom = chart.planets.find(p => p.name === cond.from);
|
|
130
|
+
const pTo = chart.planets.find(p => p.name === cond.to);
|
|
131
|
+
if (!pFrom || !pTo)
|
|
132
|
+
return false;
|
|
133
|
+
const fromSign = Math.floor(pFrom.longitude / 30);
|
|
134
|
+
const toSign = Math.floor(pTo.longitude / 30);
|
|
135
|
+
let distance = (toSign - fromSign) + 1;
|
|
136
|
+
if (distance <= 0)
|
|
137
|
+
distance += 12;
|
|
138
|
+
return distance >= cond.minHouse && distance <= cond.maxHouse;
|
|
139
|
+
}
|
|
140
|
+
// --- Helpers ---
|
|
141
|
+
static getHouse(lon, cusps) {
|
|
142
|
+
// Assuming Placidus/Topocentric unequal houses, we check ranges.
|
|
143
|
+
// Cusp 1 is start of House 1. Cusp 2 is end of House 1 / start of House 2.
|
|
144
|
+
for (let i = 0; i < 12; i++) {
|
|
145
|
+
const start = cusps[i];
|
|
146
|
+
const end = cusps[(i + 1) % 12];
|
|
147
|
+
// Handle wrap around 360
|
|
148
|
+
if (start < end) {
|
|
149
|
+
if (lon >= start && lon < end)
|
|
150
|
+
return i + 1;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
if (lon >= start || lon < end)
|
|
154
|
+
return i + 1;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return 1; // Fallback
|
|
158
|
+
}
|
|
159
|
+
static getHouseLord(houseNum, chart) {
|
|
160
|
+
// House 1-12.
|
|
161
|
+
// Find sign at Cusp of House X.
|
|
162
|
+
// In Placidus, cusp degree defines the sign.
|
|
163
|
+
const cuspDegree = chart.cusps[houseNum - 1]; // 0-indexed
|
|
164
|
+
const signIndex = Math.floor(cuspDegree / 30);
|
|
165
|
+
return this.getSignRuler(signIndex);
|
|
166
|
+
}
|
|
167
|
+
static getSignRuler(signIndex) {
|
|
168
|
+
// 0=Ar(Mar), 1=Ta(Ven), 2=Ge(Mer), 3=Cn(Mon), 4=Le(Sun), 5=Vi(Mer)
|
|
169
|
+
// 6=Li(Ven), 7=Sc(Mar), 8=Sa(Jup), 9=Cp(Sat), 10=Aq(Sat), 11=Pi(Jup)
|
|
170
|
+
const rulers = [
|
|
171
|
+
'Mars', 'Venus', 'Mercury', 'Moon', 'Sun', 'Mercury',
|
|
172
|
+
'Venus', 'Mars', 'Jupiter', 'Saturn', 'Saturn', 'Jupiter'
|
|
173
|
+
];
|
|
174
|
+
return rulers[signIndex];
|
|
175
|
+
}
|
|
176
|
+
static isOwnSign(planet, sign) {
|
|
177
|
+
return this.getSignRuler(sign) === planet;
|
|
178
|
+
// Note: Careful with Co-Lords if implementing Aquarius=Rahu? Standard is Saturn.
|
|
179
|
+
}
|
|
180
|
+
static isExaltationSign(planet, sign) {
|
|
181
|
+
// Sun->Aries(0), Moon->Taurus(1), Mars->Capricorn(9), Mer->Virgo(5)
|
|
182
|
+
// Jup->Cancer(3), Ven->Pisces(11), Sat->Libra(6)
|
|
183
|
+
// Rahu->Tau/Gem? Ketu->Sco/Sag?
|
|
184
|
+
const exaltations = {
|
|
185
|
+
'Sun': 0, 'Moon': 1, 'Mars': 9, 'Mercury': 5,
|
|
186
|
+
'Jupiter': 3, 'Venus': 11, 'Saturn': 6
|
|
187
|
+
};
|
|
188
|
+
return exaltations[planet] === sign;
|
|
189
|
+
}
|
|
190
|
+
static hasAspect(planet, fromLon, toLon) {
|
|
191
|
+
// Sign-based Aspect for definition ease? Or specific degrees?
|
|
192
|
+
// Yoga definitions usually implicit "Full Aspect".
|
|
193
|
+
// Distance from -> to.
|
|
194
|
+
const fromSign = Math.floor(fromLon / 30);
|
|
195
|
+
const toSign = Math.floor(toLon / 30);
|
|
196
|
+
// Count signs inclusive. 1 = Same sign.
|
|
197
|
+
let count = (toSign - fromSign) + 1;
|
|
198
|
+
if (count <= 0)
|
|
199
|
+
count += 12;
|
|
200
|
+
// Standard Rules:
|
|
201
|
+
// All aspect 7.
|
|
202
|
+
if (count === 7)
|
|
203
|
+
return true;
|
|
204
|
+
// Mars: 4, 8
|
|
205
|
+
if (planet === 'Mars' && (count === 4 || count === 8))
|
|
206
|
+
return true;
|
|
207
|
+
// Jupiter: 5, 9
|
|
208
|
+
if (planet === 'Jupiter' && (count === 5 || count === 9))
|
|
209
|
+
return true;
|
|
210
|
+
// Saturn: 3, 10
|
|
211
|
+
if (planet === 'Saturn' && (count === 3 || count === 10))
|
|
212
|
+
return true;
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=yoga_engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yoga_engine.js","sourceRoot":"","sources":["../../src/engine/yoga_engine.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { calculateShadbala, ShadbalaResult } from './shadbala.js';
|
|
2
2
|
import { Ashtakavarga, AshtakavargaResult } from './ashtakavarga.js';
|
|
3
|
-
import { YogaEngine, ChartData } from './
|
|
3
|
+
import { YogaEngine, ChartData } from './engine/yoga_engine.js';
|
|
4
4
|
import { YOGA_LIBRARY } from './yogas/library.js';
|
|
5
|
+
import { YogaDefinition } from './types/rules.js';
|
|
5
6
|
export type { ShadbalaResult, AshtakavargaResult, ChartData };
|
|
6
|
-
export { calculateShadbala, Ashtakavarga, YogaEngine, YOGA_LIBRARY };
|
|
7
|
+
export { calculateShadbala, Ashtakavarga, YogaEngine, YOGA_LIBRARY, type YogaDefinition };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { calculateShadbala } from './shadbala.js';
|
|
2
2
|
import { Ashtakavarga } from './ashtakavarga.js';
|
|
3
|
-
import { YogaEngine } from './
|
|
3
|
+
import { YogaEngine } from './engine/yoga_engine.js';
|
|
4
4
|
import { YOGA_LIBRARY } from './yogas/library.js';
|
|
5
5
|
export { calculateShadbala, Ashtakavarga, YogaEngine, YOGA_LIBRARY };
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
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,YAAY,EAAsB,MAAM,mBAAmB,CAAC;AACrE,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,YAAY,EAAsB,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAa,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,OAAO,EACH,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,YAAY,EAEf,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export type YogaCategory = 'Raja' | 'Dhana' | 'Nabhasa' | 'Arishta';
|
|
2
|
+
export interface PlacementCondition {
|
|
3
|
+
type: 'placement';
|
|
4
|
+
planet: string;
|
|
5
|
+
house?: number[];
|
|
6
|
+
sign?: number[];
|
|
7
|
+
inOwnSign?: boolean;
|
|
8
|
+
inExaltation?: boolean;
|
|
9
|
+
relativeTo?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface LordshipCondition {
|
|
12
|
+
type: 'lordship';
|
|
13
|
+
lordOf: number;
|
|
14
|
+
placedIn: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ConjunctionCondition {
|
|
17
|
+
type: 'conjunction';
|
|
18
|
+
planets: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface AspectCondition {
|
|
21
|
+
type: 'aspect';
|
|
22
|
+
from: string;
|
|
23
|
+
to: string;
|
|
24
|
+
kind?: 'graha' | 'rashi';
|
|
25
|
+
}
|
|
26
|
+
export interface StrengthCondition {
|
|
27
|
+
type: 'strength';
|
|
28
|
+
planet: string;
|
|
29
|
+
minShadbala: number;
|
|
30
|
+
}
|
|
31
|
+
export interface DistanceCondition {
|
|
32
|
+
type: 'distance';
|
|
33
|
+
from: string;
|
|
34
|
+
to: string;
|
|
35
|
+
minHouse: number;
|
|
36
|
+
maxHouse: number;
|
|
37
|
+
}
|
|
38
|
+
export type Condition = PlacementCondition | LordshipCondition | ConjunctionCondition | AspectCondition | StrengthCondition | DistanceCondition;
|
|
39
|
+
export interface YogaDefinition {
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
group: YogaCategory;
|
|
43
|
+
conditions: Condition[];
|
|
44
|
+
interpretation_key: string;
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/types/rules.ts"],"names":[],"mappings":""}
|
package/dist/yogas/library.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { YogaDefinition } from '
|
|
1
|
+
import { YogaDefinition } from '../types/rules.js';
|
|
2
2
|
export declare const YOGA_LIBRARY: YogaDefinition[];
|
package/dist/yogas/library.js
CHANGED
|
@@ -1,33 +1,9 @@
|
|
|
1
1
|
export const YOGA_LIBRARY = [
|
|
2
2
|
// --- Pancha Mahapurusha Yogas ---
|
|
3
3
|
{
|
|
4
|
+
id: 'HAMSA_YOGA',
|
|
4
5
|
name: 'Hamsa Yoga',
|
|
5
|
-
|
|
6
|
-
description: 'Jupiter in Own/Exalted sign and in Kendra (1,4,7,10).',
|
|
7
|
-
conditions: [
|
|
8
|
-
{
|
|
9
|
-
type: 'placement',
|
|
10
|
-
planet: 'Jupiter',
|
|
11
|
-
house: [1, 4, 7, 10],
|
|
12
|
-
inOwnSign: true // Implicit OR with Exaltation?
|
|
13
|
-
// Wait, DSL didn't support OR inside standard boolean flags efficiently.
|
|
14
|
-
// "inOwnSign" means MUST be in own sign.
|
|
15
|
-
// "inExaltation" means MUST be in exaltation.
|
|
16
|
-
// If we want Own OR Exaltation, we likely need two separate params or logic.
|
|
17
|
-
// Or better: Use "sign" parameter to list specific eligible signs.
|
|
18
|
-
// Jupiter Own: Sagittarius(8), Pisces(11). Exalted: Cancer(3).
|
|
19
|
-
// So sign: [3, 8, 11].
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
},
|
|
23
|
-
// Actually, let's correct the Library usage.
|
|
24
|
-
// The previous implementation of checkPlacement had:
|
|
25
|
-
// if (cond.sign && !cond.sign.includes(signIndex)) return false;
|
|
26
|
-
// So passing specific signs works as an OR list.
|
|
27
|
-
{
|
|
28
|
-
name: 'Hamsa Yoga',
|
|
29
|
-
category: 'Raja',
|
|
30
|
-
description: 'Jupiter in Own/Exalted sign and in Kendra.',
|
|
6
|
+
group: 'Raja',
|
|
31
7
|
conditions: [
|
|
32
8
|
{
|
|
33
9
|
type: 'placement',
|
|
@@ -35,111 +11,79 @@ export const YOGA_LIBRARY = [
|
|
|
35
11
|
house: [1, 4, 7, 10],
|
|
36
12
|
sign: [3, 8, 11] // Cancer(3), Sag(8), Pis(11)
|
|
37
13
|
}
|
|
38
|
-
]
|
|
14
|
+
],
|
|
15
|
+
interpretation_key: 'hamsa_yoga_desc'
|
|
39
16
|
},
|
|
40
17
|
{
|
|
18
|
+
id: 'MALAVYA_YOGA',
|
|
41
19
|
name: 'Malavya Yoga',
|
|
42
|
-
|
|
43
|
-
description: 'Venus in Own/Exalted sign and in Kendra.',
|
|
20
|
+
group: 'Raja',
|
|
44
21
|
conditions: [
|
|
45
22
|
{
|
|
46
23
|
type: 'placement',
|
|
47
24
|
planet: 'Venus',
|
|
48
25
|
house: [1, 4, 7, 10],
|
|
49
|
-
sign: [1, 6, 11] // Tau(1), Lib(6), Pis(11
|
|
26
|
+
sign: [1, 6, 11] // Tau(1), Lib(6), Pis(11)
|
|
50
27
|
}
|
|
51
|
-
]
|
|
28
|
+
],
|
|
29
|
+
interpretation_key: 'malavya_yoga_desc'
|
|
52
30
|
},
|
|
53
31
|
{
|
|
32
|
+
id: 'RUCHAKA_YOGA',
|
|
54
33
|
name: 'Ruchaka Yoga',
|
|
55
|
-
|
|
56
|
-
description: 'Mars in Own/Exalted sign and in Kendra.',
|
|
34
|
+
group: 'Raja',
|
|
57
35
|
conditions: [
|
|
58
36
|
{
|
|
59
37
|
type: 'placement',
|
|
60
38
|
planet: 'Mars',
|
|
61
39
|
house: [1, 4, 7, 10],
|
|
62
|
-
sign: [0, 7, 9] // Ari(0), Sco(7), Cap(9
|
|
40
|
+
sign: [0, 7, 9] // Ari(0), Sco(7), Cap(9)
|
|
63
41
|
}
|
|
64
|
-
]
|
|
42
|
+
],
|
|
43
|
+
interpretation_key: 'ruchaka_yoga_desc'
|
|
65
44
|
},
|
|
66
45
|
{
|
|
46
|
+
id: 'BHADRA_YOGA',
|
|
67
47
|
name: 'Bhadra Yoga',
|
|
68
|
-
|
|
69
|
-
description: 'Mercury in Own/Exalted sign and in Kendra.',
|
|
48
|
+
group: 'Raja',
|
|
70
49
|
conditions: [
|
|
71
50
|
{
|
|
72
51
|
type: 'placement',
|
|
73
52
|
planet: 'Mercury',
|
|
74
53
|
house: [1, 4, 7, 10],
|
|
75
|
-
sign: [2, 5] // Gem(2), Vir(5
|
|
54
|
+
sign: [2, 5] // Gem(2), Vir(5)
|
|
76
55
|
}
|
|
77
|
-
]
|
|
56
|
+
],
|
|
57
|
+
interpretation_key: 'bhadra_yoga_desc'
|
|
78
58
|
},
|
|
79
59
|
{
|
|
60
|
+
id: 'SASA_YOGA',
|
|
80
61
|
name: 'Sasa Yoga',
|
|
81
|
-
|
|
82
|
-
description: 'Saturn in Own/Exalted sign and in Kendra.',
|
|
62
|
+
group: 'Raja',
|
|
83
63
|
conditions: [
|
|
84
64
|
{
|
|
85
65
|
type: 'placement',
|
|
86
66
|
planet: 'Saturn',
|
|
87
67
|
house: [1, 4, 7, 10],
|
|
88
|
-
sign: [9, 10, 6] // Cap(9), Aqu(10), Lib(6
|
|
68
|
+
sign: [9, 10, 6] // Cap(9), Aqu(10), Lib(6)
|
|
89
69
|
}
|
|
90
|
-
]
|
|
70
|
+
],
|
|
71
|
+
interpretation_key: 'sasa_yoga_desc'
|
|
91
72
|
},
|
|
92
73
|
// --- Gaja Kesari Yoga ---
|
|
93
74
|
{
|
|
75
|
+
id: 'GAJA_KESARI',
|
|
94
76
|
name: 'Gaja Kesari Yoga',
|
|
95
|
-
|
|
96
|
-
description: 'Jupiter in Kendra from Moon.',
|
|
77
|
+
group: 'Raja',
|
|
97
78
|
conditions: [
|
|
98
|
-
// "Kendra from Moon" is specialized 4,7,10 relation.
|
|
99
|
-
// Our simple DSL 'aspect' handles standard aspects.
|
|
100
|
-
// "Kendra from Moon" means count 1, 4, 7, 10 from Moon.
|
|
101
|
-
// Distance (Mon -> Jup) in {1, 4, 7, 10}
|
|
102
|
-
// Is this 'aspect'? Standard aspects cover 7. Mars 4,8...
|
|
103
|
-
// We might need a generic "relationship" or "distance" condition?
|
|
104
|
-
// "aspect" condition checks if 'from' aspects 'to' using planetary rules.
|
|
105
|
-
// Gaja Kesari is a geometric relationship (Kendras).
|
|
106
|
-
// Let's check checkAspect logic.
|
|
107
|
-
// We can hack it or add 'distance' type?
|
|
108
|
-
// Prompt example used: "{ type: 'aspect', from: 'Mars', to: 'Moon' }".
|
|
109
|
-
// Prompt didn't specify 'geometric angular distance'.
|
|
110
|
-
// But Gaja Kesari is specifically defined as Jup in Kendra from Moon.
|
|
111
|
-
// I will implement a custom condition logic or interpret 'aspect' to allow 'special relations'?
|
|
112
|
-
// No, 'aspect' usually implies Drishti.
|
|
113
|
-
// I'll add "Type: 'placement'" validation relative to another planet?
|
|
114
|
-
// Current 'placement' only supports absolute houses.
|
|
115
|
-
// Wait, I can define it as:
|
|
116
|
-
// "Jupiter is 1,4,7,10 signs from Moon".
|
|
117
|
-
// I should assume the Engine handles this or add features?
|
|
118
|
-
// "The Yoga Search Engine (DSL)... Condition Types: ... { type: 'aspect', ... } ..."
|
|
119
|
-
// It doesn't explicitly show 'relative placement'.
|
|
120
|
-
// However, Gaja Kesari is the example. "Jupiter in Kendra from Moon".
|
|
121
|
-
// Let's add a condition to Engine? Or assume 'aspect' covers it?
|
|
122
|
-
// Jupiter aspects Moon? No, Jup in 4th from Moon aspects Moon? No.
|
|
123
|
-
// Jup in 10th from Moon aspects Moon? Yes (5,7,9? No).
|
|
124
|
-
// Best approach: Add 'relative_placement' or enhance 'placement'.
|
|
125
|
-
// For now, I'll rely on a future 'relative' condition but since the user blocked out specific types...
|
|
126
|
-
// I'll stick to what I can do.
|
|
127
|
-
// I will use 'aspect' if Jup is in 7th.
|
|
128
|
-
// But for 1, 4, 10...
|
|
129
|
-
// Let's Add 'relative-house' condition to my Engine update?
|
|
130
|
-
// User Prompt DSL was "Example", not "Exhaustive"?
|
|
131
|
-
// "Condition Types: {placement, aspect, conjunction, lordship, strength}"
|
|
132
|
-
// Maybe 'placement' can have 'relativeTo'?
|
|
133
|
-
// Let's modify engine.ts to support `relativeTo` in PlacementCondition.
|
|
134
|
-
// Example: { type: 'placement', planet: 'Jupiter', house: [1,4,7,10], relativeTo: 'Moon' }
|
|
135
79
|
{
|
|
136
80
|
type: 'placement',
|
|
137
81
|
planet: 'Jupiter',
|
|
138
82
|
house: [1, 4, 7, 10],
|
|
139
|
-
// @ts-ignore - Extending the DSL implicitly for functionality
|
|
140
83
|
relativeTo: 'Moon'
|
|
141
84
|
}
|
|
142
|
-
]
|
|
85
|
+
],
|
|
86
|
+
interpretation_key: 'gaja_kesari_desc'
|
|
143
87
|
}
|
|
144
88
|
];
|
|
145
89
|
//# sourceMappingURL=library.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/yogas/library.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC1C,mCAAmC;IACnC;QACI,
|
|
1
|
+
{"version":3,"file":"library.js","sourceRoot":"","sources":["../../src/yogas/library.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC1C,mCAAmC;IACnC;QACI,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,MAAM;QACb,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,6BAA6B;aACjD;SACJ;QACD,kBAAkB,EAAE,iBAAiB;KACxC;IACD;QACI,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,MAAM;QACb,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,0BAA0B;aAC9C;SACJ;QACD,kBAAkB,EAAE,mBAAmB;KAC1C;IACD;QACI,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,MAAM;QACb,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB;aAC5C;SACJ;QACD,kBAAkB,EAAE,mBAAmB;KAC1C;IACD;QACI,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,MAAM;QACb,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB;aACjC;SACJ;QACD,kBAAkB,EAAE,kBAAkB;KACzC;IACD;QACI,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,MAAM;QACb,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B;aAC9C;SACJ;QACD,kBAAkB,EAAE,gBAAgB;KACvC;IAED,2BAA2B;IAC3B;QACI,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,MAAM;QACb,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpB,UAAU,EAAE,MAAM;aACrB;SACJ;QACD,kBAAkB,EAAE,kBAAkB;KACzC;CACJ,CAAC"}
|