UNPKG

@vtexlab/planner-contracts

Version:

Contracts to use in an Eventual-Driven Architecture (EDA)

35 lines (34 loc) 1.15 kB
import { CaseType } from "../utils/enums"; import { toKebabCase } from "../utils/transformCase"; import { v4 as uuidv4 } from "uuid"; let messageContext; export function setContext(context) { messageContext = context; } export class Message { constructor(baseData) { var _a; this.CorrelationId = (_a = baseData.correlationId) !== null && _a !== void 0 ? _a : uuidv4(); this.Timestamp = new Date(); this.Account = { Id: baseData.accountId, Name: baseData.accountName }; this.AuthToken = baseData.authToken; } static topicName(caseType = CaseType.KebabCase) { return `${messageContext}_${this.messageName(caseType)}`; } static queueName(consumerName, caseType = CaseType.KebabCase) { return `${messageContext}_${consumerName}_${this.messageName(caseType)}`; } static messageName(caseType = CaseType.KebabCase) { switch (caseType) { case CaseType.KebabCase: return toKebabCase(this.name); case CaseType.NoCase: default: return this.name; } } }