UNPKG

@dugongjs/kafkajs

Version:

31 lines (30 loc) 1.55 kB
export class OutboundMessageMapperKafkaJS { map(domainEvent) { const { id, origin, aggregateType, aggregateId, type, version, sequenceNumber, timestamp, tenantId, correlationId, triggeredByUserId, triggeredByEventId, metadata, payload } = domainEvent; const message = { key: Buffer.from(aggregateId), value: payload ? Buffer.from(JSON.stringify(payload)) : null, headers: { id: Buffer.from(id), origin: Buffer.from(origin), aggregateType: Buffer.from(aggregateType), type: Buffer.from(type), version: Buffer.from(version.toString()), sequenceNumber: Buffer.from(sequenceNumber.toString()), timestamp: Buffer.from(timestamp.getTime().toString()), tenantId: tenantId ? Buffer.from(tenantId) : undefined, correlationId: correlationId ? Buffer.from(correlationId) : undefined, triggeredByUserId: triggeredByUserId ? Buffer.from(triggeredByUserId) : undefined, triggeredByEventId: triggeredByEventId ? Buffer.from(triggeredByEventId) : undefined, metadata: metadata ? Buffer.from(JSON.stringify(metadata)) : undefined } }; // Kafka headers cannot have null/undefined values for (const [key, value] of Object.entries(message.headers ?? {})) { if (value == null) { delete message.headers[key]; } } return message; } }