UNPKG

@tomjs/node

Version:

A collection of functions for `node.js` projects

160 lines (159 loc) 4.61 kB
'use strict'; 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;