@tomjs/node
Version:
A collection of functions for `node.js` projects
160 lines (159 loc) • 4.61 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : { default: obj };
}
function _nullishCoalesce(lhs, rhsFn) {
if (lhs != null) {
return lhs;
} else {
return rhsFn();
}
}
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _promises = require('fs/promises');
var _promises2 = _interopRequireDefault(_promises);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function removeFile(path3) {
return _promises2.default.rm(path3, { force: true, recursive: true });
}
function removeFileSync(path3) {
_fs2.default.rmSync(path3, { force: true, recursive: true });
}
function rm(path3) {
return _promises2.default.rm(path3, { force: true, recursive: true });
}
function rmSync(path3) {
_fs2.default.rmSync(path3, { force: true, recursive: true });
}
var checkPath = pth => {
if (process.platform === 'win32') {
const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(
pth.replace(_path2.default.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 _promises2.default.mkdir(dir, {
mode: _nullishCoalesce(mode, () => 511),
recursive: true,
});
}
var mkdirp = mkdir;
function mkdirSync(dir, mode) {
checkPath(dir);
return _fs2.default.mkdirSync(dir, { mode: _nullishCoalesce(mode, () => 511), recursive: true });
}
var mkdirpSync = mkdirSync;
async function emptyDir(dir) {
await rm(dir);
await mkdir(dir);
}
function emptyDirSync(dir) {
rmSync(dir);
mkdirSync(dir);
}
function copyDirSync(srcDir, destDir) {
_fs2.default.mkdirSync(destDir, { recursive: true });
for (const file of _fs2.default.readdirSync(srcDir)) {
const srcFile = _path2.default.resolve(srcDir, file);
const destFile = _path2.default.resolve(destDir, file);
copySync(srcFile, destFile);
}
}
function copySync(src, dest) {
const stat = _fs2.default.statSync(src);
if (stat.isDirectory()) {
copyDirSync(src, dest);
} else {
_fs2.default.copyFileSync(src, dest);
}
}
async function copyDir(srcDir, destDir) {
await mkdir(destDir);
const files = await _promises2.default.readdir(srcDir);
await Promise.all(
files.map(file =>
(async () => {
const srcFile = _path2.default.resolve(srcDir, file);
const destFile = _path2.default.resolve(destDir, file);
await copy(srcFile, destFile);
})(),
),
);
}
async function copy(src, dest) {
const stat = _fs2.default.statSync(src);
if (stat.isDirectory()) {
await copyDir(src, dest);
} else {
await _promises2.default.copyFile(src, dest);
}
}
function readFileSync(path3) {
return _fs2.default.readFileSync(path3, 'utf8');
}
function readFile(path3) {
return _promises2.default.readFile(path3, 'utf8');
}
function writeFileSync(path3, data) {
_fs2.default.writeFileSync(path3, data, 'utf8');
}
function writeFile(path3, data) {
return _promises2.default.writeFile(path3, data, 'utf8');
}
function readJsonSync(path3) {
if (_fs2.default.existsSync(path3)) {
return JSON.parse(readFileSync(path3));
}
}
async function readJson(path3) {
if (_fs2.default.existsSync(path3)) {
const text = await readFile(path3);
return JSON.parse(text);
}
}
function writeJsonSync(path3, data, options) {
const opts = Object.assign({ replacer: null, space: 2 }, options);
writeFileSync(
path3,
typeof data === 'string' ? data : JSON.stringify(data, opts.replacer, opts.space),
);
}
function writeJson(path3, data, options) {
const opts = Object.assign({ replacer: null, space: 2 }, options);
return writeFile(
path3,
typeof data === 'string' ? data : JSON.stringify(data, opts.replacer, opts.space),
);
}
var src_default = {};
exports.copy = copy;
exports.copySync = copySync;
exports.default = src_default;
exports.emptyDir = emptyDir;
exports.emptyDirSync = emptyDirSync;
exports.mkdir = mkdir;
exports.mkdirSync = mkdirSync;
exports.mkdirp = mkdirp;
exports.mkdirpSync = mkdirpSync;
exports.readFile = readFile;
exports.readFileSync = readFileSync;
exports.readJson = readJson;
exports.readJsonSync = readJsonSync;
exports.removeFile = removeFile;
exports.removeFileSync = removeFileSync;
exports.rm = rm;
exports.rmSync = rmSync;
exports.writeFile = writeFile;
exports.writeFileSync = writeFileSync;
exports.writeJson = writeJson;
exports.writeJsonSync = writeJsonSync;