UNPKG

@push.rocks/smartbucket

Version:

A TypeScript library providing a cloud-agnostic interface for managing object storage with functionalities like bucket management, file and directory operations, and advanced features such as metadata handling and file locking.

56 lines (45 loc) 1.59 kB
// classes.smartbucket.ts import * as plugins from './plugins.js'; import { Bucket } from './classes.bucket.js'; export class SmartBucket { public config: plugins.tsclass.storage.IS3Descriptor; public s3Client: plugins.s3.S3Client; /** * the constructor of SmartBucket */ /** * the constructor of SmartBucket */ constructor(configArg: plugins.tsclass.storage.IS3Descriptor) { this.config = configArg; const protocol = configArg.useSsl === false ? 'http' : 'https'; const port = configArg.port ? `:${configArg.port}` : ''; const endpoint = `${protocol}://${configArg.endpoint}${port}`; this.s3Client = new plugins.s3.S3Client({ endpoint, region: configArg.region || 'us-east-1', credentials: { accessKeyId: configArg.accessKey, secretAccessKey: configArg.accessSecret, }, forcePathStyle: true, // Necessary for S3-compatible storage like MinIO or Wasabi }); } public async createBucket(bucketNameArg: string) { const bucket = await Bucket.createBucketByName(this, bucketNameArg); return bucket; } public async removeBucket(bucketName: string) { await Bucket.removeBucketByName(this, bucketName); } public async getBucketByName(bucketNameArg: string) { return Bucket.getBucketByName(this, bucketNameArg); } public async getBucketByNameStrict(...args: Parameters<SmartBucket['getBucketByName']>) { const bucket = await this.getBucketByName(...args); if (!bucket) { throw new Error(`Bucket ${args[0]} does not exist.`); } return bucket; } }