- Añade `computeHashesFromStream` para hashing desde streams - Adapta `importDirectory` para procesar entradas internas usando `streamArchiveEntry` - Añade tests unitarios para hashing por stream e import de entradas de archive
35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
## Phase 3 Complete: Hashing por stream y soporte en importService
|
|
|
|
TL;DR: Implementado `computeHashesFromStream` y adaptado `importDirectory` para procesar entradas internas de archivos usando `archiveReader.streamArchiveEntry`. Añadidos tests unitarios TDD que validan hashing desde streams y el flujo de import para entradas internas.
|
|
|
|
**Files created/changed:**
|
|
|
|
- backend/src/services/checksumService.ts (añade `computeHashesFromStream`)
|
|
- backend/src/services/importService.ts (usa `streamArchiveEntry` y `computeHashesFromStream` para `isArchiveEntry`)
|
|
- backend/tests/services/checksumService.stream.spec.ts (nuevo)
|
|
- backend/tests/services/importService.archiveEntry.spec.ts (nuevo)
|
|
|
|
**Functions created/changed:**
|
|
|
|
- `computeHashesFromStream(rs)` — calcula `md5`, `sha1`, `crc32` y `size` desde un `Readable`.
|
|
- `importDirectory` — para objetos con `isArchiveEntry` obtiene un stream con `streamArchiveEntry(containerPath, entryPath)` y calcula hashes en streaming.
|
|
|
|
**Tests creados/ejecutados:**
|
|
|
|
- `backend/tests/services/checksumService.stream.spec.ts` — pasa (1 test).
|
|
- `backend/tests/services/importService.archiveEntry.spec.ts` — pasa (1 test).
|
|
|
|
**Review Status:** APPROVED with minor recommendations
|
|
|
|
**Notas / Recomendaciones:**
|
|
|
|
- Se sugiere limpiar listeners en `computeHashesFromStream` (evitar fugas con streams inusuales).
|
|
- Algunos specs usan casts `as unknown as vi.Mock`; si TypeScript da errores, convertir esos casts a `import type { Mock } from 'vitest'` y usar `Mock` o usar `any`.
|
|
|
|
**Git Commit Message:**
|
|
feat: stream hashing and archive-entry import support
|
|
|
|
- Añade `computeHashesFromStream` para hashing desde streams
|
|
- Adapta `importDirectory` para procesar entradas internas usando `streamArchiveEntry`
|
|
- Añade tests unitarios para hashing por stream e import de entradas de archive
|