Commit graph

13 commits

Author SHA1 Message Date
Hanzalah Ravat
e80505ef8d
Merge ed221cfd40 into e8b0afd119 2026-04-02 22:07:30 +01:00
Hanzalah Ravat
ed221cfd40 test(spk): cover kernel-backed London sighting report 2026-04-02 21:59:26 +01:00
Hanzalah Ravat
65d2def00a fix(spk): correct de442s parsing and state chaining 2026-04-02 21:59:22 +01:00
Aric Camarata
e8b0afd119 Add GitHub Sponsors funding config 2026-03-28 18:18:53 -04:00
Aric Camarata
b032fb596f style: fix prettier table formatting in wiki 2026-03-08 17:30:54 -04:00
Aric Camarata
0bf9e6eb16 style: replace em dashes with colons in docs and wiki 2026-03-08 17:28:03 -04:00
Aric Camarata
5ebfe45a4d docs: fix Quick Start heading casing; ci: add CHANGELOG/LICENSE to pack-check 2026-03-08 17:10:34 -04:00
Aric Camarata
789c5e47c3 fix: test script uses && between ESM and CJS runs 2026-03-08 16:37:58 -04:00
Aric Camarata
8bf34fb696 refactor: code quality improvements and fix arcvMinimum constant
Fix critical bug: arcvMinimum polynomial constant was 7.1651 (wrong)
instead of 11.8371 (Odeh 2006) in getMoonVisibilityEstimate. Now
imports the canonical arcvMinimum() from visibility module.

Deduplicate shared code across modules:
- arcvMinimum polynomial: single source in visibility/index.ts
- dot/norm vector helpers: use vdot/vnorm from math/index.ts
- DEG constant: use DEG2RAD from math/index.ts
- jdToJSDate: use jdToDate from time/index.ts

Add input validation to all public API functions (lat/lon range,
valid Date instances). Add ESLint + Prettier with TypeScript support.
Convert tests to node:test runner. Fix package.json exports to use
nested types-first format. Pin devDependencies to caret ranges.
Add noImplicitReturns and noFallthroughCasesInSwitch to tsconfig.
Replace .markdownlint.json with .vscode/settings.json. Update CI
workflow with lint job. Expand .gitignore coverage.
2026-03-08 11:39:28 -04:00
Aric Camarata
3b666c6465 v1.1.0: kernel-free moon position, illumination, visibility, and convenience API
Adds five new kernel-free functions using Meeus Ch. 47/48 approximations,
replacing suncalc as the moon data source in the acamarata stack.

- getMoonPosition(date, lat, lon, elevation?) — topocentric az/alt/distance +
  parallactic angle via WGS84 geodetic model and Bennett refraction
- getMoonIllumination(date) — illumination fraction, phase cycle position,
  bright limb angle, isWaxing via Meeus Ch. 47/48
- getMoonPhase: adds phaseName ("Waxing Crescent") and phaseSymbol ("🌒")
  fields to MoonPhaseResult
- getMoonVisibilityEstimate(date, lat, lon, elevation?) — kernel-free Odeh
  V-parameter crescent visibility estimate; returns zone A-D, V, ARCL, ARCV, W
- getMoon(date, lat, lon, elevation?) — convenience wrapper combining all four
  kernel-free functions into a single MoonSnapshot result

New types: MoonPosition, MoonIlluminationResult, MoonVisibilityEstimate, MoonSnapshot
98 tests (78 ESM + 20 CJS), typecheck clean, zero build warnings
2026-02-25 16:41:03 -05:00
Aric Camarata
2ed1a7188a Fix bin path prefix (npm pkg fix) 2026-02-25 16:00:23 -05:00
Aric Camarata
3712b78590 Rename package: moon-calc → moon-sighting
npm rejected moon-calc as too similar to mooncalc. Renamed to
moon-sighting across all source files, docs, wiki, CLI help text,
cache directory paths, and GitHub URLs.
2026-02-25 15:59:38 -05:00
Aric Camarata
b46ba2a74c Initial release: moon-calc v1.0.0
High-accuracy lunar crescent visibility using JPL DE442S ephemerides.
Implements Yallop q-test and Odeh V-parameter with all five crescent
geometry quantities (ARCL, ARCV, DAZ, W, lag). Full time scale chain
(UTC → TDB), IERS Q·R·W frame transforms, WGS84 observer model,
Bennett refraction, and kernel-free moon phase via Meeus approximation.
2026-02-25 15:45:41 -05:00