UNPKG

@awesomeniko/kafka-trail

Version:

A Node.js library for managing message queue with Kafka

31 lines (30 loc) 1.38 kB
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 { DLQPayload, type KTTopicEvent, type 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>['decode']; }; export type KTTopicBatch<T extends KTTopicBatchRawMessage> = typeof KTTopicBatch<T>; export type KTPayloadFromTopicBatch<T> = T extends KTTopicBatchEvent<infer P> ? P : never; export declare const KTTopicBatch: <Payload extends KTTopicBatchRawMessage>(settings: KTTopicSettings) => KTTopicBatchEvent<Payload>; export declare const CreateKTTopicBatch: <Payload extends KTTopicBatchRawMessage>(settings: KTTopicSettings) => { BaseTopic: KTTopicBatchEvent<Payload>; DLQTopic: KTTopicEvent<DLQPayload<Payload>> | null; };