mirror of
https://github.com/acamarata/moment-hijri-plus.git
synced 2026-07-04 20:50:41 +00:00
- Flatten exports map to ADR-015 standard - Add coverage script (c8) - Migrate CI to corepack enable
46 lines
2 KiB
Markdown
46 lines
2 KiB
Markdown
# moment-hijri-plus — PRI (Per-Repo Instructions)
|
|
|
|
**PPI:** `~/Sites/acamarata/.claude/CLAUDE.md`
|
|
|
|
## What This Is
|
|
|
|
Moment.js plugin for Hijri calendar conversion and formatting. Delegates all calendar
|
|
logic to hijri-core, a zero-dependency Hijri engine with pluggable calendar support.
|
|
Supports Umm al-Qura and FCNA/ISNA calendars. Installed via a function call rather than
|
|
`moment.extend()` — call `installHijri(moment)` once at startup.
|
|
|
|
**npm:** `moment-hijri-plus@1.0.0`
|
|
**Language:** TypeScript
|
|
**License:** MIT
|
|
|
|
## Key Technical Details
|
|
|
|
- Peer dependencies: `moment@^2.0.0`, `hijri-core@^1.0.0`
|
|
- Plugin pattern: `installHijri(moment)` called once at startup (not moment.fn.extend)
|
|
- Instance methods added: `toHijri()`, `hijriYear()`, `hijriMonth()`, `hijriDay()`, `isValidHijri()`, `formatHijri()`
|
|
- Static factory added: `moment.fromHijri(hy, hm, hd, options?)`
|
|
- `formatHijri()` Hijri tokens: `iD`, `iMMMM`, `iYYYY`, `iM`, `iDD`, `iMM` — non-Hijri tokens pass through to moment.format()
|
|
- Out-of-range inputs return `null` (instance methods) or empty string (formatHijri)
|
|
- `fromHijri()` throws if the date is invalid or out of range
|
|
- Dual CJS/ESM build via tsup
|
|
- Zero runtime dependencies (peer deps are provided by the consumer)
|
|
|
|
## Architecture
|
|
|
|
`src/index.ts` exports the default `installHijri` function and shared types. Built to
|
|
`dist/` (gitignored) with `.cjs` and `.mjs` outputs plus dual type declarations.
|
|
|
|
## 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 is a plugin for Moment.js — call `installHijri(moment)` once before using any methods
|
|
- hijri-core provides the actual calendar engine — this package is a thin adapter
|
|
- Changes to hijri-core's API may require updates here
|
|
- moment is a peer dep — the consumer's installed moment instance is used (no bundled copy)
|
|
- Moment.js is in maintenance mode; this package targets existing moment users, not new projects
|