CREAR / TOOLKIT
Toolkit para creación por código
Toolkit es la opción de autoría cuando el curso se genera desde código, una integración de servidor o un proceso automatizado. Si estás creando manualmente, Studio suele ser el recorrido más directo.
1. Antes de empezar
Toolkit se instala mediante NPM y requiere Node.js 22 o posterior. La prerelease pública actual es 0.5.0-alpha.11 bajo el dist-tag next.
npm install @p2lrn/toolkit@0.5.0-alpha.11Subpaths públicos: @p2lrn/toolkit/core, /reader, /creator, /authoring, /host y /document-reader.
2. Recorrido habitual
El flujo de creación por código tiene cuatro pasos: crear un workspace, añadir estructura y recursos, aplicar reglas opcionales y construir el paquete final.
import { P2LRNAuthoringWorkspace } from '@p2lrn/toolkit/authoring';
const workspace = P2LRNAuthoringWorkspace.create('./workspace', {
title: 'Curso de seguridad básica',
language: 'es',
});
workspace.addUnit({
key: 'unidad-1',
title: 'Fundamentos',
});
workspace.addFile({
source: './material/intro.html',
key: 'intro',
title: 'Introducción',
parent: 'unidad-1',
mediaType: 'text/html',
});
workspace.build('./curso.p2lrn', {
strictProfiles: true,
});El workspace es el proyecto editable; curso.p2lrn es el archivo portable que entregarás al Player.
3. Operaciones de autoría
create / open / loadP2LRNAuthoringWorkspace y los aliases createAuthoringWorkspace(), openAuthoringWorkspace(), loadAuthoringWorkspace() gestionan el proyecto editable.
addUnitAñade una unidad dentro del curso u otra unidad.
addFile / addUrl / addWebContentIncorpora recursos locales, URLs o contenido web.
addQuestionnaire / addComponent / addCompositeCrea evaluación y contenido nativo.
setCourseMetadata / setEntityText / setChildrenActualiza metadatos/texto y orden explícito.
setCourseRightsGuarda author, createdAt, license y copyrightHolder en la extensión portable de derechos.
setProgressionAplica obligatoriedad, bloqueos, finalización, nota mínima y prerrequisitos.
buildConstruye y valida el paquete final.
4. Leer documentos antes de convertirlos en curso
Reader extrae estructura; no decide por ti qué parte del documento debe convertirse en una lección, actividad o recurso. Esa decisión permanece en Studio, en tu código o en la lógica de tu aplicación.
Extrae estructura y contenido interno.
Lee texto cuando está disponible; necesita pdfjs-dist como dependencia opcional.
Lee el contenido del contenedor.
Realiza lectura estructural ligera.
5. Progresión y cuestionarios
Las reglas de navegación se añaden al mismo workspace. Consulta Progresión para required, gateFollowing, nota mínima y prerrequisitos. Para evaluaciones y juegos consulta Cuestionarios y juegos; esas guías incluyen ejemplos válidos y los identificadores técnicos exactos.
6. Cuándo usar la CLI en lugar de la API
La API encaja mejor dentro de una aplicación TypeScript. La CLI es útil en scripts, terminales, procesos de integración o comprobaciones manuales. Ambas trabajan sobre el mismo formato.
7. Herramientas avanzadas
Divide recursos grandes en partes verificadas. Ver guía.
Crea y aplica diferencias entre paquetes cuando necesitas transportar cambios.
Genera claves, firma y verifica paquetes mediante firmas separadas.
Permiten revisar estructura, planes y contenido antes o después del build.
8. Host autoritativo de referencia
El subpath @p2lrn/toolkit/host incorpora una implementación server-side para probar y construir la frontera autoritativa del host.
createReferenceAuthoritativeHost()Expone un Host Adapter v1 con partición definida por el servidor, estado, eventos, recursos y calificación autoritativa.
createMemoryAuthoritativeHostStore()Store de referencia para tests/procesos efímeros.
createJsonFileAuthoritativeHostStore(path)Persistencia JSON atómica de referencia para un único proceso.
reportScore() exige un grade() del servidor que devuelva authoritative:true; no eleva automáticamente una nota procedente del navegador.