mirror of
https://github.com/acamarata/luxon-hijri.git
synced 2026-06-30 18:54:28 +00:00
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.
75 lines
1.7 KiB
JSON
75 lines
1.7 KiB
JSON
{
|
|
"name": "luxon-hijri",
|
|
"version": "2.0.0",
|
|
"description": "Hijri/Gregorian date conversion and formatting using the Umm al-Qura calendar. Built on Luxon. Supports toHijri, toGregorian, formatHijriDate, and isValidHijriDate.",
|
|
"author": "Aric Camarata",
|
|
"license": "MIT",
|
|
"main": "./dist/index.cjs",
|
|
"module": "./dist/index.mjs",
|
|
"types": "./dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"import": {
|
|
"types": "./dist/index.d.mts",
|
|
"default": "./dist/index.mjs"
|
|
},
|
|
"require": {
|
|
"types": "./dist/index.d.ts",
|
|
"default": "./dist/index.cjs"
|
|
}
|
|
}
|
|
},
|
|
"sideEffects": false,
|
|
"files": [
|
|
"dist/index.cjs",
|
|
"dist/index.mjs",
|
|
"dist/index.d.ts",
|
|
"dist/index.d.mts",
|
|
"README.md",
|
|
"CHANGELOG.md",
|
|
"LICENSE"
|
|
],
|
|
"engines": {
|
|
"node": ">=20"
|
|
},
|
|
"scripts": {
|
|
"build": "tsup",
|
|
"typecheck": "tsc --noEmit",
|
|
"pretest": "tsup",
|
|
"test": "node test.mjs && node test-cjs.cjs",
|
|
"prepublishOnly": "tsup"
|
|
},
|
|
"keywords": [
|
|
"hijri",
|
|
"gregorian",
|
|
"calendar",
|
|
"converter",
|
|
"luxon",
|
|
"umm-al-qura",
|
|
"islamic",
|
|
"date",
|
|
"format",
|
|
"typescript"
|
|
],
|
|
"dependencies": {
|
|
"luxon": "^3.5.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/luxon": "^3.4.2",
|
|
"@types/node": "^22.0.0",
|
|
"tsup": "^8.0.0",
|
|
"typescript": "^5.5.0"
|
|
},
|
|
"publishConfig": {
|
|
"access": "public",
|
|
"registry": "https://registry.npmjs.org/"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/acamarata/luxon-hijri.git"
|
|
},
|
|
"homepage": "https://github.com/acamarata/luxon-hijri#readme",
|
|
"bugs": {
|
|
"url": "https://github.com/acamarata/luxon-hijri/issues"
|
|
}
|
|
}
|