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,88 @@
1
+ /**
2
+ * Liu Nian Calculator
3
+ * Enhanced with taro-bazi's precise fleeting year calculations
4
+ * Calculates yearly luck (流年)
5
+ */
6
+ import { BaziChart, LiuNian } from '../types';
7
+ export declare class LiuNianCalculator {
8
+ /**
9
+ * Calculate Liu Nian for a range of years using taro-bazi method
10
+ */
11
+ static calculate(chart: BaziChart, birthYear: number, startYear: number, endYear: number, birthInfo?: any, gender?: 'male' | 'female'): LiuNian[];
12
+ /**
13
+ * Get zodiac animal
14
+ */
15
+ private static getZodiac;
16
+ /**
17
+ * Get ten god relationship
18
+ */
19
+ private static getTenGod;
20
+ /**
21
+ * Enhanced Liu Nian analysis with DaYun interaction
22
+ */
23
+ private static analyzeLiuNian;
24
+ /**
25
+ * Enhanced overall fortune evaluation
26
+ */
27
+ private static evaluateOverall;
28
+ /**
29
+ * Analyze Tai Sui relationship
30
+ */
31
+ private static analyzeTaiSuiRelation;
32
+ /**
33
+ * Check stem combination
34
+ */
35
+ private static hasStemCombination;
36
+ /**
37
+ * Check stem clash
38
+ */
39
+ private static hasStemClash;
40
+ /**
41
+ * Evaluate branch relations
42
+ */
43
+ private static evaluateBranchRelations;
44
+ /**
45
+ * Get all branch relations
46
+ */
47
+ private static getBranchRelations;
48
+ /**
49
+ * Enhanced event prediction
50
+ */
51
+ private static predictEvents;
52
+ /**
53
+ * Enhanced warning generation
54
+ */
55
+ private static generateWarnings;
56
+ /**
57
+ * Enhanced opportunity identification
58
+ */
59
+ private static identifyOpportunities;
60
+ /**
61
+ * Check for punishment
62
+ */
63
+ private static hasPunishment;
64
+ /**
65
+ * Check for moving star (驛馬星)
66
+ */
67
+ private static hasMovingStar;
68
+ /**
69
+ * Check for peach blossom (桃花)
70
+ */
71
+ private static hasPeachBlossom;
72
+ /**
73
+ * Check for academic star (文昌星)
74
+ */
75
+ private static hasAcademicStar;
76
+ /**
77
+ * Check for noble person star (天乙貴人)
78
+ */
79
+ private static hasNoblePersonStar;
80
+ /**
81
+ * Check for wealth star
82
+ */
83
+ private static hasWealthStar;
84
+ private static getStemElement;
85
+ private static getBranchElement;
86
+ private static isControlling;
87
+ }
88
+ //# sourceMappingURL=LiuNianCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiuNianCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuNianCalculator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAmB,MAAM,UAAU,CAAC;AAK/D,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,GAAG,EACf,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GACzB,OAAO,EAAE;IA0DZ;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAKxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IA2B7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA8D9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA6DpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAajC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAY3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAetC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAwBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAiF5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAuD/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA2DpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAqC5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAa5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAa9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAS5B,OAAO,CAAC,MAAM,CAAC,cAAc;IAK7B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAK/B,OAAO,CAAC,MAAM,CAAC,aAAa;CAU7B"}
@@ -0,0 +1,546 @@
1
+ "use strict";
2
+ /**
3
+ * Liu Nian Calculator
4
+ * Enhanced with taro-bazi's precise fleeting year calculations
5
+ * Calculates yearly luck (流年)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.LiuNianCalculator = void 0;
9
+ const bazi_1 = require("../../../core/constants/bazi");
10
+ const LuckCycleCalculator_1 = require("./LuckCycleCalculator");
11
+ const DaYunCalculator_1 = require("./DaYunCalculator");
12
+ class LiuNianCalculator {
13
+ /**
14
+ * Calculate Liu Nian for a range of years using taro-bazi method
15
+ */
16
+ static calculate(chart, birthYear, startYear, endYear, birthInfo, gender) {
17
+ const liuNians = [];
18
+ // Get Liu Nian data from LuckCycleCalculator
19
+ const years = Array.from({ length: endYear - startYear + 1 }, (_, i) => startYear + i);
20
+ const liuNianYears = LuckCycleCalculator_1.LuckCycleCalculator.calFleetingYearList(birthYear, years);
21
+ // Get DaYun periods if birth info and gender provided
22
+ let daYunPeriods = [];
23
+ if (birthInfo && gender) {
24
+ daYunPeriods = DaYunCalculator_1.DaYunCalculator.calculate(chart, birthInfo, gender, { startYear, endYear });
25
+ }
26
+ for (const liuNianYear of liuNianYears) {
27
+ const { year, age, stemBranch, element, yinYang } = liuNianYear;
28
+ // Get zodiac animal
29
+ const zodiac = this.getZodiac(stemBranch.branch);
30
+ // Calculate ten god for this year
31
+ const tenGod = this.getTenGod(chart.day.stem, stemBranch.stem);
32
+ // Find current DaYun
33
+ const currentDaYun = daYunPeriods.find(dy => year >= dy.startYear && year <= dy.endYear);
34
+ // Analyze this Liu Nian with DaYun interaction
35
+ const analysis = this.analyzeLiuNian(stemBranch, chart, tenGod, age, currentDaYun);
36
+ liuNians.push({
37
+ year,
38
+ age,
39
+ stem: stemBranch.stem,
40
+ branch: stemBranch.branch,
41
+ zodiac,
42
+ tenGod,
43
+ analysis
44
+ });
45
+ }
46
+ return liuNians;
47
+ }
48
+ /**
49
+ * Get zodiac animal
50
+ */
51
+ static getZodiac(branch) {
52
+ const branchData = bazi_1.EARTHLY_BRANCHES.find(b => b.name === branch);
53
+ return branchData?.zodiac || branch;
54
+ }
55
+ /**
56
+ * Get ten god relationship
57
+ */
58
+ static getTenGod(dayMaster, stem) {
59
+ return bazi_1.TEN_GODS[dayMaster]?.[stem] || '';
60
+ }
61
+ /**
62
+ * Enhanced Liu Nian analysis with DaYun interaction
63
+ */
64
+ static analyzeLiuNian(liuNian, chart, tenGod, age, currentDaYun) {
65
+ // Evaluate overall fortune with more factors
66
+ const overall = this.evaluateOverall(liuNian, chart, tenGod, currentDaYun);
67
+ // Predict events
68
+ const events = this.predictEvents(liuNian, chart, tenGod, age, currentDaYun);
69
+ // Generate warnings
70
+ const warnings = this.generateWarnings(liuNian, chart, tenGod, currentDaYun);
71
+ // Identify opportunities
72
+ const opportunities = this.identifyOpportunities(liuNian, chart, tenGod, age, currentDaYun);
73
+ return {
74
+ overall,
75
+ events,
76
+ warnings,
77
+ opportunities
78
+ };
79
+ }
80
+ /**
81
+ * Enhanced overall fortune evaluation
82
+ */
83
+ static evaluateOverall(liuNian, chart, tenGod, currentDaYun) {
84
+ let score = 50; // Base score
85
+ // Check for Tai Sui (太歲) relationships
86
+ const taiSuiRelation = this.analyzeTaiSuiRelation(liuNian.branch, chart);
87
+ switch (taiSuiRelation) {
88
+ case '冲':
89
+ score -= 20;
90
+ break;
91
+ case '害':
92
+ score -= 15;
93
+ break;
94
+ case '刑':
95
+ score -= 10;
96
+ break;
97
+ case '合':
98
+ score += 15;
99
+ break;
100
+ case '六合':
101
+ score += 20;
102
+ break;
103
+ }
104
+ // Ten god influence
105
+ const tenGodScores = {
106
+ '正官': 10, '正印': 10, '正財': 10, '食神': 8,
107
+ '比肩': 0, '偏印': 0, '偏財': 5,
108
+ '七殺': -8, '傷官': -8, '劫財': -10
109
+ };
110
+ score += tenGodScores[tenGod] || 0;
111
+ // Check stem relationships
112
+ if (this.hasStemCombination(liuNian.stem, chart))
113
+ score += 10;
114
+ if (this.hasStemClash(liuNian.stem, chart))
115
+ score -= 10;
116
+ // Check branch relationships
117
+ const branchScore = this.evaluateBranchRelations(liuNian.branch, chart);
118
+ score += branchScore;
119
+ // DaYun interaction (if provided)
120
+ if (currentDaYun && currentDaYun.stemBranch && currentDaYun.stemBranch.stem && currentDaYun.stemBranch.branch) {
121
+ const interaction = LuckCycleCalculator_1.LuckCycleCalculator.analyzeDaYunLiuNian(currentDaYun, {
122
+ year: 0, // Not used in analysis
123
+ age: 0, // Not used in analysis
124
+ stemBranch: liuNian,
125
+ element: '',
126
+ yinYang: 'yang'
127
+ });
128
+ if (interaction.stemRelation === 'combine')
129
+ score += 8;
130
+ if (interaction.stemRelation === 'clash')
131
+ score -= 8;
132
+ if (interaction.branchRelation === 'harmony')
133
+ score += 10;
134
+ if (interaction.branchRelation === 'clash')
135
+ score -= 10;
136
+ if (interaction.elementalBalance === 'reinforced')
137
+ score += 5;
138
+ if (interaction.elementalBalance === 'controlling')
139
+ score -= 5;
140
+ }
141
+ // Convert score to rating
142
+ if (score >= 75)
143
+ return '优秀';
144
+ if (score >= 60)
145
+ return '良好';
146
+ if (score >= 40)
147
+ return '一般';
148
+ return '挑战';
149
+ }
150
+ /**
151
+ * Analyze Tai Sui relationship
152
+ */
153
+ static analyzeTaiSuiRelation(yearBranch, chart) {
154
+ const branches = [chart.year.branch, chart.month.branch, chart.day.branch, chart.hour.branch];
155
+ // Check clashes (沖)
156
+ const clashes = {
157
+ '子': '午', '午': '子',
158
+ '丑': '未', '未': '丑',
159
+ '寅': '申', '申': '寅',
160
+ '卯': '酉', '酉': '卯',
161
+ '辰': '戌', '戌': '辰',
162
+ '巳': '亥', '亥': '巳'
163
+ };
164
+ if (branches.includes(clashes[yearBranch]))
165
+ return '冲';
166
+ // Check harmonies (合)
167
+ const harmonies = {
168
+ '子': '丑', '丑': '子',
169
+ '寅': '亥', '亥': '寅',
170
+ '卯': '戌', '戌': '卯',
171
+ '辰': '酉', '酉': '辰',
172
+ '巳': '申', '申': '巳',
173
+ '午': '未', '未': '午'
174
+ };
175
+ if (branches.includes(harmonies[yearBranch]))
176
+ return '合';
177
+ // Check harms (害)
178
+ const harms = {
179
+ '子': '未', '未': '子',
180
+ '丑': '午', '午': '丑',
181
+ '寅': '巳', '巳': '寅',
182
+ '卯': '辰', '辰': '卯',
183
+ '申': '亥', '亥': '申',
184
+ '酉': '戌', '戌': '酉'
185
+ };
186
+ if (branches.includes(harms[yearBranch]))
187
+ return '害';
188
+ // Check triple combines (三合)
189
+ const tripleCombines = [
190
+ ['申', '子', '辰'],
191
+ ['亥', '卯', '未'],
192
+ ['寅', '午', '戌'],
193
+ ['巳', '酉', '丑']
194
+ ];
195
+ for (const triple of tripleCombines) {
196
+ if (triple.includes(yearBranch)) {
197
+ const otherTwo = triple.filter(b => b !== yearBranch);
198
+ if (otherTwo.every(b => branches.includes(b))) {
199
+ return '六合';
200
+ }
201
+ }
202
+ }
203
+ // Check punishments (刑)
204
+ if (this.hasPunishment(yearBranch, chart))
205
+ return '刑';
206
+ return '中性';
207
+ }
208
+ /**
209
+ * Check stem combination
210
+ */
211
+ static hasStemCombination(stem, chart) {
212
+ const combinations = {
213
+ '甲': '己', '己': '甲',
214
+ '乙': '庚', '庚': '乙',
215
+ '丙': '辛', '辛': '丙',
216
+ '丁': '壬', '壬': '丁',
217
+ '戊': '癸', '癸': '戊'
218
+ };
219
+ const chartStems = [chart.year.stem, chart.month.stem, chart.day.stem, chart.hour.stem];
220
+ return chartStems.includes(combinations[stem]);
221
+ }
222
+ /**
223
+ * Check stem clash
224
+ */
225
+ static hasStemClash(stem, chart) {
226
+ const clashes = {
227
+ '甲': '庚', '庚': '甲',
228
+ '乙': '辛', '辛': '乙',
229
+ '丙': '壬', '壬': '丙',
230
+ '丁': '癸', '癸': '丁'
231
+ };
232
+ const chartStems = [chart.year.stem, chart.month.stem, chart.day.stem, chart.hour.stem];
233
+ return chartStems.includes(clashes[stem]);
234
+ }
235
+ /**
236
+ * Evaluate branch relations
237
+ */
238
+ static evaluateBranchRelations(branch, chart) {
239
+ let score = 0;
240
+ const branches = [chart.year.branch, chart.month.branch, chart.day.branch, chart.hour.branch];
241
+ // Count favorable and unfavorable relations
242
+ const relations = this.getBranchRelations(branch, branches);
243
+ score += relations.harmonies * 10;
244
+ score += relations.combines * 15;
245
+ score -= relations.clashes * 15;
246
+ score -= relations.harms * 10;
247
+ score -= relations.punishments * 10;
248
+ return score;
249
+ }
250
+ /**
251
+ * Get all branch relations
252
+ */
253
+ static getBranchRelations(branch, chartBranches) {
254
+ const relations = {
255
+ harmonies: 0,
256
+ combines: 0,
257
+ clashes: 0,
258
+ harms: 0,
259
+ punishments: 0
260
+ };
261
+ // Implementation would count all relations
262
+ // Simplified for brevity
263
+ return relations;
264
+ }
265
+ /**
266
+ * Enhanced event prediction
267
+ */
268
+ static predictEvents(liuNian, chart, tenGod, age, currentDaYun) {
269
+ const events = [];
270
+ // Age-based events
271
+ if ((age - 1) % 12 === 0) {
272
+ events.push('本命年,宜穩重行事');
273
+ }
274
+ // Ten god based events
275
+ switch (tenGod) {
276
+ case '正官':
277
+ events.push('工作升遷機會');
278
+ if (age >= 25 && age <= 35) {
279
+ events.push('適合結婚成家');
280
+ }
281
+ break;
282
+ case '七殺':
283
+ events.push('事業變動可能');
284
+ events.push('競爭壓力增大');
285
+ break;
286
+ case '正財':
287
+ events.push('財運提升');
288
+ events.push('投資獲利機會');
289
+ break;
290
+ case '偏財':
291
+ events.push('意外之財可能');
292
+ events.push('適合投資創業');
293
+ break;
294
+ case '正印':
295
+ events.push('學習進修機會');
296
+ events.push('貴人相助');
297
+ break;
298
+ case '偏印':
299
+ events.push('適合學習專業技能');
300
+ events.push('思想轉變');
301
+ break;
302
+ case '食神':
303
+ events.push('創意靈感豐富');
304
+ events.push('人際關係和諧');
305
+ break;
306
+ case '傷官':
307
+ events.push('口舌是非可能');
308
+ events.push('創業想法萌生');
309
+ break;
310
+ case '比肩':
311
+ events.push('朋友相助');
312
+ events.push('合作機會出現');
313
+ break;
314
+ case '劫財':
315
+ events.push('錢財競爭');
316
+ events.push('需防小人');
317
+ break;
318
+ }
319
+ // Special stars
320
+ if (this.hasMovingStar(liuNian.branch, chart)) {
321
+ events.push('有搬遷或出差機會');
322
+ }
323
+ if (this.hasPeachBlossom(liuNian.branch, chart)) {
324
+ events.push('桃花運旺,異性緣佳');
325
+ }
326
+ if (this.hasAcademicStar(liuNian, chart)) {
327
+ events.push('考試運佳,學業順利');
328
+ }
329
+ // DaYun interaction events
330
+ if (currentDaYun && currentDaYun.analysis.fortune === '优秀') {
331
+ events.push('大運流年相輔,機遇難得');
332
+ }
333
+ return events;
334
+ }
335
+ /**
336
+ * Enhanced warning generation
337
+ */
338
+ static generateWarnings(liuNian, chart, tenGod, currentDaYun) {
339
+ const warnings = [];
340
+ // Tai Sui warnings
341
+ const taiSuiRelation = this.analyzeTaiSuiRelation(liuNian.branch, chart);
342
+ switch (taiSuiRelation) {
343
+ case '冲':
344
+ warnings.push('沖太歲,諸事需謹慎');
345
+ warnings.push('避免重大決策');
346
+ break;
347
+ case '害':
348
+ warnings.push('害太歲,防小人暗害');
349
+ break;
350
+ case '刑':
351
+ warnings.push('刑太歲,注意法律糾紛');
352
+ break;
353
+ }
354
+ // Ten god based warnings
355
+ switch (tenGod) {
356
+ case '七殺':
357
+ warnings.push('防小人陷害');
358
+ warnings.push('注意身體健康');
359
+ break;
360
+ case '傷官':
361
+ warnings.push('言語需謹慎');
362
+ warnings.push('避免與上司衝突');
363
+ break;
364
+ case '劫財':
365
+ warnings.push('防破財損失');
366
+ warnings.push('不宜合夥投資');
367
+ break;
368
+ }
369
+ // Element clash warnings
370
+ const liuNianElement = this.getBranchElement(liuNian.branch);
371
+ const dayElement = this.getStemElement(chart.day.stem);
372
+ if (this.isControlling(liuNianElement, dayElement)) {
373
+ warnings.push('流年克日主,壓力較大');
374
+ }
375
+ // DaYun conflict warnings
376
+ if (currentDaYun && currentDaYun.analysis.fortune === '困难') {
377
+ warnings.push('大運不利,需格外謹慎');
378
+ }
379
+ return warnings;
380
+ }
381
+ /**
382
+ * Enhanced opportunity identification
383
+ */
384
+ static identifyOpportunities(liuNian, chart, tenGod, age, currentDaYun) {
385
+ const opportunities = [];
386
+ // Ten god based opportunities
387
+ switch (tenGod) {
388
+ case '正官':
389
+ opportunities.push('升職加薪良機');
390
+ opportunities.push('考試順利');
391
+ break;
392
+ case '正財':
393
+ opportunities.push('正財收入增加');
394
+ opportunities.push('投資理財獲利');
395
+ break;
396
+ case '正印':
397
+ opportunities.push('學業進修順利');
398
+ opportunities.push('獲得長輩支持');
399
+ break;
400
+ case '食神':
401
+ opportunities.push('才華得以展現');
402
+ opportunities.push('創業時機成熟');
403
+ break;
404
+ }
405
+ // Age-based opportunities
406
+ if (age >= 25 && age <= 35) {
407
+ if (['正官', '正財'].includes(tenGod)) {
408
+ opportunities.push('適合結婚生子');
409
+ }
410
+ }
411
+ if (age >= 35 && age <= 45) {
412
+ if (['正財', '偏財'].includes(tenGod)) {
413
+ opportunities.push('事業發展黃金期');
414
+ }
415
+ }
416
+ // Special star opportunities
417
+ if (this.hasNoblePersonStar(liuNian, chart)) {
418
+ opportunities.push('貴人運強,把握機會');
419
+ }
420
+ if (this.hasWealthStar(liuNian, chart)) {
421
+ opportunities.push('財運亨通,適合投資');
422
+ }
423
+ // Favorable DaYun combination
424
+ if (currentDaYun && ['优秀', '良好'].includes(currentDaYun.analysis.fortune)) {
425
+ opportunities.push('運勢配合,事半功倍');
426
+ }
427
+ return opportunities;
428
+ }
429
+ /**
430
+ * Check for punishment
431
+ */
432
+ static hasPunishment(yearBranch, chart) {
433
+ const branches = [chart.year.branch, chart.month.branch, chart.day.branch, chart.hour.branch];
434
+ // Self punishment (自刑)
435
+ const selfPunishments = ['辰', '午', '酉', '亥'];
436
+ if (selfPunishments.includes(yearBranch) && branches.includes(yearBranch)) {
437
+ return true;
438
+ }
439
+ // Ungrateful punishment (無恩之刑)
440
+ const ungratefulPairs = [['子', '卯'], ['卯', '子']];
441
+ // Bullying punishment (恃勢之刑)
442
+ const bullyingTriples = [
443
+ ['寅', '巳'], ['巳', '申'], ['申', '寅']
444
+ ];
445
+ // Uncivilized punishment (無禮之刑)
446
+ const uncivilizedTriples = [
447
+ ['丑', '戌'], ['戌', '未'], ['未', '丑']
448
+ ];
449
+ // Check all punishment types
450
+ const allPunishments = [
451
+ ...ungratefulPairs,
452
+ ...bullyingTriples,
453
+ ...uncivilizedTriples
454
+ ];
455
+ return allPunishments.some(group => {
456
+ if (group.includes(yearBranch)) {
457
+ return group.some(b => b !== yearBranch && branches.includes(b));
458
+ }
459
+ return false;
460
+ });
461
+ }
462
+ /**
463
+ * Check for moving star (驛馬星)
464
+ */
465
+ static hasMovingStar(yearBranch, chart) {
466
+ const movingStars = {
467
+ '申': ['寅'], '子': ['寅'], '辰': ['寅'],
468
+ '巳': ['亥'], '酉': ['亥'], '丑': ['亥'],
469
+ '寅': ['申'], '午': ['申'], '戌': ['申'],
470
+ '亥': ['巳'], '卯': ['巳'], '未': ['巳']
471
+ };
472
+ const dayBranch = chart.day.branch;
473
+ const movingBranches = movingStars[dayBranch] || [];
474
+ return movingBranches.includes(yearBranch);
475
+ }
476
+ /**
477
+ * Check for peach blossom (桃花)
478
+ */
479
+ static hasPeachBlossom(yearBranch, chart) {
480
+ const peachBlossoms = {
481
+ '申': ['酉'], '子': ['酉'], '辰': ['酉'],
482
+ '巳': ['午'], '酉': ['午'], '丑': ['午'],
483
+ '寅': ['卯'], '午': ['卯'], '戌': ['卯'],
484
+ '亥': ['子'], '卯': ['子'], '未': ['子']
485
+ };
486
+ const dayBranch = chart.day.branch;
487
+ const peachBranches = peachBlossoms[dayBranch] || [];
488
+ return peachBranches.includes(yearBranch);
489
+ }
490
+ /**
491
+ * Check for academic star (文昌星)
492
+ */
493
+ static hasAcademicStar(liuNian, chart) {
494
+ const academicMap = {
495
+ '甲': '巳', '乙': '午', '丙': '申', '丁': '酉',
496
+ '戊': '申', '己': '酉', '庚': '亥', '辛': '子',
497
+ '壬': '寅', '癸': '卯'
498
+ };
499
+ const academicBranch = academicMap[chart.day.stem];
500
+ return academicBranch === liuNian.branch;
501
+ }
502
+ /**
503
+ * Check for noble person star (天乙貴人)
504
+ */
505
+ static hasNoblePersonStar(liuNian, chart) {
506
+ const tianYiMap = {
507
+ '甲': ['丑', '未'], '戊': ['丑', '未'],
508
+ '乙': ['子', '申'], '己': ['子', '申'],
509
+ '丙': ['亥', '酉'], '丁': ['亥', '酉'],
510
+ '庚': ['丑', '未'],
511
+ '辛': ['寅', '午'],
512
+ '壬': ['卯', '巳'],
513
+ '癸': ['卯', '巳']
514
+ };
515
+ const tianYiBranches = tianYiMap[chart.day.stem] || [];
516
+ return tianYiBranches.includes(liuNian.branch);
517
+ }
518
+ /**
519
+ * Check for wealth star
520
+ */
521
+ static hasWealthStar(liuNian, chart) {
522
+ const tenGod = this.getTenGod(chart.day.stem, liuNian.stem);
523
+ return ['正財', '偏財'].includes(tenGod);
524
+ }
525
+ // Helper methods
526
+ static getStemElement(stem) {
527
+ const stemData = bazi_1.HEAVENLY_STEMS.find(s => s.name === stem);
528
+ return stemData?.element || '';
529
+ }
530
+ static getBranchElement(branch) {
531
+ const branchData = bazi_1.EARTHLY_BRANCHES.find(b => b.name === branch);
532
+ return branchData?.element || '';
533
+ }
534
+ static isControlling(from, to) {
535
+ const controlling = {
536
+ '木': '土',
537
+ '土': '水',
538
+ '水': '火',
539
+ '火': '金',
540
+ '金': '木'
541
+ };
542
+ return controlling[from] === to;
543
+ }
544
+ }
545
+ exports.LiuNianCalculator = LiuNianCalculator;
546
+ //# sourceMappingURL=LiuNianCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiuNianCalculator.js","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LiuNianCalculator.ts"],"names":[],"mappings":"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"}