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