30 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| export interface Limit {
 | |
| 	/**
 | |
| 	 * @param fn - Promise-returning/async function.
 | |
| 	 * @param arguments - Any arguments to pass through to `fn`. Support for passing arguments on to the `fn` is provided in order to be able to avoid creating unnecessary closures. You probably don't need this optimization unless you're pushing a lot of functions.
 | |
| 	 * @returns The promise returned by calling `fn(...arguments)`.
 | |
| 	 */
 | |
| 	<Arguments extends unknown[], ReturnType>(
 | |
| 		fn: (...arguments: Arguments) => PromiseLike<ReturnType> | ReturnType,
 | |
| 		...arguments: Arguments
 | |
| 	): Promise<ReturnType>;
 | |
| 
 | |
| 	/**
 | |
| 	 * The number of promises that are currently running.
 | |
| 	 */
 | |
| 	readonly activeCount: number;
 | |
| 
 | |
| 	/**
 | |
| 	 * The number of promises that are waiting to run (i.e. their internal `fn` was not called yet).
 | |
| 	 */
 | |
| 	readonly pendingCount: number;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Run multiple promise-returning & async functions with limited concurrency.
 | |
|  *
 | |
|  * @param concurrency - Concurrency limit. Minimum: `1`.
 | |
|  * @returns A `limit` function.
 | |
|  */
 | |
| export default function pLimit(concurrency: number): Limit;
 |