npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

cloudku-murotal

v2.0.0

Published

JavaScript client for Murotal API - Islamic prayer times, Quran, Hadith, and Dua

Readme

Cloudku Murotal API

Cloudku Murotal API

JavaScript client library untuk mengakses Cloudku Murotal API dengan dukungan Universal

Version Downloads License GitHub

WebsiteDocumentationGitHubContact


Fitur Utama

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


Instalasi

npm install cloudku-murotal-api
# NPM
npm install cloudku-murotal-api

# Yarn
yarn add cloudku-murotal-api

# PNPM
pnpm add cloudku-murotal-api

Quick Start

ESM (ES Modules)

import CloudkuMurotalAPI from 'cloudku-murotal-api';

const api = new CloudkuMurotalAPI();
const cities = await api.getAllCities();
console.log(cities);

CommonJS

const CloudkuMurotalAPI = require('cloudku-murotal-api');

const api = new CloudkuMurotalAPI();
const cities = await api.getAllCities();
console.log(cities);

Browser

<script src="https://cdn.jsdelivr.net/npm/[email protected]/main.mjs"></script>
<script>
  const api = new CloudkuMurotalAPI();
  api.getAllCities().then(cities => console.log(cities));
</script>

API Reference

Kota & Lokasi

const cities = await api.getAllCities();

Response:

{
  "status": "success",
  "message": "Success",
  "result": [
    {
      "id": "1",
      "name": "Jakarta",
      "province": "DKI Jakarta"
    }
  ]
}
const results = await api.searchCities('jakarta');

Parameters:

  • query (string, required): Kata kunci pencarian

Waktu Shalat

const schedule = await api.getPrayerTimesByDate('1', '2024-01-01');

Parameters:

  • cityId (string, required): ID kota
  • date (string, optional): Tanggal dalam format YYYY-MM-DD
const monthlySchedule = await api.getPrayerTimesByMonth('1', '1', '2024');

Parameters:

  • cityId (string, required): ID kota
  • month (string, required): Bulan (1-12)
  • year (string, required): Tahun

Tanggal Hijriah

const hijriDate = await api.getCurrentHijriDate();
const hijriDate = await api.getHijriDateByGregorian('2024-01-01');

Parameters:

  • gregorianDate (string, required): Tanggal Masehi (YYYY-MM-DD)

Asmaul Husna

const asmaulHusna = await api.getAllAsmaulHusna();
const randomHusna = await api.getRandomAsmaulHusna();
const husna = await api.getAsmaulHusnaByNumber(1);

Parameters:

  • number (number, required): Nomor Asmaul Husna (1-99)

Al-Quran

const surahList = await api.getSurahList();
const surah = await api.getSurahByNumber(1);

Parameters:

  • surahNumber (number, required): Nomor surah (1-114)
const randomSurah = await api.getRandomSurah();
const ayah = await api.getAyahByNumber(1);

Parameters:

  • ayahNumber (number, required): Nomor ayat global
const ayah = await api.getSingleAyah(1, 1);

Parameters:

  • surahNumber (number, required): Nomor surah
  • ayahNumber (number, required): Nomor ayat dalam surah
const ayahRange = await api.getAyahRange(1, 1, 5);

Parameters:

  • surahNumber (number, required): Nomor surah
  • startAyah (number, required): Ayat awal
  • range (number, required): Jumlah ayat
const ayahRange = await api.getSurahAyahRange(1, '1-5');

Parameters:

  • surahNumber (number, required): Nomor surah
  • ayahNumbers (string, required): Range ayat (contoh: "1-5")
const randomAyah = await api.getRandomAyah();
const juz = await api.getJuzByNumber(1);

Parameters:

  • juzNumber (number, required): Nomor juz (1-30)

Tema Ayat

const themes = await api.getAllThemes();
const ayahByTheme = await api.getAyahByTheme(1);

Parameters:

  • themeId (number, required): ID tema

Doa

const doaSources = await api.getDoaSources();
const randomDua = await api.getRandomDua();
const duaResults = await api.searchDua('harian');

Parameters:

  • query (string, required): Kata kunci pencarian

Hadist

const hadithArbain = await api.getRandomHadithArbain();
const hadithBukhari = await api.getRandomHadithBukhari();

Advanced Usage

Custom Base URL

const api = new CloudkuMurotalAPI('https://custom-api-url.com');

Error Handling

try {
  const result = await api.getSurahByNumber(1);
  console.log(result);
} catch (error) {
  console.error('Error:', error.message);
}

Auto Date Formatting

Semua tanggal dalam response otomatis diformat:

// API response: { date: "2024-01-01" }
// Hasil setelah formatting: { date: "01-01-2024" }

Response Format

Semua response mengikuti format standar:

{
  "status": "success",
  "message": "Success message",
  "result": {
    // Data hasil
  }
}

Changelog

v2.0.0 - Major Update

Fitur Baru

  • Universal Compatibility: Dukungan penuh Browser, Node.js CommonJS, dan ESM
  • Auto Date Formatting: Otomatis format tanggal YYYY-MM-DDDD-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: MurotalAPICloudkuMurotalAPI
  • Method Names: Penamaan method yang lebih konsisten dan deskriptif
  • 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

# Test ESM
node test-esm.mjs

# Test CommonJS  
node test-cjs.js

Contributing

Kontribusi sangat diterima! Silakan buat issue atau pull request di GitHub Repository.


License

MIT License - lihat file LICENSE untuk detail lengkap.


Contact

Developer: AlfiDev

Telegram Developer

Community:

Telegram Group Telegram Channel

Links:

Website GitHub


Made with ❤️ by AlfiDev