ts-logs
Version:
This package provide a skd for audit and manager logs in nodejs and express
71 lines • 2.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DecryptData = void 0;
const decrypt_util_1 = require("./decrypt.util");
const DecryptData = async (data, keys, secret) => {
if (data && typeof data === 'string') {
return (0, decrypt_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.DecryptData)(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 keysToDecryptIndex = 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.DecryptData)(target, keys, secret);
result = Object.assign({}, result, { [currentObjectKey]: subObj });
objectKeysIndex++;
continue;
}
result = Object.assign({}, result, { [currentObjectKey]: target });
objectKeysIndex++;
continue;
}
while (keysToEncrypt[keysToDecryptIndex]) {
const currentRemoveKey = keysToEncrypt[keysToDecryptIndex];
const target = data[currentObjectKey];
const isString = typeof target === 'string';
if (currentRemoveKey === currentObjectKey && isString) {
let decrypted = '';
try {
decrypted = await (0, decrypt_util_1.default)(target, secret);
}
catch (error) {
decrypted = target;
}
try {
const parseObject = JSON.parse(decrypted);
decrypted = parseObject;
}
catch (error) {
decrypted = decrypted;
}
result = Object.assign({}, result, { [currentObjectKey]: decrypted });
}
keysToDecryptIndex++;
}
objectKeysIndex++;
}
return result;
}
return data;
};
exports.DecryptData = DecryptData;
exports.default = exports.DecryptData;
//# sourceMappingURL=decrypt-data.util.js.map