Lewati ke konten utama
Proyek Sumber Terbuka oleh sepTN

Data Kanji Offline. Tanpa Dependensi.

Database ringkas dan cepat berisi lebih dari 13.000 karakter kanji serta kosakata terkait. Dipecah menjadi pecahan data agar aman dipakai di lingkungan serverless dengan memori terbatas.

Perintah instalasi

npm install kanji-data

Masalahnya

Mengakses kamus Jepang offline biasanya berarti memuat file JSON raksasa berukuran ratusan megabita.

  • Memblokir event loop Node.js dan memperlambat startup aplikasi.
  • Setelah diparse, memori bisa membengkak ratusan MB hingga menabrak batas serverless (Vercel, AWS Lambda).
  • Mengandalkan SQLite menambah dependensi C++ (node-gyp) yang sering gagal saat instalasi.

Solusinya

kanji-data memecah data saat build dan memuat pecahan hanya saat diminta, sehingga memori tetap terkendali.

  • Database dikompilasi menjadi potongan kecil yang dioptimalkan, bukan satu file raksasa.
  • Metadata inti tersedia seketika saat inisialisasi.
  • Daftar kosakata dipisah menurut prefix Unicode hex dan dimuat sekitar 1 MB per permintaan.

Fitur Utama

Tanpa Dependensi

JavaScript dan JSON murni. Tanpa database, tanpa binary native.

Siap Serverless

Cold start hampir instan dengan jejak memori yang tipis.

100% Offline

Tanpa API key, tanpa batas kuota, tanpa latensi jaringan.

Cache Cerdas

Pecahan data disimpan di memori setelah pembacaan pertama.

API yang Sederhana

Terstruktur jelas dan siap dipakai dalam hitungan milidetik.

Contoh pemakaian
const kanji = require('kanji-data');

// 1. Get core metadata instantly
const neko = kanji.get('猫');
console.log(neko.meanings);    // ['cat']
console.log(neko.kun_readings); // ['ねこ']
console.log(neko.jlpt);        // 3

// 2. Fetch vocabulary (lazily loads a ~1MB shard)
const nekoWords = kanji.getWords('猫');
console.log(nekoWords[0]);

// 3. Get entire JLPT lists
const n5 = kanji.getJlpt(5);

// 4. Get kanji by school grade
const grade1 = kanji.getGrade(1);

Penjelajah Interaktif

Coba struktur output di browser. Demo ini memakai data contoh terbatas.

Demo web mendukung 水, 火, 猫, 食, dan 電. Paket npm mendukung 13.000+ karakter offline.

Referensi API

get(character: string): Object | null

Mengembalikan metadata inti untuk satu karakter kanji. Operasi ini sangat cepat karena metadata inti dimuat penuh saat inisialisasi. Mengembalikan null jika karakter tidak ditemukan.

getWords(character: string): Array

Mengembalikan daftar kosakata yang memakai kanji tersebut. Pemanggilan pertama pada karakter tertentu memicu pembacaan pecahan kamus sekitar 1 MB, lalu hasilnya di-cache di memori. Mengembalikan array kosong jika tidak ada data.

getJlpt(level: number): Array<string>

Mengembalikan daftar karakter kanji untuk level JLPT 1–5. Input di luar rentang tersebut menghasilkan array kosong.

getGrade(grade: number): Array<string>

Mengembalikan kanji yang diajarkan pada kelas sekolah Jepang. Kelas 1–6 adalah 教育漢字, kelas 8 mencakup Jōyō di luar kelas 1–6, dan kelas 9 mencakup kanji Jinmeiyō untuk nama.

Lisensi dan Sumber Data

Kode berlisensi MIT. Data melalui kanjiapi.dev, memakai EDICT dan KANJIDIC — © EDRDG, digunakan sesuai lisensi mereka. MIT · kanjiapi.dev · EDRDG · licence

Terkait

IDENESPTFR