summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/libnpx/get-prefix.js
diff options
context:
space:
mode:
authorKat Marchán <kzm@sykosomatic.org>2017-07-14 10:52:48 -0700
committerJames M Snell <jasnell@gmail.com>2017-07-17 08:49:02 -0700
commit24f43903b4a2f5aa73a99e6f3d4cc62d559cf94b (patch)
tree9c32bd08c43de8721e54cd846d816fbe6cdf056e /deps/npm/node_modules/libnpx/get-prefix.js
parentfa73087fcf4bd14db7791120e688a0a508885b64 (diff)
downloadandroid-node-v8-24f43903b4a2f5aa73a99e6f3d4cc62d559cf94b.tar.gz
android-node-v8-24f43903b4a2f5aa73a99e6f3d4cc62d559cf94b.tar.bz2
android-node-v8-24f43903b4a2f5aa73a99e6f3d4cc62d559cf94b.zip
deps: upgrade npm to 5.3.0
PR-URL: https://github.com/nodejs/node/pull/14235 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com> Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'deps/npm/node_modules/libnpx/get-prefix.js')
-rw-r--r--deps/npm/node_modules/libnpx/get-prefix.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/deps/npm/node_modules/libnpx/get-prefix.js b/deps/npm/node_modules/libnpx/get-prefix.js
new file mode 100644
index 0000000000..71bedffc58
--- /dev/null
+++ b/deps/npm/node_modules/libnpx/get-prefix.js
@@ -0,0 +1,54 @@
+'use strict'
+
+const promisify = require('./util.js').promisify
+
+const path = require('path')
+const statAsync = promisify(require('fs').stat)
+
+module.exports = getPrefix
+function getPrefix (current, root) {
+ if (!root) {
+ const original = root = path.resolve(current)
+ while (path.basename(root) === 'node_modules') {
+ root = path.dirname(root)
+ }
+ if (original !== root) {
+ return Promise.resolve(root)
+ } else {
+ return getPrefix(root, root)
+ }
+ }
+ if (isRootPath(current, process.platform)) {
+ return Promise.resolve(root)
+ } else {
+ return Promise.all([
+ fileExists(path.join(current, 'package.json')),
+ fileExists(path.join(current, 'node_modules'))
+ ]).then(args => {
+ const hasPkg = args[0]
+ const hasModules = args[1]
+ if (hasPkg || hasModules) {
+ return current
+ } else {
+ const parent = path.dirname(current)
+ return getPrefix(parent, root)
+ }
+ })
+ }
+}
+
+module.exports._fileExists = fileExists
+function fileExists (f) {
+ return statAsync(f).catch(err => {
+ if (err.code !== 'ENOENT') {
+ throw err
+ }
+ })
+}
+
+module.exports._isRootPath = isRootPath
+function isRootPath (p, platform) {
+ return platform === 'win32'
+ ? p.match(/^[a-z]+:[/\\]?$/i)
+ : p === '/'
+}