UNPKG

@rpldy/uploader

Version:

the processing and queuing engine for react-uploady

56 lines (55 loc) 2.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _shared = require("@rpldy/shared"); var _lifeEvents = _interopRequireDefault(require("@rpldy/life-events")); var _sender = _interopRequireDefault(require("@rpldy/sender")); var _consts = require("./consts"); var _defaults = require("./defaults"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const reportItemsProgress = (items, completed, loaded, total, trigger) => { items.forEach(item => { _shared.logger.debugLog(`uploady.uploader.processor: file: ${item.id} progress event: loaded(${loaded}) - completed(${completed})`); trigger(_consts.SENDER_EVENTS.ITEM_PROGRESS, item, completed, loaded, total); }); }; const onItemUploadProgress = (items, batch, e, trigger) => { const completed = Math.min(e.loaded / e.total * 100, 100), completedPerItem = completed / items.length, loadedAverage = e.loaded / items.length; reportItemsProgress(items, completedPerItem, loadedAverage, e.total, trigger); trigger(_consts.SENDER_EVENTS.BATCH_PROGRESS, batch); }; const createBatchItemsSender = () => { const { trigger, target: sender } = (0, _lifeEvents.default)({ send: (items, batch, batchOptions) => { const destination = batchOptions.destination, url = destination?.url; const throttledProgress = (0, _shared.throttle)(e => onItemUploadProgress(items, batch, e, trigger), _consts.PROGRESS_DELAY, true); const send = (0, _shared.isFunction)(batchOptions.send) ? batchOptions.send : _sender.default; return send(items, url, { method: destination?.method || batchOptions.method || _defaults.DEFAULT_OPTIONS.method, paramName: destination?.filesParamName || batchOptions.inputFieldName || _defaults.DEFAULT_PARAM_NAME, params: { ...batchOptions.params, ...destination?.params }, forceJsonResponse: batchOptions.forceJsonResponse, withCredentials: batchOptions.withCredentials, formatGroupParamName: batchOptions.formatGroupParamName, headers: destination?.headers, sendWithFormData: batchOptions.sendWithFormData, formatServerResponse: batchOptions.formatServerResponse, formDataAllowUndefined: batchOptions.formDataAllowUndefined, isSuccessfulCall: batchOptions.isSuccessfulCall }, throttledProgress); } }, Object.values(_consts.SENDER_EVENTS)); return sender; }; var _default = exports.default = createBatchItemsSender;