/** * 上传结果上报抽象(Reporter)。 * 默认实现为控制台输出,可扩展为企业微信、钉钉等通知。 */ export type UploadStatus = 'success' | 'failed' | 'skipped'; /** 单个文件的上传结果,供 Reporter 使用 */ export interface UploadFileResult { localPath: string; relativePath: string; bucket: string; key: string; status: UploadStatus; error?: Error; /** 配置了 CDN 时的完整访问地址,由 buildCdnAccessUrl 生成 */ accessUrl?: string; } /** 整次上传的汇总统计(含前缀等上下文,便于查验) */ export interface UploadSummary { total: number; success: string[]; failed: string[]; skipped: string[]; /** 本次上传的前缀/配置,供报告展示 */ context?: { bucket: string; basePrefix: string; pathPrefix?: string; localDir: string; cdnBaseUrl?: string; }; } /** Reporter 接口:上传开始、进度、每个文件结果、全部完成时回调 */ export interface Reporter { onStart?(context: { env?: string; bucket: string; basePrefix: string; pathPrefix?: string; localDir: string; cdnBaseUrl?: string; }): void | Promise; /** 每完成一个文件后调用,便于显示进度(当前数、总数) */ onProgress?(current: number, total: number): void | Promise; onFileResult?(result: UploadFileResult): void | Promise; onComplete?(summary: UploadSummary): void | Promise; } /** 默认实现:将上传进度与结果输出到控制台 */ export declare class ConsoleReporter implements Reporter { private progressBar; onStart(context: { env?: string; bucket: string; basePrefix: string; pathPrefix?: string; localDir: string; cdnBaseUrl?: string; }): void; onProgress(current: number, total: number): void; onFileResult(_result: UploadFileResult): void; onComplete(summary: UploadSummary): void; } /** 脚本模式:进度与摘要打 stderr,便于调用方从 stdout 只拿到结果数组(如带 --hash 时) */ export declare class ScriptReporter implements Reporter { onStart(context: { env?: string; bucket: string; basePrefix: string; pathPrefix?: string; localDir: string; cdnBaseUrl?: string; }): void; onProgress(current: number, total: number): void; onFileResult(_result: UploadFileResult): void; onComplete(summary: UploadSummary): void; } //# sourceMappingURL=reporter.d.ts.map