diff --git a/src/internal/type.ts b/src/internal/type.ts index feacce3b..2d2950b6 100644 --- a/src/internal/type.ts +++ b/src/internal/type.ts @@ -89,16 +89,20 @@ export interface BucketItemCopy { lastModified?: Date } -export interface BucketItem { - name: string - prefix: string - size: number - etag: string - lastModified: Date -} +export type BucketItem = + | { + name: string + size: number + etag: string + lastModified: Date + } + | { + prefix: string + size: 0 + } -export interface BucketItemWithMetadata extends BucketItem { - metadata: ItemBucketMetadata | ItemBucketMetadataList +export type BucketItemWithMetadata = BucketItem & { + metadata?: ItemBucketMetadata | ItemBucketMetadataList } export type StatObjectOpts = { diff --git a/src/internal/xml-parser.ts b/src/internal/xml-parser.ts index 9c512842..80e9d4f4 100644 --- a/src/internal/xml-parser.ts +++ b/src/internal/xml-parser.ts @@ -5,7 +5,8 @@ import { XMLParser } from 'fast-xml-parser' import * as errors from '../errors.ts' import { parseXml, sanitizeETag, sanitizeObjectKey, toArray } from './helper.ts' import { readAsString } from './response.ts' -import type { BucketItemFromList, BucketItemWithMetadata } from './type.ts' +import type { BucketItemWithMetadata } from './type' +import type { BucketItemFromList } from './type.ts' // parse XML response for bucket region export function parseBucketRegion(xml: string): string { @@ -92,7 +93,7 @@ export async function parseResponseError(response: http.IncomingMessage) { */ export function parseListObjectsV2WithMetadata(xml: string) { const result: { - objects: Array + objects: BucketItemWithMetadata[] isTruncated: boolean nextContinuationToken: string } = {