@gracefullight/saju 0.5.0 → 0.6.0
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/dist/__tests__/ten-gods.test.js +55 -41
- package/dist/__tests__/twelve-stages.test.js +55 -51
- package/dist/core/luck.d.ts.map +1 -1
- package/dist/core/luck.js +2 -1
- package/dist/core/relations.d.ts +0 -2
- package/dist/core/relations.d.ts.map +1 -1
- package/dist/core/sinsals.d.ts +0 -4
- package/dist/core/sinsals.d.ts.map +1 -1
- package/dist/core/strength.d.ts +0 -4
- package/dist/core/strength.d.ts.map +1 -1
- package/dist/core/strength.js +16 -19
- package/dist/core/ten-gods.d.ts +1 -10
- package/dist/core/ten-gods.d.ts.map +1 -1
- package/dist/core/ten-gods.js +1 -45
- package/dist/core/twelve-stages.d.ts +0 -11
- package/dist/core/twelve-stages.d.ts.map +1 -1
- package/dist/core/twelve-stages.js +0 -6
- package/dist/core/yongshen.d.ts +5 -2
- package/dist/core/yongshen.d.ts.map +1 -1
- package/dist/core/yongshen.js +12 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { analyzeTenGods, countElements, countTenGods, getBranchElement, getHiddenStems, getStemElement, getStemPolarity,
|
|
2
|
+
import { analyzeTenGods, countElements, countTenGods, getBranchElement, getHiddenStems, getStemElement, getStemPolarity, getTenGodKey, getTenGodLabel, } from "../core/ten-gods";
|
|
3
3
|
describe("ten-gods", () => {
|
|
4
4
|
describe("getStemElement", () => {
|
|
5
5
|
it("returns correct element for each stem", () => {
|
|
@@ -42,46 +42,60 @@ describe("ten-gods", () => {
|
|
|
42
42
|
expect(getHiddenStems("午")).toEqual(["丁", "己"]);
|
|
43
43
|
});
|
|
44
44
|
});
|
|
45
|
-
describe("
|
|
46
|
-
it("correctly identifies
|
|
47
|
-
expect(
|
|
48
|
-
expect(
|
|
49
|
-
});
|
|
50
|
-
it("correctly identifies
|
|
51
|
-
expect(
|
|
52
|
-
expect(
|
|
53
|
-
});
|
|
54
|
-
it("correctly identifies
|
|
55
|
-
expect(
|
|
56
|
-
expect(
|
|
57
|
-
});
|
|
58
|
-
it("correctly identifies
|
|
59
|
-
expect(
|
|
60
|
-
expect(
|
|
61
|
-
});
|
|
62
|
-
it("correctly identifies
|
|
63
|
-
expect(
|
|
64
|
-
expect(
|
|
65
|
-
});
|
|
66
|
-
it("correctly identifies
|
|
67
|
-
expect(
|
|
68
|
-
expect(
|
|
69
|
-
});
|
|
70
|
-
it("correctly identifies
|
|
71
|
-
expect(
|
|
72
|
-
expect(
|
|
73
|
-
});
|
|
74
|
-
it("correctly identifies
|
|
75
|
-
expect(
|
|
76
|
-
expect(
|
|
77
|
-
});
|
|
78
|
-
it("correctly identifies
|
|
79
|
-
expect(
|
|
80
|
-
expect(
|
|
81
|
-
});
|
|
82
|
-
it("correctly identifies
|
|
83
|
-
expect(
|
|
84
|
-
expect(
|
|
45
|
+
describe("getTenGodKey", () => {
|
|
46
|
+
it("correctly identifies companion (same element, same polarity)", () => {
|
|
47
|
+
expect(getTenGodKey("甲", "甲")).toBe("companion");
|
|
48
|
+
expect(getTenGodKey("乙", "乙")).toBe("companion");
|
|
49
|
+
});
|
|
50
|
+
it("correctly identifies robWealth (same element, different polarity)", () => {
|
|
51
|
+
expect(getTenGodKey("甲", "乙")).toBe("robWealth");
|
|
52
|
+
expect(getTenGodKey("乙", "甲")).toBe("robWealth");
|
|
53
|
+
});
|
|
54
|
+
it("correctly identifies eatingGod (I generate, same polarity)", () => {
|
|
55
|
+
expect(getTenGodKey("甲", "丙")).toBe("eatingGod");
|
|
56
|
+
expect(getTenGodKey("丙", "戊")).toBe("eatingGod");
|
|
57
|
+
});
|
|
58
|
+
it("correctly identifies hurtingOfficer (I generate, different polarity)", () => {
|
|
59
|
+
expect(getTenGodKey("甲", "丁")).toBe("hurtingOfficer");
|
|
60
|
+
expect(getTenGodKey("丙", "己")).toBe("hurtingOfficer");
|
|
61
|
+
});
|
|
62
|
+
it("correctly identifies indirectWealth (I control, same polarity)", () => {
|
|
63
|
+
expect(getTenGodKey("甲", "戊")).toBe("indirectWealth");
|
|
64
|
+
expect(getTenGodKey("丙", "庚")).toBe("indirectWealth");
|
|
65
|
+
});
|
|
66
|
+
it("correctly identifies directWealth (I control, different polarity)", () => {
|
|
67
|
+
expect(getTenGodKey("甲", "己")).toBe("directWealth");
|
|
68
|
+
expect(getTenGodKey("丙", "辛")).toBe("directWealth");
|
|
69
|
+
});
|
|
70
|
+
it("correctly identifies sevenKillings (controls me, same polarity)", () => {
|
|
71
|
+
expect(getTenGodKey("甲", "庚")).toBe("sevenKillings");
|
|
72
|
+
expect(getTenGodKey("丙", "壬")).toBe("sevenKillings");
|
|
73
|
+
});
|
|
74
|
+
it("correctly identifies directOfficer (controls me, different polarity)", () => {
|
|
75
|
+
expect(getTenGodKey("甲", "辛")).toBe("directOfficer");
|
|
76
|
+
expect(getTenGodKey("丙", "癸")).toBe("directOfficer");
|
|
77
|
+
});
|
|
78
|
+
it("correctly identifies indirectSeal (generates me, same polarity)", () => {
|
|
79
|
+
expect(getTenGodKey("甲", "壬")).toBe("indirectSeal");
|
|
80
|
+
expect(getTenGodKey("丙", "甲")).toBe("indirectSeal");
|
|
81
|
+
});
|
|
82
|
+
it("correctly identifies directSeal (generates me, different polarity)", () => {
|
|
83
|
+
expect(getTenGodKey("甲", "癸")).toBe("directSeal");
|
|
84
|
+
expect(getTenGodKey("丙", "乙")).toBe("directSeal");
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe("getTenGodLabel", () => {
|
|
88
|
+
it("returns correct Korean labels", () => {
|
|
89
|
+
expect(getTenGodLabel("companion").korean).toBe("비견");
|
|
90
|
+
expect(getTenGodLabel("robWealth").korean).toBe("겁재");
|
|
91
|
+
expect(getTenGodLabel("eatingGod").korean).toBe("식신");
|
|
92
|
+
expect(getTenGodLabel("hurtingOfficer").korean).toBe("상관");
|
|
93
|
+
expect(getTenGodLabel("indirectWealth").korean).toBe("편재");
|
|
94
|
+
expect(getTenGodLabel("directWealth").korean).toBe("정재");
|
|
95
|
+
expect(getTenGodLabel("sevenKillings").korean).toBe("편관");
|
|
96
|
+
expect(getTenGodLabel("directOfficer").korean).toBe("정관");
|
|
97
|
+
expect(getTenGodLabel("indirectSeal").korean).toBe("편인");
|
|
98
|
+
expect(getTenGodLabel("directSeal").korean).toBe("정인");
|
|
85
99
|
});
|
|
86
100
|
});
|
|
87
101
|
describe("analyzeTenGods", () => {
|
|
@@ -1,86 +1,90 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { analyzeTwelveStages,
|
|
2
|
+
import { analyzeTwelveStages, getTwelveStageLabel, TWELVE_STAGES } from "../core/twelve-stages";
|
|
3
3
|
describe("twelve-stages", () => {
|
|
4
|
-
describe("
|
|
4
|
+
describe("analyzeTwelveStages", () => {
|
|
5
|
+
it("should analyze all four pillars", () => {
|
|
6
|
+
const result = analyzeTwelveStages("甲子", "丙寅", "戊辰", "庚午");
|
|
7
|
+
expect(result.year).toBeDefined();
|
|
8
|
+
expect(result.month).toBeDefined();
|
|
9
|
+
expect(result.day).toBeDefined();
|
|
10
|
+
expect(result.hour).toBeDefined();
|
|
11
|
+
expect(TWELVE_STAGES).toContain(result.year.key);
|
|
12
|
+
expect(TWELVE_STAGES).toContain(result.month.key);
|
|
13
|
+
expect(TWELVE_STAGES).toContain(result.day.key);
|
|
14
|
+
expect(TWELVE_STAGES).toContain(result.hour.key);
|
|
15
|
+
});
|
|
16
|
+
it("should correctly analyze 戊 day master", () => {
|
|
17
|
+
const result = analyzeTwelveStages("甲子", "丙寅", "戊辰", "庚午");
|
|
18
|
+
expect(result.month.key).toBe("longLife");
|
|
19
|
+
expect(result.hour.key).toBe("imperial");
|
|
20
|
+
});
|
|
5
21
|
it("should return longLife for 甲 at 亥", () => {
|
|
6
|
-
|
|
22
|
+
const result = analyzeTwelveStages("甲亥", "甲亥", "甲亥", "甲亥");
|
|
23
|
+
expect(result.year.key).toBe("longLife");
|
|
7
24
|
});
|
|
8
25
|
it("should return imperial for 甲 at 卯", () => {
|
|
9
|
-
|
|
26
|
+
const result = analyzeTwelveStages("甲卯", "甲卯", "甲卯", "甲卯");
|
|
27
|
+
expect(result.year.key).toBe("imperial");
|
|
10
28
|
});
|
|
11
29
|
it("should return tomb for 甲 at 未", () => {
|
|
12
|
-
|
|
30
|
+
const result = analyzeTwelveStages("甲未", "甲未", "甲未", "甲未");
|
|
31
|
+
expect(result.year.key).toBe("tomb");
|
|
13
32
|
});
|
|
14
33
|
it("should return longLife for 乙 at 午", () => {
|
|
15
|
-
|
|
34
|
+
const result = analyzeTwelveStages("乙午", "乙午", "乙午", "乙午");
|
|
35
|
+
expect(result.year.key).toBe("longLife");
|
|
16
36
|
});
|
|
17
37
|
it("should return imperial for 乙 at 寅", () => {
|
|
18
|
-
|
|
38
|
+
const result = analyzeTwelveStages("乙寅", "乙寅", "乙寅", "乙寅");
|
|
39
|
+
expect(result.year.key).toBe("imperial");
|
|
19
40
|
});
|
|
20
41
|
it("should return longLife for 丙 at 寅", () => {
|
|
21
|
-
|
|
42
|
+
const result = analyzeTwelveStages("丙寅", "丙寅", "丙寅", "丙寅");
|
|
43
|
+
expect(result.year.key).toBe("longLife");
|
|
22
44
|
});
|
|
23
45
|
it("should return imperial for 丙 at 午", () => {
|
|
24
|
-
|
|
46
|
+
const result = analyzeTwelveStages("丙午", "丙午", "丙午", "丙午");
|
|
47
|
+
expect(result.year.key).toBe("imperial");
|
|
25
48
|
});
|
|
26
49
|
it("should return longLife for 庚 at 巳", () => {
|
|
27
|
-
|
|
50
|
+
const result = analyzeTwelveStages("庚巳", "庚巳", "庚巳", "庚巳");
|
|
51
|
+
expect(result.year.key).toBe("longLife");
|
|
28
52
|
});
|
|
29
53
|
it("should return imperial for 庚 at 酉", () => {
|
|
30
|
-
|
|
54
|
+
const result = analyzeTwelveStages("庚酉", "庚酉", "庚酉", "庚酉");
|
|
55
|
+
expect(result.year.key).toBe("imperial");
|
|
31
56
|
});
|
|
32
57
|
it("should return longLife for 壬 at 申", () => {
|
|
33
|
-
|
|
58
|
+
const result = analyzeTwelveStages("壬申", "壬申", "壬申", "壬申");
|
|
59
|
+
expect(result.year.key).toBe("longLife");
|
|
34
60
|
});
|
|
35
61
|
it("should return imperial for 壬 at 子", () => {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
it("should throw error for invalid stem", () => {
|
|
39
|
-
expect(() => getTwelveStage("X", "子")).toThrow("Invalid stem: X");
|
|
40
|
-
});
|
|
41
|
-
it("should throw error for invalid branch", () => {
|
|
42
|
-
expect(() => getTwelveStage("甲", "X")).toThrow("Invalid branch: X");
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
describe("analyzeTwelveStages", () => {
|
|
46
|
-
it("should analyze all four pillars", () => {
|
|
47
|
-
const result = analyzeTwelveStages("甲子", "丙寅", "戊辰", "庚午");
|
|
48
|
-
expect(result.year).toBeDefined();
|
|
49
|
-
expect(result.month).toBeDefined();
|
|
50
|
-
expect(result.day).toBeDefined();
|
|
51
|
-
expect(result.hour).toBeDefined();
|
|
52
|
-
expect(TWELVE_STAGES).toContain(result.year.key);
|
|
53
|
-
expect(TWELVE_STAGES).toContain(result.month.key);
|
|
54
|
-
expect(TWELVE_STAGES).toContain(result.day.key);
|
|
55
|
-
expect(TWELVE_STAGES).toContain(result.hour.key);
|
|
56
|
-
});
|
|
57
|
-
it("should correctly analyze 戊 day master", () => {
|
|
58
|
-
const result = analyzeTwelveStages("甲子", "丙寅", "戊辰", "庚午");
|
|
59
|
-
expect(result.month.key).toBe("longLife");
|
|
60
|
-
expect(result.hour.key).toBe("imperial");
|
|
62
|
+
const result = analyzeTwelveStages("壬子", "壬子", "壬子", "壬子");
|
|
63
|
+
expect(result.year.key).toBe("imperial");
|
|
61
64
|
});
|
|
62
65
|
});
|
|
63
|
-
describe("
|
|
66
|
+
describe("getTwelveStageLabel", () => {
|
|
64
67
|
it("should have info for all twelve stages", () => {
|
|
65
68
|
for (const stage of TWELVE_STAGES) {
|
|
66
|
-
|
|
67
|
-
expect(
|
|
68
|
-
expect(
|
|
69
|
-
expect(
|
|
70
|
-
expect(
|
|
69
|
+
const label = getTwelveStageLabel(stage);
|
|
70
|
+
expect(label.key).toBe(stage);
|
|
71
|
+
expect(label.korean).toBeDefined();
|
|
72
|
+
expect(label.hanja).toBeDefined();
|
|
73
|
+
expect(label.meaning).toBeDefined();
|
|
74
|
+
expect(["strong", "neutral", "weak"]).toContain(label.strength);
|
|
71
75
|
}
|
|
72
76
|
});
|
|
73
77
|
it("should have correct korean names", () => {
|
|
74
|
-
expect(
|
|
75
|
-
expect(
|
|
76
|
-
expect(
|
|
77
|
-
expect(
|
|
78
|
+
expect(getTwelveStageLabel("longLife").korean).toBe("장생");
|
|
79
|
+
expect(getTwelveStageLabel("bathing").korean).toBe("목욕");
|
|
80
|
+
expect(getTwelveStageLabel("imperial").korean).toBe("제왕");
|
|
81
|
+
expect(getTwelveStageLabel("death").korean).toBe("사");
|
|
78
82
|
});
|
|
79
83
|
it("should have correct strength classifications", () => {
|
|
80
|
-
expect(
|
|
81
|
-
expect(
|
|
82
|
-
expect(
|
|
83
|
-
expect(
|
|
84
|
+
expect(getTwelveStageLabel("longLife").strength).toBe("strong");
|
|
85
|
+
expect(getTwelveStageLabel("imperial").strength).toBe("strong");
|
|
86
|
+
expect(getTwelveStageLabel("decline").strength).toBe("weak");
|
|
87
|
+
expect(getTwelveStageLabel("tomb").strength).toBe("neutral");
|
|
84
88
|
});
|
|
85
89
|
});
|
|
86
90
|
});
|
package/dist/core/luck.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"luck.d.ts","sourceRoot":"","sources":["../../src/core/luck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGhD,YAAY,EAAE,MAAM,EAAE,CAAC;AAEvB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,aAAa,EAAE,CAAC,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GACL,eAAe,
|
|
1
|
+
{"version":3,"file":"luck.d.ts","sourceRoot":"","sources":["../../src/core/luck.ts"],"names":[],"mappings":"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"}
|
package/dist/core/luck.js
CHANGED
|
@@ -24,7 +24,8 @@ export function calculateMajorLuck(adapter, birthDateTime, gender, yearPillar, m
|
|
|
24
24
|
const years = Math.floor(totalMonths / 12);
|
|
25
25
|
const months = totalMonths % 12;
|
|
26
26
|
const days = Math.round(((daysToTerm / 3) * 12 - totalMonths) * 30);
|
|
27
|
-
|
|
27
|
+
// 전통적으로 6개월 이상이면 반올림하여 1년 추가
|
|
28
|
+
const startAge = months >= 6 ? years + 1 : years;
|
|
28
29
|
const startAgeDetail = { years, months, days: Math.abs(days) };
|
|
29
30
|
const monthIdx60 = getPillarIndex(monthPillar);
|
|
30
31
|
const pillars = [];
|
package/dist/core/relations.d.ts
CHANGED
|
@@ -15,8 +15,6 @@ export type PunishmentTypeKey = (typeof PUNISHMENT_TYPE_KEYS)[number];
|
|
|
15
15
|
export interface PunishmentTypeLabel extends Label<PunishmentTypeKey> {
|
|
16
16
|
}
|
|
17
17
|
export declare function getPunishmentTypeLabel(key: PunishmentTypeKey): PunishmentTypeLabel;
|
|
18
|
-
/** @deprecated Use TransformationStatusKey instead */
|
|
19
|
-
export type TransformationStatus = "합" | "반합" | "화" | "불화";
|
|
20
18
|
export type StemCombinationResult = {
|
|
21
19
|
stems: [string, string];
|
|
22
20
|
resultElement: Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/core/relations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxD,eAAO,MAAM,kBAAkB,6IASrB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,eAAe,CAAC;CAAG;AAapE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,GAAG,iBAAiB,CAG5E;AAED,eAAO,MAAM,0BAA0B,wEAK7B,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,WAAW,yBAA0B,SAAQ,KAAK,CAAC,uBAAuB,CAAC;CAAG;AAYpF,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,uBAAuB,GAC3B,yBAAyB,CAG3B;AAED,eAAO,MAAM,oBAAoB,kDAAmD,CAAC;AAErF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,iBAAiB,CAAC;CAAG;AASxE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,CAGlF;AAED,
|
|
1
|
+
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/core/relations.ts"],"names":[],"mappings":"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"}
|
package/dist/core/sinsals.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import type { Label, PillarPosition } from "../types";
|
|
2
2
|
export declare const SINSALS: readonly ["peachBlossom", "skyHorse", "floweryCanopy", "ghostGate", "solitaryStar", "widowStar", "heavenlyVirtue", "monthlyVirtue", "skyNoble", "moonNoble", "literaryNoble", "academicHall", "bloodKnife", "sixHarms", "whiteCloth", "heavenlyDoctor"];
|
|
3
3
|
export type SinsalKey = (typeof SINSALS)[number];
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated Use SinsalKey instead
|
|
6
|
-
*/
|
|
7
|
-
export type Sinsal = SinsalKey;
|
|
8
4
|
export type SinsalType = "auspicious" | "inauspicious" | "neutral";
|
|
9
5
|
export interface SinsalLabel extends Label<SinsalKey> {
|
|
10
6
|
meaning: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sinsals.d.ts","sourceRoot":"","sources":["../../src/core/sinsals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD,eAAO,MAAM,OAAO,yPAiBV,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"sinsals.d.ts","sourceRoot":"","sources":["../../src/core/sinsals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD,eAAO,MAAM,OAAO,yPAiBV,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AA+LD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;CACvD;AA6CD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,YAAY,CAqId;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAC9B,SAAS,EACT;IACE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB,CAmFF,CAAC;AAEF,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,CAS1D"}
|
package/dist/core/strength.d.ts
CHANGED
|
@@ -4,10 +4,6 @@ export type StrengthLevelKey = (typeof STRENGTH_LEVEL_KEYS)[number];
|
|
|
4
4
|
export interface StrengthLevelLabel extends Label<StrengthLevelKey> {
|
|
5
5
|
}
|
|
6
6
|
export declare function getStrengthLevelLabel(key: StrengthLevelKey): StrengthLevelLabel;
|
|
7
|
-
/** @deprecated Use StrengthLevelKey instead */
|
|
8
|
-
export type StrengthLevel = "극약" | "태약" | "신약" | "중화신약" | "중화" | "중화신강" | "신강" | "태강" | "극왕";
|
|
9
|
-
/** @deprecated Use STRENGTH_LEVEL_KEYS instead */
|
|
10
|
-
export declare const STRENGTH_LEVELS: StrengthLevel[];
|
|
11
7
|
export interface StrengthFactors {
|
|
12
8
|
deukryeong: number;
|
|
13
9
|
deukji: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strength.d.ts","sourceRoot":"","sources":["../../src/core/strength.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"strength.d.ts","sourceRoot":"","sources":["../../src/core/strength.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AASrC,eAAO,MAAM,mBAAmB,sIAUtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,gBAAgB,CAAC;CAAG;AActE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,kBAAkB,CAG/E;AAgLD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,cAAc,CAsGhB"}
|
package/dist/core/strength.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getStemElement, getStemPolarity,
|
|
1
|
+
import { getStemElement, getStemPolarity, getTenGodKey, } from "./ten-gods";
|
|
2
2
|
export const STRENGTH_LEVEL_KEYS = [
|
|
3
3
|
"extremelyWeak",
|
|
4
4
|
"veryWeak",
|
|
@@ -25,18 +25,6 @@ export function getStrengthLevelLabel(key) {
|
|
|
25
25
|
const data = STRENGTH_LEVEL_DATA[key];
|
|
26
26
|
return { key, ...data };
|
|
27
27
|
}
|
|
28
|
-
/** @deprecated Use STRENGTH_LEVEL_KEYS instead */
|
|
29
|
-
export const STRENGTH_LEVELS = [
|
|
30
|
-
"극약",
|
|
31
|
-
"태약",
|
|
32
|
-
"신약",
|
|
33
|
-
"중화신약",
|
|
34
|
-
"중화",
|
|
35
|
-
"중화신강",
|
|
36
|
-
"신강",
|
|
37
|
-
"태강",
|
|
38
|
-
"극왕",
|
|
39
|
-
];
|
|
40
28
|
const HIDDEN_STEM_WEIGHTS = {
|
|
41
29
|
子: [{ stem: "癸", weight: 1.0, type: "본기" }],
|
|
42
30
|
丑: [
|
|
@@ -174,11 +162,20 @@ function calculateRootStrength(dayMaster, branch) {
|
|
|
174
162
|
function isTransparent(stem, allStems) {
|
|
175
163
|
return allStems.includes(stem);
|
|
176
164
|
}
|
|
165
|
+
const HELPFUL_TEN_GODS = ["companion", "robWealth", "directSeal", "indirectSeal"];
|
|
166
|
+
const WEAKENING_TEN_GODS = [
|
|
167
|
+
"eatingGod",
|
|
168
|
+
"hurtingOfficer",
|
|
169
|
+
"indirectWealth",
|
|
170
|
+
"directWealth",
|
|
171
|
+
"sevenKillings",
|
|
172
|
+
"directOfficer",
|
|
173
|
+
];
|
|
177
174
|
function isHelpfulTenGod(tenGod) {
|
|
178
|
-
return
|
|
175
|
+
return HELPFUL_TEN_GODS.includes(tenGod);
|
|
179
176
|
}
|
|
180
177
|
function isWeakeningTenGod(tenGod) {
|
|
181
|
-
return
|
|
178
|
+
return WEAKENING_TEN_GODS.includes(tenGod);
|
|
182
179
|
}
|
|
183
180
|
export function analyzeStrength(yearPillar, monthPillar, dayPillar, hourPillar) {
|
|
184
181
|
const dayMaster = dayPillar[0];
|
|
@@ -195,7 +192,7 @@ export function analyzeStrength(yearPillar, monthPillar, dayPillar, hourPillar)
|
|
|
195
192
|
let transparentBonus = 0;
|
|
196
193
|
for (const hs of monthHiddenStems) {
|
|
197
194
|
if (isTransparent(hs.stem, allStems)) {
|
|
198
|
-
const tenGod =
|
|
195
|
+
const tenGod = getTenGodKey(dayMaster, hs.stem);
|
|
199
196
|
if (isHelpfulTenGod(tenGod)) {
|
|
200
197
|
transparentBonus += hs.weight * 0.3;
|
|
201
198
|
}
|
|
@@ -209,7 +206,7 @@ export function analyzeStrength(yearPillar, monthPillar, dayPillar, hourPillar)
|
|
|
209
206
|
let deukse = 0;
|
|
210
207
|
const otherStems = [yearPillar[0], monthPillar[0], hourPillar[0]];
|
|
211
208
|
for (const stem of otherStems) {
|
|
212
|
-
const tenGod =
|
|
209
|
+
const tenGod = getTenGodKey(dayMaster, stem);
|
|
213
210
|
if (isHelpfulTenGod(tenGod)) {
|
|
214
211
|
deukse += 1;
|
|
215
212
|
}
|
|
@@ -217,7 +214,7 @@ export function analyzeStrength(yearPillar, monthPillar, dayPillar, hourPillar)
|
|
|
217
214
|
let helpCount = 0;
|
|
218
215
|
let weakenCount = 0;
|
|
219
216
|
for (const stem of otherStems) {
|
|
220
|
-
const tenGod =
|
|
217
|
+
const tenGod = getTenGodKey(dayMaster, stem);
|
|
221
218
|
if (isHelpfulTenGod(tenGod))
|
|
222
219
|
helpCount++;
|
|
223
220
|
if (isWeakeningTenGod(tenGod))
|
|
@@ -227,7 +224,7 @@ export function analyzeStrength(yearPillar, monthPillar, dayPillar, hourPillar)
|
|
|
227
224
|
const hiddenStems = HIDDEN_STEM_WEIGHTS[branch] || [];
|
|
228
225
|
const mainStem = hiddenStems[0]?.stem;
|
|
229
226
|
if (mainStem) {
|
|
230
|
-
const tenGod =
|
|
227
|
+
const tenGod = getTenGodKey(dayMaster, mainStem);
|
|
231
228
|
if (isHelpfulTenGod(tenGod))
|
|
232
229
|
helpCount++;
|
|
233
230
|
if (isWeakeningTenGod(tenGod))
|
package/dist/core/ten-gods.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare function getStemPolarity(stem: string): Polarity;
|
|
|
16
16
|
export declare function getBranchElement(branch: string): Element;
|
|
17
17
|
export declare function getBranchPolarity(branch: string): Polarity;
|
|
18
18
|
export declare function getHiddenStems(branch: string): string[];
|
|
19
|
+
export declare function getTenGodKey(dayMaster: string, targetStem: string): TenGodKey;
|
|
19
20
|
export declare function getTenGodForBranch(dayMaster: string, branch: string): TenGodLabel;
|
|
20
21
|
export declare function getTenGodsForBranch(dayMaster: string, branch: string): {
|
|
21
22
|
stem: string;
|
|
@@ -86,14 +87,4 @@ export interface FourPillarsTenGods {
|
|
|
86
87
|
export declare function analyzeTenGods(yearPillar: string, monthPillar: string, dayPillar: string, hourPillar: string): FourPillarsTenGods;
|
|
87
88
|
export declare function countTenGods(analysis: FourPillarsTenGods): Record<TenGodKey, number>;
|
|
88
89
|
export declare function countElements(analysis: FourPillarsTenGods): Record<Element, number>;
|
|
89
|
-
/** @deprecated Use TenGodKey instead */
|
|
90
|
-
export type TenGod = "비견" | "겁재" | "식신" | "상관" | "편재" | "정재" | "편관" | "정관" | "편인" | "정인";
|
|
91
|
-
/** @deprecated Use TEN_GOD_KEYS instead */
|
|
92
|
-
export declare const TEN_GODS: TenGod[];
|
|
93
|
-
/** @deprecated Use TEN_GOD_DATA instead */
|
|
94
|
-
export declare const TEN_GOD_HANJA: Record<TenGod, string>;
|
|
95
|
-
/** @deprecated Use TEN_GOD_DATA instead */
|
|
96
|
-
export declare const TEN_GOD_ENGLISH: Record<TenGod, string>;
|
|
97
|
-
/** @deprecated Use getTenGodLabel(getTenGodKey(...)) instead */
|
|
98
|
-
export declare function getTenGod(dayMaster: string, targetStem: string): TenGod;
|
|
99
90
|
//# sourceMappingURL=ten-gods.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ten-gods.d.ts","sourceRoot":"","sources":["../../src/core/ten-gods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,OAAO,CAAC;CAAG;AAUvD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAG1D;AAED,eAAO,MAAM,YAAY,sKAWf,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;CAAG;AAexD,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,CAG1D;AA0DD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAajD,CAAC;AAkBF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAItD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAIxD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAI1D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAIvD;
|
|
1
|
+
{"version":3,"file":"ten-gods.d.ts","sourceRoot":"","sources":["../../src/core/ten-gods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,OAAO,CAAC;CAAG;AAUvD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAG1D;AAED,eAAO,MAAM,YAAY,sKAWf,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;CAAG;AAexD,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,CAG1D;AA0DD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAajD,CAAC;AAkBF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIpD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAItD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAIxD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAI1D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAIvD;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CA6B7E;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAGjF;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CAAE,EAAE,CASnE;AAED,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,WAAW,CAAC;CAAG;AAQ7D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE;QACJ,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,WAAW,CAAA;SAAE,CAAC;QAC5C,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,WAAW,CAAC;YACpB,WAAW,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,WAAW,CAAA;aAAE,EAAE,CAAC;SACtD,CAAC;KACH,CAAC;IACF,KAAK,EAAE;QACL,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,WAAW,CAAA;SAAE,CAAC;QAC5C,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,WAAW,CAAC;YACpB,WAAW,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,WAAW,CAAA;aAAE,EAAE,CAAC;SACtD,CAAC;KACH,CAAC;IACF,GAAG,EAAE;QACH,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,cAAc,CAAA;SAAE,CAAC;QAC/C,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,WAAW,CAAC;YACpB,WAAW,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,WAAW,CAAA;aAAE,EAAE,CAAC;SACtD,CAAC;KACH,CAAC;IACF,IAAI,EAAE;QACJ,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,WAAW,CAAA;SAAE,CAAC;QAC5C,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,WAAW,CAAC;YACpB,WAAW,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,WAAW,CAAA;aAAE,EAAE,CAAC;SACtD,CAAC;KACH,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,kBAAkB,CA+BpB;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CA8BpF;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CA8BnF"}
|
package/dist/core/ten-gods.js
CHANGED
|
@@ -149,7 +149,7 @@ export function getHiddenStems(branch) {
|
|
|
149
149
|
throw new Error(`Invalid branch: ${branch}`);
|
|
150
150
|
return [...hidden];
|
|
151
151
|
}
|
|
152
|
-
function getTenGodKey(dayMaster, targetStem) {
|
|
152
|
+
export function getTenGodKey(dayMaster, targetStem) {
|
|
153
153
|
const dmElement = getStemElement(dayMaster);
|
|
154
154
|
const dmPolarity = getStemPolarity(dayMaster);
|
|
155
155
|
const targetElement = getStemElement(targetStem);
|
|
@@ -275,47 +275,3 @@ export function countElements(analysis) {
|
|
|
275
275
|
}
|
|
276
276
|
return counts;
|
|
277
277
|
}
|
|
278
|
-
/** @deprecated Use TEN_GOD_KEYS instead */
|
|
279
|
-
export const TEN_GODS = [
|
|
280
|
-
"비견",
|
|
281
|
-
"겁재",
|
|
282
|
-
"식신",
|
|
283
|
-
"상관",
|
|
284
|
-
"편재",
|
|
285
|
-
"정재",
|
|
286
|
-
"편관",
|
|
287
|
-
"정관",
|
|
288
|
-
"편인",
|
|
289
|
-
"정인",
|
|
290
|
-
];
|
|
291
|
-
/** @deprecated Use TEN_GOD_DATA instead */
|
|
292
|
-
export const TEN_GOD_HANJA = {
|
|
293
|
-
비견: "比肩",
|
|
294
|
-
겁재: "劫財",
|
|
295
|
-
식신: "食神",
|
|
296
|
-
상관: "傷官",
|
|
297
|
-
편재: "偏財",
|
|
298
|
-
정재: "正財",
|
|
299
|
-
편관: "偏官",
|
|
300
|
-
정관: "正官",
|
|
301
|
-
편인: "偏印",
|
|
302
|
-
정인: "正印",
|
|
303
|
-
};
|
|
304
|
-
/** @deprecated Use TEN_GOD_DATA instead */
|
|
305
|
-
export const TEN_GOD_ENGLISH = {
|
|
306
|
-
비견: "Companion",
|
|
307
|
-
겁재: "Rob Wealth",
|
|
308
|
-
식신: "Eating God",
|
|
309
|
-
상관: "Hurting Officer",
|
|
310
|
-
편재: "Indirect Wealth",
|
|
311
|
-
정재: "Direct Wealth",
|
|
312
|
-
편관: "Seven Killings",
|
|
313
|
-
정관: "Direct Officer",
|
|
314
|
-
편인: "Indirect Seal",
|
|
315
|
-
정인: "Direct Seal",
|
|
316
|
-
};
|
|
317
|
-
/** @deprecated Use getTenGodLabel(getTenGodKey(...)) instead */
|
|
318
|
-
export function getTenGod(dayMaster, targetStem) {
|
|
319
|
-
const key = getTenGodKey(dayMaster, targetStem);
|
|
320
|
-
return TEN_GOD_DATA[key].korean;
|
|
321
|
-
}
|
|
@@ -14,15 +14,4 @@ export interface TwelveStagesResult {
|
|
|
14
14
|
hour: TwelveStageLabel;
|
|
15
15
|
}
|
|
16
16
|
export declare function analyzeTwelveStages(yearPillar: string, monthPillar: string, dayPillar: string, hourPillar: string): TwelveStagesResult;
|
|
17
|
-
/** @deprecated Use getTwelveStageLabel instead */
|
|
18
|
-
export declare const STAGE_INFO: Record<"longLife" | "bathing" | "crownBelt" | "establishment" | "imperial" | "decline" | "illness" | "death" | "tomb" | "extinction" | "conception" | "nurturing", {
|
|
19
|
-
korean: string;
|
|
20
|
-
hanja: string;
|
|
21
|
-
meaning: string;
|
|
22
|
-
strength: TwelveStageStrength;
|
|
23
|
-
}>;
|
|
24
|
-
/** @deprecated Use TwelveStageKey instead */
|
|
25
|
-
export type TwelveStage = TwelveStageKey;
|
|
26
|
-
/** @deprecated Use getTwelveStageKey and getTwelveStageLabel instead */
|
|
27
|
-
export declare function getTwelveStage(stem: string, branch: string): TwelveStageKey;
|
|
28
17
|
//# sourceMappingURL=twelve-stages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"twelve-stages.d.ts","sourceRoot":"","sources":["../../src/core/twelve-stages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,eAAO,MAAM,aAAa,4JAahB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAyCD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,gBAAgB,CAGzE;AA4BD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,gBAAgB,CAAC;IACxB,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,kBAAkB,CASpB
|
|
1
|
+
{"version":3,"file":"twelve-stages.d.ts","sourceRoot":"","sources":["../../src/core/twelve-stages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,eAAO,MAAM,aAAa,4JAahB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAyCD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,gBAAgB,CAGzE;AA4BD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,gBAAgB,CAAC;IACxB,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,kBAAkB,CASpB"}
|
|
@@ -79,9 +79,3 @@ export function analyzeTwelveStages(yearPillar, monthPillar, dayPillar, hourPill
|
|
|
79
79
|
hour: getTwelveStageLabel(getTwelveStageKey(dayMaster, hourPillar[1])),
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
|
-
/** @deprecated Use getTwelveStageLabel instead */
|
|
83
|
-
export const STAGE_INFO = STAGE_DATA;
|
|
84
|
-
/** @deprecated Use getTwelveStageKey and getTwelveStageLabel instead */
|
|
85
|
-
export function getTwelveStage(stem, branch) {
|
|
86
|
-
return getTwelveStageKey(stem, branch);
|
|
87
|
-
}
|
package/dist/core/yongshen.d.ts
CHANGED
|
@@ -13,9 +13,12 @@ export interface YongShenResult {
|
|
|
13
13
|
isKiShen: boolean;
|
|
14
14
|
}>;
|
|
15
15
|
johuAdjustment: ElementLabel | null;
|
|
16
|
+
/** 종격 성립 시 억부 기준 용신도 함께 제공 */
|
|
17
|
+
alternativeBalance?: {
|
|
18
|
+
primary: ElementLabel;
|
|
19
|
+
secondary: ElementLabel | null;
|
|
20
|
+
};
|
|
16
21
|
}
|
|
17
|
-
/** @deprecated Use YongShenMethodKey instead */
|
|
18
|
-
export type YongShenMethod = "격국" | "억부" | "조후" | "통관" | "병약";
|
|
19
22
|
import type { Label } from "../types";
|
|
20
23
|
export declare function analyzeYongShen(yearPillar: string, monthPillar: string, dayPillar: string, hourPillar: string): YongShenResult;
|
|
21
24
|
export declare function getElementRecommendations(yongShen: YongShenResult): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yongshen.d.ts","sourceRoot":"","sources":["../../src/core/yongshen.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,YAAY,EAIlB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,iBAAiB,CAAC;CAAG;AAUxE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,CAGlF;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzE,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"yongshen.d.ts","sourceRoot":"","sources":["../../src/core/yongshen.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,YAAY,EAIlB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,iBAAiB,CAAC;CAAG;AAUxE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,mBAAmB,CAGlF;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzE,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,8BAA8B;IAC9B,kBAAkB,CAAC,EAAE;QACnB,OAAO,EAAE,YAAY,CAAC;QACtB,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;KAChC,CAAC;CACH;AAED,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AA0JrC,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,cAAc,CA2FhB;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,cAAc,GAAG;IACnE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CA0BA"}
|
package/dist/core/yongshen.js
CHANGED
|
@@ -94,7 +94,7 @@ function isStrongLevel(level) {
|
|
|
94
94
|
}
|
|
95
95
|
function getYokbuYongShen(dayMasterElement, level) {
|
|
96
96
|
if (isStrongLevel(level)) {
|
|
97
|
-
const primary =
|
|
97
|
+
const primary = CONTROLLED_BY[dayMasterElement];
|
|
98
98
|
const secondary = GENERATES[dayMasterElement];
|
|
99
99
|
return { primary, secondary };
|
|
100
100
|
}
|
|
@@ -150,11 +150,14 @@ export function analyzeYongShen(yearPillar, monthPillar, dayPillar, hourPillar)
|
|
|
150
150
|
let methodKey;
|
|
151
151
|
let reasoning;
|
|
152
152
|
let johuAdjustmentKey = null;
|
|
153
|
+
let alternativeBalance;
|
|
153
154
|
if (specialFormation.isSpecial && specialFormation.followElement) {
|
|
154
155
|
primaryKey = specialFormation.followElement;
|
|
155
156
|
secondaryKey = GENERATES[specialFormation.followElement];
|
|
156
157
|
methodKey = "formation";
|
|
157
158
|
reasoning = `종격 성립. ${getElementLabel(specialFormation.followElement).korean} 세력을 따름`;
|
|
159
|
+
const yokbu = getYokbuYongShen(dayMasterElement, strength.level);
|
|
160
|
+
alternativeBalance = { primary: yokbu.primary, secondary: yokbu.secondary };
|
|
158
161
|
}
|
|
159
162
|
else {
|
|
160
163
|
const yokbu = getYokbuYongShen(dayMasterElement, strength.level);
|
|
@@ -206,6 +209,14 @@ export function analyzeYongShen(yearPillar, monthPillar, dayPillar, hourPillar)
|
|
|
206
209
|
reasoning,
|
|
207
210
|
allElements,
|
|
208
211
|
johuAdjustment: johuAdjustmentKey ? getElementLabel(johuAdjustmentKey) : null,
|
|
212
|
+
alternativeBalance: alternativeBalance
|
|
213
|
+
? {
|
|
214
|
+
primary: getElementLabel(alternativeBalance.primary),
|
|
215
|
+
secondary: alternativeBalance.secondary
|
|
216
|
+
? getElementLabel(alternativeBalance.secondary)
|
|
217
|
+
: null,
|
|
218
|
+
}
|
|
219
|
+
: undefined,
|
|
209
220
|
};
|
|
210
221
|
}
|
|
211
222
|
export function getElementRecommendations(yongShen) {
|
package/dist/index.d.ts
CHANGED
|
@@ -3,12 +3,12 @@ export { applyMeanSolarTime, BRANCHES, dayPillarFromDate, effectiveDayDate, getF
|
|
|
3
3
|
export { calculateDailyLuck, calculateMajorLuck, calculateMonthlyLuck, calculateYearlyLuck, type DailyLuckResult, type Gender, getCurrentMajorLuck, getDayPillar, getMonthPillar, getYearPillar, type LuckPillar, type MajorLuckResult, type MonthlyLuckResult, type StartAgeDetail, type YearlyLuckResult, } from "./core/luck";
|
|
4
4
|
export { getLunarDate, getSolarDate, type LunarDate } from "./core/lunar";
|
|
5
5
|
export { analyzeRelations, BRANCH_CLASHES, BRANCH_DESTRUCTIONS, BRANCH_DIRECTIONAL_COMBINATIONS, BRANCH_HARMS, BRANCH_PUNISHMENTS, BRANCH_SIX_COMBINATIONS, BRANCH_TRIPLE_COMBINATIONS, type BranchClash, type BranchDestruction, type BranchDirectionalCombination, type BranchHarm, type BranchPunishment, type BranchSixCombination, type BranchTripleCombination, findBranchClash, findBranchSixCombination, findStemCombination, type Relation, type RelationsResult, STEM_COMBINATIONS, type StemCombination, } from "./core/relations";
|
|
6
|
-
export { analyzeSinsals, getSinsalLabel, SINSAL_INFO, SINSALS, type
|
|
6
|
+
export { analyzeSinsals, getSinsalLabel, SINSAL_INFO, SINSALS, type SinsalKey, type SinsalLabel, type SinsalMatch, type SinsalResult, type SinsalType, } from "./core/sinsals";
|
|
7
7
|
export { analyzeSolarTerms, getSolarTermLabel, getSolarTermsForYear, SOLAR_TERM_KEYS, SOLAR_TERMS, type SolarTerm, type SolarTermDateInfo, type SolarTermHanja, type SolarTermInfo, type SolarTermKey, type SolarTermLabel, type SolarTermName, } from "./core/solar-terms";
|
|
8
|
-
export { analyzeStrength, getStrengthLevelLabel, STRENGTH_LEVEL_KEYS,
|
|
9
|
-
export { analyzeTenGods, countElements, countTenGods, type DayMasterLabel, ELEMENTS, type Element, type ElementLabel, type FourPillarsTenGods, getBranchElement, getBranchPolarity, getElementLabel, getHiddenStems, getStemElement, getStemPolarity,
|
|
10
|
-
export { analyzeTwelveStages,
|
|
11
|
-
export { analyzeYongShen, getElementRecommendations, getYongShenMethodLabel, type
|
|
8
|
+
export { analyzeStrength, getStrengthLevelLabel, STRENGTH_LEVEL_KEYS, type StrengthFactors, type StrengthLevelKey, type StrengthLevelLabel, type StrengthResult, } from "./core/strength";
|
|
9
|
+
export { analyzeTenGods, countElements, countTenGods, type DayMasterLabel, ELEMENTS, type Element, type ElementLabel, type FourPillarsTenGods, getBranchElement, getBranchPolarity, getElementLabel, getHiddenStems, getStemElement, getStemPolarity, getTenGodForBranch, getTenGodKey, getTenGodLabel, getTenGodsForBranch, HIDDEN_STEMS, type Polarity, TEN_GOD_KEYS, type TenGodKey, type TenGodLabel, } from "./core/ten-gods";
|
|
10
|
+
export { analyzeTwelveStages, getTwelveStageLabel, TWELVE_STAGES, type TwelveStageKey, type TwelveStageLabel, type TwelveStagesResult, } from "./core/twelve-stages";
|
|
11
|
+
export { analyzeYongShen, getElementRecommendations, getYongShenMethodLabel, type YongShenMethodKey, type YongShenMethodLabel, type YongShenResult, } from "./core/yongshen";
|
|
12
12
|
export type { Branch, Label, Pillar, PillarPosition, Stem } from "./types";
|
|
13
13
|
import type { DateAdapter } from "./adapters/date-adapter";
|
|
14
14
|
import { type presetA } from "./core/four-pillars";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACL,kBAAkB,EAClB,QAAQ,EACR,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,WAAW,EACX,OAAO,EACP,OAAO,EACP,eAAe,EACf,KAAK,EACL,kBAAkB,EAClB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,+BAA+B,EAC/B,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,iBAAiB,EACjB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EACX,OAAO,EACP,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,9 +4,9 @@ export { getLunarDate, getSolarDate } from "./core/lunar";
|
|
|
4
4
|
export { analyzeRelations, BRANCH_CLASHES, BRANCH_DESTRUCTIONS, BRANCH_DIRECTIONAL_COMBINATIONS, BRANCH_HARMS, BRANCH_PUNISHMENTS, BRANCH_SIX_COMBINATIONS, BRANCH_TRIPLE_COMBINATIONS, findBranchClash, findBranchSixCombination, findStemCombination, STEM_COMBINATIONS, } from "./core/relations";
|
|
5
5
|
export { analyzeSinsals, getSinsalLabel, SINSAL_INFO, SINSALS, } from "./core/sinsals";
|
|
6
6
|
export { analyzeSolarTerms, getSolarTermLabel, getSolarTermsForYear, SOLAR_TERM_KEYS, SOLAR_TERMS, } from "./core/solar-terms";
|
|
7
|
-
export { analyzeStrength, getStrengthLevelLabel, STRENGTH_LEVEL_KEYS,
|
|
8
|
-
export { analyzeTenGods, countElements, countTenGods, ELEMENTS, getBranchElement, getBranchPolarity, getElementLabel, getHiddenStems, getStemElement, getStemPolarity,
|
|
9
|
-
export { analyzeTwelveStages,
|
|
7
|
+
export { analyzeStrength, getStrengthLevelLabel, STRENGTH_LEVEL_KEYS, } from "./core/strength";
|
|
8
|
+
export { analyzeTenGods, countElements, countTenGods, ELEMENTS, getBranchElement, getBranchPolarity, getElementLabel, getHiddenStems, getStemElement, getStemPolarity, getTenGodForBranch, getTenGodKey, getTenGodLabel, getTenGodsForBranch, HIDDEN_STEMS, TEN_GOD_KEYS, } from "./core/ten-gods";
|
|
9
|
+
export { analyzeTwelveStages, getTwelveStageLabel, TWELVE_STAGES, } from "./core/twelve-stages";
|
|
10
10
|
export { analyzeYongShen, getElementRecommendations, getYongShenMethodLabel, } from "./core/yongshen";
|
|
11
11
|
import { getFourPillars } from "./core/four-pillars";
|
|
12
12
|
import { calculateMajorLuck, calculateYearlyLuck, } from "./core/luck";
|