kalender-bali-agung
v2.5.3
Published
Library Kalender Bali Akurat 100% oleh AgungJSX
Downloads
79
Readme
kalender-bali-agung 🌺
Library Node.js Tercepat, Paling Ringan, & Paling Akurat untuk Komputasi Kalender Saka Bali.
kalender-bali-agung adalah engine komputasi kalender berbasis JavaScript (ES6+) yang dirancang khusus untuk kemudahan ekstraksi penanggalan Bali secara absolut. Dibangun dengan algoritma presisi tinggi (Sistem Multi-Pivot Hibrid & Auto-Paksa Kirang) yang disinkronkan dengan siklus Eka Sungsang (Pangalantaka), library ini secara otomatis menangani kompleksitas fase bulan, lompatan hari (Ngunaratri), dan bulan sisipan (Mala Sasih) tanpa resiko pergeseran/drift di masa depan. Cocok untuk aplikasi skala Enterprise & Production.
✨ Fitur Utama
- 🚀 Stable Timezone: Menggunakan waktu murni UTC (
dayjs), menanggulangi bug Leap Year bawaan JavaScript native. Sangat stabil untuk eksekusi server (Node.js) maupun client-side. - 🎯 Akurasi Tanpa Batas Tahun: Dirancang untuk mendukung pencarian data Wariga untuk segala tahun (baik di masa lalu 1900-an, hingga masa depan 2500+).
- 📜 Wariga Engine Lengkap: Mendukung komputasi Pawukon, Wewaran (Ekawara-Dasawara), Palalintangan, Pancasuda, Pararasan, Rakam, Eka Jala Rsi, hingga Zodiak Hindu.
- 🌕 Siklus Lunar Otomatis (Auto-Paksa Kirang): Deteksi presisi untuk Tilem/Purnama. Secara cerdas mengunci akhir fase bulan di angka 14 jika terjadi Ngunaratri (bulan pendek), dan di angka 15 jika normal. Serta mendeteksi bulan kabisat Bali (Nampih/Mala Sasih).
📦 Instalasi (Server / Node.js)
Instalasi melalui NPM (secara otomatis akan menginstal dependensi waktu yang dibutuhkan):
npm install kalender-bali-agung dayjsAtau menggunakan Yarn:
yarn add kalender-bali-agung dayjs🌐 Penggunaan via CDN (Client-Side / HTML)
Anda dapat menggunakan library ini langsung di dalam tag <script> HTML tanpa perlu instalasi menggunakan NPM. Modul ini di-bundle menjadi format UMD sehingga langsung dapat dipanggil melalui variabel global KalenderBaliAgung.
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Kalender Bali</title>
</head>
<body>
<script src="[https://cdn.jsdelivr.net/npm/[email protected]/dist/kalender-bali-agung.min.js](https://cdn.jsdelivr.net/npm/[email protected]/dist/kalender-bali-agung.min.js)"></script>
<script>
const tglBali = new KalenderBaliAgung('2024-04-16');
console.log("Saka:", tglBali.tahunSaka);
console.log("Fase:", tglBali.penanggalStr);
console.log("Status:", tglBali.statusPurnama);
</script>
</body>
</html>🚀 Penggunaan Cepat (Node.js)
Instansiasi kelas menggunakan format tanggal standar (YYYY-MM-DD).
const KalenderBaliAgung = require('kalender-bali-agung');
const tglBali = new KalenderBaliAgung('2024-04-16');
console.log("Tahun Saka:", tglBali.tahunSaka);
console.log("Nomor Wuku:", tglBali.noWuku);
console.log("Fase Angka:", tglBali.penanggalStr);
console.log("Arah Fase :", tglBali.isPangelong ? "Pengelong" : "Penanggal");
console.log("Puncak :", tglBali.statusPurnama);📖 Referensi API (Properti & Method)
Setelah memanggil new KalenderBaliAgung('date'), Anda dapat mengakses data-data berikut:
1. Data Utama (Properti)
| Properti | Tipe | Keterangan |
| :--- | :--- | :--- |
| tahunSaka | Number | Tahun Saka pada tanggal tersebut |
| noSasih | Number | Indeks Sasih (1=Kasa, 2=Karo, ..., 12=Sadha) |
| penanggal | Number | Angka fase bulan mentah |
| penanggalStr | String | String fase bulan bersih (Otomatis mendeteksi ngunaratri. Cth: "14", "12/13") |
| isPangelong | Boolean | true jika fase bulan memudar (Pengelong / Kresna Paksa) |
| statusPurnama | String | Otomatis mengembalikan "Tilem", "Purnama", atau "" (kosong). Tepat di angka 14 atau 15 |
| isNampih | Boolean | true jika terjadi Sasih Kabisat (Mala Sasih) |
| isNgunaratri| Boolean | true jika terjadi pergeseran/loncat hari (Ngunaratri) |
| noWuku | Number | Indeks Wuku (1=Sinta s/d 30=Watugunung) |
| angkaWuku | Number | Urutan hari dalam siklus 210 hari |
| uripWuku | Number | Neptu / Urip dari Wuku tersebut |
| noEkawara s/d noDasawara | Number | Indeks siklus Wewaran (1 harian sampai 10 harian) |
2. Metode Wariga Lanjutan (Astrologi)
Metode di bawah ini mengembalikan indeks angka yang dapat digunakan untuk pemetaan ramalan atau perhitungan padewasan:
hitungLintang(): Indeks Palalintangan (1-35)hitungPancasudha(): Indeks Pancasuda (1-7)hitungPararasan(): Indeks Pararasan (1-12)hitungRakam(): Indeks Rakam (1-6)hitungZodiak(): Indeks Zodiak Hindu (1-12)hitungEkaJalaRsi(): Indeks Eka Jala Rsi (1-27)hitungWatekAlit(): Indeks Watek Alit (1-4)hitungWatekMadya(): Indeks Watek Madya (1-5)hitungJejepan(): Indeks Jejepan (1-6)
🛠️ Implementasi Lanjutan: Kamus Pemetaan Nama Bali
Agar memberikan kebebasan kustomisasi bahasa (Bali/Indonesia/Inggris), library ini mereturn nilai berupa angka indeks. Anda dapat mendefinisikan array kamus string sendiri di dalam aplikasi Anda untuk menerjemahkan indeks tersebut.
const KalenderBaliAgung = require('kalender-bali-agung');
const WUKU = ["", "Sinta", "Landep", "Ukir", "Kulantir", "Tolu", "Gumbreg", "Wariga", "Warigadean", "Julungwangi", "Sungsang", "Dungulan", "Kuningan", "Langkir", "Medangsia", "Pujut", "Pahang", "Krulut", "Merakih", "Tambir", "Medangkungan", "Matal", "Uye", "Menail", "Prangbakat", "Bala", "Ugu", "Wayang", "Kelawu", "Dukut", "Watugunung"];
const PANCAWARA = ["", "Umanis", "Paing", "Pon", "Wage", "Kliwon"];
const SAPTAWARA = ["Redite", "Soma", "Anggara", "Buda", "Wraspati", "Sukra", "Saniscara"];
const SASIH = ["", "Kasa", "Karo", "Katiga", "Kapat", "Kalima", "Kanem", "Kapitu", "Kawalu", "Kasanga", "Kadasa", "Jyestha", "Sadha"];
const tgl = new KalenderBaliAgung('2025-03-29');
console.log(`Wuku : ${WUKU[tgl.noWuku]}`);
console.log(`Wewaran : ${SAPTAWARA[tgl.noSaptawara]} ${PANCAWARA[tgl.noPancawara]}`);
const namaSasih = tgl.isNampih ? `Mala ${SASIH[tgl.noSasih]}` : SASIH[tgl.noSasih];
console.log(`Sasih : ${namaSasih}`);👨💻 Author
Agung Developer
Diciptakan dengan dedikasi tinggi untuk digitalisasi kebudayaan Bali. Library ini bertujuan memfasilitasi para pengembang perangkat lunak untuk membangun aplikasi kalender yang menghormati ketepatan waktu penanggalan tradisional di era modern.
📄 Lisensi
Didistribusikan di bawah lisensi MIT. Anda bebas menggunakan, memodifikasi, dan mendistribusikan library ini secara gratis untuk tujuan personal maupun komersial.
