Spaces:
Sleeping
Sleeping
; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
function sync(path, options) { | |
const lstat = options.fs.lstatSync(path); | |
if (!isFollowedSymlink(lstat, options)) { | |
return lstat; | |
} | |
try { | |
const stat = options.fs.statSync(path); | |
stat.isSymbolicLink = () => true; | |
return stat; | |
} | |
catch (err) { | |
if (!options.throwErrorOnBrokenSymlinks) { | |
return lstat; | |
} | |
throw err; | |
} | |
} | |
exports.sync = sync; | |
function async(path, options, callback) { | |
options.fs.lstat(path, (err0, lstat) => { | |
if (err0) { | |
return callback(err0, undefined); | |
} | |
if (!isFollowedSymlink(lstat, options)) { | |
return callback(null, lstat); | |
} | |
options.fs.stat(path, (err1, stat) => { | |
if (err1) { | |
return options.throwErrorOnBrokenSymlinks ? callback(err1) : callback(null, lstat); | |
} | |
stat.isSymbolicLink = () => true; | |
callback(null, stat); | |
}); | |
}); | |
} | |
exports.async = async; | |
/** | |
* Returns `true` for followed symlink. | |
*/ | |
function isFollowedSymlink(stat, options) { | |
return stat.isSymbolicLink() && options.followSymlinks; | |
} | |
exports.isFollowedSymlink = isFollowedSymlink; | |