thai-astrology 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README-th.md ADDED
@@ -0,0 +1,91 @@
1
+ # Thai Astrology — โหราศาสตร์ไทย
2
+
3
+ [English](README.md) | [ภาษาไทย](README-th.md)
4
+
5
+ Thai Astrology เป็นไลบรารี TypeScript สำหรับคำนวณดวงตามหลักโหราศาสตร์ไทย โดยใช้ข้อมูลวัน เวลา และจังหวัดเกิดเพื่อหาตำแหน่งดาว จัดวางดวงใน 12 ช่อง คำนวณลัคนาและตนุเศษ ไม่มีแพ็กเกจอื่นที่จำเป็นขณะใช้งาน รองรับ Node.js ตั้งแต่รุ่น 16 และมีไฟล์ประกาศชนิดข้อมูลสำหรับ TypeScript
6
+
7
+ ## การติดตั้ง
8
+
9
+ ```bash
10
+ npm install thai-astrology
11
+ ```
12
+
13
+ ## การใช้งาน
14
+
15
+ ```ts
16
+ import {
17
+ formatChannelOutputs,
18
+ generateThaiAstrologyChart,
19
+ } from "thai-astrology"
20
+
21
+ const chart = generateThaiAstrologyChart({
22
+ day: 15,
23
+ monthTh: 9,
24
+ yearBe: 2566, // พ.ศ. 2566 ตรงกับ ค.ศ. 2023
25
+ hour: 14,
26
+ minute: 45,
27
+ province: "กรุงเทพมหานคร",
28
+ })
29
+
30
+ console.log(formatChannelOutputs(chart))
31
+ console.log(formatChannelOutputs(chart, "thai"))
32
+ console.log(formatChannelOutputs(chart, "arabic"))
33
+ console.log(chart.sunPosition)
34
+ ```
35
+
36
+ ใช้ `yearBe` สำหรับปีพุทธศักราช หรือใช้ฟิลด์เดิม `yearBc` สำหรับปีคริสต์ศักราช เช่น `yearBc: 2023` ให้ผลเท่ากับ `yearBe: 2566` โดยระบุปีเพียงฟิลด์เดียว ชื่อ `yearBc` เป็นชื่อเดิมของ API และไม่ได้หมายถึงปีก่อนคริสต์ศักราช
37
+
38
+ สำหรับ CommonJS สามารถเรียกใช้ API เดียวกันได้ด้วย `require`:
39
+
40
+ ```js
41
+ const { generateThaiAstrologyChart, formatChannelOutputs } = require("thai-astrology")
42
+ ```
43
+
44
+ ตัวอย่างผลลัพธ์ตามลำดับคำสั่งด้านบน:
45
+
46
+ ```text
47
+ [ '58', '0', '9', '6', '14', '23', '', '', 'ลั', '', '7*', '' ]
48
+
49
+ [ '๕๘', '๐', '๙', '๖', '๑๔', '๒๓', '', '', 'ลั', '', '๗*', '' ]
50
+
51
+ [ '58', '0', '9', '6', '14', '23', '', '', 'ลั', '', '7*', '' ]
52
+
53
+ [ 27, 29 ]
54
+ ```
55
+
56
+ ## API หลัก
57
+
58
+ - `generateThaiAstrologyChart(input: CalculationInput): ThaiAstrologyChart` — คืนค่าตำแหน่งดาว ตนุเศษ ข้อมูลดวง 12 ช่อง และข้อมูลดาวที่อยู่ร่วมกับลัคนาเมื่อระบุได้ หากไม่สามารถระบุข้อมูลดาวร่วมลัคนาได้ ผลลัพธ์จะมีฟิลด์ `rulingPlanetsError`
59
+ - `formatChannelOutputs(chart, options?: { numerals?: "arabic" | "thai" } | "arabic" | "thai")` — ลบป้ายชื่อช่องและแสดงตัวเลขเป็นเลขอารบิกหรือเลขไทย โดยค่าเริ่มต้นเป็นเลขอารบิก
60
+
61
+ ## การพัฒนา
62
+
63
+ ```bash
64
+ nvm use
65
+ npm ci
66
+ npm run check
67
+ ```
68
+
69
+ ใช้ Node.js 24 เป็นรุ่นหลักสำหรับการพัฒนา แพ็กเกจยังรองรับ Node.js ตั้งแต่รุ่น 16 และกำหนดให้ CI ตรวจสอบกับ Node.js รุ่น 16, 22 และ 24
70
+
71
+ ```text
72
+ src/
73
+ index.ts จุดรวม API ที่เปิดให้ใช้งาน
74
+ engine/
75
+ astro-calculation.ts การคำนวณทางโหราศาสตร์
76
+ astro/ruling-planets.ts ฟังก์ชันเกี่ยวกับดาวร่วมลัคนา
77
+ test/
78
+ run.cjs ทดสอบความเข้ากันได้กับรุ่นที่เผยแพร่
79
+ fixtures/ ผลลัพธ์อ้างอิงจาก npm รุ่น 0.1.7
80
+ scripts/ ล้างไฟล์ build และตรวจสอบแพ็กเกจ
81
+ .github/workflows/ การตรวจสอบด้วย CI
82
+ dist/ JavaScript และไฟล์ประกาศชนิดข้อมูลที่สร้างขึ้น
83
+ ```
84
+
85
+ แก้ไขโค้ดใน `src/` ส่วน `dist/` สร้างขึ้นใหม่อัตโนมัติและไม่ติดตามด้วย Git การตั้งค่า VS Code ซ่อน `dist/` และ `node_modules/` ใน Explorer เพื่อให้ค้นหาไฟล์ต้นฉบับได้ง่าย แพ็กเกจ npm ประกอบด้วย `dist/` ซอร์ส TypeScript สำหรับการอ้างอิงจาก declaration maps เอกสาร README สัญญาอนุญาต และข้อมูลแพ็กเกจ
86
+
87
+ คำสั่ง `npm run check` ตรวจสอบชนิดข้อมูล ทดสอบความเข้ากันได้กับรุ่นที่เผยแพร่ สร้างไฟล์แพ็กเกจ และทดสอบการติดตั้งแพ็กเกจจริงผ่าน CommonJS, ESM imports และ TypeScript
88
+
89
+ ## สัญญาอนุญาต
90
+
91
+ MIT © ผู้ร่วมพัฒนา
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Thai Astrology
2
2
 
3
- Thai Astrology (โหราศาสตร์ไทย) is a TypeScript library that implements classical Thai astrological calculations. It converts birth details into the 12-channel chart lakna, Tanuseth, planetary positions without relying on runtime dependencies.
3
+ [English](README.md) | [ภาษาไทย](README-th.md)
4
+
5
+ Thai Astrology (โหราศาสตร์ไทย) is a TypeScript library for classical Thai astrological calculations. It converts birth details into planetary positions, a 12-channel chart, lakna, and Tanuseth without runtime dependencies. Node.js 16 or later is supported, with TypeScript declarations included.
4
6
 
5
7
  ## Install
6
8
 
@@ -19,7 +21,7 @@ import {
19
21
  const chart = generateThaiAstrologyChart({
20
22
  day: 15,
21
23
  monthTh: 9,
22
- yearBe: 2566, // 2023 in BCE
24
+ yearBe: 2566, // Buddhist Era; equivalent to 2023 CE
23
25
  hour: 14,
24
26
  minute: 45,
25
27
  province: "กรุงเทพมหานคร", // Bangkok
@@ -28,10 +30,16 @@ const chart = generateThaiAstrologyChart({
28
30
  console.log(formatChannelOutputs(chart))
29
31
  console.log(formatChannelOutputs(chart, "thai"))
30
32
  console.log(formatChannelOutputs(chart, "arabic"))
31
- console.log(chart.sunPosition)
33
+ console.log(chart.sunPosition)
32
34
  ```
33
35
 
34
- For BCE dates, supply `yearBc` instead of `yearBe`.
36
+ Use `yearBe` for the Buddhist Era year. The legacy field `yearBc` accepts a Gregorian year: `yearBc: 2023` is equivalent to `yearBe: 2566`. Supply one year field.
37
+
38
+ CommonJS consumers can use the same API:
39
+
40
+ ```js
41
+ const { generateThaiAstrologyChart, formatChannelOutputs } = require("thai-astrology")
42
+ ```
35
43
 
36
44
  Example output:
37
45
 
@@ -47,9 +55,37 @@ Example output:
47
55
 
48
56
  ## Key API
49
57
 
50
- - `generateThaiAstrologyChart(input: CalculationInput): ThaiAstrologyChart` – runs the core calculations and returns planets, tanuseth,12 channel outputs, and ruling planets metadata when available.
58
+ - `generateThaiAstrologyChart(input: CalculationInput): ThaiAstrologyChart` – returns planetary positions, Tanuseth, 12 channel outputs, and ruling planets metadata when available. When ruling planets cannot be determined, the chart includes `rulingPlanetsError`.
51
59
  - `formatChannelOutputs(chart, options?: { numerals?: "arabic" | "thai" } | "arabic" | "thai")` – strips channel labels and renders numbers in Arabic or Thai numerals.
52
60
 
61
+ ## Development
62
+
63
+ ```bash
64
+ nvm use
65
+ npm ci
66
+ npm run check
67
+ ```
68
+
69
+ Node.js 24 is the development default. The package retains its Node.js 16 minimum, and CI checks Node.js 16, 22, and 24.
70
+
71
+ ```text
72
+ src/
73
+ index.ts Public API
74
+ engine/
75
+ astro-calculation.ts Calculation engine
76
+ astro/ruling-planets.ts Ruling planet helpers
77
+ test/
78
+ run.cjs Compatibility tests
79
+ fixtures/ Expected npm 0.1.7 chart results
80
+ scripts/ Build cleanup and package verification
81
+ .github/workflows/ CI checks
82
+ dist/ Generated JavaScript and declarations
83
+ ```
84
+
85
+ Edit `src/`; `dist/` is rebuilt automatically and ignored by Git. VS Code hides `dist/` and `node_modules/` in the Explorer to keep source files easy to find. The npm archive includes `dist/`, TypeScript source for declaration maps, README, license, and package metadata.
86
+
87
+ `npm run check` typechecks the source, tests release compatibility, packs the library, and verifies an installed archive with CommonJS, ESM imports, and TypeScript consumers.
88
+
53
89
  ## License
54
90
 
55
91
  MIT © Contributors
@@ -1 +1 @@
1
- {"version":3,"file":"ruling-planets.d.ts","sourceRoot":"","sources":["../../../engine/astro/ruling-planets.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWlD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAmDF,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,gBAiBlD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,oBAAoB,gBAAgB,WACQ,CAAC"}
1
+ {"version":3,"file":"ruling-planets.d.ts","sourceRoot":"","sources":["../../../src/engine/astro/ruling-planets.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWlD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAmDF,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,gBAiBlD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,oBAAoB,gBAAgB,WACQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ruling-planets.js","sourceRoot":"","sources":["../../../engine/astro/ruling-planets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruling-planets.js","sourceRoot":"","sources":["../../../src/engine/astro/ruling-planets.ts"],"names":[],"mappings":"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","sourcesContent":["export const PLANET_NAME_MAP: Record<string, string> = {\n \"1\": \"ดาวอาทิตย์\",\n \"2\": \"ดาวจันทร์\",\n \"3\": \"ดาวอังคาร\",\n \"4\": \"ดาวพุธ\",\n \"5\": \"ดาวพฤหัสบดี\",\n \"6\": \"ดาวศุกร์\",\n \"7\": \"ดาวเสาร์\",\n \"8\": \"ดาวราหู\",\n \"9\": \"ดาวเกตุ\",\n \"0\": \"ดาวมฤตยู\",\n};\n\nexport type RulingPlanetInfo = {\n numbers: string[];\n names: string[];\n};\n\nconst ASCENDANT_PATTERN = /ลั/;\n\nconst isAscendantToken = (value: unknown): value is string =>\n typeof value === \"string\" && ASCENDANT_PATTERN.test(value);\n\nconst THAI_TO_ARABIC_DIGIT_MAP: Record<string, string> = {\n \"๐\": \"0\",\n \"๑\": \"1\",\n \"๒\": \"2\",\n \"๓\": \"3\",\n \"๔\": \"4\",\n \"๕\": \"5\",\n \"๖\": \"6\",\n \"๗\": \"7\",\n \"๘\": \"8\",\n \"๙\": \"9\",\n};\n\nconst normalizeDigits = (value: string): string =>\n value.replace(/[๐-๙]/g, (digit) => THAI_TO_ARABIC_DIGIT_MAP[digit] ?? digit);\n\nconst extractAscendantEntry = (chart: unknown[]): { token: string; index: number } => {\n const index = chart.findIndex(isAscendantToken);\n\n if (index === -1) {\n throw new Error(\"Unable to locate ascendant information in chart\");\n }\n\n const token = chart[index];\n\n if (typeof token !== \"string\") {\n throw new Error(\"Ascendant token is not a string\");\n }\n\n return { token, index };\n};\n\nconst extractRulingNumbers = (token: string): string[] => {\n const normalized = normalizeDigits(token);\n const matches = normalized.match(/\\d/g) ?? [];\n const uniqueNumbers = Array.from(new Set(matches));\n\n if (uniqueNumbers.length === 0) {\n throw new Error(\"No ruling planets found in ascendant token\");\n }\n\n return uniqueNumbers;\n};\n\nexport const findRulingPlanets = (chart: unknown): RulingPlanetInfo => {\n if (!Array.isArray(chart)) {\n throw new Error(\"Chart must be an array\");\n }\n\n const { token: ascendantToken } = extractAscendantEntry(chart);\n\n const numbers = extractRulingNumbers(ascendantToken);\n const names = numbers\n .map((digit) => PLANET_NAME_MAP[digit])\n .filter((name): name is string => Boolean(name));\n\n if (names.length === 0) {\n throw new Error(\"Unable to map ruling planet numbers to names\");\n }\n\n return { numbers, names };\n};\n\nexport const formatRulingPlanets = ({ names, numbers }: RulingPlanetInfo) =>\n names.map((name, index) => `${name} (${numbers[index] ?? \"?\"})`).join(\" และ \");\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"astro-calculation.d.ts","sourceRoot":"","sources":["../../engine/astro-calculation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"astro-calculation.d.ts","sourceRoot":"","sources":["../../src/engine/astro-calculation.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,eAAe,CAAA;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B;AA4YD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBlH;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOhH;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQhH;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBlH;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAsCjH;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBnH;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAsCnH;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBhH;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA0ChH;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG/G;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,MAAM,CAKR;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,MAAM,CAKR;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,CAqDR;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAkB5F;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAgEhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"astro-calculation.js","sourceRoot":"","sources":["../../engine/astro-calculation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"astro-calculation.js","sourceRoot":"","sources":["../../src/engine/astro-calculation.ts"],"names":[],"mappings":"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","sourcesContent":["// Thai Astrological Calculations - TypeScript Version\n\nexport interface PlanetPositions {\n ascendant: number\n sun: number\n moon: number\n mars: number\n mercury: number\n jupiter: number\n venus: number\n saturn: number\n rahu: number\n ketu: number\n uranus: number\n}\n\nexport interface CalculationInput {\n day: number\n monthTh: number\n yearBe?: number\n yearBc?: number\n hour: number\n minute: number\n province: string\n}\n\nexport interface CalculationResult {\n positions: PlanetPositions\n tanuseth: number\n channelOutputs: string[]\n sunPosition: [number, number] // [degrees, minutes]\n}\n\nconst ensureMonthTh = (monthTh: number): number => {\n if (!Number.isInteger(monthTh) || monthTh < 1 || monthTh > 12) {\n throw new RangeError(\"`monthTh` must be an integer between 1 and 12\")\n }\n return monthTh\n}\n\nconst ensureInteger = (value: number, label: string): number => {\n if (!Number.isFinite(value) || !Number.isInteger(value)) {\n throw new RangeError(`\\`${label}\\` must be a finite integer`)\n }\n return value\n}\n\nconst resolveYearBe = (yearBe?: number, yearBc?: number): number => {\n if (yearBe !== undefined) {\n return ensureInteger(yearBe, \"yearBe\")\n }\n\n if (yearBc !== undefined) {\n const normalizedYearBc = ensureInteger(yearBc, \"yearBc\")\n return normalizedYearBc + 543\n }\n\n throw new TypeError(\"Either `yearBe` or `yearBc` must be provided\")\n}\n\nconst QUADRANT_ADJUST_TABLE: Record<number, number> = { 0: 0, 1: 244, 2: 427, 3: 488 }\n\nconst PROVINCE_TIME_OFFSETS: Record<string, number> = {\n กระบี่: 24,\n กรุงเทพมหานคร: 18,\n กาญจนบุรี: 22,\n กาฬสินธุ์: 6,\n กำแพงเพชร: 22,\n ขอนแก่น: 9,\n จันทบุรี: 12,\n ฉะเชิงเทรา: 16,\n ชลบุรี: 16,\n ชัยนาท: 19,\n ชัยภูมิ: 12,\n ชุมพร: 23,\n เชียงราย: 21,\n เชียงใหม่: 24,\n ตรัง: 22,\n ตราด: 10,\n ตาก: 23,\n นครนายก: 15,\n นครปฐม: 20,\n นครพนม: 1,\n นครราชสีมา: 12,\n นครศรีธรรมราช: 20,\n นครสวรรค์: 20,\n นนทบุรี: 18,\n นราธิวาส: 13,\n น่าน: 17,\n บึงกาฬ: 5,\n บุรีรัมย์: 8,\n ปทุมธานี: 18,\n ประจวบคีรีขันธ์: 21,\n ปราจีนบุรี: 15,\n ปัตตานี: 15,\n พระนครศรีอยุธยา: 18,\n พะเยา: 20,\n พังงา: 26,\n พัทลุง: 20,\n พิจิตร: 19,\n พิษณุโลก: 19,\n เพชรบุรี: 20,\n เพชรบูรณ์: 15,\n แพร่: 19,\n ภูเก็ต: 27,\n มหาสารคาม: 7,\n มุกดาหาร: 1,\n แม่ฮ่องสอน: 28,\n ยโสธร: 3,\n ยะลา: 15,\n ร้อยเอ็ด: 5,\n ระนอง: 26,\n ระยอง: 15,\n ราชบุรี: 21,\n ลพบุรี: 17,\n ลำปาง: 22,\n ลำพูน: 24,\n เลย: 13,\n ศรีสะเกษ: 3,\n สกลนคร: 3,\n สงขลา: 18,\n สตูล: 20,\n สมุทรปราการ: 18,\n สมุทรสงคราม: 20,\n สมุทรสาคร: 19,\n สระแก้ว: 12,\n สระบุรี: 16,\n สิงห์บุรี: 18,\n สุโขทัย: 21,\n สุพรรณบุรี: 20,\n สุราษฎร์ธานี: 23,\n สุรินทร์: 6,\n หนองคาย: 9,\n หนองบัวลำภู: 10,\n อ่างทอง: 18,\n อำนาจเจริญ: 1,\n อุดรธานี: 9,\n อุตรดิตถ์: 20,\n อุทัยธานี: 20,\n อุบลราชธานี: 1,\n}\n\nconst SIGN_DURATIONS_MINUTES = [120.0, 96.0, 72.0, 120.0, 144.0, 168.0, 168.0, 144.0, 120.0, 72.0, 96.0, 120.0]\n\nconst SIGN_PLANETS: Record<number, string> = {\n 1: \"อาทิตย์\",\n 2: \"จันทร์\",\n 3: \"อังคาร\",\n 4: \"พุธ\",\n 5: \"พฤหัสบดี\",\n 6: \"ศุกร์\",\n 7: \"เสาร์\",\n 8: \"ราหู\",\n 9: \"เกตุ\",\n 0: \"มฤตยู\",\n}\n\nconst MAP_PLANETS: Record<number, number> = {\n 0: 3,\n 1: 6,\n 2: 4,\n 3: 2,\n 4: 1,\n 5: 4,\n 6: 6,\n 7: 3,\n 8: 5,\n 9: 7,\n 10: 8,\n 11: 5,\n}\n\nconst PLANET_SYMBOLS: Record<string, [string, number | null]> = {\n ascendant: [\"ลั\", null],\n sun: [\"๑\", 1],\n moon: [\"๒\", 2],\n mars: [\"๓\", 3],\n mercury: [\"๔\", 4],\n jupiter: [\"๕\", 5],\n venus: [\"๖\", 6],\n saturn: [\"๗\", 7],\n rahu: [\"๘\", null],\n ketu: [\"๙\", null],\n uranus: [\"๐\", null],\n}\n\ninterface SolarBaseValues {\n relativeJulianDay: number\n timeOfDayHours: number\n solarCycleBaseMinutes: number\n solarLongitudeCorrected: number\n solarLongitudeMean: number\n}\n\ninterface PlanetAdjustmentConstants {\n primaryOffsetBaseline: number\n primaryDenominatorBase: number\n secondaryScaleFactor: number\n}\n\n// Helper Functions\nfunction wrap21600(value: number): number {\n const modValue = value % 21600\n return modValue >= 0 ? modValue : modValue + 21600\n}\n\nfunction calculateBaseValues(\n monthTh: number,\n yearBe: number,\n day: number,\n hour: number,\n minute: number,\n): SolarBaseValues {\n const monthNum = ensureMonthTh(monthTh)\n const yearAd = yearBe - 543\n\n const julianYear = monthNum > 2 ? yearAd : yearAd - 1\n const julianMonth = monthNum > 2 ? monthNum + 1 : monthNum + 13\n const centuryComponent = Math.floor(julianYear * 0.01)\n const julianDayBase =\n Math.floor(julianYear * 365.25) +\n Math.floor(julianMonth * 30.6) +\n day +\n 1720997 -\n centuryComponent +\n Math.floor(centuryComponent * 0.25)\n\n let julianDayInteger: number\n let fractionalDayBase: number\n if (hour < 12) {\n julianDayInteger = julianDayBase - 1\n fractionalDayBase = hour / 24 - 0.5 + 1.5\n } else {\n julianDayInteger = julianDayBase\n fractionalDayBase = hour / 24 - 0.5\n }\n\n const fractionalDayOffset = (hour / 60 + minute) / 60 / 60 / 24\n const fractionalJulianDay = fractionalDayBase + fractionalDayOffset\n const julianDay = julianDayInteger + fractionalJulianDay\n\n const relativeJulianDay = Math.round(julianDay - 1954167.5)\n const timeOfDayHours = hour + minute / 60\n const relativeYearFrom1181 = yearBe - 1181\n\n const solarCalendarCeiling = Math.ceil((292207 * relativeYearFrom1181 + 373) / 800)\n\n const solarEquationCorrection =\n relativeYearFrom1181 * 0.25875 +\n Math.trunc(relativeYearFrom1181 / 100 + 0.38) -\n Math.trunc(relativeYearFrom1181 / 4 + 0.5) -\n Math.trunc(relativeYearFrom1181 / 400 + 0.595) -\n 5.53375\n const solarCorrectionDays = Math.trunc(solarEquationCorrection)\n const solarCorrectionHours = Math.trunc((solarEquationCorrection - solarCorrectionDays) * 24)\n const solarCorrectionMinutes = Math.trunc(\n ((solarEquationCorrection - solarCorrectionDays) * 24 - solarCorrectionHours) * 60,\n )\n\n const currentTimeMinutes = hour * 60 + minute / 60\n const solarCorrectionMinutesTotal = solarCorrectionHours * 60 + solarCorrectionMinutes / 60\n const solarCorrectionComparison = currentTimeMinutes > solarCorrectionMinutesTotal ? 1 : 2\n\n let solarCycleYear: number\n if (\n relativeJulianDay < solarCalendarCeiling ||\n (relativeJulianDay === solarCalendarCeiling && solarCorrectionComparison === 2)\n ) {\n solarCycleYear = relativeYearFrom1181 - 1\n } else {\n solarCycleYear = relativeYearFrom1181\n }\n\n const solarCyclePosition =\n ((relativeJulianDay - 1) * 800 + Math.trunc((timeOfDayHours * 800) / 24) - 373) % 292207\n const solarCycleRemainder = solarCyclePosition % 24350\n const solarCycleTurns = Math.floor(solarCyclePosition / 24350)\n const solarCycleDegrees = Math.floor(solarCycleRemainder / 811)\n const solarCycleDegreeRemainder = solarCycleRemainder % 811\n const solarCycleMinutes = Math.floor(solarCycleDegreeRemainder / 14) - 3\n const solarMeanLongitudeRaw =\n solarCycleTurns * 1800 + solarCycleDegrees * 60 + solarCycleMinutes\n\n const solarLongitudeMean = wrap21600(solarMeanLongitudeRaw)\n const solarLongitudeCorrected = wrap21600(solarLongitudeMean - 23)\n\n const solarCycleBaseOffset = solarCyclePosition >= 364 ? solarCycleYear - 610 : solarCycleYear - 611\n const solarCycleBaseMinutes = solarCycleBaseOffset * 21600 + solarLongitudeCorrected\n\n return {\n relativeJulianDay,\n timeOfDayHours,\n solarCycleBaseMinutes,\n solarLongitudeCorrected,\n solarLongitudeMean,\n }\n}\n\nfunction describeQuadrant(value: number): {\n quadrantIndex: number\n quadrantArcMinutes: number\n directionMultiplier: number\n} {\n const normalizedValue = wrap21600(value)\n const quadrantIndex = Math.floor(normalizedValue / 5400) + 1\n const directionMultiplier = [1, 2].includes(quadrantIndex) ? -1 : 1\n\n let quadrantArcMinutes: number\n if (quadrantIndex === 1) quadrantArcMinutes = normalizedValue\n else if (quadrantIndex === 2) quadrantArcMinutes = 10800 - normalizedValue\n else if (quadrantIndex === 3) quadrantArcMinutes = normalizedValue - 10800\n else quadrantArcMinutes = 21600 - normalizedValue\n\n return { quadrantIndex, quadrantArcMinutes, directionMultiplier }\n}\n\nfunction lookupQuadrantAdjustment(quadrantArcMinutes: number): number {\n const baseIndex = Math.floor(quadrantArcMinutes / 1800)\n const lowerValue = QUADRANT_ADJUST_TABLE[baseIndex % 4]\n const upperValue = QUADRANT_ADJUST_TABLE[(baseIndex + 1) % 4]\n const interpolationFactor = quadrantArcMinutes / 1800 - baseIndex\n const interpolated = interpolationFactor * (upperValue - lowerValue) + lowerValue\n return Math.round(interpolated * 60)\n}\n\nfunction getSecondaryAdjustmentParameters(value: number): {\n halfAdjustment: number\n secondaryDirection: number\n interpolatedAdjustment: number\n} {\n const normalizedValue = wrap21600(value)\n const quadrantIndex = Math.floor(normalizedValue / 5400) + 1\n\n let secondaryArcMinutes: number\n if (quadrantIndex === 1) secondaryArcMinutes = 5400 - normalizedValue\n else if (quadrantIndex === 2) secondaryArcMinutes = normalizedValue - 5400\n else if (quadrantIndex === 3) secondaryArcMinutes = 16200 - normalizedValue\n else secondaryArcMinutes = normalizedValue - 16200\n\n const baseIndex = Math.floor(secondaryArcMinutes / 1800)\n const lowerValue = QUADRANT_ADJUST_TABLE[baseIndex % 4]\n const upperValue = QUADRANT_ADJUST_TABLE[(baseIndex + 1) % 4]\n const interpolationFactor = secondaryArcMinutes / 1800 - baseIndex\n const interpolatedAdjustment = Math.round(interpolationFactor * (upperValue - lowerValue) + lowerValue + 0.5)\n const halfAdjustment = Math.floor(interpolatedAdjustment / 2)\n const secondaryDirection = [1, 4].includes(quadrantIndex) ? 1 : -1\n\n return { halfAdjustment, secondaryDirection, interpolatedAdjustment }\n}\n\nfunction applyPlanetaryAdjustments(\n initialPos: number,\n baseCalcVal: number,\n constants: PlanetAdjustmentConstants,\n): number {\n // First Adjustment Cycle\n const primaryOffset = initialPos - constants.primaryOffsetBaseline\n const { quadrantArcMinutes: primaryQuadrantArc, directionMultiplier: primaryDirection } = describeQuadrant(primaryOffset)\n const primaryTableAdjustment = lookupQuadrantAdjustment(primaryQuadrantArc)\n const {\n halfAdjustment: primaryHalfAdjustment,\n secondaryDirection: primarySecondaryDirection,\n } = getSecondaryAdjustmentParameters(wrap21600(primaryOffset))\n const primaryDenominator =\n constants.primaryDenominatorBase + primaryHalfAdjustment * primarySecondaryDirection\n const primaryAdjustment = primaryDenominator !== 0 ? Math.round((primaryTableAdjustment * 60) / primaryDenominator) : 0\n const positionAfterPrimaryAdjustment = initialPos + primaryAdjustment * primaryDirection\n\n // Second Adjustment Cycle\n const secondaryOffset = wrap21600(positionAfterPrimaryAdjustment) - baseCalcVal\n const { quadrantArcMinutes: secondaryQuadrantArc, directionMultiplier: secondaryDirection } = describeQuadrant(secondaryOffset)\n const secondaryTableAdjustment = lookupQuadrantAdjustment(secondaryQuadrantArc)\n const roundedSecondaryAdjustment = Math.round(Math.round(secondaryTableAdjustment / 60) / 3)\n const scaledPrimaryDenominator = Math.round(primaryDenominator * constants.secondaryScaleFactor)\n const secondaryNumeratorBase = roundedSecondaryAdjustment + scaledPrimaryDenominator\n const {\n secondaryDirection: interpolationDirection,\n interpolatedAdjustment: secondaryInterpolatedAdjustment,\n } = getSecondaryAdjustmentParameters(wrap21600(secondaryOffset))\n const secondaryDenominator = secondaryNumeratorBase + secondaryInterpolatedAdjustment * interpolationDirection\n const secondaryAdjustment =\n secondaryDenominator !== 0 ? Math.round((secondaryTableAdjustment * 60) / secondaryDenominator) : 0\n const finalPos = wrap21600(positionAfterPrimaryAdjustment) + secondaryAdjustment * secondaryDirection\n\n return wrap21600(finalPos)\n}\n\nfunction getSignIndex(finalPos: number): number {\n const signIndex = Math.floor(Math.trunc(finalPos / 1800))\n return signIndex === 12 ? 0 : signIndex\n}\n\nfunction calculateSunPrecisePosition(\n monthTh: number,\n yearBe: number,\n day: number,\n hour: number,\n minute: number,\n): number {\n const G_VALS_SUN: Record<number, number> = { 0: 0.0, 1: 35.0, 2: 67.0, 3: 94.0, 4: 116.0, 5: 129.0, 6: 134.0 }\n const { solarLongitudeMean } = calculateBaseValues(monthTh, yearBe, day, hour, minute)\n const meanAnomalyRaw = solarLongitudeMean - 4800\n const meanAnomaly = wrap21600(meanAnomalyRaw)\n const quadrantIndex = Math.floor(Math.trunc(meanAnomaly / 5400)) + 1\n const directionMultiplier = [1, 2].includes(quadrantIndex) ? -1 : 1\n\n let quadrantArcMinutes: number\n if (quadrantIndex === 1) quadrantArcMinutes = meanAnomaly\n else if (quadrantIndex === 2) quadrantArcMinutes = 10800 - meanAnomaly\n else if (quadrantIndex === 3) quadrantArcMinutes = meanAnomaly - 10800\n else quadrantArcMinutes = 21600 - meanAnomaly\n\n const tableIndexFloor = Math.floor(Math.trunc(quadrantArcMinutes / 900))\n const tableIndexCeil = tableIndexFloor + 1\n const tableValueFloor = G_VALS_SUN[tableIndexFloor] ?? G_VALS_SUN[6]\n const tableValueCeil = G_VALS_SUN[tableIndexCeil] ?? G_VALS_SUN[6]\n const interpolationFactor = quadrantArcMinutes / 900 - tableIndexFloor\n const quadrantAdjustment = Math.floor(\n Math.trunc(interpolationFactor * (tableValueCeil - tableValueFloor) + tableValueFloor),\n )\n const adjustedLongitude = solarLongitudeMean + quadrantAdjustment * directionMultiplier\n const preciseLongitude = wrap21600(adjustedLongitude)\n\n return preciseLongitude\n}\n\n// Planet calculation functions\nexport function calculateUranus(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const { solarCycleBaseMinutes, solarLongitudeCorrected } = calculateBaseValues(\n monthTh,\n yearBe,\n day,\n hour,\n minute,\n )\n const primaryCycleComponent = Math.floor(Math.trunc(solarCycleBaseMinutes / 84))\n const secondaryCycleComponent = Math.floor(solarCycleBaseMinutes / 7224)\n const meanLongitude = (primaryCycleComponent + secondaryCycleComponent + 16277) % 21600\n const uranusAdjustmentConstants: PlanetAdjustmentConstants = {\n primaryOffsetBaseline: 7440,\n primaryDenominatorBase: 38640,\n secondaryScaleFactor: 3 / 7,\n }\n const adjustedLongitude = applyPlanetaryAdjustments(meanLongitude, solarLongitudeCorrected, uranusAdjustmentConstants)\n return getSignIndex(adjustedLongitude)\n}\n\nexport function calculateKetu(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const { relativeJulianDay, timeOfDayHours } = calculateBaseValues(monthTh, yearBe, day, hour, minute)\n const lunarNodeCycleOffset = (relativeJulianDay - 1 - 344) % 679\n const normalizedCyclePosition = Math.trunc(((lunarNodeCycleOffset + timeOfDayHours / 24) * 21600) / 679)\n const positionWithinCycle = normalizedCyclePosition % 21600\n const finalLongitude = wrap21600(21600 - positionWithinCycle)\n return getSignIndex(finalLongitude)\n}\n\nexport function calculateRahu(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const { solarCycleBaseMinutes } = calculateBaseValues(monthTh, yearBe, day, hour, minute)\n const primaryComponent = Math.floor(solarCycleBaseMinutes / 20)\n const secondaryComponent = Math.floor(solarCycleBaseMinutes / 265)\n const meanLongitude = primaryComponent + secondaryComponent\n const wrappedLongitude = meanLongitude % 21600\n const finalLongitude = wrap21600(15150 - wrappedLongitude)\n return getSignIndex(finalLongitude)\n}\n\nexport function calculateSaturn(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const { solarCycleBaseMinutes, solarLongitudeCorrected } = calculateBaseValues(\n monthTh,\n yearBe,\n day,\n hour,\n minute,\n )\n const primaryCycleComponent = Math.floor(Math.trunc(solarCycleBaseMinutes / 30))\n const secondaryCycleComponent = Math.floor((solarCycleBaseMinutes * 6) / 10000)\n const meanLongitude = (primaryCycleComponent + secondaryCycleComponent + 11944) % 21600\n const saturnAdjustmentConstants: PlanetAdjustmentConstants = {\n primaryOffsetBaseline: 14820,\n primaryDenominatorBase: 3780,\n secondaryScaleFactor: 7 / 6,\n }\n const adjustedLongitude = applyPlanetaryAdjustments(meanLongitude, solarLongitudeCorrected, saturnAdjustmentConstants)\n return getSignIndex(adjustedLongitude)\n}\n\nexport function calculateVenus(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const { solarCycleBaseMinutes, solarLongitudeCorrected } = calculateBaseValues(\n monthTh,\n yearBe,\n day,\n hour,\n minute,\n )\n const primaryCycleComponent = Math.floor(Math.trunc((solarCycleBaseMinutes * 5) / 3))\n const secondaryCycleComponent = Math.floor((solarCycleBaseMinutes * 10) / 243)\n const venusMeanLongitude = (primaryCycleComponent - secondaryCycleComponent + 10944) % 21600\n const primaryOffset = solarLongitudeCorrected - 4800\n const { quadrantArcMinutes: primaryQuadrantArc, directionMultiplier: primaryDirection } = describeQuadrant(primaryOffset)\n const primaryTableAdjustment = lookupQuadrantAdjustment(primaryQuadrantArc)\n const {\n halfAdjustment: primaryHalfAdjustment,\n secondaryDirection: primarySecondaryDirection,\n } = getSecondaryAdjustmentParameters(wrap21600(primaryOffset))\n const primaryDenominator = 19200 + primaryHalfAdjustment * primarySecondaryDirection\n const primaryAdjustment =\n primaryDenominator !== 0 ? Math.round((primaryTableAdjustment * 60) / primaryDenominator) : 0\n const positionAfterPrimaryAdjustment = solarLongitudeCorrected + primaryAdjustment * primaryDirection\n const secondaryOffset = wrap21600(positionAfterPrimaryAdjustment) - venusMeanLongitude\n const { quadrantArcMinutes: secondaryQuadrantArc, directionMultiplier: secondaryDirection } =\n describeQuadrant(secondaryOffset)\n const secondaryTableAdjustment = lookupQuadrantAdjustment(secondaryQuadrantArc)\n const roundedSecondaryAdjustment = Math.round(Math.round(secondaryTableAdjustment / 60) / 3)\n const fixedVenusAdjustment = 60 * 11\n const secondaryNumeratorBase = roundedSecondaryAdjustment + fixedVenusAdjustment\n const {\n secondaryDirection: interpolationDirection,\n interpolatedAdjustment: secondaryInterpolatedAdjustment,\n } = getSecondaryAdjustmentParameters(wrap21600(secondaryOffset))\n const secondaryDenominator = secondaryNumeratorBase + secondaryInterpolatedAdjustment * interpolationDirection\n const secondaryAdjustment =\n secondaryDenominator !== 0 ? Math.round((secondaryTableAdjustment * 60) / secondaryDenominator) : 0\n const finalLongitude = wrap21600(positionAfterPrimaryAdjustment) + secondaryAdjustment * secondaryDirection\n return getSignIndex(wrap21600(finalLongitude))\n}\n\nexport function calculateJupiter(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const { solarCycleBaseMinutes, solarLongitudeCorrected } = calculateBaseValues(\n monthTh,\n yearBe,\n day,\n hour,\n minute,\n )\n const primaryCycleComponent = Math.floor(Math.trunc(solarCycleBaseMinutes / 12))\n const secondaryCycleComponent = Math.floor(solarCycleBaseMinutes / 1032)\n const meanLongitude = (primaryCycleComponent + secondaryCycleComponent + 14297) % 21600\n const jupiterAdjustmentConstants: PlanetAdjustmentConstants = {\n primaryOffsetBaseline: 10320,\n primaryDenominatorBase: 5520,\n secondaryScaleFactor: 3 / 7,\n }\n const adjustedLongitude = applyPlanetaryAdjustments(meanLongitude, solarLongitudeCorrected, jupiterAdjustmentConstants)\n return getSignIndex(adjustedLongitude)\n}\n\nexport function calculateMercury(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const { solarCycleBaseMinutes, solarLongitudeCorrected } = calculateBaseValues(\n monthTh,\n yearBe,\n day,\n hour,\n minute,\n )\n const primaryCycleComponent = Math.floor(Math.trunc((solarCycleBaseMinutes * 7) / 46))\n const secondaryCycleComponent = Math.floor(solarCycleBaseMinutes * 4)\n const mercuryMeanLongitude = (primaryCycleComponent + secondaryCycleComponent + 10642) % 21600\n const primaryOffset = solarLongitudeCorrected - 13200\n const { quadrantArcMinutes: primaryQuadrantArc, directionMultiplier: primaryDirection } = describeQuadrant(primaryOffset)\n const primaryTableAdjustment = lookupQuadrantAdjustment(primaryQuadrantArc)\n const {\n halfAdjustment: primaryHalfAdjustment,\n secondaryDirection: primarySecondaryDirection,\n } = getSecondaryAdjustmentParameters(wrap21600(primaryOffset))\n const primaryDenominator = 6000 + primaryHalfAdjustment * primarySecondaryDirection\n const primaryAdjustment =\n primaryDenominator !== 0 ? Math.round((primaryTableAdjustment * 60) / primaryDenominator) : 0\n const positionAfterPrimaryAdjustment = solarLongitudeCorrected + primaryAdjustment * primaryDirection\n const secondaryOffset = wrap21600(positionAfterPrimaryAdjustment) - mercuryMeanLongitude\n const { quadrantArcMinutes: secondaryQuadrantArc, directionMultiplier: secondaryDirection } =\n describeQuadrant(secondaryOffset)\n const secondaryTableAdjustment = lookupQuadrantAdjustment(secondaryQuadrantArc)\n const roundedSecondaryAdjustment = Math.round(Math.round(secondaryTableAdjustment / 60) / 3)\n const fixedMercuryAdjustment = 60 * 21\n const secondaryNumeratorBase = roundedSecondaryAdjustment + fixedMercuryAdjustment\n const {\n secondaryDirection: interpolationDirection,\n interpolatedAdjustment: secondaryInterpolatedAdjustment,\n } = getSecondaryAdjustmentParameters(wrap21600(secondaryOffset))\n const secondaryDenominator = secondaryNumeratorBase + secondaryInterpolatedAdjustment * interpolationDirection\n const secondaryAdjustment =\n secondaryDenominator !== 0 ? Math.round((secondaryTableAdjustment * 60) / secondaryDenominator) : 0\n const finalLongitude = wrap21600(positionAfterPrimaryAdjustment) + secondaryAdjustment * secondaryDirection\n return getSignIndex(wrap21600(finalLongitude))\n}\n\nexport function calculateMars(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const { solarCycleBaseMinutes, solarLongitudeCorrected } = calculateBaseValues(\n monthTh,\n yearBe,\n day,\n hour,\n minute,\n )\n const primaryCycleComponent = Math.floor(Math.trunc(solarCycleBaseMinutes / 2))\n const secondaryCycleComponent = Math.floor((solarCycleBaseMinutes * 16) / 505)\n const meanLongitude = (primaryCycleComponent + secondaryCycleComponent + 5420) % 21600\n const marsAdjustmentConstants: PlanetAdjustmentConstants = {\n primaryOffsetBaseline: 7620,\n primaryDenominatorBase: 2700,\n secondaryScaleFactor: 4 / 15,\n }\n const adjustedLongitude = applyPlanetaryAdjustments(meanLongitude, solarLongitudeCorrected, marsAdjustmentConstants)\n return getSignIndex(adjustedLongitude)\n}\n\nexport function calculateMoon(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const G_VALS_MOON: Record<number, number> = { 0: 0.0, 1: 77.0, 2: 148.0, 3: 209.0, 4: 256.0, 5: 286.0, 6: 296.0 }\n const { relativeJulianDay, timeOfDayHours, solarLongitudeMean } = calculateBaseValues(\n monthTh,\n yearBe,\n day,\n hour,\n minute,\n )\n const lunarMeanCycle =\n ((relativeJulianDay - 1) * 703 + 650 + Math.trunc((timeOfDayHours * 703) / 24)) % 20760\n const meanCycleQuotient = Math.floor(lunarMeanCycle / 692)\n const meanCycleRemainder = lunarMeanCycle % 692\n const meanLongitudeEstimate = meanCycleQuotient * 720 + Math.trunc(1.04 * meanCycleRemainder) - 40 + solarLongitudeMean\n const meanLongitude = wrap21600(meanLongitudeEstimate)\n const anomalyCycle = (relativeJulianDay - 1 - 621) % 3232\n const anomalyLongitude = Math.trunc(((anomalyCycle + timeOfDayHours / 24) / 3232) * 21600) + 2\n const anomalyLongitudeWrapped = wrap21600(anomalyLongitude)\n const longitudeDifferenceRaw = meanLongitude - anomalyLongitudeWrapped\n const longitudeDifference = wrap21600(longitudeDifferenceRaw)\n const quadrantIndex = Math.floor(Math.trunc(longitudeDifference / 5400)) + 1\n const directionMultiplier = [1, 2].includes(quadrantIndex) ? -1 : 1\n\n let quadrantArcMinutes: number\n if (quadrantIndex === 1) quadrantArcMinutes = longitudeDifference\n else if (quadrantIndex === 2) quadrantArcMinutes = 10800 - longitudeDifference\n else if (quadrantIndex === 3) quadrantArcMinutes = longitudeDifference - 10800\n else quadrantArcMinutes = 21600 - longitudeDifference\n\n const tableIndexFloor = Math.floor(Math.trunc(quadrantArcMinutes / 900))\n const tableIndexCeil = tableIndexFloor + 1\n const tableValueFloor = G_VALS_MOON[tableIndexFloor] ?? G_VALS_MOON[6]\n const tableValueCeil = G_VALS_MOON[tableIndexCeil] ?? G_VALS_MOON[6]\n const interpolationFactor = quadrantArcMinutes / 900 - tableIndexFloor\n const quadrantAdjustment = Math.floor(\n Math.trunc(interpolationFactor * (tableValueCeil - tableValueFloor) + tableValueFloor),\n )\n const adjustedLongitude = meanLongitude + quadrantAdjustment * directionMultiplier\n const wrappedLongitude = wrap21600(adjustedLongitude)\n const signIndex = Math.floor(wrappedLongitude / 1800)\n const finalSignIndex = signIndex < 12 ? signIndex : 0\n return finalSignIndex\n}\n\nexport function calculateSun(monthTh: number, yearBe: number, day: number, hour: number, minute: number): number {\n const preciseLongitude = calculateSunPrecisePosition(monthTh, yearBe, day, hour, minute)\n return getSignIndex(preciseLongitude)\n}\n\nexport function calculateSunDegrees(\n monthTh: number,\n yearBe: number,\n day: number,\n hour: number,\n minute: number,\n): number {\n const preciseLongitude = calculateSunPrecisePosition(monthTh, yearBe, day, hour, minute)\n const minutesWithinCurrentSign = preciseLongitude % 1800\n const degreesInSign = Math.trunc(minutesWithinCurrentSign / 60)\n return degreesInSign\n}\n\nexport function calculateSunMinutes(\n monthTh: number,\n yearBe: number,\n day: number,\n hour: number,\n minute: number,\n): number {\n const preciseLongitude = calculateSunPrecisePosition(monthTh, yearBe, day, hour, minute)\n const minutesWithinCurrentSign = preciseLongitude % 1800\n const minutesWithinDegree = Math.trunc(minutesWithinCurrentSign % 60)\n return minutesWithinDegree\n}\n\nexport function calculateAscendant(\n day: number,\n monthTh: number,\n yearBe: number,\n hour: number,\n minute: number,\n province: string,\n): number {\n const sunLongitude = calculateSunPrecisePosition(monthTh, yearBe, day, hour, minute)\n const sunSignIndex = Math.floor(Math.trunc(sunLongitude / 1800))\n const sunMinutesInSign = sunLongitude % 1800\n const sunDegreesWithinSign = Math.trunc(sunMinutesInSign / 60)\n const sunMinutesWithinDegree = Math.trunc(sunMinutesInSign % 60)\n const provinceSunriseOffsetMinutes = PROVINCE_TIME_OFFSETS[province] ?? 18\n const localTimeMinutes = hour * 60 + minute\n const minutesBeforeSunSign = SIGN_DURATIONS_MINUTES.slice(0, sunSignIndex).reduce(\n (sum, duration) => sum + duration,\n 0,\n )\n const sunProgressDegrees = sunDegreesWithinSign + sunMinutesWithinDegree / 60\n const sunSignDurationMinutes = SIGN_DURATIONS_MINUTES[sunSignIndex]\n const sunTraversalMinutes =\n sunSignDurationMinutes > 0 ? sunSignDurationMinutes * (sunProgressDegrees / 30) : 0\n const sunTotalProgressionMinutes = minutesBeforeSunSign + sunTraversalMinutes\n const sunriseTimeMinutes = 360 + provinceSunriseOffsetMinutes\n let elapsedSinceSunrise = (localTimeMinutes - sunriseTimeMinutes) % 1440\n if (elapsedSinceSunrise < 0) elapsedSinceSunrise += 1440\n let ascendantMinutesOfDay = (sunTotalProgressionMinutes + elapsedSinceSunrise) % 1440\n if (ascendantMinutesOfDay < 0) ascendantMinutesOfDay += 1440\n\n let ascendantSignIndex = 0\n let cumulativeMinutes = 0.0\n let degreesWithinAscendantSign = 0.0\n\n for (let signIndex = 0; signIndex < SIGN_DURATIONS_MINUTES.length; signIndex++) {\n const signDuration = SIGN_DURATIONS_MINUTES[signIndex]\n if (signDuration <= 0) continue\n\n const startOfSign = cumulativeMinutes\n const endOfSign = cumulativeMinutes + signDuration\n\n const wrapsAround = startOfSign >= endOfSign\n const isWithinSign = wrapsAround\n ? ascendantMinutesOfDay >= startOfSign || ascendantMinutesOfDay < endOfSign\n : ascendantMinutesOfDay >= startOfSign && ascendantMinutesOfDay < endOfSign\n\n if (isWithinSign) {\n ascendantSignIndex = signIndex\n let minutesIntoAscendantSign = (ascendantMinutesOfDay - startOfSign) % 1440\n if (minutesIntoAscendantSign < 0) minutesIntoAscendantSign += 1440\n degreesWithinAscendantSign = (minutesIntoAscendantSign * 30) / signDuration\n break\n }\n\n cumulativeMinutes = endOfSign % 1440\n }\n\n const ascendantLongitudeMinutes = (ascendantSignIndex * 30 + degreesWithinAscendantSign) * 60\n const ascendantSign = Math.trunc(ascendantLongitudeMinutes / 1800)\n return ascendantSign\n}\n\nexport function calculateTanuseth(positions: Record<string, number>, ascSign: number): number {\n try {\n const lord1Idx = MAP_PLANETS[ascSign]\n const lord1Name = SIGN_PLANETS[lord1Idx]\n const firstLordSign = positions[lord1Name]\n\n const lord2Idx = MAP_PLANETS[firstLordSign]\n const lord2Name = SIGN_PLANETS[lord2Idx]\n const secondLordSign = positions[lord2Name]\n\n const ascendantDistance = ((firstLordSign - ascSign) % 12) + 1\n const secondStepDistance = ((secondLordSign - firstLordSign) % 12) + 1\n\n const result = (ascendantDistance * secondStepDistance) % 7 || 7\n return result\n } catch {\n return -1\n }\n}\n\nexport function calculateAllPositions(input: CalculationInput): CalculationResult {\n const { day, monthTh, yearBe, yearBc, hour, minute, province } = input\n const normalizedYearBe = resolveYearBe(yearBe, yearBc)\n\n const positions: PlanetPositions = {\n ascendant: calculateAscendant(day, monthTh, normalizedYearBe, hour, minute, province),\n sun: calculateSun(monthTh, normalizedYearBe, day, hour, minute),\n moon: calculateMoon(monthTh, normalizedYearBe, day, hour, minute),\n mars: calculateMars(monthTh, normalizedYearBe, day, hour, minute),\n mercury: calculateMercury(monthTh, normalizedYearBe, day, hour, minute),\n jupiter: calculateJupiter(monthTh, normalizedYearBe, day, hour, minute),\n venus: calculateVenus(monthTh, normalizedYearBe, day, hour, minute),\n saturn: calculateSaturn(monthTh, normalizedYearBe, day, hour, minute),\n rahu: calculateRahu(monthTh, normalizedYearBe, day, hour, minute),\n ketu: calculateKetu(monthTh, normalizedYearBe, day, hour, minute),\n uranus: calculateUranus(monthTh, normalizedYearBe, day, hour, minute),\n }\n\n const planetPositionsForTanuseth = {\n ลัคนา: positions.ascendant,\n อาทิตย์: positions.sun,\n จันทร์: positions.moon,\n อังคาร: positions.mars,\n พุธ: positions.mercury,\n พฤหัสบดี: positions.jupiter,\n ศุกร์: positions.venus,\n เสาร์: positions.saturn,\n ราหู: positions.rahu,\n เกตุ: positions.ketu,\n มฤตยู: positions.uranus,\n }\n\n const tanuseth = calculateTanuseth(planetPositionsForTanuseth, positions.ascendant)\n const sunDeg = calculateSunDegrees(monthTh, normalizedYearBe, day, hour, minute)\n const sunMin = calculateSunMinutes(monthTh, normalizedYearBe, day, hour, minute)\n\n // Generate channel outputs\n const outputArray: string[] = new Array(13).fill(\"\")\n\n if (tanuseth !== -1) {\n for (let ch = 0; ch < 12; ch++) {\n let channelOutput = \"\"\n\n // Check each planet for this channel\n Object.entries(positions).forEach(([planetKey, position]) => {\n if (position === ch) {\n const [symbol, tanusethNum] = PLANET_SYMBOLS[planetKey]\n channelOutput += symbol\n if (tanusethNum !== null && tanuseth === tanusethNum) {\n channelOutput += \"*\"\n }\n }\n })\n\n outputArray[ch] = channelOutput\n }\n }\n\n return {\n positions,\n tanuseth,\n channelOutputs: outputArray.slice(0, 12),\n sunPosition: [sunDeg, sunMin],\n }\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import type { CalculationInput, CalculationResult } from "./engine/astro-calculation";
2
- import { type RulingPlanetInfo } from "./engine/astro/ruling-planets";
2
+ import type { RulingPlanetInfo } from "./engine/astro/ruling-planets";
3
3
  export * from "./engine/astro-calculation";
4
4
  export * from "./engine/astro/ruling-planets";
5
- export interface ThaiAstrologyChart extends CalculationResult {
6
- rulingPlanets?: RulingPlanetInfo;
7
- rulingPlanetsError?: string;
8
- }
9
5
  type ChannelNumeralSystem = "arabic" | "thai";
10
6
  export interface FormatChannelOutputsOptions {
11
7
  numerals?: ChannelNumeralSystem;
12
8
  }
13
9
  export declare const formatChannelOutputs: (chart: Pick<CalculationResult, "channelOutputs">, options?: FormatChannelOutputsOptions | ChannelNumeralSystem) => string[];
10
+ export interface ThaiAstrologyChart extends CalculationResult {
11
+ rulingPlanets?: RulingPlanetInfo;
12
+ rulingPlanetsError?: string;
13
+ }
14
14
  export declare const generateThaiAstrologyChart: (input: CalculationInput) => ThaiAstrologyChart;
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAErF,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAExF,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAE7C,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,aAAa,CAAC,EAAE,gBAAgB,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,KAAK,oBAAoB,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE7C,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,oBAAoB,CAAA;CAChC;AAkBD,eAAO,MAAM,oBAAoB,GAC/B,OAAO,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAChD,UAAS,2BAA2B,GAAG,oBAAyB,KAC/D,MAAM,EAKR,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAI,OAAO,gBAAgB,KAAG,kBAkBpE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAErF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAGrE,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAM7C,KAAK,oBAAoB,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE7C,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,oBAAoB,CAAA;CAChC;AAiBD,eAAO,MAAM,oBAAoB,GAC/B,OAAO,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EAChD,UAAS,2BAA2B,GAAG,oBAAyB,KAC/D,MAAM,EAGR,CAAA;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,aAAa,CAAC,EAAE,gBAAgB,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,eAAO,MAAM,0BAA0B,GAAI,OAAO,gBAAgB,KAAG,kBAepE,CAAA"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,kEAAkE;AAClE,kEAAwF;AAExF,6DAA0C;AAC1C,gEAA6C;AAa7C,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAC/E,MAAM,sBAAsB,GAAG,kBAAkB,CAAA;AAEjD,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAA;AAE1G,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,MAA4B,EAAU,EAAE;IAC5E,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,MAAA,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,mCAAI,KAAK,CAAA,EAAA,CAAC,CAAA;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAqC,CAAC,CAAA;QACxE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEM,MAAM,oBAAoB,GAAG,CAClC,KAAgD,EAChD,UAA8D,EAAE,EACtD,EAAE;IACZ,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAC3B,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IAE/D,OAAO,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC/F,CAAC,CAAA;AARY,QAAA,oBAAoB,wBAQhC;AAEM,MAAM,0BAA0B,GAAG,CAAC,KAAuB,EAAsB,EAAE;IACxF,MAAM,MAAM,GAAG,IAAA,yCAAqB,EAAC,KAAK,CAAC,CAAA;IAE3C,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAA,kCAAiB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QAE9D,OAAO;YACL,GAAG,MAAM;YACT,aAAa;SACd,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAA;QAE7F,OAAO;YACL,GAAG,MAAM;YACT,kBAAkB,EAAE,OAAO;SAC5B,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAlBY,QAAA,0BAA0B,8BAkBtC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,kEAAkE;AAElE,kEAAiE;AAEjE,6DAA0C;AAC1C,gEAA6C;AAE7C,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAU/E,MAAM,sBAAsB,GAAG,kBAAkB,CAAA;AAEjD,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAA;AAE1G,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,MAA4B,EAAU,EAAE;IAC5E,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,WAAC,OAAA,MAAA,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,mCAAI,KAAK,CAAA,EAAA,CAAC,CAAA;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAkB,CAAC,CAAA;QACrD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEM,MAAM,oBAAoB,GAAG,CAClC,KAAgD,EAChD,UAA8D,EAAE,EACtD,EAAE;IACZ,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IAC7F,OAAO,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC/F,CAAC,CAAA;AANY,QAAA,oBAAoB,wBAMhC;AAOM,MAAM,0BAA0B,GAAG,CAAC,KAAuB,EAAsB,EAAE;IACxF,MAAM,MAAM,GAAG,IAAA,yCAAqB,EAAC,KAAK,CAAC,CAAA;IAC3C,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAA,kCAAiB,EAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QAC9D,OAAO;YACL,GAAG,MAAM;YACT,aAAa;SACd,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAA;QAC7F,OAAO;YACL,GAAG,MAAM;YACT,kBAAkB,EAAE,OAAO;SAC5B,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AAfY,QAAA,0BAA0B,8BAetC","sourcesContent":["import type { CalculationInput, CalculationResult } from \"./engine/astro-calculation\"\nimport { calculateAllPositions } from \"./engine/astro-calculation\"\nimport type { RulingPlanetInfo } from \"./engine/astro/ruling-planets\"\nimport { findRulingPlanets } from \"./engine/astro/ruling-planets\"\n\nexport * from \"./engine/astro-calculation\"\nexport * from \"./engine/astro/ruling-planets\"\n\nconst THAI_DIGITS = [\"๐\", \"๑\", \"๒\", \"๓\", \"๔\", \"๕\", \"๖\", \"๗\", \"๘\", \"๙\"] as const\n\ntype ThaiDigit = (typeof THAI_DIGITS)[number]\n\ntype ChannelNumeralSystem = \"arabic\" | \"thai\"\n\nexport interface FormatChannelOutputsOptions {\n numerals?: ChannelNumeralSystem\n}\n\nconst CHANNEL_PREFIX_PATTERN = /^Channel\\s+\\d+:/i\n\nconst stripChannelLabel = (value: string): string => value.replace(CHANNEL_PREFIX_PATTERN, \"\").trimStart()\n\nconst convertDigits = (value: string, system: ChannelNumeralSystem): string => {\n if (system === \"thai\") {\n return value.replace(/\\d/g, (digit) => THAI_DIGITS[Number(digit)] ?? digit)\n }\n\n return value.replace(/[๐-๙]/g, (digit) => {\n const index = THAI_DIGITS.indexOf(digit as ThaiDigit)\n return index === -1 ? digit : index.toString()\n })\n}\n\nexport const formatChannelOutputs = (\n chart: Pick<CalculationResult, \"channelOutputs\">,\n options: FormatChannelOutputsOptions | ChannelNumeralSystem = {},\n): string[] => {\n const { numerals = \"arabic\" } = typeof options === \"string\" ? { numerals: options } : options\n return chart.channelOutputs.map((token) => convertDigits(stripChannelLabel(token), numerals))\n}\n\nexport interface ThaiAstrologyChart extends CalculationResult {\n rulingPlanets?: RulingPlanetInfo\n rulingPlanetsError?: string\n}\n\nexport const generateThaiAstrologyChart = (input: CalculationInput): ThaiAstrologyChart => {\n const result = calculateAllPositions(input)\n try {\n const rulingPlanets = findRulingPlanets(result.channelOutputs)\n return {\n ...result,\n rulingPlanets,\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Unable to determine ruling planets\"\n return {\n ...result,\n rulingPlanetsError: message,\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,25 +1,40 @@
1
1
  {
2
2
  "name": "thai-astrology",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Thai astrology ephemeris calculations and utilities for Node.js and TypeScript projects.",
5
5
  "license": "MIT",
6
+ "type": "commonjs",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/kongesque/thai-astrology.git"
10
+ },
11
+ "homepage": "https://github.com/kongesque/thai-astrology#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/kongesque/thai-astrology/issues"
14
+ },
6
15
  "main": "dist/index.js",
7
16
  "types": "dist/index.d.ts",
8
17
  "exports": {
9
18
  ".": {
19
+ "types": "./dist/index.d.ts",
10
20
  "require": "./dist/index.js",
11
- "import": "./dist/index.js",
12
- "types": "./dist/index.d.ts"
21
+ "import": "./dist/index.js"
13
22
  }
14
23
  },
15
24
  "files": [
16
- "dist"
25
+ "dist",
26
+ "src",
27
+ "README-th.md"
17
28
  ],
18
29
  "scripts": {
19
- "clean": "tsc --build --clean",
20
- "build": "tsc --build",
21
- "prepublishOnly": "npm run build",
22
- "test": "echo \"No tests specified\" && exit 0"
30
+ "clean": "node scripts/clean.cjs",
31
+ "build": "npm run clean && tsc -p tsconfig.json",
32
+ "typecheck": "tsc -p tsconfig.json --noEmit",
33
+ "test": "npm run build && node test/run.cjs",
34
+ "test:package": "node scripts/test-package.cjs",
35
+ "check": "npm run typecheck && npm test && npm run test:package",
36
+ "prepare": "npm run build",
37
+ "prepublishOnly": "npm run check"
23
38
  },
24
39
  "keywords": [
25
40
  "thai",
@@ -0,0 +1,88 @@
1
+ export const PLANET_NAME_MAP: Record<string, string> = {
2
+ "1": "ดาวอาทิตย์",
3
+ "2": "ดาวจันทร์",
4
+ "3": "ดาวอังคาร",
5
+ "4": "ดาวพุธ",
6
+ "5": "ดาวพฤหัสบดี",
7
+ "6": "ดาวศุกร์",
8
+ "7": "ดาวเสาร์",
9
+ "8": "ดาวราหู",
10
+ "9": "ดาวเกตุ",
11
+ "0": "ดาวมฤตยู",
12
+ };
13
+
14
+ export type RulingPlanetInfo = {
15
+ numbers: string[];
16
+ names: string[];
17
+ };
18
+
19
+ const ASCENDANT_PATTERN = /ลั/;
20
+
21
+ const isAscendantToken = (value: unknown): value is string =>
22
+ typeof value === "string" && ASCENDANT_PATTERN.test(value);
23
+
24
+ const THAI_TO_ARABIC_DIGIT_MAP: Record<string, string> = {
25
+ "๐": "0",
26
+ "๑": "1",
27
+ "๒": "2",
28
+ "๓": "3",
29
+ "๔": "4",
30
+ "๕": "5",
31
+ "๖": "6",
32
+ "๗": "7",
33
+ "๘": "8",
34
+ "๙": "9",
35
+ };
36
+
37
+ const normalizeDigits = (value: string): string =>
38
+ value.replace(/[๐-๙]/g, (digit) => THAI_TO_ARABIC_DIGIT_MAP[digit] ?? digit);
39
+
40
+ const extractAscendantEntry = (chart: unknown[]): { token: string; index: number } => {
41
+ const index = chart.findIndex(isAscendantToken);
42
+
43
+ if (index === -1) {
44
+ throw new Error("Unable to locate ascendant information in chart");
45
+ }
46
+
47
+ const token = chart[index];
48
+
49
+ if (typeof token !== "string") {
50
+ throw new Error("Ascendant token is not a string");
51
+ }
52
+
53
+ return { token, index };
54
+ };
55
+
56
+ const extractRulingNumbers = (token: string): string[] => {
57
+ const normalized = normalizeDigits(token);
58
+ const matches = normalized.match(/\d/g) ?? [];
59
+ const uniqueNumbers = Array.from(new Set(matches));
60
+
61
+ if (uniqueNumbers.length === 0) {
62
+ throw new Error("No ruling planets found in ascendant token");
63
+ }
64
+
65
+ return uniqueNumbers;
66
+ };
67
+
68
+ export const findRulingPlanets = (chart: unknown): RulingPlanetInfo => {
69
+ if (!Array.isArray(chart)) {
70
+ throw new Error("Chart must be an array");
71
+ }
72
+
73
+ const { token: ascendantToken } = extractAscendantEntry(chart);
74
+
75
+ const numbers = extractRulingNumbers(ascendantToken);
76
+ const names = numbers
77
+ .map((digit) => PLANET_NAME_MAP[digit])
78
+ .filter((name): name is string => Boolean(name));
79
+
80
+ if (names.length === 0) {
81
+ throw new Error("Unable to map ruling planet numbers to names");
82
+ }
83
+
84
+ return { numbers, names };
85
+ };
86
+
87
+ export const formatRulingPlanets = ({ names, numbers }: RulingPlanetInfo) =>
88
+ names.map((name, index) => `${name} (${numbers[index] ?? "?"})`).join(" และ ");