UNPKG

@uploadx/gcs

Version:
82 lines (81 loc) 2.79 kB
import { BaseStorage, BaseStorageOptions, File, FileInit, FilePart, FileQuery, IncomingMessage, LocalMetaStorageOptions, MetaStorage, UploadxErrorResponse } from '@uploadx/core'; import { GoogleAuth, GoogleAuthOptions } from 'google-auth-library'; import { GCSMetaStorageOptions } from './gcs-meta-storage'; export interface ClientError extends Error { code: string; response?: Record<string, any>; config: Record<string, any>; } export declare function getRangeEnd(range: string): number; export declare function buildContentRange(part: Partial<FilePart> & GCSFile): string; export interface GCStorageOptions extends BaseStorageOptions<GCSFile>, GoogleAuthOptions { /** * Google Cloud Storage bucket */ bucket?: string; /** * Force compatible client upload directly to GCS */ clientDirectUpload?: boolean; /** * Metafiles storage directory. * When set, metafiles are stored locally instead of in GCS. */ metaDir?: string; /** * Configure metafiles storage * @example * ```ts * Using local metafiles * const storage = new GCStorage({ * bucket: 'uploads', * metaStorageOptions: { directory: '/tmp/upload-metafiles' } * }) * ``` * Using a separate bucket for metafiles * ```ts * const storage = new GCStorage({ * bucket: 'uploads', * metaStorageOptions: { bucket: 'upload-metafiles' } * }) * ``` */ metaStorageOptions?: LocalMetaStorageOptions | GCSMetaStorageOptions; /** @deprecated Use {@link metaStorageOptions} instead */ metaStorageConfig?: LocalMetaStorageOptions | GCSMetaStorageOptions; } export declare class GCSFile extends File { GCSUploadURI?: string; uri?: string; } /** * Google cloud storage based backend. * @example * ```ts * const storage = new GCStorage({ * bucket: <YOUR_BUCKET>, * keyFile: <PATH_TO_KEY_FILE>, * metaStorage: new MetaStorage(), * clientDirectUpload: true, * maxFileSize: '15GB', * allowedMimeTypes: ['video/*', 'image/*'], * namingFunction: file => file.originalName * }); * ``` */ export declare class GCStorage extends BaseStorage<GCSFile> { options: GCStorageOptions; bucket: string; authClient: GoogleAuth; storageBaseURI: string; uploadBaseURI: string; meta: MetaStorage<GCSFile>; constructor(options?: GCStorageOptions); normalizeError(error: ClientError): UploadxErrorResponse; accessCheck(): Promise<any>; create(req: IncomingMessage, config: FileInit): Promise<GCSFile>; write(part: FilePart | FileQuery): Promise<GCSFile>; delete({ id }: FileQuery): Promise<GCSFile[]>; protected _write(part: Partial<FilePart> & GCSFile): Promise<number>; private _onComplete; }