Saltar al contenido principal
Proyecto de Código Abierto de sepTN

Datos de Kanji Offline. Sin Dependencias.

Una base de datos rápida y compacta con más de 13.000 caracteres kanji y vocabulario relacionado. Optimizada con fragmentos de carga diferida para entornos serverless con poca memoria.

Comando de instalación

npm install kanji-data

El Problema

Usar un diccionario japonés offline completo suele exigir parsear un JSON enorme de más de 100 MB.

  • Bloquea el event loop de Node.js y ralentiza el arranque.
  • Puede consumir más de 300 MB de RAM y tumbar entornos serverless como Vercel o AWS Lambda.
  • SQLite introduce dependencias C++ (node-gyp) que a menudo fallan al instalarse.

La Solución

kanji-data resuelve la memoria con fragmentación en tiempo de compilación y evaluación diferida.

  • En lugar de un archivo enorme, la base se compila en trozos pequeños y optimizados.
  • Los metadatos principales se cargan al instante.
  • El vocabulario se divide por prefijos hex de Unicode y se carga en trozos de ~1 MB solo cuando se pide.

Funciones Clave

Sin Dependencias

JavaScript y JSON puros. Sin bases de datos ni binarios nativos.

Lista para Serverless

Arranques en frío casi instantáneos con huella mínima.

100% Offline

Sin API keys, sin límites de cuota y sin latencia de red.

Caché Inteligente

Los fragmentos permanecen en memoria tras la primera lectura.

API Sencilla

Estructura clara y lista en milisegundos.

Ejemplo de uso
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);

Explorador Interactivo

Prueba la forma de salida en el navegador. Esta demo usa un conjunto de muestra reducido.

Esta demo web admite 水, 火, 猫, 食 y 電. El paquete npm admite más de 13.000 caracteres offline.

Referencia Oficial de la API

get(character: string): Object | null

Devuelve los metadatos principales de un kanji. Es muy rápido porque esos datos se cargan al iniciar. Devuelve null si el carácter no existe.

getWords(character: string): Array

Devuelve vocabulario que usa ese kanji. La primera llamada lee un fragmento de ~1 MB y lo cachea en memoria. Devuelve un array vacío si no hay datos.

getJlpt(level: number): Array<string>

Devuelve kanji de los niveles JLPT 1–5. Niveles inválidos devuelven un array vacío.

getGrade(grade: number): Array<string>

Devuelve kanji de un grado escolar japonés. Los grados 1–6 son 教育漢字; el 8 cubre Jōyō restantes; el 9 cubre Jinmeiyō para nombres.

Licencia y Fuentes de Datos

El código es MIT. Datos vía kanjiapi.dev, con EDICT y KANJIDIC — © EDRDG, usados bajo su licencia. MIT · kanjiapi.dev · EDRDG · licence

Relacionado

IDENESPTFR