filestack-js
Version:
Official JavaScript library for Filestack
240 lines (239 loc) • 5.36 kB
TypeScript
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;
}