@visulima/fs
Version:
Human friendly file system utilities for Node.js
34 lines (30 loc) • 1.43 kB
JavaScript
;
const node_fs = require('node:fs');
const node_zlib = require('node:zlib');
const utils = require('@visulima/path/utils');
const F_OK = require('./F_OK-CWSqQIdF.cjs');
const PermissionError = require('./PermissionError-QFMKgk2l.cjs');
const isAccessibleSync = require('./isAccessibleSync-VWjQa-US.cjs');
const assertValidFileOrDirectoryPath = require('./assertValidFileOrDirectoryPath-BMbgA-eI.cjs');
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
const decompressionMethods = {
brotli: node_zlib.brotliDecompressSync,
gzip: node_zlib.unzipSync,
none: /* @__PURE__ */ __name((buffer) => buffer, "none")
};
const readFileSync = /* @__PURE__ */ __name((path, options) => {
assertValidFileOrDirectoryPath(path);
path = utils.toPath(path);
if (!isAccessibleSync(path)) {
throw new PermissionError(`unable to read the non-accessible file: ${path}`);
}
if (!isAccessibleSync(path, F_OK.R_OK)) {
throw new PermissionError(`invalid access to read file at: ${path}`);
}
const { buffer, compression, encoding, flag } = options ?? {};
const content = node_fs.readFileSync(path, flag ? { encoding, flag } : { encoding });
const decompressed = decompressionMethods[compression ?? "none"](content);
return buffer ? decompressed : decompressed.toString();
}, "readFileSync");
module.exports = readFileSync;