54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
declare namespace pLocate {
 | 
						|
	interface Options {
 | 
						|
		/**
 | 
						|
		Number of concurrently pending promises returned by `tester`. Minimum: `1`.
 | 
						|
 | 
						|
		@default Infinity
 | 
						|
		*/
 | 
						|
		readonly concurrency?: number;
 | 
						|
 | 
						|
		/**
 | 
						|
		Preserve `input` order when searching.
 | 
						|
 | 
						|
		Disable this to improve performance if you don't care about the order.
 | 
						|
 | 
						|
		@default true
 | 
						|
		*/
 | 
						|
		readonly preserveOrder?: boolean;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
Get the first fulfilled promise that satisfies the provided testing function.
 | 
						|
 | 
						|
@param input - An iterable of promises/values to test.
 | 
						|
@param tester - This function will receive resolved values from `input` and is expected to return a `Promise<boolean>` or `boolean`.
 | 
						|
@returns A `Promise` that is fulfilled when `tester` resolves to `true` or the iterable is done, or rejects if any of the promises reject. The fulfilled value is the current iterable value or `undefined` if `tester` never resolved to `true`.
 | 
						|
 | 
						|
@example
 | 
						|
```
 | 
						|
import pathExists = require('path-exists');
 | 
						|
import pLocate = require('p-locate');
 | 
						|
 | 
						|
const files = [
 | 
						|
	'unicorn.png',
 | 
						|
	'rainbow.png', // Only this one actually exists on disk
 | 
						|
	'pony.png'
 | 
						|
];
 | 
						|
 | 
						|
(async () => {
 | 
						|
	const foundPath = await pLocate(files, file => pathExists(file));
 | 
						|
 | 
						|
	console.log(foundPath);
 | 
						|
	//=> 'rainbow'
 | 
						|
})();
 | 
						|
```
 | 
						|
*/
 | 
						|
declare function pLocate<ValueType>(
 | 
						|
	input: Iterable<PromiseLike<ValueType> | ValueType>,
 | 
						|
	tester: (element: ValueType) => PromiseLike<boolean> | boolean,
 | 
						|
	options?: pLocate.Options
 | 
						|
): Promise<ValueType | undefined>;
 | 
						|
 | 
						|
export = pLocate;
 |