| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 'use strict';var path = require('path');var pathExists = require('path-exists');var Promise = require('pinkie-promise');function splitPath(x) {	return path.resolve(x || '').split(path.sep);}function join(parts, filename) {	return path.resolve(parts.join(path.sep) + path.sep, filename);}module.exports = function (filename, opts) {	opts = opts || {};	var parts = splitPath(opts.cwd);	return new Promise(function (resolve) {		(function find() {			var fp = join(parts, filename);			pathExists(fp).then(function (exists) {				if (exists) {					resolve(fp);				} else if (parts.pop()) {					find();				} else {					resolve(null);				}			});		})();	});};module.exports.sync = function (filename, opts) {	opts = opts || {};	var parts = splitPath(opts.cwd);	var len = parts.length;	while (len--) {		var fp = join(parts, filename);		if (pathExists.sync(fp)) {			return fp;		}		parts.pop();	}	return null;};
 |