@buildable/messages
Version:
A fully managed messaging service that lets you easily exchange event data across any app or resource.
44 lines (43 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deconstructListenerId = exports.getListenerId = exports.getPartialTopic = exports.getTransactionInput = exports.sleep = exports.SEPERATOR = void 0;
exports.SEPERATOR = process.env.BLD_LISTENER_SEPARATOR || "$$$";
const sleep = (n) => new Promise(res => setTimeout(res, n));
exports.sleep = sleep;
const getTransactionInput = (event) => {
const { payload = "{}", headers = "{}", query = "{}" } = event;
try {
return {
payload: JSON.parse(payload),
headers: JSON.parse(headers),
query: JSON.parse(query),
event
};
}
catch (e) {
console.error("Error parsing transaction input", e, "event: ", event);
return { payload, headers, query, event };
}
};
exports.getTransactionInput = getTransactionInput;
const getPartialTopic = ({ eventName, platform, label }) => {
return `${platform}.${label}.${eventName}`;
};
exports.getPartialTopic = getPartialTopic;
const getListenerId = ({ eventName, txKey, platform, label }) => {
const partialTopic = (0, exports.getPartialTopic)({ eventName, platform, label });
return partialTopic + exports.SEPERATOR + txKey;
};
exports.getListenerId = getListenerId;
const deconstructListenerId = (id) => {
const [partialTopic, txKey] = id.split(exports.SEPERATOR);
const [platform, label, ...rest] = partialTopic.split(".");
const eventName = rest.join(".");
return {
platform,
label,
eventName,
txKey
};
};
exports.deconstructListenerId = deconstructListenerId;