@epztickets/common 1.8.0 → 1.9.0

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,16 +1,16 @@
1
- import { JsMsg, JetStreamClient } from "nats";
1
+ import { JetStreamClient, JsMsg } from "nats";
2
+ import { Subjects } from "./subjects";
2
3
  interface Event {
3
- subject: string;
4
+ subject: Subjects;
4
5
  data: any;
5
6
  }
6
7
  export declare abstract class JetStreamListener<T extends Event> {
7
8
  abstract subject: T["subject"];
8
9
  abstract durableName: string;
9
- abstract streamName: string;
10
- protected ackWait: number;
10
+ abstract queueGroup: string;
11
11
  protected js: JetStreamClient;
12
12
  constructor(js: JetStreamClient);
13
- abstract onMessage(data: T["data"], msg: JsMsg): void | Promise<void>;
14
13
  listen(): Promise<void>;
14
+ abstract onMessage(data: T["data"], msg: JsMsg): void;
15
15
  }
16
16
  export {};
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
+ // src/events/jetstream-listener.ts
3
+ // import { JsMsg, JetStreamClient, consumerOpts } from "nats";
2
4
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
5
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
6
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -17,46 +19,77 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
17
19
  };
18
20
  Object.defineProperty(exports, "__esModule", { value: true });
19
21
  exports.JetStreamListener = void 0;
20
- // src/events/jetstream-listener.ts
22
+ // interface Event {
23
+ // subject: string;
24
+ // data: any;
25
+ // }
26
+ // export abstract class JetStreamListener<T extends Event> {
27
+ // abstract subject: T["subject"];
28
+ // abstract durableName: string;
29
+ // abstract streamName: string; // The JetStream stream
30
+ // protected ackWait = 5 * 1000;
31
+ // protected js: JetStreamClient;
32
+ // constructor(js: JetStreamClient) {
33
+ // this.js = js;
34
+ // }
35
+ // abstract onMessage(data: T["data"], msg: JsMsg): void | Promise<void>;
36
+ // async listen() {
37
+ // const opts = consumerOpts();
38
+ // opts.durable(this.durableName);
39
+ // opts.manualAck();
40
+ // opts.ackWait(this.ackWait);
41
+ // opts.deliverAll();
42
+ // const sub = await this.js.subscribe(this.subject, opts);
43
+ // console.log(`Listening for JetStream messages on subject: ${this.subject}`);
44
+ // (async () => {
45
+ // for await (const msg of sub) {
46
+ // try {
47
+ // const parsedData = JSON.parse(msg.data.toString());
48
+ // await this.onMessage(parsedData, msg);
49
+ // } catch (err) {
50
+ // console.error("Error handling JetStream message:", err);
51
+ // }
52
+ // }
53
+ // })();
54
+ // }
55
+ // }
21
56
  const nats_1 = require("nats");
22
57
  class JetStreamListener {
23
58
  constructor(js) {
24
- this.ackWait = 5 * 1000;
25
59
  this.js = js;
26
60
  }
27
61
  listen() {
28
62
  return __awaiter(this, void 0, void 0, function* () {
63
+ var _a, e_1, _b, _c;
29
64
  const opts = (0, nats_1.consumerOpts)();
30
65
  opts.durable(this.durableName);
31
66
  opts.manualAck();
32
- opts.ackWait(this.ackWait);
33
- opts.deliverAll();
67
+ opts.ackExplicit();
68
+ opts.deliverTo(`${this.queueGroup}.${this.durableName}`); // optional but safe
69
+ opts.filterSubject(this.subject);
34
70
  const sub = yield this.js.subscribe(this.subject, opts);
35
- console.log(`Listening for JetStream messages on subject: ${this.subject}`);
36
- (() => __awaiter(this, void 0, void 0, function* () {
37
- var _a, e_1, _b, _c;
38
- try {
39
- for (var _d = true, sub_1 = __asyncValues(sub), sub_1_1; sub_1_1 = yield sub_1.next(), _a = sub_1_1.done, !_a; _d = true) {
40
- _c = sub_1_1.value;
41
- _d = false;
42
- const msg = _c;
43
- try {
44
- const parsedData = JSON.parse(msg.data.toString());
45
- yield this.onMessage(parsedData, msg);
46
- }
47
- catch (err) {
48
- console.error("Error handling JetStream message:", err);
49
- }
50
- }
51
- }
52
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
53
- finally {
71
+ console.log(`Listening for ${this.subject} with durable ${this.durableName}`);
72
+ try {
73
+ for (var _d = true, sub_1 = __asyncValues(sub), sub_1_1; sub_1_1 = yield sub_1.next(), _a = sub_1_1.done, !_a; _d = true) {
74
+ _c = sub_1_1.value;
75
+ _d = false;
76
+ const msg = _c;
54
77
  try {
55
- if (!_d && !_a && (_b = sub_1.return)) yield _b.call(sub_1);
78
+ const data = JSON.parse(msg.data.toString());
79
+ yield this.onMessage(data, msg);
80
+ }
81
+ catch (err) {
82
+ console.error("Listener error", err);
56
83
  }
57
- finally { if (e_1) throw e_1.error; }
58
84
  }
59
- }))();
85
+ }
86
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
87
+ finally {
88
+ try {
89
+ if (!_d && !_a && (_b = sub_1.return)) yield _b.call(sub_1);
90
+ }
91
+ finally { if (e_1) throw e_1.error; }
92
+ }
60
93
  });
61
94
  }
62
95
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epztickets/common",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "main": "./build/index.js",
5
5
  "types": "./build/index.d.ts",
6
6
  "files": [