You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
2.6 KiB
51 lines
2.6 KiB
|
2 weeks ago
|
# DateKeys App
|
||
|
|
|
||
|
|
Implementación en TypeScript del protocolo DateKeys v0.8.1 y página de prueba en el navegador. Sustituye al prototipo, archivado en `../AppOld` (API Quicknet en Go, CLI tlock y cliente Svelte, commit `4d2b0a1`).
|
||
|
|
|
||
|
|
La implementación de referencia es la librería Go `g.activething.com/go/DateKeys`, en `../datekeys-go`. El plan de trabajo está en [docs/PLAN_codec_cbor_y_pagina_svelte.md](docs/PLAN_codec_cbor_y_pagina_svelte.md).
|
||
|
|
|
||
|
|
## Contenido previsto
|
||
|
|
|
||
|
|
| Parte | Ubicación | Paso del plan |
|
||
|
|
|---|---|---|
|
||
|
|
| Codec CBOR del subconjunto, parsers de schema, DateKey, `inspect` | `src/lib/dkc/` | 4 |
|
||
|
|
| Página inspector, sin red | SvelteKit, ruta `/inspect` | 5 |
|
||
|
|
| Cifrado y descifrado en el navegador | fase 2 | 6 |
|
||
|
|
|
||
|
|
## Reglas
|
||
|
|
|
||
|
|
- Los fixtures y vectores del Go son la verdad. Este proyecto nunca genera fixtures propios: `testdata/` es una copia exacta de un commit de la librería Go.
|
||
|
|
- Dependencias de ejecución: solo `age`, `drand`, `tlock` y lo que ellas arrastran. Ahora mismo no hay ninguna.
|
||
|
|
- Tooling de desarrollo: solo el de la lista siguiente. Cualquier otra dependencia se propone por escrito y no se instala sin aprobación.
|
||
|
|
|
||
|
|
## Tooling de desarrollo
|
||
|
|
|
||
|
|
| Paquete | Versión | Estado |
|
||
|
|
|---|---|---|
|
||
|
|
| `typescript` | 5.9.3 | en `package.json`; ya usado en el prototipo |
|
||
|
|
| `vitest` | 5.0.1 | en `package.json`; ya usado en el prototipo |
|
||
|
|
| `@vitest/coverage-v8` | la de `vitest` | pendiente de aprobación; cobertura del 100 % del codec |
|
||
|
|
| `@types/node` | 24.x | pendiente de aprobación; tests que leen `testdata/` desde disco |
|
||
|
|
| `svelte`, `@sveltejs/kit`, `@sveltejs/vite-plugin-svelte`, `vite`, `svelte-check` | las del prototipo | paso 5 |
|
||
|
|
| `@sveltejs/adapter-static` | por fijar | paso 5, pendiente de aprobación: la página es estática y no necesita servidor |
|
||
|
|
|
||
|
|
Todas las versiones se fijan exactas y `package-lock.json` se versiona.
|
||
|
|
|
||
|
|
## testdata
|
||
|
|
|
||
|
|
```bash
|
||
|
|
npm run testdata:sync
|
||
|
|
```
|
||
|
|
|
||
|
|
Copia `testdata/` de `../datekeys-go` en `HEAD`, leyendo los blobs con git para no arrastrar cambios sin commit, y escribe `testdata/SOURCE.json` con el commit completo y el SHA-256 de cada fichero. Para fijar otro commit: `node scripts/sync-testdata.mjs sync --commit <rev>`.
|
||
|
|
|
||
|
|
```bash
|
||
|
|
npm run testdata:check
|
||
|
|
```
|
||
|
|
|
||
|
|
Comprueba que los ficheros coinciden con `SOURCE.json`, sin faltantes ni sobrantes, y vuelve a leerlos del repositorio Go en el commit registrado. Sin la opción `--against`, `node scripts/sync-testdata.mjs check` verifica solo la copia local. Ambos comandos usan solo Node y git.
|
||
|
|
|
||
|
|
`.gitattributes` marca `testdata/**` como binario para que git no altere ningún byte.
|
||
|
|
|
||
|
|
Copia actual: 22 ficheros de `5719f6a4b3654f608091e32290d9fcfbc7e38062`.
|