Review a progressive image uploader

src/image-upload-types.tsTypeScript
@@ -0,0 +1,17 @@
1+export interface UploadApi {
2+ create(file: File): Promise<{ token: string; uploadUrl: string }>;
3+ put(
4+ uploadUrl: string,
5+ file: File,
6+ options: { signal: AbortSignal; onProgress(percent: number): void },
7+ ): Promise<void>;
8+ complete(token: string): Promise<void>;
9+}
10+
11+export interface UploadItem {
12+ id: string;
13+ file: File;
14+ previewUrl: string;
15+ progress: number;
16+ status: "uploading" | "complete" | "failed";
17+}