UNPKG

@awesomeniko/kafka-trail

Version:

A Node.js library for managing message queue with Kafka

33 lines (32 loc) 1.22 kB
import type { CompressionTypes as KafkaCompressionTypes, KafkaConfig } from "kafkajs"; import KafkaJS from "kafkajs"; import type pino from "pino"; import { lz4Codec } from "../codec/lz4-codec.js"; import type { KafkaClientId } from "../libs/branded-types/kafka/index.js"; type KTKafkaSettings = { brokerUrls: string[]; clientId: KafkaClientId; connectionTimeout: number; compressionCodec?: { codecType: KafkaCompressionTypes.LZ4; codecFn?: lz4Codec; } | { codecType: Exclude<KafkaCompressionTypes, KafkaCompressionTypes.LZ4>; codecFn?: never; }; }; export type KafkaBrokerConfig = { kafkaSettings: KTKafkaSettings; pureConfig: Pick<KafkaConfig, "ssl" | "sasl" | "authenticationTimeout" | "reauthenticationThreshold" | "requestTimeout" | "enforceRequestTimeout" | "retry" | "socketFactory" | "logLevel" | "logCreator">; }; export type KafkaLogger = { logger: pino.Logger; }; export type KafkaWithLogger<T extends KafkaBrokerConfig> = T & KafkaLogger; declare class KTKafkaBroker { _kafka: KafkaJS.Kafka; constructor(params: KafkaBrokerConfig); encode(message: object): string; decode<T>(message: string): T; } export { KTKafkaBroker };