UNPKG

@forzalabs/remora

Version:

A powerful CLI tool for seamless data translation.

76 lines (75 loc) 3.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const crypto_1 = __importDefault(require("crypto")); const Algo_1 = __importDefault(require("../core/Algo")); const RandomEngine_1 = __importDefault(require("./RandomEngine")); const ProcessENVManager_1 = __importDefault(require("./ProcessENVManager")); class CryptoEngineClass { constructor() { var _a; this._salt = ''; this.hashQuery = (maskType, fieldReference, fieldName) => { if (!Algo_1.default.hasVal(maskType)) return; switch (maskType) { case 'hash': return `SHA2(${fieldReference}, 256) AS "${fieldName}"`; case 'crypt': throw new Error('Not implemented yet'); case 'mask': throw new Error('Not implemented yet'); case 'none': return `${fieldReference} AS "${fieldName}"`; default: throw new Error('This type is not '); } }; this.valueToHash = (value) => { const textValue = JSON.stringify(value); return crypto_1.default.createHash('sha256').update(textValue).digest('hex'); }; this.hashValue = (maskType, value, valueType) => { if (!Algo_1.default.hasVal(value)) return value; if (!Algo_1.default.hasVal(maskType)) return value; const saltedValue = this._salt + value; switch (maskType) { case 'hash': return this.valueToHash(saltedValue); case 'random': { switch (valueType) { case 'datetime': return RandomEngine_1.default.rngDate(); case 'number': return RandomEngine_1.default.rng(); case 'string': return this.valueToHash(saltedValue); default: throw new Error('Not implemented yet'); } } case 'seeded-random': { switch (valueType) { case 'datetime': return RandomEngine_1.default.sRngDate(saltedValue); case 'number': return RandomEngine_1.default.sRng(saltedValue); case 'string': return this.valueToHash(saltedValue); default: throw new Error('Not implemented yet'); } } case 'crypt': throw new Error('Not implemented yet'); case 'mask': throw new Error('Not implemented yet'); case 'none': return value; default: throw new Error(`This type doesn't exist`); } }; this._salt = (_a = ProcessENVManager_1.default.getEnvVariable('REMORA_SALT')) !== null && _a !== void 0 ? _a : ''; } } const CryptoEngine = new CryptoEngineClass(); exports.default = CryptoEngine;