From 535ec22acf6d5cc4fa3665ab6dbb6755519e6deb Mon Sep 17 00:00:00 2001 From: Simen Bekkhus Date: Tue, 7 Apr 2020 23:52:19 +0200 Subject: [PATCH] [patch] `sync`/`async`: use native `realpath` if available to unwrap symlinks --- lib/async.js | 4 +++- lib/sync.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/async.js b/lib/async.js index fc6d6839..1edf6b96 100644 --- a/lib/async.js +++ b/lib/async.js @@ -5,6 +5,8 @@ var nodeModulesPaths = require('./node-modules-paths.js'); var normalizeOptions = require('./normalize-options.js'); var isCore = require('./is-core'); +var realpath = typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; + var defaultIsFile = function isFile(file, cb) { fs.stat(file, function (err, stat) { if (!err) { @@ -27,7 +29,7 @@ var defaultIsDir = function isDirectory(dir, cb) { var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts, cb) { if (!opts || !opts.preserveSymlinks) { - fs.realpath(x, function (realPathErr, realPath) { + realpath(x, function (realPathErr, realPath) { if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr); else cb(null, realPathErr ? x : realPath); }); diff --git a/lib/sync.js b/lib/sync.js index 11c2a559..65bf4608 100644 --- a/lib/sync.js +++ b/lib/sync.js @@ -5,6 +5,8 @@ var caller = require('./caller.js'); var nodeModulesPaths = require('./node-modules-paths.js'); var normalizeOptions = require('./normalize-options.js'); +var realpath = typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; + var defaultIsFile = function isFile(file) { try { var stat = fs.statSync(file); @@ -28,7 +30,7 @@ var defaultIsDir = function isDirectory(dir) { var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts) { if (!opts || !opts.preserveSymlinks) { try { - return fs.realpathSync(x); + return realpath(x); } catch (realPathErr) { if (realPathErr.code !== 'ENOENT') { throw realPathErr;