diff --git a/drivers/s3/driver.ts b/drivers/s3/driver.ts index 1d758d9..4e0f910 100644 --- a/drivers/s3/driver.ts +++ b/drivers/s3/driver.ts @@ -31,6 +31,7 @@ import { type DeleteObjectCommandInput, type ListObjectsV2CommandInput, type DeleteObjectsCommandInput, + type _Object, } from '@aws-sdk/client-s3' import debug from './debug.js' @@ -82,7 +83,7 @@ export class S3Driver implements DriverContract { #createFileMetaData(apiFile: HeadObjectOutput) { const metaData: ObjectMetaData = { contentType: apiFile.ContentType, - contentLength: apiFile.ContentLength!, + contentLength: apiFile.ContentLength ?? (apiFile as _Object).Size ?? 0, etag: apiFile.ETag!, lastModified: new Date(apiFile.LastModified!), } diff --git a/tests/drivers/s3/list_all.spec.ts b/tests/drivers/s3/list_all.spec.ts index 202135f..b04a61b 100644 --- a/tests/drivers/s3/list_all.spec.ts +++ b/tests/drivers/s3/list_all.spec.ts @@ -99,6 +99,14 @@ test.group('S3 Driver | listAll | root dir', (group) => { } const { objects } = await s3fs.listAll('/', { recursive: true }) + + for (const object of objects) { + if (object.isFile) { + const metadata = await object.getMetaData() + assert.equal(metadata.contentLength, 11) + } + } + assert.includeDeepMembers(Array.from(objects), [ { isDirectory: false,