ts-logs
Version:
This package provide a skd for audit and manager logs in nodejs and express
58 lines • 2.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EncryptData = void 0;
const encrypt_util_1 = require("./encrypt.util");
const EncryptData = async (data, keys, secret) => {
if (data && typeof data === 'string') {
return (0, encrypt_util_1.default)(data, secret);
}
if (data && Array.isArray(data)) {
let result = [];
let i = 0;
while (data[i]) {
const attr = data[i];
const payload = await (0, exports.EncryptData)(attr, keys, secret);
result.push(payload);
i++;
}
return result;
}
if (data && typeof data === 'object') {
let result = Object.assign({}, data);
const objectKeys = Object.keys(data);
let objectKeysIndex = 0;
const keysToEncrypt = keys;
let keysToEncryptIndex = 0;
while (objectKeys[objectKeysIndex]) {
const currentObjectKey = objectKeys[objectKeysIndex];
if (!(keysToEncrypt.includes(currentObjectKey))) {
const target = data[currentObjectKey];
if (typeof target === 'object') {
const subObj = await (0, exports.EncryptData)(target, keys, secret);
result = Object.assign({}, result, { [currentObjectKey]: subObj });
objectKeysIndex++;
continue;
}
result = Object.assign({}, result, { [currentObjectKey]: target });
objectKeysIndex++;
continue;
}
while (keysToEncrypt[keysToEncryptIndex]) {
const currentRemoveKey = keysToEncrypt[keysToEncryptIndex];
const target = data[currentObjectKey];
if (currentRemoveKey === currentObjectKey) {
const value = typeof target === 'string' ? target : JSON.stringify(target);
const encrypted = await (0, encrypt_util_1.default)(value, secret);
result = Object.assign({}, result, { [currentObjectKey]: encrypted });
}
keysToEncryptIndex++;
}
objectKeysIndex++;
}
return result;
}
return data;
};
exports.EncryptData = EncryptData;
exports.default = exports.EncryptData;
//# sourceMappingURL=encrypt-data.util.js.map