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,66 @@
1
+ import { Stem, Branch, FiveElement, LiuRiInfo } from '../types';
2
+ /**
3
+ * Calculator for Liu Ri (流日) - Daily Fortune Cycles
4
+ * Provides day-by-day analysis within a Liu Yue month
5
+ */
6
+ export declare class LiuRiCalculator {
7
+ private luckCalculator;
8
+ constructor();
9
+ /**
10
+ * Calculate all Liu Ri for a specific month (based on solar terms)
11
+ */
12
+ calculateLiuRi(monthStem: Stem, monthBranch: Branch, yearStem: Stem, yearBranch: Branch, dayMasterElement: FiveElement, yongShen: FiveElement[], year: number, month: number): LiuRiInfo[];
13
+ /**
14
+ * Calculate day stem and branch for a given date
15
+ */
16
+ private calculateDayStemBranch;
17
+ /**
18
+ * Analyze day fortune
19
+ */
20
+ private analyzeDay;
21
+ /**
22
+ * Calculate hourly fortunes for a day
23
+ */
24
+ private calculateHourlyFortunes;
25
+ /**
26
+ * Calculate the stem for the first hour based on day stem
27
+ */
28
+ private calculateFirstHourStem;
29
+ /**
30
+ * Calculate lucky hours for the day
31
+ */
32
+ private calculateLuckyHours;
33
+ /**
34
+ * Get activity recommendations based on element and rating
35
+ */
36
+ private getActivityRecommendations;
37
+ /**
38
+ * Get hour activity recommendation
39
+ */
40
+ private getHourActivity;
41
+ /**
42
+ * Check if three branches form a harmony
43
+ */
44
+ private isTripleHarmony;
45
+ /**
46
+ * Check if two branches clash
47
+ */
48
+ private isClash;
49
+ /**
50
+ * Check if two branches are in harmony
51
+ */
52
+ private isHarmony;
53
+ /**
54
+ * Get energy level description
55
+ */
56
+ private getEnergyLevel;
57
+ /**
58
+ * Get mood indicator
59
+ */
60
+ private getMoodIndicator;
61
+ /**
62
+ * Get fortune description based on rating
63
+ */
64
+ private getFortuneDescription;
65
+ }
66
+ //# sourceMappingURL=LiuRiCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiuRiCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuRiCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,MAAM,EACN,WAAW,EACX,SAAS,EAEV,MAAM,UAAU,CAAC;AAsBlB;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAsB;;IAM5C;;OAEG;IACH,cAAc,CACZ,SAAS,EAAE,IAAI,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,WAAW,EAC7B,QAAQ,EAAE,WAAW,EAAE,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,SAAS,EAAE;IAsKd;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,UAAU;IA6HlB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgD/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAsClC;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,OAAO;IAYf;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAQ9B"}
@@ -0,0 +1,497 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LiuRiCalculator = void 0;
4
+ const bazi_1 = require("../../../core/constants/bazi");
5
+ const LuckCycleCalculator_1 = require("./LuckCycleCalculator");
6
+ const solarTerms_1 = require("../../../core/calendar/solarTerms");
7
+ const lunar_javascript_1 = require("lunar-javascript");
8
+ // Extract simple arrays for easier usage
9
+ const STEMS = bazi_1.HEAVENLY_STEMS.map(s => s.name);
10
+ const BRANCHES = bazi_1.EARTHLY_BRANCHES.map(b => b.name);
11
+ // Create stem-element mapping
12
+ const STEM_ELEMENTS = bazi_1.HEAVENLY_STEMS.reduce((acc, stem) => {
13
+ acc[stem.name] = stem.element;
14
+ return acc;
15
+ }, {});
16
+ // Create branch-element mapping
17
+ const BRANCH_ELEMENTS = bazi_1.EARTHLY_BRANCHES.reduce((acc, branch) => {
18
+ acc[branch.name] = branch.element;
19
+ return acc;
20
+ }, {});
21
+ /**
22
+ * Calculator for Liu Ri (流日) - Daily Fortune Cycles
23
+ * Provides day-by-day analysis within a Liu Yue month
24
+ */
25
+ class LiuRiCalculator {
26
+ luckCalculator;
27
+ constructor() {
28
+ this.luckCalculator = new LuckCycleCalculator_1.LuckCycleCalculator();
29
+ }
30
+ /**
31
+ * Calculate all Liu Ri for a specific month (based on solar terms)
32
+ */
33
+ calculateLiuRi(monthStem, monthBranch, yearStem, yearBranch, dayMasterElement, yongShen, year, month // This is the Gregorian month (1-12)
34
+ ) {
35
+ const days = [];
36
+ // Map of month branches to solar term names
37
+ const BRANCH_TO_SOLAR_TERM = {
38
+ '寅': '立春',
39
+ '卯': '惊蛰',
40
+ '辰': '清明',
41
+ '巳': '立夏',
42
+ '午': '芒种',
43
+ '未': '小暑',
44
+ '申': '立秋',
45
+ '酉': '白露',
46
+ '戌': '寒露',
47
+ '亥': '立冬',
48
+ '子': '大雪',
49
+ '丑': '小寒'
50
+ };
51
+ // Map of branches to next solar term
52
+ const BRANCH_TO_NEXT_TERM = {
53
+ '寅': '惊蛰',
54
+ '卯': '清明',
55
+ '辰': '立夏',
56
+ '巳': '芒种',
57
+ '午': '小暑',
58
+ '未': '立秋',
59
+ '申': '白露',
60
+ '酉': '寒露',
61
+ '戌': '立冬',
62
+ '亥': '大雪',
63
+ '子': '小寒',
64
+ '丑': '立春'
65
+ };
66
+ // Get the solar term boundaries based on the month branch
67
+ const startSolarTerm = BRANCH_TO_SOLAR_TERM[monthBranch];
68
+ const nextSolarTerm = BRANCH_TO_NEXT_TERM[monthBranch];
69
+ // Calculate solar terms for this year and next year
70
+ const yearSolarTerms = solarTerms_1.PreciseSolarTermCalculator.calculateYearSolarTerms(year);
71
+ const nextYearSolarTerms = solarTerms_1.PreciseSolarTermCalculator.calculateYearSolarTerms(year + 1);
72
+ // Find the start date of this month
73
+ // 注意:八字年从立春开始到次年立春前结束
74
+ // 子月(大雪)在公历12月,仍属于当年
75
+ // 丑月(小寒)在公历1月5日左右,属于公历下一年,需要从下一年节气表查找
76
+ let startDate = null;
77
+ // 丑月(monthBranch === '丑')的开始节气"小寒"在公历次年1月初
78
+ // 需要从下一年节气表查找
79
+ if (monthBranch === '丑') {
80
+ for (const term of nextYearSolarTerms) {
81
+ if (term.name === startSolarTerm) {
82
+ startDate = term.date;
83
+ break;
84
+ }
85
+ }
86
+ }
87
+ else {
88
+ // 其他月份先从当年查找
89
+ for (const term of yearSolarTerms) {
90
+ if (term.name === startSolarTerm) {
91
+ startDate = term.date;
92
+ break;
93
+ }
94
+ }
95
+ // 如果是寅月(立春),可能在前一年
96
+ if (!startDate && monthBranch === '寅') {
97
+ const prevYearTerms = solarTerms_1.PreciseSolarTermCalculator.calculateYearSolarTerms(year - 1);
98
+ for (const term of prevYearTerms) {
99
+ if (term.name === startSolarTerm) {
100
+ startDate = term.date;
101
+ break;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ // Find the end date of this month
107
+ let endDate = null;
108
+ // First check current year
109
+ for (const term of yearSolarTerms) {
110
+ if (term.name === nextSolarTerm) {
111
+ endDate = term.date;
112
+ break;
113
+ }
114
+ }
115
+ // If end date is before start date (cross-year case like 子月 or 丑月),
116
+ // or if not found, check next year
117
+ // 例如:子月从大雪(12/7)到小寒(次年1/5),当年1月的小寒比大雪早,需要用次年的小寒
118
+ if (!endDate || (startDate && endDate.getTime() <= startDate.getTime())) {
119
+ for (const term of nextYearSolarTerms) {
120
+ if (term.name === nextSolarTerm) {
121
+ endDate = term.date;
122
+ break;
123
+ }
124
+ }
125
+ }
126
+ // Fallback if solar terms not found
127
+ if (!startDate || !endDate) {
128
+ console.warn('Solar term boundaries not found, falling back to gregorian month');
129
+ startDate = new Date(year, month - 1, 1);
130
+ endDate = new Date(year, month, 0);
131
+ }
132
+ // Calculate all days within this solar term month
133
+ const currentDate = new Date(startDate);
134
+ // Normalize end date to start of day to ensure we don't include the day the next solar term starts
135
+ const endDateStartOfDay = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());
136
+ while (currentDate.getTime() < endDateStartOfDay.getTime()) {
137
+ const iterDate = new Date(currentDate);
138
+ // Calculate day stem and branch for each day individually
139
+ const { dayStem: currentDayStem, dayBranch: currentDayBranch } = this.calculateDayStemBranch(currentDate);
140
+ // Analyze day fortune
141
+ const analysis = this.analyzeDay(currentDayStem, currentDayBranch, monthStem, monthBranch, yearStem, yearBranch, dayMasterElement, yongShen);
142
+ // Calculate hourly fortunes
143
+ const hourlyFortunes = this.calculateHourlyFortunes(currentDayStem, currentDayBranch, dayMasterElement, yongShen);
144
+ days.push({
145
+ date: iterDate,
146
+ day: iterDate.getDate(), // Use the actual day of month
147
+ stem: currentDayStem,
148
+ branch: currentDayBranch,
149
+ fortune: analysis.fortune,
150
+ rating: analysis.rating,
151
+ mainInfluences: analysis.mainInfluences,
152
+ activities: {
153
+ favorable: analysis.favorableActivities,
154
+ avoid: analysis.avoidActivities
155
+ },
156
+ luckyHours: analysis.luckyHours,
157
+ hourlyFortunes,
158
+ energy: analysis.energyLevel,
159
+ mood: analysis.moodIndicator,
160
+ opportunities: analysis.opportunities,
161
+ warnings: analysis.warnings
162
+ });
163
+ // Move to next day
164
+ currentDate.setDate(currentDate.getDate() + 1);
165
+ }
166
+ return days;
167
+ }
168
+ /**
169
+ * Calculate day stem and branch for a given date
170
+ */
171
+ calculateDayStemBranch(date) {
172
+ // Use lunar-javascript for accurate day pillar calculation
173
+ const solar = lunar_javascript_1.Solar.fromYmd(date.getFullYear(), date.getMonth() + 1, date.getDate());
174
+ const lunar = solar.getLunar();
175
+ // Get day GanZhi directly from lunar-javascript
176
+ const dayGanZhi = lunar.getDayInGanZhi();
177
+ return {
178
+ dayStem: dayGanZhi.substring(0, 1),
179
+ dayBranch: dayGanZhi.substring(1, 2)
180
+ };
181
+ }
182
+ /**
183
+ * Analyze day fortune
184
+ */
185
+ analyzeDay(dayStem, dayBranch, monthStem, monthBranch, yearStem, yearBranch, dayMasterElement, yongShen) {
186
+ const dayElement = STEM_ELEMENTS[dayStem];
187
+ const dayBranchElement = BRANCH_ELEMENTS[dayBranch];
188
+ // Calculate fortune rating based on element compatibility
189
+ let rating = 50; // Base rating
190
+ // YongShen bonus
191
+ if (yongShen.includes(dayElement)) {
192
+ rating += 30;
193
+ }
194
+ // Element cycle bonus/penalty
195
+ const elementCycle = {
196
+ '木': '火', // Wood generates Fire
197
+ '火': '土', // Fire generates Earth
198
+ '土': '金', // Earth generates Metal
199
+ '金': '水', // Metal generates Water
200
+ '水': '木' // Water generates Wood
201
+ };
202
+ const elementControl = {
203
+ '木': '土', // Wood controls Earth
204
+ '土': '水', // Earth controls Water
205
+ '水': '火', // Water controls Fire
206
+ '火': '金', // Fire controls Metal
207
+ '金': '木' // Metal controls Wood
208
+ };
209
+ if (elementCycle[dayMasterElement] === dayElement) {
210
+ rating += 10; // Day supports day master
211
+ }
212
+ else if (elementCycle[dayElement] === dayMasterElement) {
213
+ rating += 15; // Day master receives support
214
+ }
215
+ else if (elementControl[dayElement] === dayMasterElement) {
216
+ rating -= 20; // Day master is controlled
217
+ }
218
+ else if (elementControl[dayMasterElement] === dayElement) {
219
+ rating += 5; // Day master controls day
220
+ }
221
+ // Branch relationships bonus/penalty
222
+ if (this.isClash(dayBranch, monthBranch)) {
223
+ rating -= 15;
224
+ }
225
+ if (this.isTripleHarmony(dayBranch, monthBranch, yearBranch)) {
226
+ rating += 20;
227
+ }
228
+ // Ensure rating is within bounds
229
+ rating = Math.max(0, Math.min(100, rating));
230
+ // Analyze influences
231
+ const mainInfluences = [];
232
+ const favorableActivities = [];
233
+ const avoidActivities = [];
234
+ const opportunities = [];
235
+ const warnings = [];
236
+ // Day-Month-Year interactions
237
+ if (this.isTripleHarmony(dayBranch, monthBranch, yearBranch)) {
238
+ mainInfluences.push('triple_harmony');
239
+ opportunities.push('exceptional_luck');
240
+ favorableActivities.push('important_decisions', 'new_ventures');
241
+ }
242
+ if (this.isClash(dayBranch, monthBranch)) {
243
+ mainInfluences.push('day_month_clash');
244
+ warnings.push('avoid_conflicts');
245
+ avoidActivities.push('negotiations', 'confrontations');
246
+ }
247
+ // Element analysis
248
+ if (yongShen.includes(dayElement)) {
249
+ opportunities.push('favorable_energy');
250
+ favorableActivities.push('career_advancement', 'financial_decisions');
251
+ }
252
+ // Activity recommendations based on element
253
+ const activities = this.getActivityRecommendations(dayElement, rating);
254
+ favorableActivities.push(...activities.favorable);
255
+ avoidActivities.push(...activities.avoid);
256
+ // Lucky hours
257
+ const luckyHours = this.calculateLuckyHours(dayStem, dayMasterElement, yongShen);
258
+ // Energy and mood
259
+ const energyLevel = this.getEnergyLevel(rating);
260
+ const moodIndicator = this.getMoodIndicator(dayElement, rating);
261
+ // Fortune description
262
+ const fortune = this.getFortuneDescription(rating);
263
+ return {
264
+ fortune,
265
+ rating,
266
+ mainInfluences,
267
+ favorableActivities,
268
+ avoidActivities,
269
+ luckyHours,
270
+ energyLevel,
271
+ moodIndicator,
272
+ opportunities,
273
+ warnings
274
+ };
275
+ }
276
+ /**
277
+ * Calculate hourly fortunes for a day
278
+ */
279
+ calculateHourlyFortunes(dayStem, dayBranch, dayMasterElement, yongShen) {
280
+ const hourlyFortunes = [];
281
+ const hourBranches = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];
282
+ const hourRanges = [
283
+ '23:00-01:00', '01:00-03:00', '03:00-05:00', '05:00-07:00',
284
+ '07:00-09:00', '09:00-11:00', '11:00-13:00', '13:00-15:00',
285
+ '15:00-17:00', '17:00-19:00', '19:00-21:00', '21:00-23:00'
286
+ ];
287
+ // Calculate hour stem based on day stem
288
+ const firstHourStem = this.calculateFirstHourStem(dayStem);
289
+ for (let i = 0; i < 12; i++) {
290
+ const hourBranch = hourBranches[i];
291
+ const hourStemIndex = (STEMS.indexOf(firstHourStem) + i) % 10;
292
+ const hourStem = STEMS[hourStemIndex];
293
+ const hourElement = STEM_ELEMENTS[hourStem];
294
+ // Simple rating calculation
295
+ let rating = 50;
296
+ if (yongShen.includes(hourElement))
297
+ rating += 30;
298
+ if (this.isClash(hourBranch, dayBranch))
299
+ rating -= 20;
300
+ if (this.isHarmony(hourBranch, dayBranch))
301
+ rating += 20;
302
+ // Activity recommendation
303
+ const activity = this.getHourActivity(i, rating);
304
+ hourlyFortunes.push({
305
+ hour: hourRanges[i],
306
+ branch: hourBranch,
307
+ rating: Math.max(0, Math.min(100, rating)),
308
+ activity
309
+ });
310
+ }
311
+ return hourlyFortunes;
312
+ }
313
+ /**
314
+ * Calculate the stem for the first hour based on day stem
315
+ */
316
+ calculateFirstHourStem(dayStem) {
317
+ const dayStemIndex = STEMS.indexOf(dayStem);
318
+ const rules = {
319
+ 0: '甲', // 甲日
320
+ 1: '丙', // 乙日
321
+ 2: '戊', // 丙日
322
+ 3: '庚', // 丁日
323
+ 4: '壬', // 戊日
324
+ 5: '甲', // 己日
325
+ 6: '丙', // 庚日
326
+ 7: '戊', // 辛日
327
+ 8: '庚', // 壬日
328
+ 9: '壬' // 癸日
329
+ };
330
+ return rules[dayStemIndex % 5 * 2];
331
+ }
332
+ /**
333
+ * Calculate lucky hours for the day
334
+ */
335
+ calculateLuckyHours(dayStem, dayMasterElement, yongShen) {
336
+ const luckyHours = [];
337
+ const dayElement = STEM_ELEMENTS[dayStem];
338
+ // Hours that support yong shen
339
+ if (yongShen.includes('木'))
340
+ luckyHours.push(3, 4); // 寅卯時
341
+ if (yongShen.includes('火'))
342
+ luckyHours.push(5, 6); // 巳午時
343
+ if (yongShen.includes('土'))
344
+ luckyHours.push(2, 5, 8, 11); // 丑辰未戌時
345
+ if (yongShen.includes('金'))
346
+ luckyHours.push(8, 9); // 申酉時
347
+ if (yongShen.includes('水'))
348
+ luckyHours.push(0, 10); // 子亥時
349
+ return [...new Set(luckyHours)].sort((a, b) => a - b);
350
+ }
351
+ /**
352
+ * Get activity recommendations based on element and rating
353
+ */
354
+ getActivityRecommendations(element, rating) {
355
+ const elementActivities = {
356
+ '木': {
357
+ favorable: ['planning', 'creative_work', 'networking'],
358
+ avoid: ['metal_work', 'cutting', 'surgery']
359
+ },
360
+ '火': {
361
+ favorable: ['presentations', 'celebrations', 'marketing'],
362
+ avoid: ['water_activities', 'emotional_decisions']
363
+ },
364
+ '土': {
365
+ favorable: ['real_estate', 'building', 'stability_focus'],
366
+ avoid: ['risky_ventures', 'speculation']
367
+ },
368
+ '金': {
369
+ favorable: ['financial_planning', 'legal_matters', 'precision_work'],
370
+ avoid: ['fire_activities', 'impulsive_actions']
371
+ },
372
+ '水': {
373
+ favorable: ['travel', 'learning', 'communication'],
374
+ avoid: ['earth_work', 'stubborn_positions']
375
+ }
376
+ };
377
+ const base = elementActivities[element];
378
+ if (rating >= 70) {
379
+ base.favorable.push('important_meetings', 'contract_signing');
380
+ }
381
+ else if (rating < 40) {
382
+ base.avoid.push('major_decisions', 'investments');
383
+ }
384
+ return base;
385
+ }
386
+ /**
387
+ * Get hour activity recommendation
388
+ */
389
+ getHourActivity(hour, rating) {
390
+ const activities = [
391
+ 'rest_meditation', // 子時
392
+ 'sleep_rejuvenation', // 丑時
393
+ 'early_exercise', // 寅時
394
+ 'planning_strategy', // 卯時
395
+ 'focused_work', // 辰時
396
+ 'communication', // 巳時
397
+ 'peak_performance', // 午時
398
+ 'creative_tasks', // 未時
399
+ 'analysis_review', // 申時
400
+ 'social_networking', // 酉時
401
+ 'relaxation', // 戌時
402
+ 'preparation_rest' // 亥時
403
+ ];
404
+ if (rating < 30) {
405
+ return 'avoid_important_tasks';
406
+ }
407
+ return activities[hour];
408
+ }
409
+ /**
410
+ * Check if three branches form a harmony
411
+ */
412
+ isTripleHarmony(branch1, branch2, branch3) {
413
+ const harmonies = [
414
+ ['申', '子', '辰'], // Water
415
+ ['寅', '午', '戌'], // Fire
416
+ ['巳', '酉', '丑'], // Metal
417
+ ['亥', '卯', '未'] // Wood
418
+ ];
419
+ return harmonies.some(group => group.includes(branch1) && group.includes(branch2) && group.includes(branch3));
420
+ }
421
+ /**
422
+ * Check if two branches clash
423
+ */
424
+ isClash(branch1, branch2) {
425
+ const clashes = {
426
+ '子': '午', '午': '子',
427
+ '丑': '未', '未': '丑',
428
+ '寅': '申', '申': '寅',
429
+ '卯': '酉', '酉': '卯',
430
+ '辰': '戌', '戌': '辰',
431
+ '巳': '亥', '亥': '巳'
432
+ };
433
+ return clashes[branch1] === branch2;
434
+ }
435
+ /**
436
+ * Check if two branches are in harmony
437
+ */
438
+ isHarmony(branch1, branch2) {
439
+ const harmonies = {
440
+ '子': '丑', '丑': '子',
441
+ '寅': '亥', '亥': '寅',
442
+ '卯': '戌', '戌': '卯',
443
+ '辰': '酉', '酉': '辰',
444
+ '巳': '申', '申': '巳',
445
+ '午': '未', '未': '午'
446
+ };
447
+ return harmonies[branch1] === branch2;
448
+ }
449
+ /**
450
+ * Get energy level description
451
+ */
452
+ getEnergyLevel(rating) {
453
+ if (rating >= 80)
454
+ return 'high_energy';
455
+ if (rating >= 60)
456
+ return 'good_energy';
457
+ if (rating >= 40)
458
+ return 'moderate_energy';
459
+ if (rating >= 20)
460
+ return 'low_energy';
461
+ return 'very_low_energy';
462
+ }
463
+ /**
464
+ * Get mood indicator
465
+ */
466
+ getMoodIndicator(element, rating) {
467
+ const elementMoods = {
468
+ '木': 'growth_oriented',
469
+ '火': 'enthusiastic',
470
+ '土': '稳定',
471
+ '金': 'determined',
472
+ '水': 'adaptable'
473
+ };
474
+ if (rating < 30) {
475
+ return 'challenging_mood';
476
+ }
477
+ return elementMoods[element];
478
+ }
479
+ /**
480
+ * Get fortune description based on rating
481
+ */
482
+ getFortuneDescription(rating) {
483
+ if (rating >= 85)
484
+ return '优秀';
485
+ if (rating >= 70)
486
+ return 'very_good';
487
+ if (rating >= 55)
488
+ return '良好';
489
+ if (rating >= 40)
490
+ return '一般';
491
+ if (rating >= 25)
492
+ return '挑战';
493
+ return '困难';
494
+ }
495
+ }
496
+ exports.LiuRiCalculator = LiuRiCalculator;
497
+ //# sourceMappingURL=LiuRiCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiuRiCalculator.js","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuRiCalculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { Stem, Branch, FiveElement, LiuYueInfo, ChineseDate } from '../types';
2
+ /**
3
+ * Calculator for Liu Yue (流月) - Monthly Fortune Cycles
4
+ * Provides month-by-month analysis within a Liu Nian year
5
+ */
6
+ export declare class LiuYueCalculator {
7
+ private luckCalculator;
8
+ constructor();
9
+ /**
10
+ * Calculate all Liu Yue for a specific year
11
+ */
12
+ calculateLiuYue(yearStem: Stem, yearBranch: Branch, dayMasterElement: FiveElement, yongShen: FiveElement[], birthDate: ChineseDate, currentYear: number): LiuYueInfo[];
13
+ /**
14
+ * Calculate the stem for the first month based on year stem
15
+ */
16
+ private calculateFirstMonthStem;
17
+ /**
18
+ * Get solar calendar dates for a Chinese month based on solar terms
19
+ */
20
+ private getMonthDates;
21
+ /**
22
+ * Analyze month fortune
23
+ */
24
+ private analyzeMonth;
25
+ /**
26
+ * Calculate lucky days within a month
27
+ */
28
+ private calculateLuckyDays;
29
+ /**
30
+ * Check if two stems are in harmony
31
+ */
32
+ private isHarmony;
33
+ /**
34
+ * Check if two branches clash
35
+ */
36
+ private isClash;
37
+ /**
38
+ * Check if element is unfavorable
39
+ */
40
+ private isUnfavorable;
41
+ /**
42
+ * Get health focus areas based on element
43
+ */
44
+ private getHealthFocus;
45
+ /**
46
+ * Get fortune description based on rating
47
+ */
48
+ private getFortuneDescription;
49
+ }
50
+ //# sourceMappingURL=LiuYueCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiuYueCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuYueCalculator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,MAAM,EACN,WAAW,EACX,UAAU,EACV,WAAW,EACZ,MAAM,UAAU,CAAC;AAqClB;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAsB;;IAM5C;;OAEG;IACH,eAAe,CACb,QAAQ,EAAE,IAAI,EACd,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,WAAW,EAC7B,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,WAAW,EACtB,WAAW,EAAE,MAAM,GAClB,UAAU,EAAE;IAsDf;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAwFrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqGpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,OAAO;IAYf;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAQ9B"}