UNPKG

@imqueue/pg-pubsub

Version:

Reliable PostgreSQL LISTEN/NOTIFY with inter-process lock support

80 lines 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pack = pack; exports.unpack = unpack; exports.signature = signature; const farmhash_1 = require("farmhash"); /** * Performs JSON.stringify on a given input taking into account * pretty flag. * * @access private * @param {AnyJson} input - serializable value * @param {boolean} [pretty] - serialized format output prettify flag * @return {string} */ function stringify(input, pretty) { return pretty ? JSON.stringify(input, null, 2) : JSON.stringify(input); } /** * Serializes given input object to JSON string. On error will return * serialized null value * * @param {AnyJson} input - serializable value * @param {AnyLogger} [logger] - logger to handle errors logging with * @param {boolean} [pretty] - serialized format output prettify flag * @return {string} */ function pack(input, logger, pretty = false) { if (typeof input === 'undefined') { return 'null'; } try { return stringify(input, pretty); } catch (err) { if (logger && logger.warn) { logger.warn('pack() error:', err); } return 'null'; } } /** * Deserializes given input JSON string to corresponding JSON value object. * On error will return empty object * * @param {string} input - string to deserialize * @param {AnyLogger} [logger] - logger to handle errors logging with * @return {AnyJson} */ function unpack(input, logger) { if (typeof input !== 'string') { return null; } try { return JSON.parse(input); } catch (err) { if (logger && logger.warn) { logger.warn('unpack() error:', err); } return {}; } } /** * Constructs and returns hash string for a given set of processId, channel * and payload. * * @param {string} processId * @param {string} channel * @param {any} payload * @returns {string} */ function signature(processId, channel, payload) { const data = JSON.stringify([processId, channel, payload]); const hashBigInt = (0, farmhash_1.fingerprint64)(data); return hashBigInt.toString(16); } //# sourceMappingURL=helpers.js.map