BreviariumBreviarium
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.", "...": "..." }
      }
    ]
  }
}
CampoTipoDescripción
abreviacionstringAbreviatura del libro (Gn, Mt…).
testamentostringAntiguo o Nuevo.
chapters[].chapterstringNúmero de capítulo.
chapters[].versesRecord<string, string>Versículos del capítulo, con número como clave.

Clase Bible

MétodoDevuelveDescripción
bible{}Objeto completo con todos los libros.
getAllBooks()string[]Nombres de los libros, en orden canónico.
getBook(name)anyObjeto 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, no number. Compáralos convirtiéndolos antes.
  • getBook y getBookVersiculums no validan el nombre: un libro inexistente devuelve undefined o lanza un error al leer chapters.

Build

  • vite build genera tres formatos en dist/: ES (biblia-de-jerusalen.es.js), CJS y UMD, con sourcemaps.
  • vite-plugin-dts genera los tipos en dist/bible.d.ts.
  • package.json apunta module y exports al build ES, y main al CJS.
  • Las pruebas se ejecutan con Vitest (pnpm test).

On this page