@forzalabs/remora
Version:
A powerful CLI tool for seamless data translation.
66 lines (65 loc) • 2.77 kB
JavaScript
;
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;