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,185 @@
1
+ /**
2
+ * 紫微斗数服务统一类型定义
3
+ * 所有紫微相关的类型都在这里定义,避免重复和混乱
4
+ */
5
+ export interface ZiweiInput {
6
+ year: number;
7
+ month: number;
8
+ day: number;
9
+ hour: number;
10
+ gender: 'male' | 'female';
11
+ language?: string;
12
+ }
13
+ export interface StemBranch {
14
+ stem: string;
15
+ branch: string;
16
+ }
17
+ export interface FourPillars {
18
+ year: StemBranch;
19
+ month: StemBranch;
20
+ day: StemBranch;
21
+ hour: StemBranch;
22
+ }
23
+ export interface BasicInfo {
24
+ zodiac: string;
25
+ constellation: string;
26
+ fourPillars: FourPillars;
27
+ fiveElement: string;
28
+ soul: string;
29
+ body: string;
30
+ }
31
+ export interface Star {
32
+ name: string;
33
+ brightness?: string;
34
+ type: 'major' | 'minor' | 'auxiliary' | 'flower' | 'helper';
35
+ scope?: string;
36
+ }
37
+ export interface StarWithMutagen extends Star {
38
+ mutagen?: string[];
39
+ }
40
+ export interface HoroscopeStar {
41
+ name: string;
42
+ type: 'soft' | 'tough' | 'flower' | 'helper';
43
+ scope: 'yearly' | 'decadal' | 'monthly' | 'daily' | 'hourly';
44
+ }
45
+ export interface Palace {
46
+ name: string;
47
+ index: number;
48
+ position: number;
49
+ earthlyBranch: string;
50
+ heavenlyStem: string;
51
+ majorStars: StarWithMutagen[];
52
+ minorStars: StarWithMutagen[];
53
+ horoscopeStars?: HoroscopeStar[];
54
+ isBodyPalace?: boolean;
55
+ extras?: {
56
+ changsheng12?: string;
57
+ boshi12?: string;
58
+ jiangqian12?: string;
59
+ suiqian12?: string;
60
+ ages?: number[];
61
+ };
62
+ }
63
+ export interface DecadeInfo {
64
+ index: number;
65
+ palaceIndex: number;
66
+ startAge: number;
67
+ endAge: number;
68
+ heavenlyStem: string;
69
+ earthlyBranch: string;
70
+ palaceName: string;
71
+ label: string;
72
+ stars?: (string | HoroscopeStar)[][];
73
+ }
74
+ export interface YearlyInfo {
75
+ year: number;
76
+ age: number;
77
+ heavenlyStem: string;
78
+ earthlyBranch: string;
79
+ palaceIndex: number;
80
+ stars?: (string | HoroscopeStar)[][];
81
+ }
82
+ export interface MinorLimitInfo {
83
+ age: number;
84
+ year: number;
85
+ palaceIndex: number;
86
+ heavenlyStem: string;
87
+ earthlyBranch: string;
88
+ palaceNames?: string[];
89
+ mutagen?: string[];
90
+ }
91
+ export interface MutagenInfo {
92
+ lu?: string;
93
+ quan?: string;
94
+ ke?: string;
95
+ ji?: string;
96
+ }
97
+ export interface CompleteMutagenInfo {
98
+ natal: MutagenInfo;
99
+ decadal?: MutagenInfo;
100
+ minorLimit?: MutagenInfo;
101
+ yearly?: MutagenInfo;
102
+ monthly?: MutagenInfo;
103
+ daily?: MutagenInfo;
104
+ hourly?: MutagenInfo;
105
+ combined: Map<string, string[]>;
106
+ }
107
+ export interface HoroscopeInfo {
108
+ decadal?: {
109
+ index: number;
110
+ heavenlyStem: string;
111
+ earthlyBranch: string;
112
+ palaceNames?: string[];
113
+ mutagen?: MutagenInfo;
114
+ startAge?: number;
115
+ endAge?: number;
116
+ };
117
+ yearly?: {
118
+ heavenlyStem: string;
119
+ earthlyBranch: string;
120
+ palaceNames?: string[];
121
+ mutagen?: MutagenInfo;
122
+ yearlyDecStar?: any[];
123
+ };
124
+ monthly?: any;
125
+ daily?: any;
126
+ }
127
+ export interface EnhancedPalace extends Palace {
128
+ decadeInfo?: {
129
+ startAge: number;
130
+ endAge: number;
131
+ isCurrent?: boolean;
132
+ };
133
+ dynamicNames?: {
134
+ decadal?: string;
135
+ yearly?: string;
136
+ };
137
+ isDecadeHighlight?: boolean;
138
+ isYearlyHighlight?: boolean;
139
+ minorLimitAges?: number[];
140
+ }
141
+ export interface ZiweiResult {
142
+ basicInfo: BasicInfo;
143
+ solarDate: string;
144
+ lunarDate: {
145
+ year: number;
146
+ month: number;
147
+ day: number;
148
+ isLeapMonth: boolean;
149
+ };
150
+ palaces: EnhancedPalace[];
151
+ decades: DecadeInfo[];
152
+ currentDecade?: DecadeInfo;
153
+ yearlyInfo?: YearlyInfo;
154
+ mutagenInfo?: CompleteMutagenInfo;
155
+ gender: 'male' | 'female';
156
+ birthYear: number;
157
+ language: string;
158
+ }
159
+ export interface ZiweiServiceConfig {
160
+ language?: string;
161
+ includeYearlyInfo?: boolean;
162
+ includeMutagenInfo?: boolean;
163
+ debug?: boolean;
164
+ targetYear?: number;
165
+ }
166
+ export declare class ZiweiCalculationError extends Error {
167
+ code: string;
168
+ details?: any | undefined;
169
+ constructor(message: string, code: string, details?: any | undefined);
170
+ }
171
+ export type PalacePosition = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
172
+ export interface BranchPosition {
173
+ branch: string;
174
+ position: PalacePosition;
175
+ }
176
+ export declare const BRANCH_POSITIONS: Record<string, {
177
+ row: number;
178
+ col: number;
179
+ }>;
180
+ export declare const PALACE_NAMES: string[];
181
+ export declare const PALACE_NAMES_EN: string[];
182
+ export declare const HEAVENLY_STEMS: string[];
183
+ export declare const EARTHLY_BRANCHES: string[];
184
+ export declare const HOUR_TO_INDEX: Record<number, number>;
185
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/ziwei/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,GAAG,EAAE,UAAU,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAID,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAGD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC9D;AAID,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH;AAID,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC;CACtC;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC;CACtC;AAID,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAID,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACjC;AAID,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,WAAW,CAAC;QACtB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;KACvB,CAAC;IACF,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAID,MAAM,WAAW,cAAe,SAAQ,MAAM;IAE5C,UAAU,CAAC,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IAGF,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAGF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAG5B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAID,MAAM,WAAW,WAAW;IAE1B,SAAS,EAAE,SAAS,CAAC;IAGrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IAGF,OAAO,EAAE,cAAc,EAAE,CAAC;IAG1B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;IAG3B,UAAU,CAAC,EAAE,UAAU,CAAC;IAGxB,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAGlC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,qBAAa,qBAAsB,SAAQ,KAAK;IAGrC,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,GAAG;gBAFpB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,GAAG,YAAA;CAKvB;AAID,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAGD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAIzE,CAAC;AAGF,eAAO,MAAM,YAAY,UAGxB,CAAC;AAGF,eAAO,MAAM,eAAe,UAG3B,CAAC;AAIF,eAAO,MAAM,cAAc,UAAqD,CAAC;AACjF,eAAO,MAAM,gBAAgB,UAA+D,CAAC;AAG7F,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAahD,CAAC"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /**
3
+ * 紫微斗数服务统一类型定义
4
+ * 所有紫微相关的类型都在这里定义,避免重复和混乱
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.HOUR_TO_INDEX = exports.EARTHLY_BRANCHES = exports.HEAVENLY_STEMS = exports.PALACE_NAMES_EN = exports.PALACE_NAMES = exports.BRANCH_POSITIONS = exports.ZiweiCalculationError = void 0;
8
+ // ==================== 错误类型 ====================
9
+ class ZiweiCalculationError extends Error {
10
+ code;
11
+ details;
12
+ constructor(message, code, details) {
13
+ super(message);
14
+ this.code = code;
15
+ this.details = details;
16
+ this.name = 'ZiweiCalculationError';
17
+ }
18
+ }
19
+ exports.ZiweiCalculationError = ZiweiCalculationError;
20
+ // 地支位置映射
21
+ exports.BRANCH_POSITIONS = {
22
+ '巳': { row: 0, col: 0 }, '午': { row: 0, col: 1 }, '未': { row: 0, col: 2 }, '申': { row: 0, col: 3 },
23
+ '酉': { row: 1, col: 3 }, '戌': { row: 2, col: 3 }, '亥': { row: 3, col: 3 }, '子': { row: 3, col: 2 },
24
+ '丑': { row: 3, col: 1 }, '寅': { row: 3, col: 0 }, '卯': { row: 2, col: 0 }, '辰': { row: 1, col: 0 }
25
+ };
26
+ // 宫位名称(按顺序 - 顺时针方向)
27
+ exports.PALACE_NAMES = [
28
+ '命宮', '父母', '福德', '田宅', '官祿', '交友',
29
+ '遷移', '疾厄', '財帛', '子女', '夫妻', '兄弟'
30
+ ];
31
+ // 英文宫位名称(顺时针方向)
32
+ exports.PALACE_NAMES_EN = [
33
+ 'Life', 'Parents', 'Fortune', 'Property', 'Career', 'Friends',
34
+ 'Travel', 'Health', 'Wealth', 'Children', 'Marriage', 'Siblings'
35
+ ];
36
+ // ==================== 常量 ====================
37
+ exports.HEAVENLY_STEMS = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'];
38
+ exports.EARTHLY_BRANCHES = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'];
39
+ // 时辰对应地支索引
40
+ exports.HOUR_TO_INDEX = {
41
+ 23: 0, 0: 0, // 子
42
+ 1: 1, 2: 1, // 丑
43
+ 3: 2, 4: 2, // 寅
44
+ 5: 3, 6: 3, // 卯
45
+ 7: 4, 8: 4, // 辰
46
+ 9: 5, 10: 5, // 巳
47
+ 11: 6, 12: 6, // 午
48
+ 13: 7, 14: 7, // 未
49
+ 15: 8, 16: 8, // 申
50
+ 17: 9, 18: 9, // 酉
51
+ 19: 10, 20: 10, // 戌
52
+ 21: 11, 22: 11 // 亥
53
+ };
54
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/ziwei/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Simple logger for MCP service
3
+ * Replaces the complex logger from baziwei that had React/Next.js dependencies
4
+ */
5
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
6
+ /**
7
+ * Simple Logger class
8
+ * Exported as both a class (for typing) and used to create instances
9
+ */
10
+ export declare class Logger {
11
+ private context;
12
+ private minLevel;
13
+ constructor(context?: string);
14
+ private shouldLog;
15
+ private formatMessage;
16
+ debug(message: string, data?: unknown): void;
17
+ info(message: string, data?: unknown): void;
18
+ warn(message: string, data?: unknown): void;
19
+ error(message: string, error?: unknown, data?: unknown): void;
20
+ }
21
+ /**
22
+ * Factory function to create logger instances
23
+ */
24
+ export declare function createLogger(context: string): Logger;
25
+ /**
26
+ * Log masker for sensitive data
27
+ * Provides methods to mask PII and sensitive information in logs
28
+ */
29
+ export declare const LogMasker: {
30
+ /**
31
+ * Mask a name - keep first character, mask the rest
32
+ */
33
+ maskName(name: string): string;
34
+ /**
35
+ * Mask a date - keep year and month, mask day
36
+ */
37
+ maskDate(date: string): string;
38
+ /**
39
+ * Mask a time - keep hour, mask minutes
40
+ */
41
+ maskTime(time: string): string;
42
+ /**
43
+ * Mask an object's sensitive fields
44
+ * @param obj - The object to mask
45
+ * @param sensitiveKeys - Array of keys to mask
46
+ * @returns A new object with sensitive fields masked
47
+ */
48
+ maskObject<T extends object>(obj: T, sensitiveKeys: string[]): Record<string, unknown>;
49
+ };
50
+ export default Logger;
51
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAY3D;;;GAGG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,MAAkB;IAKvC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,aAAa;IAMrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;CAQ9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;mBACY,MAAM,GAAG,MAAM;IAK9B;;OAEG;mBACY,MAAM,GAAG,MAAM;IAM9B;;OAEG;mBACY,MAAM,GAAG,MAAM;IAM9B;;;;;OAKG;eACQ,CAAC,SAAS,MAAM,OAAO,CAAC,iBAAiB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA4BvF,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * Simple logger for MCP service
4
+ * Replaces the complex logger from baziwei that had React/Next.js dependencies
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.LogMasker = exports.Logger = void 0;
8
+ exports.createLogger = createLogger;
9
+ const LOG_LEVELS = {
10
+ debug: 0,
11
+ info: 1,
12
+ warn: 2,
13
+ error: 3
14
+ };
15
+ // Default log level from environment or 'info'
16
+ const currentLevel = process.env.LOG_LEVEL || 'info';
17
+ /**
18
+ * Simple Logger class
19
+ * Exported as both a class (for typing) and used to create instances
20
+ */
21
+ class Logger {
22
+ context;
23
+ minLevel;
24
+ constructor(context = 'mingpan') {
25
+ this.context = context;
26
+ this.minLevel = LOG_LEVELS[currentLevel] ?? 1;
27
+ }
28
+ shouldLog(level) {
29
+ return LOG_LEVELS[level] >= this.minLevel;
30
+ }
31
+ formatMessage(level, message, data) {
32
+ const timestamp = new Date().toISOString();
33
+ const dataStr = data ? ` ${JSON.stringify(data)}` : '';
34
+ return `[${timestamp}] [${level.toUpperCase()}] [${this.context}] ${message}${dataStr}`;
35
+ }
36
+ debug(message, data) {
37
+ if (this.shouldLog('debug')) {
38
+ console.debug(this.formatMessage('debug', message, data));
39
+ }
40
+ }
41
+ info(message, data) {
42
+ if (this.shouldLog('info')) {
43
+ console.info(this.formatMessage('info', message, data));
44
+ }
45
+ }
46
+ warn(message, data) {
47
+ if (this.shouldLog('warn')) {
48
+ console.warn(this.formatMessage('warn', message, data));
49
+ }
50
+ }
51
+ error(message, error, data) {
52
+ if (this.shouldLog('error')) {
53
+ const errorData = error instanceof Error
54
+ ? { message: error.message, stack: error.stack, ...((data && typeof data === 'object') ? data : {}) }
55
+ : { error, ...((data && typeof data === 'object') ? data : {}) };
56
+ console.error(this.formatMessage('error', message, errorData));
57
+ }
58
+ }
59
+ }
60
+ exports.Logger = Logger;
61
+ /**
62
+ * Factory function to create logger instances
63
+ */
64
+ function createLogger(context) {
65
+ return new Logger(context);
66
+ }
67
+ /**
68
+ * Log masker for sensitive data
69
+ * Provides methods to mask PII and sensitive information in logs
70
+ */
71
+ exports.LogMasker = {
72
+ /**
73
+ * Mask a name - keep first character, mask the rest
74
+ */
75
+ maskName(name) {
76
+ if (!name || name.length < 2)
77
+ return '***';
78
+ return name[0] + '*'.repeat(name.length - 1);
79
+ },
80
+ /**
81
+ * Mask a date - keep year and month, mask day
82
+ */
83
+ maskDate(date) {
84
+ // Only mask day part: YYYY-MM-DD -> YYYY-MM-**
85
+ if (!date || date.length < 10)
86
+ return '****-**-**';
87
+ return date.slice(0, 8) + '**';
88
+ },
89
+ /**
90
+ * Mask a time - keep hour, mask minutes
91
+ */
92
+ maskTime(time) {
93
+ // Keep hour, mask minutes: HH:mm -> HH:**
94
+ if (!time || time.length < 5)
95
+ return '**:**';
96
+ return time.slice(0, 3) + '**';
97
+ },
98
+ /**
99
+ * Mask an object's sensitive fields
100
+ * @param obj - The object to mask
101
+ * @param sensitiveKeys - Array of keys to mask
102
+ * @returns A new object with sensitive fields masked
103
+ */
104
+ maskObject(obj, sensitiveKeys) {
105
+ if (!obj || typeof obj !== 'object')
106
+ return obj;
107
+ const result = { ...obj };
108
+ for (const key of sensitiveKeys) {
109
+ if (key in result && result[key] !== undefined) {
110
+ const value = result[key];
111
+ if (typeof value === 'string') {
112
+ // Apply appropriate masking based on key name
113
+ if (key.toLowerCase().includes('name')) {
114
+ result[key] = this.maskName(value);
115
+ }
116
+ else if (key.toLowerCase().includes('date')) {
117
+ result[key] = this.maskDate(value);
118
+ }
119
+ else if (key.toLowerCase().includes('time')) {
120
+ result[key] = this.maskTime(value);
121
+ }
122
+ else {
123
+ // Generic masking: show first 2 chars
124
+ result[key] = value.length > 2 ? value.slice(0, 2) + '***' : '***';
125
+ }
126
+ }
127
+ else {
128
+ result[key] = '[MASKED]';
129
+ }
130
+ }
131
+ }
132
+ return result;
133
+ }
134
+ };
135
+ exports.default = Logger;
136
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Shared types for MCP service
3
+ * Simplified from baziwei/frontend/src/shared/types
4
+ */
5
+ import type { BaziResult } from '../services/bazi/types.js';
6
+ import type { ZiweiResult } from '../services/ziwei/types.js';
7
+ /**
8
+ * Subject data - represents a person for fortune calculation
9
+ */
10
+ export interface SubjectData {
11
+ id: string;
12
+ name: string;
13
+ birthDate: string;
14
+ birthTime: string;
15
+ gender: 'male' | 'female';
16
+ isLunar?: boolean;
17
+ longitude?: number;
18
+ timezone?: string;
19
+ birthPlace?: string;
20
+ relationship?: string;
21
+ notes?: string;
22
+ baziData?: BaziResult;
23
+ ziweiData?: ZiweiResult;
24
+ }
25
+ /**
26
+ * Fortune query - describes what analysis to perform
27
+ */
28
+ export interface FortuneQuery {
29
+ who: {
30
+ mode: 'single' | 'double';
31
+ profiles: SubjectData[];
32
+ relationship?: string;
33
+ };
34
+ when: {
35
+ range: string;
36
+ targetYear?: number;
37
+ targetMonth?: number;
38
+ targetDay?: number;
39
+ };
40
+ what: {
41
+ aspect: string;
42
+ includeBazi?: boolean;
43
+ includeZiwei?: boolean;
44
+ };
45
+ }
46
+ /**
47
+ * Calculation input options
48
+ */
49
+ export interface CalculationInput {
50
+ year: number;
51
+ month: number;
52
+ day: number;
53
+ hour: number;
54
+ minute?: number;
55
+ gender: 'male' | 'female';
56
+ isLunar?: boolean;
57
+ longitude?: number;
58
+ }
59
+ /**
60
+ * MCP tool input types
61
+ */
62
+ export interface BaziToolInput {
63
+ year: number;
64
+ month: number;
65
+ day: number;
66
+ hour: number;
67
+ minute?: number;
68
+ gender?: 'male' | 'female';
69
+ longitude?: number;
70
+ isLunar?: boolean;
71
+ includeAnalysis?: boolean;
72
+ includeDaYun?: boolean;
73
+ includeLiuNian?: boolean;
74
+ detail?: 'simple' | 'standard' | 'detailed';
75
+ }
76
+ export interface ZiweiToolInput {
77
+ year: number;
78
+ month: number;
79
+ day: number;
80
+ hour: number;
81
+ gender: 'male' | 'female';
82
+ targetYear?: number;
83
+ includeDecades?: boolean;
84
+ includeMutagen?: boolean;
85
+ detail?: 'simple' | 'standard' | 'detailed';
86
+ }
87
+ export interface ChartToolInput extends BaziToolInput {
88
+ systems?: ('bazi' | 'ziwei')[];
89
+ targetYear?: number;
90
+ }
91
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Shared types for MCP service
4
+ * Simplified from baziwei/frontend/src/shared/types
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Age calculation utilities
3
+ * Simplified from baziwei/frontend/src/utils/ageCalculator.ts
4
+ */
5
+ /**
6
+ * Calculate nominal age (虛歲) - Chinese age calculation
7
+ * A person is considered 1 year old at birth, and gains a year at each lunar new year
8
+ *
9
+ * @param birthYear - Birth year
10
+ * @param targetYear - Target year for calculation (defaults to current year)
11
+ * @returns Nominal age in Chinese tradition
12
+ */
13
+ export declare function calculateNominalAge(birthYear: number, targetYear?: number): number;
14
+ /**
15
+ * Calculate Western age (實歲)
16
+ *
17
+ * @param birthDate - Birth date in ISO format (YYYY-MM-DD)
18
+ * @param targetDate - Target date (defaults to today)
19
+ * @returns Western age
20
+ */
21
+ export declare function calculateWesternAge(birthDate: string, targetDate?: string): number;
22
+ /**
23
+ * Calculate age range for DaYun (大運) period
24
+ *
25
+ * @param startAge - Start age of the DaYun period
26
+ * @param duration - Duration of the period (typically 10 years)
27
+ * @returns Formatted age range string
28
+ */
29
+ export declare function formatDaYunAgeRange(startAge: number, duration?: number): string;
30
+ //# sourceMappingURL=ageCalculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ageCalculator.d.ts","sourceRoot":"","sources":["../../src/utils/ageCalculator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAIlF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAYlF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM,CAGnF"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * Age calculation utilities
4
+ * Simplified from baziwei/frontend/src/utils/ageCalculator.ts
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.calculateNominalAge = calculateNominalAge;
8
+ exports.calculateWesternAge = calculateWesternAge;
9
+ exports.formatDaYunAgeRange = formatDaYunAgeRange;
10
+ /**
11
+ * Calculate nominal age (虛歲) - Chinese age calculation
12
+ * A person is considered 1 year old at birth, and gains a year at each lunar new year
13
+ *
14
+ * @param birthYear - Birth year
15
+ * @param targetYear - Target year for calculation (defaults to current year)
16
+ * @returns Nominal age in Chinese tradition
17
+ */
18
+ function calculateNominalAge(birthYear, targetYear) {
19
+ const currentYear = targetYear ?? new Date().getFullYear();
20
+ // Nominal age: target year - birth year + 1
21
+ return currentYear - birthYear + 1;
22
+ }
23
+ /**
24
+ * Calculate Western age (實歲)
25
+ *
26
+ * @param birthDate - Birth date in ISO format (YYYY-MM-DD)
27
+ * @param targetDate - Target date (defaults to today)
28
+ * @returns Western age
29
+ */
30
+ function calculateWesternAge(birthDate, targetDate) {
31
+ const birth = new Date(birthDate);
32
+ const target = targetDate ? new Date(targetDate) : new Date();
33
+ let age = target.getFullYear() - birth.getFullYear();
34
+ const monthDiff = target.getMonth() - birth.getMonth();
35
+ if (monthDiff < 0 || (monthDiff === 0 && target.getDate() < birth.getDate())) {
36
+ age--;
37
+ }
38
+ return age;
39
+ }
40
+ /**
41
+ * Calculate age range for DaYun (大運) period
42
+ *
43
+ * @param startAge - Start age of the DaYun period
44
+ * @param duration - Duration of the period (typically 10 years)
45
+ * @returns Formatted age range string
46
+ */
47
+ function formatDaYunAgeRange(startAge, duration = 10) {
48
+ const endAge = startAge + duration - 1;
49
+ return `${startAge}-${endAge}歲`;
50
+ }
51
+ //# sourceMappingURL=ageCalculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ageCalculator.js","sourceRoot":"","sources":["../../src/utils/ageCalculator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAUH,kDAIC;AASD,kDAYC;AASD,kDAGC;AA7CD;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,SAAiB,EAAE,UAAmB;IACxE,MAAM,WAAW,GAAG,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3D,4CAA4C;IAC5C,OAAO,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,SAAiB,EAAE,UAAmB;IACxE,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAE9D,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAEvD,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC7E,GAAG,EAAE,CAAC;IACR,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,QAAgB,EAAE,WAAmB,EAAE;IACzE,MAAM,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;IACvC,OAAO,GAAG,QAAQ,IAAI,MAAM,GAAG,CAAC;AAClC,CAAC"}