@woovi/kafka 0.1.4 → 0.1.7

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.
package/dist/index.cjs CHANGED
@@ -24,37 +24,42 @@ var __webpack_require__ = {};
24
24
  var __webpack_exports__ = {};
25
25
  __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
- getMetricsContentType: ()=>getMetricsContentType,
28
27
  logLevel: ()=>external_kafkajs_namespaceObject.logLevel,
29
- WooviProducer: ()=>WooviProducer,
30
- parseMessage: ()=>parseMessage,
31
- enableDefaultMetrics: ()=>enableDefaultMetrics,
32
28
  consumerLag: ()=>consumerLag,
33
- messagesProducedTotal: ()=>messagesProducedTotal,
34
29
  createKafkaFromEnv: ()=>createKafkaFromEnv,
35
- createProducer: ()=>createProducer,
36
30
  healthCheck: ()=>healthCheck,
37
31
  createKafka: ()=>createKafka,
38
- WooviConsumer: ()=>WooviConsumer,
39
32
  batchProcessingDuration: ()=>batchProcessingDuration,
40
33
  lastMessageTimestamp: ()=>lastMessageTimestamp,
41
- getMetrics: ()=>getMetrics,
42
- messageProcessingDuration: ()=>messageProcessingDuration,
43
34
  messagesProcessedTotal: ()=>messagesProcessedTotal,
44
35
  onShutdown: ()=>onShutdown,
45
- batchSize: ()=>batchSize,
46
- Kafka: ()=>external_kafkajs_namespaceObject.Kafka,
47
- kafkaRegistry: ()=>kafkaRegistry,
48
36
  produceLatency: ()=>produceLatency,
49
37
  createConsumer: ()=>createConsumer,
50
38
  getKafka: ()=>getKafka,
51
- messagesFailedTotal: ()=>messagesFailedTotal,
52
39
  resetMetrics: ()=>resetMetrics,
53
- getMessageHeaders: ()=>getMessageHeaders
40
+ getMessageHeaders: ()=>getMessageHeaders,
41
+ getMetricsContentType: ()=>getMetricsContentType,
42
+ WooviProducer: ()=>WooviProducer,
43
+ parseMessage: ()=>parseMessage,
44
+ enableDefaultMetrics: ()=>enableDefaultMetrics,
45
+ messagesProducedTotal: ()=>messagesProducedTotal,
46
+ messageProcessingDuration: ()=>messageProcessingDuration,
47
+ createProducer: ()=>createProducer,
48
+ WooviConsumer: ()=>WooviConsumer,
49
+ getMetrics: ()=>getMetrics,
50
+ batchSize: ()=>batchSize,
51
+ Kafka: ()=>external_kafkajs_namespaceObject.Kafka,
52
+ isTestMode: ()=>isTestMode,
53
+ disableTestMode: ()=>disableTestMode,
54
+ kafkaRegistry: ()=>kafkaRegistry,
55
+ setMockKafkaForTestMode: ()=>setMockKafkaForTestMode,
56
+ messagesFailedTotal: ()=>messagesFailedTotal,
57
+ enableTestMode: ()=>enableTestMode
54
58
  });
55
59
  const external_kafkajs_namespaceObject = require("kafkajs");
56
60
  const logger_namespaceObject = require("@woovi/logger");
57
61
  let kafkaInstance = null;
62
+ let testMode = false;
58
63
  const shutdownCallbacks = [];
59
64
  let shutdownRegistered = false;
60
65
  const kafkaLogger = logger_namespaceObject.logger.child({
@@ -104,7 +109,25 @@ function registerGracefulShutdown() {
104
109
  function onShutdown(callback) {
105
110
  shutdownCallbacks.push(callback);
106
111
  }
112
+ const WOOVI_KAFKA_MOCK_KEY = '__woovi_kafka_mock__';
113
+ function getGlobalState() {
114
+ const g = globalThis;
115
+ if (!g[WOOVI_KAFKA_MOCK_KEY]) g[WOOVI_KAFKA_MOCK_KEY] = {
116
+ mock: null,
117
+ testMode: false
118
+ };
119
+ return g[WOOVI_KAFKA_MOCK_KEY];
120
+ }
121
+ function setMockKafkaForTestMode(mock) {
122
+ const state = getGlobalState();
123
+ state.mock = mock;
124
+ state.testMode = true;
125
+ testMode = true;
126
+ }
107
127
  function getKafka() {
128
+ const state = getGlobalState();
129
+ if (state.testMode && state.mock) return state.mock;
130
+ if (testMode && kafkaInstance) return kafkaInstance;
108
131
  if (!kafkaInstance) throw new Error('Kafka not initialized. Call createKafka() first.');
109
132
  return kafkaInstance;
110
133
  }
@@ -164,6 +187,17 @@ async function healthCheck() {
164
187
  };
165
188
  }
166
189
  }
190
+ function enableTestMode(mockKafka) {
191
+ testMode = true;
192
+ if (mockKafka) kafkaInstance = mockKafka;
193
+ }
194
+ function disableTestMode() {
195
+ testMode = false;
196
+ kafkaInstance = null;
197
+ }
198
+ function isTestMode() {
199
+ return testMode;
200
+ }
167
201
  const external_prom_client_namespaceObject = require("prom-client");
168
202
  const kafkaRegistry = new external_prom_client_namespaceObject.Registry();
169
203
  const messageProcessingDuration = new external_prom_client_namespaceObject.Histogram({
@@ -707,12 +741,15 @@ exports.createConsumer = __webpack_exports__.createConsumer;
707
741
  exports.createKafka = __webpack_exports__.createKafka;
708
742
  exports.createKafkaFromEnv = __webpack_exports__.createKafkaFromEnv;
709
743
  exports.createProducer = __webpack_exports__.createProducer;
744
+ exports.disableTestMode = __webpack_exports__.disableTestMode;
710
745
  exports.enableDefaultMetrics = __webpack_exports__.enableDefaultMetrics;
746
+ exports.enableTestMode = __webpack_exports__.enableTestMode;
711
747
  exports.getKafka = __webpack_exports__.getKafka;
712
748
  exports.getMessageHeaders = __webpack_exports__.getMessageHeaders;
713
749
  exports.getMetrics = __webpack_exports__.getMetrics;
714
750
  exports.getMetricsContentType = __webpack_exports__.getMetricsContentType;
715
751
  exports.healthCheck = __webpack_exports__.healthCheck;
752
+ exports.isTestMode = __webpack_exports__.isTestMode;
716
753
  exports.kafkaRegistry = __webpack_exports__.kafkaRegistry;
717
754
  exports.lastMessageTimestamp = __webpack_exports__.lastMessageTimestamp;
718
755
  exports.logLevel = __webpack_exports__.logLevel;
@@ -724,6 +761,7 @@ exports.onShutdown = __webpack_exports__.onShutdown;
724
761
  exports.parseMessage = __webpack_exports__.parseMessage;
725
762
  exports.produceLatency = __webpack_exports__.produceLatency;
726
763
  exports.resetMetrics = __webpack_exports__.resetMetrics;
764
+ exports.setMockKafkaForTestMode = __webpack_exports__.setMockKafkaForTestMode;
727
765
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
728
766
  "Kafka",
729
767
  "WooviConsumer",
@@ -735,12 +773,15 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
735
773
  "createKafka",
736
774
  "createKafkaFromEnv",
737
775
  "createProducer",
776
+ "disableTestMode",
738
777
  "enableDefaultMetrics",
778
+ "enableTestMode",
739
779
  "getKafka",
740
780
  "getMessageHeaders",
741
781
  "getMetrics",
742
782
  "getMetricsContentType",
743
783
  "healthCheck",
784
+ "isTestMode",
744
785
  "kafkaRegistry",
745
786
  "lastMessageTimestamp",
746
787
  "logLevel",
@@ -751,7 +792,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
751
792
  "onShutdown",
752
793
  "parseMessage",
753
794
  "produceLatency",
754
- "resetMetrics"
795
+ "resetMetrics",
796
+ "setMockKafkaForTestMode"
755
797
  ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
756
798
  Object.defineProperty(exports, '__esModule', {
757
799
  value: true
package/dist/index.d.ts CHANGED
@@ -34,12 +34,23 @@ export declare function createKafkaFromEnv(clientId: string): Kafka;
34
34
 
35
35
  export declare function createProducer(config?: WooviProducerConfig): WooviProducer;
36
36
 
37
+ /**
38
+ * Disable test mode and reset the Kafka instance.
39
+ */
40
+ export declare function disableTestMode(): void;
41
+
37
42
  export { EachBatchPayload }
38
43
 
39
44
  export { EachMessagePayload }
40
45
 
41
46
  export declare function enableDefaultMetrics(): void;
42
47
 
48
+ /**
49
+ * Enable test mode with a mock Kafka instance.
50
+ * This allows tests to bypass the real Kafka connection.
51
+ */
52
+ export declare function enableTestMode(mockKafka?: Kafka): void;
53
+
43
54
  export declare interface ErrorHandler {
44
55
  (error: Error, payload: EachMessagePayload): Promise<void>;
45
56
  }
@@ -57,6 +68,11 @@ export declare function healthCheck(): Promise<{
57
68
  error?: string;
58
69
  }>;
59
70
 
71
+ /**
72
+ * Check if test mode is enabled.
73
+ */
74
+ export declare function isTestMode(): boolean;
75
+
60
76
  export { Kafka }
61
77
 
62
78
  export declare interface KafkaConfig {
@@ -132,6 +148,8 @@ export { RecordMetadata }
132
148
 
133
149
  export declare function resetMetrics(): void;
134
150
 
151
+ export declare function setMockKafkaForTestMode(mock: Kafka): void;
152
+
135
153
  export declare class WooviConsumer {
136
154
  private consumer;
137
155
  private topics;
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ import { Kafka, logLevel } from "kafkajs";
2
2
  import { logger } from "@woovi/logger";
3
3
  import { Counter, Gauge, Histogram, Registry, collectDefaultMetrics } from "prom-client";
4
4
  let kafkaInstance = null;
5
+ let testMode = false;
5
6
  const shutdownCallbacks = [];
6
7
  let shutdownRegistered = false;
7
8
  const kafkaLogger = logger.child({
@@ -51,7 +52,25 @@ function registerGracefulShutdown() {
51
52
  function onShutdown(callback) {
52
53
  shutdownCallbacks.push(callback);
53
54
  }
55
+ const WOOVI_KAFKA_MOCK_KEY = '__woovi_kafka_mock__';
56
+ function getGlobalState() {
57
+ const g = globalThis;
58
+ if (!g[WOOVI_KAFKA_MOCK_KEY]) g[WOOVI_KAFKA_MOCK_KEY] = {
59
+ mock: null,
60
+ testMode: false
61
+ };
62
+ return g[WOOVI_KAFKA_MOCK_KEY];
63
+ }
64
+ function setMockKafkaForTestMode(mock) {
65
+ const state = getGlobalState();
66
+ state.mock = mock;
67
+ state.testMode = true;
68
+ testMode = true;
69
+ }
54
70
  function getKafka() {
71
+ const state = getGlobalState();
72
+ if (state.testMode && state.mock) return state.mock;
73
+ if (testMode && kafkaInstance) return kafkaInstance;
55
74
  if (!kafkaInstance) throw new Error('Kafka not initialized. Call createKafka() first.');
56
75
  return kafkaInstance;
57
76
  }
@@ -111,6 +130,17 @@ async function healthCheck() {
111
130
  };
112
131
  }
113
132
  }
133
+ function enableTestMode(mockKafka) {
134
+ testMode = true;
135
+ if (mockKafka) kafkaInstance = mockKafka;
136
+ }
137
+ function disableTestMode() {
138
+ testMode = false;
139
+ kafkaInstance = null;
140
+ }
141
+ function isTestMode() {
142
+ return testMode;
143
+ }
114
144
  const kafkaRegistry = new Registry();
115
145
  const messageProcessingDuration = new Histogram({
116
146
  name: 'kafka_consumer_message_processing_duration_seconds',
@@ -643,4 +673,4 @@ function getMessageHeaders(payload) {
643
673
  }
644
674
  return headers;
645
675
  }
646
- export { Kafka, WooviConsumer, WooviProducer, batchProcessingDuration, batchSize, consumerLag, createConsumer, createKafka, createKafkaFromEnv, createProducer, enableDefaultMetrics, getKafka, getMessageHeaders, getMetrics, getMetricsContentType, healthCheck, kafkaRegistry, lastMessageTimestamp, logLevel, messageProcessingDuration, messagesFailedTotal, messagesProcessedTotal, messagesProducedTotal, onShutdown, parseMessage, produceLatency, resetMetrics };
676
+ export { Kafka, WooviConsumer, WooviProducer, batchProcessingDuration, batchSize, consumerLag, createConsumer, createKafka, createKafkaFromEnv, createProducer, disableTestMode, enableDefaultMetrics, enableTestMode, getKafka, getMessageHeaders, getMetrics, getMetricsContentType, healthCheck, isTestMode, kafkaRegistry, lastMessageTimestamp, logLevel, messageProcessingDuration, messagesFailedTotal, messagesProcessedTotal, messagesProducedTotal, onShutdown, parseMessage, produceLatency, resetMetrics, setMockKafkaForTestMode };
@@ -29,13 +29,15 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  mockAdmin: ()=>mockAdmin,
30
30
  KafkaJSProtocolError: ()=>KafkaJSProtocolError,
31
31
  clearAllMocks: ()=>clearAllMocks,
32
+ createMockKafka: ()=>createMockKafka,
32
33
  mockConsumer: ()=>mockConsumer,
33
- mockProducerSend: ()=>mockProducerSend,
34
34
  kafkaAssert: ()=>kafkaAssert,
35
35
  Kafka: ()=>Kafka,
36
36
  kafkaAssertLength: ()=>kafkaAssertLength,
37
+ mockProducerSend: ()=>mockProducerSend,
37
38
  mockTransaction: ()=>mockTransaction,
38
39
  mockTransactionSend: ()=>mockTransactionSend,
40
+ setupKafkaTest: ()=>setupKafkaTest,
39
41
  KafkaJSNonRetriableError: ()=>KafkaJSNonRetriableError,
40
42
  CompressionTypes: ()=>CompressionTypes,
41
43
  mockProducer: ()=>mockProducer
@@ -77,34 +79,34 @@ const kafkaMock_fn = getMockFn();
77
79
  const mockProducerSend = kafkaMock_fn();
78
80
  const mockTransactionSend = kafkaMock_fn();
79
81
  const mockTransaction = kafkaMock_fn().mockReturnValue({
80
- send: mockTransactionSend,
81
- commit: kafkaMock_fn(),
82
- abort: kafkaMock_fn()
82
+ send: mockTransactionSend.mockResolvedValue(void 0),
83
+ commit: kafkaMock_fn().mockResolvedValue(void 0),
84
+ abort: kafkaMock_fn().mockResolvedValue(void 0)
83
85
  });
84
86
  const mockProducer = kafkaMock_fn().mockReturnValue({
85
- connect: kafkaMock_fn(),
86
- disconnect: kafkaMock_fn(),
87
- send: mockProducerSend,
87
+ connect: kafkaMock_fn().mockResolvedValue(void 0),
88
+ disconnect: kafkaMock_fn().mockResolvedValue(void 0),
89
+ send: mockProducerSend.mockResolvedValue(void 0),
88
90
  transaction: mockTransaction,
89
91
  on: kafkaMock_fn()
90
92
  });
91
93
  const mockConsumer = kafkaMock_fn().mockReturnValue({
92
- connect: kafkaMock_fn(),
93
- disconnect: kafkaMock_fn(),
94
- subscribe: kafkaMock_fn(),
95
- run: kafkaMock_fn(),
94
+ connect: kafkaMock_fn().mockResolvedValue(void 0),
95
+ disconnect: kafkaMock_fn().mockResolvedValue(void 0),
96
+ subscribe: kafkaMock_fn().mockResolvedValue(void 0),
97
+ run: kafkaMock_fn().mockResolvedValue(void 0),
96
98
  on: kafkaMock_fn(),
97
- pause: kafkaMock_fn(),
98
- resume: kafkaMock_fn(),
99
- seek: kafkaMock_fn()
99
+ pause: kafkaMock_fn().mockResolvedValue(void 0),
100
+ resume: kafkaMock_fn().mockResolvedValue(void 0),
101
+ seek: kafkaMock_fn().mockResolvedValue(void 0)
100
102
  });
101
103
  const mockAdmin = kafkaMock_fn().mockReturnValue({
102
- connect: kafkaMock_fn(),
103
- disconnect: kafkaMock_fn(),
104
- createTopics: kafkaMock_fn(),
105
- deleteTopics: kafkaMock_fn(),
106
- listTopics: kafkaMock_fn().mockReturnValue([]),
107
- fetchTopicMetadata: kafkaMock_fn()
104
+ connect: kafkaMock_fn().mockResolvedValue(void 0),
105
+ disconnect: kafkaMock_fn().mockResolvedValue(void 0),
106
+ createTopics: kafkaMock_fn().mockResolvedValue(void 0),
107
+ deleteTopics: kafkaMock_fn().mockResolvedValue(void 0),
108
+ listTopics: kafkaMock_fn().mockResolvedValue([]),
109
+ fetchTopicMetadata: kafkaMock_fn().mockResolvedValue(void 0)
108
110
  });
109
111
  const Kafka = kafkaMock_fn().mockReturnValue({
110
112
  producer: mockProducer,
@@ -202,11 +204,28 @@ const kafkaAssertLength = (args)=>{
202
204
  throw error;
203
205
  }
204
206
  };
207
+ function createMockKafka() {
208
+ return Kafka();
209
+ }
210
+ const WOOVI_KAFKA_MOCK_KEY = '__woovi_kafka_mock__';
211
+ function setupKafkaTest() {
212
+ const mockKafkaInstance = {
213
+ producer: mockProducer,
214
+ consumer: mockConsumer,
215
+ admin: mockAdmin
216
+ };
217
+ const g = globalThis;
218
+ g[WOOVI_KAFKA_MOCK_KEY] = {
219
+ mock: mockKafkaInstance,
220
+ testMode: true
221
+ };
222
+ }
205
223
  exports.CompressionTypes = __webpack_exports__.CompressionTypes;
206
224
  exports.Kafka = __webpack_exports__.Kafka;
207
225
  exports.KafkaJSNonRetriableError = __webpack_exports__.KafkaJSNonRetriableError;
208
226
  exports.KafkaJSProtocolError = __webpack_exports__.KafkaJSProtocolError;
209
227
  exports.clearAllMocks = __webpack_exports__.clearAllMocks;
228
+ exports.createMockKafka = __webpack_exports__.createMockKafka;
210
229
  exports.getKafkaMessages = __webpack_exports__.getKafkaMessages;
211
230
  exports.kafkaAssert = __webpack_exports__.kafkaAssert;
212
231
  exports.kafkaAssertLength = __webpack_exports__.kafkaAssertLength;
@@ -217,12 +236,14 @@ exports.mockProducer = __webpack_exports__.mockProducer;
217
236
  exports.mockProducerSend = __webpack_exports__.mockProducerSend;
218
237
  exports.mockTransaction = __webpack_exports__.mockTransaction;
219
238
  exports.mockTransactionSend = __webpack_exports__.mockTransactionSend;
239
+ exports.setupKafkaTest = __webpack_exports__.setupKafkaTest;
220
240
  for(var __webpack_i__ in __webpack_exports__)if (-1 === [
221
241
  "CompressionTypes",
222
242
  "Kafka",
223
243
  "KafkaJSNonRetriableError",
224
244
  "KafkaJSProtocolError",
225
245
  "clearAllMocks",
246
+ "createMockKafka",
226
247
  "getKafkaMessages",
227
248
  "kafkaAssert",
228
249
  "kafkaAssertLength",
@@ -232,7 +253,8 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
232
253
  "mockProducer",
233
254
  "mockProducerSend",
234
255
  "mockTransaction",
235
- "mockTransactionSend"
256
+ "mockTransactionSend",
257
+ "setupKafkaTest"
236
258
  ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
237
259
  Object.defineProperty(exports, '__esModule', {
238
260
  value: true
@@ -8,6 +8,20 @@ export declare const CompressionTypes: {
8
8
  ZSTD: number;
9
9
  };
10
10
 
11
+ /**
12
+ * Create a mock Kafka instance for testing.
13
+ * Use this with setMockKafkaForTestMode from @woovi/kafka.
14
+ *
15
+ * @example
16
+ * import { setMockKafkaForTestMode } from '@woovi/kafka';
17
+ * import { createMockKafka } from '@woovi/kafka/test-utils';
18
+ *
19
+ * beforeAll(() => {
20
+ * setMockKafkaForTestMode(createMockKafka());
21
+ * });
22
+ */
23
+ export declare function createMockKafka(): any;
24
+
11
25
  export declare const getKafkaMessages: () => KafkaMessage[];
12
26
 
13
27
  export declare const Kafka: MockFn;
@@ -76,4 +90,21 @@ export declare const mockTransaction: MockFn;
76
90
 
77
91
  export declare const mockTransactionSend: MockFn;
78
92
 
93
+ /**
94
+ * Set up Kafka for testing with a mock instance.
95
+ * This creates a mock Kafka that records messages for kafkaAssert.
96
+ *
97
+ * @example
98
+ * import { setupKafkaTest, clearAllMocks } from '@woovi/kafka/test-utils';
99
+ *
100
+ * beforeAll(() => {
101
+ * setupKafkaTest();
102
+ * });
103
+ *
104
+ * beforeEach(() => {
105
+ * clearAllMocks();
106
+ * });
107
+ */
108
+ export declare function setupKafkaTest(): void;
109
+
79
110
  export { }
@@ -35,34 +35,34 @@ const kafkaMock_fn = getMockFn();
35
35
  const mockProducerSend = kafkaMock_fn();
36
36
  const mockTransactionSend = kafkaMock_fn();
37
37
  const mockTransaction = kafkaMock_fn().mockReturnValue({
38
- send: mockTransactionSend,
39
- commit: kafkaMock_fn(),
40
- abort: kafkaMock_fn()
38
+ send: mockTransactionSend.mockResolvedValue(void 0),
39
+ commit: kafkaMock_fn().mockResolvedValue(void 0),
40
+ abort: kafkaMock_fn().mockResolvedValue(void 0)
41
41
  });
42
42
  const mockProducer = kafkaMock_fn().mockReturnValue({
43
- connect: kafkaMock_fn(),
44
- disconnect: kafkaMock_fn(),
45
- send: mockProducerSend,
43
+ connect: kafkaMock_fn().mockResolvedValue(void 0),
44
+ disconnect: kafkaMock_fn().mockResolvedValue(void 0),
45
+ send: mockProducerSend.mockResolvedValue(void 0),
46
46
  transaction: mockTransaction,
47
47
  on: kafkaMock_fn()
48
48
  });
49
49
  const mockConsumer = kafkaMock_fn().mockReturnValue({
50
- connect: kafkaMock_fn(),
51
- disconnect: kafkaMock_fn(),
52
- subscribe: kafkaMock_fn(),
53
- run: kafkaMock_fn(),
50
+ connect: kafkaMock_fn().mockResolvedValue(void 0),
51
+ disconnect: kafkaMock_fn().mockResolvedValue(void 0),
52
+ subscribe: kafkaMock_fn().mockResolvedValue(void 0),
53
+ run: kafkaMock_fn().mockResolvedValue(void 0),
54
54
  on: kafkaMock_fn(),
55
- pause: kafkaMock_fn(),
56
- resume: kafkaMock_fn(),
57
- seek: kafkaMock_fn()
55
+ pause: kafkaMock_fn().mockResolvedValue(void 0),
56
+ resume: kafkaMock_fn().mockResolvedValue(void 0),
57
+ seek: kafkaMock_fn().mockResolvedValue(void 0)
58
58
  });
59
59
  const mockAdmin = kafkaMock_fn().mockReturnValue({
60
- connect: kafkaMock_fn(),
61
- disconnect: kafkaMock_fn(),
62
- createTopics: kafkaMock_fn(),
63
- deleteTopics: kafkaMock_fn(),
64
- listTopics: kafkaMock_fn().mockReturnValue([]),
65
- fetchTopicMetadata: kafkaMock_fn()
60
+ connect: kafkaMock_fn().mockResolvedValue(void 0),
61
+ disconnect: kafkaMock_fn().mockResolvedValue(void 0),
62
+ createTopics: kafkaMock_fn().mockResolvedValue(void 0),
63
+ deleteTopics: kafkaMock_fn().mockResolvedValue(void 0),
64
+ listTopics: kafkaMock_fn().mockResolvedValue([]),
65
+ fetchTopicMetadata: kafkaMock_fn().mockResolvedValue(void 0)
66
66
  });
67
67
  const Kafka = kafkaMock_fn().mockReturnValue({
68
68
  producer: mockProducer,
@@ -160,4 +160,20 @@ const kafkaAssertLength = (args)=>{
160
160
  throw error;
161
161
  }
162
162
  };
163
- export { CompressionTypes, Kafka, KafkaJSNonRetriableError, KafkaJSProtocolError, clearAllMocks, getKafkaMessages, kafkaAssert, kafkaAssertLength, logLevel, mockAdmin, mockConsumer, mockProducer, mockProducerSend, mockTransaction, mockTransactionSend };
163
+ function createMockKafka() {
164
+ return Kafka();
165
+ }
166
+ const WOOVI_KAFKA_MOCK_KEY = '__woovi_kafka_mock__';
167
+ function setupKafkaTest() {
168
+ const mockKafkaInstance = {
169
+ producer: mockProducer,
170
+ consumer: mockConsumer,
171
+ admin: mockAdmin
172
+ };
173
+ const g = globalThis;
174
+ g[WOOVI_KAFKA_MOCK_KEY] = {
175
+ mock: mockKafkaInstance,
176
+ testMode: true
177
+ };
178
+ }
179
+ export { CompressionTypes, Kafka, KafkaJSNonRetriableError, KafkaJSProtocolError, clearAllMocks, createMockKafka, getKafkaMessages, kafkaAssert, kafkaAssertLength, logLevel, mockAdmin, mockConsumer, mockProducer, mockProducerSend, mockTransaction, mockTransactionSend, setupKafkaTest };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@woovi/kafka",
3
3
  "description": "Kafka setup and utilities for Woovi microservices",
4
- "version": "0.1.4",
4
+ "version": "0.1.7",
5
5
  "author": "",
6
6
  "type": "module",
7
7
  "dependencies": {