mingpan 0.1.1 → 0.1.3
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 +116 -42
- package/dist/core/bazi/types.d.ts +0 -1
- package/dist/core/bazi/types.d.ts.map +1 -1
- package/dist/core/qimen/FlyingRule.d.ts +60 -0
- package/dist/core/qimen/FlyingRule.d.ts.map +1 -0
- package/dist/core/qimen/FlyingRule.js +94 -0
- package/dist/core/qimen/FlyingRule.js.map +1 -0
- package/dist/core/qimen/GongMapping.d.ts +29 -0
- package/dist/core/qimen/GongMapping.d.ts.map +1 -0
- package/dist/core/qimen/GongMapping.js +83 -0
- package/dist/core/qimen/GongMapping.js.map +1 -0
- package/dist/core/qimen/RotatingRule.d.ts +76 -0
- package/dist/core/qimen/RotatingRule.d.ts.map +1 -0
- package/dist/core/qimen/RotatingRule.js +126 -0
- package/dist/core/qimen/RotatingRule.js.map +1 -0
- package/dist/core/qimen/YinYangDunCalculator.d.ts +28 -0
- package/dist/core/qimen/YinYangDunCalculator.d.ts.map +1 -0
- package/dist/core/qimen/YinYangDunCalculator.js +79 -0
- package/dist/core/qimen/YinYangDunCalculator.js.map +1 -0
- package/dist/core/qimen/index.d.ts +10 -0
- package/dist/core/qimen/index.d.ts.map +1 -0
- package/dist/core/qimen/index.js +58 -0
- package/dist/core/qimen/index.js.map +1 -0
- package/dist/core/qimen/types.d.ts +19 -0
- package/dist/core/qimen/types.d.ts.map +1 -0
- package/dist/core/qimen/types.js +7 -0
- package/dist/core/qimen/types.js.map +1 -0
- package/dist/index.js +665 -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/output/qimenTextRenderer.d.ts +40 -0
- package/dist/output/qimenTextRenderer.d.ts.map +1 -0
- package/dist/output/qimenTextRenderer.js +363 -0
- package/dist/output/qimenTextRenderer.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/services/qimen/QimenService.d.ts +93 -0
- package/dist/services/qimen/QimenService.d.ts.map +1 -0
- package/dist/services/qimen/QimenService.js +427 -0
- package/dist/services/qimen/QimenService.js.map +1 -0
- package/dist/services/qimen/calculators/BaMenCalculator.d.ts +53 -0
- package/dist/services/qimen/calculators/BaMenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/BaMenCalculator.js +105 -0
- package/dist/services/qimen/calculators/BaMenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/BaShenCalculator.d.ts +34 -0
- package/dist/services/qimen/calculators/BaShenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/BaShenCalculator.js +57 -0
- package/dist/services/qimen/calculators/BaShenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/GeJuCalculator.d.ts +141 -0
- package/dist/services/qimen/calculators/GeJuCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/GeJuCalculator.js +711 -0
- package/dist/services/qimen/calculators/GeJuCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.d.ts +56 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.js +98 -0
- package/dist/services/qimen/calculators/JiuGongCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.d.ts +54 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.js +117 -0
- package/dist/services/qimen/calculators/JiuXingCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/JuShuCalculator.d.ts +57 -0
- package/dist/services/qimen/calculators/JuShuCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/JuShuCalculator.js +115 -0
- package/dist/services/qimen/calculators/JuShuCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.d.ts +117 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.js +237 -0
- package/dist/services/qimen/calculators/PanTypeCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts +50 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js +86 -0
- package/dist/services/qimen/calculators/SanQiLiuYiCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.d.ts +80 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.js +300 -0
- package/dist/services/qimen/calculators/ShenShaCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/YongShenCalculator.d.ts +78 -0
- package/dist/services/qimen/calculators/YongShenCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/YongShenCalculator.js +497 -0
- package/dist/services/qimen/calculators/YongShenCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.d.ts +78 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.js +431 -0
- package/dist/services/qimen/calculators/ZeRiCalculator.js.map +1 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts +118 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.d.ts.map +1 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.js +260 -0
- package/dist/services/qimen/calculators/ZhuanPanCalculator.js.map +1 -0
- package/dist/services/qimen/data/constants.d.ts +105 -0
- package/dist/services/qimen/data/constants.d.ts.map +1 -0
- package/dist/services/qimen/data/constants.js +295 -0
- package/dist/services/qimen/data/constants.js.map +1 -0
- package/dist/services/qimen/data/shensha-rules.d.ts +177 -0
- package/dist/services/qimen/data/shensha-rules.d.ts.map +1 -0
- package/dist/services/qimen/data/shensha-rules.js +397 -0
- package/dist/services/qimen/data/shensha-rules.js.map +1 -0
- package/dist/services/qimen/data/yongshen-rules.d.ts +115 -0
- package/dist/services/qimen/data/yongshen-rules.d.ts.map +1 -0
- package/dist/services/qimen/data/yongshen-rules.js +365 -0
- package/dist/services/qimen/data/yongshen-rules.js.map +1 -0
- package/dist/services/qimen/index.d.ts +20 -0
- package/dist/services/qimen/index.d.ts.map +1 -0
- package/dist/services/qimen/index.js +43 -0
- package/dist/services/qimen/index.js.map +1 -0
- package/dist/services/qimen/types.d.ts +390 -0
- package/dist/services/qimen/types.d.ts.map +1 -0
- package/dist/services/qimen/types.js +20 -0
- package/dist/services/qimen/types.js.map +1 -0
- package/dist/services/qimen/utils/gongUtils.d.ts +80 -0
- package/dist/services/qimen/utils/gongUtils.d.ts.map +1 -0
- package/dist/services/qimen/utils/gongUtils.js +164 -0
- package/dist/services/qimen/utils/gongUtils.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,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 六爻服務主類
|
|
4
|
+
*
|
|
5
|
+
* 提供統一的六爻排盤接口
|
|
6
|
+
*
|
|
7
|
+
* 設計原則:
|
|
8
|
+
* - 排盤層:輸出確定性結構
|
|
9
|
+
* - 斷卦層:交給 Agent/LLM
|
|
10
|
+
* - v1 只支持手動輸入爻值
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.liuyaoService = exports.LiuyaoService = void 0;
|
|
14
|
+
const lunar_javascript_1 = require("lunar-javascript");
|
|
15
|
+
const NajiaCalculator_1 = require("./calculators/NajiaCalculator");
|
|
16
|
+
const LiuqinCalculator_1 = require("./calculators/LiuqinCalculator");
|
|
17
|
+
const LiushenCalculator_1 = require("./calculators/LiushenCalculator");
|
|
18
|
+
const XunkongCalculator_1 = require("./calculators/XunkongCalculator");
|
|
19
|
+
const FushenCalculator_1 = require("./calculators/FushenCalculator");
|
|
20
|
+
const JintuishenCalculator_1 = require("./calculators/JintuishenCalculator");
|
|
21
|
+
const WangshuaiCalculator_1 = require("./calculators/WangshuaiCalculator");
|
|
22
|
+
const guagong_1 = require("./data/guagong");
|
|
23
|
+
const timeNormalization_1 = require("../../utils/timeNormalization");
|
|
24
|
+
class LiuyaoService {
|
|
25
|
+
config;
|
|
26
|
+
constructor(config = {}) {
|
|
27
|
+
this.config = {
|
|
28
|
+
debug: false,
|
|
29
|
+
...config,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 計算六爻排盤
|
|
34
|
+
*/
|
|
35
|
+
calculate(input) {
|
|
36
|
+
// 1. 處理時間(農曆轉公曆)
|
|
37
|
+
const normalizedTime = (0, timeNormalization_1.normalizeBirthDateTime)({
|
|
38
|
+
year: input.year,
|
|
39
|
+
month: input.month,
|
|
40
|
+
day: input.day,
|
|
41
|
+
hour: input.hour,
|
|
42
|
+
isLunar: input.isLunar,
|
|
43
|
+
});
|
|
44
|
+
// 2. 獲取時間信息
|
|
45
|
+
const timeInfo = this.calculateTimeInfo(normalizedTime.year, normalizedTime.month, normalizedTime.day, normalizedTime.hour);
|
|
46
|
+
// 3. 計算本卦
|
|
47
|
+
const { upper: benUpper, lower: benLower } = NajiaCalculator_1.NajiaCalculator.getGuaFromYaoValues(input.yaoValues);
|
|
48
|
+
const benGuaData = (0, guagong_1.getGua64Info)(benUpper, benLower);
|
|
49
|
+
const benGua = {
|
|
50
|
+
name: benGuaData.name,
|
|
51
|
+
upperGua: benGuaData.upper,
|
|
52
|
+
lowerGua: benGuaData.lower,
|
|
53
|
+
gong: benGuaData.gong,
|
|
54
|
+
gongWuXing: guagong_1.BAGUA_WUXING[benGuaData.gong],
|
|
55
|
+
shiYaoPosition: benGuaData.shiYao,
|
|
56
|
+
yingYaoPosition: benGuaData.yingYao,
|
|
57
|
+
guaXu: benGuaData.guaXu,
|
|
58
|
+
isYouHun: benGuaData.guaXu === 7,
|
|
59
|
+
isGuiHun: benGuaData.guaXu === 8,
|
|
60
|
+
};
|
|
61
|
+
// 4. 計算動爻和變卦
|
|
62
|
+
const movingYaoPositions = [];
|
|
63
|
+
const changedYaoYinYang = [];
|
|
64
|
+
for (let i = 0; i < 6; i++) {
|
|
65
|
+
const yaoValue = input.yaoValues[i];
|
|
66
|
+
const isMoving = NajiaCalculator_1.NajiaCalculator.isMoving(yaoValue);
|
|
67
|
+
const isYang = yaoValue === 7 || yaoValue === 9;
|
|
68
|
+
if (isMoving) {
|
|
69
|
+
movingYaoPositions.push(i + 1);
|
|
70
|
+
changedYaoYinYang.push(!isYang); // 動爻陰陽反轉
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
changedYaoYinYang.push(isYang);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// 5. 計算變卦(如果有動爻)
|
|
77
|
+
let bianGua;
|
|
78
|
+
if (movingYaoPositions.length > 0) {
|
|
79
|
+
const { upper: bianUpper, lower: bianLower } = this.getGuaFromYinYang(changedYaoYinYang);
|
|
80
|
+
const bianGuaData = (0, guagong_1.getGua64Info)(bianUpper, bianLower);
|
|
81
|
+
bianGua = {
|
|
82
|
+
name: bianGuaData.name,
|
|
83
|
+
upperGua: bianGuaData.upper,
|
|
84
|
+
lowerGua: bianGuaData.lower,
|
|
85
|
+
gong: bianGuaData.gong,
|
|
86
|
+
gongWuXing: guagong_1.BAGUA_WUXING[bianGuaData.gong],
|
|
87
|
+
shiYaoPosition: bianGuaData.shiYao,
|
|
88
|
+
yingYaoPosition: bianGuaData.yingYao,
|
|
89
|
+
guaXu: bianGuaData.guaXu,
|
|
90
|
+
isYouHun: bianGuaData.guaXu === 7,
|
|
91
|
+
isGuiHun: bianGuaData.guaXu === 8,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
// 6. 計算六爻詳細信息
|
|
95
|
+
const yaoList = this.calculateYaoList(input.yaoValues, benGua, bianGua, timeInfo.dayStem, timeInfo.monthBranch, timeInfo.dayGanZhi.charAt(1));
|
|
96
|
+
// 7. 計算伏神
|
|
97
|
+
const presentLiuQin = yaoList.map(y => y.liuQin);
|
|
98
|
+
const benGuaNaJia = yaoList.map(y => ({ diZhi: y.naJia, wuXing: y.naJiaWuXing }));
|
|
99
|
+
const dayBranch = timeInfo.dayGanZhi.charAt(1);
|
|
100
|
+
const fuShenList = FushenCalculator_1.FushenCalculator.calculate(benGua.gongWuXing, benGua.gong, presentLiuQin, benGuaNaJia, timeInfo.monthBranch, dayBranch);
|
|
101
|
+
return {
|
|
102
|
+
timeInfo,
|
|
103
|
+
benGua,
|
|
104
|
+
bianGua,
|
|
105
|
+
yaoList,
|
|
106
|
+
movingYaoPositions,
|
|
107
|
+
fuShenList,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 計算時間信息
|
|
112
|
+
*/
|
|
113
|
+
calculateTimeInfo(year, month, day, hour) {
|
|
114
|
+
const solar = lunar_javascript_1.Solar.fromYmdHms(year, month, day, hour, 0, 0);
|
|
115
|
+
const lunar = solar.getLunar();
|
|
116
|
+
const eightChar = lunar.getEightChar();
|
|
117
|
+
const yearGanZhi = eightChar.getYear();
|
|
118
|
+
const monthGanZhi = eightChar.getMonth();
|
|
119
|
+
const dayGanZhi = eightChar.getDay();
|
|
120
|
+
const hourGanZhi = eightChar.getTime();
|
|
121
|
+
const dayStem = dayGanZhi.charAt(0);
|
|
122
|
+
const dayBranch = dayGanZhi.charAt(1);
|
|
123
|
+
const monthBranch = monthGanZhi.charAt(1);
|
|
124
|
+
const xunKong = XunkongCalculator_1.XunkongCalculator.calculate(dayStem, dayBranch);
|
|
125
|
+
return {
|
|
126
|
+
solarDate: `${year}年${month}月${day}日`,
|
|
127
|
+
lunarDate: lunar.toString(),
|
|
128
|
+
yearGanZhi,
|
|
129
|
+
monthGanZhi,
|
|
130
|
+
dayGanZhi,
|
|
131
|
+
hourGanZhi,
|
|
132
|
+
dayStem,
|
|
133
|
+
monthBranch,
|
|
134
|
+
xunKong,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 計算六爻詳細信息
|
|
139
|
+
*/
|
|
140
|
+
calculateYaoList(yaoValues, benGua, bianGua, dayStem, monthBranch, dayBranch) {
|
|
141
|
+
const yaoList = [];
|
|
142
|
+
const liuShenList = LiushenCalculator_1.LiushenCalculator.calculateAll(dayStem);
|
|
143
|
+
const naJiaList = NajiaCalculator_1.NajiaCalculator.calculateAll(benGua.upperGua, benGua.lowerGua);
|
|
144
|
+
for (let i = 0; i < 6; i++) {
|
|
145
|
+
const position = i + 1;
|
|
146
|
+
const yaoValue = yaoValues[i];
|
|
147
|
+
const isMoving = NajiaCalculator_1.NajiaCalculator.isMoving(yaoValue);
|
|
148
|
+
const yinYang = NajiaCalculator_1.NajiaCalculator.getYinYang(yaoValue);
|
|
149
|
+
const changedYinYang = NajiaCalculator_1.NajiaCalculator.getChangedYinYang(yaoValue);
|
|
150
|
+
const naJia = naJiaList[i];
|
|
151
|
+
const liuQin = LiuqinCalculator_1.LiuqinCalculator.calculate(benGua.gongWuXing, naJia.wuXing);
|
|
152
|
+
// 計算變爻納甲和進退神(如果是動爻)
|
|
153
|
+
let changedNaJia;
|
|
154
|
+
let jinTuiShen = undefined;
|
|
155
|
+
if (isMoving && bianGua) {
|
|
156
|
+
const bianNaJiaList = NajiaCalculator_1.NajiaCalculator.calculateAll(bianGua.upperGua, bianGua.lowerGua);
|
|
157
|
+
changedNaJia = bianNaJiaList[i].diZhi;
|
|
158
|
+
// 計算進退神
|
|
159
|
+
jinTuiShen = JintuishenCalculator_1.JintuishenCalculator.calculate(naJia.diZhi, changedNaJia);
|
|
160
|
+
}
|
|
161
|
+
// 計算旺衰
|
|
162
|
+
const wangShuaiByMonth = WangshuaiCalculator_1.WangshuaiCalculator.calculate(naJia.wuXing, monthBranch);
|
|
163
|
+
const wangShuaiByDay = WangshuaiCalculator_1.WangshuaiCalculator.calculate(naJia.wuXing, dayBranch);
|
|
164
|
+
yaoList.push({
|
|
165
|
+
position,
|
|
166
|
+
value: yaoValue,
|
|
167
|
+
yinYang,
|
|
168
|
+
isMoving,
|
|
169
|
+
changedYinYang,
|
|
170
|
+
naJia: naJia.diZhi,
|
|
171
|
+
naJiaWuXing: naJia.wuXing,
|
|
172
|
+
changedNaJia,
|
|
173
|
+
liuQin,
|
|
174
|
+
liuShen: liuShenList[i],
|
|
175
|
+
isShiYao: position === benGua.shiYaoPosition,
|
|
176
|
+
isYingYao: position === benGua.yingYaoPosition,
|
|
177
|
+
jinTuiShen,
|
|
178
|
+
wangShuaiByMonth,
|
|
179
|
+
wangShuaiByDay,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
return yaoList;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* 根據陰陽數組獲取上下卦
|
|
186
|
+
*
|
|
187
|
+
* 八卦二進制:下爻是最高位 (bit 2)
|
|
188
|
+
* 例如:震 = 0b100 = 4,表示下爻阳(1)、中爻阴(0)、上爻阴(0)
|
|
189
|
+
* 計算方式:下爻*4 + 中爻*2 + 上爻*1
|
|
190
|
+
*/
|
|
191
|
+
getGuaFromYinYang(yinYang) {
|
|
192
|
+
const BINARY_TO_BAGUA = {
|
|
193
|
+
0b000: '坤',
|
|
194
|
+
0b001: '艮',
|
|
195
|
+
0b010: '坎',
|
|
196
|
+
0b011: '巽',
|
|
197
|
+
0b100: '震',
|
|
198
|
+
0b101: '離',
|
|
199
|
+
0b110: '兌',
|
|
200
|
+
0b111: '乾',
|
|
201
|
+
};
|
|
202
|
+
// 下爻是最高位 (bit 2),上爻是最低位 (bit 0)
|
|
203
|
+
const lowerBinary = (yinYang[0] ? 4 : 0) + (yinYang[1] ? 2 : 0) + (yinYang[2] ? 1 : 0);
|
|
204
|
+
const upperBinary = (yinYang[3] ? 4 : 0) + (yinYang[4] ? 2 : 0) + (yinYang[5] ? 1 : 0);
|
|
205
|
+
return {
|
|
206
|
+
upper: BINARY_TO_BAGUA[upperBinary],
|
|
207
|
+
lower: BINARY_TO_BAGUA[lowerBinary],
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.LiuyaoService = LiuyaoService;
|
|
212
|
+
// 導出單例
|
|
213
|
+
exports.liuyaoService = new LiuyaoService();
|
|
214
|
+
//# sourceMappingURL=LiuyaoService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiuyaoService.js","sourceRoot":"","sources":["../../../src/services/liuyao/LiuyaoService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 伏神/飛神計算器
|
|
3
|
+
*
|
|
4
|
+
* 理論來源:《增刪卜易》第35章「飛伏神章」、《卜筮正宗》
|
|
5
|
+
*
|
|
6
|
+
* 核心規則:
|
|
7
|
+
* - 用神不現於卦中時,從本宮首卦(八純卦)尋找伏神
|
|
8
|
+
* - 飛神 = 本卦該爻位的納甲地支
|
|
9
|
+
* - 伏神 = 本宮首卦該爻位的納甲地支
|
|
10
|
+
* - 飛伏關係:飛生伏(吉)、飛克伏(凶)、伏生飛(洩)、伏克飛(有力)
|
|
11
|
+
*/
|
|
12
|
+
import { BaGua, DiZhi, WuXing, LiuQin, FuShenInfo } from '../types';
|
|
13
|
+
export declare class FushenCalculator {
|
|
14
|
+
/**
|
|
15
|
+
* 計算伏神列表
|
|
16
|
+
*
|
|
17
|
+
* @param gongWuXing 卦宮五行(用於計算六親)
|
|
18
|
+
* @param gong 卦宮(用於找本宮首卦)
|
|
19
|
+
* @param presentLiuQin 卦中已出現的六親列表(每爻的六親)
|
|
20
|
+
* @param benGuaNaJia 本卦六爻納甲(作為飛神)
|
|
21
|
+
* @param monthBranch 月建地支(用於旺衰計算)
|
|
22
|
+
* @param dayBranch 日辰地支(用於旺衰計算)
|
|
23
|
+
*/
|
|
24
|
+
static calculate(gongWuXing: WuXing, gong: BaGua, presentLiuQin: LiuQin[], benGuaNaJia: {
|
|
25
|
+
diZhi: DiZhi;
|
|
26
|
+
wuXing: WuXing;
|
|
27
|
+
}[], monthBranch?: DiZhi, dayBranch?: DiZhi): FuShenInfo[];
|
|
28
|
+
/**
|
|
29
|
+
* 獲取本宮首卦(八純卦)的納甲
|
|
30
|
+
*/
|
|
31
|
+
private static getShouGuaNaJia;
|
|
32
|
+
/**
|
|
33
|
+
* 計算飛伏關係
|
|
34
|
+
*
|
|
35
|
+
* @param feiWuXing 飛神五行
|
|
36
|
+
* @param fuWuXing 伏神五行
|
|
37
|
+
*/
|
|
38
|
+
private static calculateRelation;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=FushenCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FushenCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/liuyao/calculators/FushenCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAmB,UAAU,EAAkB,MAAM,UAAU,CAAC;AAQrG,qBAAa,gBAAgB;IAC3B;;;;;;;;;OASG;IACH,MAAM,CAAC,SAAS,CACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,KAAK,EACX,aAAa,EAAE,MAAM,EAAE,EACvB,WAAW,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,EAC/C,WAAW,CAAC,EAAE,KAAK,EACnB,SAAS,CAAC,EAAE,KAAK,GAChB,UAAU,EAAE;IA0Df;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAgB9B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;CA6BjC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 伏神/飛神計算器
|
|
4
|
+
*
|
|
5
|
+
* 理論來源:《增刪卜易》第35章「飛伏神章」、《卜筮正宗》
|
|
6
|
+
*
|
|
7
|
+
* 核心規則:
|
|
8
|
+
* - 用神不現於卦中時,從本宮首卦(八純卦)尋找伏神
|
|
9
|
+
* - 飛神 = 本卦該爻位的納甲地支
|
|
10
|
+
* - 伏神 = 本宮首卦該爻位的納甲地支
|
|
11
|
+
* - 飛伏關係:飛生伏(吉)、飛克伏(凶)、伏生飛(洩)、伏克飛(有力)
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.FushenCalculator = void 0;
|
|
15
|
+
const guagong_1 = require("../data/guagong");
|
|
16
|
+
const LiuqinCalculator_1 = require("./LiuqinCalculator");
|
|
17
|
+
const WangshuaiCalculator_1 = require("./WangshuaiCalculator");
|
|
18
|
+
/** 六親列表 */
|
|
19
|
+
const ALL_LIUQIN = ['父母', '兄弟', '子孫', '妻財', '官鬼'];
|
|
20
|
+
class FushenCalculator {
|
|
21
|
+
/**
|
|
22
|
+
* 計算伏神列表
|
|
23
|
+
*
|
|
24
|
+
* @param gongWuXing 卦宮五行(用於計算六親)
|
|
25
|
+
* @param gong 卦宮(用於找本宮首卦)
|
|
26
|
+
* @param presentLiuQin 卦中已出現的六親列表(每爻的六親)
|
|
27
|
+
* @param benGuaNaJia 本卦六爻納甲(作為飛神)
|
|
28
|
+
* @param monthBranch 月建地支(用於旺衰計算)
|
|
29
|
+
* @param dayBranch 日辰地支(用於旺衰計算)
|
|
30
|
+
*/
|
|
31
|
+
static calculate(gongWuXing, gong, presentLiuQin, benGuaNaJia, monthBranch, dayBranch) {
|
|
32
|
+
// 找出卦中缺失的六親
|
|
33
|
+
const presentSet = new Set(presentLiuQin);
|
|
34
|
+
const missingLiuQin = ALL_LIUQIN.filter(lq => !presentSet.has(lq));
|
|
35
|
+
if (missingLiuQin.length === 0) {
|
|
36
|
+
return []; // 六親俱全,無伏神
|
|
37
|
+
}
|
|
38
|
+
// 獲取本宮首卦(八純卦)的納甲
|
|
39
|
+
const shouGuaNaJia = this.getShouGuaNaJia(gong);
|
|
40
|
+
// 計算本宮首卦每爻的六親
|
|
41
|
+
const shouGuaLiuQin = shouGuaNaJia.map(nj => LiuqinCalculator_1.LiuqinCalculator.calculate(gongWuXing, nj.wuXing));
|
|
42
|
+
const fuShenList = [];
|
|
43
|
+
for (const missingLq of missingLiuQin) {
|
|
44
|
+
// 在本宮首卦中找到該六親的位置
|
|
45
|
+
const position = shouGuaLiuQin.findIndex(lq => lq === missingLq);
|
|
46
|
+
if (position === -1) {
|
|
47
|
+
// 理論上不應該發生,因為八純卦六親必定俱全
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const fuShenNaJia = shouGuaNaJia[position];
|
|
51
|
+
const feiShenNaJia = benGuaNaJia[position];
|
|
52
|
+
// 計算飛伏關係
|
|
53
|
+
const relation = this.calculateRelation(feiShenNaJia.wuXing, fuShenNaJia.wuXing);
|
|
54
|
+
const fuShenInfo = {
|
|
55
|
+
liuQin: missingLq,
|
|
56
|
+
diZhi: fuShenNaJia.diZhi,
|
|
57
|
+
wuXing: fuShenNaJia.wuXing,
|
|
58
|
+
position: position + 1, // 轉為 1-6
|
|
59
|
+
feiShenDiZhi: feiShenNaJia.diZhi,
|
|
60
|
+
feiShenWuXing: feiShenNaJia.wuXing,
|
|
61
|
+
relation,
|
|
62
|
+
};
|
|
63
|
+
// 計算旺衰
|
|
64
|
+
if (monthBranch) {
|
|
65
|
+
fuShenInfo.wangShuaiByMonth = WangshuaiCalculator_1.WangshuaiCalculator.calculate(fuShenNaJia.wuXing, monthBranch);
|
|
66
|
+
}
|
|
67
|
+
if (dayBranch) {
|
|
68
|
+
fuShenInfo.wangShuaiByDay = WangshuaiCalculator_1.WangshuaiCalculator.calculate(fuShenNaJia.wuXing, dayBranch);
|
|
69
|
+
}
|
|
70
|
+
fuShenList.push(fuShenInfo);
|
|
71
|
+
}
|
|
72
|
+
return fuShenList;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* 獲取本宮首卦(八純卦)的納甲
|
|
76
|
+
*/
|
|
77
|
+
static getShouGuaNaJia(gong) {
|
|
78
|
+
const naJiaData = guagong_1.NAJIA_TABLE[gong];
|
|
79
|
+
const result = [];
|
|
80
|
+
// 內卦(初爻到三爻)
|
|
81
|
+
for (const dz of naJiaData.inner) {
|
|
82
|
+
result.push({ diZhi: dz, wuXing: guagong_1.DIZHI_WUXING[dz] });
|
|
83
|
+
}
|
|
84
|
+
// 外卦(四爻到上爻)
|
|
85
|
+
for (const dz of naJiaData.outer) {
|
|
86
|
+
result.push({ diZhi: dz, wuXing: guagong_1.DIZHI_WUXING[dz] });
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 計算飛伏關係
|
|
92
|
+
*
|
|
93
|
+
* @param feiWuXing 飛神五行
|
|
94
|
+
* @param fuWuXing 伏神五行
|
|
95
|
+
*/
|
|
96
|
+
static calculateRelation(feiWuXing, fuWuXing) {
|
|
97
|
+
if (feiWuXing === fuWuXing) {
|
|
98
|
+
return '比和';
|
|
99
|
+
}
|
|
100
|
+
// 五行生剋關係
|
|
101
|
+
const SHENG = {
|
|
102
|
+
'金': '水', '水': '木', '木': '火', '火': '土', '土': '金',
|
|
103
|
+
};
|
|
104
|
+
const KE = {
|
|
105
|
+
'金': '木', '木': '土', '土': '水', '水': '火', '火': '金',
|
|
106
|
+
};
|
|
107
|
+
if (SHENG[feiWuXing] === fuWuXing) {
|
|
108
|
+
return '飛生伏'; // 飛神生伏神,伏神得生,吉
|
|
109
|
+
}
|
|
110
|
+
if (KE[feiWuXing] === fuWuXing) {
|
|
111
|
+
return '飛克伏'; // 飛神克伏神,伏神受制,凶
|
|
112
|
+
}
|
|
113
|
+
if (SHENG[fuWuXing] === feiWuXing) {
|
|
114
|
+
return '伏生飛'; // 伏神生飛神,伏神洩氣
|
|
115
|
+
}
|
|
116
|
+
if (KE[fuWuXing] === feiWuXing) {
|
|
117
|
+
return '伏克飛'; // 伏神克飛神,伏神有力
|
|
118
|
+
}
|
|
119
|
+
// 不應該到這裡
|
|
120
|
+
return '比和';
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.FushenCalculator = FushenCalculator;
|
|
124
|
+
//# sourceMappingURL=FushenCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FushenCalculator.js","sourceRoot":"","sources":["../../../../src/services/liuyao/calculators/FushenCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 進神/退神計算器
|
|
3
|
+
*
|
|
4
|
+
* 理論來源:《增刪卜易》第36章「進神退神章」
|
|
5
|
+
*
|
|
6
|
+
* 核心規則:
|
|
7
|
+
* - 進神:動爻變化後地支順進(如亥化子、寅化卯)
|
|
8
|
+
* - 退神:動爻變化後地支逆退(如子化亥、卯化寅)
|
|
9
|
+
*
|
|
10
|
+
* 進神規則(地支順進):
|
|
11
|
+
* - 亥化子、寅化卯、巳化午、申化酉(四正進)
|
|
12
|
+
* - 丑化辰、辰化未、未化戌、戌化丑(四墓進)
|
|
13
|
+
*
|
|
14
|
+
* 退神規則(地支逆退):
|
|
15
|
+
* - 子化亥、卯化寅、午化巳、酉化申(四正退)
|
|
16
|
+
* - 辰化丑、未化辰、戌化未、丑化戌(四墓退)
|
|
17
|
+
*/
|
|
18
|
+
import { DiZhi, JinTuiShenType } from '../types';
|
|
19
|
+
export declare class JintuishenCalculator {
|
|
20
|
+
/**
|
|
21
|
+
* 判斷動爻變化是否為進神或退神
|
|
22
|
+
*
|
|
23
|
+
* @param originalDiZhi 原地支(本卦納甲)
|
|
24
|
+
* @param changedDiZhi 變化後地支(變卦納甲)
|
|
25
|
+
* @returns 進神/退神/null
|
|
26
|
+
*/
|
|
27
|
+
static calculate(originalDiZhi: DiZhi, changedDiZhi: DiZhi): JinTuiShenType;
|
|
28
|
+
/**
|
|
29
|
+
* 獲取進神說明
|
|
30
|
+
*/
|
|
31
|
+
static getJinShenDescription(): string;
|
|
32
|
+
/**
|
|
33
|
+
* 獲取退神說明
|
|
34
|
+
*/
|
|
35
|
+
static getTuiShenDescription(): string;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=JintuishenCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JintuishenCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/liuyao/calculators/JintuishenCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAoCjD,qBAAa,oBAAoB;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,GAAG,cAAc;IAc3E;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM;IAItC;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM;CAGvC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 進神/退神計算器
|
|
4
|
+
*
|
|
5
|
+
* 理論來源:《增刪卜易》第36章「進神退神章」
|
|
6
|
+
*
|
|
7
|
+
* 核心規則:
|
|
8
|
+
* - 進神:動爻變化後地支順進(如亥化子、寅化卯)
|
|
9
|
+
* - 退神:動爻變化後地支逆退(如子化亥、卯化寅)
|
|
10
|
+
*
|
|
11
|
+
* 進神規則(地支順進):
|
|
12
|
+
* - 亥化子、寅化卯、巳化午、申化酉(四正進)
|
|
13
|
+
* - 丑化辰、辰化未、未化戌、戌化丑(四墓進)
|
|
14
|
+
*
|
|
15
|
+
* 退神規則(地支逆退):
|
|
16
|
+
* - 子化亥、卯化寅、午化巳、酉化申(四正退)
|
|
17
|
+
* - 辰化丑、未化辰、戌化未、丑化戌(四墓退)
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.JintuishenCalculator = void 0;
|
|
21
|
+
/** 進神對照表:原地支 -> 變化後地支 */
|
|
22
|
+
const JIN_SHEN_MAP = {
|
|
23
|
+
'亥': '子',
|
|
24
|
+
'寅': '卯',
|
|
25
|
+
'巳': '午',
|
|
26
|
+
'申': '酉',
|
|
27
|
+
'丑': '辰',
|
|
28
|
+
'辰': '未',
|
|
29
|
+
'未': '戌',
|
|
30
|
+
'戌': '丑',
|
|
31
|
+
// 以下不構成進神
|
|
32
|
+
'子': '子', // placeholder
|
|
33
|
+
'卯': '卯',
|
|
34
|
+
'午': '午',
|
|
35
|
+
'酉': '酉',
|
|
36
|
+
};
|
|
37
|
+
/** 退神對照表:原地支 -> 變化後地支 */
|
|
38
|
+
const TUI_SHEN_MAP = {
|
|
39
|
+
'子': '亥',
|
|
40
|
+
'卯': '寅',
|
|
41
|
+
'午': '巳',
|
|
42
|
+
'酉': '申',
|
|
43
|
+
'辰': '丑',
|
|
44
|
+
'未': '辰',
|
|
45
|
+
'戌': '未',
|
|
46
|
+
'丑': '戌',
|
|
47
|
+
// 以下不構成退神
|
|
48
|
+
'亥': '亥', // placeholder
|
|
49
|
+
'寅': '寅',
|
|
50
|
+
'巳': '巳',
|
|
51
|
+
'申': '申',
|
|
52
|
+
};
|
|
53
|
+
class JintuishenCalculator {
|
|
54
|
+
/**
|
|
55
|
+
* 判斷動爻變化是否為進神或退神
|
|
56
|
+
*
|
|
57
|
+
* @param originalDiZhi 原地支(本卦納甲)
|
|
58
|
+
* @param changedDiZhi 變化後地支(變卦納甲)
|
|
59
|
+
* @returns 進神/退神/null
|
|
60
|
+
*/
|
|
61
|
+
static calculate(originalDiZhi, changedDiZhi) {
|
|
62
|
+
// 檢查是否為進神
|
|
63
|
+
if (JIN_SHEN_MAP[originalDiZhi] === changedDiZhi) {
|
|
64
|
+
return '進神';
|
|
65
|
+
}
|
|
66
|
+
// 檢查是否為退神
|
|
67
|
+
if (TUI_SHEN_MAP[originalDiZhi] === changedDiZhi) {
|
|
68
|
+
return '退神';
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 獲取進神說明
|
|
74
|
+
*/
|
|
75
|
+
static getJinShenDescription() {
|
|
76
|
+
return '進神:亥→子、寅→卯、巳→午、申→酉、丑→辰、辰→未、未→戌、戌→丑';
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 獲取退神說明
|
|
80
|
+
*/
|
|
81
|
+
static getTuiShenDescription() {
|
|
82
|
+
return '退神:子→亥、卯→寅、午→巳、酉→申、辰→丑、未→辰、戌→未、丑→戌';
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.JintuishenCalculator = JintuishenCalculator;
|
|
86
|
+
//# sourceMappingURL=JintuishenCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JintuishenCalculator.js","sourceRoot":"","sources":["../../../../src/services/liuyao/calculators/JintuishenCalculator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAIH,yBAAyB;AACzB,MAAM,YAAY,GAAyB;IACzC,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,UAAU;IACV,GAAG,EAAE,GAAG,EAAE,cAAc;IACxB,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,yBAAyB;AACzB,MAAM,YAAY,GAAyB;IACzC,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,UAAU;IACV,GAAG,EAAE,GAAG,EAAE,cAAc;IACxB,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,MAAa,oBAAoB;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,aAAoB,EAAE,YAAmB;QACxD,UAAU;QACV,IAAI,YAAY,CAAC,aAAa,CAAC,KAAK,YAAY,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,UAAU;QACV,IAAI,YAAY,CAAC,aAAa,CAAC,KAAK,YAAY,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,qBAAqB;QAC1B,OAAO,oCAAoC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,qBAAqB;QAC1B,OAAO,oCAAoC,CAAC;IAC9C,CAAC;CACF;AAnCD,oDAmCC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 六親計算器
|
|
3
|
+
*
|
|
4
|
+
* 六親推導規則(以卦宮五行為「我」):
|
|
5
|
+
* - 生我者為父母
|
|
6
|
+
* - 我生者為子孫
|
|
7
|
+
* - 克我者為官鬼
|
|
8
|
+
* - 我克者為妻財
|
|
9
|
+
* - 同我者為兄弟
|
|
10
|
+
*/
|
|
11
|
+
import { WuXing, LiuQin } from '../types';
|
|
12
|
+
export declare class LiuqinCalculator {
|
|
13
|
+
/**
|
|
14
|
+
* 計算六親
|
|
15
|
+
* @param gongWuXing 卦宮五行(作為「我」)
|
|
16
|
+
* @param yaoWuXing 爻的五行
|
|
17
|
+
*/
|
|
18
|
+
static calculate(gongWuXing: WuXing, yaoWuXing: WuXing): LiuQin;
|
|
19
|
+
/**
|
|
20
|
+
* 獲取六親簡稱
|
|
21
|
+
*/
|
|
22
|
+
static getShortName(liuQin: LiuQin): string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=LiuqinCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiuqinCalculator.d.ts","sourceRoot":"","sources":["../../../../src/services/liuyao/calculators/LiuqinCalculator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAoB1C,qBAAa,gBAAgB;IAC3B;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IA8B/D;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAU5C"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 六親計算器
|
|
4
|
+
*
|
|
5
|
+
* 六親推導規則(以卦宮五行為「我」):
|
|
6
|
+
* - 生我者為父母
|
|
7
|
+
* - 我生者為子孫
|
|
8
|
+
* - 克我者為官鬼
|
|
9
|
+
* - 我克者為妻財
|
|
10
|
+
* - 同我者為兄弟
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.LiuqinCalculator = void 0;
|
|
14
|
+
/** 五行相生關係:key 生 value */
|
|
15
|
+
const WUXING_SHENG = {
|
|
16
|
+
'木': '火',
|
|
17
|
+
'火': '土',
|
|
18
|
+
'土': '金',
|
|
19
|
+
'金': '水',
|
|
20
|
+
'水': '木',
|
|
21
|
+
};
|
|
22
|
+
/** 五行相剋關係:key 剋 value */
|
|
23
|
+
const WUXING_KE = {
|
|
24
|
+
'木': '土',
|
|
25
|
+
'土': '水',
|
|
26
|
+
'水': '火',
|
|
27
|
+
'火': '金',
|
|
28
|
+
'金': '木',
|
|
29
|
+
};
|
|
30
|
+
class LiuqinCalculator {
|
|
31
|
+
/**
|
|
32
|
+
* 計算六親
|
|
33
|
+
* @param gongWuXing 卦宮五行(作為「我」)
|
|
34
|
+
* @param yaoWuXing 爻的五行
|
|
35
|
+
*/
|
|
36
|
+
static calculate(gongWuXing, yaoWuXing) {
|
|
37
|
+
// 同我者為兄弟
|
|
38
|
+
if (gongWuXing === yaoWuXing) {
|
|
39
|
+
return '兄弟';
|
|
40
|
+
}
|
|
41
|
+
// 生我者為父母
|
|
42
|
+
if (WUXING_SHENG[yaoWuXing] === gongWuXing) {
|
|
43
|
+
return '父母';
|
|
44
|
+
}
|
|
45
|
+
// 我生者為子孫
|
|
46
|
+
if (WUXING_SHENG[gongWuXing] === yaoWuXing) {
|
|
47
|
+
return '子孫';
|
|
48
|
+
}
|
|
49
|
+
// 克我者為官鬼
|
|
50
|
+
if (WUXING_KE[yaoWuXing] === gongWuXing) {
|
|
51
|
+
return '官鬼';
|
|
52
|
+
}
|
|
53
|
+
// 我克者為妻財
|
|
54
|
+
if (WUXING_KE[gongWuXing] === yaoWuXing) {
|
|
55
|
+
return '妻財';
|
|
56
|
+
}
|
|
57
|
+
// 理論上不會到這裡
|
|
58
|
+
return '兄弟';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 獲取六親簡稱
|
|
62
|
+
*/
|
|
63
|
+
static getShortName(liuQin) {
|
|
64
|
+
const SHORT_NAMES = {
|
|
65
|
+
'父母': '父',
|
|
66
|
+
'兄弟': '兄',
|
|
67
|
+
'子孫': '子',
|
|
68
|
+
'妻財': '財',
|
|
69
|
+
'官鬼': '官',
|
|
70
|
+
};
|
|
71
|
+
return SHORT_NAMES[liuQin];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.LiuqinCalculator = LiuqinCalculator;
|
|
75
|
+
//# sourceMappingURL=LiuqinCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiuqinCalculator.js","sourceRoot":"","sources":["../../../../src/services/liuyao/calculators/LiuqinCalculator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAIH,yBAAyB;AACzB,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,yBAAyB;AACzB,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;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,UAAkB,EAAE,SAAiB;QACpD,SAAS;QACT,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,SAAS;QACT,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,SAAS;QACT,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,SAAS;QACT,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,UAAU,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,SAAS;QACT,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,WAAW;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAc;QAChC,MAAM,WAAW,GAA2B;YAC1C,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;SACV,CAAC;QACF,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF;AAjDD,4CAiDC"}
|