| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- 'use strict';
 
- const pTry = require('p-try');
 
- const pLimit = concurrency => {
 
- 	if (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {
 
- 		return Promise.reject(new TypeError('Expected `concurrency` to be a number from 1 and up'));
 
- 	}
 
- 	const queue = [];
 
- 	let activeCount = 0;
 
- 	const next = () => {
 
- 		activeCount--;
 
- 		if (queue.length > 0) {
 
- 			queue.shift()();
 
- 		}
 
- 	};
 
- 	const run = (fn, resolve, ...args) => {
 
- 		activeCount++;
 
- 		const result = pTry(fn, ...args);
 
- 		resolve(result);
 
- 		result.then(next, next);
 
- 	};
 
- 	const enqueue = (fn, resolve, ...args) => {
 
- 		if (activeCount < concurrency) {
 
- 			run(fn, resolve, ...args);
 
- 		} else {
 
- 			queue.push(run.bind(null, fn, resolve, ...args));
 
- 		}
 
- 	};
 
- 	const generator = (fn, ...args) => new Promise(resolve => enqueue(fn, resolve, ...args));
 
- 	Object.defineProperties(generator, {
 
- 		activeCount: {
 
- 			get: () => activeCount
 
- 		},
 
- 		pendingCount: {
 
- 			get: () => queue.length
 
- 		},
 
- 		clearQueue: {
 
- 			value: () => {
 
- 				queue.length = 0;
 
- 			}
 
- 		}
 
- 	});
 
- 	return generator;
 
- };
 
- module.exports = pLimit;
 
- module.exports.default = pLimit;
 
 
  |