@gracefullight/saju 0.3.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.en.md +6 -10
  2. package/README.md +6 -10
  3. package/dist/__tests__/date-fns-adapter.test.js +1 -1
  4. package/dist/__tests__/four-pillars.test.js +10 -9
  5. package/dist/__tests__/luck.test.js +2 -2
  6. package/dist/__tests__/lunar.test.js +1 -1
  7. package/dist/__tests__/luxon-adapter.test.js +1 -1
  8. package/dist/__tests__/relations.test.js +2 -2
  9. package/dist/__tests__/saju.test.js +3 -3
  10. package/dist/__tests__/sinsals.test.d.ts +2 -0
  11. package/dist/__tests__/sinsals.test.d.ts.map +1 -0
  12. package/dist/__tests__/sinsals.test.js +64 -0
  13. package/dist/__tests__/solar-terms.test.js +2 -2
  14. package/dist/__tests__/strength.test.js +2 -2
  15. package/dist/__tests__/ten-gods.test.js +4 -4
  16. package/dist/__tests__/twelve-stages.test.d.ts +2 -0
  17. package/dist/__tests__/twelve-stages.test.d.ts.map +1 -0
  18. package/dist/__tests__/twelve-stages.test.js +86 -0
  19. package/dist/__tests__/utils.test.d.ts +2 -0
  20. package/dist/__tests__/utils.test.d.ts.map +1 -0
  21. package/dist/__tests__/utils.test.js +130 -0
  22. package/dist/__tests__/yongshen.test.js +2 -2
  23. package/dist/adapters/date-fns.d.ts +1 -1
  24. package/dist/adapters/luxon.d.ts +1 -1
  25. package/dist/core/four-pillars.d.ts +6 -6
  26. package/dist/core/four-pillars.d.ts.map +1 -1
  27. package/dist/core/four-pillars.js +10 -26
  28. package/dist/core/luck.d.ts +22 -3
  29. package/dist/core/luck.d.ts.map +1 -1
  30. package/dist/core/luck.js +60 -19
  31. package/dist/core/relations.d.ts.map +1 -1
  32. package/dist/core/relations.js +5 -1
  33. package/dist/core/sinsals.d.ts +19 -0
  34. package/dist/core/sinsals.d.ts.map +1 -0
  35. package/dist/core/sinsals.js +339 -0
  36. package/dist/core/solar-terms.d.ts +1 -1
  37. package/dist/core/strength.d.ts.map +1 -1
  38. package/dist/core/strength.js +1 -1
  39. package/dist/core/ten-gods.d.ts +4 -7
  40. package/dist/core/ten-gods.d.ts.map +1 -1
  41. package/dist/core/ten-gods.js +2 -6
  42. package/dist/core/twelve-stages.d.ts +17 -0
  43. package/dist/core/twelve-stages.d.ts.map +1 -0
  44. package/dist/core/twelve-stages.js +77 -0
  45. package/dist/core/yongshen.d.ts.map +1 -1
  46. package/dist/core/yongshen.js +2 -2
  47. package/dist/index.d.ts +26 -19
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +23 -15
  50. package/dist/types/common.d.ts +12 -0
  51. package/dist/types/common.d.ts.map +1 -0
  52. package/dist/types/common.js +1 -0
  53. package/dist/types/index.d.ts +2 -0
  54. package/dist/types/index.d.ts.map +1 -0
  55. package/dist/types/index.js +1 -0
  56. package/dist/utils/constants.d.ts +13 -0
  57. package/dist/utils/constants.d.ts.map +1 -0
  58. package/dist/utils/constants.js +59 -0
  59. package/dist/utils/index.d.ts +2 -0
  60. package/dist/utils/index.d.ts.map +1 -0
  61. package/dist/utils/index.js +1 -0
  62. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ten-gods.d.ts","sourceRoot":"","sources":["../../src/core/ten-gods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ten-gods.d.ts","sourceRoot":"","sources":["../../src/core/ten-gods.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,5 @@
1
- /**
2
- * 십신(十神) 분석 모듈
3
- * Ten Gods analysis based on the relationship between Day Master and other elements
4
- */
5
- import { STEMS, BRANCHES } from "./four-pillars";
6
- export const ELEMENTS = ["wood", "fire", "earth", "metal", "water"];
1
+ import { ELEMENTS } from "../utils";
2
+ export { ELEMENTS };
7
3
  export const TEN_GODS = [
8
4
  "비견",
9
5
  "겁재",
@@ -0,0 +1,17 @@
1
+ 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;
4
+ export interface TwelveStagesResult {
5
+ year: TwelveStage;
6
+ month: TwelveStage;
7
+ day: TwelveStage;
8
+ hour: TwelveStage;
9
+ }
10
+ export declare function analyzeTwelveStages(yearPillar: string, monthPillar: string, dayPillar: string, hourPillar: string): TwelveStagesResult;
11
+ export declare const STAGE_INFO: Record<TwelveStage, {
12
+ korean: string;
13
+ hanja: string;
14
+ meaning: string;
15
+ strength: "strong" | "neutral" | "weak";
16
+ }>;
17
+ //# sourceMappingURL=twelve-stages.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,77 @@
1
+ import { getBranchIndex, isYangStem } from "../utils";
2
+ export const TWELVE_STAGES = [
3
+ "longLife",
4
+ "bathing",
5
+ "crownBelt",
6
+ "establishment",
7
+ "imperial",
8
+ "decline",
9
+ "illness",
10
+ "death",
11
+ "tomb",
12
+ "extinction",
13
+ "conception",
14
+ "nurturing",
15
+ ];
16
+ const YANG_STEM_BIRTH_BRANCH = {
17
+ 甲: "亥",
18
+ 丙: "寅",
19
+ 戊: "寅",
20
+ 庚: "巳",
21
+ 壬: "申",
22
+ };
23
+ const YIN_STEM_BIRTH_BRANCH = {
24
+ 乙: "午",
25
+ 丁: "酉",
26
+ 己: "酉",
27
+ 辛: "子",
28
+ 癸: "卯",
29
+ };
30
+ export function getTwelveStage(stem, branch) {
31
+ const isYang = isYangStem(stem);
32
+ const birthBranch = isYang ? YANG_STEM_BIRTH_BRANCH[stem] : YIN_STEM_BIRTH_BRANCH[stem];
33
+ if (!birthBranch) {
34
+ throw new Error(`Invalid stem: ${stem}`);
35
+ }
36
+ const birthIndex = getBranchIndex(birthBranch);
37
+ const targetIndex = getBranchIndex(branch);
38
+ if (birthIndex === -1 || targetIndex === -1) {
39
+ throw new Error(`Invalid branch: ${branch}`);
40
+ }
41
+ let stageIndex;
42
+ if (isYang) {
43
+ stageIndex = (targetIndex - birthIndex + 12) % 12;
44
+ }
45
+ else {
46
+ stageIndex = (birthIndex - targetIndex + 12) % 12;
47
+ }
48
+ return TWELVE_STAGES[stageIndex];
49
+ }
50
+ export function analyzeTwelveStages(yearPillar, monthPillar, dayPillar, hourPillar) {
51
+ const dayMaster = dayPillar[0];
52
+ 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]),
57
+ };
58
+ }
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
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"yongshen.d.ts","sourceRoot":"","sources":["../../src/core/yongshen.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,YAAY,CAAC;AAGpB,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,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,5 +1,5 @@
1
- import { getStemElement, getBranchElement, getHiddenStems, ELEMENTS, } from "./ten-gods";
2
1
  import { analyzeStrength } from "./strength";
2
+ import { ELEMENTS, getBranchElement, getStemElement } from "./ten-gods";
3
3
  const SEASON_MONTH_BRANCHES = {
4
4
  spring: ["寅", "卯", "辰"],
5
5
  summer: ["巳", "午", "未"],
@@ -84,7 +84,7 @@ function getYokbuYongShen(dayMasterElement, strengthLevel) {
84
84
  return { primary, secondary };
85
85
  }
86
86
  function hasSpecialFormation(dayMasterElement, strengthLevel, allElements) {
87
- const isExtreme = ["극약", "극왕"].includes(strengthLevel);
87
+ const _isExtreme = ["극약", "극왕"].includes(strengthLevel);
88
88
  if (strengthLevel === "극약") {
89
89
  const elementCounts = {
90
90
  wood: 0,
package/dist/index.d.ts CHANGED
@@ -1,21 +1,26 @@
1
- export type { DateAdapter } from "@/adapters/date-adapter";
2
- export { getLunarDate, getSolarDate, type LunarDate } from "@/core/lunar";
3
- export { applyMeanSolarTime, BRANCHES, dayPillarFromDate, effectiveDayDate, getFourPillars, hourPillar, monthPillar, presetA, presetB, STANDARD_PRESET, STEMS, TRADITIONAL_PRESET, yearPillar, } from "@/core/four-pillars";
4
- export { type Element, type Polarity, type TenGod, ELEMENTS, TEN_GODS, TEN_GOD_HANJA, TEN_GOD_ENGLISH, HIDDEN_STEMS, getStemElement, getStemPolarity, getBranchElement, getBranchPolarity, getHiddenStems, getTenGod, getTenGodForBranch, getTenGodsForBranch, analyzeTenGods, countTenGods, countElements, type FourPillarsTenGods, } from "@/core/ten-gods";
5
- export { type StrengthLevel, STRENGTH_LEVELS, analyzeStrength, type StrengthFactors, type StrengthResult, } from "@/core/strength";
6
- export { STEM_COMBINATIONS, BRANCH_SIX_COMBINATIONS, BRANCH_TRIPLE_COMBINATIONS, BRANCH_DIRECTIONAL_COMBINATIONS, BRANCH_CLASHES, BRANCH_HARMS, BRANCH_PUNISHMENTS, BRANCH_DESTRUCTIONS, analyzeRelations, findStemCombination, findBranchClash, findBranchSixCombination, type StemCombination, type BranchSixCombination, type BranchTripleCombination, type BranchDirectionalCombination, type BranchClash, type BranchHarm, type BranchPunishment, type BranchDestruction, type Relation, type RelationsResult, } from "@/core/relations";
7
- export { type Gender, type LuckPillar, type MajorLuckResult, type YearlyLuckResult, type StartAgeDetail, calculateMajorLuck, calculateYearlyLuck, getYearPillar, getCurrentMajorLuck, } from "@/core/luck";
8
- export { type YongShenMethod, type YongShenResult, analyzeYongShen, getElementRecommendations, } from "@/core/yongshen";
9
- export { SOLAR_TERMS, type SolarTerm, type SolarTermName, type SolarTermHanja, type SolarTermInfo, type SolarTermDateInfo, analyzeSolarTerms, getSolarTermsForYear, } from "@/core/solar-terms";
10
- import type { DateAdapter } from "@/adapters/date-adapter";
11
- import { type presetA } from "@/core/four-pillars";
12
- import { type FourPillarsTenGods } from "@/core/ten-gods";
13
- import { type StrengthResult } from "@/core/strength";
14
- import { type RelationsResult } from "@/core/relations";
15
- import { type YongShenResult } from "@/core/yongshen";
16
- import { type Gender, type MajorLuckResult, type YearlyLuckResult } from "@/core/luck";
17
- import type { LunarDate } from "@/core/lunar";
18
- import { type SolarTermInfo } from "@/core/solar-terms";
1
+ export type { DateAdapter } from "./adapters/date-adapter";
2
+ export { applyMeanSolarTime, BRANCHES, dayPillarFromDate, effectiveDayDate, getFourPillars, hourPillar, monthPillar, presetA, presetB, STANDARD_PRESET, STEMS, TRADITIONAL_PRESET, yearPillar, } from "./core/four-pillars";
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
+ export { getLunarDate, getSolarDate, type LunarDate } from "./core/lunar";
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";
13
+ import type { DateAdapter } from "./adapters/date-adapter";
14
+ import { type presetA } from "./core/four-pillars";
15
+ import { type Gender, type MajorLuckResult, type YearlyLuckResult } from "./core/luck";
16
+ import type { LunarDate } from "./core/lunar";
17
+ import { type RelationsResult } from "./core/relations";
18
+ import { type SinsalResult } from "./core/sinsals";
19
+ import { type SolarTermInfo } from "./core/solar-terms";
20
+ import { type StrengthResult } from "./core/strength";
21
+ import { type FourPillarsTenGods } from "./core/ten-gods";
22
+ import { type TwelveStagesResult } from "./core/twelve-stages";
23
+ import { type YongShenResult } from "./core/yongshen";
19
24
  export interface SajuResult {
20
25
  pillars: {
21
26
  year: string;
@@ -31,6 +36,8 @@ export interface SajuResult {
31
36
  solarTerms: SolarTermInfo;
32
37
  majorLuck: MajorLuckResult;
33
38
  yearlyLuck: YearlyLuckResult[];
39
+ twelveStages: TwelveStagesResult;
40
+ sinsals: SinsalResult;
34
41
  meta: {
35
42
  solarYearUsed: number;
36
43
  sunLonDeg: number;
@@ -43,7 +50,7 @@ export interface SajuResult {
43
50
  };
44
51
  }
45
52
  export interface GetSajuOptions {
46
- longitudeDeg: number;
53
+ longitudeDeg?: number;
47
54
  gender: Gender;
48
55
  tzOffsetHours?: number;
49
56
  preset?: typeof presetA;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1E,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;AAE7B,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,aAAa,EAClB,eAAe,EACf,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,eAAe,EACf,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAEtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE3E,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/D,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,wBAAgB,OAAO,CAAC,CAAC,EACvB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,cAAc,GACtB,UAAU,CAyCZ"}
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,WAAW,EACX,OAAO,EACP,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,KAAK,QAAQ,EACb,eAAe,EACf,aAAa,EACb,QAAQ,EACR,KAAK,MAAM,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAEpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,YAAY,EAAE,kBAAkB,CAAC;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE;QACJ,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/D,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,wBAAgB,OAAO,CAAC,CAAC,EACvB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,OAAO,EAAE,CAAC,EACV,OAAO,EAAE,cAAc,GACtB,UAAU,CA6CZ"}
package/dist/index.js CHANGED
@@ -1,18 +1,22 @@
1
- export { getLunarDate, getSolarDate } from "@/core/lunar";
2
- export { applyMeanSolarTime, BRANCHES, dayPillarFromDate, effectiveDayDate, getFourPillars, hourPillar, monthPillar, presetA, presetB, STANDARD_PRESET, STEMS, TRADITIONAL_PRESET, yearPillar, } from "@/core/four-pillars";
3
- export { ELEMENTS, TEN_GODS, TEN_GOD_HANJA, TEN_GOD_ENGLISH, HIDDEN_STEMS, getStemElement, getStemPolarity, getBranchElement, getBranchPolarity, getHiddenStems, getTenGod, getTenGodForBranch, getTenGodsForBranch, analyzeTenGods, countTenGods, countElements, } from "@/core/ten-gods";
4
- export { STRENGTH_LEVELS, analyzeStrength, } from "@/core/strength";
5
- export { STEM_COMBINATIONS, BRANCH_SIX_COMBINATIONS, BRANCH_TRIPLE_COMBINATIONS, BRANCH_DIRECTIONAL_COMBINATIONS, BRANCH_CLASHES, BRANCH_HARMS, BRANCH_PUNISHMENTS, BRANCH_DESTRUCTIONS, analyzeRelations, findStemCombination, findBranchClash, findBranchSixCombination, } from "@/core/relations";
6
- export { calculateMajorLuck, calculateYearlyLuck, getYearPillar, getCurrentMajorLuck, } from "@/core/luck";
7
- export { analyzeYongShen, getElementRecommendations, } from "@/core/yongshen";
8
- export { SOLAR_TERMS, analyzeSolarTerms, getSolarTermsForYear, } from "@/core/solar-terms";
9
- import { getFourPillars } from "@/core/four-pillars";
10
- import { analyzeTenGods } from "@/core/ten-gods";
11
- import { analyzeStrength } from "@/core/strength";
12
- import { analyzeRelations } from "@/core/relations";
13
- import { analyzeYongShen } from "@/core/yongshen";
14
- import { calculateMajorLuck, calculateYearlyLuck, } from "@/core/luck";
15
- import { analyzeSolarTerms } from "@/core/solar-terms";
1
+ export { applyMeanSolarTime, BRANCHES, dayPillarFromDate, effectiveDayDate, getFourPillars, hourPillar, monthPillar, presetA, presetB, STANDARD_PRESET, STEMS, TRADITIONAL_PRESET, yearPillar, } from "./core/four-pillars";
2
+ export { calculateDailyLuck, calculateMajorLuck, calculateMonthlyLuck, calculateYearlyLuck, getCurrentMajorLuck, getDayPillar, getMonthPillar, getYearPillar, } from "./core/luck";
3
+ export { getLunarDate, getSolarDate } from "./core/lunar";
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";
11
+ import { getFourPillars } from "./core/four-pillars";
12
+ import { calculateMajorLuck, calculateYearlyLuck, } from "./core/luck";
13
+ import { analyzeRelations } from "./core/relations";
14
+ import { analyzeSinsals } from "./core/sinsals";
15
+ import { analyzeSolarTerms } from "./core/solar-terms";
16
+ import { analyzeStrength } from "./core/strength";
17
+ import { analyzeTenGods } from "./core/ten-gods";
18
+ import { analyzeTwelveStages } from "./core/twelve-stages";
19
+ import { analyzeYongShen } from "./core/yongshen";
16
20
  export function getSaju(adapter, dtLocal, options) {
17
21
  const fourPillars = getFourPillars(adapter, dtLocal, {
18
22
  longitudeDeg: options.longitudeDeg,
@@ -25,6 +29,8 @@ export function getSaju(adapter, dtLocal, options) {
25
29
  const relations = analyzeRelations(year, month, day, hour);
26
30
  const yongShen = analyzeYongShen(year, month, day, hour);
27
31
  const solarTerms = analyzeSolarTerms(adapter, dtLocal);
32
+ const twelveStages = analyzeTwelveStages(year, month, day, hour);
33
+ const sinsals = analyzeSinsals(year, month, day, hour);
28
34
  const result = {
29
35
  pillars: { year, month, day, hour },
30
36
  lunar: fourPillars.lunar,
@@ -38,6 +44,8 @@ export function getSaju(adapter, dtLocal, options) {
38
44
  prevJieMillis: solarTerms.prevJieMillis,
39
45
  }),
40
46
  yearlyLuck: calculateYearlyLuck(fourPillars.meta.solarYearUsed, options.yearlyLuckRange?.from ?? (options.currentYear ?? new Date().getFullYear()) - 5, options.yearlyLuckRange?.to ?? (options.currentYear ?? new Date().getFullYear()) + 10),
47
+ twelveStages,
48
+ sinsals,
41
49
  meta: {
42
50
  solarYearUsed: fourPillars.meta.solarYearUsed,
43
51
  sunLonDeg: fourPillars.meta.sunLonDeg,
@@ -0,0 +1,12 @@
1
+ export type Stem = "甲" | "乙" | "丙" | "丁" | "戊" | "己" | "庚" | "辛" | "壬" | "癸";
2
+ export type Branch = "子" | "丑" | "寅" | "卯" | "辰" | "巳" | "午" | "未" | "申" | "酉" | "戌" | "亥";
3
+ export type Element = "wood" | "fire" | "earth" | "metal" | "water";
4
+ export type Polarity = "yang" | "yin";
5
+ export type Gender = "male" | "female";
6
+ export type PillarPosition = "year" | "month" | "day" | "hour";
7
+ export interface Pillar {
8
+ stem: Stem;
9
+ branch: Branch;
10
+ pillar: string;
11
+ }
12
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export type { Branch, Element, Gender, Pillar, PillarPosition, Polarity, Stem, } from "../types/common";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { Branch, Stem } from "../types";
2
+ export declare const STEMS: readonly Stem[];
3
+ export declare const BRANCHES: readonly Branch[];
4
+ export declare const ELEMENTS: readonly ["wood", "fire", "earth", "metal", "water"];
5
+ export declare function getStemIndex(stem: Stem | string): number;
6
+ export declare function getBranchIndex(branch: Branch | string): number;
7
+ export declare function pillarFromIndex(idx60: number): string;
8
+ export declare function getPillarIndex(pillar: string): number;
9
+ export declare function jdnFromDate(year: number, month: number, day: number): number;
10
+ export declare function dayPillarIndexFromJdn(jdn: number): number;
11
+ export declare function isYangStem(stem: Stem | string): boolean;
12
+ export declare function isYinStem(stem: Stem | string): boolean;
13
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,KAAK,EAAE,SAAS,IAAI,EAAuD,CAAC;AAEzF,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAarC,CAAC;AAEF,eAAO,MAAM,QAAQ,sDAAuD,CAAC;AAE7E,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAE9D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAYrD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAa5E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,OAAO,CAEtD"}
@@ -0,0 +1,59 @@
1
+ export const STEMS = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"];
2
+ export const BRANCHES = [
3
+ "子",
4
+ "丑",
5
+ "寅",
6
+ "卯",
7
+ "辰",
8
+ "巳",
9
+ "午",
10
+ "未",
11
+ "申",
12
+ "酉",
13
+ "戌",
14
+ "亥",
15
+ ];
16
+ export const ELEMENTS = ["wood", "fire", "earth", "metal", "water"];
17
+ export function getStemIndex(stem) {
18
+ return STEMS.indexOf(stem);
19
+ }
20
+ export function getBranchIndex(branch) {
21
+ return BRANCHES.indexOf(branch);
22
+ }
23
+ export function pillarFromIndex(idx60) {
24
+ const normalized = ((idx60 % 60) + 60) % 60;
25
+ return STEMS[normalized % 10] + BRANCHES[normalized % 12];
26
+ }
27
+ export function getPillarIndex(pillar) {
28
+ const stem = pillar[0];
29
+ const branch = pillar[1];
30
+ const stemIdx = getStemIndex(stem);
31
+ const branchIdx = getBranchIndex(branch);
32
+ for (let i = 0; i < 60; i++) {
33
+ if (i % 10 === stemIdx && i % 12 === branchIdx) {
34
+ return i;
35
+ }
36
+ }
37
+ return 0;
38
+ }
39
+ export function jdnFromDate(year, month, day) {
40
+ const a = Math.floor((14 - month) / 12);
41
+ const y2 = year + 4800 - a;
42
+ const m2 = month + 12 * a - 3;
43
+ return (day +
44
+ Math.floor((153 * m2 + 2) / 5) +
45
+ 365 * y2 +
46
+ Math.floor(y2 / 4) -
47
+ Math.floor(y2 / 100) +
48
+ Math.floor(y2 / 400) -
49
+ 32045);
50
+ }
51
+ export function dayPillarIndexFromJdn(jdn) {
52
+ return (((jdn + 49) % 60) + 60) % 60;
53
+ }
54
+ export function isYangStem(stem) {
55
+ return ["甲", "丙", "戊", "庚", "壬"].includes(stem);
56
+ }
57
+ export function isYinStem(stem) {
58
+ return ["乙", "丁", "己", "辛", "癸"].includes(stem);
59
+ }
@@ -0,0 +1,2 @@
1
+ export { BRANCHES, dayPillarIndexFromJdn, ELEMENTS, getBranchIndex, getPillarIndex, getStemIndex, isYangStem, isYinStem, jdnFromDate, pillarFromIndex, STEMS, } from "../utils/constants";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,EACf,KAAK,GACN,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1 @@
1
+ export { BRANCHES, dayPillarIndexFromJdn, ELEMENTS, getBranchIndex, getPillarIndex, getStemIndex, isYangStem, isYinStem, jdnFromDate, pillarFromIndex, STEMS, } from "../utils/constants";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gracefullight/saju",
3
- "version": "0.3.0",
3
+ "version": "0.4.2",
4
4
  "description": "Four Pillars (四柱) calculator with flexible date adapter support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -50,6 +50,7 @@
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/luxon": "^3.4.2",
53
+ "tsc-alias": "^1.8.10",
53
54
  "@vitest/coverage-v8": "^2.1.8",
54
55
  "@vitest/ui": "^2.1.8",
55
56
  "date-fns": "^4.1.0",
@@ -61,7 +62,7 @@
61
62
  "lunar-javascript": "^1.7.7"
62
63
  },
63
64
  "scripts": {
64
- "build": "tsc",
65
+ "build": "tsc && tsc-alias",
65
66
  "dev": "tsx src/index.ts",
66
67
  "test": "vitest",
67
68
  "test:ui": "vitest --ui",