Review resumable file-download ranges

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+}