Ir para o conteúdo principal
Projeto de Código Aberto de sepTN

Dados de Kanji Offline. Sem Dependências.

Um banco de dados rápido e compacto com mais de 13.000 caracteres kanji e vocabulário relacionado. Otimizado com fragmentos de lazy-load para ambientes serverless com pouca memória.

Comando de instalação

npm install kanji-data

O Problema

Acessar um dicionário japonês offline completo costuma exigir o parse de um JSON enorme de mais de 100 MB.

  • Bloqueia o event loop do Node.js e atrasa a inicialização.
  • Pode consumir mais de 300 MB de RAM e derrubar ambientes serverless como Vercel ou AWS Lambda.
  • SQLite adiciona dependências C++ (node-gyp) que costumam falhar na instalação.

A Solução

kanji-data resolve a memória com fragmentação em tempo de build e avaliação preguiçosa.

  • Em vez de um arquivo enorme, o banco é pré-compilado em pedaços pequenos e otimizados.
  • Os metadados principais carregam na hora.
  • O vocabulário é dividido por prefixos hex Unicode e carrega em pedaços de ~1 MB só quando pedido.

Recursos Principais

Sem Dependências

JavaScript e JSON puros. Sem bancos de dados nem binários nativos.

Pronto para Serverless

Cold starts quase instantâneos com pegada mínima.

100% Offline

Sem API keys, sem limite de cota e sem latência de rede.

Cache Inteligente

Os fragmentos ficam em memória após a primeira leitura.

API Simples

Estrutura clara e pronta em milissegundos.

Exemplo 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 Interativo

Veja a forma da saída no navegador. Esta demo usa um conjunto de amostra reduzido.

Esta demo web suporta 水, 火, 猫, 食 e 電. O pacote npm suporta mais de 13.000 caracteres offline.

Referência Oficial da API

get(character: string): Object | null

Retorna os metadados principais de um kanji. É muito rápido porque esses dados carregam na inicialização. Retorna null se o caractere não existir.

getWords(character: string): Array

Retorna vocabulário que usa o kanji. A primeira chamada lê um fragmento de ~1 MB e o coloca em cache. Retorna array vazio quando não há dados.

getJlpt(level: number): Array<string>

Retorna kanji dos níveis JLPT 1–5. Níveis inválidos retornam array vazio.

getGrade(grade: number): Array<string>

Retorna kanji de um ano escolar japonês. Anos 1–6 são 教育漢字; 8 cobre Jōyō restantes; 9 cobre Jinmeiyō para nomes.

Licença e Fontes de Dados

O código é MIT. Dados via kanjiapi.dev, com EDICT e KANJIDIC — © EDRDG, usados sob a licença deles. MIT · kanjiapi.dev · EDRDG · licence

Relacionado

IDENESPTFR