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;
 |