Files
quasar/plans/integrar-archive-entries-plan-phase-3-complete.md
Benito Rodríguez 7ca465fb73 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
2026-02-09 19:36:18 +01:00

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