@aws-amplify/storage
Version:
Storage category of aws-amplify
39 lines (37 loc) • 1.47 kB
JavaScript
;
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
Object.defineProperty(exports, "__esModule", { value: true });
exports.isPathFolder = void 0;
const utils_1 = require("@aws-amplify/core/internals/utils");
const s3data_1 = require("./client/s3data");
const userAgent_1 = require("./userAgent");
/**
* Determines if a given S3 key represents a folder by checking if objects exist with that prefix.
*
* @param params - Configuration object for the folder check
* @returns Promise that resolves to true if the key represents a folder, false otherwise
*/
const isPathFolder = async (params) => {
const { s3Config, bucket, key, expectedBucketOwner } = params;
try {
const prefix = key.endsWith('/') ? key : `${key}/`;
const result = await (0, s3data_1.listObjectsV2)({
...s3Config,
userAgentValue: (0, userAgent_1.getStorageUserAgentValue)(utils_1.StorageAction.Remove),
}, {
Bucket: bucket,
Prefix: prefix,
MaxKeys: 1,
ExpectedBucketOwner: expectedBucketOwner,
});
const isFolder = !!(result.Contents && result.Contents.length > 0) ||
!!(result.CommonPrefixes && result.CommonPrefixes.length > 0);
return isFolder;
}
catch (error) {
return false;
}
};
exports.isPathFolder = isPathFolder;
//# sourceMappingURL=isPathFolder.js.map