src/resumable-download-types.tsTypeScript
@@ -0,0 +1,30 @@
1+
export interface RemoteResponse {2+
status: number;3+
headers: Readonly<Record<string, string | undefined>>;4+
body: AsyncIterable<Uint8Array>;5+
}6+
7+
export interface DownloadHttpClient {8+
get(9+
url: string,10+
headers: Readonly<Record<string, string>>,11+
): Promise<RemoteResponse>;12+
}13+
14+
export interface DownloadWriter {15+
write(chunk: Uint8Array): Promise<void>;16+
close(): Promise<void>;17+
abort(): Promise<void>;18+
}19+
20+
export interface DownloadFiles {21+
size(path: string): Promise<number>;22+
readMetadata(path: string): Promise<{ etag: string; bytes: number } | null>;23+
openAppend(path: string): Promise<DownloadWriter>;24+
openReplace(path: string): Promise<DownloadWriter>;25+
writeMetadata(path: string, metadata: { etag: string; bytes: number }): Promise<void>;26+
}27+
28+
export interface DigestVerifier {29+
verify(path: string, digestHeader: string): Promise<boolean>;30+
}