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,414 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Luck Cycle Calculator
|
|
4
|
+
* Implements taro-bazi's complete luck cycle system
|
|
5
|
+
* Handles DaYun (大運), LiuNian (流年), LiuYue (流月), and LiuRi (流日)
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.LuckCycleCalculator = void 0;
|
|
9
|
+
const bazi_1 = require("../../../core/constants/bazi");
|
|
10
|
+
const astronomicalCalendar_1 = require("../../../core/calendar/astronomicalCalendar");
|
|
11
|
+
const ageCalculator_1 = require("../../../utils/ageCalculator");
|
|
12
|
+
class LuckCycleCalculator {
|
|
13
|
+
/**
|
|
14
|
+
* Calculate delivery stems based on birth year stem
|
|
15
|
+
* Returns the stems of years when DaYun changes
|
|
16
|
+
*/
|
|
17
|
+
static calculateDeliveryStems(yearStemIndex) {
|
|
18
|
+
// Delivery occurs every 10 years on years with specific stems
|
|
19
|
+
// Pattern: if birth year stem index is n, delivery on (n+2)%10 and (n+7)%10
|
|
20
|
+
const stem1Index = (yearStemIndex + 2) % 10;
|
|
21
|
+
const stem2Index = (yearStemIndex + 7) % 10;
|
|
22
|
+
return [
|
|
23
|
+
bazi_1.HEAVENLY_STEMS[stem1Index].name,
|
|
24
|
+
bazi_1.HEAVENLY_STEMS[stem2Index].name
|
|
25
|
+
].sort();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Calculate delivery timing based on solar term
|
|
29
|
+
* This should calculate the exact days after the solar term for delivery
|
|
30
|
+
*/
|
|
31
|
+
static calculateDeliveryTiming(solarTermName, daysDiff) {
|
|
32
|
+
// Use absolute value and determine if before or after
|
|
33
|
+
const absDays = Math.abs(Math.round(daysDiff));
|
|
34
|
+
if (absDays === 0) {
|
|
35
|
+
return `${solarTermName}当天`;
|
|
36
|
+
}
|
|
37
|
+
else if (daysDiff > 0) {
|
|
38
|
+
return `${solarTermName}后${absDays}天`;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
return `${solarTermName}前${absDays}天`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Calculate void branches (空亡) for a stem-branch combination
|
|
46
|
+
*/
|
|
47
|
+
static calculateVoidBranches(stem, branch) {
|
|
48
|
+
const stemIndex = bazi_1.HEAVENLY_STEMS.findIndex(s => s.name === stem);
|
|
49
|
+
const branchIndex = bazi_1.EARTHLY_BRANCHES.findIndex(b => b.name === branch);
|
|
50
|
+
if (stemIndex === -1 || branchIndex === -1)
|
|
51
|
+
return [];
|
|
52
|
+
// Calculate the JiaZi cycle position
|
|
53
|
+
const cyclePosition = (branchIndex - stemIndex + 12) % 12;
|
|
54
|
+
// Determine void branches based on the 60-cycle position
|
|
55
|
+
const voidMap = {
|
|
56
|
+
0: ['戌', '亥'], // 甲子旬
|
|
57
|
+
1: ['戌', '亥'], // 甲子旬
|
|
58
|
+
2: ['申', '酉'], // 甲戌旬
|
|
59
|
+
3: ['申', '酉'], // 甲戌旬
|
|
60
|
+
4: ['午', '未'], // 甲申旬
|
|
61
|
+
5: ['午', '未'], // 甲申旬
|
|
62
|
+
6: ['辰', '巳'], // 甲午旬
|
|
63
|
+
7: ['辰', '巳'], // 甲午旬
|
|
64
|
+
8: ['寅', '卯'], // 甲辰旬
|
|
65
|
+
9: ['寅', '卯'], // 甲辰旬
|
|
66
|
+
10: ['子', '丑'], // 甲寅旬
|
|
67
|
+
11: ['子', '丑'] // 甲寅旬
|
|
68
|
+
};
|
|
69
|
+
return voidMap[cyclePosition] || [];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Calculate luck sequence direction based on gender and year stem
|
|
73
|
+
* Male + Yang year OR Female + Yin year = Forward
|
|
74
|
+
* Male + Yin year OR Female + Yang year = Backward
|
|
75
|
+
*/
|
|
76
|
+
static calLuckySequence(gender, yearStem) {
|
|
77
|
+
const stemData = bazi_1.HEAVENLY_STEMS.find(s => s.name === yearStem);
|
|
78
|
+
const isYangStem = stemData?.yinYang === 'yang';
|
|
79
|
+
// Male with Yang stem or Female with Yin stem goes forward
|
|
80
|
+
if ((gender === 'male' && isYangStem) || (gender === 'female' && !isYangStem)) {
|
|
81
|
+
return 'forward';
|
|
82
|
+
}
|
|
83
|
+
// Male with Yin stem or Female with Yang stem goes backward
|
|
84
|
+
return 'backward';
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Calculate the starting age and date for luck cycles
|
|
88
|
+
* Based on distance to nearest solar term (forward or backward)
|
|
89
|
+
*/
|
|
90
|
+
static calLuckyAge(birthDate, gender, yearStem) {
|
|
91
|
+
const direction = this.calLuckySequence(gender, yearStem);
|
|
92
|
+
const year = birthDate.getFullYear();
|
|
93
|
+
// Define JIE terms (节) - only these are used for DaYun calculation
|
|
94
|
+
const jieTerms = ['立春', '惊蛰', '清明', '立夏', '芒种', '小暑', '立秋', '白露', '寒露', '立冬', '大雪', '小寒'];
|
|
95
|
+
// Get all solar terms for birth year and adjacent years
|
|
96
|
+
const allSolarTerms = [
|
|
97
|
+
...(0, astronomicalCalendar_1.getSolarTermsForYear)(year - 1),
|
|
98
|
+
...(0, astronomicalCalendar_1.getSolarTermsForYear)(year),
|
|
99
|
+
...(0, astronomicalCalendar_1.getSolarTermsForYear)(year + 1)
|
|
100
|
+
];
|
|
101
|
+
// Filter to only include JIE terms
|
|
102
|
+
const solarTerms = allSolarTerms.filter(term => jieTerms.includes(term.name));
|
|
103
|
+
// Find nearest JIE term based on direction
|
|
104
|
+
let nearestTerm = null;
|
|
105
|
+
let minDays = Infinity;
|
|
106
|
+
for (const term of solarTerms) {
|
|
107
|
+
const daysDiff = Math.abs(term.date.getTime() - birthDate.getTime()) / (1000 * 60 * 60 * 24);
|
|
108
|
+
if (direction === 'forward') {
|
|
109
|
+
// Find next JIE term
|
|
110
|
+
if (term.date > birthDate && daysDiff < minDays) {
|
|
111
|
+
minDays = daysDiff;
|
|
112
|
+
nearestTerm = term;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Find previous JIE term
|
|
117
|
+
if (term.date < birthDate && daysDiff < minDays) {
|
|
118
|
+
minDays = daysDiff;
|
|
119
|
+
nearestTerm = term;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Calculate starting age using traditional formula from 八字命理算法开发指南2
|
|
124
|
+
// Get precise time difference in minutes
|
|
125
|
+
const totalMinutes = minDays * 24 * 60;
|
|
126
|
+
const totalHours = totalMinutes / 60;
|
|
127
|
+
const totalDaysExact = totalHours / 24;
|
|
128
|
+
// Traditional conversion: 3 days = 1 year, 1 day = 4 months, 1 hour = 5 days
|
|
129
|
+
// First convert to total hours for more precision
|
|
130
|
+
const totalHoursExact = totalDaysExact * 24;
|
|
131
|
+
// 3 days = 1 year, so 72 hours = 1 year
|
|
132
|
+
const years = Math.floor(totalHoursExact / 72);
|
|
133
|
+
const remainingHoursAfterYears = totalHoursExact - (years * 72);
|
|
134
|
+
// 1 day = 4 months, so 24 hours = 4 months, 6 hours = 1 month
|
|
135
|
+
const months = Math.floor(remainingHoursAfterYears / 6);
|
|
136
|
+
const remainingHoursAfterMonths = remainingHoursAfterYears - (months * 6);
|
|
137
|
+
// 1 hour = 5 days (传统算法)
|
|
138
|
+
const days = Math.floor(remainingHoursAfterMonths * 5);
|
|
139
|
+
const remainingDayFraction = (remainingHoursAfterMonths * 5) - days;
|
|
140
|
+
// Convert remaining day fraction to hours: 1 day = 24 hours
|
|
141
|
+
const hours = Math.round(remainingDayFraction * 24);
|
|
142
|
+
// Calculate start age based on the detailed time
|
|
143
|
+
// 起运时间是出生后的时间,需要加上虚岁1
|
|
144
|
+
// 如果起运时间是2年9月多,那么第一个大运从虚岁4岁开始
|
|
145
|
+
const startAge = years + 1 + (months >= 6 ? 1 : 0);
|
|
146
|
+
// Calculate actual start date
|
|
147
|
+
const startDate = new Date(birthDate);
|
|
148
|
+
startDate.setFullYear(birthDate.getFullYear() + startAge);
|
|
149
|
+
// Calculate delivery years pattern
|
|
150
|
+
const yearStemIndex = bazi_1.HEAVENLY_STEMS.findIndex(s => s.name === yearStem);
|
|
151
|
+
const deliveryStems = this.calculateDeliveryStems(yearStemIndex);
|
|
152
|
+
// For delivery timing, we need to calculate when DaYun changes occur
|
|
153
|
+
// According to traditional BaZi rules:
|
|
154
|
+
// Delivery happens on the exact time offset from birth
|
|
155
|
+
// The solar term reference is based on the original calculation direction
|
|
156
|
+
let deliveryTiming = '';
|
|
157
|
+
if (nearestTerm && years >= 0) {
|
|
158
|
+
// The delivery timing is based on the same solar term used for start calculation
|
|
159
|
+
// For backward direction (like this case), it's relative to the previous JIE term
|
|
160
|
+
// Calculate the exact delivery timing based on the start time offset
|
|
161
|
+
// Birth time + start time = first delivery moment
|
|
162
|
+
// This happens at birth hour + hours, birth day + days, etc.
|
|
163
|
+
// Then find which solar term this is closest to
|
|
164
|
+
// Since we calculated from Jingzhe (backward), delivery timing should be relative to a JIE term
|
|
165
|
+
// The delivery pattern follows the birth time pattern based on calculated offset
|
|
166
|
+
// Traditional rule: delivery occurs at the same time offset as the DaYun start
|
|
167
|
+
// So if DaYun starts at 2年9月28天15時 after birth,
|
|
168
|
+
// delivery happens at this exact time offset in delivery years
|
|
169
|
+
// Find the solar term closest to this time pattern
|
|
170
|
+
const deliveryHour = birthDate.getHours() + hours;
|
|
171
|
+
const deliveryDayOfMonth = birthDate.getDate() + days;
|
|
172
|
+
// For the expected case: birth March 14 + 28 days ≈ April 11
|
|
173
|
+
// The nearest JIE term would be 清明 (April 5) or 立夏 (May 5)
|
|
174
|
+
// But traditionally, for backward calculation from 惊蛰,
|
|
175
|
+
// the delivery reference should be 小寒 (previous year's cycle)
|
|
176
|
+
// Traditional rule: DaYun changes occur at the same time offset as initial DaYun start
|
|
177
|
+
// The delivery happens in specific years (丁、壬) at birth time + DaYun start offset
|
|
178
|
+
// Calculate the exact delivery date/time pattern
|
|
179
|
+
const deliveryDate = new Date(birthDate);
|
|
180
|
+
deliveryDate.setFullYear(deliveryDate.getFullYear() + years);
|
|
181
|
+
deliveryDate.setMonth(deliveryDate.getMonth() + months);
|
|
182
|
+
deliveryDate.setDate(deliveryDate.getDate() + days);
|
|
183
|
+
deliveryDate.setHours(deliveryDate.getHours() + hours);
|
|
184
|
+
// Find which solar term this delivery date is closest to
|
|
185
|
+
const deliveryYear = deliveryDate.getFullYear();
|
|
186
|
+
const deliveryTerms = (0, astronomicalCalendar_1.getSolarTermsForYear)(deliveryYear).filter(term => jieTerms.includes(term.name));
|
|
187
|
+
let closestTerm = deliveryTerms[0];
|
|
188
|
+
let minDiff = Math.abs(deliveryDate.getTime() - closestTerm.date.getTime());
|
|
189
|
+
for (const term of deliveryTerms) {
|
|
190
|
+
const diff = Math.abs(deliveryDate.getTime() - term.date.getTime());
|
|
191
|
+
if (diff < minDiff) {
|
|
192
|
+
minDiff = diff;
|
|
193
|
+
closestTerm = term;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// Calculate days offset from the closest solar term
|
|
197
|
+
const daysDiff = (deliveryDate.getTime() - closestTerm.date.getTime()) / (1000 * 60 * 60 * 24);
|
|
198
|
+
const deliveryTermName = closestTerm.name;
|
|
199
|
+
const daysOffset = daysDiff;
|
|
200
|
+
deliveryTiming = this.calculateDeliveryTiming(deliveryTermName, daysOffset);
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
direction,
|
|
204
|
+
startAge,
|
|
205
|
+
startDate,
|
|
206
|
+
detailedStartTime: {
|
|
207
|
+
years,
|
|
208
|
+
months,
|
|
209
|
+
days,
|
|
210
|
+
hours
|
|
211
|
+
},
|
|
212
|
+
deliveryYears: deliveryStems,
|
|
213
|
+
deliveryTiming
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Calculate complete list of 10-year luck pillars (大運)
|
|
218
|
+
* Usually calculates 8-10 periods covering 80-100 years
|
|
219
|
+
*/
|
|
220
|
+
static calLuckyList(chart, gender, birthDate, numberOfPeriods = 10) {
|
|
221
|
+
const luckSequence = this.calLuckyAge(birthDate, gender, chart.year.stem);
|
|
222
|
+
const { direction, startAge } = luckSequence;
|
|
223
|
+
// Find starting point from month pillar
|
|
224
|
+
const monthStemIndex = bazi_1.HEAVENLY_STEMS.findIndex(s => s.name === chart.month.stem);
|
|
225
|
+
const monthBranchIndex = bazi_1.EARTHLY_BRANCHES.findIndex(b => b.name === chart.month.branch);
|
|
226
|
+
const periods = [];
|
|
227
|
+
for (let i = 0; i < numberOfPeriods; i++) {
|
|
228
|
+
// Calculate stem and branch indices
|
|
229
|
+
let stemIndex;
|
|
230
|
+
let branchIndex;
|
|
231
|
+
if (direction === 'forward') {
|
|
232
|
+
stemIndex = (monthStemIndex + i + 1) % 10;
|
|
233
|
+
branchIndex = (monthBranchIndex + i + 1) % 12;
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// 修复负数模运算问题:确保结果始终为正数
|
|
237
|
+
stemIndex = ((monthStemIndex - i - 1) % 10 + 10) % 10;
|
|
238
|
+
branchIndex = ((monthBranchIndex - i - 1) % 12 + 12) % 12;
|
|
239
|
+
}
|
|
240
|
+
// 添加防御性检查确保索引有效
|
|
241
|
+
if (stemIndex < 0 || stemIndex >= bazi_1.HEAVENLY_STEMS.length || !bazi_1.HEAVENLY_STEMS[stemIndex]) {
|
|
242
|
+
throw new Error(`Invalid stem index: ${stemIndex} for period ${i}, monthStemIndex: ${monthStemIndex}, direction: ${direction}`);
|
|
243
|
+
}
|
|
244
|
+
if (branchIndex < 0 || branchIndex >= bazi_1.EARTHLY_BRANCHES.length || !bazi_1.EARTHLY_BRANCHES[branchIndex]) {
|
|
245
|
+
throw new Error(`Invalid branch index: ${branchIndex} for period ${i}, monthBranchIndex: ${monthBranchIndex}, direction: ${direction}`);
|
|
246
|
+
}
|
|
247
|
+
const stem = bazi_1.HEAVENLY_STEMS[stemIndex].name;
|
|
248
|
+
const branch = bazi_1.EARTHLY_BRANCHES[branchIndex].name;
|
|
249
|
+
// Get element from stem
|
|
250
|
+
const element = bazi_1.HEAVENLY_STEMS[stemIndex].element;
|
|
251
|
+
// Calculate void branches for this DaYun period
|
|
252
|
+
const voidBranches = this.calculateVoidBranches(stem, branch);
|
|
253
|
+
periods.push({
|
|
254
|
+
index: i,
|
|
255
|
+
startAge: startAge + (i * 10),
|
|
256
|
+
endAge: startAge + ((i + 1) * 10) - 1,
|
|
257
|
+
stemBranch: { stem, branch },
|
|
258
|
+
element,
|
|
259
|
+
yinYang: bazi_1.HEAVENLY_STEMS[stemIndex].yinYang,
|
|
260
|
+
voidBranches
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
return periods;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Calculate fleeting year list (流年)
|
|
267
|
+
* Returns yearly pillars for specified years
|
|
268
|
+
*/
|
|
269
|
+
static calFleetingYearList(birthYear, years) {
|
|
270
|
+
const liuNianList = [];
|
|
271
|
+
for (const year of years) {
|
|
272
|
+
// Calculate stem and branch for the year
|
|
273
|
+
const stemIndex = (year - 4) % 10;
|
|
274
|
+
const branchIndex = (year - 4) % 12;
|
|
275
|
+
const stem = bazi_1.HEAVENLY_STEMS[stemIndex].name;
|
|
276
|
+
const branch = bazi_1.EARTHLY_BRANCHES[branchIndex].name;
|
|
277
|
+
// Get element from stem
|
|
278
|
+
const element = bazi_1.HEAVENLY_STEMS[stemIndex].element;
|
|
279
|
+
liuNianList.push({
|
|
280
|
+
year,
|
|
281
|
+
age: (0, ageCalculator_1.calculateNominalAge)(birthYear, year), // Chinese age (虚岁)
|
|
282
|
+
stemBranch: { stem, branch },
|
|
283
|
+
element,
|
|
284
|
+
yinYang: bazi_1.HEAVENLY_STEMS[stemIndex].yinYang
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
return liuNianList;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Calculate fleeting month list (流月)
|
|
291
|
+
* Returns monthly pillars for a specific year
|
|
292
|
+
*/
|
|
293
|
+
static calFleetingMonthList(year) {
|
|
294
|
+
const months = [];
|
|
295
|
+
// Get year stem index for month calculation
|
|
296
|
+
const yearStemIndex = (year - 4) % 10;
|
|
297
|
+
// Month stem calculation formula:
|
|
298
|
+
// First month stem = (year stem * 2 + 1) % 10
|
|
299
|
+
const firstMonthStemIndex = (yearStemIndex * 2 + 2) % 10;
|
|
300
|
+
for (let month = 1; month <= 12; month++) {
|
|
301
|
+
const stemIndex = (firstMonthStemIndex + month - 1) % 10;
|
|
302
|
+
const branchIndex = (month + 1) % 12; // 寅月 is first month
|
|
303
|
+
const stem = bazi_1.HEAVENLY_STEMS[stemIndex].name;
|
|
304
|
+
const branch = bazi_1.EARTHLY_BRANCHES[branchIndex].name;
|
|
305
|
+
// Get element from stem
|
|
306
|
+
const element = bazi_1.HEAVENLY_STEMS[stemIndex].element;
|
|
307
|
+
months.push({
|
|
308
|
+
year,
|
|
309
|
+
month,
|
|
310
|
+
stemBranch: { stem, branch },
|
|
311
|
+
element
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
return months;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Calculate fleeting day list (流日)
|
|
318
|
+
* Returns daily pillars for a specific month
|
|
319
|
+
*/
|
|
320
|
+
static calFleetingDayList(year, month) {
|
|
321
|
+
const days = [];
|
|
322
|
+
// Calculate starting Julian Day for the month
|
|
323
|
+
const startJD = (0, astronomicalCalendar_1.gregorianToJulianDay)(year, month, 1);
|
|
324
|
+
// Reference date: 甲子日 = JD 2394479.5 (1845-12-31)
|
|
325
|
+
const referenceJD = 2394479.5;
|
|
326
|
+
const daysSinceReference = Math.floor(startJD - referenceJD);
|
|
327
|
+
// Get days in month
|
|
328
|
+
const daysInMonth = new Date(year, month, 0).getDate();
|
|
329
|
+
for (let day = 1; day <= daysInMonth; day++) {
|
|
330
|
+
const currentJD = startJD + day - 1;
|
|
331
|
+
const dayIndex = Math.floor(currentJD - referenceJD);
|
|
332
|
+
const stemIndex = dayIndex % 10;
|
|
333
|
+
const branchIndex = dayIndex % 12;
|
|
334
|
+
const stem = bazi_1.HEAVENLY_STEMS[stemIndex].name;
|
|
335
|
+
const branch = bazi_1.EARTHLY_BRANCHES[branchIndex].name;
|
|
336
|
+
// Get element from stem
|
|
337
|
+
const element = bazi_1.HEAVENLY_STEMS[stemIndex].element;
|
|
338
|
+
days.push({
|
|
339
|
+
date: new Date(year, month - 1, day),
|
|
340
|
+
stemBranch: { stem, branch },
|
|
341
|
+
element
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
return days;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Get current DaYun period for a specific age
|
|
348
|
+
*/
|
|
349
|
+
static getCurrentDaYun(daYunList, age) {
|
|
350
|
+
return daYunList.find(period => age >= period.startAge && age <= period.endAge) || null;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Get current LiuNian for a specific year
|
|
354
|
+
*/
|
|
355
|
+
static getCurrentLiuNian(birthYear, currentYear) {
|
|
356
|
+
const [liuNian] = this.calFleetingYearList(birthYear, [currentYear]);
|
|
357
|
+
return liuNian;
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Calculate interaction between DaYun and LiuNian
|
|
361
|
+
* Returns analysis of their combined influence
|
|
362
|
+
*/
|
|
363
|
+
static analyzeDaYunLiuNian(daYun, liuNian) {
|
|
364
|
+
// Analyze stem relationship
|
|
365
|
+
const daYunStemIndex = bazi_1.HEAVENLY_STEMS.findIndex(s => s.name === daYun.stemBranch.stem);
|
|
366
|
+
const liuNianStemIndex = bazi_1.HEAVENLY_STEMS.findIndex(s => s.name === liuNian.stemBranch.stem);
|
|
367
|
+
let stemRelation = '中性';
|
|
368
|
+
const stemDiff = Math.abs(daYunStemIndex - liuNianStemIndex);
|
|
369
|
+
if (stemDiff === 5) {
|
|
370
|
+
stemRelation = 'combine'; // 天干合
|
|
371
|
+
}
|
|
372
|
+
else if (stemDiff === 4 || stemDiff === 6) {
|
|
373
|
+
stemRelation = 'clash'; // 天干冲
|
|
374
|
+
}
|
|
375
|
+
// Analyze branch relationship
|
|
376
|
+
const daYunBranchIndex = bazi_1.EARTHLY_BRANCHES.findIndex(b => b.name === daYun.stemBranch.branch);
|
|
377
|
+
const liuNianBranchIndex = bazi_1.EARTHLY_BRANCHES.findIndex(b => b.name === liuNian.stemBranch.branch);
|
|
378
|
+
let branchRelation = '中性';
|
|
379
|
+
const branchDiff = Math.abs(daYunBranchIndex - liuNianBranchIndex);
|
|
380
|
+
if (branchDiff === 6) {
|
|
381
|
+
branchRelation = 'clash'; // 地支冲
|
|
382
|
+
}
|
|
383
|
+
else if ([1, 5, 7, 11].includes(branchDiff)) {
|
|
384
|
+
branchRelation = 'harmony'; // 地支合
|
|
385
|
+
}
|
|
386
|
+
// Analyze elemental balance
|
|
387
|
+
let elementalBalance = '平衡';
|
|
388
|
+
if (daYun.element === liuNian.element) {
|
|
389
|
+
elementalBalance = 'reinforced';
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
// Check generating/controlling cycle
|
|
393
|
+
const generatingCycle = {
|
|
394
|
+
'木': '火', '火': '土', '土': '金', '金': '水', '水': '木'
|
|
395
|
+
};
|
|
396
|
+
const controllingCycle = {
|
|
397
|
+
'木': '土', '土': '水', '水': '火', '火': '金', '金': '木'
|
|
398
|
+
};
|
|
399
|
+
if (generatingCycle[daYun.element] === liuNian.element) {
|
|
400
|
+
elementalBalance = 'generating';
|
|
401
|
+
}
|
|
402
|
+
else if (controllingCycle[daYun.element] === liuNian.element) {
|
|
403
|
+
elementalBalance = 'controlling';
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
return {
|
|
407
|
+
stemRelation,
|
|
408
|
+
branchRelation,
|
|
409
|
+
elementalBalance
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
exports.LuckCycleCalculator = LuckCycleCalculator;
|
|
414
|
+
//# sourceMappingURL=LuckCycleCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LuckCycleCalculator.js","sourceRoot":"","sources":["../../../../src/services/bazi/calculators/LuckCycleCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaZi Service Exports
|
|
3
|
+
* Unified exports for the BaZi service module
|
|
4
|
+
*/
|
|
5
|
+
export { BaziService, baziService } from './BaziService';
|
|
6
|
+
export * from './types';
|
|
7
|
+
export { BaziCore, TrueSolarTime } from '../../core/bazi';
|
|
8
|
+
export { StrengthAnalyzer } from './analyzers/StrengthAnalyzer';
|
|
9
|
+
export { TenGodsAnalyzer, TEN_GOD_ATTRIBUTES } from './analyzers/TenGodsAnalyzer';
|
|
10
|
+
export { YongShenAnalyzer } from './analyzers/YongShenAnalyzer';
|
|
11
|
+
export { PatternAnalyzer } from './analyzers/PatternAnalyzer';
|
|
12
|
+
export { RelationsAnalyzer } from './analyzers/RelationsAnalyzer';
|
|
13
|
+
export { ShenShaAnalyzer } from './analyzers/ShenShaAnalyzer';
|
|
14
|
+
export { NaYinAnalyzer } from './analyzers/NaYinAnalyzer';
|
|
15
|
+
export { DaYunCalculator } from './calculators/DaYunCalculator';
|
|
16
|
+
export { LiuNianCalculator } from './calculators/LiuNianCalculator';
|
|
17
|
+
export { LiuYueCalculator } from './calculators/LiuYueCalculator';
|
|
18
|
+
export { LiuRiCalculator } from './calculators/LiuRiCalculator';
|
|
19
|
+
export { LuckCycleCalculator } from './calculators/LuckCycleCalculator';
|
|
20
|
+
export * as BaziConstants from '../../core/constants/bazi';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/bazi/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGzD,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BaZi Service Exports
|
|
4
|
+
* Unified exports for the BaZi service module
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
23
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
24
|
+
};
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.BaziConstants = exports.LuckCycleCalculator = exports.LiuRiCalculator = exports.LiuYueCalculator = exports.LiuNianCalculator = exports.DaYunCalculator = exports.NaYinAnalyzer = exports.ShenShaAnalyzer = exports.RelationsAnalyzer = exports.PatternAnalyzer = exports.YongShenAnalyzer = exports.TEN_GOD_ATTRIBUTES = exports.TenGodsAnalyzer = exports.StrengthAnalyzer = exports.TrueSolarTime = exports.BaziCore = exports.baziService = exports.BaziService = void 0;
|
|
44
|
+
// Export main service
|
|
45
|
+
var BaziService_1 = require("./BaziService");
|
|
46
|
+
Object.defineProperty(exports, "BaziService", { enumerable: true, get: function () { return BaziService_1.BaziService; } });
|
|
47
|
+
Object.defineProperty(exports, "baziService", { enumerable: true, get: function () { return BaziService_1.baziService; } });
|
|
48
|
+
// Export all types
|
|
49
|
+
__exportStar(require("./types"), exports);
|
|
50
|
+
// Export core classes if needed for advanced usage
|
|
51
|
+
var bazi_1 = require("../../core/bazi");
|
|
52
|
+
Object.defineProperty(exports, "BaziCore", { enumerable: true, get: function () { return bazi_1.BaziCore; } });
|
|
53
|
+
Object.defineProperty(exports, "TrueSolarTime", { enumerable: true, get: function () { return bazi_1.TrueSolarTime; } });
|
|
54
|
+
// Export analyzers for component usage
|
|
55
|
+
var StrengthAnalyzer_1 = require("./analyzers/StrengthAnalyzer");
|
|
56
|
+
Object.defineProperty(exports, "StrengthAnalyzer", { enumerable: true, get: function () { return StrengthAnalyzer_1.StrengthAnalyzer; } });
|
|
57
|
+
var TenGodsAnalyzer_1 = require("./analyzers/TenGodsAnalyzer");
|
|
58
|
+
Object.defineProperty(exports, "TenGodsAnalyzer", { enumerable: true, get: function () { return TenGodsAnalyzer_1.TenGodsAnalyzer; } });
|
|
59
|
+
Object.defineProperty(exports, "TEN_GOD_ATTRIBUTES", { enumerable: true, get: function () { return TenGodsAnalyzer_1.TEN_GOD_ATTRIBUTES; } });
|
|
60
|
+
var YongShenAnalyzer_1 = require("./analyzers/YongShenAnalyzer");
|
|
61
|
+
Object.defineProperty(exports, "YongShenAnalyzer", { enumerable: true, get: function () { return YongShenAnalyzer_1.YongShenAnalyzer; } });
|
|
62
|
+
var PatternAnalyzer_1 = require("./analyzers/PatternAnalyzer");
|
|
63
|
+
Object.defineProperty(exports, "PatternAnalyzer", { enumerable: true, get: function () { return PatternAnalyzer_1.PatternAnalyzer; } });
|
|
64
|
+
var RelationsAnalyzer_1 = require("./analyzers/RelationsAnalyzer");
|
|
65
|
+
Object.defineProperty(exports, "RelationsAnalyzer", { enumerable: true, get: function () { return RelationsAnalyzer_1.RelationsAnalyzer; } });
|
|
66
|
+
var ShenShaAnalyzer_1 = require("./analyzers/ShenShaAnalyzer");
|
|
67
|
+
Object.defineProperty(exports, "ShenShaAnalyzer", { enumerable: true, get: function () { return ShenShaAnalyzer_1.ShenShaAnalyzer; } });
|
|
68
|
+
var NaYinAnalyzer_1 = require("./analyzers/NaYinAnalyzer");
|
|
69
|
+
Object.defineProperty(exports, "NaYinAnalyzer", { enumerable: true, get: function () { return NaYinAnalyzer_1.NaYinAnalyzer; } });
|
|
70
|
+
// Export calculators for advanced usage
|
|
71
|
+
var DaYunCalculator_1 = require("./calculators/DaYunCalculator");
|
|
72
|
+
Object.defineProperty(exports, "DaYunCalculator", { enumerable: true, get: function () { return DaYunCalculator_1.DaYunCalculator; } });
|
|
73
|
+
var LiuNianCalculator_1 = require("./calculators/LiuNianCalculator");
|
|
74
|
+
Object.defineProperty(exports, "LiuNianCalculator", { enumerable: true, get: function () { return LiuNianCalculator_1.LiuNianCalculator; } });
|
|
75
|
+
var LiuYueCalculator_1 = require("./calculators/LiuYueCalculator");
|
|
76
|
+
Object.defineProperty(exports, "LiuYueCalculator", { enumerable: true, get: function () { return LiuYueCalculator_1.LiuYueCalculator; } });
|
|
77
|
+
var LiuRiCalculator_1 = require("./calculators/LiuRiCalculator");
|
|
78
|
+
Object.defineProperty(exports, "LiuRiCalculator", { enumerable: true, get: function () { return LiuRiCalculator_1.LiuRiCalculator; } });
|
|
79
|
+
var LuckCycleCalculator_1 = require("./calculators/LuckCycleCalculator");
|
|
80
|
+
Object.defineProperty(exports, "LuckCycleCalculator", { enumerable: true, get: function () { return LuckCycleCalculator_1.LuckCycleCalculator; } });
|
|
81
|
+
// Export constants for reference
|
|
82
|
+
exports.BaziConstants = __importStar(require("../../core/constants/bazi"));
|
|
83
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/bazi/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sBAAsB;AACtB,6CAAyD;AAAhD,0GAAA,WAAW,OAAA;AAAE,0GAAA,WAAW,OAAA;AAEjC,mBAAmB;AACnB,0CAAwB;AAExB,mDAAmD;AACnD,wCAA0D;AAAjD,gGAAA,QAAQ,OAAA;AAAE,qGAAA,aAAa,OAAA;AAEhC,uCAAuC;AACvC,iEAAgE;AAAvD,oHAAA,gBAAgB,OAAA;AACzB,+DAAkF;AAAzE,kHAAA,eAAe,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAC5C,iEAAgE;AAAvD,oHAAA,gBAAgB,OAAA;AACzB,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AACxB,mEAAkE;AAAzD,sHAAA,iBAAiB,OAAA;AAC1B,+DAA8D;AAArD,kHAAA,eAAe,OAAA;AACxB,2DAA0D;AAAjD,8GAAA,aAAa,OAAA;AAEtB,wCAAwC;AACxC,iEAAgE;AAAvD,kHAAA,eAAe,OAAA;AACxB,qEAAoE;AAA3D,sHAAA,iBAAiB,OAAA;AAC1B,mEAAkE;AAAzD,oHAAA,gBAAgB,OAAA;AACzB,iEAAgE;AAAvD,kHAAA,eAAe,OAAA;AACxB,yEAAwE;AAA/D,0HAAA,mBAAmB,OAAA;AAE5B,iCAAiC;AACjC,2EAA2D"}
|