"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Dirent = void 0; const constants_1 = require("./constants"); const encoding_1 = require("./encoding"); const { S_IFMT, S_IFDIR, S_IFREG, S_IFBLK, S_IFCHR, S_IFLNK, S_IFIFO, S_IFSOCK, } = constants_1.constants; /** * A directory entry, like `fs.Dirent`. */ class Dirent { constructor() { this.name = ""; this.mode = 0; } static build(link, encoding) { const dirent = new Dirent(); const { mode } = link.getNode(); dirent.name = (0, encoding_1.strToEncoding)(link.getName(), encoding); dirent.mode = mode; return dirent; } _checkModeProperty(property) { return (this.mode & S_IFMT) === property; } isDirectory() { return this._checkModeProperty(S_IFDIR); } isFile() { return this._checkModeProperty(S_IFREG); } isBlockDevice() { return this._checkModeProperty(S_IFBLK); } isCharacterDevice() { return this._checkModeProperty(S_IFCHR); } isSymbolicLink() { return this._checkModeProperty(S_IFLNK); } isFIFO() { return this._checkModeProperty(S_IFIFO); } isSocket() { return this._checkModeProperty(S_IFSOCK); } } exports.Dirent = Dirent; exports.default = Dirent;