astro-ascendant 3.2.0 → 4.0.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.
Files changed (207) hide show
  1. package/dist/chart/calculate.d.ts +2 -7
  2. package/dist/chart/calculate.d.ts.map +1 -1
  3. package/dist/chart/calculate.js +132 -136
  4. package/dist/chart/calculate.js.map +1 -1
  5. package/dist/chart/charts.d.ts +14 -7
  6. package/dist/chart/charts.d.ts.map +1 -1
  7. package/dist/chart/charts.js +29 -26
  8. package/dist/chart/charts.js.map +1 -1
  9. package/dist/chart/cusp.d.ts +7 -4
  10. package/dist/chart/cusp.d.ts.map +1 -1
  11. package/dist/chart/cusp.js +19 -16
  12. package/dist/chart/cusp.js.map +1 -1
  13. package/dist/chart/divisional-mapping/calculate.d.ts +5 -8
  14. package/dist/chart/divisional-mapping/calculate.d.ts.map +1 -1
  15. package/dist/chart/divisional-mapping/calculate.js +13 -22
  16. package/dist/chart/divisional-mapping/calculate.js.map +1 -1
  17. package/dist/chart/divisional-mapping/helper.d.ts +8 -13
  18. package/dist/chart/divisional-mapping/helper.d.ts.map +1 -1
  19. package/dist/chart/divisional-mapping/helper.js +10 -25
  20. package/dist/chart/divisional-mapping/helper.js.map +1 -1
  21. package/dist/chart/divisional-mapping/index.d.ts +1 -1
  22. package/dist/chart/divisional-mapping/index.d.ts.map +1 -1
  23. package/dist/chart/divisional-mapping/index.js +1 -1
  24. package/dist/chart/divisional-mapping/index.js.map +1 -1
  25. package/dist/chart/divisional-mapping/model.d.ts +1 -1
  26. package/dist/chart/error.d.ts +1 -1
  27. package/dist/chart/generate.d.ts +1 -7
  28. package/dist/chart/generate.d.ts.map +1 -1
  29. package/dist/chart/generate.js +20 -29
  30. package/dist/chart/generate.js.map +1 -1
  31. package/dist/chart/helper.d.ts +4 -3
  32. package/dist/chart/helper.d.ts.map +1 -1
  33. package/dist/chart/helper.js +24 -24
  34. package/dist/chart/helper.js.map +1 -1
  35. package/dist/chart/internal/constants.d.ts +6 -5
  36. package/dist/chart/internal/constants.d.ts.map +1 -1
  37. package/dist/chart/internal/constants.js +6 -4
  38. package/dist/chart/internal/constants.js.map +1 -1
  39. package/dist/chart/internal/position.d.ts +12 -4
  40. package/dist/chart/internal/position.d.ts.map +1 -1
  41. package/dist/chart/internal/position.js +19 -13
  42. package/dist/chart/internal/position.js.map +1 -1
  43. package/dist/chart/model.d.ts +26 -27
  44. package/dist/chart/model.d.ts.map +1 -1
  45. package/dist/chart/model.js +11 -12
  46. package/dist/chart/model.js.map +1 -1
  47. package/dist/chart/placements.d.ts +0 -5
  48. package/dist/chart/placements.d.ts.map +1 -1
  49. package/dist/chart/placements.js +32 -30
  50. package/dist/chart/placements.js.map +1 -1
  51. package/dist/dasha/calendar.d.ts +0 -5
  52. package/dist/dasha/calendar.d.ts.map +1 -1
  53. package/dist/dasha/calendar.js +0 -5
  54. package/dist/dasha/calendar.js.map +1 -1
  55. package/dist/dasha/chara/calculate.d.ts +12 -7
  56. package/dist/dasha/chara/calculate.d.ts.map +1 -1
  57. package/dist/dasha/chara/calculate.js +83 -93
  58. package/dist/dasha/chara/calculate.js.map +1 -1
  59. package/dist/dasha/error.d.ts +1 -1
  60. package/dist/dasha/evidence.d.ts +2 -1
  61. package/dist/dasha/evidence.d.ts.map +1 -1
  62. package/dist/dasha/evidence.js +6 -2
  63. package/dist/dasha/evidence.js.map +1 -1
  64. package/dist/dasha/model.d.ts +26 -26
  65. package/dist/dasha/query.d.ts +7 -28
  66. package/dist/dasha/query.d.ts.map +1 -1
  67. package/dist/dasha/query.js +3 -18
  68. package/dist/dasha/query.js.map +1 -1
  69. package/dist/dasha/rashi-internal.d.ts +2 -8
  70. package/dist/dasha/rashi-internal.d.ts.map +1 -1
  71. package/dist/dasha/rashi-internal.js +3 -13
  72. package/dist/dasha/rashi-internal.js.map +1 -1
  73. package/dist/dasha/rashi-query.d.ts +1 -0
  74. package/dist/dasha/rashi-query.d.ts.map +1 -1
  75. package/dist/dasha/rashi-query.js +2 -4
  76. package/dist/dasha/rashi-query.js.map +1 -1
  77. package/dist/dasha/sthira/calculate.d.ts +2 -9
  78. package/dist/dasha/sthira/calculate.d.ts.map +1 -1
  79. package/dist/dasha/sthira/calculate.js +122 -188
  80. package/dist/dasha/sthira/calculate.js.map +1 -1
  81. package/dist/dasha/sthira/constants.d.ts +50 -0
  82. package/dist/dasha/sthira/constants.d.ts.map +1 -0
  83. package/dist/dasha/sthira/constants.js +73 -0
  84. package/dist/dasha/sthira/constants.js.map +1 -0
  85. package/dist/dasha/vimshottari/calculate.d.ts +3 -16
  86. package/dist/dasha/vimshottari/calculate.d.ts.map +1 -1
  87. package/dist/dasha/vimshottari/calculate.js +47 -74
  88. package/dist/dasha/vimshottari/calculate.js.map +1 -1
  89. package/dist/dasha/vimshottari/query.d.ts.map +1 -1
  90. package/dist/dasha/vimshottari/query.js +2 -5
  91. package/dist/dasha/vimshottari/query.js.map +1 -1
  92. package/dist/ephemeris/model.d.ts +1 -1
  93. package/dist/ephemeris/model.d.ts.map +1 -1
  94. package/dist/ephemeris/model.js +1 -0
  95. package/dist/ephemeris/model.js.map +1 -1
  96. package/dist/jaimini/argala/calculate.d.ts +6 -33
  97. package/dist/jaimini/argala/calculate.d.ts.map +1 -1
  98. package/dist/jaimini/argala/calculate.js +37 -48
  99. package/dist/jaimini/argala/calculate.js.map +1 -1
  100. package/dist/jaimini/argala/helper.d.ts +1 -1
  101. package/dist/jaimini/argala/helper.d.ts.map +1 -1
  102. package/dist/jaimini/argala/helper.js +6 -4
  103. package/dist/jaimini/argala/helper.js.map +1 -1
  104. package/dist/jaimini/argala/model.d.ts +10 -10
  105. package/dist/jaimini/arudha-pada/calculate.d.ts +2 -6
  106. package/dist/jaimini/arudha-pada/calculate.d.ts.map +1 -1
  107. package/dist/jaimini/arudha-pada/calculate.js +15 -26
  108. package/dist/jaimini/arudha-pada/calculate.js.map +1 -1
  109. package/dist/jaimini/arudha-pada/model.d.ts +2 -2
  110. package/dist/jaimini/chara-karakas/calculate.d.ts +0 -5
  111. package/dist/jaimini/chara-karakas/calculate.d.ts.map +1 -1
  112. package/dist/jaimini/chara-karakas/calculate.js +5 -9
  113. package/dist/jaimini/chara-karakas/calculate.js.map +1 -1
  114. package/dist/jaimini/chara-karakas/helper.d.ts +1 -8
  115. package/dist/jaimini/chara-karakas/helper.d.ts.map +1 -1
  116. package/dist/jaimini/chara-karakas/helper.js +2 -8
  117. package/dist/jaimini/chara-karakas/helper.js.map +1 -1
  118. package/dist/jaimini/chara-karakas/index.d.ts +1 -0
  119. package/dist/jaimini/chara-karakas/index.d.ts.map +1 -1
  120. package/dist/jaimini/chara-karakas/index.js +1 -0
  121. package/dist/jaimini/chara-karakas/index.js.map +1 -1
  122. package/dist/jaimini/chara-karakas/model.d.ts.map +1 -1
  123. package/dist/jaimini/chara-karakas/model.js +2 -9
  124. package/dist/jaimini/chara-karakas/model.js.map +1 -1
  125. package/dist/jaimini/karakamsha/calculate.d.ts +1 -6
  126. package/dist/jaimini/karakamsha/calculate.d.ts.map +1 -1
  127. package/dist/jaimini/karakamsha/calculate.js +6 -11
  128. package/dist/jaimini/karakamsha/calculate.js.map +1 -1
  129. package/dist/jaimini/karakamsha/helper.d.ts +1 -1
  130. package/dist/jaimini/karakamsha/helper.d.ts.map +1 -1
  131. package/dist/jaimini/karakamsha/helper.js +6 -5
  132. package/dist/jaimini/karakamsha/helper.js.map +1 -1
  133. package/dist/jaimini/karakamsha/model.js +3 -3
  134. package/dist/jaimini/karakamsha/model.js.map +1 -1
  135. package/dist/jaimini/rashi-drishti/calculate.d.ts +1 -5
  136. package/dist/jaimini/rashi-drishti/calculate.d.ts.map +1 -1
  137. package/dist/jaimini/rashi-drishti/calculate.js +3 -7
  138. package/dist/jaimini/rashi-drishti/calculate.js.map +1 -1
  139. package/dist/jaimini/rashi-drishti/helper.d.ts +2 -6
  140. package/dist/jaimini/rashi-drishti/helper.d.ts.map +1 -1
  141. package/dist/jaimini/rashi-drishti/helper.js +28 -34
  142. package/dist/jaimini/rashi-drishti/helper.js.map +1 -1
  143. package/dist/jaimini/rashi-drishti/index.d.ts +1 -0
  144. package/dist/jaimini/rashi-drishti/index.d.ts.map +1 -1
  145. package/dist/jaimini/rashi-drishti/index.js +1 -0
  146. package/dist/jaimini/rashi-drishti/index.js.map +1 -1
  147. package/dist/jaimini/upapada/calculate.d.ts +2 -6
  148. package/dist/jaimini/upapada/calculate.d.ts.map +1 -1
  149. package/dist/jaimini/upapada/calculate.js +6 -10
  150. package/dist/jaimini/upapada/calculate.js.map +1 -1
  151. package/dist/jaimini/upapada/model.d.ts +2 -2
  152. package/dist/position/index.d.ts +29 -0
  153. package/dist/position/index.d.ts.map +1 -0
  154. package/dist/position/index.js +53 -0
  155. package/dist/position/index.js.map +1 -0
  156. package/dist/provenance.d.ts +156 -5
  157. package/dist/provenance.d.ts.map +1 -1
  158. package/dist/provenance.js +128 -126
  159. package/dist/provenance.js.map +1 -1
  160. package/dist/sav/calculate.d.ts +13 -18
  161. package/dist/sav/calculate.d.ts.map +1 -1
  162. package/dist/sav/calculate.js +28 -62
  163. package/dist/sav/calculate.js.map +1 -1
  164. package/dist/sav/constants.d.ts +3 -2
  165. package/dist/sav/constants.d.ts.map +1 -1
  166. package/dist/sav/constants.js +2 -9
  167. package/dist/sav/constants.js.map +1 -1
  168. package/dist/sav/model.d.ts.map +1 -1
  169. package/dist/sav/model.js +2 -9
  170. package/dist/sav/model.js.map +1 -1
  171. package/dist/swisseph/calculate.d.ts +9 -9
  172. package/dist/swisseph/calculate.d.ts.map +1 -1
  173. package/dist/swisseph/calculate.js +26 -21
  174. package/dist/swisseph/calculate.js.map +1 -1
  175. package/dist/swisseph/helper.d.ts +5 -8
  176. package/dist/swisseph/helper.d.ts.map +1 -1
  177. package/dist/swisseph/helper.js +12 -19
  178. package/dist/swisseph/helper.js.map +1 -1
  179. package/dist/swisseph/model.d.ts.map +1 -1
  180. package/dist/swisseph/model.js +1 -0
  181. package/dist/swisseph/model.js.map +1 -1
  182. package/dist/transit/find.d.ts +1 -6
  183. package/dist/transit/find.d.ts.map +1 -1
  184. package/dist/transit/find.js +15 -14
  185. package/dist/transit/find.js.map +1 -1
  186. package/dist/transit/model.d.ts +1 -1
  187. package/dist/transit/search.d.ts +8 -10
  188. package/dist/transit/search.d.ts.map +1 -1
  189. package/dist/transit/search.js +27 -36
  190. package/dist/transit/search.js.map +1 -1
  191. package/dist/utils/index.d.ts +10 -0
  192. package/dist/utils/index.d.ts.map +1 -0
  193. package/dist/utils/index.js +10 -0
  194. package/dist/utils/index.js.map +1 -0
  195. package/dist/utils/placement.d.ts +9 -0
  196. package/dist/utils/placement.d.ts.map +1 -0
  197. package/dist/utils/placement.js +14 -0
  198. package/dist/utils/placement.js.map +1 -0
  199. package/dist/utils/position.d.ts +41 -0
  200. package/dist/utils/position.d.ts.map +1 -0
  201. package/dist/utils/position.js +82 -0
  202. package/dist/utils/position.js.map +1 -0
  203. package/dist/utils/zodiac.d.ts +34 -0
  204. package/dist/utils/zodiac.d.ts.map +1 -0
  205. package/dist/utils/zodiac.js +41 -0
  206. package/dist/utils/zodiac.js.map +1 -0
  207. package/package.json +2 -2
@@ -1,11 +1,16 @@
1
1
  import { Effect } from "effect";
2
- import type { Moment, Placements } from "../../chart/model.js";
3
- import { DashaEvidenceError } from "../error.js";
2
+ import { type Moment, type Placements } from "../../chart/model.js";
4
3
  /**
5
- * Builds the twelve-sign Jaimini Chara Dasha from Lagna. The ninth sign's pada
6
- * group determines the forward or reverse order; each sign's own pada direction
7
- * determines its duration. Antardashas are equal twelfths and end exactly with
8
- * their parent Mahadasha.
4
+ * Calculates the Chara Dasha timeline for a chart.
5
+ *
6
+ * Mahadashas run through all twelve signs, starting from the lagna sign and
7
+ * proceeding in the pada direction of the 9th sign from lagna (zodiacal or
8
+ * reverse). Each mahadasha lasts as many years as `durationOf` gives for that
9
+ * sign, and begins where the previous one ended, with the first starting at
10
+ * the moment's date. Antardashas within each mahadasha begin from the sign
11
+ * next to the mahadasha sign in the same direction.
12
+ *
13
+ * Fails if any required planet placement is missing.
9
14
  */
10
15
  export declare const calculateChara: (moment: Moment, placements: Placements) => Effect.Effect<{
11
16
  readonly system: "Chara";
@@ -25,5 +30,5 @@ export declare const calculateChara: (moment: Moment, placements: Placements) =>
25
30
  readonly end: import("effect/DateTime").Utc;
26
31
  }[];
27
32
  }[];
28
- }, DashaEvidenceError | import("../../jaimini/chara-karakas/model.js").ParseError, never>;
33
+ }, import("../error.js").DashaEvidenceError | import("../../utils/position.js").LongitudeError | import("../../jaimini/chara-karakas/model.js").ParseError | import("../../utils/position.js").SignIndexError, never>;
29
34
  //# sourceMappingURL=calculate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calculate.d.ts","sourceRoot":"","sources":["../../../src/dasha/chara/calculate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAgHjD;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;yFA+BzB,CAAC"}
1
+ {"version":3,"file":"calculate.d.ts","sourceRoot":"","sources":["../../../src/dasha/chara/calculate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAGhD,OAAO,EAAW,KAAK,MAAM,EAAE,KAAK,UAAU,EAAe,MAAM,sBAAsB,CAAC;AAoH1F;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;qNA4CzB,CAAC"}
@@ -1,114 +1,104 @@
1
- import { Effect } from "effect";
1
+ import { Effect, HashSet, Array } from "effect";
2
2
  import { RASHIS, SIGN_LORDS } from "../../chart/internal/constants.js";
3
- import { signAt, signIndexOf } from "../../chart/internal/position.js";
3
+ import { Planets } from "../../chart/model.js";
4
4
  import { compareExactDegrees, exactDegreeOf } from "../../jaimini/chara-karakas/helper.js";
5
- import { methods } from "../../provenance.js";
6
- import { DashaEvidenceError } from "../error.js";
7
- import { validateUniquePlanetPlacements } from "../evidence.js";
5
+ import { charaDasha } from "../../provenance.js";
6
+ import { indexOfSign, signAtIndex, signIndexOf } from "../../utils/position.js";
7
+ import { placementOf, validateRequiredPlacements } from "../evidence.js";
8
8
  import { CharaDasha } from "../model.js";
9
- import { RashiInternal, rashiIndex } from "../rashi-internal.js";
10
- const SAMA_PADA = new Set(["Aries", "Taurus", "Gemini", "Libra", "Scorpio", "Sagittarius"]);
11
- const placementOf = Effect.fn("Dasha.charaPlacementOf")(function* (placements, planet, context) {
12
- const matches = placements.planets.filter((placement) => placement.name === planet);
13
- const match = matches[0];
14
- if (matches.length !== 1 || match === undefined) {
15
- return yield* DashaEvidenceError.make({
16
- placement: planet,
17
- expected: 1,
18
- actual: matches.length,
19
- context,
20
- });
21
- }
22
- return match;
9
+ import { RashiInternal } from "../rashi-internal.js";
10
+ const SAMA_PADA = HashSet.make("Aries", "Taurus", "Gemini", "Libra", "Scorpio", "Sagittarius");
11
+ const CO_LORDS = {
12
+ Scorpio: ["Mars", "Ketu"],
13
+ Aquarius: ["Saturn", "Rahu"],
14
+ };
15
+ const padaDirection = (sign) => Effect.succeed((HashSet.has(SAMA_PADA, sign) ? 1 : -1));
16
+ const distanceInDirection = (from, to, direction) => Effect.succeed(((to - from) * direction + RASHIS.length) % RASHIS.length);
17
+ const countAssociations = Effect.fn("astro-ascendant/dasha/chara/countAssociations")(function* (placements, exclude, index) {
18
+ const indexes = yield* Effect.forEach(placements.planets.filter((p) => p.name !== exclude), (p) => signIndexOf(p.longitude));
19
+ return indexes.filter((i) => i === index).length;
23
20
  });
24
- function padaDirection(sign) {
25
- return SAMA_PADA.has(sign) ? 1 : -1;
26
- }
27
- function distanceInDirection(from, to, direction) {
28
- return ((to - from) * direction + RASHIS.length) % RASHIS.length;
29
- }
30
21
  /**
31
- * Resolves Scorpio's Mars/Ketu or Aquarius's Saturn/Rahu co-lord without an
32
- * interpretive strength judgement. Occupation makes the other co-lord active;
33
- * otherwise sign associations, exact degree, then the traditional planet break
34
- * the tie. A shared occupation means the sign receives its full twelve years.
22
+ * Resolves the effective lord of Scorpio or Aquarius for Chara Dasha, where
23
+ * two planets share lordship (Mars/Ketu for Scorpio, Saturn/Rahu for Aquarius).
24
+ *
25
+ * Rules are applied in order, stopping at the first that decides:
26
+ * 1. If both candidates sit in the sign itself, there is no lord (`null`).
27
+ * 2. If exactly one candidate sits in the sign, the other one is the lord.
28
+ * 3. Otherwise the candidate with more associations in its own sign wins.
29
+ * 4. If still tied, the candidate at the higher exact degree wins, and on an
30
+ * exact tie the first (traditional) planet is chosen.
35
31
  */
36
- const resolveCoLord = Effect.fn("Dasha.resolveCharaCoLord")(function* (placements, sign, candidates) {
37
- const targetIndex = rashiIndex(sign);
38
- const first = yield* placementOf(placements, candidates[0], `${sign} co-lord`);
39
- const second = yield* placementOf(placements, candidates[1], `${sign} co-lord`);
40
- const firstIndex = signIndexOf(first.longitude);
41
- const secondIndex = signIndexOf(second.longitude);
42
- const firstInSign = firstIndex === targetIndex;
43
- const secondInSign = secondIndex === targetIndex;
44
- if (firstInSign && secondInSign) {
32
+ const resolveCoLord = Effect.fn("astro-ascendant/dasha/chara/resolveCoLord")(function* (placements, sign, [a, b]) {
33
+ const target = yield* indexOfSign(sign);
34
+ const describe = (planet) => placementOf(placements, planet, `${sign} co-lord`).pipe(Effect.flatMap(({ longitude }) => signIndexOf(longitude).pipe(Effect.map((index) => ({ planet, longitude, index, inSign: index === target })))));
35
+ const [x, y] = yield* Effect.all([describe(a), describe(b)]);
36
+ if (x.inSign && y.inSign)
45
37
  return null;
46
- }
47
- if (firstInSign !== secondInSign) {
48
- return firstInSign ? candidates[1] : candidates[0];
49
- }
50
- const firstAssociations = placements.planets.filter((placement) => placement.name !== candidates[0] && signIndexOf(placement.longitude) === firstIndex).length;
51
- const secondAssociations = placements.planets.filter((placement) => placement.name !== candidates[1] && signIndexOf(placement.longitude) === secondIndex).length;
52
- if (firstAssociations !== secondAssociations) {
53
- return firstAssociations > secondAssociations ? candidates[0] : candidates[1];
54
- }
55
- const firstDegree = yield* exactDegreeOf(first.longitude);
56
- const secondDegree = yield* exactDegreeOf(second.longitude);
57
- const degreeComparison = compareExactDegrees(firstDegree, secondDegree);
58
- if (degreeComparison !== 0)
59
- return degreeComparison > 0 ? candidates[0] : candidates[1];
60
- // An exact association-and-degree tie retains the traditional planet: Mars for
61
- // Scorpio and Saturn for Aquarius. This keeps the calculation total.
62
- return candidates[0];
38
+ if (x.inSign !== y.inSign)
39
+ return x.inSign ? y.planet : x.planet;
40
+ const [xCount, yCount] = yield* Effect.all([
41
+ countAssociations(placements, x.planet, x.index),
42
+ countAssociations(placements, y.planet, y.index),
43
+ ]);
44
+ if (xCount !== yCount)
45
+ return xCount > yCount ? x.planet : y.planet;
46
+ const [xDeg, yDeg] = yield* Effect.all([exactDegreeOf(x.longitude), exactDegreeOf(y.longitude)]);
47
+ // Exact tie: `a` is the traditional planet (Mars, Saturn).
48
+ return compareExactDegrees(xDeg, yDeg) < 0 ? y.planet : x.planet;
63
49
  });
64
50
  /**
65
- * Counts the sign lord in that sign's pada direction, excluding the starting
66
- * sign. A lord in its own sign, including a jointly occupied co-lord sign,
67
- * receives the conventional twelve-year duration.
51
+ * Computes the Chara Dasha duration (in years) of a sign.
52
+ *
53
+ * The duration is the count of signs from the given sign to the position of
54
+ * its lord, counted in the sign's pada direction (zodiacal or reverse). For
55
+ * Scorpio and Aquarius the lord is resolved via `resolveCoLord`; all other
56
+ * signs use their single ruler. If the lord sits in the sign itself (distance
57
+ * of 0), or if no co-lord can be resolved, the duration is 12 years.
68
58
  */
69
- const durationOf = Effect.fn("Dasha.charaDurationOf")(function* (placements, sign) {
70
- const signIndex = rashiIndex(sign);
71
- let lord;
72
- if (sign === "Scorpio") {
73
- lord = yield* resolveCoLord(placements, sign, ["Mars", "Ketu"]);
74
- }
75
- else if (sign === "Aquarius") {
76
- lord = yield* resolveCoLord(placements, sign, ["Saturn", "Rahu"]);
77
- }
78
- else {
79
- lord = SIGN_LORDS[sign];
80
- }
59
+ const durationOf = Effect.fn("astro-ascendant/dasha/chara/durationOf")(function* (placements, sign) {
60
+ const lord = sign === "Scorpio" || sign === "Aquarius"
61
+ ? yield* resolveCoLord(placements, sign, CO_LORDS[sign])
62
+ : SIGN_LORDS[sign];
81
63
  if (lord === null)
82
64
  return 12;
83
- const lordPlacement = yield* placementOf(placements, lord, `${sign} duration`);
84
- const distance = distanceInDirection(signIndex, signIndexOf(lordPlacement.longitude), padaDirection(sign));
65
+ const distance = yield* Effect.all({
66
+ signIndex: indexOfSign(sign),
67
+ lordIndex: placementOf(placements, lord, `${sign} duration`).pipe(Effect.flatMap(({ longitude }) => signIndexOf(longitude))),
68
+ direction: padaDirection(sign),
69
+ }).pipe(Effect.flatMap(({ signIndex, lordIndex, direction }) => distanceInDirection(signIndex, lordIndex, direction)));
85
70
  return distance === 0 ? 12 : distance;
86
71
  });
87
72
  /**
88
- * Builds the twelve-sign Jaimini Chara Dasha from Lagna. The ninth sign's pada
89
- * group determines the forward or reverse order; each sign's own pada direction
90
- * determines its duration. Antardashas are equal twelfths and end exactly with
91
- * their parent Mahadasha.
73
+ * Calculates the Chara Dasha timeline for a chart.
74
+ *
75
+ * Mahadashas run through all twelve signs, starting from the lagna sign and
76
+ * proceeding in the pada direction of the 9th sign from lagna (zodiacal or
77
+ * reverse). Each mahadasha lasts as many years as `durationOf` gives for that
78
+ * sign, and begins where the previous one ended, with the first starting at
79
+ * the moment's date. Antardashas within each mahadasha begin from the sign
80
+ * next to the mahadasha sign in the same direction.
81
+ *
82
+ * Fails if any required planet placement is missing.
92
83
  */
93
- export const calculateChara = Effect.fn("astro-ascendant/dasha/calculateChara")(function* (moment, placements) {
94
- yield* validateUniquePlanetPlacements(placements, "Chara Dasha co-lord strength");
95
- const lagnaIndex = signIndexOf(placements.lagna.longitude);
96
- const ninthSign = signAt(lagnaIndex + 8);
97
- const direction = padaDirection(ninthSign);
98
- const sequence = RashiInternal.sequenceFrom(lagnaIndex, direction);
99
- const mahadashas = [];
100
- let mahadashaStart = moment.date;
101
- for (const mahadasha of sequence) {
102
- const years = yield* durationOf(placements, mahadasha);
103
- const mahadashaIndex = rashiIndex(mahadasha);
104
- const antardashaSequence = RashiInternal.sequenceFrom(mahadashaIndex + direction, direction);
105
- const period = RashiInternal.makeRashiMahaDasha(mahadasha, mahadashaStart, years, antardashaSequence);
106
- mahadashas.push(period);
107
- mahadashaStart = period.end;
108
- }
84
+ export const calculateChara = Effect.fn("astro-ascendant/dasha/chara/calculateChara")(function* (moment, placements) {
85
+ yield* validateRequiredPlacements(placements, Planets.literals, "Chara Dasha co-lord strength");
86
+ const lagnaIndex = yield* signIndexOf(placements.lagna.longitude);
87
+ // Direction is determined by the 9th sign from lagna
88
+ const direction = yield* signAtIndex(lagnaIndex + 8).pipe(Effect.map((index) => Array.getUnsafe(RASHIS, index)), Effect.flatMap((ninthSign) => padaDirection(ninthSign)));
89
+ // Effectful phase: resolve duration and sign index for each sign, in order
90
+ const specs = yield* Effect.forEach(RashiInternal.sequenceFrom(lagnaIndex, direction), (mahadasha) => Effect.all({
91
+ years: durationOf(placements, mahadasha),
92
+ mahadashaIndex: indexOfSign(mahadasha),
93
+ }).pipe(Effect.map((resolved) => ({ mahadasha, ...resolved }))));
94
+ // Pure phase: each period starts where the previous one ended
95
+ const [, mahadashas] = Array.mapAccum(specs, moment.date, (start, { mahadasha, years, mahadashaIndex }) => {
96
+ const period = RashiInternal.makeRashiMahaDasha(mahadasha, start, years, RashiInternal.sequenceFrom(mahadashaIndex + direction, direction));
97
+ return [period.end, period];
98
+ });
109
99
  return CharaDasha.make({
110
100
  system: "Chara",
111
- provenance: methods.charaDasha.provenance,
101
+ provenance: charaDasha.provenance,
112
102
  mahadashas,
113
103
  });
114
104
  });
@@ -1 +1 @@
1
- {"version":3,"file":"calculate.js","sourceRoot":"","sources":["../../../src/dasha/chara/calculate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculate.js","sourceRoot":"","sources":["../../../src/dasha/chara/calculate.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ declare const DashaCalculationError_base: Schema.Class<DashaCalculationError, Sc
6
6
  export declare class DashaCalculationError extends DashaCalculationError_base {
7
7
  }
8
8
  declare const DashaEvidenceError_base: Schema.Class<DashaEvidenceError, Schema.TaggedStruct<"DashaEvidenceError", {
9
- readonly placement: Schema.Union<readonly [Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>, Schema.Literal<"Lagna">]>;
9
+ readonly placement: Schema.Union<readonly [Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>, Schema.Literal<"Lagna">]>;
10
10
  readonly expected: Schema.Literal<1>;
11
11
  readonly actual: Schema.Int;
12
12
  readonly context: Schema.String;
@@ -1,5 +1,6 @@
1
1
  import { Effect } from "effect";
2
2
  import type { Placements } from "../chart/model.js";
3
3
  import { DashaEvidenceError } from "./error.js";
4
- export declare const validateUniquePlanetPlacements: (placements: Placements, context: string) => Effect.Effect<undefined, DashaEvidenceError, never>;
4
+ export declare const placementOf: (placements: Placements, planet: "Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus", context: string) => Effect.Effect<import("../chart/model.js").SourcePlanet, DashaEvidenceError, never>;
5
+ export declare const validateRequiredPlacements: (placements: Placements, required: readonly ("Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus")[], context: string) => Effect.Effect<undefined, DashaEvidenceError, never>;
5
6
  //# sourceMappingURL=evidence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/dasha/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,8BAA8B,kGAc1C,CAAC"}
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/dasha/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,WAAW,iOAQtB,CAAC;AAEH,eAAO,MAAM,0BAA0B,iNAcrC,CAAC"}
@@ -1,7 +1,11 @@
1
1
  import { Effect } from "effect";
2
+ import { Placement } from "../utils/index.js";
2
3
  import { DashaEvidenceError } from "./error.js";
3
- export const validateUniquePlanetPlacements = Effect.fn("Dasha.validateUniquePlanetPlacements")(function* (placements, context) {
4
- for (const planet of new Set(placements.planets.map((placement) => placement.name))) {
4
+ export const placementOf = Effect.fn("astro-ascendant/dasha/placementOf")(function* (placements, planet, context) {
5
+ return yield* Placement.exactlyOnce(placements, planet, (actual) => DashaEvidenceError.make({ placement: planet, expected: 1, actual, context }));
6
+ });
7
+ export const validateRequiredPlacements = Effect.fn("astro-ascendant/dasha/validateRequiredPlacements")(function* (placements, required, context) {
8
+ for (const planet of required) {
5
9
  const actual = placements.planets.filter((placement) => placement.name === planet).length;
6
10
  if (actual !== 1) {
7
11
  return yield* DashaEvidenceError.make({
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/dasha/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC,EAAE,CAAC,sCAAsC,CAAC,CAC7F,QAAQ,CAAC,EAAE,UAAsB,EAAE,OAAe;IAChD,KAAK,MAAM,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QAC1F,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBACpC,SAAS,EAAE,MAAM;gBACjB,QAAQ,EAAE,CAAC;gBACX,MAAM;gBACN,OAAO;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/dasha/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,mCAAmC,CAAC,CAAC,QAAQ,CAAC,EACjF,UAAsB,EACtB,MAAe,EACf,OAAe;IAEf,OAAO,KAAK,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CACjE,kBAAkB,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAC7E,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC,EAAE,CACjD,kDAAkD,CACnD,CAAC,QAAQ,CAAC,EAAE,UAAsB,EAAE,QAAgC,EAAE,OAAe;IACpF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QAC1F,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBACpC,SAAS,EAAE,MAAM;gBACjB,QAAQ,EAAE,CAAC;gBACX,MAAM;gBACN,OAAO;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -1,20 +1,20 @@
1
1
  import { Schema } from "effect";
2
2
  export { CharaDashaProvenance, SthiraDashaProvenance } from "../provenance.js";
3
3
  export declare const AntarDasha: Schema.Struct<{
4
- readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
5
- readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
4
+ readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
5
+ readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
6
6
  readonly start: Schema.DateTimeUtc;
7
7
  readonly end: Schema.DateTimeUtc;
8
8
  }>;
9
9
  export interface AntarDasha extends Schema.Schema.Type<typeof AntarDasha> {
10
10
  }
11
11
  export declare const MahaDasha: Schema.Struct<{
12
- readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
12
+ readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
13
13
  readonly start: Schema.DateTimeUtc;
14
14
  readonly end: Schema.DateTimeUtc;
15
15
  readonly antardashas: Schema.$Array<Schema.Struct<{
16
- readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
17
- readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
16
+ readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
17
+ readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
18
18
  readonly start: Schema.DateTimeUtc;
19
19
  readonly end: Schema.DateTimeUtc;
20
20
  }>>;
@@ -22,12 +22,12 @@ export declare const MahaDasha: Schema.Struct<{
22
22
  export interface MahaDasha extends Schema.Schema.Type<typeof MahaDasha> {
23
23
  }
24
24
  export declare const VimshottariDasha: Schema.$Array<Schema.Struct<{
25
- readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
25
+ readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
26
26
  readonly start: Schema.DateTimeUtc;
27
27
  readonly end: Schema.DateTimeUtc;
28
28
  readonly antardashas: Schema.$Array<Schema.Struct<{
29
- readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
30
- readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
29
+ readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
30
+ readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
31
31
  readonly start: Schema.DateTimeUtc;
32
32
  readonly end: Schema.DateTimeUtc;
33
33
  }>>;
@@ -35,19 +35,19 @@ export declare const VimshottariDasha: Schema.$Array<Schema.Struct<{
35
35
  export type VimshottariDasha = typeof VimshottariDasha.Type;
36
36
  export declare const CurrentDasha: Schema.Struct<{
37
37
  readonly mahadasha: Schema.Struct<{
38
- readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
38
+ readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
39
39
  readonly start: Schema.DateTimeUtc;
40
40
  readonly end: Schema.DateTimeUtc;
41
41
  readonly antardashas: Schema.$Array<Schema.Struct<{
42
- readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
43
- readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
42
+ readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
43
+ readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
44
44
  readonly start: Schema.DateTimeUtc;
45
45
  readonly end: Schema.DateTimeUtc;
46
46
  }>>;
47
47
  }>;
48
48
  readonly antardasha: Schema.Struct<{
49
- readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
50
- readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
49
+ readonly mahadasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
50
+ readonly antardasha: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
51
51
  readonly start: Schema.DateTimeUtc;
52
52
  readonly end: Schema.DateTimeUtc;
53
53
  }>;
@@ -83,7 +83,7 @@ export declare const RashiBala: Schema.Struct<{
83
83
  readonly sthiraBala: Schema.Finite;
84
84
  readonly drishtiBala: Schema.Finite;
85
85
  readonly planetCount: Schema.Int;
86
- readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>>;
86
+ readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>>;
87
87
  readonly total: Schema.Finite;
88
88
  }>;
89
89
  export interface RashiBala extends Schema.Schema.Type<typeof RashiBala> {
@@ -110,7 +110,7 @@ export declare const BrahmaSelection: Schema.Struct<{
110
110
  readonly sthiraBala: Schema.Finite;
111
111
  readonly drishtiBala: Schema.Finite;
112
112
  readonly planetCount: Schema.Int;
113
- readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>>;
113
+ readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>>;
114
114
  readonly total: Schema.Finite;
115
115
  }>, Schema.Struct<{
116
116
  readonly sign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
@@ -118,13 +118,13 @@ export declare const BrahmaSelection: Schema.Struct<{
118
118
  readonly sthiraBala: Schema.Finite;
119
119
  readonly drishtiBala: Schema.Finite;
120
120
  readonly planetCount: Schema.Int;
121
- readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>>;
121
+ readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>>;
122
122
  readonly total: Schema.Finite;
123
123
  }>]>;
124
124
  readonly referenceSign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
125
125
  readonly referenceTieBreak: Schema.Literal<"lagna-on-equal-rashi-bala">;
126
126
  readonly atmakaraka: Schema.Struct<{
127
- readonly planet: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
127
+ readonly planet: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
128
128
  readonly sign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
129
129
  readonly resolution: Schema.Literals<readonly ["highest-exact-degree", "natural-strength-on-exact-degree-tie"]>;
130
130
  }>;
@@ -176,7 +176,7 @@ export declare const Brahma: Schema.Struct<{
176
176
  readonly sthiraBala: Schema.Finite;
177
177
  readonly drishtiBala: Schema.Finite;
178
178
  readonly planetCount: Schema.Int;
179
- readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>>;
179
+ readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>>;
180
180
  readonly total: Schema.Finite;
181
181
  }>, Schema.Struct<{
182
182
  readonly sign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
@@ -184,13 +184,13 @@ export declare const Brahma: Schema.Struct<{
184
184
  readonly sthiraBala: Schema.Finite;
185
185
  readonly drishtiBala: Schema.Finite;
186
186
  readonly planetCount: Schema.Int;
187
- readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>>;
187
+ readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>>;
188
188
  readonly total: Schema.Finite;
189
189
  }>]>;
190
190
  readonly referenceSign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
191
191
  readonly referenceTieBreak: Schema.Literal<"lagna-on-equal-rashi-bala">;
192
192
  readonly atmakaraka: Schema.Struct<{
193
- readonly planet: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
193
+ readonly planet: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
194
194
  readonly sign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
195
195
  readonly resolution: Schema.Literals<readonly ["highest-exact-degree", "natural-strength-on-exact-degree-tie"]>;
196
196
  }>;
@@ -229,7 +229,7 @@ export declare const SthiraDasha: Schema.Struct<{
229
229
  readonly sthiraBala: Schema.Finite;
230
230
  readonly drishtiBala: Schema.Finite;
231
231
  readonly planetCount: Schema.Int;
232
- readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>>;
232
+ readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>>;
233
233
  readonly total: Schema.Finite;
234
234
  }>, Schema.Struct<{
235
235
  readonly sign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
@@ -237,13 +237,13 @@ export declare const SthiraDasha: Schema.Struct<{
237
237
  readonly sthiraBala: Schema.Finite;
238
238
  readonly drishtiBala: Schema.Finite;
239
239
  readonly planetCount: Schema.Int;
240
- readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>>;
240
+ readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>>;
241
241
  readonly total: Schema.Finite;
242
242
  }>]>;
243
243
  readonly referenceSign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
244
244
  readonly referenceTieBreak: Schema.Literal<"lagna-on-equal-rashi-bala">;
245
245
  readonly atmakaraka: Schema.Struct<{
246
- readonly planet: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
246
+ readonly planet: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
247
247
  readonly sign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
248
248
  readonly resolution: Schema.Literals<readonly ["highest-exact-degree", "natural-strength-on-exact-degree-tie"]>;
249
249
  }>;
@@ -312,7 +312,7 @@ export declare const RashiDasha: Schema.Union<readonly [Schema.Struct<{
312
312
  readonly sthiraBala: Schema.Finite;
313
313
  readonly drishtiBala: Schema.Finite;
314
314
  readonly planetCount: Schema.Int;
315
- readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>>;
315
+ readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>>;
316
316
  readonly total: Schema.Finite;
317
317
  }>, Schema.Struct<{
318
318
  readonly sign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
@@ -320,13 +320,13 @@ export declare const RashiDasha: Schema.Union<readonly [Schema.Struct<{
320
320
  readonly sthiraBala: Schema.Finite;
321
321
  readonly drishtiBala: Schema.Finite;
322
322
  readonly planetCount: Schema.Int;
323
- readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>>;
323
+ readonly aspectingPlanets: Schema.$Array<Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>>;
324
324
  readonly total: Schema.Finite;
325
325
  }>]>;
326
326
  readonly referenceSign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
327
327
  readonly referenceTieBreak: Schema.Literal<"lagna-on-equal-rashi-bala">;
328
328
  readonly atmakaraka: Schema.Struct<{
329
- readonly planet: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Venus", "Jupiter", "Saturn", "Rahu", "Ketu"]>;
329
+ readonly planet: Schema.Literals<readonly ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]>;
330
330
  readonly sign: Schema.Literals<readonly ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]>;
331
331
  readonly resolution: Schema.Literals<readonly ["highest-exact-degree", "natural-strength-on-exact-degree-tie"]>;
332
332
  }>;
@@ -1,31 +1,10 @@
1
- import { DateTime, Effect } from "effect";
2
- export declare const at: (timeline: readonly {
3
- readonly mahadasha: "Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus";
1
+ import { type DateTime } from "effect";
2
+ export interface DashaPeriod {
4
3
  readonly start: DateTime.Utc;
5
4
  readonly end: DateTime.Utc;
6
- readonly antardashas: readonly {
7
- readonly mahadasha: "Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus";
8
- readonly antardasha: "Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus";
9
- readonly start: DateTime.Utc;
10
- readonly end: DateTime.Utc;
11
- }[];
12
- }[], when?: DateTime.Utc | undefined) => Effect.Effect<{
13
- mahadasha: {
14
- readonly mahadasha: "Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus";
15
- readonly start: DateTime.Utc;
16
- readonly end: DateTime.Utc;
17
- readonly antardashas: readonly {
18
- readonly mahadasha: "Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus";
19
- readonly antardasha: "Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus";
20
- readonly start: DateTime.Utc;
21
- readonly end: DateTime.Utc;
22
- }[];
23
- };
24
- antardasha: {
25
- readonly mahadasha: "Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus";
26
- readonly antardasha: "Jupiter" | "Ketu" | "Mars" | "Mercury" | "Moon" | "Rahu" | "Saturn" | "Sun" | "Venus";
27
- readonly start: DateTime.Utc;
28
- readonly end: DateTime.Utc;
29
- };
30
- } | null, never, never>;
5
+ }
6
+ export declare const contains: {
7
+ (instant: DateTime.Utc): (period: DashaPeriod) => boolean;
8
+ (period: DashaPeriod, instant: DateTime.Utc): boolean;
9
+ };
31
10
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/dasha/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAc1C,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAiBb,CAAC"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/dasha/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,QAAQ,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,EAAE;IACrB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC;IAC1D,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC;CAMvD,CAAC"}
@@ -1,19 +1,4 @@
1
- import { DateTime, Effect } from "effect";
2
- function contains(period, instant) {
3
- return (period.start.epochMilliseconds <= instant.epochMilliseconds &&
4
- instant.epochMilliseconds < period.end.epochMilliseconds);
5
- }
6
- export const at = Effect.fn("astro-ascendant/dasha/at")(function* (timeline, when) {
7
- const instant = when ?? (yield* DateTime.now);
8
- for (const mahadasha of timeline) {
9
- if (!contains(mahadasha, instant))
10
- continue;
11
- for (const antardasha of mahadasha.antardashas) {
12
- if (contains(antardasha, instant)) {
13
- return { mahadasha, antardasha };
14
- }
15
- }
16
- }
17
- return null;
18
- });
1
+ import { Function } from "effect";
2
+ export const contains = Function.dual(2, (period, instant) => period.start.epochMilliseconds <= instant.epochMilliseconds &&
3
+ instant.epochMilliseconds < period.end.epochMilliseconds);
19
4
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/dasha/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAI1C,SAAS,QAAQ,CACf,MAAoE,EACpE,OAAqB;IAErB,OAAO,CACL,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB;QAC3D,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CACzD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,EAC/D,QAA0B,EAC1B,IAAmB;IAEnB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9C,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;YAAE,SAAS;QAE5C,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;gBAClC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAyB,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/dasha/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAOjD,MAAM,CAAC,MAAM,QAAQ,GAGjB,QAAQ,CAAC,IAAI,CACf,CAAC,EACD,CAAC,MAAmB,EAAE,OAAqB,EAAW,EAAE,CACtD,MAAM,CAAC,KAAK,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB;IAC3D,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAC3D,CAAC"}