55 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
Object.defineProperty(exports, "__esModule", { value: true });
 | 
						|
exports.readdir = exports.readdirWithFileTypes = exports.read = void 0;
 | 
						|
const fsStat = require("@nodelib/fs.stat");
 | 
						|
const constants_1 = require("../constants");
 | 
						|
const utils = require("../utils");
 | 
						|
const common = require("./common");
 | 
						|
function read(directory, settings) {
 | 
						|
    if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {
 | 
						|
        return readdirWithFileTypes(directory, settings);
 | 
						|
    }
 | 
						|
    return readdir(directory, settings);
 | 
						|
}
 | 
						|
exports.read = read;
 | 
						|
function readdirWithFileTypes(directory, settings) {
 | 
						|
    const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });
 | 
						|
    return dirents.map((dirent) => {
 | 
						|
        const entry = {
 | 
						|
            dirent,
 | 
						|
            name: dirent.name,
 | 
						|
            path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)
 | 
						|
        };
 | 
						|
        if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {
 | 
						|
            try {
 | 
						|
                const stats = settings.fs.statSync(entry.path);
 | 
						|
                entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);
 | 
						|
            }
 | 
						|
            catch (error) {
 | 
						|
                if (settings.throwErrorOnBrokenSymbolicLink) {
 | 
						|
                    throw error;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return entry;
 | 
						|
    });
 | 
						|
}
 | 
						|
exports.readdirWithFileTypes = readdirWithFileTypes;
 | 
						|
function readdir(directory, settings) {
 | 
						|
    const names = settings.fs.readdirSync(directory);
 | 
						|
    return names.map((name) => {
 | 
						|
        const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);
 | 
						|
        const stats = fsStat.statSync(entryPath, settings.fsStatSettings);
 | 
						|
        const entry = {
 | 
						|
            name,
 | 
						|
            path: entryPath,
 | 
						|
            dirent: utils.fs.createDirentFromStats(name, stats)
 | 
						|
        };
 | 
						|
        if (settings.stats) {
 | 
						|
            entry.stats = stats;
 | 
						|
        }
 | 
						|
        return entry;
 | 
						|
    });
 | 
						|
}
 | 
						|
exports.readdir = readdir;
 |