49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
|
"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;
|