|
|
- "use strict";
- 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;
|