wildboar-context
Version:
Library for constructing context objects for pure functional programming.
61 lines • 2.83 kB
TypeScript
/// <reference types="node" />
import Plugin from "../Plugin";
import PluginKind from "../PluginKind";
import type { Readable } from "stream";
export interface StorageObjectID {
key: string;
version?: string;
}
export interface StorageObjectInfo extends StorageObjectID {
lastModified?: Date;
sizeInBytes?: number;
storageClass?: string;
owner?: string;
etag?: string;
}
export interface BucketID {
name: string;
}
export interface BucketInfo extends BucketID {
versioning?: boolean;
}
export interface StorageObjectPermissions {
create: boolean;
read: boolean;
update: boolean;
delete: boolean;
append: boolean;
createVersion: boolean;
readVersion: boolean;
deleteVersion: boolean;
readTags: boolean;
writeTags: boolean;
}
export interface PresignedURLOptions {
httpsOnly?: boolean;
startDate?: Date;
endDate?: Date;
permissions?: Partial<StorageObjectPermissions>;
}
export declare type Tags = Record<string, string>;
export default abstract class StoragePlugin extends Plugin {
readonly kind: PluginKind.StoragePlugin;
abstract checkBucket(bucketName: string): Promise<boolean>;
abstract checkObject(bucketName: string, oid: StorageObjectID): Promise<boolean>;
abstract copyObject(bucketName: string, srcOID: StorageObjectID, destOID: StorageObjectID, overwrite?: boolean): Promise<void>;
abstract createBucket(bucketName: string, options?: Record<string, string>): Promise<void>;
abstract deleteBucket(bucketName: string): Promise<void>;
abstract deleteObject(bucketName: string, oid: StorageObjectID): Promise<void>;
abstract deleteObjects(bucketName: string, objects: StorageObjectInfo[]): Promise<void>;
abstract deleteObjectTagging(bucketName: string, oid: StorageObjectID): Promise<void>;
abstract getObject(bucketName: string, oid: StorageObjectID): Promise<Buffer>;
abstract getObjectTagging(bucketName: string, oid: StorageObjectID): Promise<Tags>;
abstract getPresignedURL(bucketName: string, oid: StorageObjectID | undefined, options: PresignedURLOptions): Promise<string>;
abstract listBuckets(): Promise<AsyncIterableIterator<BucketInfo>>;
abstract listObjects(bucketName: string, prefix?: string): Promise<AsyncIterableIterator<StorageObjectInfo>>;
abstract listObjectVersions(bucketName: string, oid: StorageObjectID): Promise<AsyncIterableIterator<StorageObjectInfo>>;
abstract putObject(bucketName: string, oid: StorageObjectID, content: Buffer | Readable): Promise<void>;
abstract putObjectTagging(bucketName: string, oid: StorageObjectID, tags: Tags): Promise<void>;
abstract urlOf(bucketName: string, oid: StorageObjectID): Promise<string>;
}
//# sourceMappingURL=StoragePlugin.d.ts.map