1const {dirname} = require('path') 2 3const findMade = (opts, parent, path = undefined) => { 4 // we never want the 'made' return value to be a root directory 5 if (path === parent) 6 return Promise.resolve() 7 8 return opts.statAsync(parent).then( 9 st => st.isDirectory() ? path : undefined, // will fail later 10 er => er.code === 'ENOENT' 11 ? findMade(opts, dirname(parent), parent) 12 : undefined 13 ) 14} 15 16const findMadeSync = (opts, parent, path = undefined) => { 17 if (path === parent) 18 return undefined 19 20 try { 21 return opts.statSync(parent).isDirectory() ? path : undefined 22 } catch (er) { 23 return er.code === 'ENOENT' 24 ? findMadeSync(opts, dirname(parent), parent) 25 : undefined 26 } 27} 28 29module.exports = {findMade, findMadeSync} 30