@hv-kit/hexpress
Version:
facilitates typescript backend development with express
170 lines • 8.2 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Base64toFile = exports.FileToBase64 = exports.FetchImage = exports.GetFileExtension = exports.CreateDirectoryIfNotExists = void 0;
const hexpress_config_json_1 = __importDefault(require("../../../../hexpress.config.json"));
const fs_1 = __importDefault(require("fs"));
const mime_types_1 = __importDefault(require("mime-types"));
const path_1 = __importDefault(require("path"));
const Axios = __importStar(require("axios"));
const jon_1 = __importDefault(require("@hivi/jon/jon"));
const date_1 = require("./date");
const config_1 = require("./config");
const string_1 = require("./string");
const forms_1 = require("./forms");
const file_sub_1 = require("./file.sub");
const axios = Axios.default;
function CreateDirectoryIfNotExists(dir, returnErr = false) {
return __awaiter(this, void 0, void 0, function* () {
let res = false;
try {
dir = (typeof dir === 'string'
&& dir.length > 0) ? dir : '';
returnErr = (typeof returnErr === 'boolean') ? returnErr : false;
if (!fs_1.default.existsSync(dir)) {
fs_1.default.mkdirSync(dir);
}
res = true;
}
catch (err) {
if (hexpress_config_json_1.default.debug) {
console.log('----> file.ts > CreateDirectoryIfNotExists - err:: ', err);
}
if (returnErr) {
throw err;
}
res = false;
}
return res;
});
}
exports.CreateDirectoryIfNotExists = CreateDirectoryIfNotExists;
function GetFileExtension(file) {
const extension = (file
&& typeof (file.originalname) === 'string'
&& String(file.originalname).split('.').length > 0) ? String(file.originalname).split('.').reverse()[0] : '';
return extension.toLowerCase();
}
exports.GetFileExtension = GetFileExtension;
function FetchImage(src) {
return __awaiter(this, void 0, void 0, function* () {
const image = yield axios
.get(src, {
responseType: 'arraybuffer'
});
return image.data;
});
}
exports.FetchImage = FetchImage;
function FileToBase64(link) {
link = path_1.default.join(hexpress_config_json_1.default.server.static_rep, link);
const content = fs_1.default.readFileSync(link, { encoding: 'base64' });
const mimetype = (mime_types_1.default.lookup(link)) ? String(mime_types_1.default.lookup(link)) : 'text/plain';
return `data:${mimetype};base64,${content}`;
}
exports.FileToBase64 = FileToBase64;
function Base64toFile(dataurl, dest = undefined, formatFilename = (filename) => filename) {
return __awaiter(this, void 0, void 0, function* () {
dataurl = (typeof (dataurl) === 'string'
&& dataurl.length > 0) ? dataurl : '';
dest = (typeof (dest) === 'string'
&& dest.length > 0) ? dest : '';
try {
dataurl = (0, file_sub_1.ReadBase64)(dataurl);
// console.log('----> file.ts > Base64toFile - dataurl:: ', dataurl);
let filename = (0, string_1.RandomF)(10, 'alphanumeric_s', true, (data) => `${(0, date_1.GetCurrentDate)(true, config_1.dateFormat1)}-${data}`);
if (!(0, forms_1.ValidForm)(new jon_1.default.String().dataUri(), dataurl)) {
throw new Error("[ERROR]----> file.ts > Base64toFile - the element is not a datauri type string.");
}
const arr = String(dataurl).split(',');
const arrMatch = arr[0].match(/:(.*?);/);
let mime;
let ext;
if (typeof arr === 'object'
&& Array.isArray(arr) === true
&& arr.length > 0
&& arrMatch) {
mime = arrMatch[1];
ext = (mime_types_1.default.extension(mime)) ? String(mime_types_1.default.extension(mime)) : undefined;
}
else {
throw new Error("[ERROR]----> file.ts > Base64toFile - Object is possibly 'null'.");
}
dataurl = dataurl.replace(new RegExp(`^data:${mime};base64,`), '');
const dest2 = dest;
dest = path_1.default.join(hexpress_config_json_1.default.server.static_rep, dest);
filename = (0, string_1.getAlphanumString)(formatFilename(filename), '');
const finalFilename = `${filename}.${ext}`;
const finalDir = path_1.default.join(dest, finalFilename);
const finalDir2 = path_1.default.join(dest2, finalFilename);
if (hexpress_config_json_1.default.debug) {
console.log('----> file.ts > Base64toFile - dest:: ', dest);
console.log('----> file.ts > Base64toFile - dest2:: ', dest2);
}
// create dir if not exists
yield CreateDirectoryIfNotExists(dest);
//
yield fs_1.default.writeFileSync(finalDir, dataurl, 'base64');
if (hexpress_config_json_1.default.debug) {
console.log('----> file.ts > Base64toFile - dest:: ', dest);
console.log('----> file.ts > Base64toFile - dest2:: ', dest2);
console.log('----> file.ts > Base64toFile - ext:: ', ext);
console.log('----> file.ts > Base64toFile - filename:: ', filename);
console.log('----> file.ts > Base64toFile - finalFilename:: ', finalFilename);
console.log('----> file.ts > Base64toFile - mime:: ', mime);
console.log('----> file.ts > Base64toFile - finalDir:: ', finalDir);
console.log('----> file.ts > Base64toFile - finalDir2:: ', finalDir2);
}
return finalDir2;
}
catch (error) {
if (hexpress_config_json_1.default.debug) {
console.log('----> file.ts > Base64toFile - error:: ', error);
}
return dataurl;
}
});
}
exports.Base64toFile = Base64toFile;
exports.default = {
CreateDirectoryIfNotExists,
GetFileExtension,
FetchImage,
FileToBase64,
Base64toFile,
};
//# sourceMappingURL=file.js.map