@lexamica-modules/job-queue
Version:
The package for the Lexamica Job Queue SDK powered by Redis and BullMQ
52 lines (51 loc) • 1.96 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.decryptPayload = exports.encryptPayload = void 0;
const cryptr_1 = __importDefault(require("cryptr"));
const errors_1 = require("./errors");
const CRYPTR = new cryptr_1.default(String(process.env.JOB_QUEUE_ENCRYPTION_KEY));
/**
* Encrypt the data payload and return an object with the encrypted data.
* @param {Record<string, unknown>} payload An object of data to encrypt
* @returns {{ encrypted: string } | void} Returns an object with an encrypted key containing the encrypted data as a string
*/
function encryptPayload(payload) {
try {
const stringify = JSON.stringify(payload);
const encrypted = CRYPTR.encrypt(stringify);
return { encrypted };
}
catch (err) {
(0, errors_1.handleErrorWithInfo)({
message: `Failed to encrypt a job payload`,
error: err,
job: "Encrypt Payload",
handle: false,
});
}
}
exports.encryptPayload = encryptPayload;
/**
* Decrypt a data string and parse into an object. This should only be used with data encrypted using the encryptPayload function
* @param {{ encrypted: string }} encryptedData an object with a key called encrypted with an encryted stringified payload to decrypt
* @returns {Record<string, unknown> | void}
*/
function decryptPayload(encryptedData) {
try {
const decrypted = CRYPTR.decrypt(encryptedData.encrypted);
const payload = JSON.parse(decrypted);
return payload;
}
catch (err) {
(0, errors_1.handleErrorWithInfo)({
message: `Failed to decrypt a job payload`,
error: err,
job: "Decrypt Payload",
handle: false,
});
}
}
exports.decryptPayload = decryptPayload;