JavaScript client for Murotal API - Islamic prayer times, Quran, Hadith, and Dua
npm install cloudku-murotal|
Universal Support Browser dan Node.js (CommonJS & ESM) |
Auto Date Formatting Otomatis format tanggal YYYY-MM-DD ke DD-MM-YYYY
|
|
Browser-like Headers Request headers seperti browser asli untuk kompatibilitas maksimal |
Parameter Validation Validasi input otomatis dengan error messages |
|
Error Handling Penanganan error yang komprehensif |
Minified Code Code yang dioptimasi untuk produksi |
bash
npm install cloudku-murotal-api
`
Copy Commands
`bash
NPM
npm install cloudku-murotal-api
Yarn
yarn add cloudku-murotal-api
PNPM
pnpm add cloudku-murotal-api
`
---
Quick Start
$3
`javascript
import CloudkuMurotalAPI from 'cloudku-murotal-api';
const api = new CloudkuMurotalAPI();
const cities = await api.getAllCities();
console.log(cities);
`
$3
`javascript
const CloudkuMurotalAPI = require('cloudku-murotal-api');
const api = new CloudkuMurotalAPI();
const cities = await api.getAllCities();
console.log(cities);
`
$3
`html
`
---
API Reference
$3
getAllCities() - Mendapatkan daftar semua kota
`javascript
const cities = await api.getAllCities();
`
Response:
`json
{
"status": "success",
"message": "Success",
"result": [
{
"id": "1",
"name": "Jakarta",
"province": "DKI Jakarta"
}
]
}
`
searchCities(query) - Mencari kota berdasarkan query
`javascript
const results = await api.searchCities('jakarta');
`
Parameters:
- query (string, required): Kata kunci pencarian
$3
getPrayerTimesByDate(cityId, date) - Jadwal shalat berdasarkan tanggal
`javascript
const schedule = await api.getPrayerTimesByDate('1', '2024-01-01');
`
Parameters:
- cityId (string, required): ID kota
- date (string, optional): Tanggal dalam format YYYY-MM-DD
getPrayerTimesByMonth(cityId, month, year) - Jadwal shalat bulanan
`javascript
const monthlySchedule = await api.getPrayerTimesByMonth('1', '1', '2024');
`
Parameters:
- cityId (string, required): ID kota
- month (string, required): Bulan (1-12)
- year (string, required): Tahun
$3
getCurrentHijriDate() - Tanggal Hijriah hari ini
`javascript
const hijriDate = await api.getCurrentHijriDate();
`
getHijriDateByGregorian(gregorianDate) - Konversi tanggal Masehi ke Hijriah
`javascript
const hijriDate = await api.getHijriDateByGregorian('2024-01-01');
`
Parameters:
- gregorianDate (string, required): Tanggal Masehi (YYYY-MM-DD)
$3
getAllAsmaulHusna() - Semua Asmaul Husna
`javascript
const asmaulHusna = await api.getAllAsmaulHusna();
`
getRandomAsmaulHusna() - Asmaul Husna acak
`javascript
const randomHusna = await api.getRandomAsmaulHusna();
`
getAsmaulHusnaByNumber(number) - Asmaul Husna berdasarkan nomor
`javascript
const husna = await api.getAsmaulHusnaByNumber(1);
`
Parameters:
- number (number, required): Nomor Asmaul Husna (1-99)
$3
getSurahList() - Daftar semua surah
`javascript
const surahList = await api.getSurahList();
`
getSurahByNumber(surahNumber) - Surah berdasarkan nomor
`javascript
const surah = await api.getSurahByNumber(1);
`
Parameters:
- surahNumber (number, required): Nomor surah (1-114)
getRandomSurah() - Surah acak
`javascript
const randomSurah = await api.getRandomSurah();
`
getAyahByNumber(ayahNumber) - Ayat berdasarkan nomor global
`javascript
const ayah = await api.getAyahByNumber(1);
`
Parameters:
- ayahNumber (number, required): Nomor ayat global
getSingleAyah(surahNumber, ayahNumber) - Satu ayat spesifik
`javascript
const ayah = await api.getSingleAyah(1, 1);
`
Parameters:
- surahNumber (number, required): Nomor surah
- ayahNumber (number, required): Nomor ayat dalam surah
getAyahRange(surahNumber, startAyah, range) - Rentang ayat
`javascript
const ayahRange = await api.getAyahRange(1, 1, 5);
`
Parameters:
- surahNumber (number, required): Nomor surah
- startAyah (number, required): Ayat awal
- range (number, required): Jumlah ayat
getSurahAyahRange(surahNumber, ayahNumbers) - Ayat dalam surah berdasarkan range
`javascript
const ayahRange = await api.getSurahAyahRange(1, '1-5');
`
Parameters:
- surahNumber (number, required): Nomor surah
- ayahNumbers (string, required): Range ayat (contoh: "1-5")
getRandomAyah() - Ayat acak
`javascript
const randomAyah = await api.getRandomAyah();
`
getJuzByNumber(juzNumber) - Juz berdasarkan nomor
`javascript
const juz = await api.getJuzByNumber(1);
`
Parameters:
- juzNumber (number, required): Nomor juz (1-30)
$3
getAllThemes() - Semua tema ayat
`javascript
const themes = await api.getAllThemes();
`
getAyahByTheme(themeId) - Ayat berdasarkan tema
`javascript
const ayahByTheme = await api.getAyahByTheme(1);
`
Parameters:
- themeId (number, required): ID tema
$3
getDoaSources() - Sumber-sumber doa
`javascript
const doaSources = await api.getDoaSources();
`
getRandomDua() - Doa acak
`javascript
const randomDua = await api.getRandomDua();
`
searchDua(query) - Mencari doa berdasarkan kata kunci
`javascript
const duaResults = await api.searchDua('harian');
`
Parameters:
- query (string, required): Kata kunci pencarian
$3
getRandomHadithArbain() - Hadist Arbain acak
`javascript
const hadithArbain = await api.getRandomHadithArbain();
`
getRandomHadithBukhari() - Hadist Bukhari acak
`javascript
const hadithBukhari = await api.getRandomHadithBukhari();
`
---
Advanced Usage
$3
`javascript
const api = new CloudkuMurotalAPI('https://custom-api-url.com');
`
$3
`javascript
try {
const result = await api.getSurahByNumber(1);
console.log(result);
} catch (error) {
console.error('Error:', error.message);
}
`
$3
Semua tanggal dalam response otomatis diformat:
`javascript
// API response: { date: "2024-01-01" }
// Hasil setelah formatting: { date: "01-01-2024" }
`
---
Response Format
Semua response mengikuti format standar:
`json
{
"status": "success",
"message": "Success message",
"result": {
// Data hasil
}
}
`
---
Changelog
$3
#### Fitur Baru
- Universal Compatibility: Dukungan penuh Browser, Node.js CommonJS, dan ESM
- Auto Date Formatting: Otomatis format tanggal YYYY-MM-DD → DD-MM-YYYY
- Browser-like Headers: Headers HTTP lengkap seperti browser asli
- Parameter Validation: Validasi input otomatis dengan error messages yang informatif
- Enhanced Error Handling: Penanganan error yang lebih baik dan descriptive
#### Breaking Changes
- Class Name: MurotalAPI → CloudkuMurotalAPI
- Method Names: Penamaan method yang lebih konsisten dan deskriptif
Lihat semua perubahan method
- getCities() → getAllCities()
- getTodayHijriDate() → getCurrentHijriDate()
- getHijriDate() → getHijriDateByGregorian()
- getRandomHusna() → getRandomAsmaulHusna()
- getAllHusna() → getAllAsmaulHusna()
- getHusnaByNumber() → getAsmaulHusnaByNumber()
- getPrayerTimes() → getPrayerTimesByDate()
- searchDoa() → searchDua()
- getRandomDoa() → getRandomDua()
- getRandomHadistArbain() → getRandomHadithArbain()
- getRandomHadistBukhari() → getRandomHadithBukhari()
#### Performance Improvements
- Minified Code: Code yang dioptimasi untuk ukuran yang lebih kecil
- Better Fetch Detection: Deteksi fetch API yang lebih robust
- Optimized Headers: Headers yang dioptimasi untuk berbagai environment
#### Technical Improvements
- User-Agent: cloudku-murotal/2.0.0 untuk identifikasi yang lebih baik
- TypeScript Ready: Structure yang siap untuk TypeScript definitions
- Better Testing: Test suite yang komprehensif untuk semua environment
---
Testing
`bash
Test ESM
node test-esm.mjs
Test CommonJS
node test-cjs.js
``