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,487 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 统一的节气计算模块
|
|
4
|
+
* 整合了原calendar/solarTerms.ts和bazi/astronomy/solarTerm.ts的功能
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PreciseSolarTermCalculator = exports.SOLAR_TERMS = exports.SOLAR_TERMS_NAMES = void 0;
|
|
8
|
+
exports.calculateSolarTerms = calculateSolarTerms;
|
|
9
|
+
exports.findSolarTerm = findSolarTerm;
|
|
10
|
+
exports.getSolarTermMonthFromDate = getSolarTermMonthFromDate;
|
|
11
|
+
exports.getSolarTermMonthByDate = getSolarTermMonthFromDate;
|
|
12
|
+
exports.getSolarTermMonth = getSolarTermMonth;
|
|
13
|
+
exports.getAccurateLichunDate = getAccurateLichunDate;
|
|
14
|
+
const julian_1 = require("./julian");
|
|
15
|
+
const lunar_javascript_1 = require("lunar-javascript");
|
|
16
|
+
/**
|
|
17
|
+
* 24节气名称
|
|
18
|
+
*/
|
|
19
|
+
exports.SOLAR_TERMS_NAMES = [
|
|
20
|
+
'小寒', '大寒', '立春', '雨水', '惊蛰', '春分',
|
|
21
|
+
'清明', '谷雨', '立夏', '小满', '芒种', '夏至',
|
|
22
|
+
'小暑', '大暑', '立秋', '处暑', '白露', '秋分',
|
|
23
|
+
'寒露', '霜降', '立冬', '小雪', '大雪', '冬至'
|
|
24
|
+
];
|
|
25
|
+
// 节气数据定义
|
|
26
|
+
exports.SOLAR_TERMS = exports.SOLAR_TERMS_NAMES;
|
|
27
|
+
/**
|
|
28
|
+
* 精确的节气计算器类
|
|
29
|
+
*/
|
|
30
|
+
class PreciseSolarTermCalculator {
|
|
31
|
+
// 基准数据:2000年各节气的儒略日
|
|
32
|
+
static SOLAR_TERM_BASE_2000 = [
|
|
33
|
+
2451547.65, // 小寒
|
|
34
|
+
2451562.95, // 大寒
|
|
35
|
+
2451578.31, // 立春
|
|
36
|
+
2451593.63, // 雨水
|
|
37
|
+
2451609.00, // 惊蛰
|
|
38
|
+
2451624.39, // 春分
|
|
39
|
+
2451639.83, // 清明
|
|
40
|
+
2451655.28, // 谷雨
|
|
41
|
+
2451670.76, // 立夏
|
|
42
|
+
2451686.26, // 小满
|
|
43
|
+
2451701.77, // 芒种
|
|
44
|
+
2451717.31, // 夏至
|
|
45
|
+
2451732.86, // 小暑
|
|
46
|
+
2451748.42, // 大暑
|
|
47
|
+
2451764.00, // 立秋
|
|
48
|
+
2451779.60, // 处暑
|
|
49
|
+
2451795.22, // 白露
|
|
50
|
+
2451810.86, // 秋分
|
|
51
|
+
2451826.52, // 寒露
|
|
52
|
+
2451842.21, // 霜降
|
|
53
|
+
2451857.93, // 立冬
|
|
54
|
+
2451873.68, // 小雪
|
|
55
|
+
2451889.46, // 大雪
|
|
56
|
+
2451905.28 // 冬至
|
|
57
|
+
];
|
|
58
|
+
// 每年的平均增量(天)
|
|
59
|
+
static YEAR_INCREMENT = 365.2422;
|
|
60
|
+
// 章动和岁差修正系数
|
|
61
|
+
static PRECESSION_RATE = 0.0000137; // 每年的岁差
|
|
62
|
+
/**
|
|
63
|
+
* 获取指定日期的节气信息
|
|
64
|
+
*/
|
|
65
|
+
static getSolarTermInfo(date) {
|
|
66
|
+
const year = date.getFullYear();
|
|
67
|
+
const solarTerms = this.calculateYearSolarTerms(year);
|
|
68
|
+
let currentIndex = -1;
|
|
69
|
+
for (let i = 23; i >= 0; i--) {
|
|
70
|
+
if (date >= solarTerms[i].date) {
|
|
71
|
+
currentIndex = i;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// 如果在第一个节气之前,使用上一年的最后一个节气
|
|
76
|
+
if (currentIndex === -1) {
|
|
77
|
+
const prevYearTerms = this.calculateYearSolarTerms(year - 1);
|
|
78
|
+
currentIndex = 23;
|
|
79
|
+
return {
|
|
80
|
+
currentSolarTerm: exports.SOLAR_TERMS_NAMES[23],
|
|
81
|
+
nextSolarTerm: exports.SOLAR_TERMS_NAMES[0],
|
|
82
|
+
currentSolarTermDate: prevYearTerms[23].date,
|
|
83
|
+
nextSolarTermDate: solarTerms[0].date,
|
|
84
|
+
isAfterLichun: false
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const nextIndex = (currentIndex + 1) % 24;
|
|
88
|
+
const nextTerms = nextIndex === 0 ?
|
|
89
|
+
this.calculateYearSolarTerms(year + 1) :
|
|
90
|
+
solarTerms;
|
|
91
|
+
return {
|
|
92
|
+
currentSolarTerm: exports.SOLAR_TERMS_NAMES[currentIndex],
|
|
93
|
+
nextSolarTerm: exports.SOLAR_TERMS_NAMES[nextIndex],
|
|
94
|
+
currentSolarTermDate: solarTerms[currentIndex].date,
|
|
95
|
+
nextSolarTermDate: nextTerms[nextIndex].date,
|
|
96
|
+
isAfterLichun: currentIndex >= 2 || (currentIndex < 2 && date >= solarTerms[2].date)
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 计算某年所有节气
|
|
101
|
+
* 使用 lunar-javascript 的 getJieQiTable() 获取精确的节气日期
|
|
102
|
+
*/
|
|
103
|
+
static calculateYearSolarTerms(year) {
|
|
104
|
+
const terms = [];
|
|
105
|
+
// 使用 lunar-javascript 的 getJieQiTable 获取完整节气表
|
|
106
|
+
// 该方法返回包含该年前后所有节气的精确时间
|
|
107
|
+
const jieQiTable = this.getJieQiTableFromLunar(year);
|
|
108
|
+
// 节气名称按照本文件定义的顺序
|
|
109
|
+
for (const termName of exports.SOLAR_TERMS_NAMES) {
|
|
110
|
+
const termData = jieQiTable.get(termName);
|
|
111
|
+
if (termData) {
|
|
112
|
+
terms.push({ name: termName, date: termData });
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// Fallback: 使用原有算法
|
|
116
|
+
const termIndex = exports.SOLAR_TERMS_NAMES.indexOf(termName);
|
|
117
|
+
terms.push({ name: termName, date: this.calculateSingleTermFallback(year, termIndex) });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// 按日期排序确保顺序正确
|
|
121
|
+
terms.sort((a, b) => a.date.getTime() - b.date.getTime());
|
|
122
|
+
return terms;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* 使用 lunar-javascript 获取某年所有节气的精确日期
|
|
126
|
+
* 通过 Lunar.getJieQiTable() 方法获取
|
|
127
|
+
*/
|
|
128
|
+
static getJieQiTableFromLunar(year) {
|
|
129
|
+
const result = new Map();
|
|
130
|
+
// 英文名称到中文名称的映射
|
|
131
|
+
// jieQiTable 中部分节气使用英文拼音名(如下一年的节气)
|
|
132
|
+
const englishToChineseMap = {
|
|
133
|
+
'XIAO_HAN': '小寒',
|
|
134
|
+
'DA_HAN': '大寒',
|
|
135
|
+
'LI_CHUN': '立春',
|
|
136
|
+
'YU_SHUI': '雨水',
|
|
137
|
+
'JING_ZHE': '惊蛰',
|
|
138
|
+
'CHUN_FEN': '春分',
|
|
139
|
+
'QING_MING': '清明',
|
|
140
|
+
'GU_YU': '谷雨',
|
|
141
|
+
'LI_XIA': '立夏',
|
|
142
|
+
'XIAO_MAN': '小满',
|
|
143
|
+
'MANG_ZHONG': '芒种',
|
|
144
|
+
'XIA_ZHI': '夏至',
|
|
145
|
+
'XIAO_SHU': '小暑',
|
|
146
|
+
'DA_SHU': '大暑',
|
|
147
|
+
'LI_QIU': '立秋',
|
|
148
|
+
'CHU_SHU': '处暑',
|
|
149
|
+
'BAI_LU': '白露',
|
|
150
|
+
'QIU_FEN': '秋分',
|
|
151
|
+
'HAN_LU': '寒露',
|
|
152
|
+
'SHUANG_JIANG': '霜降',
|
|
153
|
+
'LI_DONG': '立冬',
|
|
154
|
+
'XIAO_XUE': '小雪',
|
|
155
|
+
'DA_XUE': '大雪',
|
|
156
|
+
'DONG_ZHI': '冬至',
|
|
157
|
+
};
|
|
158
|
+
// 获取某一天的农历对象,然后获取完整节气表
|
|
159
|
+
// 使用年中的某一天来确保获取该年的节气数据
|
|
160
|
+
const solar = lunar_javascript_1.Solar.fromYmd(year, 6, 15);
|
|
161
|
+
const lunar = solar.getLunar();
|
|
162
|
+
const jieQiTable = lunar.getJieQiTable();
|
|
163
|
+
if (jieQiTable) {
|
|
164
|
+
// 首先收集所有节气数据,按年份分类
|
|
165
|
+
const termsByYear = new Map();
|
|
166
|
+
for (const [termName, termValue] of Object.entries(jieQiTable)) {
|
|
167
|
+
const p = termValue?._p;
|
|
168
|
+
if (p && p.year && p.month && p.day) {
|
|
169
|
+
// 转换英文名称为中文
|
|
170
|
+
let chineseName = termName;
|
|
171
|
+
if (englishToChineseMap[termName]) {
|
|
172
|
+
chineseName = englishToChineseMap[termName];
|
|
173
|
+
}
|
|
174
|
+
else if (!/^[\u4e00-\u9fa5]+$/.test(termName)) {
|
|
175
|
+
// 忽略其他非中文名称
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
const date = new Date(p.year, p.month - 1, p.day, p.hour || 0, p.minute || 0, p.second || 0);
|
|
179
|
+
const key = `${chineseName}_${p.year}`;
|
|
180
|
+
if (!termsByYear.has(chineseName)) {
|
|
181
|
+
termsByYear.set(chineseName, []);
|
|
182
|
+
}
|
|
183
|
+
termsByYear.get(chineseName).push({ name: chineseName, date, year: p.year });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// 对于每个节气,选择正确年份的数据
|
|
187
|
+
for (const [termName, entries] of termsByYear) {
|
|
188
|
+
// 优先选择目标年份的数据
|
|
189
|
+
let selected = entries.find(e => e.year === year);
|
|
190
|
+
// 特殊处理跨年节气(小寒、大寒可能在次年1月)
|
|
191
|
+
if (!selected && (termName === '小寒' || termName === '大寒')) {
|
|
192
|
+
selected = entries.find(e => e.year === year + 1);
|
|
193
|
+
}
|
|
194
|
+
// 如果没有找到,选择最接近目标年份的数据
|
|
195
|
+
if (!selected && entries.length > 0) {
|
|
196
|
+
selected = entries.sort((a, b) => Math.abs(a.year - year) - Math.abs(b.year - year))[0];
|
|
197
|
+
}
|
|
198
|
+
if (selected) {
|
|
199
|
+
result.set(termName, selected.date);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return result;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* 通过检测月干支变化来定位节气(JIE)的精确日期
|
|
207
|
+
* lunar-javascript 的月干支会在节气当天变化
|
|
208
|
+
*/
|
|
209
|
+
static findJieTermDatesByGanZhiChange(year) {
|
|
210
|
+
const result = new Map();
|
|
211
|
+
// 节气名称及其对应的月支变化
|
|
212
|
+
// 当月干支从一个值变为另一个值时,就是节气当天
|
|
213
|
+
const jieToMonthBranch = {
|
|
214
|
+
'小寒': '丑', // 子月->丑月
|
|
215
|
+
'立春': '寅', // 丑月->寅月
|
|
216
|
+
'惊蛰': '卯', // 寅月->卯月
|
|
217
|
+
'清明': '辰', // 卯月->辰月
|
|
218
|
+
'立夏': '巳', // 辰月->巳月
|
|
219
|
+
'芒种': '午', // 巳月->午月
|
|
220
|
+
'小暑': '未', // 午月->未月
|
|
221
|
+
'立秋': '申', // 未月->申月
|
|
222
|
+
'白露': '酉', // 申月->酉月
|
|
223
|
+
'寒露': '戌', // 酉月->戌月
|
|
224
|
+
'立冬': '亥', // 戌月->亥月
|
|
225
|
+
'大雪': '子', // 亥月->子月
|
|
226
|
+
};
|
|
227
|
+
// 遍历一年中的每一天,检测月干支变化
|
|
228
|
+
const startDate = new Date(year, 0, 1); // 1月1日
|
|
229
|
+
const endDate = new Date(year + 1, 0, 31); // 次年1月31日
|
|
230
|
+
let prevMonthGanZhi = '';
|
|
231
|
+
const currentDate = new Date(startDate);
|
|
232
|
+
while (currentDate <= endDate) {
|
|
233
|
+
try {
|
|
234
|
+
const solar = lunar_javascript_1.Solar.fromYmd(currentDate.getFullYear(), currentDate.getMonth() + 1, currentDate.getDate());
|
|
235
|
+
const lunar = solar.getLunar();
|
|
236
|
+
const monthGanZhi = lunar.getMonthInGanZhi();
|
|
237
|
+
if (prevMonthGanZhi && monthGanZhi !== prevMonthGanZhi) {
|
|
238
|
+
// 月干支发生变化,这是节气当天
|
|
239
|
+
const newBranch = monthGanZhi.substring(1); // 取地支
|
|
240
|
+
// 找到对应的节气
|
|
241
|
+
for (const [jieName, branch] of Object.entries(jieToMonthBranch)) {
|
|
242
|
+
if (branch === newBranch) {
|
|
243
|
+
// 检查年份是否匹配(小寒和大雪可能跨年)
|
|
244
|
+
const isCurrentYear = currentDate.getFullYear() === year;
|
|
245
|
+
const isJanNextYear = currentDate.getFullYear() === year + 1 && currentDate.getMonth() === 0;
|
|
246
|
+
const isDecCurrentYear = currentDate.getFullYear() === year && currentDate.getMonth() === 11;
|
|
247
|
+
if ((jieName === '小寒' && isJanNextYear) ||
|
|
248
|
+
(jieName === '大雪' && isDecCurrentYear) ||
|
|
249
|
+
(jieName !== '小寒' && jieName !== '大雪' && isCurrentYear)) {
|
|
250
|
+
result.set(jieName, new Date(currentDate));
|
|
251
|
+
}
|
|
252
|
+
else if (jieName === '小寒' && currentDate.getFullYear() === year && currentDate.getMonth() === 0) {
|
|
253
|
+
// 当年1月的小寒
|
|
254
|
+
result.set(jieName, new Date(currentDate));
|
|
255
|
+
}
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
prevMonthGanZhi = monthGanZhi;
|
|
261
|
+
}
|
|
262
|
+
catch (e) {
|
|
263
|
+
// 忽略无效日期
|
|
264
|
+
}
|
|
265
|
+
currentDate.setDate(currentDate.getDate() + 1);
|
|
266
|
+
}
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* 使用原有算法计算单个节气的日期(作为 fallback)
|
|
271
|
+
*/
|
|
272
|
+
static calculateSingleTermFallback(year, termIndex) {
|
|
273
|
+
const yearDiff = year - 2000;
|
|
274
|
+
// 基础儒略日
|
|
275
|
+
let jd = this.SOLAR_TERM_BASE_2000[termIndex];
|
|
276
|
+
// 年份修正
|
|
277
|
+
jd += yearDiff * this.YEAR_INCREMENT;
|
|
278
|
+
// 岁差修正
|
|
279
|
+
jd += yearDiff * yearDiff * this.PRECESSION_RATE;
|
|
280
|
+
// 章动修正(简化版)
|
|
281
|
+
const T = yearDiff / 100;
|
|
282
|
+
const nutation = 0.0001 * Math.sin(125.04 - 1934.136 * T);
|
|
283
|
+
jd += nutation;
|
|
284
|
+
// 转换为公历日期
|
|
285
|
+
const gregorian = (0, julian_1.julianDayToGregorian)(jd);
|
|
286
|
+
return new Date(gregorian.year, gregorian.month - 1, gregorian.day, gregorian.hour, gregorian.minute, gregorian.second);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
exports.PreciseSolarTermCalculator = PreciseSolarTermCalculator;
|
|
290
|
+
/**
|
|
291
|
+
* 计算某年24节气的精确时间
|
|
292
|
+
* @param year 年份
|
|
293
|
+
* @returns 24节气时间数组
|
|
294
|
+
*/
|
|
295
|
+
function calculateSolarTerms(year) {
|
|
296
|
+
const terms = PreciseSolarTermCalculator.calculateYearSolarTerms(year);
|
|
297
|
+
return terms.map(t => t.date);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* 计算某个节气的儒略日
|
|
301
|
+
* @param year 年份
|
|
302
|
+
* @param termIndex 节气索引 (0-23)
|
|
303
|
+
* @returns 儒略日
|
|
304
|
+
*/
|
|
305
|
+
function calculateSolarTermJD(year, termIndex) {
|
|
306
|
+
// 基准年份和角度
|
|
307
|
+
const baseYear = 2000;
|
|
308
|
+
const yearDiff = year - baseYear;
|
|
309
|
+
// 每个节气对应的太阳黄经度数 (从小寒开始,每15度一个节气)
|
|
310
|
+
const baseLongitude = 285 + termIndex * 15; // 小寒对应285度
|
|
311
|
+
const longitude = baseLongitude % 360;
|
|
312
|
+
// 概略计算:基于平均值
|
|
313
|
+
const dayOfYear = getSolarTermApproxDay(termIndex, year);
|
|
314
|
+
const baseJD = (0, julian_1.gregorianToJulianDay)(year, 1, 1) + dayOfYear - 1;
|
|
315
|
+
// 使用迭代法精确计算
|
|
316
|
+
let jd = baseJD;
|
|
317
|
+
for (let i = 0; i < 10; i++) {
|
|
318
|
+
const actualLongitude = getSolarLongitude(jd);
|
|
319
|
+
const diff = normalizeLongitude(longitude - actualLongitude);
|
|
320
|
+
if (Math.abs(diff) < 0.0001)
|
|
321
|
+
break;
|
|
322
|
+
// 太阳每天移动约1度
|
|
323
|
+
jd += diff / 1.0;
|
|
324
|
+
}
|
|
325
|
+
return jd;
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* 获取节气在一年中的大概日期
|
|
329
|
+
* @param termIndex 节气索引
|
|
330
|
+
* @param year 年份
|
|
331
|
+
* @returns 年内第几天
|
|
332
|
+
*/
|
|
333
|
+
function getSolarTermApproxDay(termIndex, year) {
|
|
334
|
+
// 基础天数(基于现代天文数据)
|
|
335
|
+
const baseDays = [
|
|
336
|
+
5, 20, // 小寒、大寒
|
|
337
|
+
4, 19, // 立春、雨水
|
|
338
|
+
6, 21, // 惊蛰、春分
|
|
339
|
+
5, 20, // 清明、谷雨
|
|
340
|
+
6, 21, // 立夏、小满
|
|
341
|
+
6, 22, // 芒种、夏至
|
|
342
|
+
7, 23, // 小暑、大暑
|
|
343
|
+
8, 23, // 立秋、处暑
|
|
344
|
+
8, 23, // 白露、秋分
|
|
345
|
+
8, 24, // 寒露、霜降
|
|
346
|
+
8, 22, // 立冬、小雪
|
|
347
|
+
7, 22 // 大雪、冬至
|
|
348
|
+
];
|
|
349
|
+
const monthStart = Math.floor(termIndex / 2);
|
|
350
|
+
const dayInMonth = baseDays[termIndex];
|
|
351
|
+
let dayOfYear = dayInMonth;
|
|
352
|
+
for (let m = 0; m < monthStart; m++) {
|
|
353
|
+
dayOfYear += getDaysInMonth(year, m + 1);
|
|
354
|
+
}
|
|
355
|
+
return dayOfYear;
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* 计算太阳黄经
|
|
359
|
+
* @param jd 儒略日
|
|
360
|
+
* @returns 太阳黄经度数
|
|
361
|
+
*/
|
|
362
|
+
function getSolarLongitude(jd) {
|
|
363
|
+
// 简化的太阳黄经计算(实际应使用VSOP87等高精度算法)
|
|
364
|
+
const t = (jd - 2451545.0) / 36525.0; // 儒略世纪数
|
|
365
|
+
// 平均近点角
|
|
366
|
+
const M = 357.5291 + 35999.0503 * t - 0.0001559 * t * t - 0.00000048 * t * t * t;
|
|
367
|
+
// 太阳的平均黄经
|
|
368
|
+
const L0 = 280.46645 + 36000.76983 * t + 0.0003032 * t * t;
|
|
369
|
+
// 黄经改正
|
|
370
|
+
const C = (1.9146 - 0.004817 * t - 0.000014 * t * t) * Math.sin(toRadians(M))
|
|
371
|
+
+ (0.019993 - 0.000101 * t) * Math.sin(toRadians(2 * M))
|
|
372
|
+
+ 0.000290 * Math.sin(toRadians(3 * M));
|
|
373
|
+
// 真黄经
|
|
374
|
+
const longitude = L0 + C;
|
|
375
|
+
return normalizeLongitude(longitude);
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* 角度转弧度
|
|
379
|
+
*/
|
|
380
|
+
function toRadians(degrees) {
|
|
381
|
+
return degrees * Math.PI / 180;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* 规范化角度到0-360度
|
|
385
|
+
*/
|
|
386
|
+
function normalizeLongitude(longitude) {
|
|
387
|
+
while (longitude < 0)
|
|
388
|
+
longitude += 360;
|
|
389
|
+
while (longitude >= 360)
|
|
390
|
+
longitude -= 360;
|
|
391
|
+
return longitude;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* 获取某月的天数
|
|
395
|
+
*/
|
|
396
|
+
function getDaysInMonth(year, month) {
|
|
397
|
+
return new Date(year, month, 0).getDate();
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* 查找某日期对应的节气
|
|
401
|
+
* @param date 日期
|
|
402
|
+
* @returns 节气信息
|
|
403
|
+
*/
|
|
404
|
+
function findSolarTerm(date) {
|
|
405
|
+
const year = date.getFullYear();
|
|
406
|
+
const terms = calculateSolarTerms(year);
|
|
407
|
+
// 添加前一年最后一个节气和后一年第一个节气
|
|
408
|
+
const prevYearTerms = calculateSolarTerms(year - 1);
|
|
409
|
+
const nextYearTerms = calculateSolarTerms(year + 1);
|
|
410
|
+
const allTerms = [
|
|
411
|
+
...prevYearTerms.slice(-1).map((d, i) => ({ date: d, index: 23, name: exports.SOLAR_TERMS_NAMES[23] })),
|
|
412
|
+
...terms.map((d, i) => ({ date: d, index: i, name: exports.SOLAR_TERMS_NAMES[i] })),
|
|
413
|
+
...nextYearTerms.slice(0, 1).map((d, i) => ({ date: d, index: 0, name: exports.SOLAR_TERMS_NAMES[0] }))
|
|
414
|
+
];
|
|
415
|
+
let current = null;
|
|
416
|
+
let next = null;
|
|
417
|
+
let previous = null;
|
|
418
|
+
for (let i = 0; i < allTerms.length; i++) {
|
|
419
|
+
const term = allTerms[i];
|
|
420
|
+
if (term.date <= date) {
|
|
421
|
+
previous = current;
|
|
422
|
+
current = term;
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
next = term;
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
return { current, next, previous };
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* 获取某日期所在的节气月份
|
|
433
|
+
* @param date 日期
|
|
434
|
+
* @returns 节气月份信息
|
|
435
|
+
*/
|
|
436
|
+
function getSolarTermMonthFromDate(date) {
|
|
437
|
+
const termInfo = findSolarTerm(date);
|
|
438
|
+
if (!termInfo.current) {
|
|
439
|
+
throw new Error('无法确定节气月份');
|
|
440
|
+
}
|
|
441
|
+
// 节气月以立春为起点
|
|
442
|
+
const monthIndex = Math.floor((termInfo.current.index + 22) / 2) % 12;
|
|
443
|
+
const monthNames = [
|
|
444
|
+
'正月', '二月', '三月', '四月', '五月', '六月',
|
|
445
|
+
'七月', '八月', '九月', '十月', '十一月', '十二月'
|
|
446
|
+
];
|
|
447
|
+
const startTermIndex = monthIndex * 2 + 2; // 立春开始
|
|
448
|
+
const endTermIndex = (startTermIndex + 1) % 24;
|
|
449
|
+
return {
|
|
450
|
+
monthIndex,
|
|
451
|
+
monthName: monthNames[monthIndex],
|
|
452
|
+
startTerm: exports.SOLAR_TERMS_NAMES[startTermIndex % 24],
|
|
453
|
+
endTerm: exports.SOLAR_TERMS_NAMES[endTermIndex]
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* 根据年月日获取节气月份(用于八字计算)
|
|
458
|
+
* @param year 年
|
|
459
|
+
* @param month 月
|
|
460
|
+
* @param day 日
|
|
461
|
+
* @returns 节气月份索引 (0-11)
|
|
462
|
+
*/
|
|
463
|
+
function getSolarTermMonth(year, month, day) {
|
|
464
|
+
const date = new Date(year, month - 1, day);
|
|
465
|
+
const termInfo = PreciseSolarTermCalculator.getSolarTermInfo(date);
|
|
466
|
+
// 根据当前节气确定月份
|
|
467
|
+
const termIndex = exports.SOLAR_TERMS_NAMES.indexOf(termInfo.currentSolarTerm);
|
|
468
|
+
// 节气月份从寅月(立春)开始
|
|
469
|
+
// 小寒、大寒属于丑月(11)
|
|
470
|
+
// 立春、雨水属于寅月(0)
|
|
471
|
+
// 以此类推
|
|
472
|
+
if (termIndex < 2) {
|
|
473
|
+
// 小寒、大寒属于上一年的丑月
|
|
474
|
+
return 11;
|
|
475
|
+
}
|
|
476
|
+
return Math.floor((termIndex - 2) / 2);
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* 获取某年立春的准确日期
|
|
480
|
+
* @param year 年份
|
|
481
|
+
* @returns 立春日期
|
|
482
|
+
*/
|
|
483
|
+
function getAccurateLichunDate(year) {
|
|
484
|
+
const solarTerms = PreciseSolarTermCalculator.calculateYearSolarTerms(year);
|
|
485
|
+
return solarTerms[2].date; // 立春是第3个节气(索引2)
|
|
486
|
+
}
|
|
487
|
+
//# sourceMappingURL=solarTerms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solarTerms.js","sourceRoot":"","sources":["../../../src/core/calendar/solarTerms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaZi Constants
|
|
3
|
+
* Core constants for BaZi calculations
|
|
4
|
+
*/
|
|
5
|
+
export declare const HEAVENLY_STEMS: {
|
|
6
|
+
name: string;
|
|
7
|
+
element: string;
|
|
8
|
+
yinYang: string;
|
|
9
|
+
}[];
|
|
10
|
+
export declare const HEAVENLY_STEMS_ARRAY: string[];
|
|
11
|
+
export declare const EARTHLY_BRANCHES: {
|
|
12
|
+
name: string;
|
|
13
|
+
element: string;
|
|
14
|
+
zodiac: string;
|
|
15
|
+
}[];
|
|
16
|
+
export declare const EARTHLY_BRANCHES_ARRAY: string[];
|
|
17
|
+
export declare const FIVE_ELEMENTS: {
|
|
18
|
+
name: string;
|
|
19
|
+
color: string;
|
|
20
|
+
}[];
|
|
21
|
+
export declare const FIVE_ELEMENTS_ARRAY: string[];
|
|
22
|
+
export type FiveElement = '木' | '火' | '土' | '金' | '水';
|
|
23
|
+
export declare const STEM_ELEMENTS: Record<string, string>;
|
|
24
|
+
export declare const BRANCH_ELEMENTS: Record<string, string>;
|
|
25
|
+
export declare const HIDDEN_STEMS: Record<string, Array<{
|
|
26
|
+
stem: string;
|
|
27
|
+
power: number;
|
|
28
|
+
}>>;
|
|
29
|
+
export declare const BRANCH_HIDDEN_STEMS: Record<string, {
|
|
30
|
+
stem: string;
|
|
31
|
+
power: number;
|
|
32
|
+
}[]>;
|
|
33
|
+
export declare const TEN_GODS: Record<string, Record<string, string>>;
|
|
34
|
+
export declare const NA_YIN: Record<string, string>;
|
|
35
|
+
export declare const BRANCH_RELATIONS: {
|
|
36
|
+
harmony: {
|
|
37
|
+
子: string[];
|
|
38
|
+
寅: string[];
|
|
39
|
+
卯: string[];
|
|
40
|
+
辰: string[];
|
|
41
|
+
巳: string[];
|
|
42
|
+
午: string[];
|
|
43
|
+
};
|
|
44
|
+
clash: {
|
|
45
|
+
子: string[];
|
|
46
|
+
丑: string[];
|
|
47
|
+
寅: string[];
|
|
48
|
+
卯: string[];
|
|
49
|
+
辰: string[];
|
|
50
|
+
巳: string[];
|
|
51
|
+
};
|
|
52
|
+
punishment: {
|
|
53
|
+
子: string[];
|
|
54
|
+
丑: string[];
|
|
55
|
+
寅: string[];
|
|
56
|
+
卯: string[];
|
|
57
|
+
辰: string[];
|
|
58
|
+
巳: string[];
|
|
59
|
+
午: string[];
|
|
60
|
+
未: string[];
|
|
61
|
+
申: string[];
|
|
62
|
+
酉: string[];
|
|
63
|
+
戌: string[];
|
|
64
|
+
亥: string[];
|
|
65
|
+
};
|
|
66
|
+
harm: {
|
|
67
|
+
子: string[];
|
|
68
|
+
丑: string[];
|
|
69
|
+
寅: string[];
|
|
70
|
+
卯: string[];
|
|
71
|
+
巳: string[];
|
|
72
|
+
午: string[];
|
|
73
|
+
未: string[];
|
|
74
|
+
申: string[];
|
|
75
|
+
酉: string[];
|
|
76
|
+
戌: string[];
|
|
77
|
+
亥: string[];
|
|
78
|
+
};
|
|
79
|
+
threeHarmony: string[][];
|
|
80
|
+
};
|
|
81
|
+
export declare const YIN_YANG: Record<string, 'yin' | 'yang'>;
|
|
82
|
+
export declare const STEM_YIN_YANG: Record<string, "yang" | "yin">;
|
|
83
|
+
export declare const SHEN_SHA_DEFINITIONS: {
|
|
84
|
+
tianyi: {
|
|
85
|
+
name: string;
|
|
86
|
+
type: string;
|
|
87
|
+
rules: {
|
|
88
|
+
甲: string[];
|
|
89
|
+
乙: string[];
|
|
90
|
+
丙: string[];
|
|
91
|
+
丁: string[];
|
|
92
|
+
戊: string[];
|
|
93
|
+
己: string[];
|
|
94
|
+
庚: string[];
|
|
95
|
+
辛: string[];
|
|
96
|
+
壬: string[];
|
|
97
|
+
癸: string[];
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
export declare const SOLAR_TERMS: string[];
|
|
102
|
+
export declare const SOLAR_TERM_TO_ZHI: Record<string, string>;
|
|
103
|
+
export declare const TWELVE_GROWTH_STAGES: string[];
|
|
104
|
+
export declare const GROWTH_STAGE_MAPPING: Record<string, Record<string, string>>;
|
|
105
|
+
export declare const TEN_GODS_ARRAY: string[];
|
|
106
|
+
export declare const TEN_GODS_SHORT: Record<string, string>;
|
|
107
|
+
export declare const MONTHLY_STRENGTH: Record<string, Record<string, number>>;
|
|
108
|
+
export declare const FIVE_ELEMENTS_RELATIONS: {
|
|
109
|
+
generating: {
|
|
110
|
+
木: string;
|
|
111
|
+
火: string;
|
|
112
|
+
土: string;
|
|
113
|
+
金: string;
|
|
114
|
+
水: string;
|
|
115
|
+
};
|
|
116
|
+
controlling: {
|
|
117
|
+
木: string;
|
|
118
|
+
土: string;
|
|
119
|
+
水: string;
|
|
120
|
+
火: string;
|
|
121
|
+
金: string;
|
|
122
|
+
};
|
|
123
|
+
generateBy: {
|
|
124
|
+
木: string;
|
|
125
|
+
火: string;
|
|
126
|
+
土: string;
|
|
127
|
+
金: string;
|
|
128
|
+
水: string;
|
|
129
|
+
};
|
|
130
|
+
restrictBy: {
|
|
131
|
+
木: string;
|
|
132
|
+
火: string;
|
|
133
|
+
土: string;
|
|
134
|
+
金: string;
|
|
135
|
+
水: string;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=bazi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bazi.d.ts","sourceRoot":"","sources":["../../../src/core/constants/bazi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,cAAc;;;;GAW1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAAqD,CAAC;AAGvF,eAAO,MAAM,gBAAgB;;;;GAa5B,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAA+D,CAAC;AAGnG,eAAO,MAAM,aAAa;;;GAMzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAA4B,CAAC;AAG7D,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAGtD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMhD,CAAC;AAGF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIlD,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC,CAa7E,CAAC;AAGF,eAAO,MAAM,mBAAmB;UAhBuB,MAAM;WAAS,MAAM;IAgB7B,CAAC;AAGhD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3D,CAAC;AAGF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+BzC,CAAC;AAGF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuD5B,CAAC;AAGF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,CAYnD,CAAC;AAGF,eAAO,MAAM,aAAa,gCAAW,CAAC;AAGtC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;CAkBhC,CAAC;AAGF,eAAO,MAAM,WAAW,UAKvB,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAapD,CAAC;AAGF,eAAO,MAAM,oBAAoB,UAEhC,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBvE,CAAC;AAGF,eAAO,MAAM,cAAc,UAE1B,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAajD,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAanE,CAAC;AAGF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BnC,CAAC"}
|