moon-sighting/README.md
2026-05-30 18:37:17 -04:00

65 lines
2.3 KiB
Markdown

# moon-sighting
[![npm version](https://img.shields.io/npm/v/moon-sighting.svg)](https://www.npmjs.com/package/moon-sighting)
[![CI](https://github.com/acamarata/moon-sighting/actions/workflows/ci.yml/badge.svg)](https://github.com/acamarata/moon-sighting/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
High-accuracy lunar crescent visibility and moon sighting calculations for Node.js and browsers. Uses the JPL DE442S ephemeris with full IERS Earth orientation for sub-arcsecond topocentric Moon and Sun positions. Implements the Yallop (NAO TN 69) and Odeh (Experimental Astronomy 2006) criteria.
## Installation
```bash
npm install moon-sighting
```
Then download the JPL kernel (31 MB, one-time):
```bash
npx moon-sighting download-kernels
```
## Quick Start
```ts
import { initKernels, getMoonSightingReport } from 'moon-sighting'
await initKernels()
const report = await getMoonSightingReport(new Date('2025-03-29'), {
lat: 51.5074, lon: -0.1278, elevation: 10
})
console.log(report.yallop.category) // 'A' — easily visible to the naked eye
console.log(report.odeh.zone) // 'A' — visible with naked eye
console.log(report.guidance)
```
Five functions work without any kernel (Meeus approximation, ~0.3° accuracy):
```ts
import { getMoonPhase, getMoonPosition, getMoonIllumination,
getMoonVisibilityEstimate, getMoon } from 'moon-sighting'
const phase = getMoonPhase()
console.log(phase.phaseName) // 'Waxing Crescent'
console.log(phase.illumination) // 14.3 (percent)
```
## Documentation
Full documentation on the [GitHub Wiki](https://github.com/acamarata/moon-sighting/wiki):
- [Getting Started](https://github.com/acamarata/moon-sighting/wiki/Getting-Started)
- [API Reference](https://github.com/acamarata/moon-sighting/wiki/API-Reference)
- [Architecture](https://github.com/acamarata/moon-sighting/wiki/Architecture)
- [Crescent Visibility Criteria](https://github.com/acamarata/moon-sighting/wiki/Crescent-Visibility)
- [Ephemeris and Kernel Setup](https://github.com/acamarata/moon-sighting/wiki/Ephemeris)
## Related
- [nrel-spa](https://github.com/acamarata/nrel-spa): Pure JS solar position algorithm
- [pray-calc](https://github.com/acamarata/pray-calc): Islamic prayer times with dynamic angle algorithm
## License
MIT. See [LICENSE](LICENSE).