UNPKG

@rpldy/chunked-sender

Version:

adds chunked upload capabilities on top of the regular XHR uploads

57 lines (56 loc) 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.startProcessing = exports.default = exports.abortChunkedRequest = void 0; var _shared = require("@rpldy/shared"); var _getChunks = _interopRequireDefault(require("./getChunks")); var _sendChunks = _interopRequireDefault(require("./sendChunks")); var _consts = require("../consts"); var _processChunkProgressData = _interopRequireDefault(require("./processChunkProgressData")); var _getChunkedState = _interopRequireDefault(require("./getChunkedState")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const abortChunkedRequest = (chunkedState, item) => { _shared.logger.debugLog(`chunkedSender: aborting chunked upload for item: ${item.id}`); const state = chunkedState.getState(); if (!state.finished && !state.aborted) { Object.keys(state.requests).forEach(chunkId => { _shared.logger.debugLog(`chunkedSender: aborting chunk: ${chunkId}`); state.requests[chunkId].abort(); }); chunkedState.updateState(state => { state.aborted = true; }); } return state.aborted; }; exports.abortChunkedRequest = abortChunkedRequest; const startProcessing = (chunkedState, item, onProgress, trigger) => { const onChunkProgress = (e, chunks) => { const progressData = (0, _processChunkProgressData.default)(chunkedState, item, chunks[0].id, e.loaded); onProgress(progressData, [item]); }; const sendPromise = new Promise(resolve => { (0, _sendChunks.default)(chunkedState, item, onChunkProgress, resolve, trigger); }); return { sendPromise, abort: () => abortChunkedRequest(chunkedState, item) }; }; exports.startProcessing = startProcessing; const processChunks = (item, chunkedOptions, url, sendOptions, onProgress, trigger) => { const chunks = (0, _getChunks.default)(item, chunkedOptions, sendOptions.startByte); const chunkedState = (0, _getChunkedState.default)(chunks, url, sendOptions, chunkedOptions); _shared.logger.debugLog(`chunkedSender: created ${chunks.length} chunks for: ${item.file.name}.`); const { sendPromise, abort } = startProcessing(chunkedState, item, onProgress, trigger); return { request: sendPromise, abort, senderType: _consts.CHUNKED_SENDER_TYPE }; }; var _default = exports.default = processChunks;