@tomjs/node-utils
Version:
A collection of functions for `node.js` projects
99 lines (98 loc) • 2.52 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
const fs = require("node:fs");
const fsp = require("node:fs/promises");
const path = require("node:path");
function readFileSync(path2) {
return fs.readFileSync(path2, "utf8");
}
function readFile(path2) {
return fsp.readFile(path2, "utf8");
}
function writeFileSync(path2, data) {
fs.writeFileSync(path2, data, "utf8");
}
function writeFile(path2, data) {
return fsp.writeFile(path2, data, "utf8");
}
function readJsonSync(path2) {
if (fs.existsSync(path2)) {
return JSON.parse(readFileSync(path2));
}
}
async function readJson(path2) {
if (fs.existsSync(path2)) {
const text = await readFile(path2);
return JSON.parse(text);
}
}
function writeJsonSync(path2, data, options) {
const opts = Object.assign(
{
replacer: null,
space: 2
},
options
);
writeFileSync(
path2,
typeof data === "string" ? data : JSON.stringify(data, opts.replacer, opts.space)
);
}
function writeJson(path2, data, options) {
const opts = Object.assign(
{
replacer: null,
space: 2
},
options
);
return writeFile(
path2,
typeof data === "string" ? data : JSON.stringify(data, opts.replacer, opts.space)
);
}
const checkPath = (pth) => {
if (process.platform === "win32") {
const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, ""));
if (pathHasInvalidWinCharacters) {
const error = new Error(`Path contains invalid characters: ${pth}`);
error.code = "EINVAL";
throw error;
}
}
};
function mkdir(dir, mode) {
checkPath(dir);
return fsp.mkdir(dir, {
mode: mode ?? 511,
recursive: true
});
}
function mkdirSync(dir, mode) {
checkPath(dir);
return fs.mkdirSync(dir, {
mode: mode ?? 511,
recursive: true
});
}
function removeFile(path2) {
return fsp.rm(path2, { force: true, recursive: true });
}
function removeFileSync(path2) {
fs.rmSync(path2, { force: true, recursive: true });
}
const index = {};
exports.default = index;
exports.mkdir = mkdir;
exports.mkdirSync = mkdirSync;
exports.readFile = readFile;
exports.readFileSync = readFileSync;
exports.readJson = readJson;
exports.readJsonSync = readJsonSync;
exports.removeFile = removeFile;
exports.removeFileSync = removeFileSync;
exports.writeFile = writeFile;
exports.writeFileSync = writeFileSync;
exports.writeJson = writeJson;
exports.writeJsonSync = writeJsonSync;