| 'use strict'; | 
|   | 
| const fs = require('fs'); | 
| const call = require('../call'); | 
|   | 
| /** | 
|  * A facade around {@link fs.readdirSync} that allows it to be called | 
|  * the same way as {@link fs.readdir}. | 
|  * | 
|  * @param {string} dir | 
|  * @param {function} callback | 
|  */ | 
| exports.readdir = function (dir, callback) { | 
|   // Make sure the callback is only called once | 
|   callback = call.once(callback); | 
|   | 
|   try { | 
|     let items = fs.readdirSync(dir); | 
|     callback(null, items); | 
|   } | 
|   catch (err) { | 
|     callback(err); | 
|   } | 
| }; | 
|   | 
| /** | 
|  * A facade around {@link fs.statSync} that allows it to be called | 
|  * the same way as {@link fs.stat}. | 
|  * | 
|  * @param {string} path | 
|  * @param {function} callback | 
|  */ | 
| exports.stat = function (path, callback) { | 
|   // Make sure the callback is only called once | 
|   callback = call.once(callback); | 
|   | 
|   try { | 
|     let stats = fs.statSync(path); | 
|     callback(null, stats); | 
|   } | 
|   catch (err) { | 
|     callback(err); | 
|   } | 
| }; | 
|   | 
| /** | 
|  * A facade around {@link fs.lstatSync} that allows it to be called | 
|  * the same way as {@link fs.lstat}. | 
|  * | 
|  * @param {string} path | 
|  * @param {function} callback | 
|  */ | 
| exports.lstat = function (path, callback) { | 
|   // Make sure the callback is only called once | 
|   callback = call.once(callback); | 
|   | 
|   try { | 
|     let stats = fs.lstatSync(path); | 
|     callback(null, stats); | 
|   } | 
|   catch (err) { | 
|     callback(err); | 
|   } | 
| }; |