65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.8 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; | ||
|  | 	} | ||
|  | } | ||
|  | 
 | ||
|  | declare const pLocate: { | ||
|  | 	/** | ||
|  | 	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'
 | ||
|  | 	})(); | ||
|  | 	```
 | ||
|  | 	*/ | ||
|  | 	<ValueType>( | ||
|  | 		input: Iterable<PromiseLike<ValueType> | ValueType>, | ||
|  | 		tester: (element: ValueType) => PromiseLike<boolean> | boolean, | ||
|  | 		options?: pLocate.Options | ||
|  | 	): Promise<ValueType | undefined>; | ||
|  | 
 | ||
|  | 	// TODO: Remove this for the next major release, refactor the whole definition to:
 | ||
|  | 	// declare function pLocate<ValueType>(
 | ||
|  | 	// 	input: Iterable<PromiseLike<ValueType> | ValueType>,
 | ||
|  | 	// 	tester: (element: ValueType) => PromiseLike<boolean> | boolean,
 | ||
|  | 	// 	options?: pLocate.Options
 | ||
|  | 	// ): Promise<ValueType | undefined>;
 | ||
|  | 	// export = pLocate;
 | ||
|  | 	default: typeof pLocate; | ||
|  | }; | ||
|  | 
 | ||
|  | export = pLocate; |