mingpan 0.1.1

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 (231) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -0
  3. package/dist/core/bazi/BaziCore.d.ts +112 -0
  4. package/dist/core/bazi/BaziCore.d.ts.map +1 -0
  5. package/dist/core/bazi/BaziCore.js +606 -0
  6. package/dist/core/bazi/BaziCore.js.map +1 -0
  7. package/dist/core/bazi/SolarTermCalculator.d.ts +46 -0
  8. package/dist/core/bazi/SolarTermCalculator.d.ts.map +1 -0
  9. package/dist/core/bazi/SolarTermCalculator.js +452 -0
  10. package/dist/core/bazi/SolarTermCalculator.js.map +1 -0
  11. package/dist/core/bazi/TrueSolarTime.d.ts +64 -0
  12. package/dist/core/bazi/TrueSolarTime.d.ts.map +1 -0
  13. package/dist/core/bazi/TrueSolarTime.js +210 -0
  14. package/dist/core/bazi/TrueSolarTime.js.map +1 -0
  15. package/dist/core/bazi/ephemerisData.d.ts +10 -0
  16. package/dist/core/bazi/ephemerisData.d.ts.map +1 -0
  17. package/dist/core/bazi/ephemerisData.js +88 -0
  18. package/dist/core/bazi/ephemerisData.js.map +1 -0
  19. package/dist/core/bazi/index.d.ts +8 -0
  20. package/dist/core/bazi/index.d.ts.map +1 -0
  21. package/dist/core/bazi/index.js +30 -0
  22. package/dist/core/bazi/index.js.map +1 -0
  23. package/dist/core/bazi/types.d.ts +116 -0
  24. package/dist/core/bazi/types.d.ts.map +1 -0
  25. package/dist/core/bazi/types.js +7 -0
  26. package/dist/core/bazi/types.js.map +1 -0
  27. package/dist/core/calendar/SolarTermsCalculator.d.ts +33 -0
  28. package/dist/core/calendar/SolarTermsCalculator.d.ts.map +1 -0
  29. package/dist/core/calendar/SolarTermsCalculator.js +111 -0
  30. package/dist/core/calendar/SolarTermsCalculator.js.map +1 -0
  31. package/dist/core/calendar/astronomicalCalendar.d.ts +74 -0
  32. package/dist/core/calendar/astronomicalCalendar.d.ts.map +1 -0
  33. package/dist/core/calendar/astronomicalCalendar.js +276 -0
  34. package/dist/core/calendar/astronomicalCalendar.js.map +1 -0
  35. package/dist/core/calendar/calendar.d.ts +81 -0
  36. package/dist/core/calendar/calendar.d.ts.map +1 -0
  37. package/dist/core/calendar/calendar.js +223 -0
  38. package/dist/core/calendar/calendar.js.map +1 -0
  39. package/dist/core/calendar/constants.d.ts +151 -0
  40. package/dist/core/calendar/constants.d.ts.map +1 -0
  41. package/dist/core/calendar/constants.js +97 -0
  42. package/dist/core/calendar/constants.js.map +1 -0
  43. package/dist/core/calendar/julian.d.ts +54 -0
  44. package/dist/core/calendar/julian.d.ts.map +1 -0
  45. package/dist/core/calendar/julian.js +142 -0
  46. package/dist/core/calendar/julian.js.map +1 -0
  47. package/dist/core/calendar/lunarCalendar.d.ts +79 -0
  48. package/dist/core/calendar/lunarCalendar.d.ts.map +1 -0
  49. package/dist/core/calendar/lunarCalendar.js +164 -0
  50. package/dist/core/calendar/lunarCalendar.js.map +1 -0
  51. package/dist/core/calendar/solarTerms.d.ts +105 -0
  52. package/dist/core/calendar/solarTerms.d.ts.map +1 -0
  53. package/dist/core/calendar/solarTerms.js +487 -0
  54. package/dist/core/calendar/solarTerms.js.map +1 -0
  55. package/dist/core/constants/bazi.d.ts +138 -0
  56. package/dist/core/constants/bazi.d.ts.map +1 -0
  57. package/dist/core/constants/bazi.js +332 -0
  58. package/dist/core/constants/bazi.js.map +1 -0
  59. package/dist/core/constants/index.d.ts +6 -0
  60. package/dist/core/constants/index.d.ts.map +1 -0
  61. package/dist/core/constants/index.js +37 -0
  62. package/dist/core/constants/index.js.map +1 -0
  63. package/dist/core/constants/positions.d.ts +27 -0
  64. package/dist/core/constants/positions.d.ts.map +1 -0
  65. package/dist/core/constants/positions.js +39 -0
  66. package/dist/core/constants/positions.js.map +1 -0
  67. package/dist/core/ziwei/BrightnessSystem.d.ts +53 -0
  68. package/dist/core/ziwei/BrightnessSystem.d.ts.map +1 -0
  69. package/dist/core/ziwei/BrightnessSystem.js +278 -0
  70. package/dist/core/ziwei/BrightnessSystem.js.map +1 -0
  71. package/dist/core/ziwei/IztroAdapter.d.ts +78 -0
  72. package/dist/core/ziwei/IztroAdapter.d.ts.map +1 -0
  73. package/dist/core/ziwei/IztroAdapter.js +314 -0
  74. package/dist/core/ziwei/IztroAdapter.js.map +1 -0
  75. package/dist/core/ziwei/MutagenCore.d.ts +81 -0
  76. package/dist/core/ziwei/MutagenCore.d.ts.map +1 -0
  77. package/dist/core/ziwei/MutagenCore.js +246 -0
  78. package/dist/core/ziwei/MutagenCore.js.map +1 -0
  79. package/dist/index.d.ts +13 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +1101 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/output/fortuneTextRenderer.d.ts +63 -0
  84. package/dist/output/fortuneTextRenderer.d.ts.map +1 -0
  85. package/dist/output/fortuneTextRenderer.js +384 -0
  86. package/dist/output/fortuneTextRenderer.js.map +1 -0
  87. package/dist/output/listTextRenderer.d.ts +298 -0
  88. package/dist/output/listTextRenderer.d.ts.map +1 -0
  89. package/dist/output/listTextRenderer.js +942 -0
  90. package/dist/output/listTextRenderer.js.map +1 -0
  91. package/dist/services/bazi/BaziService.d.ts +83 -0
  92. package/dist/services/bazi/BaziService.d.ts.map +1 -0
  93. package/dist/services/bazi/BaziService.js +635 -0
  94. package/dist/services/bazi/BaziService.js.map +1 -0
  95. package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts +31 -0
  96. package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts.map +1 -0
  97. package/dist/services/bazi/analyzers/ClimateAnalyzer.js +194 -0
  98. package/dist/services/bazi/analyzers/ClimateAnalyzer.js.map +1 -0
  99. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +16 -0
  100. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +1 -0
  101. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +60 -0
  102. package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +1 -0
  103. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +33 -0
  104. package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +1 -0
  105. package/dist/services/bazi/analyzers/NaYinAnalyzer.js +209 -0
  106. package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +1 -0
  107. package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts +159 -0
  108. package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts.map +1 -0
  109. package/dist/services/bazi/analyzers/PatternAnalyzer.js +1150 -0
  110. package/dist/services/bazi/analyzers/PatternAnalyzer.js.map +1 -0
  111. package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts +114 -0
  112. package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts.map +1 -0
  113. package/dist/services/bazi/analyzers/RelationsAnalyzer.js +704 -0
  114. package/dist/services/bazi/analyzers/RelationsAnalyzer.js.map +1 -0
  115. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +236 -0
  116. package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +1 -0
  117. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +2079 -0
  118. package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +1 -0
  119. package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts +181 -0
  120. package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts.map +1 -0
  121. package/dist/services/bazi/analyzers/StrengthAnalyzer.js +1119 -0
  122. package/dist/services/bazi/analyzers/StrengthAnalyzer.js.map +1 -0
  123. package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts +78 -0
  124. package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts.map +1 -0
  125. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js +383 -0
  126. package/dist/services/bazi/analyzers/TenGodsAnalyzer.js.map +1 -0
  127. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +46 -0
  128. package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +1 -0
  129. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +260 -0
  130. package/dist/services/bazi/analyzers/TraditionalAnalyzer.js.map +1 -0
  131. package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts +70 -0
  132. package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts.map +1 -0
  133. package/dist/services/bazi/analyzers/YongShenAnalyzer.js +858 -0
  134. package/dist/services/bazi/analyzers/YongShenAnalyzer.js.map +1 -0
  135. package/dist/services/bazi/calculators/DaYunCalculator.d.ts +71 -0
  136. package/dist/services/bazi/calculators/DaYunCalculator.d.ts.map +1 -0
  137. package/dist/services/bazi/calculators/DaYunCalculator.js +496 -0
  138. package/dist/services/bazi/calculators/DaYunCalculator.js.map +1 -0
  139. package/dist/services/bazi/calculators/LiuNianCalculator.d.ts +88 -0
  140. package/dist/services/bazi/calculators/LiuNianCalculator.d.ts.map +1 -0
  141. package/dist/services/bazi/calculators/LiuNianCalculator.js +546 -0
  142. package/dist/services/bazi/calculators/LiuNianCalculator.js.map +1 -0
  143. package/dist/services/bazi/calculators/LiuRiCalculator.d.ts +66 -0
  144. package/dist/services/bazi/calculators/LiuRiCalculator.d.ts.map +1 -0
  145. package/dist/services/bazi/calculators/LiuRiCalculator.js +497 -0
  146. package/dist/services/bazi/calculators/LiuRiCalculator.js.map +1 -0
  147. package/dist/services/bazi/calculators/LiuYueCalculator.d.ts +50 -0
  148. package/dist/services/bazi/calculators/LiuYueCalculator.d.ts.map +1 -0
  149. package/dist/services/bazi/calculators/LiuYueCalculator.js +338 -0
  150. package/dist/services/bazi/calculators/LiuYueCalculator.js.map +1 -0
  151. package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts +123 -0
  152. package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts.map +1 -0
  153. package/dist/services/bazi/calculators/LuckCycleCalculator.js +414 -0
  154. package/dist/services/bazi/calculators/LuckCycleCalculator.js.map +1 -0
  155. package/dist/services/bazi/index.d.ts +21 -0
  156. package/dist/services/bazi/index.d.ts.map +1 -0
  157. package/dist/services/bazi/index.js +83 -0
  158. package/dist/services/bazi/index.js.map +1 -0
  159. package/dist/services/bazi/types.d.ts +597 -0
  160. package/dist/services/bazi/types.d.ts.map +1 -0
  161. package/dist/services/bazi/types.js +123 -0
  162. package/dist/services/bazi/types.js.map +1 -0
  163. package/dist/services/ziwei/ZiweiService.d.ts +86 -0
  164. package/dist/services/ziwei/ZiweiService.d.ts.map +1 -0
  165. package/dist/services/ziwei/ZiweiService.js +343 -0
  166. package/dist/services/ziwei/ZiweiService.js.map +1 -0
  167. package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts +38 -0
  168. package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts.map +1 -0
  169. package/dist/services/ziwei/calculators/BrightnessCalculator.js +142 -0
  170. package/dist/services/ziwei/calculators/BrightnessCalculator.js.map +1 -0
  171. package/dist/services/ziwei/calculators/DailyCalculator.d.ts +27 -0
  172. package/dist/services/ziwei/calculators/DailyCalculator.d.ts.map +1 -0
  173. package/dist/services/ziwei/calculators/DailyCalculator.js +55 -0
  174. package/dist/services/ziwei/calculators/DailyCalculator.js.map +1 -0
  175. package/dist/services/ziwei/calculators/DecadeCalculator.d.ts +46 -0
  176. package/dist/services/ziwei/calculators/DecadeCalculator.d.ts.map +1 -0
  177. package/dist/services/ziwei/calculators/DecadeCalculator.js +181 -0
  178. package/dist/services/ziwei/calculators/DecadeCalculator.js.map +1 -0
  179. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts +28 -0
  180. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts.map +1 -0
  181. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js +84 -0
  182. package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js.map +1 -0
  183. package/dist/services/ziwei/calculators/HourlyCalculator.d.ts +41 -0
  184. package/dist/services/ziwei/calculators/HourlyCalculator.d.ts.map +1 -0
  185. package/dist/services/ziwei/calculators/HourlyCalculator.js +139 -0
  186. package/dist/services/ziwei/calculators/HourlyCalculator.js.map +1 -0
  187. package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts +30 -0
  188. package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts.map +1 -0
  189. package/dist/services/ziwei/calculators/MinorLimitCalculator.js +90 -0
  190. package/dist/services/ziwei/calculators/MinorLimitCalculator.js.map +1 -0
  191. package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts +39 -0
  192. package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts.map +1 -0
  193. package/dist/services/ziwei/calculators/MonthlyCalculator.js +128 -0
  194. package/dist/services/ziwei/calculators/MonthlyCalculator.js.map +1 -0
  195. package/dist/services/ziwei/calculators/MutagenCalculator.d.ts +20 -0
  196. package/dist/services/ziwei/calculators/MutagenCalculator.d.ts.map +1 -0
  197. package/dist/services/ziwei/calculators/MutagenCalculator.js +121 -0
  198. package/dist/services/ziwei/calculators/MutagenCalculator.js.map +1 -0
  199. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts +35 -0
  200. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts.map +1 -0
  201. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js +55 -0
  202. package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js.map +1 -0
  203. package/dist/services/ziwei/calculators/YearlyCalculator.d.ts +35 -0
  204. package/dist/services/ziwei/calculators/YearlyCalculator.d.ts.map +1 -0
  205. package/dist/services/ziwei/calculators/YearlyCalculator.js +119 -0
  206. package/dist/services/ziwei/calculators/YearlyCalculator.js.map +1 -0
  207. package/dist/services/ziwei/index.d.ts +15 -0
  208. package/dist/services/ziwei/index.d.ts.map +1 -0
  209. package/dist/services/ziwei/index.js +48 -0
  210. package/dist/services/ziwei/index.js.map +1 -0
  211. package/dist/services/ziwei/transformers/PalaceTransformer.d.ts +62 -0
  212. package/dist/services/ziwei/transformers/PalaceTransformer.d.ts.map +1 -0
  213. package/dist/services/ziwei/transformers/PalaceTransformer.js +153 -0
  214. package/dist/services/ziwei/transformers/PalaceTransformer.js.map +1 -0
  215. package/dist/services/ziwei/types.d.ts +185 -0
  216. package/dist/services/ziwei/types.d.ts.map +1 -0
  217. package/dist/services/ziwei/types.js +54 -0
  218. package/dist/services/ziwei/types.js.map +1 -0
  219. package/dist/shared/logger.d.ts +51 -0
  220. package/dist/shared/logger.d.ts.map +1 -0
  221. package/dist/shared/logger.js +136 -0
  222. package/dist/shared/logger.js.map +1 -0
  223. package/dist/shared/types.d.ts +91 -0
  224. package/dist/shared/types.d.ts.map +1 -0
  225. package/dist/shared/types.js +7 -0
  226. package/dist/shared/types.js.map +1 -0
  227. package/dist/utils/ageCalculator.d.ts +30 -0
  228. package/dist/utils/ageCalculator.d.ts.map +1 -0
  229. package/dist/utils/ageCalculator.js +51 -0
  230. package/dist/utils/ageCalculator.js.map +1 -0
  231. package/package.json +54 -0
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ /**
3
+ * True Solar Time Calculator
4
+ * Enhanced with high-precision astronomical calculations from taro-bazi
5
+ * Implements algorithms from 寿星万年历 (Longevity Star Calendar)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.TrueSolarTime = void 0;
9
+ const astronomicalCalendar_1 = require("../calendar/astronomicalCalendar");
10
+ class TrueSolarTime {
11
+ /**
12
+ * Adjust clock time to true solar time with astronomical precision
13
+ * @param date - The clock time
14
+ * @param longitude - The longitude in degrees (positive for East, negative for West)
15
+ * @returns Adjusted date/time
16
+ */
17
+ static adjust(date, longitude) {
18
+ // Convert to Julian Day for astronomical calculations
19
+ const jd = (0, astronomicalCalendar_1.gregorianToJulianDay)(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
20
+ // Calculate precise equation of time
21
+ const equationOfTime = this.getEquationOfTime(jd);
22
+ // Beijing standard time is UTC+8, based on 120°E longitude
23
+ const standardLongitude = 120;
24
+ // Calculate time difference in minutes
25
+ // Every degree of longitude = 4 minutes of time
26
+ const timeDifferenceMinutes = (longitude - standardLongitude) * 4;
27
+ // Total correction in minutes
28
+ const totalCorrectionMinutes = timeDifferenceMinutes + equationOfTime;
29
+ // Create new date with adjustment
30
+ const adjustedTime = new Date(date.getTime() + totalCorrectionMinutes * 60 * 1000);
31
+ return adjustedTime;
32
+ }
33
+ /**
34
+ * Calculate the equation of time with high precision
35
+ * This accounts for the Earth's elliptical orbit and axial tilt
36
+ * @param jd - Julian Day number
37
+ * @returns Correction in minutes
38
+ */
39
+ static getEquationOfTime(jd) {
40
+ // Calculate centuries from J2000.0
41
+ const T = (jd - 2451545.0) / 36525.0;
42
+ const T2 = T * T;
43
+ const T3 = T2 * T;
44
+ // Mean longitude of the Sun
45
+ const L0 = 280.46646 + 36000.76983 * T + 0.0003032 * T2;
46
+ // Mean anomaly of the Sun
47
+ const M = 357.52911 + 35999.05029 * T - 0.0001537 * T2;
48
+ // Eccentricity of Earth's orbit
49
+ const e = 0.016708634 - 0.000042037 * T - 0.0000001267 * T2;
50
+ // Convert to radians
51
+ const MRad = M * Math.PI / 180;
52
+ const L0Rad = L0 * Math.PI / 180;
53
+ // Obliquity of the ecliptic
54
+ const epsilon = 23.43929111 - 0.013004167 * T - 0.000000164 * T2 + 0.000000503 * T3;
55
+ const y = Math.tan(0.5 * epsilon * Math.PI / 180) ** 2;
56
+ // Equation of time
57
+ const E = y * Math.sin(2 * L0Rad)
58
+ - 2 * e * Math.sin(MRad)
59
+ + 4 * e * y * Math.sin(MRad) * Math.cos(2 * L0Rad)
60
+ - 0.5 * y * y * Math.sin(4 * L0Rad)
61
+ - 1.25 * e * e * Math.sin(2 * MRad);
62
+ // Convert from radians to minutes
63
+ return E * 180 / Math.PI * 4;
64
+ }
65
+ /**
66
+ * Get the day of year (1-365/366)
67
+ */
68
+ static getDayOfYear(date) {
69
+ const start = new Date(date.getFullYear(), 0, 0);
70
+ const diff = date.getTime() - start.getTime();
71
+ const dayOfYear = Math.floor(diff / (1000 * 60 * 60 * 24));
72
+ return dayOfYear;
73
+ }
74
+ /**
75
+ * Calculate sunrise time with astronomical precision
76
+ * @param date - The date
77
+ * @param latitude - Latitude in degrees (positive for North)
78
+ * @param longitude - Longitude in degrees (positive for East)
79
+ * @returns Sunrise time
80
+ */
81
+ static calculateSunrise(date, latitude, longitude) {
82
+ // Convert to Julian Day at noon
83
+ const jdNoon = (0, astronomicalCalendar_1.gregorianToJulianDay)(date.getFullYear(), date.getMonth() + 1, date.getDate(), 12, 0, 0);
84
+ // Get solar longitude
85
+ const solarLongitude = (0, astronomicalCalendar_1.getSolarLongitude)(jdNoon);
86
+ // Calculate solar declination
87
+ const obliquity = 23.43929111; // Earth's axial tilt
88
+ const declinationRad = Math.asin(Math.sin(solarLongitude * Math.PI / 180) *
89
+ Math.sin(obliquity * Math.PI / 180));
90
+ // Calculate hour angle at sunrise
91
+ const latRad = latitude * Math.PI / 180;
92
+ // Check for polar day/night
93
+ const cosH = -Math.tan(latRad) * Math.tan(declinationRad);
94
+ if (cosH > 1) {
95
+ // Polar night - no sunrise
96
+ return new Date(NaN);
97
+ }
98
+ if (cosH < -1) {
99
+ // Polar day - sun doesn't set
100
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);
101
+ }
102
+ const hourAngleRad = Math.acos(cosH);
103
+ const hourAngleDeg = hourAngleRad * 180 / Math.PI;
104
+ // Time of solar noon (in hours)
105
+ const solarNoon = 12 - longitude / 15 + date.getTimezoneOffset() / 60;
106
+ // Sunrise time
107
+ const sunriseHour = solarNoon - hourAngleDeg / 15;
108
+ // Apply equation of time correction
109
+ const equationOfTime = this.getEquationOfTime(jdNoon);
110
+ const correctedSunriseHour = sunriseHour - equationOfTime / 60;
111
+ const sunriseDate = new Date(date);
112
+ sunriseDate.setHours(Math.floor(correctedSunriseHour));
113
+ sunriseDate.setMinutes(Math.floor((correctedSunriseHour % 1) * 60));
114
+ sunriseDate.setSeconds(0);
115
+ return sunriseDate;
116
+ }
117
+ /**
118
+ * Calculate sunset time with astronomical precision
119
+ * @param date - The date
120
+ * @param latitude - Latitude in degrees
121
+ * @param longitude - Longitude in degrees
122
+ * @returns Sunset time
123
+ */
124
+ static calculateSunset(date, latitude, longitude) {
125
+ // Similar to sunrise but add the hour angle instead of subtracting
126
+ const jdNoon = (0, astronomicalCalendar_1.gregorianToJulianDay)(date.getFullYear(), date.getMonth() + 1, date.getDate(), 12, 0, 0);
127
+ const solarLongitude = (0, astronomicalCalendar_1.getSolarLongitude)(jdNoon);
128
+ const obliquity = 23.43929111;
129
+ const declinationRad = Math.asin(Math.sin(solarLongitude * Math.PI / 180) *
130
+ Math.sin(obliquity * Math.PI / 180));
131
+ const latRad = latitude * Math.PI / 180;
132
+ const cosH = -Math.tan(latRad) * Math.tan(declinationRad);
133
+ if (cosH > 1) {
134
+ // Polar night
135
+ return new Date(NaN);
136
+ }
137
+ if (cosH < -1) {
138
+ // Polar day
139
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59);
140
+ }
141
+ const hourAngleRad = Math.acos(cosH);
142
+ const hourAngleDeg = hourAngleRad * 180 / Math.PI;
143
+ const solarNoon = 12 - longitude / 15 + date.getTimezoneOffset() / 60;
144
+ const sunsetHour = solarNoon + hourAngleDeg / 15;
145
+ const equationOfTime = this.getEquationOfTime(jdNoon);
146
+ const correctedSunsetHour = sunsetHour - equationOfTime / 60;
147
+ const sunsetDate = new Date(date);
148
+ sunsetDate.setHours(Math.floor(correctedSunsetHour));
149
+ sunsetDate.setMinutes(Math.floor((correctedSunsetHour % 1) * 60));
150
+ sunsetDate.setSeconds(0);
151
+ return sunsetDate;
152
+ }
153
+ /**
154
+ * Determine if a time is during daylight hours
155
+ * @param date - The date/time to check
156
+ * @param latitude - Latitude in degrees
157
+ * @param longitude - Longitude in degrees
158
+ * @returns true if during daylight hours
159
+ */
160
+ static isDaylight(date, latitude, longitude) {
161
+ const sunrise = this.calculateSunrise(date, latitude, longitude);
162
+ const sunset = this.calculateSunset(date, latitude, longitude);
163
+ // Handle polar day/night cases
164
+ if (isNaN(sunrise.getTime()))
165
+ return false; // Polar night
166
+ if (sunrise.getHours() === 0 && sunset.getHours() === 23)
167
+ return true; // Polar day
168
+ return date >= sunrise && date <= sunset;
169
+ }
170
+ /**
171
+ * Get timezone offset for a longitude
172
+ * @param longitude - Longitude in degrees
173
+ * @returns Timezone offset in hours from UTC
174
+ */
175
+ static getTimezoneOffset(longitude) {
176
+ // Theoretical timezone based on longitude
177
+ // Actual timezones may differ due to political boundaries
178
+ return Math.round(longitude / 15);
179
+ }
180
+ /**
181
+ * Calculate the solar position (altitude and azimuth) for a given time and location
182
+ * Useful for advanced BaZi calculations that consider solar position
183
+ */
184
+ static getSolarPosition(date, latitude, longitude) {
185
+ const jd = (0, astronomicalCalendar_1.gregorianToJulianDay)(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
186
+ // Get solar coordinates
187
+ const solarLongitude = (0, astronomicalCalendar_1.getSolarLongitude)(jd);
188
+ const obliquity = 23.43929111;
189
+ // Right ascension and declination
190
+ const alpha = Math.atan2(Math.cos(obliquity * Math.PI / 180) * Math.sin(solarLongitude * Math.PI / 180), Math.cos(solarLongitude * Math.PI / 180));
191
+ const delta = Math.asin(Math.sin(obliquity * Math.PI / 180) * Math.sin(solarLongitude * Math.PI / 180));
192
+ // Local sidereal time
193
+ const T = (jd - 2451545.0) / 36525.0;
194
+ const theta0 = 280.46061837 + 360.98564736629 * (jd - 2451545.0) + T * T * (0.000387933 - T / 38710000);
195
+ const theta = (theta0 + longitude) % 360;
196
+ // Hour angle
197
+ const H = (theta - alpha * 180 / Math.PI) * Math.PI / 180;
198
+ // Convert to horizontal coordinates
199
+ const latRad = latitude * Math.PI / 180;
200
+ const altitude = Math.asin(Math.sin(latRad) * Math.sin(delta) +
201
+ Math.cos(latRad) * Math.cos(delta) * Math.cos(H));
202
+ const azimuth = Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(latRad) - Math.tan(delta) * Math.cos(latRad));
203
+ return {
204
+ altitude: altitude * 180 / Math.PI,
205
+ azimuth: ((azimuth * 180 / Math.PI + 360) % 360)
206
+ };
207
+ }
208
+ }
209
+ exports.TrueSolarTime = TrueSolarTime;
210
+ //# sourceMappingURL=TrueSolarTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrueSolarTime.js","sourceRoot":"","sources":["../../../src/core/bazi/TrueSolarTime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Ephemeris Data for Solar Term Calculations
3
+ * This is a simplified version for demonstration
4
+ * In production, you would need the full astronomical data
5
+ */
6
+ export declare const XL0_xzb: number[];
7
+ export declare const nutB: number[];
8
+ export declare const dt_at: number[];
9
+ export declare const XL0: number[][];
10
+ //# sourceMappingURL=ephemerisData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemerisData.d.ts","sourceRoot":"","sources":["../../../src/core/bazi/ephemerisData.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,eAAO,MAAM,OAAO,UAQnB,CAAC;AAGF,eAAO,MAAM,IAAI,UAWhB,CAAC;AAGF,eAAO,MAAM,KAAK,UAwBjB,CAAC;AAIF,eAAO,MAAM,GAAG,YA2Bf,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ /**
3
+ * Ephemeris Data for Solar Term Calculations
4
+ * This is a simplified version for demonstration
5
+ * In production, you would need the full astronomical data
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.XL0 = exports.dt_at = exports.nutB = exports.XL0_xzb = void 0;
9
+ // Planetary ephemeris correction table
10
+ exports.XL0_xzb = [
11
+ -0.08631, +0.00039, -0.00008, // Mercury
12
+ -0.07447, +0.00006, +0.00017, // Venus
13
+ -0.07135, -0.00026, -0.00176, // Mars
14
+ -0.20239, +0.00273, -0.00347, // Jupiter
15
+ -0.25486, +0.00276, +0.42926, // Saturn
16
+ +0.24588, +0.00345, -14.46266, // Uranus
17
+ -0.95116, +0.02481, +58.30651 // Neptune
18
+ ];
19
+ // Medium precision nutation calculation table
20
+ exports.nutB = [
21
+ 2.1824, -33.75705, 36e-6, -1720, 920,
22
+ 3.5069, 1256.66393, 11e-6, -132, 57,
23
+ 1.3375, 16799.4182, -51e-6, -23, 10,
24
+ 4.3649, -67.5141, 72e-6, 21, -9,
25
+ 0.04, -628.302, 0, -14, 0,
26
+ 2.36, 8328.691, 0, 7, 0,
27
+ 3.46, 1884.966, 0, -5, 2,
28
+ 5.44, 16833.175, 0, -4, 2,
29
+ 3.69, 25128.110, 0, -3, 0,
30
+ 3.55, 628.362, 0, 2, 0
31
+ ];
32
+ // TD - UT1 calculation table
33
+ exports.dt_at = [
34
+ -4000, 108371.7, -13036.80, 392.000, 0.0000,
35
+ -500, 17201.0, -627.82, 16.170, -0.3413,
36
+ -150, 12200.6, -346.41, 5.403, -0.1593,
37
+ 150, 9113.8, -328.13, -1.647, 0.0377,
38
+ 500, 5707.5, -391.41, 0.915, 0.3145,
39
+ 900, 2203.4, -283.45, 13.034, -0.1778,
40
+ 1300, 490.1, -57.35, 2.085, -0.0072,
41
+ 1600, 120.0, -9.81, -1.532, 0.1403,
42
+ 1700, 10.2, -0.91, 0.510, -0.0370,
43
+ 1800, 13.4, -0.72, 0.202, -0.0193,
44
+ 1830, 7.8, -1.81, 0.416, -0.0247,
45
+ 1860, 8.3, -0.13, -0.406, 0.0292,
46
+ 1880, -5.4, 0.32, -0.183, 0.0173,
47
+ 1900, -2.3, 2.06, 0.169, -0.0135,
48
+ 1920, 21.2, 1.69, -0.304, 0.0167,
49
+ 1940, 24.2, 1.22, -0.064, 0.0031,
50
+ 1960, 33.2, 0.51, 0.231, -0.0109,
51
+ 1980, 51.0, 1.29, -0.026, 0.0032,
52
+ 2000, 63.87, 0.1, 0, 0,
53
+ 2005, 64.7, 0.21, 0, 0,
54
+ 2012, 66.8, 0.22, 0, 0,
55
+ 2018, 69.0, 0.36, 0, 0,
56
+ 2028, 72.6
57
+ ];
58
+ // Simplified XL0 data structure
59
+ // In production, this would be a much larger array with astronomical data
60
+ exports.XL0 = [
61
+ [
62
+ 10000000000, // A multiplier
63
+ 20, 578, 920, 1100, 1124, 1136, 1148, 1217, 1226, 1229, 1229, 1229, 1229, 1937, 2363, 2618, 2633, 2660, 2666,
64
+ // Position index table
65
+ /* L0 - Simplified data for demonstration */
66
+ 17534704567, 0.00000000000, 0.00000000000,
67
+ 334165646, 4.669256804, 6283.075849991,
68
+ 3489428, 4.6261024, 12566.1517000,
69
+ 349706, 2.744118, 5753.384885,
70
+ 341757, 2.828866, 3.523118,
71
+ 313590, 3.627670, 77713.771468,
72
+ 267622, 4.418084, 7860.419392,
73
+ 234269, 6.135162, 3930.209696,
74
+ 132429, 0.742464, 11506.769770,
75
+ 127317, 2.037097, 529.690965,
76
+ 119917, 1.109629, 1577.343542,
77
+ 99025, 5.23268, 5884.92685,
78
+ 90186, 2.04505, 26.29832,
79
+ 85722, 3.50849, 398.14900,
80
+ 77979, 1.17883, 5223.69392,
81
+ 75314, 2.53339, 5507.55324,
82
+ 50526, 4.58293, 18849.22755,
83
+ 49238, 4.20507, 775.52261,
84
+ 35666, 2.91954, 0.06731,
85
+ 31709, 5.84902, 11790.62909
86
+ ]
87
+ ];
88
+ //# sourceMappingURL=ephemerisData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemerisData.js","sourceRoot":"","sources":["../../../src/core/bazi/ephemerisData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Core BaZi Calculation Exports
3
+ * Central exports for all core BaZi calculation modules
4
+ */
5
+ export * from './types';
6
+ export { BaziCore } from './BaziCore';
7
+ export { TrueSolarTime } from './TrueSolarTime';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/bazi/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Core BaZi Calculation Exports
4
+ * Central exports for all core BaZi calculation modules
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.TrueSolarTime = exports.BaziCore = void 0;
22
+ // Export all types
23
+ __exportStar(require("./types"), exports);
24
+ // Core calculator class
25
+ var BaziCore_1 = require("./BaziCore");
26
+ Object.defineProperty(exports, "BaziCore", { enumerable: true, get: function () { return BaziCore_1.BaziCore; } });
27
+ // Solar time calculations
28
+ var TrueSolarTime_1 = require("./TrueSolarTime");
29
+ Object.defineProperty(exports, "TrueSolarTime", { enumerable: true, get: function () { return TrueSolarTime_1.TrueSolarTime; } });
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/bazi/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,mBAAmB;AACnB,0CAAwB;AAExB,wBAAwB;AACxB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB,0BAA0B;AAC1B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Core BaZi Types
3
+ * Domain models for BaZi calculations - language agnostic
4
+ */
5
+ export interface Pillar {
6
+ stem: string;
7
+ branch: string;
8
+ hiddenStems?: HiddenStem[];
9
+ naYin?: string;
10
+ selfSitting?: string;
11
+ void?: boolean;
12
+ voidBranches?: string[];
13
+ }
14
+ export interface HiddenStem {
15
+ stem: string;
16
+ power: number;
17
+ isMain: boolean;
18
+ }
19
+ export interface BaziChart {
20
+ year: Pillar;
21
+ month: Pillar;
22
+ day: Pillar;
23
+ hour: Pillar;
24
+ }
25
+ export interface FiveElementsAnalysis {
26
+ 木: number;
27
+ 火: number;
28
+ 土: number;
29
+ 金: number;
30
+ 水: number;
31
+ total: number;
32
+ balance: ElementBalance;
33
+ }
34
+ export interface ElementBalance {
35
+ strongest: string;
36
+ weakest: string;
37
+ missing: string[];
38
+ percentage?: Record<string, number>;
39
+ distribution?: '平衡' | '失衡' | '严重失衡';
40
+ }
41
+ export interface TwelveGrowthStage {
42
+ stage: string;
43
+ element: string;
44
+ branch: string;
45
+ meaning: string;
46
+ strength: number;
47
+ power?: number;
48
+ state?: string;
49
+ }
50
+ export interface NaYinInfo {
51
+ name: string;
52
+ element: string;
53
+ meaning: string;
54
+ }
55
+ export interface LunarDate {
56
+ year: number;
57
+ month: number;
58
+ day: number;
59
+ hour: number;
60
+ isLeapMonth: boolean;
61
+ monthName?: string;
62
+ dayName?: string;
63
+ }
64
+ export interface BaziCoreInput {
65
+ year: number;
66
+ month: number;
67
+ day: number;
68
+ hour: number;
69
+ minute?: number;
70
+ gender?: 'male' | 'female';
71
+ isLunar?: boolean;
72
+ timezone?: string;
73
+ longitude?: number;
74
+ }
75
+ export interface BaziCoreResult {
76
+ chart: BaziChart;
77
+ birthInfo: {
78
+ solar: Date;
79
+ lunar: LunarDate;
80
+ trueSolarTime?: Date;
81
+ solarTerm?: string;
82
+ adjacentSolarTermTime?: {
83
+ previous: string;
84
+ next: string;
85
+ };
86
+ };
87
+ zodiac: string;
88
+ dayMasterElement: string;
89
+ naYin: NaYinInfo;
90
+ fiveElements: FiveElementsAnalysis;
91
+ voidBranches?: string[];
92
+ twelveGrowthStages?: TwelveGrowthStage[];
93
+ }
94
+ export interface ElementStrength {
95
+ element: string;
96
+ state: string;
97
+ count: number;
98
+ percentage: number;
99
+ stemSupport: number;
100
+ branchSupport: number;
101
+ strength: number;
102
+ totalScore: number;
103
+ }
104
+ export interface ElementBalanceAnalysis {
105
+ supportingElements: string[];
106
+ suppressingElements: string[];
107
+ dominantElement: string;
108
+ weakestElement: string;
109
+ balanced: boolean;
110
+ balance: '平衡' | '失衡' | '高度失衡';
111
+ analysis: string;
112
+ dominant?: string;
113
+ lacking?: string;
114
+ suggestions: string[];
115
+ }
116
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/bazi/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,oBAAoB;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;CACrC;AAGD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE;QACT,KAAK,EAAE,IAAI,CAAC;QACZ,KAAK,EAAE,SAAS,CAAC;QACjB,aAAa,CAAC,EAAE,IAAI,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,qBAAqB,CAAC,EAAE;YACtB,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,EAAE,oBAAoB,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC1C;AAGD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Core BaZi Types
4
+ * Domain models for BaZi calculations - language agnostic
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/bazi/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * 節氣計算器
3
+ * 用於確定日期所屬的節氣月份
4
+ */
5
+ export interface SolarTermInfo {
6
+ termIndex: number;
7
+ termName: string;
8
+ termDate: Date;
9
+ nextTerm: string;
10
+ nextTermDate: Date;
11
+ }
12
+ export declare class SolarTermsCalculator {
13
+ private static readonly SOLAR_TERMS;
14
+ private static readonly BASE_MINUTES_2000;
15
+ /**
16
+ * 獲取指定日期所屬的節氣月份
17
+ */
18
+ static getSolarTermMonth(year: number, month: number, day: number): SolarTermInfo;
19
+ /**
20
+ * 計算指定年份的所有節氣日期
21
+ * 使用簡化算法,實際應用中應該使用更精確的天文算法
22
+ */
23
+ private static calculateYearSolarTerms;
24
+ /**
25
+ * 判斷某個日期是否是節氣日
26
+ */
27
+ static isSolarTermDay(year: number, month: number, day: number): boolean;
28
+ /**
29
+ * 獲取節氣名稱
30
+ */
31
+ static getSolarTermName(index: number): string;
32
+ }
33
+ //# sourceMappingURL=SolarTermsCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolarTermsCalculator.d.ts","sourceRoot":"","sources":["../../../src/core/calendar/SolarTermsCalculator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,IAAI,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAE/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAKjC;IAIF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAKvC;IAEF;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa;IAiCjF;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IA2CtC;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAUxE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAG/C"}