@mdkva/surahkit
Version:
MDKVA SurahKit provides clean, reliable, and easily accessible Quran data ideal for apps, Islamic tools, AI systems, and automation projects.
72 lines (59 loc) • 2.4 kB
JavaScript
export const SurahKit = {
/* ------------------------------------------
* NEW FUNCTION: loadAll()
* ------------------------------------------ */
async loadAll(language) {
if (!language) throw new Error("Language is required.");
const url = `https://cdn.jsdelivr.net/npm/@mdkva/surahkit/data/${language}.json`;
const res = await fetch(url);
if (!res.ok) throw new Error(`Language file '${language}.json' not found.`);
return res.json();
},
/* ------------------------------------------
* NEW FUNCTION: searchById()
* ------------------------------------------ */
async searchById(language, id) {
if (!id) throw new Error("Surah ID is required.");
const quran = await this.loadAll(language);
const surahId = String(id).trim();
const surah = quran.find(s => s.id === surahId);
if (!surah) throw new Error(`Surah with ID '${id}' not found in '${language}'.`);
return surah;
},
/* ------------------------------------------
* NEW FUNCTION: searchByName()
* ------------------------------------------ */
async searchByName(language, keyword) {
if (!keyword) return [];
const quran = await this.loadAll(language);
const term = keyword.toLowerCase();
return quran.filter(s => s.surah.toLowerCase().includes(term));
},
/* ------------------------------------------
* NEW FUNCTION: searchByPhrase()
* ------------------------------------------ */
async searchByPhrase(language, phrase) {
if (!phrase) return [];
const quran = await this.loadAll(language);
const term = phrase.toLowerCase();
return quran.filter(s => s.text.toLowerCase().includes(term));
},
/* ------------------------------------------
* OLD API (kept for backward compatibility)
* These forward calls to the new methods
* ------------------------------------------ */
// Old: surahKit.load(language)
async load(language) {
return this.loadAll(language);
},
// Old: surahKit.getById(language, id)
async getById(language, id) {
return this.searchById(language, id);
},
// Old: surahKit.search(language, phrase)
async search(language, phrase) {
return this.searchByPhrase(language, phrase);
}
};
// camelCase convention... for those that don't prefer PascalCase
export const surahKit = SurahKit;