browserfs
Version:
A filesystem in your browser!
86 lines • 13.3 kB
JavaScript
"use strict";
(function (FileType) {
FileType[FileType["FILE"] = 32768] = "FILE";
FileType[FileType["DIRECTORY"] = 16384] = "DIRECTORY";
FileType[FileType["SYMLINK"] = 40960] = "SYMLINK";
})(exports.FileType || (exports.FileType = {}));
var FileType = exports.FileType;
var Stats = (function () {
function Stats(item_type, size, mode, atime, mtime, ctime) {
if (atime === void 0) { atime = new Date(); }
if (mtime === void 0) { mtime = new Date(); }
if (ctime === void 0) { ctime = new Date(); }
this.size = size;
this.mode = mode;
this.atime = atime;
this.mtime = mtime;
this.ctime = ctime;
this.dev = 0;
this.ino = 0;
this.rdev = 0;
this.nlink = 1;
this.blksize = 4096;
this.uid = 0;
this.gid = 0;
this.birthtime = new Date(0);
this.file_data = null;
if (this.mode == null) {
switch (item_type) {
case FileType.FILE:
this.mode = 0x1a4;
break;
case FileType.DIRECTORY:
default:
this.mode = 0x1ff;
}
}
this.blocks = Math.ceil(size / 512);
if (this.mode < 0x1000) {
this.mode |= item_type;
}
}
Stats.prototype.toBuffer = function () {
var buffer = new Buffer(32);
buffer.writeUInt32LE(this.size, 0);
buffer.writeUInt32LE(this.mode, 4);
buffer.writeDoubleLE(this.atime.getTime(), 8);
buffer.writeDoubleLE(this.mtime.getTime(), 16);
buffer.writeDoubleLE(this.ctime.getTime(), 24);
return buffer;
};
Stats.fromBuffer = function (buffer) {
var size = buffer.readUInt32LE(0), mode = buffer.readUInt32LE(4), atime = buffer.readDoubleLE(8), mtime = buffer.readDoubleLE(16), ctime = buffer.readDoubleLE(24);
return new Stats(mode & 0xF000, size, mode & 0xFFF, new Date(atime), new Date(mtime), new Date(ctime));
};
Stats.prototype.clone = function () {
return new Stats(this.mode & 0xF000, this.size, this.mode & 0xFFF, this.atime, this.mtime, this.ctime);
};
Stats.prototype.isFile = function () {
return (this.mode & 0xF000) === FileType.FILE;
};
Stats.prototype.isDirectory = function () {
return (this.mode & 0xF000) === FileType.DIRECTORY;
};
Stats.prototype.isSymbolicLink = function () {
return (this.mode & 0xF000) === FileType.SYMLINK;
};
Stats.prototype.chmod = function (mode) {
this.mode = (this.mode & 0xF000) | mode;
};
Stats.prototype.isSocket = function () {
return false;
};
Stats.prototype.isBlockDevice = function () {
return false;
};
Stats.prototype.isCharacterDevice = function () {
return false;
};
Stats.prototype.isFIFO = function () {
return false;
};
return Stats;
}());
exports.__esModule = true;
exports["default"] = Stats;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZV9mc19zdGF0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlL25vZGVfZnNfc3RhdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQU1BLFdBQVksUUFBUTtJQUNsQiwyQ0FBYSxDQUFBO0lBQ2IscURBQWtCLENBQUE7SUFDbEIsaURBQWdCLENBQUE7QUFDbEIsQ0FBQyxFQUpXLGdCQUFRLEtBQVIsZ0JBQVEsUUFJbkI7QUFKRCxJQUFZLFFBQVEsR0FBUixnQkFJWCxDQUFBO0FBVUQ7SUFxQ0UsZUFDRSxTQUFtQixFQUNaLElBQVksRUFDWixJQUFhLEVBQ2IsS0FBd0IsRUFDeEIsS0FBd0IsRUFDeEIsS0FBd0I7UUFGL0IscUJBQStCLEdBQS9CLFlBQXlCLElBQUksRUFBRTtRQUMvQixxQkFBK0IsR0FBL0IsWUFBeUIsSUFBSSxFQUFFO1FBQy9CLHFCQUErQixHQUEvQixZQUF5QixJQUFJLEVBQUU7UUFKeEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFNBQUksR0FBSixJQUFJLENBQVM7UUFDYixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQW5DMUIsUUFBRyxHQUFXLENBQUMsQ0FBQztRQUVoQixRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBRWhCLFNBQUksR0FBVyxDQUFDLENBQUM7UUFFakIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUVsQixZQUFPLEdBQVcsSUFBSSxDQUFDO1FBR3ZCLFFBQUcsR0FBVyxDQUFDLENBQUM7UUFFaEIsUUFBRyxHQUFXLENBQUMsQ0FBQztRQUVoQixjQUFTLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUIsY0FBUyxHQUFlLElBQUksQ0FBQztRQW1CbEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RC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TyxDQUFDO0lBQ25ELENBQUM7SUFNTSxxQkFBSyxHQUFaLFVBQWEsSUFBWTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDMUMsQ0FBQztJQUlNLHdCQUFRLEdBQWY7UUFDRSxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLDZCQUFhLEdBQXBCO1FBQ0UsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxpQ0FBaUIsR0FBeEI7UUFDRSxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLHNCQUFNLEdBQWI7UUFDRSxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNILFlBQUM7QUFBRCxDQUFDLEFBeklELElBeUlDO0FBeklEOzBCQXlJQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmltcG9ydCBmaWxlID0gcmVxdWlyZSgnLi9maWxlJyk7XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoZSB0eXBlIG9mIHRoZSBnaXZlbiBmaWxlLiBBcHBsaWVkIHRvICdtb2RlJy5cbiAqL1xuZXhwb3J0IGVudW0gRmlsZVR5cGUge1xuICBGSUxFID0gMHg4MDAwLFxuICBESVJFQ1RPUlkgPSAweDQwMDAsXG4gIFNZTUxJTksgPSAweEEwMDBcbn1cblxuLyoqXG4gKiBFbXVsYXRpb24gb2YgTm9kZSdzIGBmcy5TdGF0c2Agb2JqZWN0LlxuICpcbiAqIEF0dHJpYnV0ZSBkZXNjcmlwdGlvbnMgYXJlIGZyb20gYG1hbiAyIHN0YXQnXG4gKiBAc2VlIGh0dHA6Ly9ub2RlanMub3JnL2FwaS9mcy5odG1sI2ZzX2NsYXNzX2ZzX3N0YXRzXG4gKiBAc2VlIGh0dHA6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMi9zdGF0LjIuaHRtbFxuICogQGNsYXNzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRzIGltcGxlbWVudHMgZnMuU3RhdHMge1xuICBwdWJsaWMgYmxvY2tzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBVTlNVUFBPUlRFRCBBVFRSSUJVVEVTXG4gICAqIEkgYXNzdW1lIG5vIG9uZSBpcyBnb2luZyB0byBuZWVkIHRoZXNlIGRldGFpbHMsIGFsdGhvdWdoIHdlIGNvdWxkIGZha2VcbiAgICogYXBwcm9wcmlhdGUgdmFsdWVzIGlmIG5lZWQgYmUuXG4gICAqL1xuICAvLyBJRCBvZiBkZXZpY2UgY29udGFpbmluZyBmaWxlXG4gIHB1YmxpYyBkZXY6IG51bWJlciA9IDA7XG4gIC8vIGlub2RlIG51bWJlclxuICBwdWJsaWMgaW5vOiBudW1iZXIgPSAwO1xuICAvLyBkZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSlcbiAgcHVibGljIHJkZXY6IG51bWJlciA9IDA7XG4gIC8vIG51bWJlciBvZiBoYXJkIGxpbmtzXG4gIHB1YmxpYyBubGluazogbnVtYmVyID0gMTtcbiAgLy8gYmxvY2tzaXplIGZvciBmaWxlIHN5c3RlbSBJL09cbiAgcHVibGljIGJsa3NpemU6IG51bWJlciA9IDQwOTY7XG4gIC8vIEB0b2RvIE1heWJlIHN1cHBvcnQgdGhlc2U/IGF0bSwgaXQncyBhIG9uZS11c2VyIGZpbGVzeXN0ZW0uXG4gIC8vIHVzZXIgSUQgb2Ygb3duZXJcbiAgcHVibGljIHVpZDogbnVtYmVyID0gMDtcbiAgLy8gZ3JvdXAgSUQgb2Ygb3duZXJcbiAgcHVibGljIGdpZDogbnVtYmVyID0gMDtcbiAgLy8gdGltZSBmaWxlIHdhcyBjcmVhdGVkIChjdXJyZW50bHkgdW5zdXBwb3J0ZWQpXG4gIHB1YmxpYyBiaXJ0aHRpbWU6IERhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgLy8gWFhYOiBTb21lIGZpbGUgc3lzdGVtcyBzdGFzaCBkYXRhIG9uIHN0YXRzIG9iamVjdHMuXG4gIHB1YmxpYyBmaWxlX2RhdGE6IE5vZGVCdWZmZXIgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgZW50cnkgaW4gdGhlIGZpbGUgc3lzdGVtLlxuICAgKiBAcGFyYW0gW051bWJlcl0gaXRlbV90eXBlIHR5cGUgb2YgdGhlIGl0ZW0gKEZJTEUsIERJUkVDVE9SWSwgU1lNTElOSywgb3IgU09DS0VUKVxuICAgKiBAcGFyYW0gW051bWJlcl0gc2l6ZSBTaXplIG9mIHRoZSBpdGVtIGluIGJ5dGVzLiBGb3IgZGlyZWN0b3JpZXMvc3ltbGlua3MsXG4gICAqICAgdGhpcyBpcyBub3JtYWxseSB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgaXRlbS5cbiAgICogQHBhcmFtIFtOdW1iZXJdIG1vZGUgVW5peC1zdHlsZSBmaWxlIG1vZGUgKGUuZy4gMG82NDQpXG4gICAqIEBwYXJhbSBbRGF0ZT9dIGF0aW1lIHRpbWUgb2YgbGFzdCBhY2Nlc3NcbiAgICogQHBhcmFtIFtEYXRlP10gbXRpbWUgdGltZSBvZiBsYXN0IG1vZGlmaWNhdGlvblxuICAgKiBAcGFyYW0gW0RhdGU/XSBjdGltZSB0aW1lIG9mIGNyZWF0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBpdGVtX3R5cGU6IEZpbGVUeXBlLFxuICAgIHB1YmxpYyBzaXplOiBudW1iZXIsXG4gICAgcHVibGljIG1vZGU/OiBudW1iZXIsXG4gICAgcHVibGljIGF0aW1lOiBEYXRlID0gbmV3IERhdGUoKSxcbiAgICBwdWJsaWMgbXRpbWU6IERhdGUgPSBuZXcgRGF0ZSgpLFxuICAgIHB1YmxpYyBjdGltZTogRGF0ZSA9IG5ldyBEYXRlKCkpIHtcbiAgICBpZiAodGhpcy5tb2RlID09IG51bGwpIHtcbiAgICAgIHN3aXRjaChpdGVtX3R5cGUpIHtcbiAgICAgICAgY2FzZSBGaWxlVHlwZS5GSUxFOlxuICAgICAgICAgIHRoaXMubW9kZSA9IDB4MWE0O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZpbGVUeXBlLkRJUkVDVE9SWTpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLm1vZGUgPSAweDFmZjtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gbnVtYmVyIG9mIDUxMkIgYmxvY2tzIGFsbG9jYXRlZFxuICAgIHRoaXMuYmxvY2tzID0gTWF0aC5jZWlsKHNpemUgLyA1MTIpO1xuICAgIC8vIENoZWNrIGlmIG1vZGUgYWxzbyBpbmNsdWRlcyB0b3AtbW9zdCBiaXRzLCB3aGljaCBpbmRpY2F0ZSB0aGUgZmlsZSdzXG4gICAgLy8gdHlwZS5cbiAgICBpZiAodGhpcy5tb2RlIDwgMHgxMDAwKSB7XG4gICAgICB0aGlzLm1vZGUgfD0gaXRlbV90eXBlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b0J1ZmZlcigpOiBCdWZmZXIge1xuICAgIHZhciBidWZmZXIgPSBuZXcgQnVmZmVyKDMyKTtcbiAgICBidWZmZXIud3JpdGVVSW50MzJMRSh0aGlzLnNpemUsIDApO1xuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKHRoaXMubW9kZSwgNCk7XG4gICAgYnVmZmVyLndyaXRlRG91YmxlTEUodGhpcy5hdGltZS5nZXRUaW1lKCksIDgpO1xuICAgIGJ1ZmZlci53cml0ZURvdWJsZUxFKHRoaXMubXRpbWUuZ2V0VGltZSgpLCAxNik7XG4gICAgYnVmZmVyLndyaXRlRG91YmxlTEUodGhpcy5jdGltZS5nZXRUaW1lKCksIDI0KTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmcm9tQnVmZmVyKGJ1ZmZlcjogQnVmZmVyKTogU3RhdHMge1xuICAgIHZhciBzaXplID0gYnVmZmVyLnJlYWRVSW50MzJMRSgwKSxcbiAgICAgIG1vZGUgPSBidWZmZXIucmVhZFVJbnQzMkxFKDQpLFxuICAgICAgYXRpbWUgPSBidWZmZXIucmVhZERvdWJsZUxFKDgpLFxuICAgICAgbXRpbWUgPSBidWZmZXIucmVhZERvdWJsZUxFKDE2KSxcbiAgICAgIGN0aW1lID0gYnVmZmVyLnJlYWREb3VibGVMRSgyNCk7XG5cbiAgICByZXR1cm4gbmV3IFN0YXRzKG1vZGUgJiAweEYwMDAsIHNpemUsIG1vZGUgJiAweEZGRiwgbmV3IERhdGUoYXRpbWUpLCBuZXcgRGF0ZShtdGltZSksIG5ldyBEYXRlKGN0aW1lKSk7XG4gIH1cblxuICAvKipcbiAgICogKipOb25zdGFuZGFyZCoqOiBDbG9uZSB0aGUgc3RhdHMgb2JqZWN0LlxuICAgKiBAcmV0dXJuIFtCcm93c2VyRlMubm9kZS5mcy5TdGF0c11cbiAgICovXG4gIHB1YmxpYyBjbG9uZSgpOiBTdGF0cyB7XG4gICAgcmV0dXJuIG5ldyBTdGF0cyh0aGlzLm1vZGUgJiAweEYwMDAsIHRoaXMuc2l6ZSwgdGhpcy5tb2RlICYgMHhGRkYsIHRoaXMuYXRpbWUsIHRoaXMubXRpbWUsIHRoaXMuY3RpbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gW0Jvb2xlYW5dIFRydWUgaWYgdGhpcyBpdGVtIGlzIGEgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBpc0ZpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLm1vZGUgJiAweEYwMDApID09PSBGaWxlVHlwZS5GSUxFO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gW0Jvb2xlYW5dIFRydWUgaWYgdGhpcyBpdGVtIGlzIGEgZGlyZWN0b3J5LlxuICAgKi9cbiAgcHVibGljIGlzRGlyZWN0b3J5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5tb2RlICYgMHhGMDAwKSA9PT0gRmlsZVR5cGUuRElSRUNUT1JZO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4gW0Jvb2xlYW5dIFRydWUgaWYgdGhpcyBpdGVtIGlzIGEgc3ltYm9saWMgbGluayAob25seSB2YWxpZCB0aHJvdWdoIGxzdGF0KVxuICAgKi9cbiAgcHVibGljIGlzU3ltYm9saWNMaW5rKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5tb2RlICYgMHhGMDAwKSA9PT0gRmlsZVR5cGUuU1lNTElOSztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2UgdGhlIG1vZGUgb2YgdGhlIGZpbGUuIFdlIHVzZSB0aGlzIGhlbHBlciBmdW5jdGlvbiB0byBwcmV2ZW50IG1lc3NpbmdcbiAgICogdXAgdGhlIHR5cGUgb2YgdGhlIGZpbGUsIHdoaWNoIGlzIGVuY29kZWQgaW4gbW9kZS5cbiAgICovXG4gIHB1YmxpYyBjaG1vZChtb2RlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGUgPSAodGhpcy5tb2RlICYgMHhGMDAwKSB8IG1vZGU7XG4gIH1cblxuICAvLyBXZSBkb24ndCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgdHlwZXMgb2YgZmlsZXMuXG5cbiAgcHVibGljIGlzU29ja2V0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0Jsb2NrRGV2aWNlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NoYXJhY3RlckRldmljZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaXNGSUZPKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19