Skip to content

Latest commit

 

History

History
137 lines (102 loc) · 3.86 KB

File metadata and controls

137 lines (102 loc) · 3.86 KB

Runtime estatico de eXeLearning

EdEX prepara la integracion con el runtime real de eXeLearning copiando una instantanea local de sus bundles estaticos a app/exe-runtime/.

Sincronizar bundles

Desde este repositorio:

scripts/sync-exe-bundles.sh

Por defecto el script consulta la ultima release estable publicada en GitHub. Si app/exe-runtime/manifest.json ya indica esa misma release, no hace nada. Si detecta una release nueva, descarga su paquete estatico y actualiza:

exelearning-static-vX.Y.Z.zip

El origen oficial sigue siendo:

https://github.com/exelearning/exelearning

Opciones utiles:

scripts/sync-exe-bundles.sh --force
scripts/sync-exe-bundles.sh --from-main
scripts/sync-exe-bundles.sh --from-main --skip-build
  • --force: vuelve a sincronizar desde la ultima release aunque el manifest ya marque esa misma version.
  • --from-main: usa una instantanea de desarrollo de la rama main en lugar de la ultima release estable.
  • --from-main --skip-build: copia los artefactos ya presentes en el clon de main sin reconstruirlos con bun.

En modo --from-main, el script hace un git clone --depth 1 en un directorio temporal, reconstruye los bundles si procede y despues copia a este repo solo los artefactos y plantillas que usa EdEX.

Si quieres revisar o depurar el origen en local, la copia disponible en esta maquina esta en:

/home/jjdeharo/Documentos/github/OTROS_REPOSITORIOS/exelearning

El script copia:

  • public/app/yjs/importers.bundle.js
  • public/app/yjs/exporters.bundle.js
  • public/bundles/
  • public/files/perm/themes/base/

Despues genera app/exe-runtime/manifest.json con el origen usado (release o main), release o rama, commit, version, fecha UTC y hashes SHA-256 de los archivos copiados.

Uso previsto

Esta carpeta aun no sustituye la previsualizacion actual. Es una base estable para crear despues el adaptador local que cargue ELPX, resuelva recursos y exporte Website, Single Page y SCORM con los exportadores oficiales.

El primer adaptador esta en:

app/exe-runtime/exe-runtime.js

API inicial:

import { createExeRuntime } from "./app/exe-runtime/exe-runtime.js";

const runtime = createExeRuntime();
await runtime.init();
await runtime.loadElpx(file);
const metadata = runtime.getMetadata();
const pages = runtime.getPages();
const preview = await runtime.exportPreview({ format: "html5" });

Estado actual:

  • carga yjs.min.js, importers.bundle.js y exporters.bundle.js;
  • crea un Y.Doc local sin IndexedDB ni WebSocket;
  • importa ELPX con SharedImporters.createBrowserImporter;
  • guarda assets importados en memoria;
  • resuelve tema, CSS base, librerias base, librerias comunes bajo demanda, SCORM e iDevices desde app/exe-runtime/resources/;
  • exporta ELPX desde el documento importado usando el tema editado de EdEX;
  • expone diagnostico con runtime.diagnostics().

Notas de rendimiento:

  • common.zip e idevices.zip no se materializan completos para cada preview. El adaptador abre el ZIP y extrae solo la carpeta de la libreria o iDevice solicitado.
  • A largo plazo sigue siendo mejor partirlos en bundles pequenos por libreria/iDevice o generar un indice ligero con acceso por entrada.

Globals expuestos por los bundles

importers.bundle.js expone en navegador:

  • window.SharedImporters
  • window.ElpxImporter
  • window.ElpxImporterCore
  • window.BrowserAssetHandler
  • window.createBrowserImporter

exporters.bundle.js expone en navegador:

  • window.SharedExporters
  • window.createSharedExporter
  • window.createExporter
  • window.ElpxExporter
  • window.generatePrintPreview

Clases/factorias utiles dentro de SharedExporters:

  • YjsDocumentAdapter
  • BrowserResourceProvider
  • BrowserAssetProvider
  • FflateZipProvider
  • Html5Exporter
  • PageExporter
  • Scorm12Exporter
  • ElpxExporter
  • generatePreviewForSW