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
JavaScript
;
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