Commit graph

30 commits

Author SHA1 Message Date
Aric Camarata
1c9f3cde70 build: use prepack hook so npm pack/publish reliably emit index.d.mts 2026-06-13 10:30:53 -04:00
Aric Camarata
6f165b79ad ci: fix eslint parser devDeps, typed linting config, prettier formatting
- Add @typescript-eslint/parser and @typescript-eslint/eslint-plugin as
  direct devDependencies (were only transitive, not linked in node_modules)
- Add files pattern and parserOptions.project to eslint.config.mjs so
  ESLint finds and type-checks src/**/*.ts files correctly
- Run prettier --write to fix formatting across all src files
2026-05-31 08:47:17 -04:00
Aric Camarata
429c176a5e chore: bump to v2.1.2
Add dist/index.d.mts to published package; enforce explicit files field.
2026-05-30 19:12:15 -04:00
Aric Camarata
4227afc2c3 docs: add TypeDoc API generation (typedoc@0.28.19 + typedoc-plugin-markdown@4.11.0)
Add typedoc and typedoc-plugin-markdown as devDependencies. Add typedoc.json config
targeting src/index.ts with markdown output to .github/wiki/api. Add docs script to
package.json. Generate initial API reference pages.

Part of T-E8-03 — TypeDoc automation for all 12 JS/TS packages.
2026-05-30 16:41:58 -04:00
Aric Camarata
af34aef986 chore: remove .npmignore, add c8 coverage, fix ci.yml (T-E5-03)
- Remove .npmignore (violation: npm-package-standard requires files field in
  package.json, not .npmignore; files field was already present and correct)
- Add c8@^10.1.3 to devDependencies for native V8 coverage (ADR-008)
- Fix coverage script: was 'node --test' (missing test.mjs), now correct
- Replace lint job in ci.yml with coverage job per ci-standard.md four-job
  pattern (test/typecheck/pack-check/coverage); lint+format remain as local
  scripts invocable manually

npm pack --dry-run: zero warnings, 11 files, expected contents verified.
Tests: 119 ESM + 15 CJS = 134 pass, 0 fail.
2026-05-30 15:40:23 -04:00
Aric Camarata
fbb2fa9179 chore: adopt shared config packages (tsconfig, eslint, prettier) 2026-05-30 15:06:05 -04:00
Aric Camarata
5b5466d8ad ci: corepack before setup-node, scope prettier to src/, emit d.mts 2026-05-29 20:05:26 -04:00
Aric Camarata
cbe283aaf8 chore: bump to v2.1.1
- Flatten exports map to ADR-015 standard
- Add coverage script (c8)
- Migrate CI to corepack enable
2026-05-28 13:54:55 -04:00
Aric Camarata
4534b41957 feat: add getMidnight and Midnight field to prayer times output
Computes the midpoint of the night (Maghrib to Fajr), commonly used as
the Isha prayer endpoint. Also works with sunrise as the second anchor
for the astronomical variant.

Closes #1
2026-03-22 09:22:59 -04:00
Aric Camarata
8f39fcd82e refactor: code quality improvements across the board
- Extract magic numbers into named constants (DHUHR_OFFSET_MINUTES,
  ANGLE_MIN/MAX, LAT_SCALE) with source citations for MCW coefficients
- Add input validation (RangeError) for lat, lng, tz, elevation on all
  public API functions (getTimes, getTimesAll)
- Optimize solar ephemeris: computeAngles() returns declination so
  getTimes/getTimesAll reuse it for Asr instead of computing twice
- DRY: shared constants.ts for DEG, Dhuhr offset, angle bounds
- Improve MethodEntry type with labeled tuple elements and NaN docs
- Add stricter tsconfig (noImplicitReturns, noFallthroughCasesInSwitch)
- Switch tests to node:test framework (TAP output, describe/it blocks)
- Add 8 new input validation tests (104 ESM + 13 CJS total)
- Add ESLint + Prettier with CI lint job
- Remove src/ from npm package files (smaller published tarball)
- Document NaN return behavior in JSDoc for getTimes/getTimesAll
2026-03-08 11:10:22 -04:00
Aric Camarata
c02f197ece v2.0.0 — TypeScript rewrite, dual ESM/CJS, 14 methods + PCD dynamic algorithm
Complete rewrite from plain JavaScript to TypeScript with dual CJS/ESM output
via tsup. Removes all legacy .js source files and the old CommonJS-only index.

Key changes:
- Full TypeScript source in src/ with strict mode and declaration maps
- tsup build: dist/index.cjs + dist/index.mjs + dual .d.ts / .d.mts types
- 14 traditional fixed-angle methods (UOIF through MUIS) + MSC seasonal method
- PCD dynamic algorithm: MSC seasonal base + Earth-Sun distance correction +
  ecliptic geometry + atmospheric refraction + observer elevation
- getTimesAll() batches all 14x2 zenith angles into a single SPA call
- getMscFajr() / getMscIsha() expose MSC seasonal reference directly
- getAngles() returns the PCD-computed fajrAngle and ishaAngle
- High-latitude bounds: angles clipped to [10, 20] above 55N
- 106 tests across ESM and CJS (test.mjs + test-cjs.cjs)
- CI matrix: Node 20/22/24, typecheck, pack-check
- Wiki: 12 reference pages + 6-page research section with global accuracy study,
  home-territory comparison, observational evidence, and field observation matrix
- Moon functions removed (migrated to moon-sighting package)
- pnpm-only, Node >=20, sideEffects: false
2026-02-25 18:11:20 -05:00
f020a844f0 Added tests 2025-05-14 15:15:32 -04:00
2f9155b567 Update to readme and meta 2025-05-14 15:12:52 -04:00
01e7e3487a Update test case 2025-05-04 12:07:45 -04:00
b7684851c0 Updated package and research 2025-05-04 12:05:39 -04:00
269cb3bb11 Update packaging for 1.6.2 2025-05-04 09:38:05 -04:00
925b83b407 Package fix for 1.6.1 2025-05-04 09:35:16 -04:00
6950f5a291 Fixes for 1.6.1 2025-05-04 09:34:00 -04:00
b5ee3ca8b8 feat: improve Asr solver, dynamic twilight angles, and MSC algorithm 2025-05-04 08:59:31 -04:00
uny-dev
eb68c97b42 Updated package.json repository field for NPM 2025-03-18 06:14:01 -04:00
4403cb224c Added MSC Method 2024-06-21 20:14:18 -04:00
aaf15ee624 moon visibility for start and end 2023-12-01 16:41:57 +07:00
0cb2267da6 updated to "pray-calc" and synodic accuracy 2023-11-14 12:25:53 +07:00
d7c449ece7 update index.d.ts 2023-11-13 22:39:50 +07:00
6380403cf7 add phase name and symbol 2023-11-13 22:24:17 +07:00
c1814c2783 added getMoon functions 2023-11-13 21:34:55 +07:00
bb49fc63fe update version 2023-11-13 09:16:32 +07:00
b867162ace updated for timezone handling and asr calc 2023-11-13 08:51:34 +07:00
f64a968a48 added info for npm publish 2023-11-12 11:28:20 +07:00
cf8aa20577 initial commit 2023-11-12 11:19:56 +07:00