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