diff options
Diffstat (limited to 'deps/npm/node_modules/find-npm-prefix/find-prefix.js')
-rw-r--r-- | deps/npm/node_modules/find-npm-prefix/find-prefix.js | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/deps/npm/node_modules/find-npm-prefix/find-prefix.js b/deps/npm/node_modules/find-npm-prefix/find-prefix.js index 089572ec110..d5e271322be 100644 --- a/deps/npm/node_modules/find-npm-prefix/find-prefix.js +++ b/deps/npm/node_modules/find-npm-prefix/find-prefix.js @@ -5,11 +5,9 @@ module.exports = findPrefix const fs = require('fs') const path = require('path') -const Bluebird = require('bluebird') -const readdir = Bluebird.promisify(fs.readdir) function findPrefix (dir) { - return Bluebird.try(() => { + return new Promise((resolve, reject) => { dir = path.resolve(dir) // this is a weird special case where an infinite recurse of @@ -20,9 +18,11 @@ function findPrefix (dir) { dir = path.dirname(dir) walkedUp = true } - if (walkedUp) return dir - - return findPrefix_(dir) + if (walkedUp) { + resolve(dir) + } else { + resolve(findPrefix_(dir)) + } }) } @@ -32,23 +32,25 @@ function findPrefix_ (dir, original) { const parent = path.dirname(dir) // this is a platform independent way of checking if we're in the root // directory - if (parent === dir) return original - - return readdir(dir).then(files => { - if (files.indexOf('node_modules') !== -1 || - files.indexOf('package.json') !== -1) { - return dir - } - - return findPrefix_(parent, original) - }, er => { - // an error right away is a bad sign. - // unless the prefix was simply a non - // existent directory. - if (er && dir === original && er.code !== 'ENOENT') { - throw er - } else { - return original - } + if (parent === dir) return Promise.resolve(original) + + return new Promise((resolve, reject) => { + fs.readdir(dir, (err, files) => { + if (err) { + // an error right away is a bad sign. + // unless the prefix was simply a non + // existent directory. + if (err && dir === original && err.code !== 'ENOENT') { + reject(err) + } else { + resolve(original) + } + } else if (files.indexOf('node_modules') !== -1 || + files.indexOf('package.json') !== -1) { + resolve(dir) + } else { + resolve(findPrefix_(parent, original)) + } + }) }) } |