EdEX prepara la integracion con el runtime real de eXeLearning copiando una
instantanea local de sus bundles estaticos a app/exe-runtime/.
Desde este repositorio:
scripts/sync-exe-bundles.shPor 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 ramamainen lugar de la ultima release estable.--from-main --skip-build: copia los artefactos ya presentes en el clon demainsin reconstruirlos conbun.
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.jspublic/app/yjs/exporters.bundle.jspublic/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.
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.jsyexporters.bundle.js; - crea un
Y.Doclocal 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.zipeidevices.zipno 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.
importers.bundle.js expone en navegador:
window.SharedImporterswindow.ElpxImporterwindow.ElpxImporterCorewindow.BrowserAssetHandlerwindow.createBrowserImporter
exporters.bundle.js expone en navegador:
window.SharedExporterswindow.createSharedExporterwindow.createExporterwindow.ElpxExporterwindow.generatePrintPreview
Clases/factorias utiles dentro de SharedExporters:
YjsDocumentAdapterBrowserResourceProviderBrowserAssetProviderFflateZipProviderHtml5ExporterPageExporterScorm12ExporterElpxExportergeneratePreviewForSW