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,314 @@
1
+ "use strict";
2
+ /**
3
+ * Iztro 库适配器
4
+ * 封装所有与 iztro 库的交互,提供统一的接口
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.IztroAdapter = void 0;
8
+ const iztro_1 = require("iztro");
9
+ const types_1 = require("../../services/ziwei/types");
10
+ class IztroAdapter {
11
+ astrolabe = null;
12
+ birthDate = '';
13
+ birthYear = 0;
14
+ gender = '';
15
+ language = 'zh-TW';
16
+ /**
17
+ * 初始化适配器
18
+ */
19
+ init(input) {
20
+ try {
21
+ // 格式化日期
22
+ const dateStr = `${input.year}-${input.month.toString().padStart(2, '0')}-${input.day.toString().padStart(2, '0')}`;
23
+ const hourIndex = types_1.HOUR_TO_INDEX[input.hour] || 0;
24
+ // 保存基本信息
25
+ this.birthDate = dateStr;
26
+ this.birthYear = input.year;
27
+ this.gender = input.gender;
28
+ this.language = input.language || 'zh-TW';
29
+ // 创建命盘
30
+ this.astrolabe = iztro_1.astro.bySolar(dateStr, hourIndex, input.gender, false, this.language);
31
+ if (!this.astrolabe) {
32
+ throw new types_1.ZiweiCalculationError('Failed to create astrolabe', 'ASTROLABE_CREATION_FAILED');
33
+ }
34
+ }
35
+ catch (error) {
36
+ throw new types_1.ZiweiCalculationError('Failed to initialize IztroAdapter', 'INIT_FAILED', error);
37
+ }
38
+ }
39
+ /**
40
+ * 获取基本信息
41
+ */
42
+ getBasicInfo() {
43
+ if (!this.astrolabe) {
44
+ throw new types_1.ZiweiCalculationError('Adapter not initialized', 'NOT_INITIALIZED');
45
+ }
46
+ return {
47
+ zodiac: this.getZodiac(),
48
+ constellation: this.getConstellation(),
49
+ fourPillars: this.getFourPillars(),
50
+ fiveElement: this.astrolabe.fiveElementsClass || '',
51
+ soul: String(this.astrolabe.soul || ''),
52
+ body: String(this.astrolabe.body || '')
53
+ };
54
+ }
55
+ /**
56
+ * 获取四柱信息
57
+ */
58
+ getFourPillars() {
59
+ // 优先从 rawDates 获取
60
+ const rawDates = this.astrolabe?.rawDates;
61
+ if (rawDates?.chineseDate) {
62
+ return {
63
+ year: {
64
+ stem: rawDates.chineseDate.yearly?.[0] || '',
65
+ branch: rawDates.chineseDate.yearly?.[1] || ''
66
+ },
67
+ month: {
68
+ stem: rawDates.chineseDate.monthly?.[0] || '',
69
+ branch: rawDates.chineseDate.monthly?.[1] || ''
70
+ },
71
+ day: {
72
+ stem: rawDates.chineseDate.daily?.[0] || '',
73
+ branch: rawDates.chineseDate.daily?.[1] || ''
74
+ },
75
+ hour: {
76
+ stem: rawDates.chineseDate.hourly?.[0] || '',
77
+ branch: rawDates.chineseDate.hourly?.[1] || ''
78
+ }
79
+ };
80
+ }
81
+ // 默认返回空值
82
+ return {
83
+ year: { stem: '', branch: '' },
84
+ month: { stem: '', branch: '' },
85
+ day: { stem: '', branch: '' },
86
+ hour: { stem: '', branch: '' }
87
+ };
88
+ }
89
+ /**
90
+ * 获取所有宫位信息
91
+ */
92
+ getPalaces() {
93
+ if (!this.astrolabe?.palaces) {
94
+ return [];
95
+ }
96
+ return this.astrolabe.palaces.map((palace, index) => {
97
+ const majorStars = this.extract(palace.majorStars || [], 'major');
98
+ const minorStars = this.extract(palace.minorStars || [], 'minor');
99
+ const adjectiveStars = this.extract(palace.adjectiveStars || [], 'auxiliary');
100
+ // 合并杂曜到辅星列表,并添加类型标记
101
+ const allMinorStars = [
102
+ ...minorStars,
103
+ ...adjectiveStars
104
+ ];
105
+ return {
106
+ name: palace.name || '',
107
+ index,
108
+ position: this.getPositionFromBranch(palace.earthlyBranch),
109
+ earthlyBranch: palace.earthlyBranch || '',
110
+ heavenlyStem: palace.heavenlyStem || '',
111
+ majorStars,
112
+ minorStars: allMinorStars,
113
+ isBodyPalace: palace.isBodyPalace || false,
114
+ // 保留额外信息供将来使用
115
+ extras: {
116
+ changsheng12: palace.changsheng12,
117
+ boshi12: palace.boshi12,
118
+ jiangqian12: palace.jiangqian12,
119
+ suiqian12: palace.suiqian12,
120
+ ages: palace.ages
121
+ }
122
+ };
123
+ });
124
+ }
125
+ /**
126
+ * 获取运限信息
127
+ */
128
+ getHoroscope(date, timeIndex) {
129
+ if (!this.astrolabe)
130
+ return null;
131
+ try {
132
+ // 如果提供了时辰索引,则传递给horoscope方法
133
+ if (timeIndex !== undefined) {
134
+ return this.astrolabe.horoscope(date, timeIndex);
135
+ }
136
+ return this.astrolabe.horoscope(date);
137
+ }
138
+ catch (error) {
139
+ console.error('Failed to get horoscope:', error);
140
+ return null;
141
+ }
142
+ }
143
+ /**
144
+ * 获取性别
145
+ */
146
+ getGender() {
147
+ return this.gender;
148
+ }
149
+ /**
150
+ * 获取语言
151
+ */
152
+ getLanguage() {
153
+ return this.language;
154
+ }
155
+ /**
156
+ * 获取农历日期
157
+ */
158
+ getLunarDate() {
159
+ const rawDates = this.astrolabe?.rawDates;
160
+ return {
161
+ year: rawDates?.lunarDate?.lunarYear || 0,
162
+ month: rawDates?.lunarDate?.lunarMonth || 0,
163
+ day: rawDates?.lunarDate?.lunarDay || 0,
164
+ isLeapMonth: rawDates?.lunarDate?.isLeap || false
165
+ };
166
+ }
167
+ /**
168
+ * 根据天干获取四化
169
+ */
170
+ getMutagenByStem(stem) {
171
+ // 四化对照表
172
+ const mutagenMap = {
173
+ '甲': ['廉貞', '破軍', '武曲', '太陽'],
174
+ '乙': ['天機', '天梁', '紫微', '太陰'],
175
+ '丙': ['天同', '天機', '文昌', '廉貞'],
176
+ '丁': ['太陰', '天同', '天機', '巨門'],
177
+ '戊': ['貪狼', '太陰', '右弼', '天機'],
178
+ '己': ['武曲', '貪狼', '天梁', '文曲'],
179
+ '庚': ['太陽', '武曲', '太陰', '天同'],
180
+ '辛': ['巨門', '太陽', '文曲', '文昌'],
181
+ '壬': ['天梁', '紫微', '左輔', '武曲'],
182
+ '癸': ['破軍', '巨門', '太陰', '貪狼']
183
+ };
184
+ const mutagen = mutagenMap[stem] || ['', '', '', ''];
185
+ return {
186
+ lu: mutagen[0],
187
+ quan: mutagen[1],
188
+ ke: mutagen[2],
189
+ ji: mutagen[3]
190
+ };
191
+ }
192
+ /**
193
+ * 获取年干(用于本命四化)
194
+ */
195
+ getYearStem() {
196
+ const fourPillars = this.getFourPillars();
197
+ return fourPillars.year.stem;
198
+ }
199
+ // ==================== 私有辅助方法 ====================
200
+ /**
201
+ * 提取星曜信息
202
+ */
203
+ extract(stars, category = 'major') {
204
+ if (!Array.isArray(stars))
205
+ return [];
206
+ return stars
207
+ .filter(star => star && star.name)
208
+ .map(star => {
209
+ // 确定星曜的具体类型
210
+ let starType = category;
211
+ // 根据iztro返回的type进一步细分
212
+ if (star.type === 'flower') {
213
+ starType = 'flower';
214
+ }
215
+ else if (star.type === 'helper') {
216
+ starType = 'helper';
217
+ }
218
+ else if (category === 'auxiliary') {
219
+ // 保持auxiliary类型,表示杂曜/神煞
220
+ starType = 'auxiliary';
221
+ }
222
+ return {
223
+ name: star.name,
224
+ brightness: star.brightness || undefined,
225
+ type: starType,
226
+ mutagen: [], // 四化信息稍后处理
227
+ scope: star.scope || 'origin'
228
+ };
229
+ });
230
+ }
231
+ /**
232
+ * 根据地支获取位置索引
233
+ */
234
+ getPositionFromBranch(branch) {
235
+ const branchMap = {
236
+ '子': 0, '丑': 1, '寅': 2, '卯': 3,
237
+ '辰': 4, '巳': 5, '午': 6, '未': 7,
238
+ '申': 8, '酉': 9, '戌': 10, '亥': 11
239
+ };
240
+ return branchMap[branch] || 0;
241
+ }
242
+ /**
243
+ * 获取生肖
244
+ */
245
+ getZodiac() {
246
+ // 尝试从 astrolabe 获取
247
+ if (this.astrolabe?.zodiac) {
248
+ return this.astrolabe.zodiac;
249
+ }
250
+ // 根据年支推算
251
+ const zodiacMap = {
252
+ '子': '鼠', '丑': '牛', '寅': '虎', '卯': '兔',
253
+ '辰': '龙', '巳': '蛇', '午': '马', '未': '羊',
254
+ '申': '猴', '酉': '鸡', '戌': '狗', '亥': '猪'
255
+ };
256
+ const yearBranch = this.getFourPillars().year.branch;
257
+ return zodiacMap[yearBranch] || '';
258
+ }
259
+ /**
260
+ * 获取星座
261
+ */
262
+ getConstellation() {
263
+ const date = new Date(this.birthDate);
264
+ const month = date.getMonth() + 1;
265
+ const day = date.getDate();
266
+ const constellations = [
267
+ { name: '水瓶座', start: [1, 20], end: [2, 18] },
268
+ { name: '双鱼座', start: [2, 19], end: [3, 20] },
269
+ { name: '白羊座', start: [3, 21], end: [4, 19] },
270
+ { name: '金牛座', start: [4, 20], end: [5, 20] },
271
+ { name: '双子座', start: [5, 21], end: [6, 21] },
272
+ { name: '巨蟹座', start: [6, 22], end: [7, 22] },
273
+ { name: '狮子座', start: [7, 23], end: [8, 22] },
274
+ { name: '处女座', start: [8, 23], end: [9, 22] },
275
+ { name: '天秤座', start: [9, 23], end: [10, 23] },
276
+ { name: '天蝎座', start: [10, 24], end: [11, 22] },
277
+ { name: '射手座', start: [11, 23], end: [12, 21] },
278
+ { name: '摩羯座', start: [12, 22], end: [12, 31] }
279
+ ];
280
+ // 特殊处理摩羯座(跨年)
281
+ if ((month === 12 && day >= 22) || (month === 1 && day <= 19)) {
282
+ return '摩羯座';
283
+ }
284
+ for (const c of constellations) {
285
+ const [startMonth, startDay] = c.start;
286
+ const [endMonth, endDay] = c.end;
287
+ if (month === startMonth && day >= startDay)
288
+ return c.name;
289
+ if (month === endMonth && day <= endDay)
290
+ return c.name;
291
+ if (month > startMonth && month < endMonth)
292
+ return c.name;
293
+ }
294
+ return '';
295
+ }
296
+ /**
297
+ * 调试方法:获取原始 astrolabe 对象
298
+ */
299
+ getDebugInfo() {
300
+ return {
301
+ astrolabe: this.astrolabe,
302
+ rawDates: this.astrolabe?.rawDates,
303
+ palaces: this.astrolabe?.palaces?.map((p) => ({
304
+ name: p.name,
305
+ branch: p.earthlyBranch,
306
+ stem: p.heavenlyStem,
307
+ majorStarsCount: p.majorStars?.length || 0,
308
+ minorStarsCount: p.minorStars?.length || 0
309
+ }))
310
+ };
311
+ }
312
+ }
313
+ exports.IztroAdapter = IztroAdapter;
314
+ //# sourceMappingURL=IztroAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IztroAdapter.js","sourceRoot":"","sources":["../../../src/core/ziwei/IztroAdapter.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iCAA8B;AAE9B,sDASoC;AAEpC,MAAa,YAAY;IACf,SAAS,GAAQ,IAAI,CAAC;IACtB,SAAS,GAAW,EAAE,CAAC;IACvB,SAAS,GAAW,CAAC,CAAC;IACtB,MAAM,GAAW,EAAE,CAAC;IACpB,QAAQ,GAAW,OAAO,CAAC;IAEnC;;OAEG;IACH,IAAI,CAAC,KAAiB;QACpB,IAAI,CAAC;YACH,QAAQ;YACR,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YACpH,MAAM,SAAS,GAAG,qBAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjD,SAAS;YACT,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC;YAE1C,OAAO;YACP,IAAI,CAAC,SAAS,GAAG,aAAK,CAAC,OAAO,CAC5B,OAAO,EACP,SAAS,EACT,KAAK,CAAC,MAAa,EACnB,KAAK,EACL,IAAI,CAAC,QAAQ,CACd,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,IAAI,6BAAqB,CAC7B,4BAA4B,EAC5B,2BAA2B,CAC5B,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,6BAAqB,CAC7B,mCAAmC,EACnC,aAAa,EACb,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,6BAAqB,CAAC,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;QAChF,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;YACxB,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE;YACtC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;YAClC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,IAAI,EAAE;YACnD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;YACvC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;SACxC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,kBAAkB;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC1C,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;YAC1B,OAAO;gBACL,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;oBAC5C,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;iBAC/C;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;oBAC7C,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;iBAChD;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;oBAC3C,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;iBAC9C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;oBAC5C,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;iBAC/C;aACF,CAAC;QACJ,CAAC;QAED,SAAS;QACT,OAAO;YACL,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC/B,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SAC/B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,KAAa,EAAE,EAAE;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC;YAE9E,oBAAoB;YACpB,MAAM,aAAa,GAAG;gBACpB,GAAG,UAAU;gBACb,GAAG,cAAc;aAClB,CAAC;YAEF,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,KAAK;gBACL,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC;gBAC1D,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;gBACzC,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;gBACvC,UAAU;gBACV,UAAU,EAAE,aAAa;gBACzB,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,KAAK;gBAC1C,cAAc;gBACd,MAAM,EAAE;oBACN,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY,EAAE,SAAkB;QAC3C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAEjC,IAAI,CAAC;YACH,4BAA4B;YAC5B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC;YACzC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,IAAI,CAAC;YAC3C,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;YACvC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,KAAK;SAClD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAY;QAC3B,QAAQ;QACR,MAAM,UAAU,GAAqD;YACnE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;SAC9B,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACrD,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACd,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAChB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACd,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;SACf,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,mDAAmD;IAEnD;;OAEG;IACK,OAAO,CAAC,KAAY,EAAE,WAA4C,OAAO;QAC/E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,OAAO,KAAK;aACT,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;aACjC,GAAG,CAAC,IAAI,CAAC,EAAE;YACV,YAAY;YACZ,IAAI,QAAQ,GAA0D,QAAQ,CAAC;YAE/E,sBAAsB;YACtB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,QAAQ,GAAG,QAAQ,CAAC;YACtB,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,QAAQ,GAAG,QAAQ,CAAC;YACtB,CAAC;iBAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACpC,wBAAwB;gBACxB,QAAQ,GAAG,WAAW,CAAC;YACzB,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;gBACxC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE,EAAE,WAAW;gBACxB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ;aAC9B,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,MAAc;QAC1C,MAAM,SAAS,GAA2B;YACxC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAC9B,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;YAC9B,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;SACjC,CAAC;QACF,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,SAAS;QACf,mBAAmB;QACnB,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC/B,CAAC;QAED,SAAS;QACT,MAAM,SAAS,GAA2B;YACxC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACtC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;YACtC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;SACvC,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QACrD,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE3B,MAAM,cAAc,GAAG;YACrB,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;YAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;YAC9C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;YAC/C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;YAC/C,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;SAChD,CAAC;QAEF,cAAc;QACd,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC/B,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YACvC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;YAEjC,IAAI,KAAK,KAAK,UAAU,IAAI,GAAG,IAAI,QAAQ;gBAAE,OAAO,CAAC,CAAC,IAAI,CAAC;YAC3D,IAAI,KAAK,KAAK,QAAQ,IAAI,GAAG,IAAI,MAAM;gBAAE,OAAO,CAAC,CAAC,IAAI,CAAC;YACvD,IAAI,KAAK,GAAG,UAAU,IAAI,KAAK,GAAG,QAAQ;gBAAE,OAAO,CAAC,CAAC,IAAI,CAAC;QAC5D,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ;YAClC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBACjD,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,aAAa;gBACvB,IAAI,EAAE,CAAC,CAAC,YAAY;gBACpB,eAAe,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;gBAC1C,eAAe,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC;aAC3C,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;CACF;AAtVD,oCAsVC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * 紫微斗数四化核心系统
3
+ * 统一管理四化星的计算和匹配
4
+ *
5
+ * 从 /lib/ziwei/core/mutagenSystem.ts 迁移并增强
6
+ */
7
+ import { MutagenInfo } from '../../services/ziwei/types';
8
+ export declare class MutagenCore {
9
+ private static readonly MUTAGEN_TABLE;
10
+ /**
11
+ * 获取天干对应的四化星
12
+ */
13
+ static getMutagen(heavenlyStem: string): MutagenInfo | null;
14
+ /**
15
+ * 获取某个星曜的四化类型
16
+ * @param heavenlyStem 天干
17
+ * @param starName 星曜名称
18
+ * @returns 四化类型(禄、权、科、忌)或 null
19
+ */
20
+ static getMutagenType(heavenlyStem: string, starName: string, language?: string): string | null;
21
+ /**
22
+ * 获取四化类型名称(多语言)
23
+ */
24
+ static getMutagenTypeNames(language?: string): {
25
+ lu: string;
26
+ quan: string;
27
+ ke: string;
28
+ ji: string;
29
+ };
30
+ /**
31
+ * 获取星曜的所有四化信息
32
+ * @param starName 星曜名称
33
+ * @param natalStem 本命天干
34
+ * @param decadeStem 大限天干(可选)
35
+ * @param yearlyStem 流年天干(可选)
36
+ * @param language 语言
37
+ * @returns 四化信息数组
38
+ */
39
+ static getStarMutagens(starName: string, natalStem: string, decadeStem?: string, yearlyStem?: string, language?: string): string[];
40
+ /**
41
+ * 获取四化前缀(多语言)
42
+ */
43
+ static getMutagenPrefixes(language?: string): {
44
+ natal: string;
45
+ decade: string;
46
+ yearly: string;
47
+ };
48
+ /**
49
+ * 标准化星曜名称
50
+ * 将各种变体统一为标准名称
51
+ */
52
+ static normalizeStarName(name: string): string;
53
+ /**
54
+ * 判断两个星曜名称是否相同(考虑变体)
55
+ */
56
+ static isSameStar(name1: string, name2: string): boolean;
57
+ /**
58
+ * 标准化语言代码
59
+ */
60
+ private static normalizeLanguage;
61
+ /**
62
+ * 获取完整的四化信息(包含星曜名称)
63
+ */
64
+ static getCompleteMutagenInfo(natalStem: string, decadeStem?: string, yearlyStem?: string): {
65
+ natal?: MutagenInfo;
66
+ decade?: MutagenInfo;
67
+ yearly?: MutagenInfo;
68
+ };
69
+ /**
70
+ * 生成四化飞星路径
71
+ * @param fromPalaceIndex 起始宫位索引
72
+ * @param mutagenType 四化类型
73
+ * @returns 飞星路径
74
+ */
75
+ static generateMutagenPath(fromPalaceIndex: number, mutagenType: 'lu' | 'quan' | 'ke' | 'ji'): number[];
76
+ /**
77
+ * 判断星曜是否为四化星
78
+ */
79
+ static isMutagenStar(starName: string): boolean;
80
+ }
81
+ //# sourceMappingURL=MutagenCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MutagenCore.d.ts","sourceRoot":"","sources":["../../../src/core/ziwei/MutagenCore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AA0CzD,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAWlC;IAEH;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAa3D;;;;;OAKG;IACH,MAAM,CAAC,cAAc,CACnB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAgB,GACzB,MAAM,GAAG,IAAI;IAiBhB;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,GAAE,MAAgB,GAAG;QACtD,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ;IAYD;;;;;;;;OAQG;IACH,MAAM,CAAC,eAAe,CACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAgB,GACzB,MAAM,EAAE;IA6BX;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,GAAE,MAAgB,GAAG;QACrD,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;IAYD;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAc9C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAIxD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAYhC;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAC3B,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB;QACD,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB;IAkBD;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CACxB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GACvC,MAAM,EAAE;IAeX;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAiBhD"}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ /**
3
+ * 紫微斗数四化核心系统
4
+ * 统一管理四化星的计算和匹配
5
+ *
6
+ * 从 /lib/ziwei/core/mutagenSystem.ts 迁移并增强
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MutagenCore = void 0;
10
+ // 星曜名称的所有变体映射 - 使用繁体字作为标准键
11
+ const STAR_NAME_VARIANTS = new Map([
12
+ // 十四主星
13
+ ['紫微', ['紫微']],
14
+ ['天機', ['天机', '天機']],
15
+ ['太陽', ['太阳', '太陽']],
16
+ ['武曲', ['武曲']],
17
+ ['天同', ['天同']],
18
+ ['廉貞', ['廉贞', '廉貞']],
19
+ ['天府', ['天府']],
20
+ ['太陰', ['太阴', '太陰']],
21
+ ['貪狼', ['贪狼', '貪狼']],
22
+ ['巨門', ['巨门', '巨門']],
23
+ ['天相', ['天相']],
24
+ ['天梁', ['天梁']],
25
+ ['七殺', ['七杀', '七殺']],
26
+ ['破軍', ['破军', '破軍']],
27
+ // 辅星
28
+ ['文昌', ['文昌']],
29
+ ['文曲', ['文曲']],
30
+ ['左輔', ['左辅', '左輔']],
31
+ ['右弼', ['右弼']],
32
+ ['天魁', ['天魁']],
33
+ ['天鉞', ['天钺', '天鉞']],
34
+ ['祿存', ['禄存', '祿存']],
35
+ ['天馬', ['天马', '天馬']],
36
+ ['擎羊', ['擎羊']],
37
+ ['陀羅', ['陀罗', '陀羅']],
38
+ ['火星', ['火星']],
39
+ ['鈴星', ['铃星', '鈴星']],
40
+ ['地空', ['地空']],
41
+ ['地劫', ['地劫']],
42
+ ['化祿', ['化禄', '化祿']],
43
+ ['化權', ['化权', '化權']],
44
+ ['化科', ['化科']],
45
+ ['化忌', ['化忌']]
46
+ ]);
47
+ class MutagenCore {
48
+ // 四化表:天干对应的四化星
49
+ static MUTAGEN_TABLE = new Map([
50
+ ['甲', { lu: '廉貞', quan: '破軍', ke: '武曲', ji: '太陽' }],
51
+ ['乙', { lu: '天機', quan: '天梁', ke: '紫微', ji: '太陰' }],
52
+ ['丙', { lu: '天同', quan: '天機', ke: '文昌', ji: '廉貞' }],
53
+ ['丁', { lu: '太陰', quan: '天同', ke: '天機', ji: '巨門' }],
54
+ ['戊', { lu: '貪狼', quan: '太陰', ke: '右弼', ji: '天機' }],
55
+ ['己', { lu: '武曲', quan: '貪狼', ke: '天梁', ji: '文曲' }],
56
+ ['庚', { lu: '太陽', quan: '武曲', ke: '太陰', ji: '天同' }],
57
+ ['辛', { lu: '巨門', quan: '太陽', ke: '文曲', ji: '文昌' }],
58
+ ['壬', { lu: '天梁', quan: '紫微', ke: '左輔', ji: '武曲' }],
59
+ ['癸', { lu: '破軍', quan: '巨門', ke: '太陰', ji: '貪狼' }]
60
+ ]);
61
+ /**
62
+ * 获取天干对应的四化星
63
+ */
64
+ static getMutagen(heavenlyStem) {
65
+ const mutagen = this.MUTAGEN_TABLE.get(heavenlyStem);
66
+ if (!mutagen)
67
+ return null;
68
+ // 返回标准化的星曜名称
69
+ return {
70
+ lu: this.normalizeStarName(mutagen.lu || ''),
71
+ quan: this.normalizeStarName(mutagen.quan || ''),
72
+ ke: this.normalizeStarName(mutagen.ke || ''),
73
+ ji: this.normalizeStarName(mutagen.ji || '')
74
+ };
75
+ }
76
+ /**
77
+ * 获取某个星曜的四化类型
78
+ * @param heavenlyStem 天干
79
+ * @param starName 星曜名称
80
+ * @returns 四化类型(禄、权、科、忌)或 null
81
+ */
82
+ static getMutagenType(heavenlyStem, starName, language = 'zh-CN') {
83
+ const mutagen = this.getMutagen(heavenlyStem);
84
+ if (!mutagen)
85
+ return null;
86
+ const normalizedStar = this.normalizeStarName(starName);
87
+ // 四化类型的多语言支持
88
+ const types = this.getMutagenTypeNames(language);
89
+ if (this.normalizeStarName(mutagen.lu || '') === normalizedStar)
90
+ return types.lu;
91
+ if (this.normalizeStarName(mutagen.quan || '') === normalizedStar)
92
+ return types.quan;
93
+ if (this.normalizeStarName(mutagen.ke || '') === normalizedStar)
94
+ return types.ke;
95
+ if (this.normalizeStarName(mutagen.ji || '') === normalizedStar)
96
+ return types.ji;
97
+ return null;
98
+ }
99
+ /**
100
+ * 获取四化类型名称(多语言)
101
+ */
102
+ static getMutagenTypeNames(language = 'zh-CN') {
103
+ const typeNames = {
104
+ 'zh-CN': { lu: '禄', quan: '权', ke: '科', ji: '忌' },
105
+ 'zh-TW': { lu: '祿', quan: '權', ke: '科', ji: '忌' },
106
+ 'en': { lu: 'Lu', quan: 'Quan', ke: 'Ke', ji: 'Ji' },
107
+ 'ja': { lu: '禄', quan: '権', ke: '科', ji: '忌' }
108
+ };
109
+ const locale = this.normalizeLanguage(language);
110
+ return typeNames[locale] || typeNames['zh-CN'];
111
+ }
112
+ /**
113
+ * 获取星曜的所有四化信息
114
+ * @param starName 星曜名称
115
+ * @param natalStem 本命天干
116
+ * @param decadeStem 大限天干(可选)
117
+ * @param yearlyStem 流年天干(可选)
118
+ * @param language 语言
119
+ * @returns 四化信息数组
120
+ */
121
+ static getStarMutagens(starName, natalStem, decadeStem, yearlyStem, language = 'zh-CN') {
122
+ const mutagens = [];
123
+ const prefixes = this.getMutagenPrefixes(language);
124
+ // 本命四化
125
+ const natalType = this.getMutagenType(natalStem, starName, language);
126
+ if (natalType) {
127
+ mutagens.push(`${prefixes.natal}${natalType}`);
128
+ }
129
+ // 大限四化
130
+ if (decadeStem) {
131
+ const decadeType = this.getMutagenType(decadeStem, starName, language);
132
+ if (decadeType) {
133
+ mutagens.push(`${prefixes.decade}${decadeType}`);
134
+ }
135
+ }
136
+ // 流年四化
137
+ if (yearlyStem) {
138
+ const yearlyType = this.getMutagenType(yearlyStem, starName, language);
139
+ if (yearlyType) {
140
+ mutagens.push(`${prefixes.yearly}${yearlyType}`);
141
+ }
142
+ }
143
+ return mutagens;
144
+ }
145
+ /**
146
+ * 获取四化前缀(多语言)
147
+ */
148
+ static getMutagenPrefixes(language = 'zh-CN') {
149
+ const prefixes = {
150
+ 'zh-CN': { natal: '本', decade: '限', yearly: '年' },
151
+ 'zh-TW': { natal: '本', decade: '限', yearly: '年' },
152
+ 'en': { natal: 'N-', decade: 'D-', yearly: 'Y-' },
153
+ 'ja': { natal: '本', decade: '限', yearly: '年' }
154
+ };
155
+ const locale = this.normalizeLanguage(language);
156
+ return prefixes[locale] || prefixes['zh-CN'];
157
+ }
158
+ /**
159
+ * 标准化星曜名称
160
+ * 将各种变体统一为标准名称
161
+ */
162
+ static normalizeStarName(name) {
163
+ if (!name)
164
+ return '';
165
+ // 遍历所有标准名称
166
+ for (const [standard, variants] of STAR_NAME_VARIANTS.entries()) {
167
+ if (variants.includes(name)) {
168
+ return standard;
169
+ }
170
+ }
171
+ // 如果找不到,返回原名称
172
+ return name;
173
+ }
174
+ /**
175
+ * 判断两个星曜名称是否相同(考虑变体)
176
+ */
177
+ static isSameStar(name1, name2) {
178
+ return this.normalizeStarName(name1) === this.normalizeStarName(name2);
179
+ }
180
+ /**
181
+ * 标准化语言代码
182
+ */
183
+ static normalizeLanguage(language) {
184
+ const langMap = {
185
+ 'zh-CN': 'zh-CN',
186
+ 'zh-TW': 'zh-TW',
187
+ 'en-US': 'en',
188
+ 'ja-JP': 'ja',
189
+ 'en': 'en',
190
+ 'ja': 'ja'
191
+ };
192
+ return langMap[language] || 'zh-CN';
193
+ }
194
+ /**
195
+ * 获取完整的四化信息(包含星曜名称)
196
+ */
197
+ static getCompleteMutagenInfo(natalStem, decadeStem, yearlyStem) {
198
+ const result = {};
199
+ if (natalStem) {
200
+ result.natal = this.getMutagen(natalStem);
201
+ }
202
+ if (decadeStem) {
203
+ result.decade = this.getMutagen(decadeStem);
204
+ }
205
+ if (yearlyStem) {
206
+ result.yearly = this.getMutagen(yearlyStem);
207
+ }
208
+ return result;
209
+ }
210
+ /**
211
+ * 生成四化飞星路径
212
+ * @param fromPalaceIndex 起始宫位索引
213
+ * @param mutagenType 四化类型
214
+ * @returns 飞星路径
215
+ */
216
+ static generateMutagenPath(fromPalaceIndex, mutagenType) {
217
+ // 四化飞星的基本规则
218
+ const paths = {
219
+ lu: [4, 8], // 化禄飞向财帛、官禄
220
+ quan: [8, 0], // 化权飞向官禄、命宫
221
+ ke: [1, 5], // 化科飞向兄弟、疾厄
222
+ ji: [6, 10] // 化忌飞向迁移、福德
223
+ };
224
+ const basePath = paths[mutagenType] || [];
225
+ // 根据起始宫位调整路径
226
+ return basePath.map(targetOffset => (fromPalaceIndex + targetOffset) % 12);
227
+ }
228
+ /**
229
+ * 判断星曜是否为四化星
230
+ */
231
+ static isMutagenStar(starName) {
232
+ const normalizedName = this.normalizeStarName(starName);
233
+ // 检查是否在任何天干的四化表中
234
+ for (const [, mutagen] of this.MUTAGEN_TABLE) {
235
+ if (normalizedName === this.normalizeStarName(mutagen.lu || '') ||
236
+ normalizedName === this.normalizeStarName(mutagen.quan || '') ||
237
+ normalizedName === this.normalizeStarName(mutagen.ke || '') ||
238
+ normalizedName === this.normalizeStarName(mutagen.ji || '')) {
239
+ return true;
240
+ }
241
+ }
242
+ return false;
243
+ }
244
+ }
245
+ exports.MutagenCore = MutagenCore;
246
+ //# sourceMappingURL=MutagenCore.js.map