mingpan 0.1.1 → 0.1.2
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/README.md +53 -7
- package/dist/core/bazi/types.d.ts +0 -1
- package/dist/core/bazi/types.d.ts.map +1 -1
- package/dist/index.js +398 -164
- package/dist/index.js.map +1 -1
- package/dist/output/daliurenTextRenderer.d.ts +23 -0
- package/dist/output/daliurenTextRenderer.d.ts.map +1 -0
- package/dist/output/daliurenTextRenderer.js +109 -0
- package/dist/output/daliurenTextRenderer.js.map +1 -0
- package/dist/output/liuyaoTextRenderer.d.ts +12 -0
- package/dist/output/liuyaoTextRenderer.d.ts.map +1 -0
- package/dist/output/liuyaoTextRenderer.js +148 -0
- package/dist/output/liuyaoTextRenderer.js.map +1 -0
- package/dist/output/meihuaTextRenderer.d.ts +12 -0
- package/dist/output/meihuaTextRenderer.d.ts.map +1 -0
- package/dist/output/meihuaTextRenderer.js +53 -0
- package/dist/output/meihuaTextRenderer.js.map +1 -0
- package/dist/services/bazi/types.d.ts +0 -2
- package/dist/services/bazi/types.d.ts.map +1 -1
- package/dist/services/bazi/types.js.map +1 -1
- package/dist/services/daliuren/DaliurenService.d.ts +24 -0
- package/dist/services/daliuren/DaliurenService.d.ts.map +1 -0
- package/dist/services/daliuren/DaliurenService.js +67 -0
- package/dist/services/daliuren/DaliurenService.js.map +1 -0
- package/dist/services/daliuren/calculators/SanChuanCalculator.d.ts +87 -0
- package/dist/services/daliuren/calculators/SanChuanCalculator.d.ts.map +1 -0
- package/dist/services/daliuren/calculators/SanChuanCalculator.js +443 -0
- package/dist/services/daliuren/calculators/SanChuanCalculator.js.map +1 -0
- package/dist/services/daliuren/calculators/ShenShaCalculator.d.ts +33 -0
- package/dist/services/daliuren/calculators/ShenShaCalculator.d.ts.map +1 -0
- package/dist/services/daliuren/calculators/ShenShaCalculator.js +92 -0
- package/dist/services/daliuren/calculators/ShenShaCalculator.js.map +1 -0
- package/dist/services/daliuren/calculators/SiKeCalculator.d.ts +35 -0
- package/dist/services/daliuren/calculators/SiKeCalculator.d.ts.map +1 -0
- package/dist/services/daliuren/calculators/SiKeCalculator.js +121 -0
- package/dist/services/daliuren/calculators/SiKeCalculator.js.map +1 -0
- package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts +41 -0
- package/dist/services/daliuren/calculators/TianDiPanCalculator.d.ts.map +1 -0
- package/dist/services/daliuren/calculators/TianDiPanCalculator.js +138 -0
- package/dist/services/daliuren/calculators/TianDiPanCalculator.js.map +1 -0
- package/dist/services/daliuren/data/constants.d.ts +62 -0
- package/dist/services/daliuren/data/constants.d.ts.map +1 -0
- package/dist/services/daliuren/data/constants.js +240 -0
- package/dist/services/daliuren/data/constants.js.map +1 -0
- package/dist/services/daliuren/index.d.ts +11 -0
- package/dist/services/daliuren/index.d.ts.map +1 -0
- package/dist/services/daliuren/index.js +33 -0
- package/dist/services/daliuren/index.js.map +1 -0
- package/dist/services/daliuren/types.d.ts +152 -0
- package/dist/services/daliuren/types.d.ts.map +1 -0
- package/dist/services/daliuren/types.js +17 -0
- package/dist/services/daliuren/types.js.map +1 -0
- package/dist/services/liuyao/LiuyaoService.d.ts +37 -0
- package/dist/services/liuyao/LiuyaoService.d.ts.map +1 -0
- package/dist/services/liuyao/LiuyaoService.js +214 -0
- package/dist/services/liuyao/LiuyaoService.js.map +1 -0
- package/dist/services/liuyao/calculators/FushenCalculator.d.ts +40 -0
- package/dist/services/liuyao/calculators/FushenCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/FushenCalculator.js +124 -0
- package/dist/services/liuyao/calculators/FushenCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/JintuishenCalculator.d.ts +37 -0
- package/dist/services/liuyao/calculators/JintuishenCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/JintuishenCalculator.js +86 -0
- package/dist/services/liuyao/calculators/JintuishenCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/LiuqinCalculator.d.ts +24 -0
- package/dist/services/liuyao/calculators/LiuqinCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/LiuqinCalculator.js +75 -0
- package/dist/services/liuyao/calculators/LiuqinCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/LiushenCalculator.d.ts +29 -0
- package/dist/services/liuyao/calculators/LiushenCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/LiushenCalculator.js +58 -0
- package/dist/services/liuyao/calculators/LiushenCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/NajiaCalculator.d.ts +55 -0
- package/dist/services/liuyao/calculators/NajiaCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/NajiaCalculator.js +87 -0
- package/dist/services/liuyao/calculators/NajiaCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/WangshuaiCalculator.d.ts +43 -0
- package/dist/services/liuyao/calculators/WangshuaiCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/WangshuaiCalculator.js +100 -0
- package/dist/services/liuyao/calculators/WangshuaiCalculator.js.map +1 -0
- package/dist/services/liuyao/calculators/XunkongCalculator.d.ts +30 -0
- package/dist/services/liuyao/calculators/XunkongCalculator.d.ts.map +1 -0
- package/dist/services/liuyao/calculators/XunkongCalculator.js +58 -0
- package/dist/services/liuyao/calculators/XunkongCalculator.js.map +1 -0
- package/dist/services/liuyao/data/guagong.d.ts +94 -0
- package/dist/services/liuyao/data/guagong.d.ts.map +1 -0
- package/dist/services/liuyao/data/guagong.js +317 -0
- package/dist/services/liuyao/data/guagong.js.map +1 -0
- package/dist/services/liuyao/index.d.ts +13 -0
- package/dist/services/liuyao/index.d.ts.map +1 -0
- package/dist/services/liuyao/index.js +29 -0
- package/dist/services/liuyao/index.js.map +1 -0
- package/dist/services/liuyao/types.d.ts +154 -0
- package/dist/services/liuyao/types.d.ts.map +1 -0
- package/dist/services/liuyao/types.js +11 -0
- package/dist/services/liuyao/types.js.map +1 -0
- package/dist/services/meihua/MeihuaService.d.ts +32 -0
- package/dist/services/meihua/MeihuaService.d.ts.map +1 -0
- package/dist/services/meihua/MeihuaService.js +176 -0
- package/dist/services/meihua/MeihuaService.js.map +1 -0
- package/dist/services/meihua/calculators/BianguaCalculator.d.ts +21 -0
- package/dist/services/meihua/calculators/BianguaCalculator.d.ts.map +1 -0
- package/dist/services/meihua/calculators/BianguaCalculator.js +46 -0
- package/dist/services/meihua/calculators/BianguaCalculator.js.map +1 -0
- package/dist/services/meihua/calculators/HuguaCalculator.d.ts +22 -0
- package/dist/services/meihua/calculators/HuguaCalculator.d.ts.map +1 -0
- package/dist/services/meihua/calculators/HuguaCalculator.js +46 -0
- package/dist/services/meihua/calculators/HuguaCalculator.js.map +1 -0
- package/dist/services/meihua/calculators/QiguaCalculator.d.ts +40 -0
- package/dist/services/meihua/calculators/QiguaCalculator.d.ts.map +1 -0
- package/dist/services/meihua/calculators/QiguaCalculator.js +105 -0
- package/dist/services/meihua/calculators/QiguaCalculator.js.map +1 -0
- package/dist/services/meihua/calculators/TiyongCalculator.d.ts +34 -0
- package/dist/services/meihua/calculators/TiyongCalculator.d.ts.map +1 -0
- package/dist/services/meihua/calculators/TiyongCalculator.js +105 -0
- package/dist/services/meihua/calculators/TiyongCalculator.js.map +1 -0
- package/dist/services/meihua/data/bagua.d.ts +19 -0
- package/dist/services/meihua/data/bagua.d.ts.map +1 -0
- package/dist/services/meihua/data/bagua.js +81 -0
- package/dist/services/meihua/data/bagua.js.map +1 -0
- package/dist/services/meihua/index.d.ts +11 -0
- package/dist/services/meihua/index.d.ts.map +1 -0
- package/dist/services/meihua/index.js +27 -0
- package/dist/services/meihua/index.js.map +1 -0
- package/dist/services/meihua/types.d.ts +95 -0
- package/dist/services/meihua/types.d.ts.map +1 -0
- package/dist/services/meihua/types.js +6 -0
- package/dist/services/meihua/types.js.map +1 -0
- package/dist/shared/types.d.ts +0 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/utils/timeNormalization.d.ts +48 -0
- package/dist/utils/timeNormalization.d.ts.map +1 -0
- package/dist/utils/timeNormalization.js +69 -0
- package/dist/utils/timeNormalization.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 起卦計算器
|
|
4
|
+
*
|
|
5
|
+
* 支持:
|
|
6
|
+
* - 時間起卦(農曆年月日時)
|
|
7
|
+
* - 數字起卦(兩數/三數)
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.QiguaCalculator = void 0;
|
|
11
|
+
const lunar_javascript_1 = require("lunar-javascript");
|
|
12
|
+
/** 地支對應時辰序數(子=1, 丑=2, ..., 亥=12) */
|
|
13
|
+
const DIZHI_TO_SHICHEN = {
|
|
14
|
+
'子': 1, '丑': 2, '寅': 3, '卯': 4, '辰': 5, '巳': 6,
|
|
15
|
+
'午': 7, '未': 8, '申': 9, '酉': 10, '戌': 11, '亥': 12,
|
|
16
|
+
};
|
|
17
|
+
/** 地支序數(子=1, 丑=2, ..., 亥=12) */
|
|
18
|
+
const DIZHI_INDEX = {
|
|
19
|
+
'子': 1, '丑': 2, '寅': 3, '卯': 4, '辰': 5, '巳': 6,
|
|
20
|
+
'午': 7, '未': 8, '申': 9, '酉': 10, '戌': 11, '亥': 12,
|
|
21
|
+
};
|
|
22
|
+
class QiguaCalculator {
|
|
23
|
+
/**
|
|
24
|
+
* 時間起卦
|
|
25
|
+
*
|
|
26
|
+
* 算法口徑(農曆)- 標準梅花易數口徑:
|
|
27
|
+
* - 年數 = 農曆年地支序數(子=1, 丑=2, ..., 亥=12)
|
|
28
|
+
* - 月數 = 農曆月(1-12,閏月按本月算)
|
|
29
|
+
* - 日數 = 農曆日(1-30)
|
|
30
|
+
* - 時數 = 時辰地支序數(子=1, 丑=2, ..., 亥=12)
|
|
31
|
+
*
|
|
32
|
+
* - 上卦數 = (年數 + 月數 + 日數) % 8,餘 0 取 8
|
|
33
|
+
* - 下卦數 = (年數 + 月數 + 日數 + 時數) % 8,餘 0 取 8
|
|
34
|
+
* - 動爻 = (年數 + 月數 + 日數 + 時數) % 6,餘 0 取 6
|
|
35
|
+
*
|
|
36
|
+
* 參考:《梅花易數》原著、shu-var 開源項目
|
|
37
|
+
*/
|
|
38
|
+
static fromTime(year, month, day, hour, isLunar = false) {
|
|
39
|
+
// 獲取農曆
|
|
40
|
+
let lunar;
|
|
41
|
+
if (isLunar) {
|
|
42
|
+
// 農曆輸入需要包含時間信息
|
|
43
|
+
lunar = lunar_javascript_1.Lunar.fromYmdHms(year, month, day, hour, 0, 0);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const solar = lunar_javascript_1.Solar.fromYmdHms(year, month, day, hour, 0, 0);
|
|
47
|
+
lunar = solar.getLunar();
|
|
48
|
+
}
|
|
49
|
+
// 獲取時辰地支序數
|
|
50
|
+
const hourBranch = lunar.getTimeZhi();
|
|
51
|
+
const shiChenIndex = DIZHI_TO_SHICHEN[hourBranch];
|
|
52
|
+
// 獲取年地支序數(標準梅花口徑:用地支序數 1-12,不是干支序數 1-60)
|
|
53
|
+
const yearZhi = lunar.getYearZhi();
|
|
54
|
+
const yearZhiIndex = DIZHI_INDEX[yearZhi];
|
|
55
|
+
// 農曆月日
|
|
56
|
+
const lunarMonth = Math.abs(lunar.getMonth()); // 閏月取絕對值
|
|
57
|
+
const lunarDay = lunar.getDay();
|
|
58
|
+
// 計算起卦數
|
|
59
|
+
const sumForUpper = yearZhiIndex + lunarMonth + lunarDay;
|
|
60
|
+
const sumForLower = sumForUpper + shiChenIndex;
|
|
61
|
+
const upperGuaIndex = sumForUpper % 8 === 0 ? 8 : sumForUpper % 8;
|
|
62
|
+
const lowerGuaIndex = sumForLower % 8 === 0 ? 8 : sumForLower % 8;
|
|
63
|
+
const movingYao = sumForLower % 6 === 0 ? 6 : sumForLower % 6;
|
|
64
|
+
return {
|
|
65
|
+
qiGuaData: {
|
|
66
|
+
upperNumber: sumForUpper,
|
|
67
|
+
lowerNumber: sumForLower,
|
|
68
|
+
yaoNumber: sumForLower,
|
|
69
|
+
upperGuaIndex,
|
|
70
|
+
lowerGuaIndex,
|
|
71
|
+
movingYao,
|
|
72
|
+
},
|
|
73
|
+
timeDetail: {
|
|
74
|
+
lunarYear: lunar.getYear(),
|
|
75
|
+
lunarMonth,
|
|
76
|
+
lunarDay,
|
|
77
|
+
shiChenIndex,
|
|
78
|
+
yearZhiIndex,
|
|
79
|
+
sumForUpper,
|
|
80
|
+
sumForLower,
|
|
81
|
+
},
|
|
82
|
+
lunar,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 數字起卦
|
|
87
|
+
*
|
|
88
|
+
* - 上卦 = upperNumber % 8,餘 0 取 8
|
|
89
|
+
* - 下卦 = lowerNumber % 8,餘 0 取 8
|
|
90
|
+
* - 動爻 = yaoNumber % 6,餘 0 取 6(默認用 upper + lower)
|
|
91
|
+
*/
|
|
92
|
+
static fromNumber(upperNumber, lowerNumber, yaoNumber) {
|
|
93
|
+
const actualYaoNumber = yaoNumber ?? (upperNumber + lowerNumber);
|
|
94
|
+
return {
|
|
95
|
+
upperNumber,
|
|
96
|
+
lowerNumber,
|
|
97
|
+
yaoNumber: actualYaoNumber,
|
|
98
|
+
upperGuaIndex: upperNumber % 8 === 0 ? 8 : upperNumber % 8,
|
|
99
|
+
lowerGuaIndex: lowerNumber % 8 === 0 ? 8 : lowerNumber % 8,
|
|
100
|
+
movingYao: actualYaoNumber % 6 === 0 ? 6 : actualYaoNumber % 6,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.QiguaCalculator = QiguaCalculator;
|
|
105
|
+
//# sourceMappingURL=QiguaCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QiguaCalculator.js","sourceRoot":"","sources":["../../../../src/services/meihua/calculators/QiguaCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 體用計算器
|
|
3
|
+
*
|
|
4
|
+
* 體用判定:
|
|
5
|
+
* - 動爻所在卦為「用」
|
|
6
|
+
* - 另一卦為「體」
|
|
7
|
+
*
|
|
8
|
+
* 五行生剋關係:
|
|
9
|
+
* - 體生用:洩(體氣外洩,不利)
|
|
10
|
+
* - 用生體:生(得助,有利)
|
|
11
|
+
* - 體剋用:耗(耗費精力,小利)
|
|
12
|
+
* - 用剋體:剋(受制,不利)
|
|
13
|
+
* - 體用同:比和(平穩)
|
|
14
|
+
*/
|
|
15
|
+
import { WuXing, TiYongAnalysis } from '../types';
|
|
16
|
+
export declare class TiyongCalculator {
|
|
17
|
+
/**
|
|
18
|
+
* 計算體用關係
|
|
19
|
+
*
|
|
20
|
+
* @param upperWuXing 上卦五行
|
|
21
|
+
* @param lowerWuXing 下卦五行
|
|
22
|
+
* @param movingYao 動爻位置(1-6)
|
|
23
|
+
*/
|
|
24
|
+
static calculate(upperWuXing: WuXing, lowerWuXing: WuXing, movingYao: number): TiYongAnalysis;
|
|
25
|
+
/**
|
|
26
|
+
* 獲取體用關係
|
|
27
|
+
*/
|
|
28
|
+
private static getRelation;
|
|
29
|
+
/**
|
|
30
|
+
* 獲取關係描述
|
|
31
|
+
*/
|
|
32
|
+
private static getDescription;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=TiyongCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TiyongCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/meihua/calculators/TiyongCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAkB,cAAc,EAAE,MAAM,UAAU,CAAC;AAoBlE,qBAAa,gBAAgB;IAC3B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CACd,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,cAAc;IAwBjB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IA4B1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAkB9B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 體用計算器
|
|
4
|
+
*
|
|
5
|
+
* 體用判定:
|
|
6
|
+
* - 動爻所在卦為「用」
|
|
7
|
+
* - 另一卦為「體」
|
|
8
|
+
*
|
|
9
|
+
* 五行生剋關係:
|
|
10
|
+
* - 體生用:洩(體氣外洩,不利)
|
|
11
|
+
* - 用生體:生(得助,有利)
|
|
12
|
+
* - 體剋用:耗(耗費精力,小利)
|
|
13
|
+
* - 用剋體:剋(受制,不利)
|
|
14
|
+
* - 體用同:比和(平穩)
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.TiyongCalculator = void 0;
|
|
18
|
+
/** 五行相生關係(A 生 B) */
|
|
19
|
+
const WUXING_SHENG = {
|
|
20
|
+
'木': '火',
|
|
21
|
+
'火': '土',
|
|
22
|
+
'土': '金',
|
|
23
|
+
'金': '水',
|
|
24
|
+
'水': '木',
|
|
25
|
+
};
|
|
26
|
+
/** 五行相剋關係(A 剋 B) */
|
|
27
|
+
const WUXING_KE = {
|
|
28
|
+
'木': '土',
|
|
29
|
+
'土': '水',
|
|
30
|
+
'水': '火',
|
|
31
|
+
'火': '金',
|
|
32
|
+
'金': '木',
|
|
33
|
+
};
|
|
34
|
+
class TiyongCalculator {
|
|
35
|
+
/**
|
|
36
|
+
* 計算體用關係
|
|
37
|
+
*
|
|
38
|
+
* @param upperWuXing 上卦五行
|
|
39
|
+
* @param lowerWuXing 下卦五行
|
|
40
|
+
* @param movingYao 動爻位置(1-6)
|
|
41
|
+
*/
|
|
42
|
+
static calculate(upperWuXing, lowerWuXing, movingYao) {
|
|
43
|
+
// 判定體用:動爻在下卦(1-3)則下卦為用,動爻在上卦(4-6)則上卦為用
|
|
44
|
+
const isMovingInLower = movingYao <= 3;
|
|
45
|
+
const tiGua = isMovingInLower ? 'upper' : 'lower';
|
|
46
|
+
const yongGua = isMovingInLower ? 'lower' : 'upper';
|
|
47
|
+
const tiWuXing = tiGua === 'upper' ? upperWuXing : lowerWuXing;
|
|
48
|
+
const yongWuXing = yongGua === 'upper' ? upperWuXing : lowerWuXing;
|
|
49
|
+
// 計算五行關係
|
|
50
|
+
const relation = this.getRelation(tiWuXing, yongWuXing);
|
|
51
|
+
const description = this.getDescription(tiWuXing, yongWuXing, relation);
|
|
52
|
+
return {
|
|
53
|
+
tiGua,
|
|
54
|
+
yongGua,
|
|
55
|
+
tiWuXing,
|
|
56
|
+
yongWuXing,
|
|
57
|
+
relation,
|
|
58
|
+
description,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 獲取體用關係
|
|
63
|
+
*/
|
|
64
|
+
static getRelation(tiWuXing, yongWuXing) {
|
|
65
|
+
if (tiWuXing === yongWuXing) {
|
|
66
|
+
return '比和';
|
|
67
|
+
}
|
|
68
|
+
// 用生體
|
|
69
|
+
if (WUXING_SHENG[yongWuXing] === tiWuXing) {
|
|
70
|
+
return '生';
|
|
71
|
+
}
|
|
72
|
+
// 體生用(洩)
|
|
73
|
+
if (WUXING_SHENG[tiWuXing] === yongWuXing) {
|
|
74
|
+
return '洩';
|
|
75
|
+
}
|
|
76
|
+
// 用剋體
|
|
77
|
+
if (WUXING_KE[yongWuXing] === tiWuXing) {
|
|
78
|
+
return '剋';
|
|
79
|
+
}
|
|
80
|
+
// 體剋用(耗)
|
|
81
|
+
if (WUXING_KE[tiWuXing] === yongWuXing) {
|
|
82
|
+
return '耗';
|
|
83
|
+
}
|
|
84
|
+
return '比和'; // fallback
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 獲取關係描述
|
|
88
|
+
*/
|
|
89
|
+
static getDescription(tiWuXing, yongWuXing, relation) {
|
|
90
|
+
switch (relation) {
|
|
91
|
+
case '生':
|
|
92
|
+
return `${yongWuXing}生${tiWuXing},用生體,主吉。`;
|
|
93
|
+
case '洩':
|
|
94
|
+
return `${tiWuXing}生${yongWuXing},體生用,主洩耗。`;
|
|
95
|
+
case '剋':
|
|
96
|
+
return `${yongWuXing}剋${tiWuXing},用剋體,主凶。`;
|
|
97
|
+
case '耗':
|
|
98
|
+
return `${tiWuXing}剋${yongWuXing},體剋用,主小吉。`;
|
|
99
|
+
case '比和':
|
|
100
|
+
return `${tiWuXing}與${yongWuXing}比和,主平穩。`;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
exports.TiyongCalculator = TiyongCalculator;
|
|
105
|
+
//# sourceMappingURL=TiyongCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TiyongCalculator.js","sourceRoot":"","sources":["../../../../src/services/meihua/calculators/TiyongCalculator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAIH,oBAAoB;AACpB,MAAM,YAAY,GAA2B;IAC3C,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,oBAAoB;AACpB,MAAM,SAAS,GAA2B;IACxC,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,MAAa,gBAAgB;IAC3B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CACd,WAAmB,EACnB,WAAmB,EACnB,SAAiB;QAEjB,uCAAuC;QACvC,MAAM,eAAe,GAAG,SAAS,IAAI,CAAC,CAAC;QAEvC,MAAM,KAAK,GAAsB,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACrE,MAAM,OAAO,GAAsB,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAEvE,MAAM,QAAQ,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/D,MAAM,UAAU,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAEnE,SAAS;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAExE,OAAO;YACL,KAAK;YACL,OAAO;YACP,QAAQ;YACR,UAAU;YACV,QAAQ;YACR,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,WAAW,CAAC,QAAgB,EAAE,UAAkB;QAC7D,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM;QACN,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC;QACb,CAAC;QAED,SAAS;QACT,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM;QACN,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,GAAG,CAAC;QACb,CAAC;QAED,SAAS;QACT,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YACvC,OAAO,GAAG,CAAC;QACb,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,WAAW;IAC1B,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,cAAc,CAC3B,QAAgB,EAChB,UAAkB,EAClB,QAAwB;QAExB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,GAAG;gBACN,OAAO,GAAG,UAAU,IAAI,QAAQ,UAAU,CAAC;YAC7C,KAAK,GAAG;gBACN,OAAO,GAAG,QAAQ,IAAI,UAAU,WAAW,CAAC;YAC9C,KAAK,GAAG;gBACN,OAAO,GAAG,UAAU,IAAI,QAAQ,UAAU,CAAC;YAC7C,KAAK,GAAG;gBACN,OAAO,GAAG,QAAQ,IAAI,UAAU,WAAW,CAAC;YAC9C,KAAK,IAAI;gBACP,OAAO,GAAG,QAAQ,IAAI,UAAU,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;CACF;AAxFD,4CAwFC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 八卦基礎數據
|
|
3
|
+
*
|
|
4
|
+
* 先天八卦數:乾1 兌2 離3 震4 巽5 坎6 艮7 坤8
|
|
5
|
+
*/
|
|
6
|
+
import { BaGuaName, BaGuaInfo } from '../types';
|
|
7
|
+
/** 八卦數據表(按先天數排列,索引 0-7 對應數字 1-8) */
|
|
8
|
+
export declare const BAGUA_DATA: BaGuaInfo[];
|
|
9
|
+
/** 根據先天數獲取八卦(1-8) */
|
|
10
|
+
export declare function getBaGuaByNumber(num: number): BaGuaInfo;
|
|
11
|
+
/** 根據卦名獲取八卦 */
|
|
12
|
+
export declare function getBaGuaByName(name: BaGuaName): BaGuaInfo;
|
|
13
|
+
/** 獲取64卦名稱 */
|
|
14
|
+
export declare function getGua64Name(upper: BaGuaName, lower: BaGuaName): string;
|
|
15
|
+
/** 八卦二進制表示(用於互卦計算) */
|
|
16
|
+
export declare const BAGUA_BINARY: Record<BaGuaName, [boolean, boolean, boolean]>;
|
|
17
|
+
/** 二進制轉八卦 */
|
|
18
|
+
export declare function binaryToBaGua(bits: [boolean, boolean, boolean]): BaGuaName;
|
|
19
|
+
//# sourceMappingURL=bagua.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bagua.d.ts","sourceRoot":"","sources":["../../../../src/services/meihua/data/bagua.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAU,SAAS,EAAE,MAAM,UAAU,CAAC;AAExD,oCAAoC;AACpC,eAAO,MAAM,UAAU,EAAE,SAAS,EASjC,CAAC;AAEF,qBAAqB;AACrB,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAIvD;AAED,eAAe;AACf,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAIzD;AAsBD,cAAc;AACd,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAGvE;AAED,sBAAsB;AACtB,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CASvE,CAAC;AAEF,aAAa;AACb,wBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAO1E"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 八卦基礎數據
|
|
4
|
+
*
|
|
5
|
+
* 先天八卦數:乾1 兌2 離3 震4 巽5 坎6 艮7 坤8
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.BAGUA_BINARY = exports.BAGUA_DATA = void 0;
|
|
9
|
+
exports.getBaGuaByNumber = getBaGuaByNumber;
|
|
10
|
+
exports.getBaGuaByName = getBaGuaByName;
|
|
11
|
+
exports.getGua64Name = getGua64Name;
|
|
12
|
+
exports.binaryToBaGua = binaryToBaGua;
|
|
13
|
+
/** 八卦數據表(按先天數排列,索引 0-7 對應數字 1-8) */
|
|
14
|
+
exports.BAGUA_DATA = [
|
|
15
|
+
{ name: '乾', symbol: '☰', wuXing: '金', number: 1 },
|
|
16
|
+
{ name: '兌', symbol: '☱', wuXing: '金', number: 2 },
|
|
17
|
+
{ name: '離', symbol: '☲', wuXing: '火', number: 3 },
|
|
18
|
+
{ name: '震', symbol: '☳', wuXing: '木', number: 4 },
|
|
19
|
+
{ name: '巽', symbol: '☴', wuXing: '木', number: 5 },
|
|
20
|
+
{ name: '坎', symbol: '☵', wuXing: '水', number: 6 },
|
|
21
|
+
{ name: '艮', symbol: '☶', wuXing: '土', number: 7 },
|
|
22
|
+
{ name: '坤', symbol: '☷', wuXing: '土', number: 8 },
|
|
23
|
+
];
|
|
24
|
+
/** 根據先天數獲取八卦(1-8) */
|
|
25
|
+
function getBaGuaByNumber(num) {
|
|
26
|
+
// 餘 0 取 8
|
|
27
|
+
const index = num % 8 === 0 ? 7 : (num % 8) - 1;
|
|
28
|
+
return exports.BAGUA_DATA[index];
|
|
29
|
+
}
|
|
30
|
+
/** 根據卦名獲取八卦 */
|
|
31
|
+
function getBaGuaByName(name) {
|
|
32
|
+
const gua = exports.BAGUA_DATA.find(g => g.name === name);
|
|
33
|
+
if (!gua)
|
|
34
|
+
throw new Error(`未知八卦: ${name}`);
|
|
35
|
+
return gua;
|
|
36
|
+
}
|
|
37
|
+
/** 64卦名稱表(上卦 x 下卦) */
|
|
38
|
+
const GUA64_NAMES = {
|
|
39
|
+
'乾乾': '乾為天', '乾兌': '天澤履', '乾離': '天火同人', '乾震': '天雷無妄',
|
|
40
|
+
'乾巽': '天風姤', '乾坎': '天水訟', '乾艮': '天山遯', '乾坤': '天地否',
|
|
41
|
+
'兌乾': '澤天夬', '兌兌': '兌為澤', '兌離': '澤火革', '兌震': '澤雷隨',
|
|
42
|
+
'兌巽': '澤風大過', '兌坎': '澤水困', '兌艮': '澤山咸', '兌坤': '澤地萃',
|
|
43
|
+
'離乾': '火天大有', '離兌': '火澤睽', '離離': '離為火', '離震': '火雷噬嗑',
|
|
44
|
+
'離巽': '火風鼎', '離坎': '火水未濟', '離艮': '火山旅', '離坤': '火地晉',
|
|
45
|
+
'震乾': '雷天大壯', '震兌': '雷澤歸妹', '震離': '雷火豐', '震震': '震為雷',
|
|
46
|
+
'震巽': '雷風恆', '震坎': '雷水解', '震艮': '雷山小過', '震坤': '雷地豫',
|
|
47
|
+
'巽乾': '風天小畜', '巽兌': '風澤中孚', '巽離': '風火家人', '巽震': '風雷益',
|
|
48
|
+
'巽巽': '巽為風', '巽坎': '風水渙', '巽艮': '風山漸', '巽坤': '風地觀',
|
|
49
|
+
'坎乾': '水天需', '坎兌': '水澤節', '坎離': '水火既濟', '坎震': '水雷屯',
|
|
50
|
+
'坎巽': '水風井', '坎坎': '坎為水', '坎艮': '水山蹇', '坎坤': '水地比',
|
|
51
|
+
'艮乾': '山天大畜', '艮兌': '山澤損', '艮離': '山火賁', '艮震': '山雷頤',
|
|
52
|
+
'艮巽': '山風蠱', '艮坎': '山水蒙', '艮艮': '艮為山', '艮坤': '山地剝',
|
|
53
|
+
'坤乾': '地天泰', '坤兌': '地澤臨', '坤離': '地火明夷', '坤震': '地雷復',
|
|
54
|
+
'坤巽': '地風升', '坤坎': '地水師', '坤艮': '地山謙', '坤坤': '坤為地',
|
|
55
|
+
};
|
|
56
|
+
/** 獲取64卦名稱 */
|
|
57
|
+
function getGua64Name(upper, lower) {
|
|
58
|
+
const key = `${upper}${lower}`;
|
|
59
|
+
return GUA64_NAMES[key] || `${upper}${lower}卦`;
|
|
60
|
+
}
|
|
61
|
+
/** 八卦二進制表示(用於互卦計算) */
|
|
62
|
+
exports.BAGUA_BINARY = {
|
|
63
|
+
'乾': [true, true, true], // 111
|
|
64
|
+
'兌': [false, true, true], // 011
|
|
65
|
+
'離': [true, false, true], // 101
|
|
66
|
+
'震': [false, false, true], // 001
|
|
67
|
+
'巽': [true, true, false], // 110
|
|
68
|
+
'坎': [false, true, false], // 010
|
|
69
|
+
'艮': [true, false, false], // 100
|
|
70
|
+
'坤': [false, false, false], // 000
|
|
71
|
+
};
|
|
72
|
+
/** 二進制轉八卦 */
|
|
73
|
+
function binaryToBaGua(bits) {
|
|
74
|
+
const key = bits.map(b => b ? '1' : '0').join('');
|
|
75
|
+
const map = {
|
|
76
|
+
'111': '乾', '011': '兌', '101': '離', '001': '震',
|
|
77
|
+
'110': '巽', '010': '坎', '100': '艮', '000': '坤',
|
|
78
|
+
};
|
|
79
|
+
return map[key];
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=bagua.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bagua.js","sourceRoot":"","sources":["../../../../src/services/meihua/data/bagua.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 梅花易數模組導出
|
|
3
|
+
*/
|
|
4
|
+
export * from './types';
|
|
5
|
+
export * from './MeihuaService';
|
|
6
|
+
export * from './calculators/QiguaCalculator';
|
|
7
|
+
export * from './calculators/HuguaCalculator';
|
|
8
|
+
export * from './calculators/BianguaCalculator';
|
|
9
|
+
export * from './calculators/TiyongCalculator';
|
|
10
|
+
export * from './data/bagua';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/meihua/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 梅花易數模組導出
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
__exportStar(require("./MeihuaService"), exports);
|
|
22
|
+
__exportStar(require("./calculators/QiguaCalculator"), exports);
|
|
23
|
+
__exportStar(require("./calculators/HuguaCalculator"), exports);
|
|
24
|
+
__exportStar(require("./calculators/BianguaCalculator"), exports);
|
|
25
|
+
__exportStar(require("./calculators/TiyongCalculator"), exports);
|
|
26
|
+
__exportStar(require("./data/bagua"), exports);
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/meihua/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,kDAAgC;AAChC,gEAA8C;AAC9C,gEAA8C;AAC9C,kEAAgD;AAChD,iEAA+C;AAC/C,+CAA6B"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 梅花易數類型定義
|
|
3
|
+
*/
|
|
4
|
+
/** 八卦名稱 */
|
|
5
|
+
export type BaGuaName = '乾' | '兌' | '離' | '震' | '巽' | '坎' | '艮' | '坤';
|
|
6
|
+
/** 五行 */
|
|
7
|
+
export type WuXing = '金' | '木' | '水' | '火' | '土';
|
|
8
|
+
/** 起卦方式 */
|
|
9
|
+
export type QiGuaMethod = 'time' | 'number';
|
|
10
|
+
/** 梅花易數輸入 */
|
|
11
|
+
export interface MeihuaInput {
|
|
12
|
+
/** 起卦方式 */
|
|
13
|
+
method: QiGuaMethod;
|
|
14
|
+
year?: number;
|
|
15
|
+
month?: number;
|
|
16
|
+
day?: number;
|
|
17
|
+
hour?: number;
|
|
18
|
+
isLunar?: boolean;
|
|
19
|
+
upperNumber?: number;
|
|
20
|
+
lowerNumber?: number;
|
|
21
|
+
yaoNumber?: number;
|
|
22
|
+
}
|
|
23
|
+
/** 八卦信息 */
|
|
24
|
+
export interface BaGuaInfo {
|
|
25
|
+
name: BaGuaName;
|
|
26
|
+
symbol: string;
|
|
27
|
+
wuXing: WuXing;
|
|
28
|
+
number: number;
|
|
29
|
+
}
|
|
30
|
+
/** 卦象信息 */
|
|
31
|
+
export interface GuaXiang {
|
|
32
|
+
name: string;
|
|
33
|
+
upperGua: BaGuaInfo;
|
|
34
|
+
lowerGua: BaGuaInfo;
|
|
35
|
+
}
|
|
36
|
+
/** 體用關係 */
|
|
37
|
+
export type TiYongRelation = '生' | '剋' | '比和' | '洩' | '耗';
|
|
38
|
+
/** 體用分析 */
|
|
39
|
+
export interface TiYongAnalysis {
|
|
40
|
+
tiGua: 'upper' | 'lower';
|
|
41
|
+
yongGua: 'upper' | 'lower';
|
|
42
|
+
tiWuXing: WuXing;
|
|
43
|
+
yongWuXing: WuXing;
|
|
44
|
+
relation: TiYongRelation;
|
|
45
|
+
description: string;
|
|
46
|
+
}
|
|
47
|
+
/** 起卦數據 */
|
|
48
|
+
export interface QiGuaData {
|
|
49
|
+
upperNumber: number;
|
|
50
|
+
lowerNumber: number;
|
|
51
|
+
yaoNumber: number;
|
|
52
|
+
upperGuaIndex: number;
|
|
53
|
+
lowerGuaIndex: number;
|
|
54
|
+
movingYao: number;
|
|
55
|
+
}
|
|
56
|
+
/** 時間起卦詳情 */
|
|
57
|
+
export interface TimeQiGuaDetail {
|
|
58
|
+
lunarYear: number;
|
|
59
|
+
lunarMonth: number;
|
|
60
|
+
lunarDay: number;
|
|
61
|
+
shiChenIndex: number;
|
|
62
|
+
yearZhiIndex: number;
|
|
63
|
+
sumForUpper: number;
|
|
64
|
+
sumForLower: number;
|
|
65
|
+
}
|
|
66
|
+
/** 梅花易數結果 */
|
|
67
|
+
export interface MeihuaResult {
|
|
68
|
+
/** 起卦方式 */
|
|
69
|
+
method: QiGuaMethod;
|
|
70
|
+
/** 起卦數據 */
|
|
71
|
+
qiGuaData: QiGuaData;
|
|
72
|
+
/** 時間起卦詳情(僅 time 模式) */
|
|
73
|
+
timeDetail?: TimeQiGuaDetail;
|
|
74
|
+
/** 時間信息 */
|
|
75
|
+
timeInfo: {
|
|
76
|
+
solarDate: string;
|
|
77
|
+
lunarDate: string;
|
|
78
|
+
yearGanZhi: string;
|
|
79
|
+
};
|
|
80
|
+
/** 本卦 */
|
|
81
|
+
benGua: GuaXiang;
|
|
82
|
+
/** 變卦 */
|
|
83
|
+
bianGua: GuaXiang;
|
|
84
|
+
/** 互卦 */
|
|
85
|
+
huGua: GuaXiang;
|
|
86
|
+
/** 動爻位置(1-6,自下而上) */
|
|
87
|
+
movingYao: number;
|
|
88
|
+
/** 體用分析 */
|
|
89
|
+
tiYong: TiYongAnalysis;
|
|
90
|
+
}
|
|
91
|
+
/** 服務配置 */
|
|
92
|
+
export interface MeihuaServiceConfig {
|
|
93
|
+
debug?: boolean;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/meihua/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/meihua/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 時間歸一化工具
|
|
3
|
+
*
|
|
4
|
+
* 設計原則:
|
|
5
|
+
* 1. 當前階段統一使用北京時間(UTC+8),不對外暴露時區參數
|
|
6
|
+
* 2. 農曆輸入在入口層即轉換為公曆,內部計算統一走公曆
|
|
7
|
+
*
|
|
8
|
+
* TODO: 多時區支持(M4 里程碑)
|
|
9
|
+
* - 新增 timezone 參數
|
|
10
|
+
* - 引入 date-fns-tz 或 @js-temporal/polyfill
|
|
11
|
+
*/
|
|
12
|
+
/** 北京時區 IANA 標識(內部使用) */
|
|
13
|
+
export declare const BEIJING_TZ = "Asia/Shanghai";
|
|
14
|
+
export interface BirthDateTimeInput {
|
|
15
|
+
year: number;
|
|
16
|
+
month: number;
|
|
17
|
+
day: number;
|
|
18
|
+
hour: number;
|
|
19
|
+
minute?: number;
|
|
20
|
+
isLunar?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface NormalizedBirthDateTime {
|
|
23
|
+
year: number;
|
|
24
|
+
month: number;
|
|
25
|
+
day: number;
|
|
26
|
+
hour: number;
|
|
27
|
+
minute: number;
|
|
28
|
+
/** 標記原始輸入是否為農曆(用於輸出顯示) */
|
|
29
|
+
isLunarInput: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 歸一化出生日期時間
|
|
33
|
+
*
|
|
34
|
+
* 處理邏輯:
|
|
35
|
+
* 1. 補齊 minute 默認值
|
|
36
|
+
* 2. 如果是農曆輸入,轉換為公曆
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* // 公曆輸入
|
|
40
|
+
* normalizeBirthDateTime({ year: 1990, month: 5, day: 15, hour: 10 })
|
|
41
|
+
* // { year: 1990, month: 5, day: 15, hour: 10, minute: 0, isLunarInput: false }
|
|
42
|
+
*
|
|
43
|
+
* // 農曆輸入
|
|
44
|
+
* normalizeBirthDateTime({ year: 1990, month: 4, day: 21, hour: 10, isLunar: true })
|
|
45
|
+
* // { year: 1990, month: 5, day: 15, hour: 10, minute: 0, isLunarInput: true }
|
|
46
|
+
*/
|
|
47
|
+
export declare function normalizeBirthDateTime(input: BirthDateTimeInput): NormalizedBirthDateTime;
|
|
48
|
+
//# sourceMappingURL=timeNormalization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeNormalization.d.ts","sourceRoot":"","sources":["../../src/utils/timeNormalization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,yBAAyB;AACzB,eAAO,MAAM,UAAU,kBAAkB,CAAC;AAM1C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,YAAY,EAAE,OAAO,CAAC;CACvB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,uBAAuB,CA8BzF"}
|