Sha256: 5d80c57d0dbbeddc8dd56491164b0b581b5cac70461957507cd91b12f185d8a0

Contents?: true

Size: 633 Bytes

Versions: 74

Compression:

Stored size: 633 Bytes

Contents

'use strict';
const pTry = require('p-try');

module.exports = concurrency => {
	if (concurrency < 1) {
		throw 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()();
		}
	};

	return fn => new Promise((resolve, reject) => {
		const run = () => {
			activeCount++;

			pTry(fn).then(
				val => {
					resolve(val);
					next();
				},
				err => {
					reject(err);
					next();
				}
			);
		};

		if (activeCount < concurrency) {
			run();
		} else {
			queue.push(run);
		}
	});
};

Version data entries

74 entries across 74 versions & 6 rubygems

Version Path
trusty-cms-5.0.7 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-5.0.6 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-5.0.5 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-5.0.4 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-5.0.3 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-5.0.2 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-5.0.1 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.3.5 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-5.0.0 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.3.4 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.3.3 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.3.2 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.3.1 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.3 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.2.3 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.2.2 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.2.1 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.2 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.1.9 node_modules/pkg-up/node_modules/p-limit/index.js
trusty-cms-4.1.8 node_modules/pkg-up/node_modules/p-limit/index.js