@awesomeniko/kafka-trail
Version:
A Node.js library for managing message queue with Kafka
29 lines (28 loc) • 1.33 kB
TypeScript
import type { IHeaders } from "kafkajs";
import type { KafkaTopicName, KafkaMessageKey } from "../libs/branded-types/kafka/index.js";
import { type KTTopicPayloadParser } from "../libs/helpers/default-data-parser.js";
import type { DLQPayload, KTTopicEvent, KTTopicSettings } from "./topic.js";
export type KTTopicBatchRawMessage = Array<Omit<KTTopicBatchMessage, 'value'> & {
value: object;
}>;
export type KTTopicBatchMessage = {
value: string;
key: KafkaMessageKey;
headers?: IHeaders & {
traceId?: string;
};
};
export type KTTopicBatchPayload = {
topicName: KafkaTopicName;
messages: KTTopicBatchMessage[];
};
export type KTTopicBatchEvent<Payload extends object> = {
(payload: Payload): KTTopicBatchPayload;
topicSettings: KTTopicSettings;
decode: KTTopicPayloadParser<Payload extends KTTopicBatchRawMessage ? Payload[number]['value'] : object>['decode'];
};
export declare const KTTopicBatch: <Payload extends KTTopicBatchRawMessage>(_settings: KTTopicSettings) => KTTopicBatchEvent<Payload>;
export declare const CreateKTTopicBatch: <Payload extends KTTopicBatchRawMessage>(settings: KTTopicSettings, validatorFn?: KTTopicPayloadParser<Payload[number]["value"]>) => {
BaseTopic: KTTopicBatchEvent<Payload>;
DLQTopic: KTTopicEvent<DLQPayload<Payload>> | null;
};