UNPKG

event-driven

Version:

makes building event-driven-architecture easy

47 lines (46 loc) 2.09 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Publisher = void 0; const models_1 = require("./backend/models"); const nats_1 = require("nats"); const index_1 = require("./index"); const sc = nats_1.StringCodec(); const Publisher = ({ config, subject }) => { return (data, uniqueId) => new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () { const { parentIds, clientGroup, durableName } = config; try { const event = models_1.createEvent({ parentIds, durableName, clientGroup, subject, data, }); const eventId = event._id; const h = nats_1.headers(); h.append('eventId', eventId.toString()); if (uniqueId) h.append('Nats-Msg-Id', uniqueId); const result = yield config.js.publish(subject, sc.encode(JSON.stringify(data)), { headers: h }); if (result.duplicate) return; if (index_1._showEventPublishes) console.log(`Event! - [${subject}]`); resolve({ eventId }); } catch (err) { console.error('###PUBLISHER ERROR###', err, parentIds, clientGroup, durableName, data); reject(err); } })); }; exports.Publisher = Publisher;