siphon-cli
Version:
Simple bundler for web applications. 📦🔧🧡
86 lines (85 loc) • 3.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.relativePath = exports.getAllFiles = exports.getFileName = exports.forceCreateDir = exports.fileExists = exports.tryMkingDir = exports.stringifytoBase64 = exports.copyInBase64 = void 0;
var fs_1 = require("fs");
var path_1 = require("path");
var errors_1 = require("../core/errors");
var parsing_utils_1 = require("./parsing_utils");
function copyInBase64(src, dest) {
(0, fs_1.writeFile)(dest, (0, fs_1.readFileSync)(src), "base64", function () { });
}
exports.copyInBase64 = copyInBase64;
function stringifytoBase64(file) {
return "data:".concat((0, parsing_utils_1.getMIMEType)((0, path_1.extname)(file.toString()).slice(1).toLowerCase()), ";base64,").concat((0, fs_1.readFileSync)(file, { encoding: "base64" }));
}
exports.stringifytoBase64 = stringifytoBase64;
function tryMkingDir(src) {
if (!((0, fs_1.existsSync)(src) && (0, fs_1.lstatSync)(src).isDirectory()))
(0, fs_1.mkdirSync)(src);
}
exports.tryMkingDir = tryMkingDir;
function fileExists(srcpath) {
return (0, fs_1.existsSync)(srcpath) && !(0, fs_1.lstatSync)(srcpath).isDirectory();
}
exports.fileExists = fileExists;
function forceCreateDir(source) {
var routes = (0, path_1.resolve)(source.toString()).split(/\\|\//);
for (var index = 1; routes[index]; index++) {
var resolvedPath = routes.slice(0, index).join("/");
if (!(0, fs_1.existsSync)(resolvedPath)) {
(0, fs_1.mkdirSync)(resolvedPath);
}
}
}
exports.forceCreateDir = forceCreateDir;
function getFileName(source) {
return (0, path_1.basename)(source.toString()).split(".").slice(0, -1).join(".");
}
exports.getFileName = getFileName;
function getAllFiles(path, options) {
var fileList = [];
if (!(0, fs_1.lstatSync)(path).isDirectory())
errors_1.default.enc("NOT_A_DIRECTORY", path);
(0, fs_1.readdirSync)(path).forEach(function (pathChild) {
var _a;
if (!((_a = options === null || options === void 0 ? void 0 : options.exclude) === null || _a === void 0 ? void 0 : _a.includes("".concat(path, "/").concat(pathChild)))) {
if ((0, fs_1.lstatSync)("".concat(path, "/").concat(pathChild)).isDirectory()) {
fileList.push(getAllFiles("".concat(path, "/").concat(pathChild, "/")));
}
else {
fileList.push("".concat(path, "/").concat(pathChild, "/"));
}
}
else
return [];
});
return fileList.flat(1);
}
exports.getAllFiles = getAllFiles;
function relativePath(from, to) {
var rootPaths = (0, path_1.resolve)(from.toString())
.split("\\")
.filter(function (route) { return route !== ""; });
switch (true) {
case to.includes(":"):
return to;
case to.startsWith("http://"):
case to.startsWith("https://"):
return to;
case to.startsWith("../"):
do {
rootPaths.pop();
to = to.slice(3);
} while (to.startsWith("../"));
return rootPaths.slice(0, -1).join("\\") + "\\" + to;
case to.startsWith("/"):
return (0, path_1.resolve)(to.slice(1));
case to.startsWith("./"):
return rootPaths.slice(0, -1).join("\\") + "\\" + to.slice(2);
case to.replace(" ", "") === "":
errors_1.default.enc("FILE_NON_EXISTENT", "");
default:
return rootPaths.slice(0, -1).join("\\") + "\\" + to;
}
}
exports.relativePath = relativePath;