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,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":"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"}
|
|
@@ -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
|