UNPKG

@forzalabs/remora

Version:

A powerful CLI tool for seamless data translation.

66 lines (65 loc) 2.77 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")); class CryptoEngineClass { constructor() { 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'); default: throw new Error('This type is not '); } }; this.valueToHash = (value) => { return crypto_1.default.createHash('sha256').update(JSON.stringify(value)).digest('hex'); }; this.hashValue = (maskType, value, valueType) => { if (!Algo_1.default.hasVal(value)) return value; if (!Algo_1.default.hasVal(maskType)) return value; switch (maskType) { case 'hash': return this.valueToHash(value); case 'random': { switch (valueType) { case 'datetime': return RandomEngine_1.default.rngDate(); case 'number': return RandomEngine_1.default.rng(); case 'string': return this.valueToHash(value); default: throw new Error('Not implemented yet'); } } case 'seeded-random': { switch (valueType) { case 'datetime': return RandomEngine_1.default.sRngDate(value); case 'number': return RandomEngine_1.default.sRng(value); case 'string': return this.valueToHash(value); default: throw new Error('Not implemented yet'); } } case 'crypt': throw new Error('Not implemented yet'); case 'mask': throw new Error('Not implemented yet'); default: throw new Error(`This type doesn't exist`); } }; } } const CryptoEngine = new CryptoEngineClass(); exports.default = CryptoEngine;