Commit graph

11 commits

Author SHA1 Message Date
Aric Camarata
fd246b7a99 chore: ADR-007 peer-dep migration to luxon v3, CHANGELOG update (v3.0.0 BREAKING) 2026-05-28 13:46:05 -04:00
Aric Camarata
cc620328a0 refactor: code quality improvements across the board 2026-03-08 11:42:29 -04:00
Aric Camarata
20dc36541b feat: v2.1.0 - delegate engine to hijri-core
Extract conversion logic to hijri-core. All Hijri algorithms now
live in that package and are re-exported with identical signatures.
Fix weekday, era, and time token bugs. Dual CJS/ESM build. Full
test suite. CI and wiki workflows. Zero breaking API changes.
2026-02-25 15:26:28 -05:00
Aric Camarata
30afd3c8a7 feat: v2.1.0 — delegate engine logic to hijri-core
All Hijri conversion logic (UAQ table, FCNA algorithm, month/weekday
names, isValidHijriDate) now lives in hijri-core and is re-exported
from this package with identical signatures. Zero breaking changes:
the public API surface, type exports, and behavior are unchanged.

src/fcna.ts removed — FCNA engine is in hijri-core.
src/hDates.ts, hMonths.ts, hWeekdays.ts, utils.ts, toHijri.ts,
toGregorian.ts all rewritten as thin re-exports or single-line wrappers.

hijri-core added as a runtime dependency.
2026-02-25 14:14:29 -05:00
Aric Camarata
8b734dd777 ci: pin pnpm via packageManager field, drop hardcoded version
pnpm/action-setup@v4 with version:10 resolved to pnpm@10.30.2, which
returned 403 from npm registry on release day. Switch to reading the
version from the packageManager field in package.json so CI uses the
same exact pnpm version as local development.
2026-02-25 14:00:19 -05:00
Aric Camarata
1ab6463184 feat: v2.0.0 — FCNA calendar, dual ESM/CJS build, weekday bug fix, full test suite
Core fixes:
- Fix critical weekday bug: iE/iEEE/iEEEE tokens used Hijri year as Gregorian,
  returning weekdays ~580 years wrong. Now converts via toGregorian() first.
- Fix era tokens iooo/ioooo: were returning Gregorian era, now always return "AH".
- Fix toGregorian timezone sensitivity: was using DateTime.local(), now DateTime.utc().
- Fix format token regex: word-boundary approach caused partial matches.

New: FCNA/ISNA calendar support:
- toHijri, toGregorian, isValidHijriDate now accept { calendar: 'fcna' } option.
- FCNA criterion: conjunction before 12:00 UTC → month starts D+1, else D+2.
- New moon times from Meeus Ch.49 full formula (accurate to within minutes, 1000–3000 CE).
- Works for all Hijri years, not just the 1318–1500 UAQ table range.
- Anchor: UAQ table for in-range years, Islamic epoch estimate for out-of-range.
- Exports: CalendarSystem, ConversionOptions types.

Build and infrastructure:
- pnpm replaces npm; tsup replaces tsc for dual CJS/ESM output.
- Exports map with types-first conditional exports for import/require.
- Binary search O(log 183) replaces linear O(n) scan in all three functions.
- Luxon upgraded from ^2.5.2 to ^3.5.0; TypeScript from ^4 to ^5.5.
- CI: Node 20/22/24 matrix, typecheck, and pack-check jobs.
- GitHub Wiki: four pages synced via Actions on push.
- Test suite: 81 ESM tests + 24 CJS tests, verified against ISNA 2023–2025 calendars.
- Exports hwLong, hwShort, hwNumeric weekday arrays.

Breaking changes:
- Dual ESM/CJS exports map (CJS consumers: no change via main field).
- HijriYearRecord replaces hDates interface name.
- Luxon peer dep bumped to ^3.5.0.
- Node >=20 required.
2026-02-25 13:25:11 -05:00
uny-dev
4530b3208a Add prepare script and files field to include build artifacts 2025-03-19 09:29:04 -04:00
uny-dev
64b0c14d7e Updated package.json repository field for NPM 2025-03-18 06:13:39 -04:00
82668e6b6b fixed for build 2023-12-01 22:53:29 +07:00
f3203d2d2b added types declarations 2023-12-01 22:41:48 +07:00
612aa63a78 initial commit 2023-12-01 22:10:54 +07:00