fs-readdir-sync-with-file-types
Version:
fs.readdirSync withFileTypes ponyfill
46 lines (39 loc) • 1.2 kB
JavaScript
;
var path = require('path');
var _require = require('fs'),
lstatSync = _require.lstatSync,
readdirSync = _require.readdirSync;
var currify = require('currify/legacy');
var isString = function isString(a) {
return typeof a === 'string';
};
var getDirEnt = currify(_getDirEnt);
module.exports = function (dir) {
var names = readdirSync(dir, {
withFileTypes: true
});
if (!names.length) return [];
if (!isString(names[0])) return names;
return names.map(getDirEnt(dir));
};
function _getDirEnt(dir, name) {
var fullPath = path.join(dir, name);
var stat = lstatSync(fullPath);
var isBlockDevice = stat.isBlockDevice,
isCharacterDevice = stat.isCharacterDevice,
isDirectory = stat.isDirectory,
isFIFO = stat.isFIFO,
isFile = stat.isFile,
isSocket = stat.isSocket,
isSymbolicLink = stat.isSymbolicLink;
return {
name: name,
isBlockDevice: isBlockDevice.bind(stat),
isCharacterDevice: isCharacterDevice.bind(stat),
isDirectory: isDirectory.bind(stat),
isFIFO: isFIFO.bind(stat),
isFile: isFile.bind(stat),
isSocket: isSocket.bind(stat),
isSymbolicLink: isSymbolicLink.bind(stat)
};
}