UNPKG

@hv-kit/hexpress

Version:

facilitates typescript backend development with express

170 lines 8.2 kB
"use strict"; 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