thai-astrology 0.1.6 → 0.1.8
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 +91 -0
- package/README.md +41 -5
- package/dist/engine/astro/ruling-planets.d.ts.map +1 -1
- package/dist/engine/astro/ruling-planets.js.map +1 -1
- package/dist/engine/astro-calculation.d.ts.map +1 -1
- package/dist/engine/astro-calculation.js +319 -314
- package/dist/engine/astro-calculation.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +23 -8
- package/src/engine/astro/ruling-planets.ts +88 -0
- package/src/engine/astro-calculation.ts +828 -0
- package/src/index.ts +62 -0
- package/dist/tsconfig.tsbuildinfo +0 -1
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 ดูคำสั่งและขั้นตอนการเผยแพร่เพิ่มเติมได้ใน [CONTRIBUTING.md](CONTRIBUTING.md) ซึ่งเป็นเอกสารภาษาอังกฤษ
|
|
88
|
+
|
|
89
|
+
## สัญญาอนุญาต
|
|
90
|
+
|
|
91
|
+
MIT © ผู้ร่วมพัฒนา
|
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Thai Astrology
|
|
2
2
|
|
|
3
|
-
|
|
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, //
|
|
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
|
-
|
|
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` –
|
|
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. See [CONTRIBUTING.md](CONTRIBUTING.md) for commands and release steps.
|
|
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":"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;
|
|
1
|
+
{"version":3,"file":"astro-calculation.d.ts","sourceRoot":"","sources":["../../src/engine/astro-calculation.ts"],"names":[],"mappings":"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"}
|