Skip to content

Commit ca75681

Browse files
authored
[service-utils] CJS import for kafkajs-lz4 (#6127)
1 parent 7217e77 commit ca75681

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

packages/service-utils/src/node/usageV2.ts

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
import { randomUUID } from "node:crypto";
22
import { checkServerIdentity } from "node:tls";
3-
import * as KafkaJS from "kafkajs";
3+
import {
4+
CompressionTypes,
5+
Kafka,
6+
type Producer,
7+
type ProducerConfig,
8+
} from "kafkajs";
49
import LZ4Codec from "kafkajs-lz4";
510
import type { ServiceName } from "../core/services.js";
611
import { type UsageV2Event, getTopicName } from "../core/usageV2.js";
712

13+
// Import KafkaJS with CJS pattern (source: https://github.com/tulios/kafkajs/issues/1391)
14+
import KafkaJS from "kafkajs";
15+
const { CompressionCodecs } = KafkaJS;
16+
817
/**
918
* Creates a UsageV2Producer which opens a persistent TCP connection.
1019
* This class is thread-safe so your service should re-use one instance.
@@ -19,10 +28,10 @@ import { type UsageV2Event, getTopicName } from "../core/usageV2.js";
1928
* ```
2029
*/
2130
export class UsageV2Producer {
22-
private kafka: KafkaJS.Kafka;
23-
private producer: KafkaJS.Producer | null = null;
31+
private kafka: Kafka;
32+
private producer: Producer | null = null;
2433
private topic: string;
25-
private compression: KafkaJS.CompressionTypes;
34+
private compression: CompressionTypes;
2635

2736
constructor(config: {
2837
/**
@@ -40,7 +49,7 @@ export class UsageV2Producer {
4049
/**
4150
* The compression algorithm to use.
4251
*/
43-
compression?: KafkaJS.CompressionTypes;
52+
compression?: CompressionTypes;
4453

4554
username: string;
4655
password: string;
@@ -49,12 +58,12 @@ export class UsageV2Producer {
4958
producerName,
5059
environment,
5160
productName,
52-
compression = KafkaJS.CompressionTypes.LZ4,
61+
compression = CompressionTypes.LZ4,
5362
username,
5463
password,
5564
} = config;
5665

57-
this.kafka = new KafkaJS.Kafka({
66+
this.kafka = new Kafka({
5867
clientId: `${producerName}-${environment}`,
5968
brokers:
6069
environment === "production"
@@ -80,10 +89,9 @@ export class UsageV2Producer {
8089
* Connect the producer.
8190
* This must be called before calling `sendEvents()`.
8291
*/
83-
async init(configOverrides?: KafkaJS.ProducerConfig) {
84-
if (this.compression === KafkaJS.CompressionTypes.LZ4) {
85-
KafkaJS.CompressionCodecs[KafkaJS.CompressionTypes.LZ4] =
86-
new LZ4Codec().codec;
92+
async init(configOverrides?: ProducerConfig) {
93+
if (this.compression === CompressionTypes.LZ4) {
94+
CompressionCodecs[CompressionTypes.LZ4] = new LZ4Codec().codec;
8795
}
8896

8997
this.producer = this.kafka.producer({

0 commit comments

Comments
 (0)