UNPKG

@awesomeniko/kafka-trail

Version:

A Node.js library for managing message queue with Kafka

45 lines (44 loc) 1.84 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; numPartitions: number; createDLQ: boolean; }; export type KTTopicPayload = { topicName: KafkaTopicName; message: string; messageKey: KafkaMessageKey; }; type KTTopicMeta = { meta: IHeaders & { traceId?: string; }; }; 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 KTPayloadFromTopic<T> = T extends KTTopicEvent<infer P> ? P : never; export type DLQPayload<T> = { originalTopic: KafkaTopicName; originalPartition: number; originalOffset: string | undefined; key: KafkaMessageKey | null; value: T; errorMessage: string; failedAt: number; }; export declare const KTTopic: <Payload extends object>(_settings: KTTopicSettings, _validatorFn?: KTTopicPayloadParser<Payload>) => KTTopicEvent<Payload>; export declare const DLQKTTopic: <Payload extends object>(settings: KTTopicSettings, validatorFn?: KTTopicPayloadParser<DLQPayload<Payload>>) => KTTopicEvent<DLQPayload<Payload>>; export declare const CreateKTTopic: <Payload extends object>(settings: KTTopicSettings, validatorFn?: KTTopicPayloadParser<Payload>) => { BaseTopic: KTTopicEvent<Payload>; DLQTopic: KTTopicEvent<DLQPayload<Payload>> | null; }; export {};