@mereb/shared-packages 0.0.33 → 0.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,25 @@
1
- import { Kafka, type KafkaConfig, type Producer, type Consumer } from 'kafkajs';
1
+ import { type Consumer, Kafka, type KafkaConfig, type Producer } from 'kafkajs';
2
2
  export declare function getKafka(config: KafkaConfig): Kafka;
3
3
  export declare function getProducer(config: KafkaConfig): Promise<Producer>;
4
4
  export declare function createConsumer(config: KafkaConfig, groupId: string): Promise<Consumer>;
5
+ export type KafkaEnvConfigOptions = {
6
+ /**
7
+ * Override clientId; defaults to process.env.KAFKA_CLIENT_ID or 'app'
8
+ */
9
+ clientId?: string;
10
+ /**
11
+ * Environment variable to read brokers from; defaults to KAFKA_BROKERS
12
+ */
13
+ brokersEnvVar?: string;
14
+ /**
15
+ * Default value when env KAFKA_SSL is not set
16
+ */
17
+ sslDefault?: boolean;
18
+ /**
19
+ * Default value when env KAFKA_SSL_INSECURE is not set
20
+ */
21
+ sslInsecureDefault?: boolean;
22
+ };
23
+ export declare function buildKafkaConfigFromEnv(opts?: KafkaEnvConfigOptions): KafkaConfig | null;
5
24
  export declare function disconnectProducer(): Promise<void>;
6
25
  //# sourceMappingURL=kafka.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kafka.d.ts","sourceRoot":"","sources":["../../src/messaging/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKhF,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,SAK3C;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAMxE;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAK5F;AAED,wBAAsB,kBAAkB,kBAKvC"}
1
+ {"version":3,"file":"kafka.d.ts","sourceRoot":"","sources":["../../src/messaging/kafka.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,QAAQ,EAAE,KAAK,EAAE,KAAK,WAAW,EAAgB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAK5F,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,SAG3C;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CASxE;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAK5F;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,wBAAgB,uBAAuB,CACnC,IAAI,GAAE,qBAA0B,GACjC,WAAW,GAAG,IAAI,CA8BpB;AAED,wBAAsB,kBAAkB,kBAKvC"}
@@ -1,15 +1,16 @@
1
- import { Kafka } from 'kafkajs';
1
+ import { Kafka, Partitioners } from 'kafkajs';
2
2
  let kafkaInstance;
3
3
  let producerInstance;
4
4
  export function getKafka(config) {
5
- if (!kafkaInstance) {
6
- kafkaInstance = new Kafka(config);
7
- }
5
+ kafkaInstance ??= new Kafka(config);
8
6
  return kafkaInstance;
9
7
  }
10
8
  export async function getProducer(config) {
11
9
  if (!producerInstance) {
12
- producerInstance = getKafka(config).producer();
10
+ // Use legacy partitioner to avoid warning and retain old hashing behaviour
11
+ producerInstance = getKafka(config).producer({
12
+ createPartitioner: Partitioners.LegacyPartitioner
13
+ });
13
14
  await producerInstance.connect();
14
15
  }
15
16
  return producerInstance;
@@ -20,6 +21,30 @@ export async function createConsumer(config, groupId) {
20
21
  await consumer.connect();
21
22
  return consumer;
22
23
  }
24
+ export function buildKafkaConfigFromEnv(opts = {}) {
25
+ const brokersEnv = opts.brokersEnvVar ?? 'KAFKA_BROKERS';
26
+ const brokersRaw = process.env[brokersEnv] ?? '';
27
+ const brokers = brokersRaw
28
+ .split(',')
29
+ .map((b) => b.trim())
30
+ .filter(Boolean);
31
+ if (brokers.length === 0) {
32
+ return null;
33
+ }
34
+ const clientId = opts.clientId ?? process.env.KAFKA_CLIENT_ID ?? 'app';
35
+ const sslEnabled = (process.env.KAFKA_SSL ?? String(opts.sslDefault ?? false)) === 'true';
36
+ const sslInsecure = (process.env.KAFKA_SSL_INSECURE ?? String(opts.sslInsecureDefault ?? false)) ===
37
+ 'true';
38
+ return {
39
+ clientId,
40
+ brokers,
41
+ ssl: sslEnabled
42
+ ? {
43
+ rejectUnauthorized: !sslInsecure
44
+ }
45
+ : undefined
46
+ };
47
+ }
23
48
  export async function disconnectProducer() {
24
49
  if (producerInstance) {
25
50
  await producerInstance.disconnect();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mereb/shared-packages",
3
- "version": "0.0.33",
3
+ "version": "0.0.34",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",