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.
- package/LICENSE +201 -0
- package/README.md +118 -0
- package/dist/core/bazi/BaziCore.d.ts +112 -0
- package/dist/core/bazi/BaziCore.d.ts.map +1 -0
- package/dist/core/bazi/BaziCore.js +606 -0
- package/dist/core/bazi/BaziCore.js.map +1 -0
- package/dist/core/bazi/SolarTermCalculator.d.ts +46 -0
- package/dist/core/bazi/SolarTermCalculator.d.ts.map +1 -0
- package/dist/core/bazi/SolarTermCalculator.js +452 -0
- package/dist/core/bazi/SolarTermCalculator.js.map +1 -0
- package/dist/core/bazi/TrueSolarTime.d.ts +64 -0
- package/dist/core/bazi/TrueSolarTime.d.ts.map +1 -0
- package/dist/core/bazi/TrueSolarTime.js +210 -0
- package/dist/core/bazi/TrueSolarTime.js.map +1 -0
- package/dist/core/bazi/ephemerisData.d.ts +10 -0
- package/dist/core/bazi/ephemerisData.d.ts.map +1 -0
- package/dist/core/bazi/ephemerisData.js +88 -0
- package/dist/core/bazi/ephemerisData.js.map +1 -0
- package/dist/core/bazi/index.d.ts +8 -0
- package/dist/core/bazi/index.d.ts.map +1 -0
- package/dist/core/bazi/index.js +30 -0
- package/dist/core/bazi/index.js.map +1 -0
- package/dist/core/bazi/types.d.ts +116 -0
- package/dist/core/bazi/types.d.ts.map +1 -0
- package/dist/core/bazi/types.js +7 -0
- package/dist/core/bazi/types.js.map +1 -0
- package/dist/core/calendar/SolarTermsCalculator.d.ts +33 -0
- package/dist/core/calendar/SolarTermsCalculator.d.ts.map +1 -0
- package/dist/core/calendar/SolarTermsCalculator.js +111 -0
- package/dist/core/calendar/SolarTermsCalculator.js.map +1 -0
- package/dist/core/calendar/astronomicalCalendar.d.ts +74 -0
- package/dist/core/calendar/astronomicalCalendar.d.ts.map +1 -0
- package/dist/core/calendar/astronomicalCalendar.js +276 -0
- package/dist/core/calendar/astronomicalCalendar.js.map +1 -0
- package/dist/core/calendar/calendar.d.ts +81 -0
- package/dist/core/calendar/calendar.d.ts.map +1 -0
- package/dist/core/calendar/calendar.js +223 -0
- package/dist/core/calendar/calendar.js.map +1 -0
- package/dist/core/calendar/constants.d.ts +151 -0
- package/dist/core/calendar/constants.d.ts.map +1 -0
- package/dist/core/calendar/constants.js +97 -0
- package/dist/core/calendar/constants.js.map +1 -0
- package/dist/core/calendar/julian.d.ts +54 -0
- package/dist/core/calendar/julian.d.ts.map +1 -0
- package/dist/core/calendar/julian.js +142 -0
- package/dist/core/calendar/julian.js.map +1 -0
- package/dist/core/calendar/lunarCalendar.d.ts +79 -0
- package/dist/core/calendar/lunarCalendar.d.ts.map +1 -0
- package/dist/core/calendar/lunarCalendar.js +164 -0
- package/dist/core/calendar/lunarCalendar.js.map +1 -0
- package/dist/core/calendar/solarTerms.d.ts +105 -0
- package/dist/core/calendar/solarTerms.d.ts.map +1 -0
- package/dist/core/calendar/solarTerms.js +487 -0
- package/dist/core/calendar/solarTerms.js.map +1 -0
- package/dist/core/constants/bazi.d.ts +138 -0
- package/dist/core/constants/bazi.d.ts.map +1 -0
- package/dist/core/constants/bazi.js +332 -0
- package/dist/core/constants/bazi.js.map +1 -0
- package/dist/core/constants/index.d.ts +6 -0
- package/dist/core/constants/index.d.ts.map +1 -0
- package/dist/core/constants/index.js +37 -0
- package/dist/core/constants/index.js.map +1 -0
- package/dist/core/constants/positions.d.ts +27 -0
- package/dist/core/constants/positions.d.ts.map +1 -0
- package/dist/core/constants/positions.js +39 -0
- package/dist/core/constants/positions.js.map +1 -0
- package/dist/core/ziwei/BrightnessSystem.d.ts +53 -0
- package/dist/core/ziwei/BrightnessSystem.d.ts.map +1 -0
- package/dist/core/ziwei/BrightnessSystem.js +278 -0
- package/dist/core/ziwei/BrightnessSystem.js.map +1 -0
- package/dist/core/ziwei/IztroAdapter.d.ts +78 -0
- package/dist/core/ziwei/IztroAdapter.d.ts.map +1 -0
- package/dist/core/ziwei/IztroAdapter.js +314 -0
- package/dist/core/ziwei/IztroAdapter.js.map +1 -0
- package/dist/core/ziwei/MutagenCore.d.ts +81 -0
- package/dist/core/ziwei/MutagenCore.d.ts.map +1 -0
- package/dist/core/ziwei/MutagenCore.js +246 -0
- package/dist/core/ziwei/MutagenCore.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1101 -0
- package/dist/index.js.map +1 -0
- package/dist/output/fortuneTextRenderer.d.ts +63 -0
- package/dist/output/fortuneTextRenderer.d.ts.map +1 -0
- package/dist/output/fortuneTextRenderer.js +384 -0
- package/dist/output/fortuneTextRenderer.js.map +1 -0
- package/dist/output/listTextRenderer.d.ts +298 -0
- package/dist/output/listTextRenderer.d.ts.map +1 -0
- package/dist/output/listTextRenderer.js +942 -0
- package/dist/output/listTextRenderer.js.map +1 -0
- package/dist/services/bazi/BaziService.d.ts +83 -0
- package/dist/services/bazi/BaziService.d.ts.map +1 -0
- package/dist/services/bazi/BaziService.js +635 -0
- package/dist/services/bazi/BaziService.js.map +1 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts +31 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.js +194 -0
- package/dist/services/bazi/analyzers/ClimateAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts +16 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js +60 -0
- package/dist/services/bazi/analyzers/HiddenStemsAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts +33 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.js +209 -0
- package/dist/services/bazi/analyzers/NaYinAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts +159 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.js +1150 -0
- package/dist/services/bazi/analyzers/PatternAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts +114 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.js +704 -0
- package/dist/services/bazi/analyzers/RelationsAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts +236 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.js +2079 -0
- package/dist/services/bazi/analyzers/ShenShaAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts +181 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.js +1119 -0
- package/dist/services/bazi/analyzers/StrengthAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts +78 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.js +383 -0
- package/dist/services/bazi/analyzers/TenGodsAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts +46 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.js +260 -0
- package/dist/services/bazi/analyzers/TraditionalAnalyzer.js.map +1 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts +70 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.d.ts.map +1 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.js +858 -0
- package/dist/services/bazi/analyzers/YongShenAnalyzer.js.map +1 -0
- package/dist/services/bazi/calculators/DaYunCalculator.d.ts +71 -0
- package/dist/services/bazi/calculators/DaYunCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/DaYunCalculator.js +496 -0
- package/dist/services/bazi/calculators/DaYunCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.d.ts +88 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.js +546 -0
- package/dist/services/bazi/calculators/LiuNianCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.d.ts +66 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.js +497 -0
- package/dist/services/bazi/calculators/LiuRiCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.d.ts +50 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.js +338 -0
- package/dist/services/bazi/calculators/LiuYueCalculator.js.map +1 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts +123 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.d.ts.map +1 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.js +414 -0
- package/dist/services/bazi/calculators/LuckCycleCalculator.js.map +1 -0
- package/dist/services/bazi/index.d.ts +21 -0
- package/dist/services/bazi/index.d.ts.map +1 -0
- package/dist/services/bazi/index.js +83 -0
- package/dist/services/bazi/index.js.map +1 -0
- package/dist/services/bazi/types.d.ts +597 -0
- package/dist/services/bazi/types.d.ts.map +1 -0
- package/dist/services/bazi/types.js +123 -0
- package/dist/services/bazi/types.js.map +1 -0
- package/dist/services/ziwei/ZiweiService.d.ts +86 -0
- package/dist/services/ziwei/ZiweiService.d.ts.map +1 -0
- package/dist/services/ziwei/ZiweiService.js +343 -0
- package/dist/services/ziwei/ZiweiService.js.map +1 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts +38 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.js +142 -0
- package/dist/services/ziwei/calculators/BrightnessCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/DailyCalculator.d.ts +27 -0
- package/dist/services/ziwei/calculators/DailyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/DailyCalculator.js +55 -0
- package/dist/services/ziwei/calculators/DailyCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.d.ts +46 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.js +181 -0
- package/dist/services/ziwei/calculators/DecadeCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts +28 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js +84 -0
- package/dist/services/ziwei/calculators/HoroscopeStarsCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.d.ts +41 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.js +139 -0
- package/dist/services/ziwei/calculators/HourlyCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts +30 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.js +90 -0
- package/dist/services/ziwei/calculators/MinorLimitCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts +39 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.js +128 -0
- package/dist/services/ziwei/calculators/MonthlyCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.d.ts +20 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.js +121 -0
- package/dist/services/ziwei/calculators/MutagenCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts +35 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js +55 -0
- package/dist/services/ziwei/calculators/PalaceDynamicCalculator.js.map +1 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.d.ts +35 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.d.ts.map +1 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.js +119 -0
- package/dist/services/ziwei/calculators/YearlyCalculator.js.map +1 -0
- package/dist/services/ziwei/index.d.ts +15 -0
- package/dist/services/ziwei/index.d.ts.map +1 -0
- package/dist/services/ziwei/index.js +48 -0
- package/dist/services/ziwei/index.js.map +1 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.d.ts +62 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.d.ts.map +1 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.js +153 -0
- package/dist/services/ziwei/transformers/PalaceTransformer.js.map +1 -0
- package/dist/services/ziwei/types.d.ts +185 -0
- package/dist/services/ziwei/types.d.ts.map +1 -0
- package/dist/services/ziwei/types.js +54 -0
- package/dist/services/ziwei/types.js.map +1 -0
- package/dist/shared/logger.d.ts +51 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +136 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/types.d.ts +91 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +7 -0
- package/dist/shared/types.js.map +1 -0
- package/dist/utils/ageCalculator.d.ts +30 -0
- package/dist/utils/ageCalculator.d.ts.map +1 -0
- package/dist/utils/ageCalculator.js +51 -0
- package/dist/utils/ageCalculator.js.map +1 -0
- 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 @@
|
|
|
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"}
|