UNPKG

@vtexlab/planner-contracts

Version:

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

40 lines (39 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Message = void 0; const enums_1 = require("../utils/enums"); const transformCase_1 = require("../utils/transformCase"); const uuid_1 = require("uuid"); const context_1 = require("../decorators/context"); class Message { constructor(baseData) { var _a; this.Context = (0, context_1.getMessageContext)(this); this.Type = (0, context_1.getMessageType)(this); this.TopicName = `${this.Context}_${this.constructor.messageName(undefined, this.Type)}`; this.CorrelationId = (_a = baseData.correlationId) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)(); this.Timestamp = new Date(); this.Account = { Id: baseData.accountId, Name: baseData.accountName }; this.AuthToken = baseData.authToken; this.TopicName = `${this.Context}_${Message.messageName(baseData.caseTypeFormat, this.Type)}`; } static topicName(caseType = enums_1.CaseType.KebabCase) { return `${(0, context_1.getMessageContext)(this)}_${this.messageName(caseType)}`; } static queueName(consumerName, caseType = enums_1.CaseType.KebabCase) { return `${(0, context_1.getMessageContext)(this)}_${consumerName}_${this.messageName(caseType)}`; } static messageName(caseType = enums_1.CaseType.KebabCase, messageType = undefined) { switch (caseType) { case enums_1.CaseType.KebabCase: return (0, transformCase_1.toKebabCase)(messageType !== null && messageType !== void 0 ? messageType : (0, context_1.getMessageType)(this)); case enums_1.CaseType.NoCase: default: return messageType !== null && messageType !== void 0 ? messageType : (0, context_1.getMessageType)(this); } } } exports.Message = Message;