UNPKG

@awesomeniko/kafka-trail

Version:

A Node.js library for managing message queue with Kafka

29 lines (28 loc) 1.12 kB
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 {};