| 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;
 
- };
 
 
  |