[d565449] | 1 | "use strict";
|
---|
| 2 | Object.defineProperty(exports, "__esModule", { value: true });
|
---|
| 3 | exports.readdir = exports.readdirWithFileTypes = exports.read = void 0;
|
---|
| 4 | const fsStat = require("@nodelib/fs.stat");
|
---|
| 5 | const constants_1 = require("../constants");
|
---|
| 6 | const utils = require("../utils");
|
---|
| 7 | const common = require("./common");
|
---|
| 8 | function read(directory, settings) {
|
---|
| 9 | if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) {
|
---|
| 10 | return readdirWithFileTypes(directory, settings);
|
---|
| 11 | }
|
---|
| 12 | return readdir(directory, settings);
|
---|
| 13 | }
|
---|
| 14 | exports.read = read;
|
---|
| 15 | function readdirWithFileTypes(directory, settings) {
|
---|
| 16 | const dirents = settings.fs.readdirSync(directory, { withFileTypes: true });
|
---|
| 17 | return dirents.map((dirent) => {
|
---|
| 18 | const entry = {
|
---|
| 19 | dirent,
|
---|
| 20 | name: dirent.name,
|
---|
| 21 | path: common.joinPathSegments(directory, dirent.name, settings.pathSegmentSeparator)
|
---|
| 22 | };
|
---|
| 23 | if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) {
|
---|
| 24 | try {
|
---|
| 25 | const stats = settings.fs.statSync(entry.path);
|
---|
| 26 | entry.dirent = utils.fs.createDirentFromStats(entry.name, stats);
|
---|
| 27 | }
|
---|
| 28 | catch (error) {
|
---|
| 29 | if (settings.throwErrorOnBrokenSymbolicLink) {
|
---|
| 30 | throw error;
|
---|
| 31 | }
|
---|
| 32 | }
|
---|
| 33 | }
|
---|
| 34 | return entry;
|
---|
| 35 | });
|
---|
| 36 | }
|
---|
| 37 | exports.readdirWithFileTypes = readdirWithFileTypes;
|
---|
| 38 | function readdir(directory, settings) {
|
---|
| 39 | const names = settings.fs.readdirSync(directory);
|
---|
| 40 | return names.map((name) => {
|
---|
| 41 | const entryPath = common.joinPathSegments(directory, name, settings.pathSegmentSeparator);
|
---|
| 42 | const stats = fsStat.statSync(entryPath, settings.fsStatSettings);
|
---|
| 43 | const entry = {
|
---|
| 44 | name,
|
---|
| 45 | path: entryPath,
|
---|
| 46 | dirent: utils.fs.createDirentFromStats(name, stats)
|
---|
| 47 | };
|
---|
| 48 | if (settings.stats) {
|
---|
| 49 | entry.stats = stats;
|
---|
| 50 | }
|
---|
| 51 | return entry;
|
---|
| 52 | });
|
---|
| 53 | }
|
---|
| 54 | exports.readdir = readdir;
|
---|