Socket
Socket
Sign inDemoInstall

@rpldy/uploader

Package Overview
Dependencies
Maintainers
1
Versions
102
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rpldy/uploader - npm Package Compare versions

Comparing version 0.6.0 to 0.7.0

lib/umd/polyfills-bundle.js

2

lib/cjs/batch.js

@@ -16,3 +16,3 @@ "use strict";

var processFiles = function processFiles(batchId, files, fileFilter) {
var processFiles = function (batchId, files, fileFilter) {
return Array.prototype.filter.call(files, fileFilter || _defaults.DEFAULT_FILTER).map(function (f) {

@@ -19,0 +19,0 @@ return (0, _shared.createBatchItem)(f, batchId);

@@ -26,3 +26,3 @@ "use strict";

var reportItemsProgress = function reportItemsProgress(items, completed, loaded, trigger) {
var reportItemsProgress = function (items, completed, loaded, trigger) {
items.forEach(function (item) {

@@ -35,3 +35,3 @@ _shared.logger.debugLog("uploady.uploader.processor: file: ".concat(item.id, " progress event: loaded(").concat(loaded, ") - completed(").concat(completed, ")"));

var onItemUploadProgress = function onItemUploadProgress(items, batch, e, trigger) {
var onItemUploadProgress = function (items, batch, e, trigger) {
var completed = Math.min(e.loaded / e.total * 100, 100),

@@ -45,28 +45,26 @@ completedPerItem = completed / items.length,

var _default = function _default() {
var send = function send(items, batch, batchOptions) {
var destination = batchOptions.destination,
url = destination === null || destination === void 0 ? void 0 : destination.url;
var _addLife = (0, _lifeEvents["default"])({
send: function (items, batch, batchOptions) {
var destination = batchOptions.destination,
url = destination === null || destination === void 0 ? void 0 : destination.url;
if (!url) {
throw new Error("Destination URL not found! Can't send files without it");
if (!url) {
throw new Error("Destination URL not found! Can't send files without it");
}
var throttledProgress = (0, _shared.throttle)(function (e) {
return onItemUploadProgress(items, batch, e, trigger);
}, _consts.PROGRESS_DELAY, true);
var send = (0, _shared.isFunction)(batchOptions.send) ? batchOptions.send : _sender["default"];
return send(items, url, {
method: (destination === null || destination === void 0 ? void 0 : destination.method) || batchOptions.method || _defaults.DEFAULT_OPTIONS.method,
paramName: (destination === null || destination === void 0 ? void 0 : destination.filesParamName) || batchOptions.inputFieldName || _defaults.DEFAULT_PARAM_NAME,
params: _objectSpread(_objectSpread({}, batchOptions.params), destination === null || destination === void 0 ? void 0 : destination.params),
forceJsonResponse: batchOptions.forceJsonResponse,
withCredentials: batchOptions.withCredentials,
formatGroupParamName: batchOptions.formatGroupParamName,
headers: destination === null || destination === void 0 ? void 0 : destination.headers,
sendWithFormData: batchOptions.sendWithFormData
}, throttledProgress);
}
var throttledProgress = (0, _shared.throttle)(function (e) {
return onItemUploadProgress(items, batch, e, trigger);
}, _consts.PROGRESS_DELAY, true);
var send = (0, _shared.isFunction)(batchOptions.send) ? batchOptions.send : _sender["default"];
return send(items, url, {
method: (destination === null || destination === void 0 ? void 0 : destination.method) || batchOptions.method || _defaults.DEFAULT_OPTIONS.method,
paramName: (destination === null || destination === void 0 ? void 0 : destination.filesParamName) || batchOptions.inputFieldName || _defaults.DEFAULT_PARAM_NAME,
params: _objectSpread(_objectSpread({}, batchOptions.params), destination === null || destination === void 0 ? void 0 : destination.params),
forceJsonResponse: batchOptions.forceJsonResponse,
withCredentials: batchOptions.withCredentials,
formatGroupParamName: batchOptions.formatGroupParamName,
headers: destination === null || destination === void 0 ? void 0 : destination.headers,
sendWithFormData: batchOptions.sendWithFormData
}, throttledProgress);
};
var _addLife = (0, _lifeEvents["default"])({
send: send
}, Object.values(_consts.SENDER_EVENTS)),

@@ -73,0 +71,0 @@ trigger = _addLife.trigger,

@@ -13,3 +13,3 @@ "use strict";

var DEFAULT_FILTER = function DEFAULT_FILTER() {
var DEFAULT_FILTER = function () {
return true;

@@ -21,2 +21,3 @@ };

autoUpload: true,
clearPendingOnAdd: false,
inputFieldName: "file",

@@ -23,0 +24,0 @@ concurrent: false,

@@ -8,4 +8,2 @@ "use strict";

var _shared = require("@rpldy/shared");
var _queue = _interopRequireDefault(require("./queue"));

@@ -15,30 +13,29 @@

var _batch = _interopRequireDefault(require("./batch"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var _default = function _default(trigger, options, uploaderId) {
// $FlowFixMe - https://github.com/facebook/flow/issues/8215
var cancellable = (0, _shared.triggerCancellable)(trigger),
sender = (0, _batchItemsSender["default"])(),
queue = (0, _queue["default"])(options, cancellable, trigger, sender, uploaderId);
var process = function process(batch, batchOptions) {
queue.uploadBatch(batch, batchOptions);
};
var abortBatch = function abortBatch(batchId) {
queue.abortBatch(batchId);
};
var abort = function abort(id) {
if (id) {
queue.abortItem(id);
} else {
queue.abortAll();
}
};
var _default = function _default(trigger, cancellable, options, uploaderId) {
var sender = (0, _batchItemsSender["default"])(),
queue = (0, _queue["default"])(options, trigger, cancellable, sender, uploaderId);
var runCancellable = queue.runCancellable;
return {
process: process,
abortBatch: abortBatch,
abort: abort
process: function process(batch, batchOptions) {
queue.uploadBatch(batch, batchOptions);
},
abortBatch: function abortBatch(batchId) {
queue.abortBatch(batchId);
},
abort: function abort(id) {
if (id) {
queue.abortItem(id);
} else {
queue.abortAll();
}
},
addNewBatch: function addNewBatch(files, uploaderId, processOptions) {
var batch = (0, _batch["default"])(files, uploaderId, processOptions);
return queue.addBatch(batch, processOptions);
},
runCancellable: runCancellable
};

@@ -45,0 +42,0 @@ };

@@ -18,7 +18,7 @@ "use strict";

var isItemInProgress = function isItemInProgress(state) {
var isItemInProgress = function (state) {
return state === _shared.FILE_STATES.ADDED || state === _shared.FILE_STATES.UPLOADING;
};
var callAbortOnItem = function callAbortOnItem(queue, id, next) {
var callAbortOnItem = function (queue, id, next) {
var abortCalled = false;

@@ -53,3 +53,3 @@ var state = queue.getState(),

var abortAll = function abortAll(queue, next) {
var abortAll = function (queue, next) {
var items = queue.getState().items;

@@ -63,3 +63,3 @@ Object.keys(items).forEach(function (id) {

var abortItem = function abortItem(queue, id, next) {
var abortItem = function (queue, id, next) {
return callAbortOnItem(queue, id, next);

@@ -70,3 +70,3 @@ };

var abortBatch = function abortBatch(queue, id, next) {
var abortBatch = function (queue, id, next) {
var state = queue.getState(),

@@ -73,0 +73,0 @@ batchData = state.batches[id],

@@ -22,3 +22,3 @@ "use strict";

var getBatchFromState = function getBatchFromState(state, id) {
var getBatchFromState = function (state, id) {
return state.batches[id].batch;

@@ -29,7 +29,7 @@ };

var getBatch = function getBatch(queue, id) {
var getBatch = function (queue, id) {
return getBatchFromState(queue.getState(), id);
};
var isItemBelongsToBatch = function isItemBelongsToBatch(queue, itemId, batchId) {
var isItemBelongsToBatch = function (queue, itemId, batchId) {
return queue.getState().items[itemId].batchId === batchId;

@@ -40,3 +40,3 @@ };

var getBatchDataFromItemId = function getBatchDataFromItemId(queue, itemId) {
var getBatchDataFromItemId = function (queue, itemId) {
var state = queue.getState();

@@ -49,3 +49,3 @@ var item = state.items[itemId];

var getBatchFromItemId = function getBatchFromItemId(queue, itemId) {
var getBatchFromItemId = function (queue, itemId) {
return getBatchDataFromItemId(queue, itemId).batch;

@@ -56,3 +56,3 @@ };

var removeBatchItems = function removeBatchItems(queue, batchId) {
var removeBatchItems = function (queue, batchId) {
var batch = getBatch(queue, batchId);

@@ -72,3 +72,3 @@ queue.updateState(function (state) {

var removeBatch = function removeBatch(queue, batchId) {
var removeBatch = function (queue, batchId) {
queue.updateState(function (state) {

@@ -79,3 +79,3 @@ delete state.batches[batchId];

var cancelBatchForItem = function cancelBatchForItem(queue, itemId) {
var cancelBatchForItem = function (queue, itemId) {
var batch = getBatchFromItemId(queue, itemId),

@@ -99,3 +99,3 @@ batchId = batch.id;

var isNewBatchStarting = function isNewBatchStarting(queue, itemId) {
var isNewBatchStarting = function (queue, itemId) {
var batch = getBatchFromItemId(queue, itemId);

@@ -107,5 +107,5 @@ return queue.getState().currentBatch !== batch.id;

var loadNewBatchForItem = function loadNewBatchForItem(queue, itemId) {
var loadNewBatchForItem = function (queue, itemId) {
var batch = getBatchFromItemId(queue, itemId);
return queue.cancellable(_consts.UPLOADER_EVENTS.BATCH_START, batch).then(function (isCancelled) {
return queue.runCancellable(_consts.UPLOADER_EVENTS.BATCH_START, batch).then(function (isCancelled) {
if (!isCancelled) {

@@ -123,3 +123,3 @@ queue.updateState(function (state) {

var isBatchFinished = function isBatchFinished(queue) {
var isBatchFinished = function (queue) {
var itemQueue = queue.getState().itemQueue;

@@ -131,7 +131,7 @@ return itemQueue.length === 0 || isNewBatchStarting(queue, itemQueue[0]);

var cleanUpFinishedBatch = function cleanUpFinishedBatch(queue) {
var cleanUpFinishedBatch = function (queue) {
var state = queue.getState();
var batchId = state.currentBatch;
if (batchId && isBatchFinished(queue)) {
if (batchId && state.batches[batchId] && isBatchFinished(queue)) {
triggerUploaderBatchEvent(queue, batchId, _consts.UPLOADER_EVENTS.BATCH_FINISH);

@@ -145,3 +145,3 @@ removeBatchItems(queue, batchId);

var triggerUploaderBatchEvent = function triggerUploaderBatchEvent(queue, batchId, event) {
var triggerUploaderBatchEvent = function (queue, batchId, event) {
var state = queue.getState(),

@@ -164,3 +164,3 @@ batch = getBatchFromState(state, batchId),

var getIsItemBatchReady = function getIsItemBatchReady(queue, itemId) {
var getIsItemBatchReady = function (queue, itemId) {
var batch = getBatchFromItemId(queue, itemId);

@@ -172,3 +172,3 @@ return BATCH_READY_STATES.includes(batch.state);

var detachRecycledFromPreviousBatch = function detachRecycledFromPreviousBatch(queue, item) {
var detachRecycledFromPreviousBatch = function (queue, item) {
var previousBatch = item.previousBatch;

@@ -175,0 +175,0 @@

@@ -10,4 +10,2 @@ "use strict";

var _simpleState = require("@rpldy/simple-state");
var _consts = require("../consts");

@@ -23,8 +21,6 @@

var triggerPreSendUpdate = function triggerPreSendUpdate(queue, items, options) {
var triggerPreSendUpdate = function (queue, items, options) {
return (0, _shared.triggerUpdater)(queue.trigger, _consts.UPLOADER_EVENTS.REQUEST_PRE_SEND, {
items: items.map(function (i) {
return (0, _simpleState.unwrap)(i);
}),
options: (0, _simpleState.unwrap)(options)
items: items,
options: options
}) // $FlowFixMe - https://github.com/facebook/flow/issues/8215

@@ -57,3 +53,3 @@ .then(function (updated) {

var prepareAllowedItems = function prepareAllowedItems(queue, items) {
var prepareAllowedItems = function (queue, items) {
var allowedIds = items.map(function (item) {

@@ -86,3 +82,3 @@ return item.id;

var updateUploadingState = function updateUploadingState(queue, items, sendResult) {
var updateUploadingState = function (queue, items, sendResult) {
queue.updateState(function (state) {

@@ -97,3 +93,3 @@ items.forEach(function (bi) {

var sendAllowedItems = function sendAllowedItems(queue, itemsSendData, next) {
var sendAllowedItems = function (queue, itemsSendData, next) {
var items = itemsSendData.items,

@@ -116,3 +112,3 @@ options = itemsSendData.options;

var reportCancelledItems = function reportCancelledItems(queue, items, cancelledResults, next) {
var reportCancelledItems = function (queue, items, cancelledResults, next) {
var cancelledItemsIds = cancelledResults.map(function (isCancelled, index) {

@@ -140,3 +136,3 @@ return isCancelled ? items[index].id : null;

var getAllowedItem = function getAllowedItem(id, queue) {
var getAllowedItem = function (id, queue) {
return queue.getState().items[id];

@@ -146,3 +142,3 @@ }; //send group of items to be uploaded

var processBatchItems = function processBatchItems(queue, ids, next) {
var processBatchItems = function (queue, ids, next) {
var state = queue.getState(); //ids will have more than one when grouping is allowed

@@ -156,3 +152,3 @@

return Promise.all(items.map(function (i) {
return queue.cancellable(_consts.UPLOADER_EVENTS.ITEM_START, i);
return queue.runCancellable(_consts.UPLOADER_EVENTS.ITEM_START, i);
})).then(function (cancelledResults) {

@@ -159,0 +155,0 @@ var allowedItems = cancelledResults.map(function (isCancelled, index) {

@@ -22,7 +22,7 @@ "use strict";

var getIsFinalized = function getIsFinalized(item) {
var getIsFinalized = function (item) {
return !!~ITEM_FINALIZE_STATES.indexOf(item.state);
};
var _default = function _default(queue, finishedData, next) {
var processFinishedRequest = function (queue, finishedData, next) {
finishedData.forEach(function (itemData) {

@@ -82,2 +82,3 @@ var state = queue.getState();

var _default = processFinishedRequest;
exports["default"] = _default;

@@ -16,3 +16,3 @@ "use strict";

var getIsItemInActiveRequest = function getIsItemInActiveRequest(queue, itemId) {
var getIsItemInActiveRequest = function (queue, itemId) {
return !!~queue.getState().activeIds // $FlowFixMe - no flat

@@ -22,7 +22,7 @@ .flat().indexOf(itemId);

var getIsItemReady = function getIsItemReady(item) {
var getIsItemReady = function (item) {
return item.state === _shared.FILE_STATES.ADDED;
};
var findNextItemIndex = function findNextItemIndex(queue) {
var findNextItemIndex = function (queue) {
var state = queue.getState(),

@@ -44,3 +44,3 @@ itemQueue = state.itemQueue,

var getNextIdGroup = function getNextIdGroup(queue) {
var getNextIdGroup = function (queue) {
var itemQueue = queue.getState().itemQueue;

@@ -75,3 +75,3 @@ var nextItemIndex = findNextItemIndex(queue);

var processNext = function processNext(queue) {
var processNext = function (queue) {
var ids = getNextIdGroup(queue);

@@ -78,0 +78,0 @@ var resultP = Promise.resolve();

@@ -12,3 +12,3 @@ "use strict";

var _simpleState = _interopRequireWildcard(require("@rpldy/simple-state"));
var _simpleState = _interopRequireDefault(require("@rpldy/simple-state"));

@@ -23,4 +23,2 @@ var _consts = require("../consts");

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }

@@ -30,2 +28,4 @@

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }

@@ -35,19 +35,11 @@

function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var _default = function _default(options, cancellable, trigger, sender, uploaderId) {
var createUploaderQueue = function (options, trigger, cancellable, sender, uploaderId) {
var _createState = (0, _simpleState["default"])({

@@ -64,31 +56,11 @@ itemQueue: [],

var unWrapAndTrigger = function unWrapAndTrigger(name) {
for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
data[_key - 1] = arguments[_key];
}
return trigger.apply(void 0, [name].concat(_toConsumableArray(data.map(function (d) {
return (0, _simpleState.unwrap)(d);
}))));
};
var unWrapAndCancellable = function unWrapAndCancellable(name) {
for (var _len2 = arguments.length, data = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
data[_key2 - 1] = arguments[_key2];
}
return cancellable.apply(void 0, [name].concat(_toConsumableArray(data.map(function (d) {
return (0, _simpleState.unwrap)(d);
}))));
};
var getState = function getState() {
var getState = function () {
return state;
};
var updateState = function updateState(updater) {
var updateState = function (updater) {
update(updater);
};
var add = function add(item) {
var add = function (item) {
if (state.items[item.id] && !item.recycled) {

@@ -108,14 +80,3 @@ throw new Error("Uploader queue conflict - item ".concat(item.id, " already exists"));

var uploadBatch = function uploadBatch(batch, batchOptions) {
updateState(function (state) {
state.batches[batch.id] = {
batch: batch,
batchOptions: batchOptions
};
});
batch.items.forEach(add);
(0, _processQueueNext["default"])(queueState);
};
var handleItemProgress = function handleItemProgress(item, completed, loaded) {
var handleItemProgress = function (item, completed, loaded) {
if (state.items[item.id]) {

@@ -128,3 +89,3 @@ updateState(function (state) {

unWrapAndTrigger(_consts.UPLOADER_EVENTS.ITEM_PROGRESS, getState().items[item.id]);
trigger(_consts.UPLOADER_EVENTS.ITEM_PROGRESS, getState().items[item.id]);
}

@@ -156,3 +117,3 @@ };

});
unWrapAndTrigger(_consts.UPLOADER_EVENTS.BATCH_PROGRESS, state.batches[batch.id].batch);
trigger(_consts.UPLOADER_EVENTS.BATCH_PROGRESS, state.batches[batch.id].batch);
}

@@ -169,4 +130,15 @@ });

updateState: updateState,
trigger: unWrapAndTrigger,
cancellable: unWrapAndCancellable,
trigger: trigger,
runCancellable: function runCancellable(name) {
if (!(0, _shared.isFunction)(cancellable)) {
//for flow :(
throw new Error("cancellable is of wrong type");
}
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return cancellable.apply(void 0, [name].concat(args));
},
sender: sender,

@@ -176,28 +148,42 @@ handleItemProgress: handleItemProgress

if (_shared.hasWindow && _shared.logger.isDebugOn()) {
if ((0, _shared.hasWindow)() && _shared.logger.isDebugOn()) {
window["__rpldy_".concat(uploaderId, "_queue_state")] = queueState;
}
var abortItem = function abortItem(id) {
return abortMethods.abortItem(queueState, id, _processQueueNext["default"]);
};
var abortBatch = function abortBatch(id) {
abortMethods.abortBatch(queueState, id, _processQueueNext["default"]);
};
var abortAll = function abortAll() {
abortMethods.abortAll(queueState, _processQueueNext["default"]);
};
return {
updateState: updateState,
getState: queueState.getState,
uploadBatch: uploadBatch,
abortItem: abortItem,
abortBatch: abortBatch,
abortAll: abortAll
runCancellable: queueState.runCancellable,
uploadBatch: function uploadBatch(batch, batchOptions) {
if (batchOptions) {
updateState(function (state) {
state.batches[batch.id].batchOptions = batchOptions;
});
}
batch.items.forEach(add);
(0, _processQueueNext["default"])(queueState);
},
addBatch: function addBatch(batch, batchOptions) {
updateState(function (state) {
state.batches[batch.id] = {
batch: batch,
batchOptions: batchOptions
};
});
return (0, _batchHelpers.getBatchFromState)(state, batch.id);
},
abortItem: function abortItem(id) {
return abortMethods.abortItem(queueState, id, _processQueueNext["default"]);
},
abortBatch: function abortBatch(id) {
abortMethods.abortBatch(queueState, id, _processQueueNext["default"]);
},
abortAll: function abortAll() {
abortMethods.abortAll(queueState, _processQueueNext["default"]);
}
};
};
var _default = createUploaderQueue;
exports["default"] = _default;
"use strict";
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {

@@ -8,8 +10,6 @@ value: true

var _lifeEvents = _interopRequireDefault(require("@rpldy/life-events"));
var _lifeEvents = _interopRequireWildcard(require("@rpldy/life-events"));
var _shared = require("@rpldy/shared");
var _batch = _interopRequireDefault(require("./batch"));
var _processor = _interopRequireDefault(require("./processor"));

@@ -23,2 +23,6 @@

function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
var EVENT_NAMES = Object.values(_consts.UPLOADER_EVENTS);

@@ -43,3 +47,3 @@ var EXT_OUTSIDE_ENHANCER_TIME = "Uploady - uploader extensions can only be registered by enhancers",

var update = function update(updateOptions) {
var update = function (updateOptions) {
//TODO: updating concurrent and maxConcurrent means we need to update the processor - not supported yet!

@@ -51,10 +55,9 @@ uploaderOptions = (0, _shared.merge)({}, uploaderOptions, updateOptions); //need deep merge for destination

var add = function add(files, addOptions) {
var add = function (files, addOptions) {
var processOptions = (0, _shared.merge)({}, uploaderOptions, addOptions);
var batch = (0, _batch["default"])(files, uploader.id, processOptions);
var batch = processor.addNewBatch(files, uploader.id, processOptions);
var resultP;
if (batch.items.length) {
// $FlowFixMe - https://github.com/facebook/flow/issues/8215
resultP = cancellable(_consts.UPLOADER_EVENTS.BATCH_ADD, batch, processOptions).then(function (isCancelled) {
resultP = processor.runCancellable(_consts.UPLOADER_EVENTS.BATCH_ADD, batch, processOptions).then(function (isCancelled) {
if (!isCancelled) {

@@ -64,4 +67,8 @@ _shared.logger.debugLog("uploady.uploader [".concat(uploader.id, "]: new items added - auto upload =\n ").concat(String(processOptions.autoUpload)), batch.items);

if (processOptions.autoUpload) {
processor.process(batch, processOptions);
processor.process(batch);
} else {
if (processOptions.clearPendingOnAdd) {
clearPending();
}
pendingBatches.push({

@@ -74,3 +81,3 @@ batch: batch,

batch.state = _shared.BATCH_STATES.CANCELLED;
trigger(_consts.UPLOADER_EVENTS.BATCH_CANCEL, batch);
triggerWithUnwrap(_consts.UPLOADER_EVENTS.BATCH_CANCEL, batch);
}

@@ -85,15 +92,3 @@ });

var abort = function abort(id) {
processor.abort(id);
};
var abortBatch = function abortBatch(id) {
processor.abortBatch(id);
};
var getPending = function getPending() {
return pendingBatches.slice();
};
var clearPending = function clearPending() {
var clearPending = function () {
pendingBatches.splice(0);

@@ -106,15 +101,7 @@ };

var upload = function upload() {
pendingBatches.splice(0).forEach(function (_ref) {
var batch = _ref.batch,
uploadOptions = _ref.uploadOptions;
return processor.process(batch, uploadOptions);
});
};
var getOptions = function getOptions() {
var getOptions = function () {
return (0, _shared.clone)(uploaderOptions);
};
var registerExtension = function registerExtension(name, methods) {
var registerExtension = function (name, methods) {
(0, _shared.invariant)(enhancerTime, EXT_OUTSIDE_ENHANCER_TIME);

@@ -128,6 +115,2 @@ (0, _shared.invariant)(!extensions[name], EXT_ALREADY_EXISTS, name);

var getExtension = function getExtension(name) {
return extensions[name];
};
var _addLife = (0, _lifeEvents["default"])({

@@ -137,10 +120,24 @@ id: uploaderId,

add: add,
upload: upload,
abort: abort,
abortBatch: abortBatch,
upload: function upload(uploadOptions) {
pendingBatches.splice(0).forEach(function (_ref) {
var batch = _ref.batch,
batchOptions = _ref.uploadOptions;
return processor.process(batch, (0, _shared.merge)({}, batchOptions, uploadOptions));
});
},
abort: function abort(id) {
processor.abort(id);
},
abortBatch: function abortBatch(id) {
processor.abortBatch(id);
},
getOptions: getOptions,
getPending: getPending,
getPending: function getPending() {
return pendingBatches.slice();
},
clearPending: clearPending,
registerExtension: registerExtension,
getExtension: getExtension
getExtension: function getExtension(name) {
return extensions[name];
}
}, EVENT_NAMES, {

@@ -152,8 +149,24 @@ canAddEvents: false,

uploader = _addLife.target;
/**
* ensures that data being exposed to client-land isnt a proxy, only pojos
*/
var cancellable = (0, _shared.triggerCancellable)(trigger);
var triggerWithUnwrap = function (name) {
for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
data[_key - 1] = arguments[_key];
}
//delays unwrap to the very last time on trigger. Will only unwrap if there are listeners
var lp = (0, _lifeEvents.createLifePack)(function () {
return data.map(_utils.deepProxyUnwrap);
});
return trigger(name, lp);
};
var cancellable = (0, _shared.triggerCancellable)(triggerWithUnwrap);
if (uploaderOptions.enhancer) {
enhancerTime = true;
var enhanced = uploaderOptions.enhancer(uploader, trigger);
var enhanced = uploaderOptions.enhancer(uploader, triggerWithUnwrap);
enhancerTime = false; //graceful handling for enhancer forgetting to return uploader

@@ -164,3 +177,3 @@

var processor = (0, _processor["default"])(trigger, uploaderOptions, uploader.id);
var processor = (0, _processor["default"])(triggerWithUnwrap, cancellable, uploaderOptions, uploader.id);
return (0, _shared.devFreeze)(uploader);

@@ -167,0 +180,0 @@ };

@@ -6,8 +6,10 @@ "use strict";

});
exports.getIsFileList = exports.getMandatoryOptions = void 0;
exports.deepProxyUnwrap = exports.getIsFileList = exports.getMandatoryOptions = void 0;
var _shared = require("@rpldy/shared");
var _simpleState = require("@rpldy/simple-state");
var _defaults = require("./defaults");
var _shared = require("@rpldy/shared");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

@@ -19,5 +21,5 @@

var FILE_LIST_SUPPORT = _shared.hasWindow && "FileList" in window;
var FILE_LIST_SUPPORT = (0, _shared.hasWindow)() && "FileList" in window;
var getMandatoryDestination = function getMandatoryDestination(dest) {
var getMandatoryDestination = function (dest) {
return _objectSpread({

@@ -29,3 +31,3 @@ filesParamName: _defaults.DEFAULT_PARAM_NAME,

var getMandatoryOptions = function getMandatoryOptions(options) {
var getMandatoryOptions = function (options) {
return _objectSpread(_objectSpread(_objectSpread({}, _defaults.DEFAULT_OPTIONS), options), {}, {

@@ -38,3 +40,3 @@ destination: options && options.destination ? getMandatoryDestination(options.destination) : null

var getIsFileList = function getIsFileList(files) {
var getIsFileList = function (files) {
return (//in case files list was created in a different context(window) need to check toString

@@ -44,3 +46,30 @@ FILE_LIST_SUPPORT && files instanceof FileList || files.toString() === "[object FileList]"

};
/***
* will unwrap object from proxy
* if obj itself isnt a proxy, will look for a proxy max 2 levels deep
*/
exports.getIsFileList = getIsFileList;
exports.getIsFileList = getIsFileList;
var deepProxyUnwrap = function (obj) {
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var result = obj;
if (!(0, _shared.isProduction)()) {
if (level < 3 && (0, _simpleState.isProxy)(obj)) {
result = (0, _simpleState.unwrap)(obj);
} else if (level < 3 && (0, _simpleState.isProxiable)(obj)) {
result = Array.isArray(obj) ? Object.keys(obj).map(function (key) {
return deepProxyUnwrap(obj[key]);
}) : Object.keys(obj).reduce(function (res, key) {
res[key] = deepProxyUnwrap(obj[key], level + 1);
return res;
}, {});
}
}
return result;
};
exports.deepProxyUnwrap = deepProxyUnwrap;

@@ -6,3 +6,3 @@ import { BATCH_STATES, createBatchItem } from "@rpldy/shared";

var processFiles = function processFiles(batchId, files, fileFilter) {
var processFiles = function (batchId, files, fileFilter) {
return Array.prototype.filter.call(files, fileFilter || DEFAULT_FILTER).map(function (f) {

@@ -9,0 +9,0 @@ return createBatchItem(f, batchId);

@@ -13,3 +13,3 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

var reportItemsProgress = function reportItemsProgress(items, completed, loaded, trigger) {
var reportItemsProgress = function (items, completed, loaded, trigger) {
items.forEach(function (item) {

@@ -21,3 +21,3 @@ logger.debugLog("uploady.uploader.processor: file: ".concat(item.id, " progress event: loaded(").concat(loaded, ") - completed(").concat(completed, ")"));

var onItemUploadProgress = function onItemUploadProgress(items, batch, e, trigger) {
var onItemUploadProgress = function (items, batch, e, trigger) {
var completed = Math.min(e.loaded / e.total * 100, 100),

@@ -31,28 +31,26 @@ completedPerItem = completed / items.length,

export default (function () {
var send = function send(items, batch, batchOptions) {
var destination = batchOptions.destination,
url = destination === null || destination === void 0 ? void 0 : destination.url;
var _addLife = addLife({
send: function (items, batch, batchOptions) {
var destination = batchOptions.destination,
url = destination === null || destination === void 0 ? void 0 : destination.url;
if (!url) {
throw new Error("Destination URL not found! Can't send files without it");
if (!url) {
throw new Error("Destination URL not found! Can't send files without it");
}
var throttledProgress = throttle(function (e) {
return onItemUploadProgress(items, batch, e, trigger);
}, PROGRESS_DELAY, true);
var send = isFunction(batchOptions.send) ? batchOptions.send : defaultSend;
return send(items, url, {
method: (destination === null || destination === void 0 ? void 0 : destination.method) || batchOptions.method || DEFAULT_OPTIONS.method,
paramName: (destination === null || destination === void 0 ? void 0 : destination.filesParamName) || batchOptions.inputFieldName || DEFAULT_PARAM_NAME,
params: _objectSpread(_objectSpread({}, batchOptions.params), destination === null || destination === void 0 ? void 0 : destination.params),
forceJsonResponse: batchOptions.forceJsonResponse,
withCredentials: batchOptions.withCredentials,
formatGroupParamName: batchOptions.formatGroupParamName,
headers: destination === null || destination === void 0 ? void 0 : destination.headers,
sendWithFormData: batchOptions.sendWithFormData
}, throttledProgress);
}
var throttledProgress = throttle(function (e) {
return onItemUploadProgress(items, batch, e, trigger);
}, PROGRESS_DELAY, true);
var send = isFunction(batchOptions.send) ? batchOptions.send : defaultSend;
return send(items, url, {
method: (destination === null || destination === void 0 ? void 0 : destination.method) || batchOptions.method || DEFAULT_OPTIONS.method,
paramName: (destination === null || destination === void 0 ? void 0 : destination.filesParamName) || batchOptions.inputFieldName || DEFAULT_PARAM_NAME,
params: _objectSpread(_objectSpread({}, batchOptions.params), destination === null || destination === void 0 ? void 0 : destination.params),
forceJsonResponse: batchOptions.forceJsonResponse,
withCredentials: batchOptions.withCredentials,
formatGroupParamName: batchOptions.formatGroupParamName,
headers: destination === null || destination === void 0 ? void 0 : destination.headers,
sendWithFormData: batchOptions.sendWithFormData
}, throttledProgress);
};
var _addLife = addLife({
send: send
}, Object.values(SENDER_EVENTS)),

@@ -59,0 +57,0 @@ trigger = _addLife.trigger,

import { devFreeze } from "@rpldy/shared";
export var DEFAULT_PARAM_NAME = "file";
export var DEFAULT_FILTER = function DEFAULT_FILTER() {
export var DEFAULT_FILTER = function () {
return true;

@@ -8,2 +8,3 @@ };

autoUpload: true,
clearPendingOnAdd: false,
inputFieldName: "file",

@@ -10,0 +11,0 @@ concurrent: false,

@@ -1,31 +0,28 @@

import { triggerCancellable } from "@rpldy/shared";
import createUploadQueue from "./queue";
import createItemsSender from "./batchItemsSender";
export default (function (trigger, options, uploaderId) {
// $FlowFixMe - https://github.com/facebook/flow/issues/8215
var cancellable = triggerCancellable(trigger),
sender = createItemsSender(),
queue = createUploadQueue(options, cancellable, trigger, sender, uploaderId);
var process = function process(batch, batchOptions) {
queue.uploadBatch(batch, batchOptions);
};
var abortBatch = function abortBatch(batchId) {
queue.abortBatch(batchId);
};
var abort = function abort(id) {
if (id) {
queue.abortItem(id);
} else {
queue.abortAll();
}
};
import createBatch from "./batch";
export default (function (trigger, cancellable, options, uploaderId) {
var sender = createItemsSender(),
queue = createUploadQueue(options, trigger, cancellable, sender, uploaderId);
var runCancellable = queue.runCancellable;
return {
process: process,
abortBatch: abortBatch,
abort: abort
process: function process(batch, batchOptions) {
queue.uploadBatch(batch, batchOptions);
},
abortBatch: function abortBatch(batchId) {
queue.abortBatch(batchId);
},
abort: function abort(id) {
if (id) {
queue.abortItem(id);
} else {
queue.abortAll();
}
},
addNewBatch: function addNewBatch(files, uploaderId, processOptions) {
var batch = createBatch(files, uploaderId, processOptions);
return queue.addBatch(batch, processOptions);
},
runCancellable: runCancellable
};
});

@@ -6,7 +6,7 @@ import { BATCH_STATES, FILE_STATES, logger } from "@rpldy/shared";

var isItemInProgress = function isItemInProgress(state) {
var isItemInProgress = function (state) {
return state === FILE_STATES.ADDED || state === FILE_STATES.UPLOADING;
};
var callAbortOnItem = function callAbortOnItem(queue, id, next) {
var callAbortOnItem = function (queue, id, next) {
var abortCalled = false;

@@ -41,3 +41,3 @@ var state = queue.getState(),

var abortAll = function abortAll(queue, next) {
var abortAll = function (queue, next) {
var items = queue.getState().items;

@@ -49,7 +49,7 @@ Object.keys(items).forEach(function (id) {

var abortItem = function abortItem(queue, id, next) {
var abortItem = function (queue, id, next) {
return callAbortOnItem(queue, id, next);
};
var abortBatch = function abortBatch(queue, id, next) {
var abortBatch = function (queue, id, next) {
var state = queue.getState(),

@@ -56,0 +56,0 @@ batchData = state.batches[id],

@@ -12,15 +12,15 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

var getBatchFromState = function getBatchFromState(state, id) {
var getBatchFromState = function (state, id) {
return state.batches[id].batch;
};
var getBatch = function getBatch(queue, id) {
var getBatch = function (queue, id) {
return getBatchFromState(queue.getState(), id);
};
var isItemBelongsToBatch = function isItemBelongsToBatch(queue, itemId, batchId) {
var isItemBelongsToBatch = function (queue, itemId, batchId) {
return queue.getState().items[itemId].batchId === batchId;
};
var getBatchDataFromItemId = function getBatchDataFromItemId(queue, itemId) {
var getBatchDataFromItemId = function (queue, itemId) {
var state = queue.getState();

@@ -31,7 +31,7 @@ var item = state.items[itemId];

var getBatchFromItemId = function getBatchFromItemId(queue, itemId) {
var getBatchFromItemId = function (queue, itemId) {
return getBatchDataFromItemId(queue, itemId).batch;
};
var removeBatchItems = function removeBatchItems(queue, batchId) {
var removeBatchItems = function (queue, batchId) {
var batch = getBatch(queue, batchId);

@@ -51,3 +51,3 @@ queue.updateState(function (state) {

var removeBatch = function removeBatch(queue, batchId) {
var removeBatch = function (queue, batchId) {
queue.updateState(function (state) {

@@ -58,3 +58,3 @@ delete state.batches[batchId];

var cancelBatchForItem = function cancelBatchForItem(queue, itemId) {
var cancelBatchForItem = function (queue, itemId) {
var batch = getBatchFromItemId(queue, itemId),

@@ -74,3 +74,3 @@ batchId = batch.id;

var isNewBatchStarting = function isNewBatchStarting(queue, itemId) {
var isNewBatchStarting = function (queue, itemId) {
var batch = getBatchFromItemId(queue, itemId);

@@ -80,5 +80,5 @@ return queue.getState().currentBatch !== batch.id;

var loadNewBatchForItem = function loadNewBatchForItem(queue, itemId) {
var loadNewBatchForItem = function (queue, itemId) {
var batch = getBatchFromItemId(queue, itemId);
return queue.cancellable(UPLOADER_EVENTS.BATCH_START, batch).then(function (isCancelled) {
return queue.runCancellable(UPLOADER_EVENTS.BATCH_START, batch).then(function (isCancelled) {
if (!isCancelled) {

@@ -94,3 +94,3 @@ queue.updateState(function (state) {

var isBatchFinished = function isBatchFinished(queue) {
var isBatchFinished = function (queue) {
var itemQueue = queue.getState().itemQueue;

@@ -100,7 +100,7 @@ return itemQueue.length === 0 || isNewBatchStarting(queue, itemQueue[0]);

var cleanUpFinishedBatch = function cleanUpFinishedBatch(queue) {
var cleanUpFinishedBatch = function (queue) {
var state = queue.getState();
var batchId = state.currentBatch;
if (batchId && isBatchFinished(queue)) {
if (batchId && state.batches[batchId] && isBatchFinished(queue)) {
triggerUploaderBatchEvent(queue, batchId, UPLOADER_EVENTS.BATCH_FINISH);

@@ -112,3 +112,3 @@ removeBatchItems(queue, batchId);

var triggerUploaderBatchEvent = function triggerUploaderBatchEvent(queue, batchId, event) {
var triggerUploaderBatchEvent = function (queue, batchId, event) {
var state = queue.getState(),

@@ -129,3 +129,3 @@ batch = getBatchFromState(state, batchId),

var getIsItemBatchReady = function getIsItemBatchReady(queue, itemId) {
var getIsItemBatchReady = function (queue, itemId) {
var batch = getBatchFromItemId(queue, itemId);

@@ -135,3 +135,3 @@ return BATCH_READY_STATES.includes(batch.state);

var detachRecycledFromPreviousBatch = function detachRecycledFromPreviousBatch(queue, item) {
var detachRecycledFromPreviousBatch = function (queue, item) {
var previousBatch = item.previousBatch;

@@ -138,0 +138,0 @@

import { triggerUpdater, isSamePropInArrays, FILE_STATES, logger, getMerge } from "@rpldy/shared";
import { unwrap } from "@rpldy/simple-state";
import { UPLOADER_EVENTS } from "../consts";

@@ -9,8 +8,6 @@ import processFinishedRequest from "./processFinishedRequest";

var triggerPreSendUpdate = function triggerPreSendUpdate(queue, items, options) {
var triggerPreSendUpdate = function (queue, items, options) {
return triggerUpdater(queue.trigger, UPLOADER_EVENTS.REQUEST_PRE_SEND, {
items: items.map(function (i) {
return unwrap(i);
}),
options: unwrap(options)
items: items,
options: options
}) // $FlowFixMe - https://github.com/facebook/flow/issues/8215

@@ -43,3 +40,3 @@ .then(function (updated) {

var prepareAllowedItems = function prepareAllowedItems(queue, items) {
var prepareAllowedItems = function (queue, items) {
var allowedIds = items.map(function (item) {

@@ -72,3 +69,3 @@ return item.id;

var updateUploadingState = function updateUploadingState(queue, items, sendResult) {
var updateUploadingState = function (queue, items, sendResult) {
queue.updateState(function (state) {

@@ -83,3 +80,3 @@ items.forEach(function (bi) {

var sendAllowedItems = function sendAllowedItems(queue, itemsSendData, next) {
var sendAllowedItems = function (queue, itemsSendData, next) {
var items = itemsSendData.items,

@@ -102,3 +99,3 @@ options = itemsSendData.options;

var reportCancelledItems = function reportCancelledItems(queue, items, cancelledResults, next) {
var reportCancelledItems = function (queue, items, cancelledResults, next) {
var cancelledItemsIds = cancelledResults.map(function (isCancelled, index) {

@@ -126,3 +123,3 @@ return isCancelled ? items[index].id : null;

var getAllowedItem = function getAllowedItem(id, queue) {
var getAllowedItem = function (id, queue) {
return queue.getState().items[id];

@@ -132,3 +129,3 @@ }; //send group of items to be uploaded

var processBatchItems = function processBatchItems(queue, ids, next) {
var processBatchItems = function (queue, ids, next) {
var state = queue.getState(); //ids will have more than one when grouping is allowed

@@ -142,3 +139,3 @@

return Promise.all(items.map(function (i) {
return queue.cancellable(UPLOADER_EVENTS.ITEM_START, i);
return queue.runCancellable(UPLOADER_EVENTS.ITEM_START, i);
})).then(function (cancelledResults) {

@@ -145,0 +142,0 @@ var allowedItems = cancelledResults.map(function (isCancelled, index) {

@@ -11,7 +11,7 @@ var _FILE_STATE_TO_EVENT_;

var getIsFinalized = function getIsFinalized(item) {
var getIsFinalized = function (item) {
return !!~ITEM_FINALIZE_STATES.indexOf(item.state);
};
export default (function (queue, finishedData, next) {
var processFinishedRequest = function (queue, finishedData, next) {
finishedData.forEach(function (itemData) {

@@ -68,2 +68,4 @@ var state = queue.getState();

return next(queue);
});
};
export default processFinishedRequest;

@@ -5,3 +5,3 @@ import { FILE_STATES, logger } from "@rpldy/shared";

var getIsItemInActiveRequest = function getIsItemInActiveRequest(queue, itemId) {
var getIsItemInActiveRequest = function (queue, itemId) {
return !!~queue.getState().activeIds // $FlowFixMe - no flat

@@ -11,7 +11,7 @@ .flat().indexOf(itemId);

var getIsItemReady = function getIsItemReady(item) {
var getIsItemReady = function (item) {
return item.state === FILE_STATES.ADDED;
};
export var findNextItemIndex = function findNextItemIndex(queue) {
export var findNextItemIndex = function (queue) {
var state = queue.getState(),

@@ -30,3 +30,3 @@ itemQueue = state.itemQueue,

};
export var getNextIdGroup = function getNextIdGroup(queue) {
export var getNextIdGroup = function (queue) {
var itemQueue = queue.getState().itemQueue;

@@ -59,3 +59,3 @@ var nextItemIndex = findNextItemIndex(queue);

var processNext = function processNext(queue) {
var processNext = function (queue) {
var ids = getNextIdGroup(queue);

@@ -62,0 +62,0 @@ var resultP = Promise.resolve();

@@ -5,25 +5,18 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }

function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import { logger, hasWindow } from "@rpldy/shared";
import createState, { unwrap } from "@rpldy/simple-state";
import { logger, hasWindow, isFunction } from "@rpldy/shared";
import createState from "@rpldy/simple-state";
import { SENDER_EVENTS, UPLOADER_EVENTS } from "../consts";
import processQueueNext from "./processQueueNext";
import * as abortMethods from "./abort";
import { detachRecycledFromPreviousBatch } from "./batchHelpers";
export default (function (options, cancellable, trigger, sender, uploaderId) {
import { detachRecycledFromPreviousBatch, getBatchFromState } from "./batchHelpers";
var createUploaderQueue = function (options, trigger, cancellable, sender, uploaderId) {
var _createState = createState({

@@ -40,31 +33,11 @@ itemQueue: [],

var unWrapAndTrigger = function unWrapAndTrigger(name) {
for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
data[_key - 1] = arguments[_key];
}
return trigger.apply(void 0, [name].concat(_toConsumableArray(data.map(function (d) {
return unwrap(d);
}))));
};
var unWrapAndCancellable = function unWrapAndCancellable(name) {
for (var _len2 = arguments.length, data = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
data[_key2 - 1] = arguments[_key2];
}
return cancellable.apply(void 0, [name].concat(_toConsumableArray(data.map(function (d) {
return unwrap(d);
}))));
};
var getState = function getState() {
var getState = function () {
return state;
};
var updateState = function updateState(updater) {
var updateState = function (updater) {
update(updater);
};
var add = function add(item) {
var add = function (item) {
if (state.items[item.id] && !item.recycled) {

@@ -84,14 +57,3 @@ throw new Error("Uploader queue conflict - item ".concat(item.id, " already exists"));

var uploadBatch = function uploadBatch(batch, batchOptions) {
updateState(function (state) {
state.batches[batch.id] = {
batch: batch,
batchOptions: batchOptions
};
});
batch.items.forEach(add);
processQueueNext(queueState);
};
var handleItemProgress = function handleItemProgress(item, completed, loaded) {
var handleItemProgress = function (item, completed, loaded) {
if (state.items[item.id]) {

@@ -104,3 +66,3 @@ updateState(function (state) {

unWrapAndTrigger(UPLOADER_EVENTS.ITEM_PROGRESS, getState().items[item.id]);
trigger(UPLOADER_EVENTS.ITEM_PROGRESS, getState().items[item.id]);
}

@@ -132,3 +94,3 @@ };

});
unWrapAndTrigger(UPLOADER_EVENTS.BATCH_PROGRESS, state.batches[batch.id].batch);
trigger(UPLOADER_EVENTS.BATCH_PROGRESS, state.batches[batch.id].batch);
}

@@ -145,4 +107,15 @@ });

updateState: updateState,
trigger: unWrapAndTrigger,
cancellable: unWrapAndCancellable,
trigger: trigger,
runCancellable: function runCancellable(name) {
if (!isFunction(cancellable)) {
//for flow :(
throw new Error("cancellable is of wrong type");
}
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
return cancellable.apply(void 0, [name].concat(args));
},
sender: sender,

@@ -152,26 +125,41 @@ handleItemProgress: handleItemProgress

if (hasWindow && logger.isDebugOn()) {
if (hasWindow() && logger.isDebugOn()) {
window["__rpldy_".concat(uploaderId, "_queue_state")] = queueState;
}
var abortItem = function abortItem(id) {
return abortMethods.abortItem(queueState, id, processQueueNext);
};
var abortBatch = function abortBatch(id) {
abortMethods.abortBatch(queueState, id, processQueueNext);
};
var abortAll = function abortAll() {
abortMethods.abortAll(queueState, processQueueNext);
};
return {
updateState: updateState,
getState: queueState.getState,
uploadBatch: uploadBatch,
abortItem: abortItem,
abortBatch: abortBatch,
abortAll: abortAll
runCancellable: queueState.runCancellable,
uploadBatch: function uploadBatch(batch, batchOptions) {
if (batchOptions) {
updateState(function (state) {
state.batches[batch.id].batchOptions = batchOptions;
});
}
batch.items.forEach(add);
processQueueNext(queueState);
},
addBatch: function addBatch(batch, batchOptions) {
updateState(function (state) {
state.batches[batch.id] = {
batch: batch,
batchOptions: batchOptions
};
});
return getBatchFromState(state, batch.id);
},
abortItem: function abortItem(id) {
return abortMethods.abortItem(queueState, id, processQueueNext);
},
abortBatch: function abortBatch(id) {
abortMethods.abortBatch(queueState, id, processQueueNext);
},
abortAll: function abortAll() {
abortMethods.abortAll(queueState, processQueueNext);
}
};
});
};
export default createUploaderQueue;

@@ -1,7 +0,6 @@

import addLife from "@rpldy/life-events";
import addLife, { createLifePack } from "@rpldy/life-events";
import { BATCH_STATES, invariant, logger, triggerCancellable, devFreeze, merge, clone } from "@rpldy/shared";
import createBatch from "./batch";
import getProcessor from "./processor";
import { UPLOADER_EVENTS } from "./consts";
import { getMandatoryOptions } from "./utils";
import { getMandatoryOptions, deepProxyUnwrap } from "./utils";
var EVENT_NAMES = Object.values(UPLOADER_EVENTS);

@@ -23,3 +22,3 @@ var EXT_OUTSIDE_ENHANCER_TIME = "Uploady - uploader extensions can only be registered by enhancers",

var update = function update(updateOptions) {
var update = function (updateOptions) {
//TODO: updating concurrent and maxConcurrent means we need to update the processor - not supported yet!

@@ -31,10 +30,9 @@ uploaderOptions = merge({}, uploaderOptions, updateOptions); //need deep merge for destination

var add = function add(files, addOptions) {
var add = function (files, addOptions) {
var processOptions = merge({}, uploaderOptions, addOptions);
var batch = createBatch(files, uploader.id, processOptions);
var batch = processor.addNewBatch(files, uploader.id, processOptions);
var resultP;
if (batch.items.length) {
// $FlowFixMe - https://github.com/facebook/flow/issues/8215
resultP = cancellable(UPLOADER_EVENTS.BATCH_ADD, batch, processOptions).then(function (isCancelled) {
resultP = processor.runCancellable(UPLOADER_EVENTS.BATCH_ADD, batch, processOptions).then(function (isCancelled) {
if (!isCancelled) {

@@ -44,4 +42,8 @@ logger.debugLog("uploady.uploader [".concat(uploader.id, "]: new items added - auto upload =\n ").concat(String(processOptions.autoUpload)), batch.items);

if (processOptions.autoUpload) {
processor.process(batch, processOptions);
processor.process(batch);
} else {
if (processOptions.clearPendingOnAdd) {
clearPending();
}
pendingBatches.push({

@@ -54,3 +56,3 @@ batch: batch,

batch.state = BATCH_STATES.CANCELLED;
trigger(UPLOADER_EVENTS.BATCH_CANCEL, batch);
triggerWithUnwrap(UPLOADER_EVENTS.BATCH_CANCEL, batch);
}

@@ -65,15 +67,3 @@ });

var abort = function abort(id) {
processor.abort(id);
};
var abortBatch = function abortBatch(id) {
processor.abortBatch(id);
};
var getPending = function getPending() {
return pendingBatches.slice();
};
var clearPending = function clearPending() {
var clearPending = function () {
pendingBatches.splice(0);

@@ -86,15 +76,7 @@ };

var upload = function upload() {
pendingBatches.splice(0).forEach(function (_ref) {
var batch = _ref.batch,
uploadOptions = _ref.uploadOptions;
return processor.process(batch, uploadOptions);
});
};
var getOptions = function getOptions() {
var getOptions = function () {
return clone(uploaderOptions);
};
var registerExtension = function registerExtension(name, methods) {
var registerExtension = function (name, methods) {
invariant(enhancerTime, EXT_OUTSIDE_ENHANCER_TIME);

@@ -106,6 +88,2 @@ invariant(!extensions[name], EXT_ALREADY_EXISTS, name);

var getExtension = function getExtension(name) {
return extensions[name];
};
var _addLife = addLife({

@@ -115,10 +93,24 @@ id: uploaderId,

add: add,
upload: upload,
abort: abort,
abortBatch: abortBatch,
upload: function upload(uploadOptions) {
pendingBatches.splice(0).forEach(function (_ref) {
var batch = _ref.batch,
batchOptions = _ref.uploadOptions;
return processor.process(batch, merge({}, batchOptions, uploadOptions));
});
},
abort: function abort(id) {
processor.abort(id);
},
abortBatch: function abortBatch(id) {
processor.abortBatch(id);
},
getOptions: getOptions,
getPending: getPending,
getPending: function getPending() {
return pendingBatches.slice();
},
clearPending: clearPending,
registerExtension: registerExtension,
getExtension: getExtension
getExtension: function getExtension(name) {
return extensions[name];
}
}, EVENT_NAMES, {

@@ -130,8 +122,24 @@ canAddEvents: false,

uploader = _addLife.target;
/**
* ensures that data being exposed to client-land isnt a proxy, only pojos
*/
var cancellable = triggerCancellable(trigger);
var triggerWithUnwrap = function (name) {
for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
data[_key - 1] = arguments[_key];
}
//delays unwrap to the very last time on trigger. Will only unwrap if there are listeners
var lp = createLifePack(function () {
return data.map(deepProxyUnwrap);
});
return trigger(name, lp);
};
var cancellable = triggerCancellable(triggerWithUnwrap);
if (uploaderOptions.enhancer) {
enhancerTime = true;
var enhanced = uploaderOptions.enhancer(uploader, trigger);
var enhanced = uploaderOptions.enhancer(uploader, triggerWithUnwrap);
enhancerTime = false; //graceful handling for enhancer forgetting to return uploader

@@ -142,4 +150,4 @@

var processor = getProcessor(trigger, uploaderOptions, uploader.id);
var processor = getProcessor(triggerWithUnwrap, cancellable, uploaderOptions, uploader.id);
return devFreeze(uploader);
});

@@ -7,7 +7,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

import { hasWindow, isProduction } from "@rpldy/shared";
import { unwrap, isProxiable, isProxy } from "@rpldy/simple-state";
import { DEFAULT_OPTIONS, DEFAULT_PARAM_NAME } from "./defaults";
import { hasWindow } from "@rpldy/shared";
var FILE_LIST_SUPPORT = hasWindow && "FileList" in window;
var FILE_LIST_SUPPORT = hasWindow() && "FileList" in window;
var getMandatoryDestination = function getMandatoryDestination(dest) {
var getMandatoryDestination = function (dest) {
return _objectSpread({

@@ -19,3 +20,3 @@ filesParamName: DEFAULT_PARAM_NAME,

var getMandatoryOptions = function getMandatoryOptions(options) {
var getMandatoryOptions = function (options) {
return _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_OPTIONS), options), {}, {

@@ -26,3 +27,3 @@ destination: options && options.destination ? getMandatoryDestination(options.destination) : null

var getIsFileList = function getIsFileList(files) {
var getIsFileList = function (files) {
return (//in case files list was created in a different context(window) need to check toString

@@ -32,3 +33,28 @@ FILE_LIST_SUPPORT && files instanceof FileList || files.toString() === "[object FileList]"

};
/***
* will unwrap object from proxy
* if obj itself isnt a proxy, will look for a proxy max 2 levels deep
*/
export { getMandatoryOptions, getIsFileList };
var deepProxyUnwrap = function (obj) {
var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
var result = obj;
if (!isProduction()) {
if (level < 3 && isProxy(obj)) {
result = unwrap(obj);
} else if (level < 3 && isProxiable(obj)) {
result = Array.isArray(obj) ? Object.keys(obj).map(function (key) {
return deepProxyUnwrap(obj[key]);
}) : Object.keys(obj).reduce(function (res, key) {
res[key] = deepProxyUnwrap(obj[key], level + 1);
return res;
}, {});
}
}
return result;
};
export { getMandatoryOptions, getIsFileList, deepProxyUnwrap };
{
"version": "0.6.0",
"version": "0.7.0",
"name": "@rpldy/uploader",

@@ -27,6 +27,6 @@ "description": "the processing and queuing engine for react-uploady",

"dependencies": {
"@rpldy/life-events": "^0.6.0",
"@rpldy/sender": "^0.6.0",
"@rpldy/shared": "^0.6.0",
"@rpldy/simple-state": "^0.6.0"
"@rpldy/life-events": "^0.7.0",
"@rpldy/sender": "^0.7.0",
"@rpldy/shared": "^0.7.0",
"@rpldy/simple-state": "^0.7.0"
},

@@ -39,3 +39,3 @@ "devDependencies": {

},
"gitHead": "43de735c426078647a9768caa733ba6cfd190d32"
"gitHead": "5bd0ebc140b45e44b168511f501b9f22628abd56"
}

@@ -38,3 +38,3 @@ import {

add: UploadAddMethod;
upload: () => void;
upload: (uploadOptions?: UploadOptions) => void;
abort: (id?: string) => void;

@@ -41,0 +41,0 @@ abortBatch: (id: string) => void;

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc