secure-encryption-lib
Version:
A TypeScript library for secure encryption using AES & RSA with automatic key rotation.
91 lines (90 loc) • 3.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SERVICE = void 0;
const TYPES_1 = require("./TYPES");
/** @ignore */
const { npm_package_name: pkgName = '', npm_package_version: pkgVersion = '', SECURE_ENCRYPTION_DEDICATED_REDIS = 'false', SECURE_ENCRYPTION_REDIS_AUTH_ENABLED = 'false', SECURE_ENCRYPTION_REDIS_HOST = '', SECURE_ENCRYPTION_REDIS_PORT = '6379', SECURE_ENCRYPTION_REDIS_AUTH = '', SECURE_ENCRYPTION_REDIS_KEY_PREFIX = '', SECURE_ENCRYPTION_TOKEN_EXPIRY_IN_SECS = TYPES_1.DEFAULT_SECURE_ENCRYPTION_CONFIG.SECURE_ENCRYPTION_TOKEN_EXPIRY_IN_SECS.toString() } = process.env;
/** @ignore */
exports.SERVICE = `${pkgName}@${pkgVersion}`;
/** @ignore */
const DEDICATED_REDIS = SECURE_ENCRYPTION_DEDICATED_REDIS === 'true';
/** @ignore */
const DEDICATED_REDIS_AUTH_ENABLED = SECURE_ENCRYPTION_REDIS_AUTH_ENABLED === 'true';
/** @ignore */
let REDIS_CONNECTION_CONFIG = {};
/** @ignore */
const REQUIRED_CONFIG = [
'SECURE_ENCRYPTION_TOKEN_EXPIRY_IN_SECS'
];
/** @ignore */
const MISSING_CONFIGS = [];
/** @ignore */
const INT_ENV = {
SECURE_ENCRYPTION_REDIS_PORT,
SECURE_ENCRYPTION_TOKEN_EXPIRY_IN_SECS
};
/** @ignore */
const INT_CONFIG = {};
/** @ignore */
const INVALID_INT_CONFIG = {};
if (DEDICATED_REDIS) {
REQUIRED_CONFIG.push('SECURE_ENCRYPTION_REDIS_HOST');
REQUIRED_CONFIG.push('SECURE_ENCRYPTION_REDIS_PORT');
if (DEDICATED_REDIS_AUTH_ENABLED) {
REQUIRED_CONFIG.push('SECURE_ENCRYPTION_REDIS_AUTH');
}
REQUIRED_CONFIG.forEach(function (key) {
if (!process.env[key]) {
MISSING_CONFIGS.push(key);
}
});
if (MISSING_CONFIGS.length) {
const logFunc = console.fatal || console.error;
logFunc(`[${exports.SERVICE} ENCRYPTION] SECURE ENCRYPTION Sdk Configs Missing: ${MISSING_CONFIGS.join(', ')}`);
process.exit(1);
}
}
else {
console.warn(`[${exports.SERVICE} ENCRYPTION] SECURE ENCRYPTION Sdk Config SECURE_ENCRYPTION_DEDICATED_REDIS set to false. Ensure REDIS_ENABLED is set to true`);
}
Object.keys(INT_ENV).forEach(key => {
const configKey = key;
const value = INT_ENV[configKey] || '';
const intValue = parseInt(value, 10);
if (isNaN(intValue)) {
INVALID_INT_CONFIG[configKey] = value;
}
else {
INT_CONFIG[configKey] = intValue;
}
});
if (Object.keys(INVALID_INT_CONFIG).length) {
const logFunc = console.fatal || console.error;
logFunc(`[${exports.SERVICE} Encryption] Invalid SECURE ENCRYPTION Sdk Integer Configs:`, INVALID_INT_CONFIG);
process.exit(1);
}
if (DEDICATED_REDIS) {
REDIS_CONNECTION_CONFIG = {
socket: {
host: SECURE_ENCRYPTION_REDIS_HOST,
port: INT_CONFIG.SECURE_ENCRYPTION_REDIS_PORT,
tls: DEDICATED_REDIS_AUTH_ENABLED
},
password: DEDICATED_REDIS_AUTH_ENABLED
? SECURE_ENCRYPTION_REDIS_AUTH
: undefined
};
}
/** @ignore */
const CONFIG = {
DEDICATED_REDIS,
REDIS_CONFIG: {
CONNECTION_CONFIG: REDIS_CONNECTION_CONFIG,
KEY_PREFIX: SECURE_ENCRYPTION_REDIS_KEY_PREFIX
},
SECURE_ENCRYPTION_CONFIG: {
SECURE_ENCRYPTION_TOKEN_EXPIRY_IN_SECS: INT_CONFIG.SECURE_ENCRYPTION_TOKEN_EXPIRY_IN_SECS ||
TYPES_1.DEFAULT_SECURE_ENCRYPTION_CONFIG.SECURE_ENCRYPTION_TOKEN_EXPIRY_IN_SECS
}
};
exports.default = CONFIG;