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 extends ExternalAsset, UploadAction, StorageAction {} export interface CloudService { service: U; credential?: T; } export interface CloudDatabase extends CloudService, Omit, "credential" | "parallel" | "withCommand" | "usePool">, ExecuteAction { id?: string; } export interface CloudStorage extends CloudService { bucket?: string; admin?: CloudStorageAdmin; upload?: CloudStorageUpload; download?: CloudStorageDownload; } export interface CloudStorageAdmin extends CloudStorageACL { 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 extends Partial, StreamAction { active?: boolean; overwrite?: boolean; chunkSize?: number | string; chunkLimit?: number; encryptionKey?: string | Buffer; flags?: number; admin?: CloudStorageAdmin; } export interface CloudStorageUpload extends CloudStorageACL, CloudStorageAction, CopyObjectAction { buffer?: Buffer | null; contentType?: string; metadata?: Record; tags?: Record | false; options?: T; fileGroup?: UploadContent[]; descendantsGroup?: string[]; localStorage?: boolean; endpoint?: string; all?: boolean; } export interface CloudStorageACL { publicRead?: boolean | 0; acl?: T; } export interface CloudStorageDownload extends CloudStorageAction, CopyObjectAction { 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 CopyObjectOptions extends PlainObject {} export interface UploadData extends BucketAction { upload: CloudStorageUpload; localUri: string; buffer: Buffer; } export interface DownloadData extends BucketAction { download: CloudStorageDownload; } export interface BucketAction { bucket: string; } export interface CopyObjectAction { copyObject?: ArrayOf & { options?: T }>; } 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"; export type CloudLogMessageType = "SUCCESS" | "FAIL" | "COMMAND" | "WARN" | "UPLOAD" | "DOWNLOAD" | "DELETE" | "DELAYED";