Spaces:
Sleeping
Sleeping
; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
const fsScandir = require("@nodelib/fs.scandir"); | |
const common = require("./common"); | |
const reader_1 = require("./reader"); | |
class SyncReader extends reader_1.default { | |
constructor() { | |
super(...arguments); | |
this._scandir = fsScandir.scandirSync; | |
this._storage = []; | |
this._queue = new Set(); | |
} | |
read() { | |
this._pushToQueue(this._root, this._settings.basePath); | |
this._handleQueue(); | |
return this._storage; | |
} | |
_pushToQueue(directory, base) { | |
this._queue.add({ directory, base }); | |
} | |
_handleQueue() { | |
for (const item of this._queue.values()) { | |
this._handleDirectory(item.directory, item.base); | |
} | |
} | |
_handleDirectory(directory, base) { | |
try { | |
const entries = this._scandir(directory, this._settings.fsScandirSettings); | |
for (const entry of entries) { | |
this._handleEntry(entry, base); | |
} | |
} | |
catch (error) { | |
this._handleError(error); | |
} | |
} | |
_handleError(error) { | |
if (!common.isFatalError(this._settings, error)) { | |
return; | |
} | |
throw error; | |
} | |
_handleEntry(entry, base) { | |
const fullpath = entry.path; | |
if (base !== undefined) { | |
entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); | |
} | |
if (common.isAppliedFilter(this._settings.entryFilter, entry)) { | |
this._pushToStorage(entry); | |
} | |
if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { | |
this._pushToQueue(fullpath, base === undefined ? undefined : entry.path); | |
} | |
} | |
_pushToStorage(entry) { | |
this._storage.push(entry); | |
} | |
} | |
exports.default = SyncReader; | |