87 lines
3.5 KiB
JavaScript
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;
|