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,46 @@
1
+ /**
2
+ * Solar Term Calculator
3
+ * Based on astronomical calculations from taro-bazi
4
+ * Provides accurate solar term timing for BaZi calculations
5
+ */
6
+ export declare const SOLAR_TERMS: string[];
7
+ export declare const SOLAR_TERM_TO_ZHI: {
8
+ [key: string]: string;
9
+ };
10
+ export declare const SOLAR_TERM_TO_MONTH: {
11
+ [key: string]: number;
12
+ };
13
+ /**
14
+ * Julian Day calculation
15
+ */
16
+ export declare function JD(y: number, m: number, d: number): number;
17
+ /**
18
+ * Julian Day to Date
19
+ */
20
+ export declare function DD(jd: number): any;
21
+ export interface SolarTermInfo {
22
+ [solarTerm: string]: string;
23
+ }
24
+ /**
25
+ * Calculate solar terms for a given year and month
26
+ */
27
+ export declare function getSolarTermInfo(year: number, month: number): SolarTermInfo;
28
+ /**
29
+ * Calculate current solar term for a given date/time
30
+ */
31
+ export declare function calculateSolarTerm(dateTimeStr: string, solarTermInfo: SolarTermInfo): {
32
+ solarTerm: string;
33
+ isCurrentMonthSolarTerm: boolean;
34
+ };
35
+ /**
36
+ * Get adjacent solar term times
37
+ */
38
+ export declare function getAdjacentSolarTermTime(solarTermInfo: SolarTermInfo, solarTerm: string): {
39
+ previous: string;
40
+ next: string;
41
+ };
42
+ /**
43
+ * Calculate True Solar Time
44
+ */
45
+ export declare function getTrueSolarTime(year: number, month: number, day: number, timeStr: string, longitude: number): string;
46
+ //# sourceMappingURL=SolarTermCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolarTermCalculator.d.ts","sourceRoot":"","sources":["../../../src/core/bazi/SolarTermCalculator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,eAAO,MAAM,WAAW,UAKvB,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAStD,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAaxD,CAAC;AAmKF;;GAEG;AACH,wBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAY1D;AAED;;GAEG;AACH,wBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,CA+BlC;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CA+D3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,OAAO,CAAC;CAClC,CA+BA;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG;IACzF,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAiBA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMrH"}
@@ -0,0 +1,452 @@
1
+ "use strict";
2
+ /**
3
+ * Solar Term Calculator
4
+ * Based on astronomical calculations from taro-bazi
5
+ * Provides accurate solar term timing for BaZi calculations
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.SOLAR_TERM_TO_MONTH = exports.SOLAR_TERM_TO_ZHI = exports.SOLAR_TERMS = void 0;
9
+ exports.JD = JD;
10
+ exports.DD = DD;
11
+ exports.getSolarTermInfo = getSolarTermInfo;
12
+ exports.calculateSolarTerm = calculateSolarTerm;
13
+ exports.getAdjacentSolarTermTime = getAdjacentSolarTermTime;
14
+ exports.getTrueSolarTime = getTrueSolarTime;
15
+ const ephemerisData_1 = require("./ephemerisData");
16
+ const rad = (180 * 3600) / Math.PI;
17
+ const pi2 = Math.PI * 2;
18
+ const J2000 = 2451545;
19
+ const radd = 180 / Math.PI;
20
+ // Solar terms in order
21
+ exports.SOLAR_TERMS = [
22
+ '冬至', '小寒', '大寒', '立春', '雨水', '惊蛰',
23
+ '春分', '清明', '谷雨', '立夏', '小满', '芒种',
24
+ '夏至', '小暑', '大暑', '立秋', '处暑', '白露',
25
+ '秋分', '寒露', '霜降', '立冬', '小雪', '大雪'
26
+ ];
27
+ // Solar term to month zhi mapping
28
+ // Note: Only Jie (节) solar terms determine month boundaries
29
+ exports.SOLAR_TERM_TO_ZHI = {
30
+ // Jie (month-starting) solar terms
31
+ '立春': '寅', '惊蛰': '卯', '清明': '辰', '立夏': '巳',
32
+ '芒种': '午', '小暑': '未', '立秋': '申', '白露': '酉',
33
+ '寒露': '戌', '立冬': '亥', '大雪': '子', '小寒': '丑',
34
+ // Qi (mid-month) solar terms - included for compatibility
35
+ '雨水': '寅', '春分': '卯', '谷雨': '辰', '小满': '巳',
36
+ '夏至': '午', '大暑': '未', '处暑': '申', '秋分': '酉',
37
+ '霜降': '戌', '小雪': '亥', '冬至': '子', '大寒': '丑'
38
+ };
39
+ // Solar term to gregorian month mapping
40
+ exports.SOLAR_TERM_TO_MONTH = {
41
+ '立春': 2, '雨水': 2,
42
+ '惊蛰': 3, '春分': 3,
43
+ '清明': 4, '谷雨': 4,
44
+ '立夏': 5, '小满': 5,
45
+ '芒种': 6, '夏至': 6,
46
+ '小暑': 7, '大暑': 7,
47
+ '立秋': 8, '处暑': 8,
48
+ '白露': 9, '秋分': 9,
49
+ '寒露': 10, '霜降': 10,
50
+ '立冬': 11, '小雪': 11,
51
+ '大雪': 12, '冬至': 12,
52
+ '小寒': 1, '大寒': 1
53
+ };
54
+ /**
55
+ * Convert Julian Day to time string
56
+ */
57
+ function jdToTimeStr(jd) {
58
+ let h, m, s;
59
+ jd += 0.5;
60
+ jd = jd - Math.floor(jd);
61
+ s = Math.floor(jd * 86400 + 0.5);
62
+ h = Math.floor(s / 3600);
63
+ s -= h * 3600;
64
+ m = Math.floor(s / 60);
65
+ s -= m * 60;
66
+ h = '0' + h;
67
+ m = '0' + m;
68
+ s = '0' + s;
69
+ return h.substr(h.length - 2, 2) + ':' + m.substr(m.length - 2, 2) + ':' + s.substr(s.length - 2, 2);
70
+ }
71
+ /**
72
+ * Calculate accurate solar term time
73
+ */
74
+ function qiAccurate(W) {
75
+ const t = S_aLon_t(W) * 36525;
76
+ return t - dt_T(t) + 8 / 24;
77
+ }
78
+ /**
79
+ * Calculate time from solar longitude
80
+ */
81
+ function S_aLon_t(W) {
82
+ let t, v = 628.3319653318;
83
+ t = (W - 1.75347 - Math.PI) / v;
84
+ v = E_v(t);
85
+ t += (W - S_aLon(t, 10)) / v;
86
+ v = E_v(t);
87
+ t += (W - S_aLon(t, -1)) / v;
88
+ return t;
89
+ }
90
+ /**
91
+ * Earth velocity
92
+ */
93
+ function E_v(t) {
94
+ const f = 628.307585 * t;
95
+ return 628.332 + 21 * Math.sin(1.527 + f) + 0.44 * Math.sin(1.48 + f * 2) +
96
+ 0.129 * Math.sin(5.82 + f) * t + 0.00055 * Math.sin(4.21 + f) * t * t;
97
+ }
98
+ /**
99
+ * Solar apparent longitude
100
+ */
101
+ function S_aLon(t, n) {
102
+ return E_Lon(t, n) + nutationLon2(t) + gxc_sunLon(t) + Math.PI;
103
+ }
104
+ /**
105
+ * Earth longitude
106
+ */
107
+ function E_Lon(t, n) {
108
+ return XL0_calc(0, 0, t, n);
109
+ }
110
+ /**
111
+ * Ephemeris calculation
112
+ */
113
+ function XL0_calc(xt, zn, t, n) {
114
+ t /= 10;
115
+ let i, j, v = 0, tn = 1, c;
116
+ const F = ephemerisData_1.XL0[xt];
117
+ let n1, n2, N;
118
+ const pn = zn * 6 + 1;
119
+ const N0 = F[pn + 1] - F[pn];
120
+ let n0;
121
+ for (i = 0; i < 6; i++, tn *= t) {
122
+ n1 = F[pn + i];
123
+ n2 = F[pn + 1 + i];
124
+ n0 = n2 - n1;
125
+ if (!n0)
126
+ continue;
127
+ if (n < 0)
128
+ N = n2;
129
+ else {
130
+ N = Math.floor((3 * n * n0) / N0 + 0.5) + n1;
131
+ if (i)
132
+ N += 3;
133
+ if (N > n2)
134
+ N = n2;
135
+ }
136
+ for (j = n1, c = 0; j < N; j += 3)
137
+ c += F[j] * Math.cos(F[j + 1] + t * F[j + 2]);
138
+ v += c * tn;
139
+ }
140
+ v /= F[0];
141
+ if (xt == 0) {
142
+ const t2 = t * t;
143
+ const t3 = t2 * t;
144
+ if (zn == 0)
145
+ v += (-0.0728 - 2.7702 * t - 1.1019 * t2 - 0.0996 * t3) / rad;
146
+ if (zn == 1)
147
+ v += (+0.0 + 0.0004 * t + 0.0004 * t2 - 0.0026 * t3) / rad;
148
+ if (zn == 2)
149
+ v += (-0.002 + 0.0044 * t + 0.0213 * t2 - 0.025 * t3) / 1000000;
150
+ }
151
+ else {
152
+ const dv = ephemerisData_1.XL0_xzb[(xt - 1) * 3 + zn];
153
+ if (zn == 0)
154
+ v += (-3 * t) / rad;
155
+ if (zn == 2)
156
+ v += dv / 1000000;
157
+ else
158
+ v += dv / rad;
159
+ }
160
+ return v;
161
+ }
162
+ /**
163
+ * Nutation in longitude
164
+ */
165
+ function nutationLon2(t) {
166
+ let i, a, dL = 0;
167
+ const t2 = t * t;
168
+ const B = ephemerisData_1.nutB;
169
+ for (i = 0; i < B.length; i += 5) {
170
+ if (i == 0)
171
+ a = -1.742 * t;
172
+ else
173
+ a = 0;
174
+ dL += (B[i + 3] + a) * Math.sin(B[i] + B[i + 1] * t + B[i + 2] * t2);
175
+ }
176
+ return dL / 100 / rad;
177
+ }
178
+ /**
179
+ * Solar aberration
180
+ */
181
+ function gxc_sunLon(t) {
182
+ const v = -0.043126 + 628.301955 * t - 0.000002732 * t * t;
183
+ const e = 0.016708634 - 0.000042037 * t - 0.0000001267 * t * t;
184
+ return (-20.49552 * (1 + e * Math.cos(v))) / rad;
185
+ }
186
+ /**
187
+ * Delta T calculation
188
+ */
189
+ function dt_T(t) {
190
+ return dt_calc(t / 365.2425 + 2000) / 86400.0;
191
+ }
192
+ function dt_calc(y) {
193
+ const y0 = ephemerisData_1.dt_at[ephemerisData_1.dt_at.length - 2];
194
+ const t0 = ephemerisData_1.dt_at[ephemerisData_1.dt_at.length - 1];
195
+ if (y >= y0) {
196
+ const jsd = 31;
197
+ if (y > y0 + 100)
198
+ return dt_ext(y, jsd);
199
+ const v = dt_ext(y, jsd);
200
+ const dv = dt_ext(y0, jsd) - t0;
201
+ return v - (dv * (y0 + 100 - y)) / 100;
202
+ }
203
+ let i;
204
+ const d = ephemerisData_1.dt_at;
205
+ for (i = 0; i < d.length; i += 5)
206
+ if (y < d[i + 5])
207
+ break;
208
+ const t1 = ((y - d[i]) / (d[i + 5] - d[i])) * 10;
209
+ const t2 = t1 * t1;
210
+ const t3 = t2 * t1;
211
+ return d[i + 1] + d[i + 2] * t1 + d[i + 3] * t2 + d[i + 4] * t3;
212
+ }
213
+ function dt_ext(y, jsd) {
214
+ const dy = (y - 1820) / 100;
215
+ return -20 + jsd * dy * dy;
216
+ }
217
+ /**
218
+ * Julian Day calculation
219
+ */
220
+ function JD(y, m, d) {
221
+ let n = 0, G = 0;
222
+ if (y * 372 + m * 31 + Math.floor(d) >= 588829)
223
+ G = 1;
224
+ if (m <= 2) {
225
+ m += 12;
226
+ y--;
227
+ }
228
+ if (G) {
229
+ n = Math.floor(y / 100);
230
+ n = 2 - n + Math.floor(n / 4);
231
+ }
232
+ return Math.floor(365.25 * (y + 4716)) + Math.floor(30.6001 * (m + 1)) + d + n - 1524.5;
233
+ }
234
+ /**
235
+ * Julian Day to Date
236
+ */
237
+ function DD(jd) {
238
+ const r = {};
239
+ let D = Math.floor(jd + 0.5);
240
+ let F = jd + 0.5 - D;
241
+ let c;
242
+ if (D >= 2299161) {
243
+ c = Math.floor((D - 1867216.25) / 36524.25);
244
+ D += 1 + c - Math.floor(c / 4);
245
+ }
246
+ D += 1524;
247
+ r.Y = Math.floor((D - 122.1) / 365.25);
248
+ D -= Math.floor(365.25 * r.Y);
249
+ r.M = Math.floor(D / 30.601);
250
+ D -= Math.floor(30.601 * r.M);
251
+ r.D = D;
252
+ if (r.M > 13) {
253
+ r.M -= 13;
254
+ r.Y -= 4715;
255
+ }
256
+ else {
257
+ r.M -= 1;
258
+ r.Y -= 4716;
259
+ }
260
+ F *= 24;
261
+ r.h = Math.floor(F);
262
+ F -= r.h;
263
+ F *= 60;
264
+ r.m = Math.floor(F);
265
+ F -= r.m;
266
+ F *= 60;
267
+ r.s = F;
268
+ return r;
269
+ }
270
+ /**
271
+ * Calculate solar terms for a given year and month
272
+ */
273
+ function getSolarTermInfo(year, month) {
274
+ let w, d, D, xn;
275
+ const obj = {};
276
+ const jd = {
277
+ Y: year,
278
+ M: month,
279
+ D: 1,
280
+ h: 12,
281
+ m: 0,
282
+ s: 0.1
283
+ };
284
+ const Bd0 = Math.floor(JD(jd.Y, jd.M, jd.D + (jd.s / 60 + jd.m) / 60 + jd.h / 24)) - J2000;
285
+ jd.M++;
286
+ if (jd.M > 12) {
287
+ jd.Y++;
288
+ jd.M = 1;
289
+ }
290
+ const Bdn = Math.floor(JD(jd.Y, jd.M, jd.D + (jd.s / 60 + jd.m) / 60 + jd.h / 24)) - J2000 - Bd0;
291
+ const jd2 = Bd0 + dt_T(Bd0) - 8 / 24;
292
+ const lun = [];
293
+ for (let i = 0; i < Bdn; i++) {
294
+ const d0 = Bd0 + i;
295
+ const r = DD(d0 + J2000);
296
+ lun.push(r);
297
+ }
298
+ // Debug: Ensure lun array is properly populated
299
+ if (lun.length === 0) {
300
+ // Fill with default values if empty
301
+ for (let i = 1; i <= 31; i++) {
302
+ lun.push({ D: i });
303
+ }
304
+ }
305
+ w = S_aLon(jd2 / 36525, 3);
306
+ w = (Math.floor(((w - 0.13) / pi2) * 24) * pi2) / 24;
307
+ do {
308
+ d = qiAccurate(w);
309
+ D = Math.floor(d + 0.5);
310
+ xn = Math.floor((w / pi2) * 24 + 24000006.01) % 24;
311
+ w += pi2 / 24;
312
+ if (D >= Bd0 + Bdn)
313
+ break;
314
+ if (D < Bd0)
315
+ continue;
316
+ const solarTerm = exports.SOLAR_TERMS[xn];
317
+ const index = D - Bd0;
318
+ // Ensure we have a valid object at the index
319
+ let ob = lun[index];
320
+ if (!ob || !ob.D) {
321
+ // Fallback: calculate day from Julian day
322
+ const fallbackDate = DD(D + J2000);
323
+ ob = fallbackDate || { D: 1 };
324
+ }
325
+ const time = jdToTimeStr(d);
326
+ obj[solarTerm] = `${year}-${month}-${ob.D} ${time}`;
327
+ } while (D + 12 < Bd0 + Bdn);
328
+ return obj;
329
+ }
330
+ /**
331
+ * Calculate current solar term for a given date/time
332
+ */
333
+ function calculateSolarTerm(dateTimeStr, solarTermInfo) {
334
+ const currentDay = new Date(dateTimeStr.replace(/未知/g, '00'));
335
+ const solarTermArray = Object.keys(solarTermInfo);
336
+ // Handle case with 3 solar terms in month
337
+ if (solarTermArray.length === 3) {
338
+ if (currentDay > new Date(solarTermInfo[solarTermArray[2]])) {
339
+ return {
340
+ solarTerm: solarTermArray[2],
341
+ isCurrentMonthSolarTerm: true
342
+ };
343
+ }
344
+ }
345
+ if (currentDay > new Date(solarTermInfo[solarTermArray[1]])) {
346
+ return {
347
+ solarTerm: solarTermArray[1],
348
+ isCurrentMonthSolarTerm: true
349
+ };
350
+ }
351
+ else if (currentDay > new Date(solarTermInfo[solarTermArray[0]])) {
352
+ return {
353
+ solarTerm: solarTermArray[0],
354
+ isCurrentMonthSolarTerm: true
355
+ };
356
+ }
357
+ else {
358
+ const index = exports.SOLAR_TERMS.findIndex(item => item === solarTermArray[0]);
359
+ return {
360
+ solarTerm: exports.SOLAR_TERMS[(index - 1 + 24) % 24],
361
+ isCurrentMonthSolarTerm: false
362
+ };
363
+ }
364
+ }
365
+ /**
366
+ * Get adjacent solar term times
367
+ */
368
+ function getAdjacentSolarTermTime(solarTermInfo, solarTerm) {
369
+ const index = exports.SOLAR_TERMS.findIndex(item => item === solarTerm);
370
+ // Current is Qi (even index)
371
+ if (index % 2 === 0) {
372
+ return {
373
+ previous: solarTermInfo[exports.SOLAR_TERMS[(index - 1 + 24) % 24]] || '',
374
+ next: solarTermInfo[exports.SOLAR_TERMS[(index + 1) % 24]] || ''
375
+ };
376
+ }
377
+ // Current is Jie (odd index)
378
+ else {
379
+ return {
380
+ previous: solarTermInfo[solarTerm] || '',
381
+ next: solarTermInfo[exports.SOLAR_TERMS[(index + 2) % 24]] || ''
382
+ };
383
+ }
384
+ }
385
+ /**
386
+ * Calculate True Solar Time
387
+ */
388
+ function getTrueSolarTime(year, month, day, timeStr, longitude) {
389
+ const curTZ = -8; // China timezone
390
+ const t = timeStr2hour(timeStr);
391
+ const jd = JD(year, month, day + t / 24);
392
+ const bz_zty = mingLiBaZi(jd + curTZ / 24 - J2000, longitude / radd);
393
+ return bz_zty;
394
+ }
395
+ function timeStr2hour(s) {
396
+ let a, b, c;
397
+ s = String(s).replace(/[^0-9:\.]/g, '');
398
+ const parts = s.split(':');
399
+ if (parts.length == 1) {
400
+ a = parseInt(s.substr(0, 2)) || 0;
401
+ b = parseInt(s.substr(2, 2)) || 0;
402
+ c = parseInt(s.substr(4, 2)) || 0;
403
+ }
404
+ else if (parts.length == 2) {
405
+ a = parseInt(parts[0]) || 0;
406
+ b = parseInt(parts[1]) || 0;
407
+ c = 0;
408
+ }
409
+ else {
410
+ a = parseInt(parts[0]) || 0;
411
+ b = parseInt(parts[1]) || 0;
412
+ c = parseInt(parts[2]) || 0;
413
+ }
414
+ return a + b / 60 + c / 3600;
415
+ }
416
+ function mingLiBaZi(jd, J) {
417
+ const jd2 = jd + dt_T(jd);
418
+ const adjustedJd = jd + pty_zty2(jd2 / 36525) + J / Math.PI / 2;
419
+ return jdToTimeStr(adjustedJd);
420
+ }
421
+ function pty_zty2(t) {
422
+ const L = (1753470142 + 628331965331.8 * t + 5296.74 * t * t) / 1000000000 + Math.PI;
423
+ let z = [XL0_calc(0, 0, t, 5) + Math.PI, 0];
424
+ const E = (84381.4088 - 46.836051 * t) / rad;
425
+ z = llrConv(z, E);
426
+ const adjustedL = rad2rrad(L - z[0]);
427
+ return adjustedL / pi2;
428
+ }
429
+ function llrConv(JW, E) {
430
+ const r = [];
431
+ const J = JW[0], W = JW[1];
432
+ r[0] = Math.atan2(Math.sin(J) * Math.cos(E) - Math.tan(W) * Math.sin(E), Math.cos(J));
433
+ r[1] = Math.asin(Math.cos(E) * Math.sin(W) + Math.sin(E) * Math.cos(W) * Math.sin(J));
434
+ r[2] = JW[2];
435
+ r[0] = rad2mrad(r[0]);
436
+ return r;
437
+ }
438
+ function rad2mrad(v) {
439
+ v = v % (2 * Math.PI);
440
+ if (v < 0)
441
+ return v + 2 * Math.PI;
442
+ return v;
443
+ }
444
+ function rad2rrad(v) {
445
+ v = v % (2 * Math.PI);
446
+ if (v <= -Math.PI)
447
+ return v + 2 * Math.PI;
448
+ if (v > Math.PI)
449
+ return v - 2 * Math.PI;
450
+ return v;
451
+ }
452
+ //# sourceMappingURL=SolarTermCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolarTermCalculator.js","sourceRoot":"","sources":["../../../src/core/bazi/SolarTermCalculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * True Solar Time Calculator
3
+ * Enhanced with high-precision astronomical calculations from taro-bazi
4
+ * Implements algorithms from 寿星万年历 (Longevity Star Calendar)
5
+ */
6
+ export declare class TrueSolarTime {
7
+ /**
8
+ * Adjust clock time to true solar time with astronomical precision
9
+ * @param date - The clock time
10
+ * @param longitude - The longitude in degrees (positive for East, negative for West)
11
+ * @returns Adjusted date/time
12
+ */
13
+ static adjust(date: Date, longitude: number): Date;
14
+ /**
15
+ * Calculate the equation of time with high precision
16
+ * This accounts for the Earth's elliptical orbit and axial tilt
17
+ * @param jd - Julian Day number
18
+ * @returns Correction in minutes
19
+ */
20
+ private static getEquationOfTime;
21
+ /**
22
+ * Get the day of year (1-365/366)
23
+ */
24
+ private static getDayOfYear;
25
+ /**
26
+ * Calculate sunrise time with astronomical precision
27
+ * @param date - The date
28
+ * @param latitude - Latitude in degrees (positive for North)
29
+ * @param longitude - Longitude in degrees (positive for East)
30
+ * @returns Sunrise time
31
+ */
32
+ static calculateSunrise(date: Date, latitude: number, longitude: number): Date;
33
+ /**
34
+ * Calculate sunset time with astronomical precision
35
+ * @param date - The date
36
+ * @param latitude - Latitude in degrees
37
+ * @param longitude - Longitude in degrees
38
+ * @returns Sunset time
39
+ */
40
+ static calculateSunset(date: Date, latitude: number, longitude: number): Date;
41
+ /**
42
+ * Determine if a time is during daylight hours
43
+ * @param date - The date/time to check
44
+ * @param latitude - Latitude in degrees
45
+ * @param longitude - Longitude in degrees
46
+ * @returns true if during daylight hours
47
+ */
48
+ static isDaylight(date: Date, latitude: number, longitude: number): boolean;
49
+ /**
50
+ * Get timezone offset for a longitude
51
+ * @param longitude - Longitude in degrees
52
+ * @returns Timezone offset in hours from UTC
53
+ */
54
+ static getTimezoneOffset(longitude: number): number;
55
+ /**
56
+ * Calculate the solar position (altitude and azimuth) for a given time and location
57
+ * Useful for advanced BaZi calculations that consider solar position
58
+ */
59
+ static getSolarPosition(date: Date, latitude: number, longitude: number): {
60
+ altitude: number;
61
+ azimuth: number;
62
+ };
63
+ }
64
+ //# sourceMappingURL=TrueSolarTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrueSolarTime.d.ts","sourceRoot":"","sources":["../../../src/core/bazi/TrueSolarTime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,qBAAa,aAAa;IACxB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA8BlD;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkChC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAO3B;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAsD9E;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA6C7E;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAW3E;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAMnD;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;QACxE,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB;CAgDF"}