UNPKG

bapig

Version:

Welcome to BAPIG, a powerful backend solution designed to streamline your development process. With over 40 built-in functionalities, BAPIG simplifies CRUD operations, facilitates authentication and encryption, handles communication tasks, and much more.

171 lines 8.01 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.print = exports.generateKey = exports.generateIV = exports.address = exports.numberOfCPUs = exports.architecture = exports.deviceHostname = exports.deviceUsername = exports.decryptQuery = exports.decrypt = exports.encrypt = exports.modelsDirectory = exports.uploadingDirectory = exports.staticFilesDirectory = exports.projectDirectory = exports.webpushPrivateKey = exports.webpushPublicKey = exports.userEmailAddressPassword = exports.emailPortNumber = exports.userEmailAddress = exports.emailHostName = exports.username = exports.application = exports.apiKey = exports.hasEnableEncryption = exports.env = exports.convertToArray = exports.convertToObject = exports.convertToBoolean = void 0; var os_1 = __importDefault(require("os")); var url_1 = __importDefault(require("url")); var path_1 = __importDefault(require("path")); var dotenv_1 = __importDefault(require("dotenv")); var crypto_1 = __importDefault(require("crypto")); var fast_web_kit_1 = require("fast-web-kit"); var print_1 = require("./print"); // Configure environment variables dotenv_1.default.config(); /** * Convert a string or boolean value to a boolean. * @param value - The value to convert. * @returns The converted boolean value. */ var convertToBoolean = function (value) { return typeof value === 'string' && value === 'true' ? true : typeof value === 'boolean' ? value : false; }; exports.convertToBoolean = convertToBoolean; /** * Convert a value to an object. * @param value - The value to convert. * @returns The converted object. */ var convertToObject = function (value) { return fast_web_kit_1.object.isValid(value) && !fast_web_kit_1.object.isEmpty(value) ? value : fast_web_kit_1.string.isValidJSON(value) ? fast_web_kit_1.object.toObject(value) : {}; }; exports.convertToObject = convertToObject; /** * Convert a value to an array. * @param value - The value to convert. * @returns The converted array. */ var convertToArray = function (value) { return fast_web_kit_1.array.isValid(value) && !fast_web_kit_1.array.isEmpty(value) ? value : fast_web_kit_1.string.isValidJSON(value) ? fast_web_kit_1.object.toObject(value) : []; }; exports.convertToArray = convertToArray; // Environment variables var encrptionAlgorithm = 'aes-256-cbc'; exports.env = process.env; var projectFolder = exports.env.PROJECT_FOLDER_NAME || 'src'; var encryptionType = exports.env.ENCRYPTION_TYPE || 'hex'; var staticFilesFolderName = exports.env.STATIC_FILES_FOLDER_NAME || 'public'; var modelsFolder = exports.env.MODELS_FOLDER_NAME_IN_PROJECT_FOLDER || 'models'; var fileUploadingFolderName = exports.env.FILE_UPLOADING_FOLDER_NAME || 'uploads'; exports.hasEnableEncryption = (0, exports.convertToBoolean)(exports.env.ENABLE_ENCRYPTION || false); var initializationVector = Buffer.from(exports.env.INITIALIZATION_VECTOR || '3f42550dc722917a', 'utf8'); var encryptionKey = Buffer.from(exports.env.ENCRYPTION_KEY || 'vOVH6sdmpNWjRRIqCc7rdxs01lwHzfr3', 'utf8'); // Africa's Talking variables exports.apiKey = exports.env.AFRICAS_TALKING_API_KEY || ''; exports.application = exports.env.AFRICAS_TALKING_SENDERS_ID || ''; exports.username = exports.env.AFRICAS_TALKING_APPLICATION_NAME || ''; // Email variables exports.emailHostName = exports.env.SMTP || ''; exports.userEmailAddress = exports.env.USER_EMAIL_ADDRESS || ''; exports.emailPortNumber = Number(exports.env.EMAIL_PORT_NUMBER) || 587; exports.userEmailAddressPassword = exports.env.USER_EMAIL_ADDRESS_PASSWORD || ''; // Web Push variables exports.webpushPublicKey = exports.env.WEBPUSH_PUBLIC_KEY || ''; exports.webpushPrivateKey = exports.env.WEBPUSH_PRIVATE_KEY || ''; // Project directories exports.projectDirectory = path_1.default.join(__dirname, "../../../../".concat(projectFolder)); exports.staticFilesDirectory = path_1.default.join(__dirname, "../../../../".concat(staticFilesFolderName)); exports.uploadingDirectory = path_1.default.join(exports.staticFilesDirectory, fileUploadingFolderName); // Models directory exports.modelsDirectory = path_1.default.join(exports.projectDirectory, modelsFolder); /** * Encrypt data using the configured algorithm and key. * @param data - The data to encrypt. * @returns The encrypted data. */ function encrypt(data) { try { var cipher = crypto_1.default.createCipheriv(encrptionAlgorithm, encryptionKey, initializationVector); var payload = cipher.update(JSON.stringify(data), 'utf8', encryptionType) + cipher.final(encryptionType); return { payload: payload }; } catch (error) { print_1.print.error("Encryption error: ".concat(error.message)); return { payload: error.message }; } } exports.encrypt = encrypt; /** * Decrypt data using the configured algorithm and key. * @param data - The encrypted data. * @returns The decrypted data. */ function decrypt(data) { try { var decipher = crypto_1.default.createDecipheriv(encrptionAlgorithm, encryptionKey, initializationVector); var decrypted = JSON.parse(decipher.update(data.payload, encryptionType, 'utf8') + decipher.final('utf8')); return decrypted; } catch (error) { print_1.print.error("Decryption error: ".concat(error.message)); return error.message; } } exports.decrypt = decrypt; /** * Decrypt data and parse it as a query string. * @param data - The encrypted data. * @returns The decrypted and parsed query parameters. */ function decryptQuery(data) { try { var decryptedData = decrypt(data); var queryString = "?".concat(decryptedData); return __assign({}, url_1.default.parse(queryString, true).query); } catch (error) { print_1.print.error("Failed to decrypt query: ".concat(error.message)); return {}; } } exports.decryptQuery = decryptQuery; // Device information // Get device username, hostname, system architecture, and number of CPUs exports.deviceUsername = os_1.default.userInfo().username; exports.deviceHostname = os_1.default.hostname(); exports.architecture = os_1.default.arch(); exports.numberOfCPUs = os_1.default.cpus().length; // Get device IP addresses exports.address = os_1.default.networkInterfaces(); // print.info(`Device IP Addresses: ${JSON.stringify(address, null, 2)}`); /** * Generate a random initialization vector. * @returns The generated initialization vector. */ var generateIV = function () { return crypto_1.default.randomBytes(16).toString(encryptionType); }; exports.generateIV = generateIV; /** * Generate a random encryption key. * @returns The generated encryption key. */ var generateKey = function () { return crypto_1.default.randomBytes(32).toString(encryptionType); }; exports.generateKey = generateKey; // Print the combined information in a single statement print_1.print.magenta("User: ".concat(exports.deviceUsername, " | Host: ").concat(exports.deviceHostname, " | Arch: ").concat(exports.architecture, " | CPUs: ").concat(exports.numberOfCPUs)); var print_2 = require("./print"); Object.defineProperty(exports, "print", { enumerable: true, get: function () { return print_2.print; } }); //# sourceMappingURL=index.js.map