@awesomeniko/kafka-trail
Version:
A Node.js library for managing message queue with Kafka
45 lines • 1.5 kB
JavaScript
import { ktDecode, ktEncode } from "../libs/helpers/default-data-parser.js";
import { DLQKTTopic } from "./topic.js";
const createTopicBatchEvent = (settings, validatorFn) => {
const validatePayload = (payload) => {
validatorFn?.validate?.(payload);
return true;
};
const fn = (payload) => {
const topicBatchMessages = [];
for (const data of payload) {
validatePayload(data.value);
const payloadToSend = validatorFn
? validatorFn.encode(data.value)
: ktEncode(data.value);
topicBatchMessages.push({
value: payloadToSend,
key: data.key,
headers: data.headers || {},
});
}
return {
topicName: settings.topic,
messages: topicBatchMessages,
};
};
fn.topicSettings = settings;
fn.decode = ((data) => {
const decoded = (validatorFn?.decode ?? (ktDecode))(data);
validatePayload(decoded);
return decoded;
});
return fn;
};
export const KTTopicBatch = (_settings) => {
throw new Error("Deprecated. use CreateKTTopicBatch(...)");
};
export const CreateKTTopicBatch = (settings, validatorFn) => {
const BaseTopic = createTopicBatchEvent(settings, validatorFn);
let DLQTopic = null;
if (settings.createDLQ) {
DLQTopic = DLQKTTopic(settings);
}
return { BaseTopic, DLQTopic };
};
//# sourceMappingURL=topic-batch.js.map