UNPKG

@vpriem/kafka-broker

Version:

Easily compose and manage your kafka resources in one place

139 lines 7.33 kB
/// <reference types="node" /> import { CompressionTypes, ConnectEvent, ConsumerCommitOffsetsEvent, ConsumerConfig as KafkaConsumerConfig, ConsumerCrashEvent, ConsumerEndBatchProcessEvent, ConsumerFetchEvent, ConsumerFetchStartEvent, ConsumerGroupJoinEvent, ConsumerHeartbeatEvent, ConsumerRebalancingEvent, ConsumerReceivedUnsubcribedTopicsEvent, ConsumerRunConfig, ConsumerStartBatchProcessEvent, ConsumerSubscribeTopic, DisconnectEvent, EachMessagePayload, InstrumentationEvent, KafkaConfig, Message, ProducerBatch, ProducerConfig as KafkaProducerConfig, ProducerRecord, RecordMetadata, RequestEvent, RequestQueueSizeEvent, RequestTimeoutEvent } from 'kafkajs'; import { SchemaRegistryAPIClientArgs } from '@kafkajs/confluent-schema-registry/dist/api'; import { SchemaRegistryAPIClientOptions } from '@kafkajs/confluent-schema-registry/dist/@types'; import { SchemaRegistry, SchemaType, COMPATIBILITY } from '@kafkajs/confluent-schema-registry'; export type { logCreator, logLevel } from 'kafkajs'; export { CompressionTypes }; export interface BatchConfig { size: number; lingerMs: number; acks?: -1 | 0 | 1; timeout?: number; compression?: CompressionTypes; } export interface ProducerConfig extends KafkaProducerConfig { batch?: BatchConfig; } export type MessageConfig = Omit<Message, 'value'>; export interface SchemaId { id: number; } export interface SchemaSubject { subject: string; version: 'latest' | number; } export interface PublicationConfig { producer?: string; topic: string | string[]; config?: Omit<ProducerRecord, 'topic' | 'messages'>; messageConfig?: MessageConfig; schema?: number | string | SchemaId | SchemaSubject; } export type MessageValue = Buffer | string | null | object; export interface PublishMessage<V = MessageValue> extends Omit<Message, 'value'> { value: V; } export interface ConsumerConfig extends Omit<KafkaConsumerConfig, 'groupId'> { groupId?: string; } export type ConsumePayload = EachMessagePayload; export type PublishResult = RecordMetadata; export type Publish = { <V = MessageValue>(name: string, messages: PublishMessage<V>[]): Promise<PublishResult[] | null>; <V = MessageValue>(name: string, message: PublishMessage<V>): Promise<PublishResult[] | null>; }; export interface PublisherInterface { publish: Publish; } export type Handler<V = MessageValue> = (value: V, payload: ConsumePayload, publish: Publish) => Promise<void>; export interface TopicConfig extends ConsumerSubscribeTopic { alias?: string; handler?: Handler; } export type RunConfig = Omit<ConsumerRunConfig, 'eachBatch' | 'eachMessage'>; export declare enum ContentTypes { BUFFER = "application/octet-stream", JSON = "application/json", SCHEMA_REGISTRY = "application/schema-registry", TEXT = "text/plain" } export interface SubscriptionConfig { consumer?: ConsumerConfig; topics: Array<string | TopicConfig>; runConfig?: RunConfig; handler?: Handler; contentType?: ContentTypes | string; deadLetter?: string; parallelism?: 'by-partition-key' | 'all-at-once'; } export type ProducerMap = Record<string, ProducerConfig>; export type PublicationMap = Record<string, string | string[] | PublicationConfig>; export type SubscriptionMap = Record<string, string | SubscriptionConfig['topics'] | SubscriptionConfig>; export { SchemaRegistry, SchemaType, COMPATIBILITY }; export type SchemaRegistryArgs = SchemaRegistryAPIClientArgs; export type SchemaRegistryOptions = SchemaRegistryAPIClientOptions; export interface SchemaRegistryConfig extends SchemaRegistryArgs { options?: SchemaRegistryOptions; } export interface BrokerConfig { namespace: string; defaults?: { producer?: Partial<ProducerConfig>; consumer?: Partial<ConsumerConfig>; }; config: KafkaConfig; schemaRegistry?: string | SchemaRegistryConfig; producers?: ProducerMap; publications?: PublicationMap; subscriptions?: SubscriptionMap; } export interface BrokerContainerConfig { namespace: string; defaults?: { config?: Partial<KafkaConfig>; producer?: Partial<ProducerConfig>; consumer?: Partial<ConsumerConfig>; }; schemaRegistry?: string | SchemaRegistryArgs | SchemaRegistryConfig; brokers: Record<string, Omit<BrokerConfig, 'namespace' | 'schemaRegistry'>>; } export interface SubscriptionInterface { on<V = MessageValue>(event: 'message' | `message.${string}`, listener: Handler<V>): this; on(event: 'error', listener: (error: Error) => void): this; once(event: 'error', listener: (error: Error) => void): this; off<V = MessageValue>(event: 'message' | `message.${string}`, listener: Handler<V>): this; off(event: 'error', listener: (error: Error) => void): this; run(): Promise<this>; } export interface BrokerInterface extends PublisherInterface { on(event: 'error', listener: (error: Error) => void): this; on(event: 'producer.connect', listener: (event: ConnectEvent) => void): this; on(event: 'producer.disconnect', listener: (event: DisconnectEvent) => void): this; on(event: 'producer.network.request', listener: (event: RequestEvent) => void): this; on(event: 'producer.network.request_timeout', listener: (event: RequestTimeoutEvent) => void): this; on(event: 'producer.network.request_queue_size', listener: (event: RequestQueueSizeEvent) => void): this; on(event: 'producer.batch.start', listener: (event: ProducerBatch) => void): this; on(event: 'consumer.heartbeat', listener: (event: ConsumerHeartbeatEvent) => void): this; on(event: 'consumer.commit_offsets', listener: (event: ConsumerCommitOffsetsEvent) => void): this; on(event: 'consumer.group_join', listener: (event: ConsumerGroupJoinEvent) => void): this; on(event: 'consumer.fetch_start', listener: (event: ConsumerFetchStartEvent) => void): this; on(event: 'consumer.fetch', listener: (event: ConsumerFetchEvent) => void): this; on(event: 'consumer.start_batch_process', listener: (event: ConsumerStartBatchProcessEvent) => void): this; on(event: 'consumer.end_batch_process', listener: (event: ConsumerEndBatchProcessEvent) => void): this; on(event: 'consumer.connect', listener: (event: ConnectEvent) => void): this; on(event: 'consumer.disconnect', listener: (event: DisconnectEvent) => void): this; on(event: 'consumer.stop', listener: (event: InstrumentationEvent<null>) => void): this; on(event: 'consumer.crash', listener: (event: ConsumerCrashEvent) => void): this; on(event: 'consumer.rebalancing', listener: (event: ConsumerRebalancingEvent) => void): this; on(event: 'consumer.received_unsubscribed_topics', listener: (event: ConsumerReceivedUnsubcribedTopicsEvent) => void): this; on(event: 'consumer.network.request', listener: (event: RequestEvent) => void): this; on(event: 'consumer.network.request_timeout', listener: (event: RequestTimeoutEvent) => void): this; on(event: 'consumer.network.request_queue_size', listener: (event: RequestQueueSizeEvent) => void): this; namespace(): string; schemaRegistry(): SchemaRegistry | undefined; subscription(name: string): SubscriptionInterface; subscriptionList(): SubscriptionInterface; shutdown(): Promise<void>; } //# sourceMappingURL=types.d.ts.map