index.d.ts
 1  declare namespace pLocate {
 2  	interface Options {
 3  		/**
 4  		Number of concurrently pending promises returned by `tester`. Minimum: `1`.
 5  
 6  		@default Infinity
 7  		*/
 8  		readonly concurrency?: number;
 9  
10  		/**
11  		Preserve `input` order when searching.
12  
13  		Disable this to improve performance if you don't care about the order.
14  
15  		@default true
16  		*/
17  		readonly preserveOrder?: boolean;
18  	}
19  }
20  
21  declare const pLocate: {
22  	/**
23  	Get the first fulfilled promise that satisfies the provided testing function.
24  
25  	@param input - An iterable of promises/values to test.
26  	@param tester - This function will receive resolved values from `input` and is expected to return a `Promise<boolean>` or `boolean`.
27  	@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`.
28  
29  	@example
30  	```
31  	import pathExists = require('path-exists');
32  	import pLocate = require('p-locate');
33  
34  	const files = [
35  		'unicorn.png',
36  		'rainbow.png', // Only this one actually exists on disk
37  		'pony.png'
38  	];
39  
40  	(async () => {
41  		const foundPath = await pLocate(files, file => pathExists(file));
42  
43  		console.log(foundPath);
44  		//=> 'rainbow'
45  	})();
46  	```
47  	*/
48  	<ValueType>(
49  		input: Iterable<PromiseLike<ValueType> | ValueType>,
50  		tester: (element: ValueType) => PromiseLike<boolean> | boolean,
51  		options?: pLocate.Options
52  	): Promise<ValueType | undefined>;
53  
54  	// TODO: Remove this for the next major release, refactor the whole definition to:
55  	// declare function pLocate<ValueType>(
56  	// 	input: Iterable<PromiseLike<ValueType> | ValueType>,
57  	// 	tester: (element: ValueType) => PromiseLike<boolean> | boolean,
58  	// 	options?: pLocate.Options
59  	// ): Promise<ValueType | undefined>;
60  	// export = pLocate;
61  	default: typeof pLocate;
62  };
63  
64  export = pLocate;