UNPKG

quran-meta

Version:

Library with meta data and functionality related to Holy Quran

162 lines (103 loc) 3.36 kB
const require_const = require('./const.cjs'); const require_getAyahCountInSurah = require('./getAyahCountInSurah.cjs'); //#region src/typeGuards.ts /** * Checks if the given value is a valid AyahId. * * @param x - The value to check. * @returns True if the value is a valid AyahId, otherwise false. */ function isValidAyahId(x) { return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numAyahs; } /** * Checks if the given value is a valid Ayah number. * * @param x - The value to check. * @returns True if the value is a valid Ayah number, otherwise false. */ function isValidAyahNo(x) { return Number.isInteger(x) && 1 <= x && x <= require_const.maxAyahsInSurah; } /** * Checks if the given value is a valid Surah number. * * @param x - The value to check. * @returns `true` if the value is a valid Surah number, otherwise `false`. */ function isValidSurah(x) { return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numSurahs; } /** * Type guard function that checks if a tuple of two numbers represents a valid Surah and Ayah combination. * * @param x - A tuple containing [surahNumber, ayahNumber] * @returns True if the tuple represents a valid Surah-Ayah combination, false otherwise * * @example * ```ts * isValidSurahAyah([1, 7]) // true - Al-Fatiha has 7 ayahs * isValidSurahAyah([1, 8]) // false - Al-Fatiha only has 7 ayahs * isValidSurahAyah([115, 1]) // false - there are only 114 surahs * ``` */ function isValidSurahAyah(x) { const [surah, ayah] = x; if (!isValidSurah(surah)) return false; return Number.isInteger(ayah) && ayah >= 1 && ayah <= require_getAyahCountInSurah.getAyahCountInSurah(surah); } /** * Type guard that checks if a number is a valid Juz number * @param x - The number to check * @returns True if the number is an integer between 1 and the total number of Juzs (inclusive) */ function isValidJuz(x) { return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numJuzs; } /** * Type guard to check if a number is a valid Quran page number * @param x - The number to check * @returns True if the number is an integer between 1 and the total number of pages (inclusive) */ function isValidPage(x) { return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numPages; } /** * Type guard that checks if a value is a valid Ruku number * @param x - The value to check * @returns True if x is an integer between 1 and the total number of Rukus * @example * ```ts * if (isValidRuku(5)) { * // 5 is a valid Ruku number * } * ``` */ function isValidRuku(x) { return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numRukus; } /** * Type guard to check if a value is a valid Manzil number * * @param x - The value to check * @returns True if the value is an integer between 1 and the total number of Manzils * * @example * ```ts * if (isValidManzil(3)) { * // value is a valid Manzil number * } * ``` */ function isValidManzil(x) { return Number.isInteger(x) && 1 <= x && x <= require_const.meta.numManzils; } //#endregion exports.isValidAyahId = isValidAyahId; exports.isValidAyahNo = isValidAyahNo; exports.isValidJuz = isValidJuz; exports.isValidManzil = isValidManzil; exports.isValidPage = isValidPage; exports.isValidRuku = isValidRuku; exports.isValidSurah = isValidSurah; exports.isValidSurahAyah = isValidSurahAyah;