@willedtech/course-digest
v0.1.0
Published
Cálculo canónico y portable del packageDigest de un WillEdTech Course Package (ADR-005), sin dependencias de tar, Docker, ORAS, GHCR ni Runtime.
Maintainers
Readme
@willedtech/course-digest
Cálculo canónico y portable del packageDigest de un WillEdTech Course Package (ADR-005): identidad de contenido del árbol de archivos, independiente de cualquier formato de transporte.
Este paquete es la fuente única de verdad del algoritmo. No depende de tar, Docker, ORAS, GHCR, credenciales, referencias OCI, publicación, Runtime ni Course Store — sólo módulos nativos de Node.js. @willedtech/course-oci lo consume como dependencia local (file:../course-digest) para conservar su API histórica.
packageDigest no es ociManifestDigest ni el digest de una imagen Runtime: es exclusivamente la identidad del contenido lógico del Course Package. Este paquete no contiene ni asume Runtime ni OCI: no construye manifests, no habla con un registry y no depende de Docker/ORAS/GHCR.
Instalación
Paquete canónico público (registro npmjs.org, scope @willedtech,
licencia Apache-2.0):
npm install @willedtech/course-digestNota: la primera publicación pública en
0.1.0es un checkpoint operativo posterior (Fase B dedocs/platform/canonical-package-distribution-v1.md); hasta entonces,npm installde este paquete no resuelve un artefacto público. Para desarrollo dentro de este monorepo, usa la instalación local:
npm ci --prefix packages/course-digestEjemplo mínimo
import { calculateCoursePackageDigest } from '@willedtech/course-digest';
const digest = await calculateCoursePackageDigest('./mi-course-package');Exporta
calculateCoursePackageDigest(coursePath)— SHA-256 sobre el recorrido canónico: por cada archivo, en orden lexicográfico (en) de su ruta relativa POSIX, concatena el marcadorfile\0, la ruta relativa,\0, la longitud en bytes,\0, los bytes del archivo y\0.listCanonicalFiles(rootPath)— recorrido recursivo determinístico que devuelve{ absolutePath, relativePath }ordenados; rechaza symlinks; omite rutas ignoradas.isIgnoredRelativePath(relativePath)— reglas de exclusión: segmentos.git,.DS_Store,Thumbs.db, sufijo.tmp, prefijo.~, sufijo~.
No exporta helpers de tar, archivos OCI, registry, credenciales ni Runtime; esas responsabilidades siguen siendo exclusivas de @willedtech/course-oci.
Versión npm vs. schemaVersion
La versión npm de este paquete (0.1.0, SemVer 0.x) versiona la
distribución del algoritmo de digest, no un schemaVersion de Course
Package: este paquete no define ni consume schemaVersion — esa
responsabilidad es de @willedtech/course-schemas.
Política de compatibilidad (0.x)
Mientras la versión mayor sea 0, cualquier versión 0.x.y puede introducir
cambios incompatibles en el algoritmo canónico, siguiendo SemVer 0.x. Los
consumidores internos (@willedtech/course-oci) fijan versiones exactas
hasta que este paquete alcance 1.0.0. El algoritmo de digest en sí (ADR-005)
está fuera de alcance de este checkpoint y no cambia por una nueva versión
npm.
Repositorio
https://github.com/herrerawilliamh/lti-provider — directorio
packages/course-digest.
Licencia
Apache License 2.0 © 2026 William Humberto Herrera Rey.
Esta licencia aplica únicamente a packages/course-digest, no al
repositorio lti-provider en su conjunto (que no tiene un LICENSE raíz).
Pruebas
npm ci --prefix packages/course-digest
npm test --prefix packages/course-digest