Typescript types for the newly-announced R2 worker bindings for multipart uploads.
// https://github.com/cloudflare/workerd/blob/main/src/workerd/api/r2-bucket.h
export interface R2BucketWithMultipart extends R2Bucket {
createMultipartUpload(key: string, opts?: R2MultipartOptions): Promise<R2MultipartUpload>;
resumeMultipartUpload(key: string, uploadId: string): Promise<R2MultipartUpload>;
}
export interface R2MultipartOptions {
readonly httpMetadata?: R2HTTPMetadata | Headers;
readonly customMetadata?: Record<string, string>;
}
// https://github.com/cloudflare/workerd/blob/main/src/workerd/api/r2-multipart.h
export interface R2MultipartUpload {
readonly key: string;
readonly uploadId: string;
uploadPart(partNumber: number, value: ReadableStream | ArrayBuffer | ArrayBufferView | string | null | Blob): Promise<R2UploadedPart>;
abort(): Promise<void>;
complete(uploadedParts: R2UploadedPart[]): Promise<R2Object>;
}
export interface R2UploadedPart {
readonly partNumber: number;
readonly etag: string;
}