Saltar al contenido principal

HasherService

HasherService define la API para calcular hashes de archivos, chunks, streams y buffers. Es abstracto; las implementaciones reales están en la capa de infraestructura. (e.j., HashWasmHasherService en Node.js).

Esta página documenta la API pública disponible para el SDK de Node.js.


Métodos

MétodoDevuelveDescripción
hashFile(filePath, rootDir, chunkSize)Promise<FileEntry>Devuelve un FileEntry calculando el hash del archivo y los hashes de los chunks.
hashStream(stream, chunkSize, onChunk)Promise<void>Procesa un stream de chunks y devuelve los chunks procesados en una callback.
hashBuffer(data)Promise<string>Devuelve el hash de un buffer (string hex).
verifyChunk(data, expectedHash)Promise<boolean>Verifica que un chunk tiene el hash esperado.
verifyFile(path, expectedHash)Promise<boolean>Verifica que un archivo tiene el hash esperado.
createStreamingHasher()Promise<StreamingHasher>Crea un objeto StreamingHasher para hashing incremental.

Detalles de métodos

hashFile(filePath, rootDir, chunkSize)

Devuelve el FileEntry del archivo dado, calculando su hash y los hashes de sus chunks.

NOTA IMPORTANTE: el tamaño de chunk seleccionado debe ser el mismo en todas las operaciones de rac-delta

Parámetros:

NombreTipoDescripción
filePathstringRuta relativa del archivo (dir/file.txt)
rootDirstringDirectorio raíz del índice (dir)
chunkSizenumberTamaño en bytes de cada chunk (recomendado 1MB)

Devuelve: Promise<FileEntry>


hashStream(stream, chunkSize, onChunk)

Procesa un stream de chunks, llama a onChunk para cada chunk procesado.

Parámetros:

NombreTipoDescripción
streamAsyncChunkStreamEl stream de chunks de entrada.
chunkSizenumberEl tamaño máximo que cada chunk debe tener al procesarse.
onChunk(data: Uint8Array, chunk: Chunk) => voidCallback para cada chunk hasheado.
export interface AsyncChunkStream extends AsyncIterable<Uint8Array> {
nextChunk(): Promise<Uint8Array | null>;
reset?(): Promise<void>;
close?(): Promise<void>;
}

Devuelve: Promise<void>


hashBuffer(data)

Hashea un buffer.

ParámetroTipoDescripción
dataUint8ArrayEl buffer para hashear.

Devuelve: Promise<string> (hex)


verifyChunk(data, expectedHash)

Comprueba si un chunk tiene el hash esperado.

ParámetroTipoDescripción
dataUint8ArrayEl chunk.
expectedHashstringHash esperado.

Devuelve: Promise<boolean>


verifyFile(path, expectedHash)

Comprueba si un archivo tiene el hash esperado.

ParámetroTipoDescripción
pathstringRuta del archivo.
expectedHashstringHash esperado.

Devuelve: Promise<boolean>


createStreamingHasher()

Crea una instancia de StreamingHasher:

export interface StreamingHasher {
update(data: Uint8Array | Buffer): void;
digest(encoding?: 'hex'): string;
}

Devuelve: Promise<StreamingHasher>

Ejemplo

const fileEntry = await racDeltaClient.hasher.hashFile('my-dir/file.txt', 'my-dir', 1024 * 1024);

Relacionado