UNPKG

@e-mc/types

Version:

Type definitions for E-mc.

114 lines (95 loc) 3.54 kB
import type { DbDataSource, LocationUri, StorageAction } from './squared'; import type { ExternalAsset, StreamAction } from './asset'; import type { ExecuteAction } from './db'; export interface UploadAction { cloudUrl?: string; } export interface RecursiveAction { recursive?: boolean; } export interface CloudAsset<T = CloudStorage> extends ExternalAsset, UploadAction, StorageAction<T> {} export interface CloudService<T = unknown, U = string> { service: U; credential?: T; } export interface CloudDatabase<T = unknown, U = PlainObject, V = unknown, W = unknown, X = unknown> extends CloudService<X>, Omit<DbDataSource<T, U, V>, "credential" | "parallel" | "withCommand" | "usePool">, ExecuteAction<W> { id?: string; } export interface CloudStorage<T = unknown, U = string> extends CloudService<T, U> { bucket?: string; admin?: CloudStorageAdmin; upload?: CloudStorageUpload; download?: CloudStorageDownload; } export interface CloudStorageAdmin<T = unknown, U = string, V = unknown, W = unknown, X = unknown, Y = unknown> extends CloudStorageACL<U> { emptyBucket?: boolean | DeleteObjectsOptions; configBucket?: { create?: T; policy?: V; tags?: unknown; website?: BucketWebsiteOptions; retentionPolicy?: W; cors?: X; lifecycle?: Y; }; /** @deprecated */ recursive?: boolean; preservePath?: boolean; } export interface CloudStorageAction<T = unknown, U = string, V = unknown, W = unknown, X = unknown, Y = unknown> extends Partial<LocationUri>, StreamAction { active?: boolean; overwrite?: boolean; chunkSize?: number | string; chunkLimit?: number; flags?: number; admin?: CloudStorageAdmin<T, U, V, W, X, Y>; } export interface CloudStorageUpload<T = unknown, U = string, V = unknown, W = string, X = unknown, Y = unknown, Z = unknown> extends CloudStorageACL<U>, CloudStorageAction<V, W, unknown, X, Y, Z> { buffer?: Buffer | null; contentType?: string; metadata?: Record<string, string>; tags?: Record<string, string> | false; options?: T; fileGroup?: UploadContent[]; localStorage?: boolean; endpoint?: string; all?: boolean; } export interface CloudStorageACL<T = string> { publicRead?: boolean | 0; acl?: T; } export interface CloudStorageDownload<T = unknown, U = unknown> extends CloudStorageAction { keyname?: string; versionId?: string; options?: U; deleteObject?: T; waitStatus?: boolean; } export interface BucketWebsiteOptions { indexPage?: string; errorPage?: string; indexPath?: string; errorPath?: string; } export interface DeleteObjectsOptions extends RecursiveAction, PlainObject {} export interface UploadData<T = unknown, U = string, V = unknown, W = string, X = unknown, Y = unknown, Z = unknown> extends BucketAction { upload: CloudStorageUpload<T, U, V, W, X, Y, Z>; localUri: string; buffer: Buffer; } export interface DownloadData<T = unknown, U = unknown> extends BucketAction { download: CloudStorageDownload<T, U>; } export interface BucketAction { bucket: string; } export interface UploadAssetOptions { contentType?: string; ignoreProcess?: boolean; preferBuffer?: boolean; } export type UploadContent = [Bufferable, string, string?]; export type CloudSource = "atlas" | "aws" | "aws-v3" | "az" | "azure" | "gcp" | "gcloud" | "oci"; export type CloudFeatures = "storage" | "database"; export type CloudFunctions = "upload" | "download";