UNPKG

s3-batch-upload

Version:

Super fast batched S3 folder uploads from CLI or API.

41 lines (34 loc) 949 B
"use strict"; 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); } }); }