UNPKG

s3mini

Version:

👶 Tiny & fast S3 client for node and edge computing platforms

159 lines (135 loc) • 4.4 kB
export interface S3Config { accessKeyId: string; secretAccessKey: string; endpoint: string; region?: string; requestSizeInBytes?: number; requestAbortTimeout?: number; logger?: Logger; } export interface SSECHeaders { 'x-amz-server-side-encryption-customer-algorithm': string; 'x-amz-server-side-encryption-customer-key': string; 'x-amz-server-side-encryption-customer-key-md5': string; } export interface AWSHeaders { [k: `x-amz-${string}`]: string; } export interface Logger { info: (message: string, ...args: unknown[]) => void; warn: (message: string, ...args: unknown[]) => void; error: (message: string, ...args: unknown[]) => void; } export interface UploadPart { partNumber: number; etag: string; } export interface ListObject { Key: string; Size: number; LastModified: Date; ETag: string; StorageClass: string; } export interface CompleteMultipartUploadResult { location: string; bucket: string; key: string; etag: string; eTag: string; // for backward compatibility ETag: string; // for backward compatibility } interface ListBucketResult { keyCount: string; contents?: Array<Record<string, unknown>>; } interface ListBucketError { error: { code: string; message: string }; } export type ListBucketResponse = { listBucketResult: ListBucketResult } | { error: ListBucketError }; export interface ListMultipartUploadSuccess { listMultipartUploadsResult: { bucket: string; key: string; uploadId: string; size?: number; mtime?: Date; etag?: string; eTag?: string; // for backward compatibility parts: UploadPart[]; isTruncated: boolean; uploads: UploadPart[]; }; } export interface MultipartUploadError { error: { code: string; message: string; }; } export interface ErrorWithCode { code?: string; cause?: { code?: string }; } export type ListMultipartUploadResponse = ListMultipartUploadSuccess | MultipartUploadError; export type HttpMethod = 'POST' | 'GET' | 'HEAD' | 'PUT' | 'DELETE'; // false - Not found (404) // true - Found (200) // null - ETag mismatch (412) export type ExistResponseCode = false | true | null; export type XmlValue = string | XmlMap | boolean | number | null; export interface XmlMap { [key: string]: XmlValue | XmlValue[]; // one or many children [key: number]: XmlValue | XmlValue[]; // allow numeric keys } export interface CopyObjectOptions { /** * Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. * Valid values: 'COPY' | 'REPLACE' * Default: 'COPY' */ metadataDirective?: 'COPY' | 'REPLACE'; /** * Metadata to be set on the destination object when metadataDirective is 'REPLACE'. * Keys can be provided with or without 'x-amz-meta-' prefix. */ metadata?: Record<string, string>; contentType?: string; /** * Storage class for the destination object. * Valid values: 'STANDARD' | 'REDUCED_REDUNDANCY' | 'STANDARD_IA' | 'ONEZONE_IA' | 'INTELLIGENT_TIERING' | 'GLACIER' | 'DEEP_ARCHIVE' | 'GLACIER_IR' */ storageClass?: string; /** * Specifies whether the object tag-set is copied from the source object or replaced with tag-set provided in the request. * Valid values: 'COPY' | 'REPLACE' */ taggingDirective?: 'COPY' | 'REPLACE'; /** * If the bucket is configured as a website, redirects requests for this object to another object or URL. */ websiteRedirectLocation?: string; /** * Server-Side Encryption with Customer-Provided Keys headers for the source object. * Should include: * - x-amz-copy-source-server-side-encryption-customer-algorithm * - x-amz-copy-source-server-side-encryption-customer-key * - x-amz-copy-source-server-side-encryption-customer-key-MD5 */ sourceSSECHeaders?: Record<string, string | number>; destinationSSECHeaders?: SSECHeaders; additionalHeaders?: Record<string, string | number>; } export interface CopyObjectResult { etag: string; lastModified?: Date; } /** * Where Buffer is available, e.g. when @types/node is loaded, we want to use it. * But it should be excluded in other environments (e.g. Cloudflare). */ export type MaybeBuffer = typeof globalThis extends { Buffer?: infer B } ? B extends new (...a: unknown[]) => unknown ? InstanceType<B> : ArrayBuffer | Uint8Array : ArrayBuffer | Uint8Array;