@xuanqikai/one-click-upload
Version:
A CLI tool for one-click file upload to cloud storage services (OSS, TOS)
131 lines • 3.24 kB
TypeScript
export declare enum ServiceType {
OSS = "oss",
TOS = "tos"
}
export interface UploadProgress {
loaded: number;
total: number;
percentage: number;
fileName: string;
}
export interface UploadResult {
success: boolean;
fileName: string;
localPath: string;
remotePath: string;
url?: string;
error?: string;
size?: number;
}
export interface BatchUploadResult {
totalFiles: number;
successCount: number;
failedCount: number;
results: UploadResult[];
totalSize: number;
duration: number;
}
export interface CDNConfig {
accessKeyId: string;
accessKeySecret: string;
region?: string;
endpoint?: string;
cdnDomain?: string;
autoRefresh?: boolean;
}
export interface TOSCDNConfig {
cdnDomain: string;
}
export interface OSSConfig {
region: string;
accessKeyId: string;
accessKeySecret: string;
bucket: string;
endpoint?: string;
cdn?: CDNConfig;
}
export interface TOSConfig {
region: string;
accessKeyId: string;
accessKeySecret: string;
bucket: string;
endpoint?: string;
cdn?: TOSCDNConfig;
}
export interface ServiceConfig {
name: string;
type: ServiceType;
config: OSSConfig | TOSConfig;
isDefault?: boolean;
}
export interface GlobalConfig {
services: ServiceConfig[];
defaultService?: string;
}
export interface UploadOptions {
serviceName: string;
localPath: string;
remotePath: string;
overwrite?: boolean;
enableResume?: boolean;
maxRetries?: number;
chunkSize?: number;
contentsOnly?: boolean;
customCacheControl?: string;
preload?: boolean;
preloadOptions?: {
area?: 'domestic' | 'overseas';
l2Preload?: boolean;
withHeader?: Record<string, string[]>;
queryHashkey?: boolean;
consistencyHash?: boolean;
};
}
export type ProgressCallback = (progress: UploadProgress) => void;
export interface IUploader {
upload(localPath: string, remotePath: string, options?: {
overwrite?: boolean;
enableResume?: boolean;
maxRetries?: number;
chunkSize?: number;
onProgress?: ProgressCallback;
}): Promise<UploadResult>;
uploadBatch(files: Array<{
localPath: string;
remotePath: string;
}>, options?: {
overwrite?: boolean;
enableResume?: boolean;
maxRetries?: number;
chunkSize?: number;
onProgress?: ProgressCallback;
}): Promise<BatchUploadResult>;
validateConfig(): Promise<boolean>;
preloadCDNCache?(url: string, options?: any): Promise<boolean>;
preloadCDNCacheBatch?(urls: string[], options?: any): Promise<{
success: number;
failed: number;
}>;
}
export interface FileInfo {
path: string;
name: string;
size: number;
isDirectory: boolean;
relativePath: string;
}
export interface CDNRefreshResult {
success: boolean;
taskId?: string;
url?: string;
error?: string;
}
export interface CDNRefreshTask {
taskId: string;
url: string;
status: 'Complete' | 'Refreshing' | 'Failed';
progress?: number;
createTime?: string;
finishTime?: string;
}
//# sourceMappingURL=index.d.ts.map