UNPKG

@awesomeniko/kafka-trail

Version:

A Node.js library for managing message queue with Kafka

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