UNPKG

@itwin/object-storage-core

Version:
113 lines 7.17 kB
import { Readable } from "stream"; import { BaseDirectory, ContentHeaders, Metadata, MultipartUploadOptions, ObjectDirectory, ObjectProperties, ObjectReference, TransferConfig } from "../common"; import { ExpiryOptions, MultipartUploadData, TransferData, EntityPageListIterator, CopyOptions } from "./Interfaces"; export declare abstract class ServerStorage implements PresignedUrlProvider, TransferConfigProvider { abstract download(reference: ObjectReference, transferType: "buffer"): Promise<Buffer>; abstract download(reference: ObjectReference, transferType: "stream"): Promise<Readable>; abstract download(reference: ObjectReference, transferType: "local", localPath?: string): Promise<string>; abstract upload(reference: ObjectReference, data: TransferData, metadata?: Metadata, headers?: ContentHeaders): Promise<void>; abstract uploadInMultipleParts(reference: ObjectReference, data: MultipartUploadData, options?: MultipartUploadOptions, headers?: ContentHeaders): Promise<void>; abstract createBaseDirectory(directory: BaseDirectory): Promise<void>; listDirectories(): Promise<BaseDirectory[]>; /** * Get list of directories iterator * @param maxPageSize Max number of directories returned in the page 1000 * by default * @returns {EntityPageListIterator<BaseDirectory>} Paged iterator to list * directories. */ abstract getListDirectoriesPagedIterator(maxPageSize: number): EntityPageListIterator<BaseDirectory>; listObjects(directory: BaseDirectory): Promise<ObjectReference[]>; protected listAllEntriesFromIterator<TEntry>(pageIterator: EntityPageListIterator<TEntry>): Promise<TEntry[]>; /** * Get list of objects iterator * @param maxPageSize Max number of objects returned in the page 1000 * by default * @returns {EntityPageListIterator<ObjectReference>} Paged iterator to list * objects. */ abstract getListObjectsPagedIterator(directory: BaseDirectory, maxPageSize: number): EntityPageListIterator<ObjectReference>; /** * @deprecated Use listObjects method instead. */ abstract list(directory: BaseDirectory): Promise<ObjectReference[]>; /** * Deletes the specified directory. Note that some storage providers (Azure, * for example) do not immediately delete all associated resources and cleanup * can take up to several minutes. To check if the resource has been deleted * use the {@link exists} method. * @param {BaseDirectory} directory base directory * @returns {Promise<void>} */ abstract deleteBaseDirectory(directory: BaseDirectory): Promise<void>; /** * Deletes the specified object. Note that some storage providers (Azure, for * example) do not immediately delete all associated resources and cleanup can * take up to several minutes. To check if the resource has been deleted use * the {@link exists} method. * @param {ObjectReference} reference object reference * @returns {Promise<void>} */ abstract deleteObject(reference: ObjectReference): Promise<void>; /** * Checks if the specified directory has been deleted. * @param {BaseDirectory} directory base directory * @returns `true` if the resource has not been deleted, `false` otherwise. */ abstract baseDirectoryExists(directory: BaseDirectory): Promise<boolean>; /** * Checks if the specified object has been deleted. * @param {ObjectReference} reference object reference * @returns `true` if the resource has not been deleted, `false` otherwise. */ abstract objectExists(reference: ObjectReference): Promise<boolean>; /** * Copies object from another {@link ServerStorage} instance to this storage. * @param {ServerStorage} sourceStorage source storage. Must be of the same type as this storage. * @param {ObjectReference} sourceReference object reference in the source storage. * @param {ObjectReference} targetReference object reference in the target storage. * @returns {Promise<void>} * @note This uses server-side copying. Cross-region copy support depends on the storage provider. */ abstract copyObject(sourceStorage: ServerStorage, sourceReference: ObjectReference, targetReference: ObjectReference): Promise<void>; private listObjectsFiltered; private buildTaskKey; private copyObjectWithKey; /** * Copies objects from a base directory in another {@link ServerStorage} instance to this storage. * @param {ServerStorage} sourceStorage source storage. Must be of the same type as this storage. * @param {BaseDirectory} sourceDirectory base directory in the source storage that will be copied. * @param {BaseDirectory} target base directory in the target storage or a callback to generate object * reference in the target storage. * @param {Function} predicate optional predicate to filter objects to copy. If not specified, all * objects from the sourceDirectory will be copied. * @returns {Promise<void>} * @note This uses server-side copying. Cross-region copy support depends on the storage provider. */ copyDirectory(sourceStorage: ServerStorage, sourceDirectory: BaseDirectory, target: BaseDirectory | ((objectReference: ObjectReference) => ObjectReference), predicate?: (objectReference: ObjectReference) => boolean, copyOptions?: CopyOptions): Promise<void>; abstract updateMetadata(reference: ObjectReference, metadata: Metadata): Promise<void>; abstract getObjectProperties(reference: ObjectReference): Promise<ObjectProperties>; abstract getDownloadUrl(reference: ObjectReference, expiry?: ExpiryOptions): Promise<string>; abstract getUploadUrl(reference: ObjectReference, expiry?: ExpiryOptions): Promise<string>; /** Azure will only be limited to baseDirectory. */ abstract getDownloadConfig(directory: ObjectDirectory, expiry?: ExpiryOptions): Promise<TransferConfig>; /** Azure will only be limited to baseDirectory. */ abstract getUploadConfig(directory: ObjectDirectory, expiry?: ExpiryOptions): Promise<TransferConfig>; abstract getDirectoryAccessConfig(directory: ObjectDirectory, expiry?: ExpiryOptions): Promise<TransferConfig>; /** * Closes underlying resources, sockets for example. Clients should call this * method after an instance of this class is not used anymore to free the * resources and avoid hanging processes or similar issues. */ abstract releaseResources(): Promise<void>; } export interface PresignedUrlProvider { getDownloadUrl(reference: ObjectReference, expiry?: ExpiryOptions): Promise<string>; getUploadUrl(reference: ObjectReference, expiry?: ExpiryOptions): Promise<string>; } export interface TransferConfigProvider { getDownloadConfig(directory: ObjectDirectory, expiry?: ExpiryOptions): Promise<TransferConfig>; getUploadConfig(directory: ObjectDirectory, expiry?: ExpiryOptions): Promise<TransferConfig>; getDirectoryAccessConfig(directory: ObjectDirectory, expiry?: ExpiryOptions): Promise<TransferConfig>; } //# sourceMappingURL=ServerStorage.d.ts.map