diff --git a/packages/streamable-fs/src/filehandle.ts b/packages/streamable-fs/src/filehandle.ts index db1a20239..3d8054bd0 100644 --- a/packages/streamable-fs/src/filehandle.ts +++ b/packages/streamable-fs/src/filehandle.ts @@ -101,9 +101,9 @@ export default class FileHandle { async size() { let size = 0; for (const chunk of this.chunks) { - const array = await this.storage.readChunk(chunk); - if (!array) continue; - size += array.length; + const length = await this.storage.chunkSize(chunk); + if (!length) throw new Error(`Found 0 byte sized chunk.`); + size += length; } return size; } diff --git a/packages/streamable-fs/src/interfaces.ts b/packages/streamable-fs/src/interfaces.ts index 7869546f1..69f7e65f8 100644 --- a/packages/streamable-fs/src/interfaces.ts +++ b/packages/streamable-fs/src/interfaces.ts @@ -43,6 +43,7 @@ export interface IFileStorage { writeChunk(chunkName: string, data: Uint8Array): Promise; deleteChunk(chunkName: string): Promise; readChunk(chunkName: string): Promise; + chunkSize(chunkName: string): Promise; listChunks(chunkPrefix: string): Promise; list(): Promise; }