@deks-js/document
v6.1.0
Published
Portable DEKS document types, validation, and pure editing commands.
Maintainers
Readme
@deks-js/document
Contrato portable y offline de DEKS.
DeksDocument: único JSON canónico normalizado.assertDeksDocument,parseDeksJsonydeksDocumentSchema: validación defensiva y schema exhaustivo, también disponible como@deks-js/document/schema.DeksPresentation: fachada scripteable que produce el mismo documento.DeksCommand, batches/transacciones yDeksChangeSet: edición pura por revisión.- Grupos lógicos nombrados mediante identidades
kind: "group"yparentId, sin transformar la geometría absoluta de sus miembros.effectiveGroupId,areElementsCollisionCandidatesy el filtro indexadocreateElementCollisionCandidatePredicatepermiten omitir del análisis de colisiones a miembros del mismo grupo efectivo.update-element-identityusaparentId: nullpara desagrupar y elimina el campo del documento resultante. createDeksFile/readDeksFile: contenedor.deksdeterminista, content-addressed y sin dependencia de filesystem.DeksSlideNarration,set-slide-narrationyclear-slide-narration: guion y pausas portables, con referencia opcional a audio incrustado y procedencia humana o sintética.inspectDeksImage/normalizeDeksSvgyDEKS_IMAGE_LIMITS: una frontera portable para PNG, JPEG, GIF, WebP y el perfil SVG seguro y canónico de DEKS.sniffDeksImageMediaType/inspectAndNormalizeDeksImage: detección por bytes, normalización y errores estables que Web, Desktop y sus adaptadores pueden traducir a su propia interfaz.inspectDeksAudio/inspectAndNormalizeDeksAudio,sniffDeksAudioMediaTypeyDEKS_AUDIO_LIMITS: inspección determinista para PCM RIFF/WAV canónico y MPEG-1 Layer III.inspectAndNormalizeDeksAsset: dispatcher portable único para imágenes y audio sin confiar en extensiones de archivo.normalizeDeksFileAssets: verifica que los bytes entregados por un host correspondan exactamente a los assetsembeddeddeclarados por el documento sin persistir metadata del host.
El inspector recorre el contenedor raster completo: exige IEND/EOI/trailer y longitudes RIFF
coherentes, cuenta APNG fcTL, GIF image descriptors y WebP ANMF, y limita cada imagen a 200
frames y 100 MP agregados además de 40 MP por frame. Es una validación portable de estructura; el
host Cloud decodifica además los píxeles con Pillow antes de persistirlos.
JSON es la fuente de verdad. Tablas relacionales, archivos, estado React y snapshots del renderer son proyecciones. Los hosts resuelven assets y persistencia sin agregar campos al documento.
La narración vive en la slide, no en el renderer visual. Core conserva sólo el guion, pausas, referencia content-addressed y procedencia; elección de voz, proveedor, consentimiento, generación, reproducción y sincronización pertenecen a Web o Desktop.
El SVG aceptado se parsea como XML con namespaces, nunca mediante regex o DOM. Core elimina la
superficie activa (scripts, estilos, eventos, referencias externas, texto renderizado, fuentes,
SMIL e imágenes anidadas), limita complejidad y produce UTF-8 determinista antes de calcular el
hash del asset. Al leer un .deks, los SVG deben contener exactamente esos bytes canónicos.
Apache-2.0.
