s3-batch-upload
Version:
Super fast batched S3 folder uploads from CLI or API.
41 lines (34 loc) • 949 B
JavaScript
exports.__esModule = true;
exports.default = streamBatch;
function streamBatch({
concurrency,
files,
processItem,
onProgress
}) {
return new Promise(resolve => {
let count = 0;
const total = files.length;
const results = []; // when upload for one item is done, complete or process the next
const onItemDone = result => {
results.push(result);
count += 1; // if completed
if (!files.length && count === total) {
// temp fix for https://github.com/visionmedia/node-progress/pull/183
setTimeout(() => {
onProgress();
resolve(results);
}, 50);
} else {
onProgress();
if (files.length) {
processItem(files.shift()).then(onItemDone);
}
}
}; // start 'threads'
for (let i = 0; i < Math.min(concurrency, files.length); i += 1) {
processItem(files.shift()).then(onItemDone);
}
});
}
;