UNPKG

@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
"use strict"; 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;