Files

87 lines
3.5 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.hash = exports.filePathsP = exports.removeFileP = exports.existsP = exports.readFileSync = exports.isFileSync = exports.toStringArray = exports.compact = exports.ensureString = exports.toAbsolutePath = exports.isString = exports.isNothing = void 0;
const ramda_1 = __importDefault(require("ramda"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const crypto_1 = __importDefault(require("crypto"));
const isNothing = (value) => ramda_1.default.isNil(value) || ramda_1.default.isEmpty(value);
exports.isNothing = isNothing;
exports.isString = ramda_1.default.is(String);
const toAbsolutePath = (path) => {
return path.startsWith('.') ? path_1.default.resolve(path) : path;
};
exports.toAbsolutePath = toAbsolutePath;
exports.ensureString = ramda_1.default.curry((defaultValue, text) => ramda_1.default.is(String, text) ? text : defaultValue);
const compact = (input) => {
return input.flat().filter((value) => !ramda_1.default.isNil(value));
};
exports.compact = compact;
exports.toStringArray = ramda_1.default.pipe(exports.compact, ramda_1.default.map(ramda_1.default.toString));
const isFileSync = (path) => {
if (fs_extra_1.default.existsSync(path))
return fs_extra_1.default.lstatSync(path).isFile();
return false;
};
exports.isFileSync = isFileSync;
const readFileSync = (path) => {
if (fs_extra_1.default.existsSync(path)) {
return fs_extra_1.default.readFileSync(path).toString();
}
};
exports.readFileSync = readFileSync;
const existsP = (path) => new Promise((resolve) => {
fs_extra_1.default.pathExists(path, (exists) => resolve(exists));
});
exports.existsP = existsP;
const removeFileP = (path) => new Promise((resolve, reject) => {
(0, exports.existsP)(path).then((exists) => {
if (exists) {
fs_extra_1.default.remove(path, (err) => {
if (err) {
reject(err);
}
else {
resolve();
}
});
}
else {
resolve();
}
});
});
exports.removeFileP = removeFileP;
const filePathsP = (basePath, ns) => new Promise((resolve, reject) => {
(0, exports.existsP)(basePath).then((exists) => {
if (!exists) {
resolve([]);
return;
}
fs_extra_1.default.readdir(basePath, (err, fileNames) => {
if (err) {
reject(err);
}
else {
const paths = ramda_1.default.pipe(exports.compact, ramda_1.default.filter((name) => (ns ? name.startsWith(ns) : true)), ramda_1.default.filter((name) => (!ns ? !name.includes('-') : true)), ramda_1.default.map((name) => `${basePath}/${name}`))(fileNames);
resolve(paths);
}
});
});
});
exports.filePathsP = filePathsP;
const hash = (...values) => {
if (ramda_1.default.pipe(exports.compact, ramda_1.default.isEmpty)(values)) {
return undefined;
}
const resultHash = crypto_1.default.createHash('md5');
const addValue = (value) => resultHash.update(value);
const addValues = ramda_1.default.forEach(addValue);
ramda_1.default.pipe(exports.toStringArray, addValues)(values);
return resultHash.digest('hex');
};
exports.hash = hash;