UNPKG

@buildable/messages

Version:

A fully managed messaging service that lets you easily exchange event data across any app or resource.

43 lines (35 loc) 1.29 kB
import { Event, ListenerIdInfo, TransactionInput } from "../types" export const SEPERATOR = process.env.BLD_LISTENER_SEPARATOR || "$$$" export const sleep = (n: number) => new Promise(res => setTimeout(res, n)) export const getTransactionInput = (event: Event): TransactionInput => { 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 } } } export const getPartialTopic = ({ eventName, platform, label }: { eventName: string; platform: string; label: string; }) => { return `${platform}.${label}.${eventName}` } export const getListenerId = ({ eventName, txKey, platform, label }: ListenerIdInfo) => { const partialTopic = getPartialTopic({ eventName, platform, label }) return partialTopic + SEPERATOR + txKey } export const deconstructListenerId = (id: string) => { const [partialTopic, txKey] = id.split(SEPERATOR) const [platform, label, ...rest] = partialTopic.split(".") const eventName = rest.join(".") return { platform, label, eventName, txKey } }