# Changelog

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

## v7.0.0

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.1.1...v7.0.0)

Developed in [#52](https://github.com/quran-center/quran-meta/pull/52) ([777a9df](https://github.com/quran-center/quran-meta/commit/777a9df)). See "Upgrading from v6" in the README.

### ⚠️ Breaking Changes

- The package is ESM-only and ships `dist/` only: `lib_cjs/`, `lib_es/`, `src/` and `types/` are no longer published and the `require` export condition is gone. On Node 22.12+ `require("quran-meta")` still works through Node's `require(esm)`. For CommonJS on older Node versions, stay on [`quran-meta@6`](https://www.npmjs.com/package/quran-meta/v/6.1.1) (6.1.1), which has a CommonJS build of its main entry.
- Node 22 or newer is required (was 20).
- The IIFE bundle is now `dist/quran-meta.iife.js` (minified, exposes `window.quranMeta`) and is what unpkg and jsDelivr serve. The separate per-entry minified builds are gone.
- In the root functional API, `ayah` is now a required argument of `findJuz`, `findJuzMetaBySurah`, `findManzil`, `findPage`, `findRubAlHizb` and `findThumunAlHizb`. It used to default to 1 before the `lists` argument. Riwaya entry points and `QuranRiwaya` keep the default.
- `quran-meta/qalun` exports `QalunLists` instead of `riwayaLists`, like every other entry now does.
- `QuranRiwaya` thumun al-hizb methods exist only on Qalun instances at the type level and no longer include `null` in their return types.
- `ayahStringSplitter` checks both ends of a range against the surah: `"2:280-290"` now throws a `RangeError`. The range end used to be validated as a global ayah id.
- `languages` (and the `Lang` type) gained Arabic and ten more languages, so code that builds a `SurahNamesI18n` object needs entries for them.
- The root entry exports only the English and Arabic surah names (`surahNamesEn`, `surahNamesAr`) and `getSurahName`. The other languages, `surahNames`, `getSurahNames`, `languages` and the `Lang` and `SurahNamesI18n` types moved to `quran-meta/i18n`. For a classic `<script>`, they are in the new `dist/quran-meta-i18n.iife.js`, which exposes `window.quranMetaI18n`.

### 🚀 Enhancements

- Riwaya conversion: `convertAyah` and `convertAyahSpan` map an ayah between the numbering of any two riwayas. Riwaya entries add `convertAyahTo` and `convertAyahSpanTo`, where the source riwaya is implied. The table is generated by aligning each riwaya's text with Hafs (KFQC data, quranpedia for Bazzi and Qunbul) and is checked against every riwaya's surah ayah counts.
- Iterating over a part: `getPartRange`, `ayahsInPart`, `ayahsInPage` and `ayahsInJuz`.
- `formatSurahAyah` and `formatAyahId`, the inverse of `ayahStringSplitter`.
- `customizeRiwaya` replaces lists of a built-in riwaya (for example a different page layout) and recalculates `meta`. `validateRiwayaData` checks a riwaya's lists.
- `nextAyah` and `prevAyah` accept `{ wrap: false }` to return `undefined` at the start and end of the Quran instead of wrapping around.
- Surah names in 22 languages. New are Arabic (`surahNamesAr`) and, from the Quran.com API, Bengali, Chinese, Dutch, Indonesian, Italian, Malay, Malayalam, Spanish, Swedish and Urdu. `examples/data-check/generate-surah-names.ts` generates the Quran.com languages and, with `--check`, compares them with the API.
- `getSurahName(surah, names)` returns one surah's name from a names table (`surahNamesEn` by default) and falls back to English. Only the tables you import are bundled.
- New `quran-meta/i18n/async` entry with `getSurahNamesAsync`, which loads each language as its own chunk, and `languages`. It was not exported in v6.
- Every riwaya entry exports a ready-made `quran` instance and its Lists object (`HafsLists`, `WarshLists`, ...). The Qalun entry also exports `HizbEighthList`.
- The root entry also exports `getSurahInfo`, `checkValidSurahAyahPair` and the thumun al-hizb functions (`findThumunAlHizb`, `getThumunAlHizbMeta`, ...).
- `QuranRiwaya` gains ayah iterators, `formatAyahId` and the validators it was missing.
- Every `package.json` subpath export declares `types` and `default`.
- `findPageByAyahId` and `SurahJuzMeta.leftJuz` are spelled like the rest of the API. The old `findPagebyAyahId` and `leftjuz` still work and are marked deprecated.

### 🔥 Performance

- All entries come from one multi-entry build with shared chunks, so importing two riwayas no longer bundles the API twice.
- Riwayas from the same qari share identical lists: Qunbul reuses Bazzi's, Sousi reuses Douri's, Shuba reuses Hafs's (all but `PageList`) and Qalun reuses Warsh's `SurahList`, `ManzilList` and `PageList`.
- The main entry and the IIFE carry only the English and Arabic surah names, so the IIFE is 25 kB gzip. The other languages are bundled only when you import them.

### 🩹 Fixes

- Riwaya entry wrappers lost the `asserts` and type-guard signatures of `checkValid*` and `isValid*`. Entries are now generated from one template (`scripts/generate-entries.ts`) with explicit signatures.
- `findPage` typed `ayah` as `AyahId` instead of `AyahNo`.
- Stale docs: `quran` export examples, the `'quran-meta/Qalun'` import path, the class description and thumun al-hizb doc comments.
- data-check: JSON imports with the wrong case (Shuba, Warsh) failed on Linux. Added Bazzi/Qunbul sibling checks.
- Trailing spaces in 99 Azerbaijani surah name translations and one Turkish one (`"Kadr "`).
- Surah 42's Arabic name was spelled "الشُّوري" in every riwaya's `SurahList` and in `surahNamesAr`. It is now "الشُّورى", as in the mushaf, the newer KFQC data and quranpedia. The data checks accept the old spelling that the KFQC v2 dumps still use.
- `findJuzMetaBySurah` documented `rightAyahId` as the last ayah of `rightJuz`. It is the first ayah after it, and every `SurahJuzMeta` field is now documented.

### 📚 Documentation

- Rewrote the README: quick start, a guide per feature, supported riwayas table and upgrade notes.
- TypeDoc output is grouped by category and built, with a demo landing page, for GitHub Pages. The generated `docs/` folder is no longer committed.
- A surah table page on the site, linked from the landing page, the README and the API reference ([28d988e](https://github.com/quran-center/quran-meta/commit/28d988e)).

### 🏡 Chore

- Lint with oxlint only (ESLint and typescript-eslint removed), oxfmt with LF line endings, strict TypeScript with `isolatedDeclarations`, and type-checked tests.
- CI checks formatting, lint, types and generated files, runs tests on Node 22 and 24, and builds with size budgets, publint and attw. Actions are pinned to commit SHAs.
- Update dev dependencies. TypeScript stays on 6.x ([a5dd4a4](https://github.com/quran-center/quran-meta/commit/a5dd4a4), [777a9df](https://github.com/quran-center/quran-meta/commit/777a9df))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.1.1

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.17...v6.1.1)

Stable release of the 6.1.1-0 to 6.1.1-6 prereleases below, published from the `v6` branch. It is the last release with a CommonJS build (`require("quran-meta")`, main entry only) and what `npm i quran-meta@6` installs.

### 🏡 Chore

- Pin TypeScript to 6.x so TypeDoc builds, and sync the lockfile ([b5776f1](https://github.com/quran-center/quran-meta/commit/b5776f1))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.1.1-6

[compare changes](https://github.com/quran-center/quran-meta/compare/682fa9d...d7b6eb5)

_Not published to npm._

### 🩹 Fixes

- Corrected return types: `QuranRiwaya.surahStringParser` returns `Surah` (was typed `Page | number`), and `isAyahJuzFirst`, `isAyahPageFirst`, `isSurahAyahJuzFirst` and `isSurahAyahPageFirst` return `number` ([cbfb46b](https://github.com/quran-center/quran-meta/commit/cbfb46b))

### 🏡 Chore

- Lint fixes across src, tests and examples. Simplified oxlint config ([cbfb46b](https://github.com/quran-center/quran-meta/commit/cbfb46b))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.1.1-5

[compare changes](https://github.com/quran-center/quran-meta/compare/f9a418b...682fa9d)

Published to npm under the `rc` tag. It includes everything since v6.0.17.

### 🚀 Enhancements

- The root entry exports `partNames`, `maxAyahsInSurah`, `numRubsInJuz` and `numSurahs`, and the types `PartType` (again), `PartBlock`, `RiwayaData`, `RiwayaFullData`, `RiwayaName`, `RiwayasNames`, `Riwayas`, `AllListsNames`, `MissingListsPerRiwaya`, `ThumunAlHizb`, `ThumunAlHizbId`, `ThumunAlHizbMeta`, `NumericRange`, `FixedArray`, `ArrayOfSameLength`, `GrowToSize` and `LessThan` ([7d9aa6e](https://github.com/quran-center/quran-meta/commit/7d9aa6e))

### 📚 Documentation

- TSDoc fixes and regenerated API docs ([7d9aa6e](https://github.com/quran-center/quran-meta/commit/7d9aa6e))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.1.1-4

[compare changes](https://github.com/quran-center/quran-meta/compare/e7877ce...f9a418b)

_Not published to npm._ No changes.

## v6.1.1-3

[compare changes](https://github.com/quran-center/quran-meta/compare/23dc740...e7877ce)

_Not published to npm._

### 📚 Documentation

- TSDoc comment fixes ([c453601](https://github.com/quran-center/quran-meta/commit/c453601))

### 🏡 Chore

- Pin TypeScript to 6.x, since TypeScript 7 breaks the TypeDoc build ([c453601](https://github.com/quran-center/quran-meta/commit/c453601))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.1.1-2

[compare changes](https://github.com/quran-center/quran-meta/compare/b3bf5c4...23dc740)

_Not published to npm._

### 🩹 Fixes

- `getList` and `getListNormalised`: replace type casts with runtime checks when formatting part blocks ([c1cd926](https://github.com/quran-center/quran-meta/commit/c1cd926))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.1.1-1

[compare changes](https://github.com/quran-center/quran-meta/compare/321e5de...b3bf5c4)

_Not published to npm._

### 🚀 Enhancements

- Five new riwayat, 8 in total ([a06bd59](https://github.com/quran-center/quran-meta/commit/a06bd59)):
  - **Shuba** (from 'Asim): 6236 ayahs
  - **Douri** (from Abu 'Amr): 6217 ayahs
  - **Sousi** (from Abu 'Amr): 6217 ayahs
  - **Bazzi** (from Ibn Kathir): 6221 ayahs
  - **Qunbul** (from Ibn Kathir): 6221 ayahs
- Entry points `quran-meta/shuba`, `quran-meta/douri`, `quran-meta/sousi`, `quran-meta/bazzi` and `quran-meta/qunbul`, with the same API as the Hafs and Warsh entries.
- `createShuba()`, `createDouri()`, `createSousi()`, `createBazzi()` and `createQunbul()` on the root entry. `getListsOfRiwaya` accepts the new names.
- A single riwaya list generator (`examples/data-check/generate-riwayah-lists.ts`) built on quranpedia and KFQC data, plus KFQC checks for Douri, Sousi and Shuba.
- Tests for the entry points and for consistency across riwaya lists.

### 🩹 Fixes

- Qalun `SurahList` end marker was off by one (6216, now 6215) ([a06bd59](https://github.com/quran-center/quran-meta/commit/a06bd59))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.1.1-0

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.17...321e5de)

_Not published to npm._

### ⚠️ Breaking Changes

- `engines.node` raised from `>=18` to `>=20` ([321e5de](https://github.com/quran-center/quran-meta/commit/321e5de))

### 🚀 Enhancements

- `isValidHizb` and `isValidRubAlHizb` on the root entry and every riwaya entry. The Qalun entry also gets `isValidManzil` ([4468def](https://github.com/quran-center/quran-meta/commit/4468def))
- The root entry exports `meta` (Hafs) again ([4468def](https://github.com/quran-center/quran-meta/commit/4468def))
- The root `exports` entry declares `types` and a `require` condition (`lib_cjs/index.cjs`) ([4468def](https://github.com/quran-center/quran-meta/commit/4468def))

### 🩹 Fixes

- Regenerated Warsh data from source: corrected `SurahList`, `JuzList`, `HizbQuarterList` and `RukuList`, and removed the thumun al-hizb list that had been copied from Qalun. `numThumunAlHizbs` is now `0` for Warsh; thumun al-hizb is Qalun-only ([dff1b13](https://github.com/quran-center/quran-meta/commit/dff1b13))
- `isValidPage` narrows its input to `Page`. It used to narrow to `Juz` ([4468def](https://github.com/quran-center/quran-meta/commit/4468def))
- `oxfmt` was a runtime dependency since v6.0.9. It is now a dev dependency ([4468def](https://github.com/quran-center/quran-meta/commit/4468def))

### 🏡 Chore

- Removed the one-off Warsh generator script and the old Shuba KFQC check ([cb9a653](https://github.com/quran-center/quran-meta/commit/cb9a653))
- Added a CI workflow ([4468def](https://github.com/quran-center/quran-meta/commit/4468def)) and a `verify:lists` script ([321e5de](https://github.com/quran-center/quran-meta/commit/321e5de))
- `package.json` already declared the `bazzi`, `douri`, `qunbul`, `shuba` and `sousi` subpaths, which were implemented in v6.1.1-1 ([321e5de](https://github.com/quran-center/quran-meta/commit/321e5de))
- Update deps ([e5192a9](https://github.com/quran-center/quran-meta/commit/e5192a9), [f2bf746](https://github.com/quran-center/quran-meta/commit/f2bf746), [a8620d6](https://github.com/quran-center/quran-meta/commit/a8620d6))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.17

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.16...v6.0.17)

No changes. It includes everything up to v6.0.14 and was the `latest` release on npm until v6.1.1.

## v6.0.16

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.15...v6.0.16)

_Not published to npm._ No changes.

## v6.0.15

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.14...v6.0.15)

_Not published to npm._ No changes.

## v6.0.14

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.13...v6.0.14)

_Not published to npm._

### 📚 Documentation

- `surahStringParser` doc comment and regenerated API docs ([3bbeb11](https://github.com/quran-center/quran-meta/commit/3bbeb11))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.13

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.12...v6.0.13)

_Not published to npm._

### 🚀 Enhancements

- New `SurahAyahPos` type (`{ surah, ayah }`). `AyahMeta` extends it, and `AyahMeta.ruku` is typed as `Ruku` instead of `number` ([58dc856](https://github.com/quran-center/quran-meta/commit/58dc856))

### 🏡 Chore

- Formatting fixes ([4e7b7be](https://github.com/quran-center/quran-meta/commit/4e7b7be), [f9b7a30](https://github.com/quran-center/quran-meta/commit/f9b7a30))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.12

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.11...v6.0.12)

### 🚀 Enhancements

- French (`fr`), Kazakh (`kk`), Lithuanian (`lt`), Tajik (`tg`), Kyrgyz (`ky`) and Bosnian (`bs`) surah names ([11f34db](https://github.com/quran-center/quran-meta/commit/11f34db), [b5535b3](https://github.com/quran-center/quran-meta/commit/b5535b3))
- `quran-meta/i18n` exports each new language's names on their own (`surahNamesUz`, `surahNamesFr`, ...) ([11f34db](https://github.com/quran-center/quran-meta/commit/11f34db), [b5535b3](https://github.com/quran-center/quran-meta/commit/b5535b3))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.11

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.10...v6.0.11)

### 🚀 Enhancements

- Uzbek surah names (`uz`) ([fed450a](https://github.com/quran-center/quran-meta/commit/fed450a))
- `quran-meta/i18n` exports `languages` ([fed450a](https://github.com/quran-center/quran-meta/commit/fed450a))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.10

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.9...v6.0.10)

No changes.

## v6.0.9

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.8...v6.0.9)

_Not published to npm._

### 🩹 Fixes

- Riwaya entries: `surahStringParser(str, isStrict?)` uses the core parser and returns a validated surah number. It used to return an unvalidated `{ surah, ayah }` object. `isValidAyahNo`, `string2NumberSplitter` and `getRubAlHizb` are re-exported from the core instead of being duplicated, and `string2NumberSplitterStrict` is added ([e040eef](https://github.com/quran-center/quran-meta/commit/e040eef))

### 📚 Documentation

- README: riwaya usage, VisualQuran link, more terminology ([3711e9e](https://github.com/quran-center/quran-meta/commit/3711e9e), [a2fd75d](https://github.com/quran-center/quran-meta/commit/a2fd75d), [d91264f](https://github.com/quran-center/quran-meta/commit/d91264f), [acb41ec](https://github.com/quran-center/quran-meta/commit/acb41ec), [30219a2](https://github.com/quran-center/quran-meta/commit/30219a2))

### 🏡 Chore

- Replace ESLint Stylistic with oxfmt and reformat the codebase ([8b444af](https://github.com/quran-center/quran-meta/commit/8b444af), [2ffccc2](https://github.com/quran-center/quran-meta/commit/2ffccc2), [73d9de8](https://github.com/quran-center/quran-meta/commit/73d9de8)). This added `oxfmt` as a runtime dependency by mistake. It became a dev dependency in v6.1.1-0.
- Update deps ([fc9aeff](https://github.com/quran-center/quran-meta/commit/fc9aeff))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.8

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.7...v6.0.8)

### 🚀 Enhancements

- Riwaya entries export the `checkValid*` assertion functions bound to their riwaya: `checkValidSurah`, `checkValidSurahAyah`, `checkValidSurahAyahPair`, `checkValidAyahId`, `checkValidPage`, `checkValidJuz`, `checkValidRuku` and `checkValidManzil` ([4d34be2](https://github.com/quran-center/quran-meta/commit/4d34be2))

### 🩹 Fixes

- Add the missing `isValidManzil` export to the Hafs and Warsh entries ([8dac892](https://github.com/quran-center/quran-meta/commit/8dac892))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.7

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.6...v6.0.7)

No changes.

## v6.0.6

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.5...v6.0.6)

### ⚠️ Breaking Changes

- Removed the `Sajda` and `SajdaType` types ([3510395](https://github.com/quran-center/quran-meta/commit/3510395))

### 🚀 Enhancements

- `getListNormalised(type, lists)` returns part blocks (`{ startAyahId, ayahCount }`), like v5's `getList`. It is also available on the riwaya entries as `getListNormalised(type)` and on `QuranRiwaya`, which gains `getList` too ([3510395](https://github.com/quran-center/quran-meta/commit/3510395))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.5

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.4...v6.0.5)

### ⚠️ Breaking Changes

- `getList` takes a part name (`"surah"`, `"juz"`, `"rubAlHizb"`, `"thumunAlHizb"`, `"page"`, `"manzil"` or `"ruku"`) instead of a list name such as `"JuzList"` ([0e6a002](https://github.com/quran-center/quran-meta/commit/0e6a002))
- `PartType` is no longer exported from the root entry. Riwaya entries still export it ([0e6a002](https://github.com/quran-center/quran-meta/commit/0e6a002))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.4

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.3...v6.0.4)

### 🩹 Fixes

- Better `getList` typing. The Qalun entry exports its data as `riwayaLists` ([4db7027](https://github.com/quran-center/quran-meta/commit/4db7027))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.3

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.2...v6.0.3)

_Not published to npm._ No changes.

## v6.0.2

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.1...v6.0.2)

_Not published to npm._

### 🚀 Enhancements

- `getList` is back and returns a riwaya's raw list: `getList(listName, lists)` on the root entry, `getList(listName)` on riwaya entries ([3b40cc9](https://github.com/quran-center/quran-meta/commit/3b40cc9))
- The root entry exports `getListsOfRiwaya(riwaya)` and `getListOfRiwaya(listName, riwaya?)` ([3b40cc9](https://github.com/quran-center/quran-meta/commit/3b40cc9))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.1

[compare changes](https://github.com/quran-center/quran-meta/compare/v6.0.0...v6.0.1)

### 🩹 Fixes

- Fix file name casing (`HafsLists.ts`, `getAyahCountInSurah.ts`) so the source builds on case-sensitive file systems ([993d996](https://github.com/quran-center/quran-meta/commit/993d996), [ea79052](https://github.com/quran-center/quran-meta/commit/ea79052))

### 🏡 Chore

- Update deps ([f3a1685](https://github.com/quran-center/quran-meta/commit/f3a1685))

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v6.0.0

[compare changes](https://github.com/quran-center/quran-meta/compare/v5.1.1-1...v6.0.0)

Multi-riwaya support, from [#37](https://github.com/quran-center/quran-meta/pull/37) ([7089f57](https://github.com/quran-center/quran-meta/commit/7089f57)). Pre-releases `6.0.0-alpha.2`, `-alpha.5` and `-alpha.6` were published to npm before it.

### ⚠️ Breaking Changes

- Every function in the root functional API takes the riwaya data as its last argument, for example `findJuz(surah, ayah, lists)`. To keep the v5 call style, import pre-bound functions from a riwaya entry point:

  ```ts
  // v5
  import { findJuz, getAyahMeta } from "quran-meta"
  // v6
  import { findJuz, getAyahMeta, meta } from "quran-meta/hafs"
  ```

- Removed from the root entry: `meta`, `getList`, `partNames` and the list arrays (`SurahList`, `JuzList`, `PageList`, `HizbQuarterList`, `ManzilList`, `RukuList`, `SajdaList`). Riwaya entries export their own `meta` and lists. `getList` came back in v6.0.2, and root `meta` in v6.1.1-0.
- v5's `getList(type)`, which returned part blocks, is now `generatePartBlocks(type, lists)`. It returns `null` when the riwaya has no such list.

### 🚀 Enhancements

- Data for three riwayas: Hafs (6236 ayahs), Qalun (6214) and Warsh (6214). Each has its own `meta` with `riwayaName` and its counts. Where Warsh-specific data was missing, Qalun data was used; this was corrected in v6.1.1-0.
- Tree-shakeable entry points `quran-meta/hafs`, `quran-meta/qalun` and `quran-meta/warsh`. Each exports its `meta`, its list arrays and the whole API bound to that riwaya, so a bundle only contains the data of the riwaya it imports.
- `QuranRiwaya` class: `QuranRiwaya.create(lists)` returns an instance with the whole API as methods. The root entry exports `createHafs()`, `createQalun()`, `createWarsh()` and `quran`, a ready-made Hafs instance.
- Thumun al-hizb (eighths of a hizb) for Qalun: `findThumunAlHizb`, `findThumunAlHizbByAyahId`, `getThumunAlHizb`, `getThumunAlHizbByAyahId`, `getThumunAlHizbMeta` and `getThumunAlHizbMetaByAyahId` on the Qalun entry and `QuranRiwaya`.
- Per-riwaya data checks against KFQC data and a generator script for riwaya lists (`examples/data-check`).

### 🏡 Chore

- ESLint and oxlint rules for `import type` and merged imports.

### ❤️ Contributors

- Abdou ([@3aluw](https://github.com/3aluw))
- HG ([@husayt](https://github.com/husayt))

## v5.1.1-0

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.1.0...v5.1.1-0)

### 🚀 Enhancements

- Update examples and docs (ea299e3)
- Add more data checks from KFQC texts (8122191)
- Update surah names from KFQC Hafs and add checks (50ff0fc)

### 🏡 Chore

- Add oxlint formatter (498da67)
- Update dependencies (1da02aa)
- Update unit tests (d0b0fb8)
- Update deps (5fdb194)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v5.1.0

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.4...v5.1.0)

### 🚀 Enhancements

- Update build configs (ec78d2e)
- Add missing tests (48be1d8)

### 🏡 Chore

- Update docs (522be6b)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v5.0.4

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.4-7...v5.0.4)

## v5.0.4-7

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.4-6...v5.0.4-7)

## v5.0.4-6

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.4-5...v5.0.4-6)

## v5.0.4-5

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.4-4...v5.0.4-5)

## v5.0.4-4

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.4-3...v5.0.4-4)

## v5.0.4-3

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.4-2...v5.0.4-3)

## v5.0.4-2

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.4-1...v5.0.4-2)

## v5.0.4-1

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.4-0...v5.0.4-1)

### 🚀 Enhancements

- Better language support (c64f8d0)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v5.0.4-0

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.3...v5.0.4-0)

### 🚀 Enhancements

- Better language support (6cdf68f)

### 🏡 Chore

- Update deps (8a733b7)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v5.0.3

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.2...v5.0.3)

## v5.0.2

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v5.0.1...v5.0.2)

## v5.0.1

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4...v5.0.1)

## v4.0.4

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-17...v4.0.4)

## v4.0.4-17

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-16...v4.0.4-17)

## v4.0.4-16

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-15...v4.0.4-16)

### 🏡 Chore

- Rollback (787130b)
- **release:** V4.0.4-14 (18cb082)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.4-14

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-15...v4.0.4-14)

### 🏡 Chore

- Rollback (787130b)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.4-15

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-14...v4.0.4-15)

## v4.0.4-14

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-13...v4.0.4-14)

### 🚀 Enhancements

- Export Manzilmeta (6063bf4)

### 🏡 Chore

- Update deps (b424f59)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.4-13

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-12...v4.0.4-13)

### 🚀 Enhancements

- Rename SurahMeta to SurahInfo (breaking change) (21303f7)
- Add updated SurahMeta (01ce7d5)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.4-12

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-11...v4.0.4-12)

### 🚀 Enhancements

- Add manzil related methods (b874885)

### 🏡 Chore

- Improve data checks (11a5c20)
- Improve docs (31999dc)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.4-11

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-10...v4.0.4-11)

### 🚀 Enhancements

- Add getRubAlHizb and getRubAlHizbByAyahId methods (4803bf6)
- Updated getRubAlHizbMeta and getRubAlHizbMetabyAyahId (793df2c)
- Exposed findJuzAndShift, findJuzAndShiftByAyahId, getJuzMeta, getRubAlHizb, getRubAlHizbByAyahId (dec4ac4)

### 🩹 Fixes

- Expose missing types (d5986c9)

### 🏡 Chore

- Update and fix tests (5d72db3)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.4-10

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-9...v4.0.4-10)

### 🚀 Enhancements

- Add getRukuMeta (45569fd)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.4-9

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-8...v4.0.4-9)

## v4.0.4-8

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.4-7...v4.0.4-8)

### 🚀 Enhancements

- Add ruku validation (a678af0)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.4-7

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.3...v4.0.4-7)

### 🚀 Enhancements

- Add findRukuByAyahId (b89a77d)
- Add rukus to meta (0845054)
- Added getAyahMetasForSurah (a696010)

### 🏡 Chore

- Some cleanup and optimization (9fa71df)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.3

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v4.0.2...v4.0.3)

### 🏡 Chore

- Remove isValidAyahCountBetweenJuzSurah function for now (382d938)

### ❤️ Contributors

- HG ([@husayt](https://github.com/husayt))

## v4.0.1

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v3.2.1...v4.0.1)

**Breaking changes in this version**

We apologize for any inconvenience caused by the recent breaking changes. These updates were essential to ensure safer and more error-free development in the future. The primary reasons for these changes include:

- Enhancing type safety to prevent errors.
- Providing clear and predictable behavior.

By leveraging TypeScript and proper type usage, many issues can be identified early, saving users from encountering hard-to-find errors later on.

- Number of functions have been renamed to be consistent
- `findSurahByAyahId` renamed to `findSurahAyahByAyahId` and new `findSurahAyahByAyahId` is different
- check for other changes

### 🚀 Enhancements

- Add new Surah String Parser `surahStringParser` (6620546)
- Added `string2NumberSplitter` and `string2NumberSplitterStrict`
- Added strict mode to `ayahStringSplitter`
- Updated `findRubAlHizb` (872b479)
- Better type guards (472366e)
- Added type guards for Hizb and RubAlhizb
- Add more guards and `getJuzMeta` function (1a6bbe2)
- Major update better types and many fixes (b556bc9)

### 🏡 Chore

- 100% Test coverage again (254d6fd)
- Updated dependencies (7240e2b)
- Update API docs (742b364)
- Improve tests (5fa2345)
- Add missing methods (d1e5712)
- Updated docs (8cf8fe4)
- Add more checks (4a3640a)
- Fix docs (e953d37)
- Fix tests (15f22bd)
- Fix docs (85dc3a8)

### ❤️ Contributors

- HG ([@husayt](http://github.com/husayt))

## v3.2.1

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v3.2.0...v3.2.1)

### 🚀 Enhancements

- Update dependencies (642c2e0)

### 🏡 Chore

- Update dependencies (ede0cbf)

### ❤️ Contributors

- HG ([@husayt](http://github.com/husayt))

## v3.2.0

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v3.1.0...v3.2.0)

### 🚀 Enhancements

- Update dependencies (be0d65b)
- Add getList Method (5f17784)

### 🏡 Chore

- Update Readme (7a542ed)

### ❤️ Contributors

- HG ([@husayt](http://github.com/husayt))

## v3.1.0

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v3.0.1...v3.1.0)

### 🚀 Enhancements

- Add turkish and Azerbaijani surahNames (7d17ce2)

### 🏡 Chore

- More test cases (9d32a28)

### ❤️ Contributors

- HG ([@husayt](http://github.com/husayt))

## v3.0.1

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v3.0.1-9...v3.0.1)

## v3.0.1-beta

This version is a complete rewrite of the project. Functionality has been greatly extended, most of the functions have been renamed and new ones have been added.

Full unit test coverage has been achieved. Furthermore, in order to guarantee absolute data correctness framework for Cross-Checking against other apis has been added.

### 🚀 Enhancements

- Rename sura to surah in exported names (74df866)
- Add meta rukuCount (b41dfe9)
- Add validation and cross check against other apis (0c333d7)
- Added getAyahMeta feat: rename pageMeta to getPageMeta (2cd63ae)

### 🏡 Chore

- Naming standartization (7ce5fb0)
- Rename getAyahCountinSurah (9280eed)
- Make internal ayaIds consistent (27b4504)
- Meta Count tests (4f24f2e)
- Cleanup (13581d1)
- Update dependencies (679a362)
- Update documentation (07829bb)

### ❤️ Contributors

- HG ([@husayt](http://github.com/husayt))

## v2.5.9

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v2.5.8...v2.5.9)

## v2.5.8

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v2.5.7...v2.5.8)

## v2.5.7

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v2.5.6...v2.5.7)

## v2.5.6

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v2.5.5...v2.5.6)

## v2.5.5

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v2.5.4...v2.5.5)

## v2.5.4

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v2.5.4-0...v2.5.4)

## v2.5.4-0

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v2.5.3...v2.5.4-0)

### 🏡 Chore

- Various fixes (63e51ef)

### ❤️ Contributors

- HG ([@husayt](http://github.com/husayt))

## v2.5.3

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v2.5.2...v2.5.3)

## v2.5.2

[compare changes](https://git+https@github.com/quran-center/quran-meta/compare/v2.4.15...v2.5.2)

### 🚀 Enhancements

- Switch from jest to vitest (1b37cff)
- Full rewrite of the project with latest eslint and typescript
- Impove tsdoc (7ff9baa)
- Better eslint (53fa239)
- Standard buid process using unbuild (2ab032e)
- Full cleanup and addition of changelogen (457e5c9)

### 🩹 Fixes

- Add full unit test coverage (42d17c0)

### 🏡 Chore

- Update deps (fc4baee)

### ❤️ Contributors

- HG ([@husayt](http://github.com/husayt))

### [2.4.15](https://github.com/quran-center/quran-meta/compare/v2.4.13...v2.4.15) (2022-11-13)

### [2.4.13](https://github.com/quran-center/quran-meta/compare/v2.4.12...v2.4.13) (2022-11-13)

### [2.4.12](https://github.com/quran-center/quran-meta/compare/v2.4.11...v2.4.12) (2022-02-09)

### [2.4.11](https://github.com/quran-center/quran-meta/compare/v2.4.9...v2.4.11) (2022-02-09)

### [2.4.9](https://github.com/quran-center/quran-meta/compare/v2.4.8...v2.4.9) (2022-02-09)

### [2.4.8](https://github.com/quran-center/quran-meta/compare/v2.4.6...v2.4.8) (2022-02-09)

### [2.4.6](https://github.com/quran-center/quran-meta/compare/v2.4.5...v2.4.6) (2022-02-09)

### [2.4.5](https://github.com/quran-center/quran-meta/compare/v2.4.3...v2.4.5) (2022-02-09)

### [2.4.3](https://github.com/quran-center/quran-meta/compare/v2.4.2...v2.4.3) (2021-05-26)

### [2.4.2](https://github.com/quran-center/quran-meta/compare/v2.3.2...v2.4.2) (2021-05-21)

### [2.3.2](https://github.com/quran-center/quran-meta/compare/v2.2.4...v2.3.2) (2021-05-21)

### [2.2.4](https://github.com/quran-center/quran-meta/compare/v2.2.3...v2.2.4) (2021-05-20)

### [2.2.3](https://github.com/quran-center/quran-meta/compare/v2.2.2...v2.2.3) (2021-05-19)

### [2.2.2](https://github.com/quran-center/quran-meta/compare/v2.1.3...v2.2.2) (2021-05-11)

### [2.1.3](https://github.com/quran-center/quran-meta/compare/v2.1.2...v2.1.3) (2020-12-24)

### [2.1.2](https://github.com/quran-center/quran-meta/compare/v2.0.1...v2.1.2) (2020-10-23)

### [2.0.1](https://github.com/quran-center/quran-meta/compare/v1.1.3...v2.0.1) (2020-10-22)

### [1.1.3](https://github.com/quran-center/quran-meta/compare/v1.1.1...v1.1.3) (2020-10-21)

### [1.1.1](https://github.com/quran-center/quran-meta/compare/v1.0.13...v1.1.1) (2020-10-21)

### [1.0.13](https://github.com/quran-center/quran-meta/compare/v1.0.12...v1.0.13) (2020-04-23)

### [1.0.12](https://github.com/quran-center/quran-meta/compare/v1.0.11...v1.0.12) (2020-04-20)

### [1.0.11](https://github.com/quran-center/quran-meta/compare/v1.0.9...v1.0.11) (2020-04-17)

### [1.0.9](https://github.com/quran-center/quran-meta/compare/v1.0.8...v1.0.9) (2020-04-17)

### [1.0.8](https://github.com/quran-center/quran-meta/compare/v1.0.7...v1.0.8) (2020-04-17)

### [1.0.7](https://github.com/quran-center/quran-meta/compare/v1.0.6...v1.0.7) (2020-04-17)

### [1.0.6](https://github.com/quran-center/quran-meta/compare/v1.0.5...v1.0.6) (2020-04-16)

### [1.0.5](https://github.com/quran-center/quran-meta/compare/v1.0.4...v1.0.5) (2020-04-16)

### [1.0.4](https://github.com/quran-center/quran-meta/compare/v1.0.3...v1.0.4) (2020-04-16)

### [1.0.3](https://github.com/quran-center/quran-meta/compare/v1.0.2...v1.0.3) (2020-04-14)

### [1.0.2](https://github.com/quran-center/quran-meta/compare/v1.0.1...v1.0.2) (2020-04-12)

### 1.0.1 (2020-04-12)
