LibreríasBiblia de Jerusalén
Biblia de Jerusalén: Arquitectura
Estructura interna de la librería biblia-de-jerusalen: datos, clase Bible y build.
La librería expone una única clase, Bible, sobre un JSON con el texto completo de la Biblia de Jerusalén.
Datos
El texto se empaqueta en src/es/bible.json (≈ 5 MB) y se importa de forma estática en src/bible.ts. No hay llamadas de red ni base de datos: todo el contenido viaja en el bundle.
Cada libro se indexa por su nombre en español (por ejemplo "Génesis"):
{
"Génesis": {
"abreviacion": "Gn",
"testamento": "Antiguo",
"ctd_chapters": 50,
"ctd_verses": 1532,
"chapters": [
{
"chapter": "1",
"ctd_verses": 31,
"verses": { "1": "En el principio creó Dios los cielos y la tierra.", "...": "..." }
}
]
}
}| Campo | Tipo | Descripción |
|---|---|---|
abreviacion | string | Abreviatura del libro (Gn, Mt…). |
testamento | string | Antiguo o Nuevo. |
chapters[].chapter | string | Número de capítulo. |
chapters[].verses | Record<string, string> | Versículos del capítulo, con número como clave. |
Clase Bible
| Método | Devuelve | Descripción |
|---|---|---|
bible | {} | Objeto completo con todos los libros. |
getAllBooks() | string[] | Nombres de los libros, en orden canónico. |
getBook(name) | any | Objeto del libro tal cual está en el JSON. |
getBookVersiculums(name) | resultBible[] | Versículos aplanados de un libro. |
allVersiculums() | resultBible[] | Todos los versículos de la Biblia, aplanados. |
Los versículos aplanados siguen el tipo resultBible:
type resultBible = {
b: string; // abreviatura del libro
c: string; // capítulo
v: string; // versículo
content: string; // texto del versículo
};La conversión a resultBible la hace el método privado extractChaptersFromBook. Recorre los capítulos y omite los versículos sin texto.
Consideraciones de uso
allVersiculums()recorre los 73 libros y crea un array nuevo con cada versículo. Para búsquedas, guárdalo en caché en lugar de llamarlo en cada consulta.- Los números de capítulo y versículo son
string, nonumber. Compáralos convirtiéndolos antes. getBookygetBookVersiculumsno validan el nombre: un libro inexistente devuelveundefinedo lanza un error al leerchapters.
Build
vite buildgenera tres formatos endist/: ES (biblia-de-jerusalen.es.js), CJS y UMD, con sourcemaps.vite-plugin-dtsgenera los tipos endist/bible.d.ts.package.jsonapuntamoduleyexportsal build ES, ymainal CJS.- Las pruebas se ejecutan con Vitest (
pnpm test).