cpray
Version:
Module to retrieve prayer times from official JAKIM homepage (e-solat)
2 lines (1 loc) • 7.05 kB
JavaScript
var b=[{zone:"KDH01",negeri:"Kedah",label:"KOTA SETAR, POKOK SENA DAN KUBANG PASU",bearing:"291° 5′ 39″"},{zone:"KDH02",negeri:"Kedah",label:"KUALA MUDA, PENDANG DAN YAN",bearing:"291° 7′ 23″"},{zone:"KDH03",negeri:"Kedah",label:"PADANG TERAP DAN SIK",bearing:"291° 10′ 23″"},{zone:"KDH04",negeri:"Kedah",label:"BALING",bearing:"291° 7′ 48″"},{zone:"KDH05",negeri:"Kedah",label:"KULIM DAN BANDAR BAHARU",bearing:"219"},{zone:"KDH06",negeri:"Kedah",label:"LANGKAWI",bearing:void 0},{zone:"KDH07",negeri:"Kedah",label:"GUNUNG JERAI",bearing:void 0},{zone:"MLK01",negeri:"Melaka",label:"MELAKA",bearing:"292° 50′ 49″"},{zone:"NGS01",negeri:"Negeri Sembilan",label:"JEMPOL DAN KUALA PILAH",bearing:"292° 33′ 31″"},{zone:"NGS02",negeri:"Negeri Sembilan",label:"JELEBU, SEREMBAN, PORT DICKSON DAN REMBAU",bearing:"292° 48′ 18″"},{zone:"PHG01",negeri:"Pahang",label:"KUANTAN, PEKAN, ROMPIN DAN MUADZAM SHAH",bearing:"292° 22′ 32″"},{zone:"PHG02",negeri:"Pahang",label:"TEMERLOH, MARAN, BERA, CHENOR DAN JENGKA",bearing:"292° 24′ 36″"},{zone:"PHG03",negeri:"Pahang",label:"BENTONG, RAUB DAN LIPIS",bearing:"292° 19′ 16″"},{zone:"PHG04",negeri:"Pahang",label:"GENTING SEMPAH, JANDA BAIK DAN BUKIT TINGGI",bearing:"292° 7′ 27″"},{zone:"PHG05",negeri:"Pahang",label:"CAMERON HIGHLANDS",bearing:"292° 15′ 10″"},{zone:"PHG06",negeri:"Pahang",label:"PULAU TIOMAN",bearing:"291° 55′ 59″"},{zone:"PRK01",negeri:"Perak",label:"TAPAH, SLIM RIVER DAN TANJUNG MALIM",bearing:"291° 50′ 6″"},{zone:"PRK02",negeri:"Perak",label:"KUALA KANGSAR DAN LENGGONG",bearing:"291° 42′"},{zone:"PRK03",negeri:"Perak",label:"TAIPING, BAGAN SERAI DAN PARIT BUNTAR",bearing:"291° 48′ 0″"},{zone:"PRK04",negeri:"Perak",label:"TELOK INTAN DAN KAMPAR",bearing:void 0},{zone:"PRK05",negeri:"Perak",label:"IPOH, BATU GAJAH DAN KUALA KANGSAR",bearing:void 0},{zone:"PRK06",negeri:"Perak",label:"SELAMA, LARUT DAN MATANG",bearing:void 0},{zone:"PRK07",negeri:"Perak",label:"BUKIT LARUT",bearing:void 0},{zone:"PLS01",negeri:"Perlis",label:"PERLIS",bearing:"291° 2′ 45″"},{zone:"PNG01",negeri:"Pulau Pinang",label:"PULAU PINANG",bearing:"291° 34′ 37″"},{zone:"SGR01",negeri:"Selangor",label:"GOMBAK, PETALING, SEPANG, HULU LANGAT, HULU SELANGOR DAN SHAH ALAM",bearing:"291° 7′ 23″"},{zone:"SGR02",negeri:"Selangor",label:"KUALA SELANGOR DAN SABAK BERNAM",bearing:"292° 20′ 35″"},{zone:"SGR03",negeri:"Selangor",label:"KLANG DAN KUALA LANGAT",bearing:"292° 31′ 16″"},{zone:"TRG01",negeri:"Terengganu",label:"KUALA TERENGGANU, MARANG DAN KUALA NERUS",bearing:"291° 23′ 2″"},{zone:"TRG02",negeri:"Terengganu",label:"BESUT DAN SETIU",bearing:"291° 21′ 20″"},{zone:"TRG03",negeri:"Terengganu",label:"HULU TERENGGANU",bearing:"291° 32′ 40″"},{zone:"TRG04",negeri:"Terengganu",label:"DUNGUN DAN KEMAMAN",bearing:"291° 44′ 46″"},{zone:"JHR01",negeri:"Johor",label:"PULAU AUR DAN PULAU PEMANGGIL",bearing:"292° 25′ 40″"},{zone:"JHR02",negeri:"Johor",label:"JOHOR BAHRU, KOTA TINGGI DAN MERSING",bearing:"292° 54′ 30″"},{zone:"JHR03",negeri:"Johor",label:"PONTIAN DAN KLUANG",bearing:"292° 59′ 18″"},{zone:"JHR04",negeri:"Johor",label:"BATU PAHAT, MUAR, SEGAMAT DAN GEMAS JOHOR",bearing:"292° 49′"},{zone:"KTN01",negeri:"Kelantan",label:"KOTA BHARU, BACHOK, PASIR PUTEH, TUMPAT, PASIR MAS, TANAH MERAH, MACHANG, KUALA KRAI DAN MUKIM CHIKU",bearing:"291° 6′"},{zone:"KTN03",negeri:"Kelantan",label:"GUA MUSANG DAN JELI",bearing:"291° 40′ 41″"},{zone:"SBH01",negeri:"Sabah",label:"BAHAGIAN PANTAI BARAT",bearing:"290° 44′ 58″"},{zone:"SBH02",negeri:"Sabah",label:"KENINGAU, TAMBUNAN DAN NABAWAN",bearing:"290° 48′ 20″"},{zone:"SBH03",negeri:"Sabah",label:"BAHAGIAN SANDAKAN",bearing:"290° 51′ 30″"},{zone:"SBH04",negeri:"Sabah",label:"BAHAGIAN TAWAU",bearing:"290° 59′ 4″"},{zone:"SBH05",negeri:"Sabah",label:"BAHAGIAN KUDAT",bearing:"290° 24′ 31″"},{zone:"SBH06",negeri:"Sabah",label:"BEAUFORT, SIPITANG, TENOM DAN LONG PASIA",bearing:"290° 35′ 48″"},{zone:"SBH07",negeri:"Sabah",label:"LAHAD DATU",bearing:"290° 40′ 37″"},{zone:"SBH08",negeri:"Sabah",label:"SEMPORNA",bearing:"290° 46′ 36″"},{zone:"SBH09",negeri:"Sabah",label:"KINABATANGAN",bearing:"290° 50′ 27″"},{zone:"SWK01",negeri:"Sarawak",label:"LIMBANG, LAWAS, SUNDAR DAN TRUSAN",bearing:"290° 55′ 36″"},{zone:"SWK02",negeri:"Sarawak",label:"MIRI, NIAH, BEKENU DAN MARUDI",bearing:"291° 11′ 56″"},{zone:"SWK03",negeri:"Sarawak",label:"BINTULU, TATAU DAN SEBAUH",bearing:"291° 31′ 8″"},{zone:"SWK04",negeri:"Sarawak",label:"SIBU, KANOWIT DAN KAPIT",bearing:"291° 36′ 33″"},{zone:"SWK05",negeri:"Sarawak",label:"MUKAH, DALAT DAN BALINGIAN",bearing:"291° 49′ 38″"},{zone:"SWK06",negeri:"Sarawak",label:"SRI AMAN, BETONG, ENGKILILI DAN LUBOK ANTU",bearing:"291° 58′ 20″"},{zone:"SWK07",negeri:"Sarawak",label:"SAMARAHAN, SIMUNJAN, SEBUYAU DAN MELUDAM",bearing:"292° 7′ 47″"},{zone:"SWK08",negeri:"Sarawak",label:"KUCHING, BAU, LUNDU DAN SEMATAN",bearing:"292° 5′ 26″"},{zone:"SWK09",negeri:"Sarawak",label:"ZON KHAS (KAMPUNG PATARIKAN)",bearing:"292° 5′ 26″"},{zone:"WLY01",negeri:"Wilayah Persekutuan",label:"KUALA LUMPUR DAN PUTRAJAYA",bearing:"292° 31′ 16″"},{zone:"WLY02",negeri:"Wilayah Persekutuan",label:"LABUAN",bearing:"290° 47′ 30″"}];var r=Symbol("getTimes"),N=class{constructor(){this.baseUrl="https://www.e-solat.gov.my/index.php?r=esolatApi",this.fallbackUrl="https://waktusolat.me/api/v1/waktusolat"}async fetchWithRetry(e,A=2){for(let n=0;n<=A;n++)try{let a=await fetch(e,{method:"GET",headers:{"Content-Type":"application/json"}});if(!a.ok){let i=await a.json();throw new Error(`HTTP ${a.status}: ${i.message||"Unknown error"}`)}return await a.json()}catch(a){if(n===A)throw a}}async[r](e,A){let n=A.toUpperCase();if(!b.some(l=>l.zone===n))throw new Error(`Invalid zone: ${A}`);let i=`${this.baseUrl}/TakwimSolat&period=${e}&zone=${n}`,t=`${this.fallbackUrl}/${e}/${A.toLowerCase()}`;try{return await this.fetchWithRetry(i)}catch{try{let g=await this.fetchWithRetry(t);return this.normalizeSecondaryResponse(g)}catch{throw new Error("Server error. Sila cuba lagi.")}}}getTimesToday(e){return this[r]("today",e)}getTimesbyWeek(e){return this[r]("week",e)}getTimesbyMonth(e){return this[r]("month",e)}getTimesbyYear(e){return this[r]("year",e)}},o=N;var R=o;export{R as default};