Skip to content

kalenderjawa/pustaka

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,229 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pustaka Kalender Jawa

sengkala

Build Status bundlephobia

Sejarah Penanggalan Jawa

Menurut sejarahnya Penanggalan Jawa merupakan hasil olah para Wali dan para leluhur Jawa dan kemudian diwariskan terutama melalui rumus perhitungan dengan cara hafalan dan hebatnya rumus perhitungan ini bersifat abadi dan sangat akurat sampai hampir 1000 tahun.

"Dengan terhafal dalam bentuk nyanyian, kalender Jawa akan terbawa kemana saja pergi, dan masih memiliki tingkat akurasi tinggi sampai 994 tahun lagi. Setelah itu baru ada koreksi +1 hari sebelum Ambal Kurup Alip Senen Kliwon, 1 Sura 2947 Jawa (26 Januari 2984 Masehi)" - REF.

Silahkan membaca lebih lanjut tentang Penanggalan Jawa di Website Kalender Jawa.

@kalenderjawa/pustaka

Pustaka Kalender Jawa ini merupakan pustaka khusus yang menyediakan perhitungan, informasi dan pengkonversian Penanggalan atau Kalender Jawa, dengan maksud dan tujuan supaya Penanggalan Jawa lebih mudah dikenal dan dipakai secara umum, khususnya buat para pengembang.

Pustaka Kalender Jawa ini ditulis memakai bahasa TypeScript dan memakai ES Module. Membutuhkan Node.js >= 20.0.0.

Cakupan

Pustaka ini mencakup perhitungan Kalender Jawa Abadi untuk kurun waktu tahun 1867 - 2106 Jawa, meliputi dua kurup:

Kurup Periode Keterangan
Asapon 1867 - 1986 Alip Selasa Pon
Anenhing 1987 - 2106 Alip Senen Pahing

Perhitungan mencakup 12 bulan (sasi) dan 8 tahun dalam siklus windu (Alip, Ehe, Jimawal, Je, Dal, Be, Wawu, Jimakir).

Referensi Rumus

Rumus perhitungan abadi yang dipakai pada pustaka ini bersumber dari Kalender Jowo Digowo, Kalender Arab Digarap, Kalender Barat Diruwat (halaman rumus).

Hasil Build

Ada 3 hasil build pada direktori dist/ dan default adalah build untuk Node.js ataupun browser yang mendukung ES Module (ESM).

Berkas Keterangan
dist/kalenderjawa.min.js Node.js & browser yang mendukung ESM (default)
dist/kalenderjawa.min.cjs Node.js yang tidak mendukung ESM
dist/kalenderjawa.browser.min.js Browser yang tidak mendukung ESM

Contoh penggunaan hasil build diatas ada pada direktori examples/

Instalasi

Pustaka Kalender Jawa bisa dipakai dilingkungan Node maupun Browser.

Node

npm install --save @kalenderjawa/pustaka

Secara default anda akan memakai Pustaka yang mendukung ES Module, benar yaitu yang memakai import

import * as KalenderJawa from "@kalenderjawa/pustaka";

KalenderJawa.cariKurupTahunJawa(1881).then(/**...*/);

Untuk Node.js yang belum mendukung ESM silahkan memakai berkas kalenderjawa.min.cjs pada direktori dist.

Browser

Jika anda memakai browser Pustaka ini bisa di ambil melalui CDN (Content Delivery Network) seperti di unpkg.com.

Kode berikut akan mengambil pustaka untuk browser yang tidak mendukung ES Module.

<script src="https://unpkg.com/@kalenderjawa/pustaka/dist/kalenderjawa.browser.min.js"></script>

dan kode berikut untuk browser yang mendukung ES Module

<script type="module">
  import * as KalenderJawa from "https://unpkg.com/@kalenderjawa/pustaka";

  console.log(KalenderJawa);
</script>

Contoh Penggunaan

Mencari kurup dan tahun Jawa

const result = await KalenderJawa.cariKurupTahunJawa(1959);
// {
//   taun: { taun: 'dal', neptu: 4, urutan: 5, cacah: 355 },
//   kurup: { taun: 'alip', dinten: { dino: 'selasa', ... }, pasaran: { pasaran: 'pon', ... } }
// }

Mencari hari dan pasaran awal bulan

const result = await KalenderJawa.cariHariPasaranAwalBulanTahunJawa('mukarom', 1959);
// {
//   w: 'mukarom', t: 1959,
//   i: { taun: 'dal', kurup: 'alip selasa pon' },
//   kH: { dino: 'jemah', urutan: 5, bobot: 6 },
//   kP: { pasaran: 'kliwon', neptu: 8, urutan: 5 }
// }
// → 1 Mukarom 1959 = Jemah Kliwon (Jumat Kliwon)

Menampilkan kalender satu bulan penuh

const result = await KalenderJawa.sasi('mukarom', 1959);
// Menghasilkan 30 hari lengkap dengan dinten, pasaran, dan neptu
// { 1: { dinten: 'jemah', pasaran: 'kliwon', neptu: 11 } }
// { 2: { dinten: 'sebtu', pasaran: 'legi', neptu: 11 } }
// ... dst

Testing

Untuk menjalankan pengujian gunakan perintah:

npm run test        # menjalankan sekali dengan laporan cakupan
npm run test:watch  # menjalankan ulang saat berkas berubah

Pengujian menggunakan Vitest sehingga tidak memerlukan Chrome atau Puppeteer. Contoh ringkasan cakupan:

% Coverage report from v8
-------------------|---------|----------|---------|---------|-------------------
File               | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
-------------------|---------|----------|---------|---------|-------------------
All files          |   92.13 |    88.88 |      80 |   92.13 |

API

Dokumentasi dan demo API ada di sini.

Berkontribusi

Untuk berkontribusi silahkan lihat dokumen CARA BERKONTRIBUSI.

Lisensi

MIT License


kalenderjawa.github.io © (2019 - 2025)