34 lines
1.6 KiB
JavaScript
34 lines
1.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.StatFs = void 0;
|
|
/**
|
|
* Statistics about a file system, like `fs.StatFs`.
|
|
*/
|
|
class StatFs {
|
|
static build(superblock, bigint = false) {
|
|
const statfs = new StatFs();
|
|
const getStatNumber = !bigint ? number => number : number => BigInt(number);
|
|
// For in-memory filesystem, provide mock but reasonable values
|
|
// Magic number for in-memory filesystem type (similar to ramfs)
|
|
statfs.type = getStatNumber(0x858458f6);
|
|
// Optimal transfer block size - commonly 4096 bytes
|
|
statfs.bsize = getStatNumber(4096);
|
|
// Calculate filesystem stats based on current state
|
|
const totalInodes = Object.keys(superblock.inodes).length;
|
|
// Mock large filesystem capacity (appears as a large filesystem to applications)
|
|
const totalBlocks = 1000000;
|
|
const usedBlocks = Math.min(totalInodes * 2, totalBlocks); // Rough estimation
|
|
const freeBlocks = totalBlocks - usedBlocks;
|
|
statfs.blocks = getStatNumber(totalBlocks); // Total data blocks
|
|
statfs.bfree = getStatNumber(freeBlocks); // Free blocks in file system
|
|
statfs.bavail = getStatNumber(freeBlocks); // Free blocks available to unprivileged users
|
|
// File node statistics
|
|
const maxFiles = 1000000; // Mock large number of available inodes
|
|
statfs.files = getStatNumber(maxFiles); // Total file nodes in file system
|
|
statfs.ffree = getStatNumber(maxFiles - totalInodes); // Free file nodes
|
|
return statfs;
|
|
}
|
|
}
|
|
exports.StatFs = StatFs;
|
|
exports.default = StatFs;
|
|
//# sourceMappingURL=StatFs.js.map
|