@venizia/ignis-helpers 0.2.0-13 → 0.2.0-15

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.
Files changed (33) hide show
  1. package/dist/cjs/modules/queue/bullmq/helper.d.ts +20 -4
  2. package/dist/cjs/modules/queue/bullmq/helper.d.ts.map +1 -1
  3. package/dist/cjs/modules/queue/bullmq/helper.js +40 -12
  4. package/dist/cjs/modules/queue/bullmq/helper.js.map +1 -1
  5. package/dist/cjs/modules/queue/kafka/common/types/callbacks.d.ts +10 -0
  6. package/dist/cjs/modules/queue/kafka/common/types/callbacks.d.ts.map +1 -1
  7. package/dist/cjs/modules/queue/kafka/common/types/consumer.d.ts +5 -1
  8. package/dist/cjs/modules/queue/kafka/common/types/consumer.d.ts.map +1 -1
  9. package/dist/cjs/modules/queue/kafka/consumer.d.ts +64 -28
  10. package/dist/cjs/modules/queue/kafka/consumer.d.ts.map +1 -1
  11. package/dist/cjs/modules/queue/kafka/consumer.js +53 -20
  12. package/dist/cjs/modules/queue/kafka/consumer.js.map +1 -1
  13. package/dist/cjs/utilities/module.utility.d.ts +8 -1
  14. package/dist/cjs/utilities/module.utility.d.ts.map +1 -1
  15. package/dist/cjs/utilities/module.utility.js +12 -2
  16. package/dist/cjs/utilities/module.utility.js.map +1 -1
  17. package/dist/esm/modules/queue/bullmq/helper.d.ts +20 -4
  18. package/dist/esm/modules/queue/bullmq/helper.d.ts.map +1 -1
  19. package/dist/esm/modules/queue/bullmq/helper.js +40 -12
  20. package/dist/esm/modules/queue/bullmq/helper.js.map +1 -1
  21. package/dist/esm/modules/queue/kafka/common/types/callbacks.d.ts +10 -0
  22. package/dist/esm/modules/queue/kafka/common/types/callbacks.d.ts.map +1 -1
  23. package/dist/esm/modules/queue/kafka/common/types/consumer.d.ts +5 -1
  24. package/dist/esm/modules/queue/kafka/common/types/consumer.d.ts.map +1 -1
  25. package/dist/esm/modules/queue/kafka/consumer.d.ts +64 -28
  26. package/dist/esm/modules/queue/kafka/consumer.d.ts.map +1 -1
  27. package/dist/esm/modules/queue/kafka/consumer.js +53 -20
  28. package/dist/esm/modules/queue/kafka/consumer.js.map +1 -1
  29. package/dist/esm/utilities/module.utility.d.ts +8 -1
  30. package/dist/esm/utilities/module.utility.d.ts.map +1 -1
  31. package/dist/esm/utilities/module.utility.js +12 -2
  32. package/dist/esm/utilities/module.utility.js.map +1 -1
  33. package/package.json +2 -1
@@ -4,7 +4,14 @@ export declare class ModuleUtility {
4
4
  /** Peers handed over by the application, keyed by specifier. Checked before any filesystem lookup. The map lives in a globalThis slot because a process (or a compiled bundle) can carry two copies of this module, and a peer registered through one copy must be found by the other. */
5
5
  private static readonly registered;
6
6
  private static sharedRegistry;
7
- /** Resolves peers against the APP's node_modules, not this package's own `dist/` location. */
7
+ /** The application's project root, shared across module copies like the registry; `process.cwd()` until an application sets it. */
8
+ private static readonly PROJECT_ROOT_SLOT;
9
+ /** Called by the application once it knows its root (`configs.projectRoot` or the cwd); every peer lookup below follows it. */
10
+ static setProjectRoot(opts: {
11
+ projectRoot: string;
12
+ }): void;
13
+ static getProjectRoot(): string;
14
+ /** Resolves peers against the APP's node_modules (under the project root), not this package's own `dist/` location. */
8
15
  private static appRequire;
9
16
  private static fail;
10
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"module.utility.d.ts","sourceRoot":"","sources":["../../../src/utilities/module.utility.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAM9C,4LAA4L;AAC5L,qBAAa,aAAa;IACxB,0RAA0R;IAC1R,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAwD;IAE1F,OAAO,CAAC,MAAM,CAAC,cAAc;IAa7B,8FAA8F;IAC9F,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB,OAAO,CAAC,MAAM,CAAC,IAAI;IAanB;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;IAMjE,sFAAsF;WACzE,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAcpE,kFAAkF;IAClF,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,CAAC;IAczD;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,IAAI;CAgBT"}
1
+ {"version":3,"file":"module.utility.d.ts","sourceRoot":"","sources":["../../../src/utilities/module.utility.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAM9C,4LAA4L;AAC5L,qBAAa,aAAa;IACxB,0RAA0R;IAC1R,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAwD;IAE1F,OAAO,CAAC,MAAM,CAAC,cAAc;IAa7B,mIAAmI;IACnI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAoC;IAE7E,+HAA+H;IAC/H,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI1D,MAAM,CAAC,cAAc,IAAI,MAAM;IAK/B,uHAAuH;IACvH,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB,OAAO,CAAC,MAAM,CAAC,IAAI;IAanB;;;;;;;;;OASG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;IAMjE,sFAAsF;WACzE,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAcpE,kFAAkF;IAClF,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,CAAC;IAczD;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,IAAI;CAgBT"}
@@ -23,9 +23,19 @@ class ModuleUtility {
23
23
  Reflect.set(globalThis, slot, created);
24
24
  return created;
25
25
  }
26
- /** Resolves peers against the APP's node_modules, not this package's own `dist/` location. */
26
+ /** The application's project root, shared across module copies like the registry; `process.cwd()` until an application sets it. */
27
+ static { this.PROJECT_ROOT_SLOT = Symbol.for('ignis:project-root'); }
28
+ /** Called by the application once it knows its root (`configs.projectRoot` or the cwd); every peer lookup below follows it. */
29
+ static setProjectRoot(opts) {
30
+ Reflect.set(globalThis, this.PROJECT_ROOT_SLOT, opts.projectRoot);
31
+ }
32
+ static getProjectRoot() {
33
+ const shared = Reflect.get(globalThis, this.PROJECT_ROOT_SLOT);
34
+ return shared ?? process.cwd();
35
+ }
36
+ /** Resolves peers against the APP's node_modules (under the project root), not this package's own `dist/` location. */
27
37
  static appRequire() {
28
- return (0, node_module_1.createRequire)(node_path_1.default.join(process.cwd(), 'node_modules'));
38
+ return (0, node_module_1.createRequire)(node_path_1.default.join(this.getProjectRoot(), 'node_modules'));
29
39
  }
30
40
  static fail(opts) {
31
41
  const { method, module, error, scope } = opts;
@@ -1 +1 @@
1
- {"version":3,"file":"module.utility.js","sourceRoot":"","sources":["../../../src/utilities/module.utility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.utility.js","sourceRoot":"","sources":["../../../src/utilities/module.utility.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,18 @@
1
1
  import { BaseHelper } from '../../base.js';
2
2
  import { IRedisHelper } from '../../redis/index.js';
3
- import { Job, Processor, Queue, Worker } from 'bullmq';
3
+ import { Job, Processor, Queue, QueueOptions, Worker, WorkerOptions } from 'bullmq';
4
4
  import { TBullQueueRole } from '../common/index.js';
5
- interface IBullMQOptions<TQueueElement = any, TQueueResult = any> {
5
+ export interface IBullMQOptions<TQueueElement = any, TQueueResult = any> {
6
6
  queueName: string;
7
7
  identifier: string;
8
8
  role: TBullQueueRole;
9
9
  redisConnection: IRedisHelper;
10
10
  numberOfWorker?: number;
11
11
  lockDuration?: number;
12
+ /** Merged over the framework defaults, under the fields the helper owns (`connection`) - see `queueOptionsFor`. */
13
+ queueOptions?: Omit<QueueOptions, 'connection'>;
14
+ /** Merged under the fields the helper owns (`connection`, `concurrency`, `lockDuration`) - see `workerOptionsFor`. */
15
+ workerOptions?: Omit<WorkerOptions, 'connection' | 'concurrency' | 'lockDuration'>;
12
16
  onWorkerData?: (job: Job<TQueueElement, TQueueResult>) => Promise<any>;
13
17
  onWorkerDataCompleted?: (job: Job<TQueueElement, TQueueResult>, result: any) => Promise<void>;
14
18
  onWorkerDataFail?: (job: Job<TQueueElement, TQueueResult> | undefined, error: Error) => Promise<void>;
@@ -21,13 +25,26 @@ export declare class BullMQHelper<TQueueElement = any, TQueueResult = any> exten
21
25
  worker: Worker<TQueueElement, TQueueResult>;
22
26
  protected numberOfWorker: number;
23
27
  protected lockDuration: number;
28
+ protected queueOptions?: Omit<QueueOptions, 'connection'>;
29
+ protected workerOptions?: Omit<WorkerOptions, 'connection' | 'concurrency' | 'lockDuration'>;
24
30
  protected onWorkerData?: (job: Job<TQueueElement, TQueueResult>) => Promise<any>;
25
31
  protected onWorkerDataCompleted?: (job: Job<TQueueElement, TQueueResult>, result: any) => Promise<void>;
26
32
  protected onWorkerDataFail?: (job: Job<TQueueElement, TQueueResult> | undefined, error: Error) => Promise<void>;
27
33
  constructor(options: IBullMQOptions<TQueueElement, TQueueResult>);
28
34
  static newInstance<T = any, R = any>(opts: IBullMQOptions<T, R>): BullMQHelper<T, R>;
29
- private resolveQueueName;
35
+ /** Structural cluster check: catches a real `Cluster` instance, a duplicated cluster client, and one built from a second ioredis copy (fails `instanceof` across module copies). */
36
+ protected isClusterClient(): boolean;
37
+ protected resolveQueueName(): string;
30
38
  configureQueue(): void;
39
+ /** Full `Queue` options: framework defaults, then `this.queueOptions`, then the connection the helper owns - in that precedence order. */
40
+ protected queueOptionsFor(opts: {
41
+ queueName: string;
42
+ }): QueueOptions;
43
+ /** Full `Worker` options: `this.workerOptions`, then the connection/concurrency/lock fields the helper owns - in that precedence order. */
44
+ protected workerOptionsFor(opts: {
45
+ queueName: string;
46
+ processor: Processor<TQueueElement, TQueueResult>;
47
+ }): WorkerOptions;
31
48
  /** Client factory seam - overridden in tests to run the helper without Redis. */
32
49
  protected buildQueue(opts: {
33
50
  queueName: string;
@@ -41,5 +58,4 @@ export declare class BullMQHelper<TQueueElement = any, TQueueResult = any> exten
41
58
  configure(): void;
42
59
  close(): Promise<void>;
43
60
  }
44
- export {};
45
61
  //# sourceMappingURL=helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../../../src/modules/queue/bullmq/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAqB,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE1E,OAAO,EAAc,cAAc,EAAE,MAAM,WAAW,CAAC;AAEvD,UAAU,cAAc,CAAC,aAAa,GAAG,GAAG,EAAE,YAAY,GAAG,GAAG;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,cAAc,CAAC;IACrB,eAAe,EAAE,YAAY,CAAC;IAE9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACvE,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,gBAAgB,CAAC,EAAE,CACjB,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,SAAS,EACjD,KAAK,EAAE,KAAK,KACT,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAED,qBAAa,YAAY,CAAC,aAAa,GAAG,GAAG,EAAE,YAAY,GAAG,GAAG,CAAE,SAAQ,UAAU;IACnF,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC;IAC/B,SAAS,CAAC,eAAe,EAAE,YAAY,CAAC;IAExC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE5C,SAAS,CAAC,cAAc,SAAK;IAC7B,SAAS,CAAC,YAAY,SAAkB;IAExC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACjF,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAChC,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,EACrC,MAAM,EAAE,GAAG,KACR,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAC3B,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,SAAS,EACjD,KAAK,EAAE,KAAK,KACT,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEP,OAAO,EAAE,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC;IA2BhE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAI/D,OAAO,CAAC,gBAAgB;IASxB,cAAc;IAwBd,iFAAiF;IACjF,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC;IAUrF,iFAAiF;IACjF,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;KACnD,GAAG,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC;IAQvC,eAAe;IA8Df,SAAS;IAuBH,KAAK;CAgCZ"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../../../src/modules/queue/bullmq/helper.ts"],"names":[],"mappings":"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"}
@@ -9,12 +9,14 @@ export class BullMQHelper extends BaseHelper {
9
9
  super({ scope: BullMQHelper.name, identifier: options.identifier });
10
10
  this.numberOfWorker = 1;
11
11
  this.lockDuration = 90 * 60 * 1000;
12
- const { queueName, redisConnection, role, numberOfWorker = 1, lockDuration = 90 * 60 * 1000, onWorkerData, onWorkerDataCompleted, onWorkerDataFail, } = options;
12
+ const { queueName, redisConnection, role, numberOfWorker = 1, lockDuration = 90 * 60 * 1000, queueOptions, workerOptions, onWorkerData, onWorkerDataCompleted, onWorkerDataFail, } = options;
13
13
  this.queueName = queueName;
14
14
  this.role = role;
15
15
  this.redisConnection = redisConnection;
16
16
  this.numberOfWorker = numberOfWorker;
17
17
  this.lockDuration = lockDuration;
18
+ this.queueOptions = queueOptions;
19
+ this.workerOptions = workerOptions;
18
20
  this.onWorkerData = onWorkerData;
19
21
  this.onWorkerDataCompleted = onWorkerDataCompleted;
20
22
  this.onWorkerDataFail = onWorkerDataFail;
@@ -23,9 +25,19 @@ export class BullMQHelper extends BaseHelper {
23
25
  static newInstance(opts) {
24
26
  return new BullMQHelper(opts);
25
27
  }
28
+ /** Structural cluster check: catches a real `Cluster` instance, a duplicated cluster client, and one built from a second ioredis copy (fails `instanceof` across module copies). */
29
+ isClusterClient() {
30
+ const client = Object(this.redisConnection.getClient());
31
+ if (client instanceof Cluster) {
32
+ return true;
33
+ }
34
+ if (Reflect.get(client, 'isCluster') === true) {
35
+ return true;
36
+ }
37
+ return typeof Reflect.get(client, 'nodes') === 'function';
38
+ }
26
39
  resolveQueueName() {
27
- const isCluster = this.redisConnection.getClient() instanceof Cluster;
28
- if (isCluster && !this.queueName.startsWith('{')) {
40
+ if (this.isClusterClient() && !this.queueName.startsWith('{')) {
29
41
  return `{${this.queueName}}`;
30
42
  }
31
43
  return this.queueName;
@@ -46,23 +58,39 @@ export class BullMQHelper extends BaseHelper {
46
58
  .error('queue: %s | Queue error! Error: %s | ID: %s', this.queueName, error, this.identifier);
47
59
  });
48
60
  }
49
- /** Client factory seam - overridden in tests to run the helper without Redis. */
50
- buildQueue(opts) {
51
- return new Queue(opts.queueName, {
52
- connection: this.redisConnection.duplicateClient(),
61
+ /** Full `Queue` options: framework defaults, then `this.queueOptions`, then the connection the helper owns - in that precedence order. */
62
+ queueOptionsFor(opts) {
63
+ this.logger
64
+ .for(this.queueOptionsFor.name)
65
+ .debug('Building queue options | Queue: %s | ID: %s', opts.queueName, this.identifier);
66
+ return {
53
67
  defaultJobOptions: {
54
68
  removeOnComplete: true,
55
69
  removeOnFail: true,
56
70
  },
57
- });
71
+ ...this.queueOptions,
72
+ connection: this.redisConnection.duplicateClient(),
73
+ };
58
74
  }
59
- /** Client factory seam - overridden in tests to run the helper without Redis. */
60
- buildWorker(opts) {
61
- return new Worker(opts.queueName, opts.processor, {
75
+ /** Full `Worker` options: `this.workerOptions`, then the connection/concurrency/lock fields the helper owns - in that precedence order. */
76
+ workerOptionsFor(opts) {
77
+ this.logger
78
+ .for(this.workerOptionsFor.name)
79
+ .debug('Building worker options | Queue: %s | ID: %s', opts.queueName, this.identifier);
80
+ return {
81
+ ...this.workerOptions,
62
82
  connection: this.redisConnection.duplicateClient(),
63
83
  concurrency: this.numberOfWorker,
64
84
  lockDuration: this.lockDuration,
65
- });
85
+ };
86
+ }
87
+ /** Client factory seam - overridden in tests to run the helper without Redis. */
88
+ buildQueue(opts) {
89
+ return new Queue(opts.queueName, this.queueOptionsFor(opts));
90
+ }
91
+ /** Client factory seam - overridden in tests to run the helper without Redis. */
92
+ buildWorker(opts) {
93
+ return new Worker(opts.queueName, opts.processor, this.workerOptionsFor(opts));
66
94
  }
67
95
  configureWorker() {
68
96
  if (!this.queueName) {
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../../src/modules/queue/bullmq/helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../../src/modules/queue/bullmq/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAkB,KAAK,EAAgB,MAAM,EAAiB,MAAM,QAAQ,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAkB,MAAM,WAAW,CAAC;AAwBvD,MAAM,OAAO,YAAsD,SAAQ,UAAU;IAwBnF,YAAY,OAAoD;QAC9D,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAjB5D,mBAAc,GAAG,CAAC,CAAC;QACnB,iBAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAiBtC,MAAM,EACJ,SAAS,EACT,eAAe,EACf,IAAI,EACJ,cAAc,GAAG,CAAC,EAClB,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAC7B,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,GACjB,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEvC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAEzC,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,WAAW,CAAmB,IAA0B;QAC7D,OAAO,IAAI,YAAY,CAAO,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,oLAAoL;IAC1K,eAAe;QACvB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;QAExD,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,UAAU,CAAC;IAC5D,CAAC;IAES,gBAAgB;QACxB,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;iBAC7B,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5C,uHAAuH;QACvH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC7B,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,aAAa,CAAC;iBAClB,KAAK,CACJ,6CAA6C,EAC7C,IAAI,CAAC,SAAS,EACd,KAAK,EACL,IAAI,CAAC,UAAU,CAChB,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0IAA0I;IAChI,eAAe,CAAC,IAA2B;QACnD,IAAI,CAAC,MAAM;aACR,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;aAC9B,KAAK,CAAC,6CAA6C,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzF,OAAO;YACL,iBAAiB,EAAE;gBACjB,gBAAgB,EAAE,IAAI;gBACtB,YAAY,EAAE,IAAI;aACnB;YACD,GAAG,IAAI,CAAC,YAAY;YACpB,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;SACnD,CAAC;IACJ,CAAC;IAED,2IAA2I;IACjI,gBAAgB,CAAC,IAG1B;QACC,IAAI,CAAC,MAAM;aACR,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;aAC/B,KAAK,CAAC,8CAA8C,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1F,OAAO;YACL,GAAG,IAAI,CAAC,aAAa;YACrB,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE;YAClD,WAAW,EAAE,IAAI,CAAC,cAAc;YAChC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,iFAAiF;IACvE,UAAU,CAAC,IAA2B;QAC9C,OAAO,IAAI,KAAK,CAA8B,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,iFAAiF;IACvE,WAAW,CAAC,IAGrB;QACC,OAAO,IAAI,MAAM,CACf,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAC5B,CAAC;IACJ,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;iBAC9B,KAAK,CAAC,8BAA8B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7B,SAAS;YACT,SAAS,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;gBACrB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC5C,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;gBAC/B,IAAI,CAAC,MAAM;qBACR,GAAG,CAAC,cAAc,CAAC;qBACnB,IAAI,CACH,mDAAmD,EACnD,IAAI,CAAC,SAAS,EACd,EAAE,EACF,IAAI,EACJ,IAAI,EACJ,IAAI,CAAC,UAAU,CAChB,CAAC;gBAEJ,OAAO,SAAyB,CAAC;YACnC,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAC1C,UAAU,CAAC;gBACT,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,kBAAkB;gBACzB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC;aAC3D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACvC,UAAU,CAAC;gBACT,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,eAAe;gBACtB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC;aACtD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,uHAAuH;QACvH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,cAAc,CAAC;iBACnB,KAAK,CACJ,8CAA8C,EAC9C,IAAI,CAAC,SAAS,EACd,KAAK,EACL,IAAI,CAAC,UAAU,CAChB,CAAC;QACN,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBACxB,KAAK,CACJ,yEAAyE,EACzE,IAAI,CAAC,UAAU,CAChB,CAAC;YACJ,OAAO;QACT,CAAC;QAED,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,4JAA4J;QAC5J,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;iBACpB,KAAK,CAAC,0CAA0C,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;iBACpB,KAAK,CAAC,yCAAyC,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5E,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,QAAQ,CAAC;gBACb,OAAO,EAAE,WAAW,IAAI,CAAC,UAAU,6CAA6C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;aACvG,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM;aACR,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aACpB,IAAI,CAAC,4CAA4C,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzE,CAAC;CACF"}
@@ -13,6 +13,16 @@ export type TKafkaMessageErrorCallback<KeyType = string, ValueType = string, Hea
13
13
  error: Error;
14
14
  message?: Message<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
15
15
  }) => ValueOrPromise<void>;
16
+ /** The stream 'error' event - falls back to `onMessageError` when unset. */
17
+ export type TKafkaStreamErrorCallback = (opts: {
18
+ error: Error;
19
+ }) => ValueOrPromise<void>;
20
+ /** A reconnect failure (client rebuild or the reconnect attempt itself) - falls back to `onMessageError` when unset. */
21
+ export type TKafkaReconnectErrorCallback = (opts: {
22
+ error: Error;
23
+ attempt: number;
24
+ maxAttempts: number;
25
+ }) => ValueOrPromise<void>;
16
26
  export type TKafkaGroupJoinCallback = (opts: {
17
27
  groupId: string;
18
28
  memberId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/queue/kafka/common/types/callbacks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callbacks.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/queue/kafka/common/types/callbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,OAAO,EACP,aAAa,EACb,QAAQ,EACR,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAE3F,MAAM,MAAM,qBAAqB,CAC/B,OAAO,GAAG,MAAM,EAChB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,MAAM,EACtB,eAAe,GAAG,MAAM,IACtB,CAAC,IAAI,EAAE;IACT,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;CACtE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAE3B,MAAM,MAAM,yBAAyB,CACnC,OAAO,GAAG,MAAM,EAChB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,MAAM,EACtB,eAAe,GAAG,MAAM,IACtB,CAAC,IAAI,EAAE;IACT,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;CACtE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAE3B,MAAM,MAAM,0BAA0B,CACpC,OAAO,GAAG,MAAM,EAChB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,MAAM,EACtB,eAAe,GAAG,MAAM,IACtB,CAAC,IAAI,EAAE;IACT,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;CACvE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAE3B,4EAA4E;AAC5E,MAAM,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAEzF,wHAAwH;AACxH,MAAM,MAAM,4BAA4B,GAAG,CAAC,IAAI,EAAE;IAChD,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAE3B,MAAM,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAE3B,MAAM,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAE3B,MAAM,MAAM,4BAA4B,GAAG,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAE/F,MAAM,MAAM,4BAA4B,GAAG,CAAC,IAAI,EAAE;IAChD,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAE3B,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAEjF,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;AAEtF,MAAM,MAAM,yBAAyB,CACnC,UAAU,EACV,OAAO,EACP,SAAS,EACT,aAAa,EACb,eAAe,IACb,CACF,GAAG,EAAE,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,KAC9E,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB,MAAM,WAAW,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe;IAC1F,WAAW,EAAE,OAAO,CAClB,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAC7F,CAAC;IACF,IAAI,EAAE,CACJ,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,KAClE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,uBAAuB,EAC9F,QAAQ,EAAE,QAAQ,CAChB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,CACxB,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,SAAS,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EACxF,OAAO,EAAE,OAAO,CACd,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,CACvB,KACE,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB"}
@@ -1,6 +1,6 @@
1
1
  import type { Deserializers, MessagesStreamFallbackModeValue, MessagesStreamModeValue, SchemaRegistry } from '@platformatic/kafka';
2
2
  import { TKafkaGroupProtocol } from '../constants.js';
3
- import { TKafkaBrokerEventCallback, TKafkaGroupJoinCallback, TKafkaGroupLeaveCallback, TKafkaGroupRebalanceCallback, TKafkaHeartbeatErrorCallback, TKafkaLagCallback, TKafkaLagErrorCallback, TKafkaMessageCallback, TKafkaMessageDoneCallback, TKafkaMessageErrorCallback } from './callbacks.js';
3
+ import { TKafkaBrokerEventCallback, TKafkaGroupJoinCallback, TKafkaGroupLeaveCallback, TKafkaGroupRebalanceCallback, TKafkaHeartbeatErrorCallback, TKafkaLagCallback, TKafkaLagErrorCallback, TKafkaMessageCallback, TKafkaMessageDoneCallback, TKafkaMessageErrorCallback, TKafkaReconnectErrorCallback, TKafkaStreamErrorCallback } from './callbacks.js';
4
4
  import { IKafkaConnectionOptions } from './connection.js';
5
5
  export interface IKafkaConsumerOptions<KeyType = string, ValueType = string, HeaderKeyType = string, HeaderValueType = string> extends IKafkaConnectionOptions {
6
6
  groupId: string;
@@ -24,6 +24,10 @@ export interface IKafkaConsumerOptions<KeyType = string, ValueType = string, Hea
24
24
  onMessage?: TKafkaMessageCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
25
25
  onMessageDone?: TKafkaMessageDoneCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
26
26
  onMessageError?: TKafkaMessageErrorCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
27
+ /** Stream 'error' events; falls back to `onMessageError` when unset. */
28
+ onStreamError?: TKafkaStreamErrorCallback;
29
+ /** Reconnect failures (client rebuild or the reconnect attempt); falls back to `onMessageError` when unset. */
30
+ onReconnectError?: TKafkaReconnectErrorCallback;
27
31
  onGroupJoin?: TKafkaGroupJoinCallback;
28
32
  onGroupLeave?: TKafkaGroupLeaveCallback;
29
33
  onGroupRebalance?: TKafkaGroupRebalanceCallback;
@@ -1 +1 @@
1
- {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/queue/kafka/common/types/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,+BAA+B,EAC/B,uBAAuB,EACvB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,qBAAqB,CACpC,OAAO,GAAG,MAAM,EAChB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,MAAM,EACtB,eAAe,GAAG,MAAM,CACxB,SAAQ,uBAAuB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;IAC3F,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAEhG,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IAE/C,SAAS,CAAC,EAAE,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IACtF,aAAa,CAAC,EAAE,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAC9F,cAAc,CAAC,EAAE,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAEhG,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAChD,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAEhD,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,YAAY,CAAC,EAAE,+BAA+B,CAAC;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
1
+ {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/queue/kafka/common/types/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,+BAA+B,EAC/B,uBAAuB,EACvB,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EAC1B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,qBAAqB,CACpC,OAAO,GAAG,MAAM,EAChB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,MAAM,EACtB,eAAe,GAAG,MAAM,CACxB,SAAQ,uBAAuB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;IAC3F,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAEhG,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IAE/C,SAAS,CAAC,EAAE,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IACtF,aAAa,CAAC,EAAE,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAC9F,cAAc,CAAC,EAAE,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAChG,wEAAwE;IACxE,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,+GAA+G;IAC/G,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAEhD,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAChD,gBAAgB,CAAC,EAAE,4BAA4B,CAAC;IAEhD,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,YAAY,CAAC,EAAE,+BAA+B,CAAC;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
@@ -1,28 +1,41 @@
1
1
  import type { MessagesStream } from '@platformatic/kafka';
2
2
  import { Consumer } from '@platformatic/kafka';
3
3
  import { BaseKafkaHelper } from './base.js';
4
- import type { IKafkaConsumeStartOptions, IKafkaConsumerOptions } from './common/types/index.js';
5
- /** Wrapper around `@platformatic/kafka` Consumer with lifecycle management, health tracking, graceful shutdown, message callbacks, and lag monitoring. */
4
+ import type { IKafkaConsumeStartOptions, IKafkaConsumerOptions, TKafkaGroupJoinCallback, TKafkaGroupLeaveCallback, TKafkaGroupRebalanceCallback, TKafkaHeartbeatErrorCallback, TKafkaLagCallback, TKafkaLagErrorCallback, TKafkaMessageCallback, TKafkaMessageDoneCallback, TKafkaMessageErrorCallback, TKafkaReconnectErrorCallback, TKafkaStreamErrorCallback } from './common/types/index.js';
5
+ /**
6
+ * Wrapper around `@platformatic/kafka` Consumer with lifecycle management, health tracking, graceful shutdown, message callbacks, and lag monitoring.
7
+ *
8
+ * Every member below is `protected`, not `private`, so a consumer extends this class instead of forking it. That visibility is not a stable contract between minor versions.
9
+ */
6
10
  export declare class KafkaConsumerHelper<KeyType = string, ValueType = string, HeaderKeyType = string, HeaderValueType = string> extends BaseKafkaHelper<Consumer<KeyType, ValueType, HeaderKeyType, HeaderValueType>> {
7
- private stream;
8
- private consumeLoop;
9
- private consumeStartOptions;
10
- private lagMonitoringActive;
11
- private lagMonitoringOptions;
12
- private sessionLikelyStale;
13
- private readonly onMessage?;
14
- private readonly onMessageDone?;
15
- private readonly onMessageError?;
16
- private readonly onGroupJoin?;
17
- private readonly onGroupLeave?;
18
- private readonly onGroupRebalance?;
19
- private readonly onHeartbeatError?;
20
- private readonly onLag?;
21
- private readonly onLagError?;
22
- private readonly initialOptions;
11
+ protected stream: MessagesStream<KeyType, ValueType, HeaderKeyType, HeaderValueType> | null;
12
+ protected consumeLoop: Promise<void> | null;
13
+ protected consumeStartOptions: IKafkaConsumeStartOptions | null;
14
+ protected lagMonitoringActive: boolean;
15
+ protected lagMonitoringOptions: {
16
+ topics: string[];
17
+ interval?: number;
18
+ } | null;
19
+ protected sessionLikelyStale: boolean;
20
+ protected readonly onMessage?: TKafkaMessageCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
21
+ protected readonly onMessageDone?: TKafkaMessageDoneCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
22
+ protected readonly onMessageError?: TKafkaMessageErrorCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
23
+ protected readonly onStreamError?: TKafkaStreamErrorCallback;
24
+ protected readonly onReconnectError?: TKafkaReconnectErrorCallback;
25
+ protected readonly onGroupJoin?: TKafkaGroupJoinCallback;
26
+ protected readonly onGroupLeave?: TKafkaGroupLeaveCallback;
27
+ protected readonly onGroupRebalance?: TKafkaGroupRebalanceCallback;
28
+ protected readonly onHeartbeatError?: TKafkaHeartbeatErrorCallback;
29
+ protected readonly onLag?: TKafkaLagCallback;
30
+ protected readonly onLagError?: TKafkaLagErrorCallback;
31
+ protected readonly initialOptions: IKafkaConsumerOptions<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
23
32
  constructor(opts: IKafkaConsumerOptions<KeyType, ValueType, HeaderKeyType, HeaderValueType>);
24
33
  static newInstance<KeyType = string, ValueType = string, HeaderKeyType = string, HeaderValueType = string>(opts: IKafkaConsumerOptions<KeyType, ValueType, HeaderKeyType, HeaderValueType>): KafkaConsumerHelper<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
25
- private static buildConsumerClient;
34
+ /** The instance seam every rebuild goes through; the constructor alone uses the static factory because no instance exists yet. Override this to hand a rebuilt consumer different options or a test double. */
35
+ protected buildClient(opts: {
36
+ options: IKafkaConsumerOptions<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
37
+ }): Consumer<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
38
+ protected static buildConsumerClient<KeyType = string, ValueType = string, HeaderKeyType = string, HeaderValueType = string>(opts: IKafkaConsumerOptions<KeyType, ValueType, HeaderKeyType, HeaderValueType>): Consumer<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
26
39
  getConsumer(): Consumer<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
27
40
  getStream(): MessagesStream<KeyType, ValueType, HeaderKeyType, HeaderValueType> | null;
28
41
  isReady(): boolean;
@@ -36,15 +49,38 @@ export declare class KafkaConsumerHelper<KeyType = string, ValueType = string, H
36
49
  close(opts?: {
37
50
  isForce?: boolean;
38
51
  }): Promise<void>;
39
- private startConsumeLoop;
40
- private consumeMessages;
41
- private drainStream;
42
- private attemptReconnect;
43
- private rebuildClient;
44
- private closeOldClient;
45
- private handleAllBrokersDown;
46
- private destroyDeadStream;
47
- private closeStream;
52
+ protected startConsumeLoop(opts: {
53
+ messageHandler: TKafkaMessageCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
54
+ doneHandler?: TKafkaMessageDoneCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
55
+ errorHandler?: TKafkaMessageErrorCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
56
+ reconnectDelayMs: number;
57
+ maxReconnectAttempts: number;
58
+ }): Promise<void>;
59
+ protected consumeMessages(opts: {
60
+ reconnectDelayMs: number;
61
+ maxReconnectAttempts: number;
62
+ errorHandler?: TKafkaMessageErrorCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
63
+ }): AsyncGenerator<import("@platformatic/kafka").Message<KeyType, ValueType, HeaderKeyType, HeaderValueType>, void, any>;
64
+ /** Silent only while the consume loop is alive AND the erroring stream is the one it drains - the iterator then reports the same error once. A dead or replaced stream, or pull mode, reports here. */
65
+ protected reportStreamError(opts: {
66
+ error: Error;
67
+ scope: string;
68
+ stream: unknown;
69
+ }): void;
70
+ protected drainStream(opts: {
71
+ errorHandler?: TKafkaMessageErrorCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
72
+ }): AsyncGenerator<import("@platformatic/kafka").Message<KeyType, ValueType, HeaderKeyType, HeaderValueType>, void, any>;
73
+ protected attemptReconnect(opts: {
74
+ attempt: number;
75
+ maxAttempts: number;
76
+ delayMs: number;
77
+ errorHandler?: TKafkaMessageErrorCallback<KeyType, ValueType, HeaderKeyType, HeaderValueType>;
78
+ }): Promise<void>;
79
+ protected rebuildClient(): Promise<void>;
80
+ protected closeOldClient(oldClient: Consumer<KeyType, ValueType, HeaderKeyType, HeaderValueType>): Promise<void>;
81
+ protected handleAllBrokersDown(reason: 'disconnected' | 'failed'): void;
82
+ protected destroyDeadStream(): void;
83
+ protected closeStream(): Promise<void>;
48
84
  protected unconfigureBrokerEvents(): void;
49
85
  protected configureBrokerEvents(): void;
50
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../../../../src/modules/queue/kafka/consumer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAKV,cAAc,EAEf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EAUtB,MAAM,gBAAgB,CAAC;AAExB,0JAA0J;AAC1J,qBAAa,mBAAmB,CAC9B,OAAO,GAAG,MAAM,EAChB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,MAAM,EACtB,eAAe,GAAG,MAAM,CACxB,SAAQ,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IACrF,OAAO,CAAC,MAAM,CAAmF;IACjG,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,mBAAmB,CAA0C;IACrE,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,oBAAoB,CAAwD;IACpF,OAAO,CAAC,kBAAkB,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAKzB;IACF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAK7B;IACF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAK9B;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAA2B;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAA+B;IACjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAA+B;IAEjE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAyB;IAErD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAK7B;gBAEU,IAAI,EAAE,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC;IA+B3F,MAAM,CAAC,WAAW,CAChB,OAAO,GAAG,MAAM,EAChB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,MAAM,EACtB,eAAe,GAAG,MAAM,EACxB,IAAI,EAAE,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC;IAIjF,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAoClC,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC;IAI3E,SAAS,IAAI,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,GAAG,IAAI;IAI7E,OAAO,IAAI,OAAO;IAIrB,KAAK,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C3D,kBAAkB,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAoBvE,iBAAiB,IAAI,IAAI;cAYN,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzC,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAqB1C,gBAAgB;YAiCf,eAAe;YAgDf,WAAW;YA4BZ,gBAAgB;YAgGhB,aAAa;YAoCb,cAAc;IA0B5B,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,iBAAiB;YAKX,WAAW;cAeN,uBAAuB,IAAI,IAAI;cAU/B,qBAAqB,IAAI,IAAI;CAoGjD"}
1
+ {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../../../../../src/modules/queue/kafka/consumer.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,11 @@ import { Consumer } from '@platformatic/kafka';
5
5
  import { invokeHook } from '../common/index.js';
6
6
  import { BaseKafkaHelper } from './base.js';
7
7
  import { KafkaClientEvents, KafkaDefaults, KafkaHealthStatuses } from './common/constants.js';
8
- /** Wrapper around `@platformatic/kafka` Consumer with lifecycle management, health tracking, graceful shutdown, message callbacks, and lag monitoring. */
8
+ /**
9
+ * Wrapper around `@platformatic/kafka` Consumer with lifecycle management, health tracking, graceful shutdown, message callbacks, and lag monitoring.
10
+ *
11
+ * Every member below is `protected`, not `private`, so a consumer extends this class instead of forking it. That visibility is not a stable contract between minor versions.
12
+ */
9
13
  export class KafkaConsumerHelper extends BaseKafkaHelper {
10
14
  constructor(opts) {
11
15
  super({
@@ -26,6 +30,8 @@ export class KafkaConsumerHelper extends BaseKafkaHelper {
26
30
  this.onMessage = opts.onMessage;
27
31
  this.onMessageDone = opts.onMessageDone;
28
32
  this.onMessageError = opts.onMessageError;
33
+ this.onStreamError = opts.onStreamError;
34
+ this.onReconnectError = opts.onReconnectError;
29
35
  this.onGroupJoin = opts.onGroupJoin;
30
36
  this.onGroupLeave = opts.onGroupLeave;
31
37
  this.onGroupRebalance = opts.onGroupRebalance;
@@ -38,6 +44,10 @@ export class KafkaConsumerHelper extends BaseKafkaHelper {
38
44
  static newInstance(opts) {
39
45
  return new KafkaConsumerHelper(opts);
40
46
  }
47
+ /** The instance seam every rebuild goes through; the constructor alone uses the static factory because no instance exists yet. Override this to hand a rebuilt consumer different options or a test double. */
48
+ buildClient(opts) {
49
+ return KafkaConsumerHelper.buildConsumerClient(opts.options);
50
+ }
41
51
  static buildConsumerClient(opts) {
42
52
  return new Consumer({
43
53
  clientId: opts.clientId,
@@ -89,22 +99,25 @@ export class KafkaConsumerHelper extends BaseKafkaHelper {
89
99
  // Successful consume() means we're freshly joined to the group; clear any stale-session flag set during initial broker negotiation (e.g. a transient BROKER_DISCONNECT during bootstrap).
90
100
  this.sessionLikelyStale = false;
91
101
  // Always attached, hook or not: a stream 'error' with ZERO listeners is rethrown by EventEmitter as an uncaught exception, so a pull-style consumer (start() + getStream(), no onMessage/onMessageError) would take the whole process down on the first broker drop.
92
- this.stream.on(KafkaClientEvents.STREAM_ERROR, (streamError) => {
102
+ const startedStream = this.stream;
103
+ startedStream.on(KafkaClientEvents.STREAM_ERROR, (streamError) => {
93
104
  this.logger.for('start').error('Kafka stream ERROR | Error: %s', streamError);
94
- invokeHook({
95
- logger: this.logger,
96
- scope: 'start',
97
- execution: () => this.onMessageError?.({ error: streamError }),
98
- });
105
+ this.reportStreamError({ error: streamError, scope: 'start', stream: startedStream });
99
106
  });
100
107
  if (this.onMessage) {
101
- this.consumeLoop = this.startConsumeLoop({
108
+ const loop = this.startConsumeLoop({
102
109
  messageHandler: this.onMessage,
103
110
  doneHandler: this.onMessageDone,
104
111
  errorHandler: this.onMessageError,
105
112
  reconnectDelayMs: opts.reconnectDelayMs ?? KafkaDefaults.RECONNECT_DELAY,
106
113
  maxReconnectAttempts: opts.maxReconnectAttempts ?? KafkaDefaults.MAX_RECONNECT_ATTEMPTS,
114
+ }).finally(() => {
115
+ // A finished loop (exhausted reconnects or shutdown) no longer reports stream errors; the listeners take over.
116
+ if (this.consumeLoop === loop) {
117
+ this.consumeLoop = null;
118
+ }
107
119
  });
120
+ this.consumeLoop = loop;
108
121
  }
109
122
  this.logger.info('[start] Consumer started | Topics: %j', opts.topics);
110
123
  }
@@ -203,6 +216,19 @@ export class KafkaConsumerHelper extends BaseKafkaHelper {
203
216
  }
204
217
  }
205
218
  }
219
+ /** Silent only while the consume loop is alive AND the erroring stream is the one it drains - the iterator then reports the same error once. A dead or replaced stream, or pull mode, reports here. */
220
+ reportStreamError(opts) {
221
+ if (this.consumeLoop && this.stream === opts.stream) {
222
+ return;
223
+ }
224
+ invokeHook({
225
+ logger: this.logger,
226
+ scope: opts.scope,
227
+ execution: () => this.onStreamError
228
+ ? this.onStreamError({ error: opts.error })
229
+ : this.onMessageError?.({ error: opts.error }),
230
+ });
231
+ }
206
232
  async *drainStream(opts) {
207
233
  this.logger.debug('[drainStream] Consuming | Topics: %j', this.consumeStartOptions?.topics);
208
234
  try {
@@ -215,7 +241,9 @@ export class KafkaConsumerHelper extends BaseKafkaHelper {
215
241
  invokeHook({
216
242
  logger: this.logger,
217
243
  scope: 'drainStream',
218
- execution: () => opts.errorHandler?.({ error: normalizedError }),
244
+ execution: () => this.onStreamError
245
+ ? this.onStreamError({ error: normalizedError })
246
+ : opts.errorHandler?.({ error: normalizedError }),
219
247
  });
220
248
  }
221
249
  this.destroyDeadStream();
@@ -242,7 +270,9 @@ export class KafkaConsumerHelper extends BaseKafkaHelper {
242
270
  invokeHook({
243
271
  logger: this.logger,
244
272
  scope: 'attemptReconnect',
245
- execution: () => errorHandler?.({ error: normalizedError }),
273
+ execution: () => this.onReconnectError
274
+ ? this.onReconnectError({ error: normalizedError, attempt, maxAttempts })
275
+ : errorHandler?.({ error: normalizedError }),
246
276
  });
247
277
  return;
248
278
  }
@@ -253,15 +283,16 @@ export class KafkaConsumerHelper extends BaseKafkaHelper {
253
283
  mode: this.consumeStartOptions.mode ?? KafkaDefaults.CONSUME_MODE,
254
284
  fallbackMode: this.consumeStartOptions.fallbackMode ?? KafkaDefaults.CONSUME_FALLBACK_MODE,
255
285
  });
256
- if (this.onMessageError) {
257
- this.stream.on(KafkaClientEvents.STREAM_ERROR, (normalizedError) => {
258
- invokeHook({
259
- logger: this.logger,
260
- scope: 'attemptReconnect',
261
- execution: () => this.onMessageError?.({ error: normalizedError }),
262
- });
286
+ // Always attached, hook or not, like the listener in start(): a stream 'error' with ZERO listeners is rethrown by EventEmitter and takes the process down.
287
+ const reconnectedStream = this.stream;
288
+ reconnectedStream.on(KafkaClientEvents.STREAM_ERROR, (streamError) => {
289
+ this.logger.for('attemptReconnect').error('Kafka stream ERROR | Error: %s', streamError);
290
+ this.reportStreamError({
291
+ error: streamError,
292
+ scope: 'attemptReconnect',
293
+ stream: reconnectedStream,
263
294
  });
264
- }
295
+ });
265
296
  this.sessionLikelyStale = false;
266
297
  this.logger.info('[attemptReconnect] Reconnected successfully | Topics: %j | Attempt: %d | Rebuilt: %s', this.consumeStartOptions.topics, attempt, shouldRebuildClient);
267
298
  }
@@ -271,7 +302,9 @@ export class KafkaConsumerHelper extends BaseKafkaHelper {
271
302
  invokeHook({
272
303
  logger: this.logger,
273
304
  scope: 'attemptReconnect',
274
- execution: () => errorHandler?.({ error: normalizedError }),
305
+ execution: () => this.onReconnectError
306
+ ? this.onReconnectError({ error: normalizedError, attempt, maxAttempts })
307
+ : errorHandler?.({ error: normalizedError }),
275
308
  });
276
309
  }
277
310
  }
@@ -279,7 +312,7 @@ export class KafkaConsumerHelper extends BaseKafkaHelper {
279
312
  this.logger.warn('[rebuildClient] All brokers were disconnected; rebuilding @platformatic/kafka ' +
280
313
  'Consumer to force a clean group rejoin (cached session state is stale)');
281
314
  const oldClient = this.client;
282
- const newClient = KafkaConsumerHelper.buildConsumerClient(this.initialOptions);
315
+ const newClient = this.buildClient({ options: this.initialOptions });
283
316
  this.swapClient(newClient);
284
317
  if (this.lagMonitoringOptions) {
285
318
  const opts = this.lagMonitoringOptions;