| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 'use strict';const path = require('path');const locatePath = require('locate-path');module.exports = (filename, opts = {}) => {	const startDir = path.resolve(opts.cwd || '');	const {root} = path.parse(startDir);	const filenames = [].concat(filename);	return new Promise(resolve => {		(function find(dir) {			locatePath(filenames, {cwd: dir}).then(file => {				if (file) {					resolve(path.join(dir, file));				} else if (dir === root) {					resolve(null);				} else {					find(path.dirname(dir));				}			});		})(startDir);	});};module.exports.sync = (filename, opts = {}) => {	let dir = path.resolve(opts.cwd || '');	const {root} = path.parse(dir);	const filenames = [].concat(filename);	// eslint-disable-next-line no-constant-condition	while (true) {		const file = locatePath.sync(filenames, {cwd: dir});		if (file) {			return path.join(dir, file);		}		if (dir === root) {			return null;		}		dir = path.dirname(dir);	}};
 |