ngx-uploadx
Version:
Angular Resumable Upload Module
107 lines (106 loc) • 3.26 kB
TypeScript
import { Ajax } from './ajax';
import { Canceler } from './canceler';
import { AuthorizeRequest, Metadata, PreRequest, RequestHeaders, RequestOptions, ResponseBody, UploaderOptions, UploadState, UploadStatus, UploadxControlEvent } from './interfaces';
import { RetryHandler } from './retry-handler';
/**
* Uploader Base Class
*/
export declare abstract class Uploader implements UploadState {
readonly file: File;
readonly options: Readonly<UploaderOptions>;
readonly stateChange: (uploader: Uploader) => void;
readonly ajax: Ajax;
name: string;
readonly size: number;
readonly uploadId: string;
response: ResponseBody;
responseStatus: number;
responseHeaders: Record<string, string>;
progress: number;
remaining: number;
speed: number;
/** Custom headers */
headers: RequestHeaders;
/** Metadata Object */
metadata: Metadata;
/** Upload endpoint */
endpoint: string;
/** Chunk size in bytes */
chunkSize: number;
/** Auth token/tokenGetter */
token: UploadxControlEvent['token'];
/** Byte offset within the whole file */
offset?: number;
/** Retries handler */
retry: RetryHandler;
canceler: Canceler;
abortController: AbortController;
/** Set HttpRequest responseType */
responseType?: 'json' | 'text' | 'document';
protected _authorize: AuthorizeRequest;
protected _prerequest: PreRequest;
protected _token: string;
private _eventsCount;
constructor(file: File, options: Readonly<UploaderOptions>, stateChange: (uploader: Uploader) => void, ajax: Ajax);
private _url;
get url(): string;
set url(value: string);
private _status;
get status(): UploadStatus;
set status(s: UploadStatus);
/**
* Configure uploader
*/
configure({ metadata, headers, token, endpoint, action }: UploadxControlEvent): void;
/**
* Starts uploading
*/
upload(): Promise<void>;
/**
* Performs http requests
*/
request(requestOptions: RequestOptions): Promise<void>;
/**
* Set auth token string
*/
updateToken: () => string | Promise<string>;
/**
* Get file URI
*/
protected abstract getFileUrl(): Promise<string>;
/**
* Send file content and return an offset for the next request
*/
protected abstract sendFileContent(): Promise<number | undefined>;
/**
* Get an offset for the next request
*/
protected abstract getOffset(): Promise<number | undefined>;
/**
* Updating the metadata of the upload
*/
protected update<T = {
metadata?: Metadata;
}>(_data: T): Promise<string>;
protected abort(): void;
protected cancel(): Promise<void>;
/**
* Gets the value from the response
*/
protected getValueFromResponse(key: string): string | null;
/**
* Get file chunk
* @param offset - number of bytes of the file to skip
* @param size - chunk size
*/
getChunk(offset?: number, size?: number): {
start: number;
end: number;
body: Blob;
};
private getRetryAfterFromBackend;
private cancelAndSendState;
private updateAndSendState;
private cleanup;
private onProgress;
}