UNPKG

filestack-js

Version:

Official JavaScript library for Filestack

240 lines (239 loc) 5.36 kB
import { File, FilePartMetadata } from './../file'; import { StoreUploadOptions } from './../types'; import { UploaderAbstract } from './abstract'; export interface UploadPart extends FilePartMetadata { etag?: string; offset?: number; progress?: number; } export interface UploadPayload { file: File; parts: UploadPart[]; handle?: string; uri?: string; region?: string; upload_id?: number; location_url?: string; location_region?: string; } export declare class S3Uploader extends UploaderAbstract { private partsQueue; private cancelToken; private payloads; constructor(storeOptions: StoreUploadOptions, concurrency?: any); /** * Pause upload queue * * @memberof S3Uploader */ pause(): void; /** * resume upload queue if its paused * * @memberof S3Uploader */ resume(): void; /** * Aborts queue (all pending requests with will be aborted) * * @memberof S3Uploader */ abort(msg?: string): void; /** * Execute all queued files * * @returns {Promise<any>} * @memberof S3Uploader */ execute(): Promise<any>; /** * Add file to upload queue * * @param {File} file * @returns * @memberof S3Uploader */ addFile(file: File): string; /** * Returns host for upload (region based) * * @private * @returns * @memberof S3Uploader */ private getUploadUrl; /** * Returns formatted store options * * @private * @returns * @memberof S3Uploader */ private getStoreOptions; /** * Returns all default fields for filestack requests * * @private * @returns * @memberof S3Uploader */ private getDefaultFields; /** * Returns default headers needed for filestack request * * @private * @returns * @memberof S3Uploader */ private getDefaultHeaders; private getPayloadById; /** * Split file onto parts for uploading with multipart mechanism and setup start * * @private * @memberof S3Uploader */ private prepareParts; /** * Make start request for getting needed upload fields * * @private * @returns {Promise<any>} * @memberof S3Uploader */ private startRequest; /** * Enqueue file parts to upload * * @private * @returns * @memberof S3Uploader */ private startPartsQueue; /** * Decide if upload should be made using ii or regular upload * It allows change upload mode during upload queue * * @private * @param {number} partNumber * @returns {Promise<any>} * @memberof S3Uploader */ private startPart; /** * Returns part data needed for upload * * @private * @param {string} id - id of a currently uploading file * @param {FilePart} part * @returns * @memberof S3Uploader */ private getS3PartMetadata; /** * Regular multipart request to amazon * * @private * @param {number} partNumber * @returns {Promise<any>} * @memberof S3Uploader */ private uploadRegular; /** * Upload file using intelligent mechanism * * @private * @param {string} id * @param {number} partNumber * @returns {Promise<any>} * @memberof S3Uploader */ private uploadIntelligent; /** * Recursively upload file in chunk mode (intelligent ingession) * * @private * @param {string} id * @param {number} partNumber * @param {number} chunkSize * @returns * @memberof S3Uploader */ private uploadNextChunk; /** * Commit after upload all chunks of the part in ii mode * * @private * @param {string} id * @param {FilePart} part * @returns * @memberof S3Uploader */ private commitPart; /** * Complete request to merge all parts and get file handle etc * * @private * @returns * @memberof S3Uploader */ private completeRequest; /** * UUpgrade upload progress and run progress event * * @private * @param {string} id * @param {number} partNumber * @param {number} loaded * @memberof S3Uploader */ private onProgressUpdate; /** * Emits normalized progress event * * @private * @memberof S3Uploader */ private emitProgress; /** * Apply provided data to given payload * * @private * @param {string} id * @param {*} data * @memberof S3Uploader */ private updatePayload; /** * Sets etag for part * * @private * @param {number} partNumber * @param {string} etag * @memberof S3Uploader */ private setPartETag; /** * Sets part value for a key * * @private * @param {number} partNumber * @param {string} etag * @memberof S3Uploader */ private setPartData; /** * Set payload file state * * @param id * @param status */ private setPayloadStatus; /** * Returns error details if response exists * * @param err */ private parseError; private rejectUpload; }