@gracefullight/saju 0.4.1 → 0.5.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.
Files changed (37) hide show
  1. package/dist/__tests__/relations.test.js +6 -6
  2. package/dist/__tests__/saju.test.js +3 -3
  3. package/dist/__tests__/sinsals.test.js +5 -5
  4. package/dist/__tests__/solar-terms.test.js +26 -16
  5. package/dist/__tests__/strength.test.js +2 -2
  6. package/dist/__tests__/ten-gods.test.js +6 -6
  7. package/dist/__tests__/twelve-stages.test.js +6 -6
  8. package/dist/__tests__/yongshen.test.js +3 -3
  9. package/dist/core/relations.d.ts +36 -19
  10. package/dist/core/relations.d.ts.map +1 -1
  11. package/dist/core/relations.js +105 -33
  12. package/dist/core/sinsals.d.ts +16 -6
  13. package/dist/core/sinsals.d.ts.map +1 -1
  14. package/dist/core/sinsals.js +19 -8
  15. package/dist/core/solar-terms.d.ts +19 -105
  16. package/dist/core/solar-terms.d.ts.map +1 -1
  17. package/dist/core/solar-terms.js +56 -29
  18. package/dist/core/strength.d.ts +9 -1
  19. package/dist/core/strength.d.ts.map +1 -1
  20. package/dist/core/strength.js +38 -11
  21. package/dist/core/ten-gods.d.ts +36 -64
  22. package/dist/core/ten-gods.d.ts.map +1 -1
  23. package/dist/core/ten-gods.js +109 -119
  24. package/dist/core/twelve-stages.d.ts +19 -8
  25. package/dist/core/twelve-stages.d.ts.map +1 -1
  26. package/dist/core/twelve-stages.js +34 -24
  27. package/dist/core/yongshen.d.ts +12 -6
  28. package/dist/core/yongshen.d.ts.map +1 -1
  29. package/dist/core/yongshen.js +55 -37
  30. package/dist/index.d.ts +7 -7
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +6 -6
  33. package/dist/types/common.d.ts +8 -0
  34. package/dist/types/common.d.ts.map +1 -1
  35. package/dist/types/index.d.ts +1 -1
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/package.json +1 -1
@@ -1,17 +1,28 @@
1
+ import type { Label } from "../types/common";
1
2
  export declare const TWELVE_STAGES: readonly ["longLife", "bathing", "crownBelt", "establishment", "imperial", "decline", "illness", "death", "tomb", "extinction", "conception", "nurturing"];
2
- export type TwelveStage = (typeof TWELVE_STAGES)[number];
3
- export declare function getTwelveStage(stem: string, branch: string): TwelveStage;
3
+ export type TwelveStageKey = (typeof TWELVE_STAGES)[number];
4
+ export type TwelveStageStrength = "strong" | "neutral" | "weak";
5
+ export interface TwelveStageLabel extends Label<TwelveStageKey> {
6
+ meaning: string;
7
+ strength: TwelveStageStrength;
8
+ }
9
+ export declare function getTwelveStageLabel(key: TwelveStageKey): TwelveStageLabel;
4
10
  export interface TwelveStagesResult {
5
- year: TwelveStage;
6
- month: TwelveStage;
7
- day: TwelveStage;
8
- hour: TwelveStage;
11
+ year: TwelveStageLabel;
12
+ month: TwelveStageLabel;
13
+ day: TwelveStageLabel;
14
+ hour: TwelveStageLabel;
9
15
  }
10
16
  export declare function analyzeTwelveStages(yearPillar: string, monthPillar: string, dayPillar: string, hourPillar: string): TwelveStagesResult;
11
- export declare const STAGE_INFO: Record<TwelveStage, {
17
+ /** @deprecated Use getTwelveStageLabel instead */
18
+ export declare const STAGE_INFO: Record<"longLife" | "bathing" | "crownBelt" | "establishment" | "imperial" | "decline" | "illness" | "death" | "tomb" | "extinction" | "conception" | "nurturing", {
12
19
  korean: string;
13
20
  hanja: string;
14
21
  meaning: string;
15
- strength: "strong" | "neutral" | "weak";
22
+ strength: TwelveStageStrength;
16
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;
17
28
  //# 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":"AAEA,eAAO,MAAM,aAAa,4JAahB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAkBzD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAwBxE;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,WAAW,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,kBAAkB,CASpB;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAC7B,WAAW,EACX;IACE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;CACzC,CAmBF,CAAC"}
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;AAED,kDAAkD;AAClD,eAAO,MAAM,UAAU;YA5EX,MAAM;WAAS,MAAM;aAAW,MAAM;cAAY,mBAAmB;EA4E7C,CAAC;AAErC,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,cAAc,CAAC;AAEzC,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAE3E"}
@@ -27,7 +27,30 @@ const YIN_STEM_BIRTH_BRANCH = {
27
27
  辛: "子",
28
28
  癸: "卯",
29
29
  };
30
- export function getTwelveStage(stem, branch) {
30
+ const STAGE_DATA = {
31
+ longLife: {
32
+ korean: "장생",
33
+ hanja: "長生",
34
+ meaning: "새로운 시작, 성장의 기운",
35
+ strength: "strong",
36
+ },
37
+ bathing: { korean: "목욕", hanja: "沐浴", meaning: "불안정, 변화, 도화", strength: "neutral" },
38
+ crownBelt: { korean: "관대", hanja: "冠帶", meaning: "성장, 준비, 학업", strength: "strong" },
39
+ establishment: { korean: "건록", hanja: "建祿", meaning: "안정, 직업, 녹봉", strength: "strong" },
40
+ imperial: { korean: "제왕", hanja: "帝旺", meaning: "최고 전성기, 권력", strength: "strong" },
41
+ decline: { korean: "쇠", hanja: "衰", meaning: "기운 약화, 후퇴", strength: "weak" },
42
+ illness: { korean: "병", hanja: "病", meaning: "질병, 곤란", strength: "weak" },
43
+ death: { korean: "사", hanja: "死", meaning: "끝, 전환점", strength: "weak" },
44
+ tomb: { korean: "묘", hanja: "墓", meaning: "저장, 숨김, 보관", strength: "neutral" },
45
+ extinction: { korean: "절", hanja: "絶", meaning: "단절, 새로운 국면", strength: "weak" },
46
+ conception: { korean: "태", hanja: "胎", meaning: "잉태, 계획, 구상", strength: "neutral" },
47
+ nurturing: { korean: "양", hanja: "養", meaning: "양육, 준비, 축적", strength: "neutral" },
48
+ };
49
+ export function getTwelveStageLabel(key) {
50
+ const data = STAGE_DATA[key];
51
+ return { key, ...data };
52
+ }
53
+ function getTwelveStageKey(stem, branch) {
31
54
  const isYang = isYangStem(stem);
32
55
  const birthBranch = isYang ? YANG_STEM_BIRTH_BRANCH[stem] : YIN_STEM_BIRTH_BRANCH[stem];
33
56
  if (!birthBranch) {
@@ -50,28 +73,15 @@ export function getTwelveStage(stem, branch) {
50
73
  export function analyzeTwelveStages(yearPillar, monthPillar, dayPillar, hourPillar) {
51
74
  const dayMaster = dayPillar[0];
52
75
  return {
53
- year: getTwelveStage(dayMaster, yearPillar[1]),
54
- month: getTwelveStage(dayMaster, monthPillar[1]),
55
- day: getTwelveStage(dayMaster, dayPillar[1]),
56
- hour: getTwelveStage(dayMaster, hourPillar[1]),
76
+ year: getTwelveStageLabel(getTwelveStageKey(dayMaster, yearPillar[1])),
77
+ month: getTwelveStageLabel(getTwelveStageKey(dayMaster, monthPillar[1])),
78
+ day: getTwelveStageLabel(getTwelveStageKey(dayMaster, dayPillar[1])),
79
+ hour: getTwelveStageLabel(getTwelveStageKey(dayMaster, hourPillar[1])),
57
80
  };
58
81
  }
59
- export const STAGE_INFO = {
60
- longLife: {
61
- korean: "장생",
62
- hanja: "長生",
63
- meaning: "새로운 시작, 성장의 기운",
64
- strength: "strong",
65
- },
66
- bathing: { korean: "목욕", hanja: "沐浴", meaning: "불안정, 변화, 도화", strength: "neutral" },
67
- crownBelt: { korean: "관대", hanja: "冠帶", meaning: "성장, 준비, 학업", strength: "strong" },
68
- establishment: { korean: "건록", hanja: "建祿", meaning: "안정, 직업, 녹봉", strength: "strong" },
69
- imperial: { korean: "제왕", hanja: "帝旺", meaning: "최고 전성기, 권력", strength: "strong" },
70
- decline: { korean: "쇠", hanja: "衰", meaning: "기운 약화, 후퇴", strength: "weak" },
71
- illness: { korean: "병", hanja: "病", meaning: "질병, 곤란", strength: "weak" },
72
- death: { korean: "사", hanja: "死", meaning: "끝, 전환점", strength: "weak" },
73
- tomb: { korean: "묘", hanja: "墓", meaning: "저장, 숨김, 보관", strength: "neutral" },
74
- extinction: { korean: "절", hanja: "絶", meaning: "단절, 새로운 국면", strength: "weak" },
75
- conception: { korean: "태", hanja: "胎", meaning: "잉태, 계획, 구상", strength: "neutral" },
76
- nurturing: { korean: "양", hanja: "養", meaning: "양육, 준비, 축적", strength: "neutral" },
77
- };
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
+ }
@@ -1,16 +1,22 @@
1
- import { type Element } from "./ten-gods";
2
- export type YongShenMethod = "격국" | "억부" | "조후" | "통관" | "병약";
1
+ import { type Element, type ElementLabel } from "./ten-gods";
2
+ export type YongShenMethodKey = "formation" | "balance" | "climate" | "bridge" | "disease";
3
+ export interface YongShenMethodLabel extends Label<YongShenMethodKey> {
4
+ }
5
+ export declare function getYongShenMethodLabel(key: YongShenMethodKey): YongShenMethodLabel;
3
6
  export interface YongShenResult {
4
- primary: Element;
5
- secondary: Element | null;
6
- method: YongShenMethod;
7
+ primary: ElementLabel;
8
+ secondary: ElementLabel | null;
9
+ method: YongShenMethodLabel;
7
10
  reasoning: string;
8
11
  allElements: Record<Element, {
9
12
  isYongShen: boolean;
10
13
  isKiShen: boolean;
11
14
  }>;
12
- johuAdjustment: Element | null;
15
+ johuAdjustment: ElementLabel | null;
13
16
  }
17
+ /** @deprecated Use YongShenMethodKey instead */
18
+ export type YongShenMethod = "격국" | "억부" | "조후" | "통관" | "병약";
19
+ import type { Label } from "../types";
14
20
  export declare function analyzeYongShen(yearPillar: string, monthPillar: string, dayPillar: string, hourPillar: string): YongShenResult;
15
21
  export declare function getElementRecommendations(yongShen: YongShenResult): {
16
22
  colors: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"yongshen.d.ts","sourceRoot":"","sources":["../../src/core/yongshen.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,OAAO,EAAoC,MAAM,YAAY,CAAC;AAEtF,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,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,OAAO,GAAG,IAAI,CAAC;CAChC;AAmJD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,cAAc,CA+EhB;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"}
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;CACrC;AAED,gDAAgD;AAChD,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9D,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,CA+EhB;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"}
@@ -1,5 +1,16 @@
1
1
  import { analyzeStrength } from "./strength";
2
- import { ELEMENTS, getBranchElement, getStemElement } from "./ten-gods";
2
+ import { ELEMENTS, getBranchElement, getElementLabel, getStemElement, } from "./ten-gods";
3
+ const YONGSHEN_METHOD_DATA = {
4
+ formation: { korean: "격국", hanja: "格局" },
5
+ balance: { korean: "억부", hanja: "抑扶" },
6
+ climate: { korean: "조후", hanja: "調候" },
7
+ bridge: { korean: "통관", hanja: "通關" },
8
+ disease: { korean: "병약", hanja: "病藥" },
9
+ };
10
+ export function getYongShenMethodLabel(key) {
11
+ const data = YONGSHEN_METHOD_DATA[key];
12
+ return { key, ...data };
13
+ }
3
14
  const SEASON_MONTH_BRANCHES = {
4
15
  spring: ["寅", "卯", "辰"],
5
16
  summer: ["巳", "午", "未"],
@@ -72,9 +83,17 @@ const CONTROLLED_BY = {
72
83
  metal: "fire",
73
84
  wood: "metal",
74
85
  };
75
- function getYokbuYongShen(dayMasterElement, strengthLevel) {
76
- const isStrong = ["신강", "태강", "극왕", "중화신강"].includes(strengthLevel);
77
- if (isStrong) {
86
+ const STRONG_LEVEL_KEYS = [
87
+ "strong",
88
+ "veryStrong",
89
+ "extremelyStrong",
90
+ "neutralStrong",
91
+ ];
92
+ function isStrongLevel(level) {
93
+ return STRONG_LEVEL_KEYS.includes(level.key);
94
+ }
95
+ function getYokbuYongShen(dayMasterElement, level) {
96
+ if (isStrongLevel(level)) {
78
97
  const primary = CONTROLS[dayMasterElement];
79
98
  const secondary = GENERATES[dayMasterElement];
80
99
  return { primary, secondary };
@@ -83,9 +102,8 @@ function getYokbuYongShen(dayMasterElement, strengthLevel) {
83
102
  const secondary = dayMasterElement;
84
103
  return { primary, secondary };
85
104
  }
86
- function hasSpecialFormation(dayMasterElement, strengthLevel, allElements) {
87
- const _isExtreme = ["극약", "극왕"].includes(strengthLevel);
88
- if (strengthLevel === "극약") {
105
+ function hasSpecialFormation(dayMasterElement, level, allElements) {
106
+ if (level.key === "extremelyWeak") {
89
107
  const elementCounts = {
90
108
  wood: 0,
91
109
  fire: 0,
@@ -127,32 +145,32 @@ export function analyzeYongShen(yearPillar, monthPillar, dayPillar, hourPillar)
127
145
  const allBranches = [yearPillar[1], monthPillar[1], dayPillar[1], hourPillar[1]];
128
146
  const allBranchElements = allBranches.map((b) => getBranchElement(b));
129
147
  const specialFormation = hasSpecialFormation(dayMasterElement, strength.level, allBranchElements);
130
- let primary;
131
- let secondary = null;
132
- let method;
148
+ let primaryKey;
149
+ let secondaryKey = null;
150
+ let methodKey;
133
151
  let reasoning;
134
- let johuAdjustment = null;
152
+ let johuAdjustmentKey = null;
135
153
  if (specialFormation.isSpecial && specialFormation.followElement) {
136
- primary = specialFormation.followElement;
137
- secondary = GENERATES[specialFormation.followElement];
138
- method = "격국";
139
- reasoning = `${specialFormation.type} 성립. ${specialFormation.followElement} 세력을 따름`;
154
+ primaryKey = specialFormation.followElement;
155
+ secondaryKey = GENERATES[specialFormation.followElement];
156
+ methodKey = "formation";
157
+ reasoning = `종격 성립. ${getElementLabel(specialFormation.followElement).korean} 세력을 따름`;
140
158
  }
141
159
  else {
142
160
  const yokbu = getYokbuYongShen(dayMasterElement, strength.level);
143
- primary = yokbu.primary;
144
- secondary = yokbu.secondary;
145
- method = "억부";
146
- const isStrong = ["신강", "태강", "극왕", "중화신강"].includes(strength.level);
147
- if (isStrong) {
148
- reasoning = `${strength.level} 상태로 설기(洩氣) 필요. ${primary}로 기운을 발산`;
161
+ primaryKey = yokbu.primary;
162
+ secondaryKey = yokbu.secondary;
163
+ methodKey = "balance";
164
+ const strong = isStrongLevel(strength.level);
165
+ if (strong) {
166
+ reasoning = `${strength.level.korean} 상태로 설기(洩氣) 필요. ${getElementLabel(primaryKey).korean}로 기운을 발산`;
149
167
  }
150
168
  else {
151
- reasoning = `${strength.level} 상태로 부조(扶助) 필요. ${primary}로 일간을 생조`;
169
+ reasoning = `${strength.level.korean} 상태로 부조(扶助) 필요. ${getElementLabel(primaryKey).korean}로 일간을 생조`;
152
170
  }
153
- johuAdjustment = getJohuAdjustment(dayMasterElement, season, primary);
154
- if (johuAdjustment) {
155
- reasoning += `. 조후 보정: ${season} 계절에 ${johuAdjustment} 참고`;
171
+ johuAdjustmentKey = getJohuAdjustment(dayMasterElement, season, primaryKey);
172
+ if (johuAdjustmentKey) {
173
+ reasoning += `. 조후 보정: ${season} 계절에 ${getElementLabel(johuAdjustmentKey).korean} 참고`;
156
174
  }
157
175
  }
158
176
  const allElements = {
@@ -162,12 +180,12 @@ export function analyzeYongShen(yearPillar, monthPillar, dayPillar, hourPillar)
162
180
  metal: { isYongShen: false, isKiShen: false },
163
181
  water: { isYongShen: false, isKiShen: false },
164
182
  };
165
- allElements[primary].isYongShen = true;
166
- if (secondary)
167
- allElements[secondary].isYongShen = true;
168
- const isStrong = ["신강", "태강", "극왕", "중화신강"].includes(strength.level);
169
- if (method !== "격국") {
170
- if (isStrong) {
183
+ allElements[primaryKey].isYongShen = true;
184
+ if (secondaryKey)
185
+ allElements[secondaryKey].isYongShen = true;
186
+ const strong = isStrongLevel(strength.level);
187
+ if (methodKey !== "formation") {
188
+ if (strong) {
171
189
  allElements[dayMasterElement].isKiShen = true;
172
190
  allElements[GENERATED_BY[dayMasterElement]].isKiShen = true;
173
191
  }
@@ -182,12 +200,12 @@ export function analyzeYongShen(yearPillar, monthPillar, dayPillar, hourPillar)
182
200
  }
183
201
  }
184
202
  return {
185
- primary,
186
- secondary,
187
- method,
203
+ primary: getElementLabel(primaryKey),
204
+ secondary: secondaryKey ? getElementLabel(secondaryKey) : null,
205
+ method: getYongShenMethodLabel(methodKey),
188
206
  reasoning,
189
207
  allElements,
190
- johuAdjustment,
208
+ johuAdjustment: johuAdjustmentKey ? getElementLabel(johuAdjustmentKey) : null,
191
209
  };
192
210
  }
193
211
  export function getElementRecommendations(yongShen) {
@@ -198,12 +216,12 @@ export function getElementRecommendations(yongShen) {
198
216
  metal: { colors: ["백색", "금색"], direction: "서", numbers: [4, 9] },
199
217
  water: { colors: ["흑색", "남색"], direction: "북", numbers: [1, 6] },
200
218
  };
201
- const primary = elementData[yongShen.primary];
219
+ const primary = elementData[yongShen.primary.key];
202
220
  const colors = [...primary.colors];
203
221
  const directions = [primary.direction];
204
222
  const numbers = [...primary.numbers];
205
223
  if (yongShen.secondary) {
206
- const secondary = elementData[yongShen.secondary];
224
+ const secondary = elementData[yongShen.secondary.key];
207
225
  colors.push(...secondary.colors);
208
226
  directions.push(secondary.direction);
209
227
  numbers.push(...secondary.numbers);
package/dist/index.d.ts CHANGED
@@ -3,13 +3,13 @@ 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, SINSAL_INFO, SINSALS, type Sinsal, type SinsalMatch, type SinsalResult, } from "./core/sinsals";
7
- export { analyzeSolarTerms, getSolarTermsForYear, SOLAR_TERMS, type SolarTerm, type SolarTermDateInfo, type SolarTermHanja, type SolarTermInfo, type SolarTermName, } from "./core/solar-terms";
8
- export { analyzeStrength, STRENGTH_LEVELS, type StrengthFactors, type StrengthLevel, type StrengthResult, } from "./core/strength";
9
- export { analyzeTenGods, countElements, countTenGods, ELEMENTS, type Element, type FourPillarsTenGods, getBranchElement, getBranchPolarity, getHiddenStems, getStemElement, getStemPolarity, getTenGod, getTenGodForBranch, getTenGodsForBranch, HIDDEN_STEMS, type Polarity, TEN_GOD_ENGLISH, TEN_GOD_HANJA, TEN_GODS, type TenGod, } from "./core/ten-gods";
10
- export { analyzeTwelveStages, getTwelveStage, STAGE_INFO, TWELVE_STAGES, type TwelveStage, type TwelveStagesResult, } from "./core/twelve-stages";
11
- export { analyzeYongShen, getElementRecommendations, type YongShenMethod, type YongShenResult, } from "./core/yongshen";
12
- export type { Branch, Pillar, PillarPosition, Stem } from "./types";
6
+ export { analyzeSinsals, getSinsalLabel, SINSAL_INFO, SINSALS, type Sinsal, type SinsalKey, type SinsalLabel, type SinsalMatch, type SinsalResult, type SinsalType, } from "./core/sinsals";
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, STRENGTH_LEVELS, type StrengthFactors, type StrengthLevel, 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, getTenGod, getTenGodForBranch, getTenGodLabel, getTenGodsForBranch, HIDDEN_STEMS, type Polarity, TEN_GOD_ENGLISH, TEN_GOD_HANJA, TEN_GOD_KEYS, TEN_GODS, type TenGod, type TenGodKey, type TenGodLabel, } from "./core/ten-gods";
10
+ export { analyzeTwelveStages, getTwelveStage, getTwelveStageLabel, STAGE_INFO, TWELVE_STAGES, type TwelveStage, type TwelveStageKey, type TwelveStageLabel, type TwelveStagesResult, } from "./core/twelve-stages";
11
+ export { analyzeYongShen, getElementRecommendations, getYongShenMethodLabel, type YongShenMethod, type YongShenMethodKey, type YongShenMethodLabel, type YongShenResult, } from "./core/yongshen";
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";
15
15
  import { type Gender, type MajorLuckResult, type YearlyLuckResult } from "./core/luck";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,12 +2,12 @@ export { applyMeanSolarTime, BRANCHES, dayPillarFromDate, effectiveDayDate, getF
2
2
  export { calculateDailyLuck, calculateMajorLuck, calculateMonthlyLuck, calculateYearlyLuck, getCurrentMajorLuck, getDayPillar, getMonthPillar, getYearPillar, } from "./core/luck";
3
3
  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
- export { analyzeSinsals, SINSAL_INFO, SINSALS, } from "./core/sinsals";
6
- export { analyzeSolarTerms, getSolarTermsForYear, SOLAR_TERMS, } from "./core/solar-terms";
7
- export { analyzeStrength, STRENGTH_LEVELS, } from "./core/strength";
8
- export { analyzeTenGods, countElements, countTenGods, ELEMENTS, getBranchElement, getBranchPolarity, getHiddenStems, getStemElement, getStemPolarity, getTenGod, getTenGodForBranch, getTenGodsForBranch, HIDDEN_STEMS, TEN_GOD_ENGLISH, TEN_GOD_HANJA, TEN_GODS, } from "./core/ten-gods";
9
- export { analyzeTwelveStages, getTwelveStage, STAGE_INFO, TWELVE_STAGES, } from "./core/twelve-stages";
10
- export { analyzeYongShen, getElementRecommendations, } from "./core/yongshen";
5
+ export { analyzeSinsals, getSinsalLabel, SINSAL_INFO, SINSALS, } from "./core/sinsals";
6
+ export { analyzeSolarTerms, getSolarTermLabel, getSolarTermsForYear, SOLAR_TERM_KEYS, SOLAR_TERMS, } from "./core/solar-terms";
7
+ export { analyzeStrength, getStrengthLevelLabel, STRENGTH_LEVEL_KEYS, STRENGTH_LEVELS, } from "./core/strength";
8
+ export { analyzeTenGods, countElements, countTenGods, ELEMENTS, getBranchElement, getBranchPolarity, getElementLabel, getHiddenStems, getStemElement, getStemPolarity, getTenGod, getTenGodForBranch, getTenGodLabel, getTenGodsForBranch, HIDDEN_STEMS, TEN_GOD_ENGLISH, TEN_GOD_HANJA, TEN_GOD_KEYS, TEN_GODS, } from "./core/ten-gods";
9
+ export { analyzeTwelveStages, getTwelveStage, getTwelveStageLabel, STAGE_INFO, TWELVE_STAGES, } from "./core/twelve-stages";
10
+ export { analyzeYongShen, getElementRecommendations, getYongShenMethodLabel, } from "./core/yongshen";
11
11
  import { getFourPillars } from "./core/four-pillars";
12
12
  import { calculateMajorLuck, calculateYearlyLuck, } from "./core/luck";
13
13
  import { analyzeRelations } from "./core/relations";
@@ -9,4 +9,12 @@ export interface Pillar {
9
9
  branch: Branch;
10
10
  pillar: string;
11
11
  }
12
+ /**
13
+ * 공통 레이블 타입 - 영어 키, 한글, 한자를 함께 제공
14
+ */
15
+ export interface Label<T extends string = string> {
16
+ key: T;
17
+ korean: string;
18
+ hanja: string;
19
+ }
12
20
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7E,MAAM,MAAM,MAAM,GACd,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACpE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AACtC,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/types/common.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC7E,MAAM,MAAM,MAAM,GACd,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AACpE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AACtC,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC9C,GAAG,EAAE,CAAC,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -1,2 +1,2 @@
1
- export type { Branch, Element, Gender, Pillar, PillarPosition, Polarity, Stem, } from "../types/common";
1
+ export type { Branch, Element, Gender, Label, Pillar, PillarPosition, Polarity, Stem, } from "../types/common";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,OAAO,EACP,MAAM,EACN,MAAM,EACN,cAAc,EACd,QAAQ,EACR,IAAI,GACL,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,cAAc,EACd,QAAQ,EACR,IAAI,GACL,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gracefullight/saju",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Four Pillars (四柱) calculator with flexible date adapter support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",