138 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			138 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import {Options as LocatePathOptions} from 'locate-path'; | ||
|  | 
 | ||
|  | declare const stop: unique symbol; | ||
|  | 
 | ||
|  | declare namespace findUp { | ||
|  | 	interface Options extends LocatePathOptions {} | ||
|  | 
 | ||
|  | 	type StopSymbol = typeof stop; | ||
|  | 
 | ||
|  | 	type Match = string | StopSymbol | undefined; | ||
|  | } | ||
|  | 
 | ||
|  | declare const findUp: { | ||
|  | 	/** | ||
|  | 	Find a file or directory by walking up parent directories. | ||
|  | 
 | ||
|  | 	@param name - Name of the file or directory to find. Can be multiple. | ||
|  | 	@returns The first path found (by respecting the order of `name`s) or `undefined` if none could be found. | ||
|  | 
 | ||
|  | 	@example | ||
|  | 	```
 | ||
|  | 	// /
 | ||
|  | 	// └── Users
 | ||
|  | 	//     └── sindresorhus
 | ||
|  | 	//         ├── unicorn.png
 | ||
|  | 	//         └── foo
 | ||
|  | 	//             └── bar
 | ||
|  | 	//                 ├── baz
 | ||
|  | 	//                 └── example.js
 | ||
|  | 
 | ||
|  | 	// example.js
 | ||
|  | 	import findUp = require('find-up'); | ||
|  | 
 | ||
|  | 	(async () => { | ||
|  | 		console.log(await findUp('unicorn.png')); | ||
|  | 		//=> '/Users/sindresorhus/unicorn.png'
 | ||
|  | 
 | ||
|  | 		console.log(await findUp(['rainbow.png', 'unicorn.png'])); | ||
|  | 		//=> '/Users/sindresorhus/unicorn.png'
 | ||
|  | 	})(); | ||
|  | 	```
 | ||
|  | 	*/ | ||
|  | 	(name: string | string[], options?: findUp.Options): Promise<string | undefined>; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	Find a file or directory by walking up parent directories. | ||
|  | 
 | ||
|  | 	@param matcher - Called for each directory in the search. Return a path or `findUp.stop` to stop the search. | ||
|  | 	@returns The first path found or `undefined` if none could be found. | ||
|  | 
 | ||
|  | 	@example | ||
|  | 	```
 | ||
|  | 	import path = require('path'); | ||
|  | 	import findUp = require('find-up'); | ||
|  | 
 | ||
|  | 	(async () => { | ||
|  | 		console.log(await findUp(async directory => { | ||
|  | 			const hasUnicorns = await findUp.exists(path.join(directory, 'unicorn.png')); | ||
|  | 			return hasUnicorns && directory; | ||
|  | 		}, {type: 'directory'})); | ||
|  | 		//=> '/Users/sindresorhus'
 | ||
|  | 	})(); | ||
|  | 	```
 | ||
|  | 	*/ | ||
|  | 	(matcher: (directory: string) => (findUp.Match | Promise<findUp.Match>), options?: findUp.Options): Promise<string | undefined>; | ||
|  | 
 | ||
|  | 	sync: { | ||
|  | 		/** | ||
|  | 		Synchronously find a file or directory by walking up parent directories. | ||
|  | 
 | ||
|  | 		@param name - Name of the file or directory to find. Can be multiple. | ||
|  | 		@returns The first path found (by respecting the order of `name`s) or `undefined` if none could be found. | ||
|  | 		*/ | ||
|  | 		(name: string | string[], options?: findUp.Options): string | undefined; | ||
|  | 
 | ||
|  | 		/** | ||
|  | 		Synchronously find a file or directory by walking up parent directories. | ||
|  | 
 | ||
|  | 		@param matcher - Called for each directory in the search. Return a path or `findUp.stop` to stop the search. | ||
|  | 		@returns The first path found or `undefined` if none could be found. | ||
|  | 
 | ||
|  | 		@example | ||
|  | 		```
 | ||
|  | 		import path = require('path'); | ||
|  | 		import findUp = require('find-up'); | ||
|  | 
 | ||
|  | 		console.log(findUp.sync(directory => { | ||
|  | 			const hasUnicorns = findUp.sync.exists(path.join(directory, 'unicorn.png')); | ||
|  | 			return hasUnicorns && directory; | ||
|  | 		}, {type: 'directory'})); | ||
|  | 		//=> '/Users/sindresorhus'
 | ||
|  | 		```
 | ||
|  | 		*/ | ||
|  | 		(matcher: (directory: string) => findUp.Match, options?: findUp.Options): string | undefined; | ||
|  | 
 | ||
|  | 		/** | ||
|  | 		Synchronously check if a path exists. | ||
|  | 
 | ||
|  | 		@param path - Path to the file or directory. | ||
|  | 		@returns Whether the path exists. | ||
|  | 
 | ||
|  | 		@example | ||
|  | 		```
 | ||
|  | 		import findUp = require('find-up'); | ||
|  | 
 | ||
|  | 		console.log(findUp.sync.exists('/Users/sindresorhus/unicorn.png')); | ||
|  | 		//=> true
 | ||
|  | 		```
 | ||
|  | 		*/ | ||
|  | 		exists(path: string): boolean; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	Check if a path exists. | ||
|  | 
 | ||
|  | 	@param path - Path to a file or directory. | ||
|  | 	@returns Whether the path exists. | ||
|  | 
 | ||
|  | 	@example | ||
|  | 	```
 | ||
|  | 	import findUp = require('find-up'); | ||
|  | 
 | ||
|  | 	(async () => { | ||
|  | 		console.log(await findUp.exists('/Users/sindresorhus/unicorn.png')); | ||
|  | 		//=> true
 | ||
|  | 	})(); | ||
|  | 	```
 | ||
|  | 	*/ | ||
|  | 	exists(path: string): Promise<boolean>; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	Return this in a `matcher` function to stop the search and force `findUp` to immediately return `undefined`. | ||
|  | 	*/ | ||
|  | 	readonly stop: findUp.StopSymbol; | ||
|  | }; | ||
|  | 
 | ||
|  | export = findUp; |