diff --git a/packages/cloud-artifacts/src/types.d.ts b/packages/cloud-artifacts/src/types.d.ts new file mode 100644 index 000000000..692a6e012 --- /dev/null +++ b/packages/cloud-artifacts/src/types.d.ts @@ -0,0 +1,102 @@ +/** + * Minimal Cloudflare Workers type stubs for cloud-artifacts Worker. + * + * The canonical types are in worker-configuration.d.ts (generated by `wrangler types`, + * gitignored). This file provides just enough so `tsc --noEmit` passes even when that + * generated file is absent (e.g. CI, fresh clone). + */ + +// -- R2 types --------------------------------------------------------------- + +interface R2Checksums { + readonly md5?: ArrayBuffer + readonly sha1?: ArrayBuffer + readonly sha256?: ArrayBuffer + readonly sha384?: ArrayBuffer + readonly sha512?: ArrayBuffer +} + +interface R2HTTPMetadata { + contentType?: string + contentLanguage?: string + contentDisposition?: string + contentEncoding?: string + cacheControl?: string + cacheExpiry?: Date +} + +interface R2Range { + offset: number + length?: number +} + +declare abstract class R2Object { + readonly key: string + readonly version: string + readonly size: number + readonly etag: string + readonly httpEtag: string + readonly checksums: R2Checksums + readonly uploaded: Date + readonly httpMetadata?: R2HTTPMetadata + readonly customMetadata?: Record + readonly range?: R2Range + readonly storageClass: string + readonly ssecKeyMd5?: string + writeHttpMetadata(headers: Headers): void +} + +interface R2ObjectBody extends R2Object { + get body(): ReadableStream + get bodyUsed(): boolean +} + +interface R2PutOptions { + httpMetadata?: R2HTTPMetadata | Headers + customMetadata?: Record +} + +interface R2Bucket { + head(key: string): Promise + get(key: string, options?: R2GetOptions): Promise + put( + key: string, + value: + | ReadableStream + | ArrayBuffer + | ArrayBufferView + | string + | null + | Blob, + options?: R2PutOptions, + ): Promise + delete(keys: string | string[]): Promise +} + +// Empty placeholder — R2GetOptions is unused beyond an optional parameter +type R2GetOptions = {} + +// -- ExportedHandler ------------------------------------------------------- + +interface ExportedHandler { + fetch?: ( + request: Request, + env: Env, + ctx: ExecutionContext, + ) => Response | Promise +} + +// -- Env ------------------------------------------------------------------- +// Wrangler-generated worker-configuration.d.ts supplies TOKEN via `wrangler secret put`. +// This declaration provides the R2 binding + wrangler vars so the Worker compiles +// without the generated file. + +declare global { + interface Env { + BUCKET: R2Bucket + TOKEN: string + MAX_BYTES: string + DEFAULT_TTL_DAYS: string + PUBLIC_URL: string + } +}