temporal-hijri/.claude/AGENTS.md
Aric Camarata 908e48f9f7 chore: bump to v1.0.1
- Flatten exports map to ADR-015 standard
- Add coverage script (c8)
- Migrate CI to corepack enable
2026-05-28 13:55:03 -04:00

2 KiB

temporal-hijri — PRI (Per-Repo Instructions)

PPI: ~/Sites/acamarata/.claude/CLAUDE.md

What This Is

Temporal Calendar Protocol implementation for the Hijri calendar. Works with the TC39 Temporal proposal and @js-temporal/polyfill. Provides UaqCalendar (Umm al-Qura) and FcnaCalendar (FCNA/ISNA) as plug-in calendars for Temporal.PlainDate and related types. The underlying conversion logic comes from hijri-core.

npm: temporal-hijri@1.0.0 Language: TypeScript License: MIT

Key Technical Details

  • Peer dependencies: hijri-core@^1.0.0, @js-temporal/polyfill@^0.4.0 (optional)
  • @js-temporal/polyfill is optional — works with native Temporal when available in the runtime
  • Key exports: uaqCalendar (singleton), fcnaCalendar (singleton), UaqCalendar class, FcnaCalendar class
  • Calendar protocol methods: year(), month(), day(), monthCode(), inLeapYear(), dateFromFields(), dateAdd()
  • UAQ data covers 1318-1500 AH (Gregorian 1900-2076)
  • Dual CJS/ESM build via tsup
  • Zero runtime dependencies (peer deps are provided by the consumer)

Architecture

src/index.ts exports calendar singletons and classes. Built to dist/ (gitignored) with .cjs and .mjs outputs plus dual type declarations. No format string parsing — the Temporal API handles all date arithmetic and formatting natively.

Commands

  • pnpm install — install dev deps
  • pnpm build — tsup build
  • pnpm test — run test.mjs + test-cjs.cjs
  • pnpm run typecheck — tsc --noEmit

Important Notes

  • This implements the Temporal Calendar Protocol — it is not a general-purpose Hijri utility
  • hijri-core provides the actual calendar engine — this package is a thin Temporal protocol adapter
  • Changes to hijri-core's API may require updates here
  • @js-temporal/polyfill is optional — only needed in environments without native Temporal support
  • TC39 Temporal proposal is Stage 3 — API may shift; track spec changes carefully