@awesomeniko/kafka-trail
Version:
A Node.js library for managing message queue with Kafka
29 lines (28 loc) • 1.12 kB
TypeScript
import type { IHeaders, ITopicConfig } from "kafkajs";
import type { KafkaTopicName, KafkaMessageKey } from "../libs/branded-types/kafka/index.js";
import type { KTTopicPayloadParser } from "../libs/helpers/default-data-parser.js";
export type KTTopicSettings = ITopicConfig & {
topic: KafkaTopicName;
batchMessageSizeToConsume: number;
};
export type KTTopicPayload = {
topicName: KafkaTopicName;
message: string;
messageKey: KafkaMessageKey;
};
type KTTopicMeta = {
meta?: {
traceId?: string;
} & object & IHeaders;
};
export type KTTopicPayloadWithMeta = KTTopicPayload & KTTopicMeta;
export type KTTopicEvent<Payload extends object> = {
(payload: Payload, { messageKey, meta }: KTTopicMeta & {
messageKey: KafkaMessageKey;
}): KTTopicPayloadWithMeta;
topicSettings: KTTopicSettings;
decode: KTTopicPayloadParser<Payload>['decode'];
};
export type KTTopic<T extends object> = typeof KTTopic<T>;
export declare const KTTopic: <Payload extends object>(settings: KTTopicSettings, validatorFn?: KTTopicPayloadParser<Payload>) => KTTopicEvent<Payload>;
export {};