@quatrain/storage-s3 1.2.6 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -118,5 +118,5 @@ export declare class S3StorageAdapter extends AbstractStorageAdapter {
118
118
  * @param bucket - Target bucket name.
119
119
  * @returns A promise resolving to bucket statistics.
120
120
  */
121
- getBucketStats(bucket?: string): Promise<BucketStatsType>;
121
+ getBucketStats(bucket?: string, prefix?: string): Promise<BucketStatsType>;
122
122
  }
@@ -301,7 +301,7 @@ class S3StorageAdapter extends storage_1.AbstractStorageAdapter {
301
301
  * @param bucket - Target bucket name.
302
302
  * @returns A promise resolving to bucket statistics.
303
303
  */
304
- getBucketStats(bucket) {
304
+ getBucketStats(bucket, prefix) {
305
305
  return __awaiter(this, void 0, void 0, function* () {
306
306
  var _a;
307
307
  const targetBucket = bucket || this._params.config.bucket;
@@ -310,11 +310,13 @@ class S3StorageAdapter extends storage_1.AbstractStorageAdapter {
310
310
  let isTruncated = true;
311
311
  let continuationToken = undefined;
312
312
  const folders = {};
313
- storage_1.Storage.info(`Fetching bucket stats for ${targetBucket}`);
313
+ storage_1.Storage.info(`Fetching bucket stats for ${targetBucket} (prefix: ${prefix || 'none'})`);
314
+ const s3Prefix = prefix ? (prefix.endsWith('/') ? prefix : prefix + '/') : undefined;
314
315
  while (isTruncated) {
315
316
  const input = {
316
317
  Bucket: targetBucket,
317
318
  ContinuationToken: continuationToken,
319
+ Prefix: s3Prefix,
318
320
  };
319
321
  const command = new client_s3_1.ListObjectsV2Command(input);
320
322
  const res = yield this._client.send(command);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quatrain/storage-s3",
3
- "version": "1.2.6",
3
+ "version": "1.2.7",
4
4
  "description": "Storage adapter for S3 compatible services",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "dependencies": {
34
34
  "@aws-sdk/client-s3": "^3.337.0",
35
35
  "@aws-sdk/s3-request-presigner": "^3.342.0",
36
- "@quatrain/storage": "^1.2.7",
36
+ "@quatrain/storage": "^1.2.8",
37
37
  "fs-extra": "^11.2.0"
38
38
  },
39
39
  "scripts": {
@@ -343,7 +343,7 @@ export class S3StorageAdapter extends AbstractStorageAdapter {
343
343
  * @param bucket - Target bucket name.
344
344
  * @returns A promise resolving to bucket statistics.
345
345
  */
346
- async getBucketStats(bucket?: string): Promise<BucketStatsType> {
346
+ async getBucketStats(bucket?: string, prefix?: string): Promise<BucketStatsType> {
347
347
  const targetBucket = bucket || this._params.config.bucket
348
348
  let totalObjects = 0
349
349
  let totalSize = 0
@@ -351,12 +351,15 @@ export class S3StorageAdapter extends AbstractStorageAdapter {
351
351
  let continuationToken: string | undefined = undefined
352
352
  const folders: Record<string, any> = {}
353
353
 
354
- Storage.info(`Fetching bucket stats for ${targetBucket}`)
354
+ Storage.info(`Fetching bucket stats for ${targetBucket} (prefix: ${prefix || 'none'})`)
355
+
356
+ const s3Prefix = prefix ? (prefix.endsWith('/') ? prefix : prefix + '/') : undefined
355
357
 
356
358
  while (isTruncated) {
357
359
  const input: ListObjectsV2CommandInput = {
358
360
  Bucket: targetBucket,
359
361
  ContinuationToken: continuationToken,
362
+ Prefix: s3Prefix,
360
363
  }
361
364
  const command = new ListObjectsV2Command(input)
362
365
  const res: ListObjectsV2CommandOutput = await this._client.send(command)