@epztickets/common 1.12.0 → 1.14.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.
- package/build/events/jetstream-listener.js +4 -37
- package/build/events/subjects.d.ts +2 -1
- package/build/events/subjects.js +22 -0
- package/build/nats/ensure-streams.d.ts +1 -1
- package/build/nats/ensure-streams.js +44 -16
- package/build/nats/ensure-workqueue-stream.d.ts +0 -0
- package/build/nats/ensure-workqueue-stream.js +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// src/events/jetstream-listener.ts
|
|
3
|
-
// import { JsMsg, JetStreamClient, consumerOpts } from "nats";
|
|
4
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -19,40 +17,6 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
|
19
17
|
};
|
|
20
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
19
|
exports.JetStreamListener = void 0;
|
|
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
|
-
// }
|
|
56
20
|
const nats_1 = require("nats");
|
|
57
21
|
class JetStreamListener {
|
|
58
22
|
constructor(js) {
|
|
@@ -65,8 +29,11 @@ class JetStreamListener {
|
|
|
65
29
|
opts.durable(this.durableName);
|
|
66
30
|
opts.manualAck();
|
|
67
31
|
opts.ackExplicit();
|
|
68
|
-
opts.
|
|
32
|
+
opts.deliverAll();
|
|
33
|
+
opts.maxDeliver(5);
|
|
34
|
+
opts.maxDeliver(5);
|
|
69
35
|
opts.filterSubject(this.subject);
|
|
36
|
+
opts.deliverTo(`${this.queueGroup}.${this.durableName}`);
|
|
70
37
|
const sub = yield this.js.subscribe(this.subject, opts);
|
|
71
38
|
console.log(`Listening for ${this.subject} with durable ${this.durableName}`);
|
|
72
39
|
try {
|
package/build/events/subjects.js
CHANGED
|
@@ -12,7 +12,29 @@ var Subjects;
|
|
|
12
12
|
Subjects["ExpirationComplete"] = "events.expiration.complete";
|
|
13
13
|
Subjects["PaymentCreated"] = "events.payment.created";
|
|
14
14
|
})(Subjects || (exports.Subjects = Subjects = {}));
|
|
15
|
+
// export enum Subjects {
|
|
16
|
+
// // Ticket
|
|
17
|
+
// TicketCreated = "events.ticket.created",
|
|
18
|
+
// TicketPriceUpdated = "events.ticket.price.updated",
|
|
19
|
+
// TicketOrderLinked = "events.ticket.order.linked",
|
|
20
|
+
// TicketOrderUnlinked = "events.ticket.order.unlinked",
|
|
21
|
+
// // Reservation
|
|
22
|
+
// ReservationCreated = "events.reservation.created",
|
|
23
|
+
// ReservationOrderLinked = "events.reservation.order.linked",
|
|
24
|
+
// ReservationOrderReleased = "events.reservation.order.released",
|
|
25
|
+
// ReservationCancelled = "events.reservation.cancelled",
|
|
26
|
+
// ReservationUpdated = "events.reservation.updated",
|
|
27
|
+
// // Order (orchestrator)
|
|
28
|
+
// OrderCreated = "events.order.created",
|
|
29
|
+
// OrderCancelled = "events.order.cancelled",
|
|
30
|
+
// OrderCompleted = "events.order.completed",
|
|
31
|
+
// // Expiration
|
|
32
|
+
// ExpirationComplete = "events.expiration.complete",
|
|
33
|
+
// // Payment
|
|
34
|
+
// PaymentCreated = "events.payment.created",
|
|
35
|
+
// }
|
|
15
36
|
var Streams;
|
|
16
37
|
(function (Streams) {
|
|
17
38
|
Streams["Events"] = "events";
|
|
39
|
+
Streams["Jobs"] = "jobs";
|
|
18
40
|
})(Streams || (exports.Streams = Streams = {}));
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { JetStreamManager } from "nats";
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function ensureStreams(jsm: JetStreamManager): Promise<void>;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// import { JetStreamManager, RetentionPolicy, StorageType, DiscardPolicy } from "nats";
|
|
3
|
+
// import { Streams } from "../events/subjects";
|
|
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) {
|
|
@@ -9,25 +11,51 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
11
|
});
|
|
10
12
|
};
|
|
11
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
14
|
+
exports.ensureStreams = ensureStreams;
|
|
15
|
+
// export async function ensureEventStream(jsm: JetStreamManager) {
|
|
16
|
+
// const streams = await jsm.streams.list().next();
|
|
17
|
+
// const exists = streams.some(s => s.config.name === Streams.Events);
|
|
18
|
+
// if (exists) {
|
|
19
|
+
// console.log("Stream already exists:", Streams.Events);
|
|
20
|
+
// return};
|
|
21
|
+
// await jsm.streams.add({
|
|
22
|
+
// name: Streams.Events,
|
|
23
|
+
// subjects: ["events.>"],
|
|
24
|
+
// // retention: RetentionPolicy.Workqueue, // consumer needs to be unique
|
|
25
|
+
// retention: RetentionPolicy.Limits, // fan-out to multiple services
|
|
26
|
+
// storage: StorageType.File,
|
|
27
|
+
// discard: DiscardPolicy.Old,
|
|
28
|
+
// max_age: 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
29
|
+
// });
|
|
30
|
+
// }
|
|
13
31
|
const nats_1 = require("nats");
|
|
14
32
|
const subjects_1 = require("../events/subjects");
|
|
15
|
-
function
|
|
33
|
+
function ensureStreams(jsm) {
|
|
16
34
|
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
35
|
+
const existing = yield jsm.streams.list().next();
|
|
36
|
+
const has = (name) => existing.some(s => s.config.name === name);
|
|
37
|
+
/* ---------------- EVENTS STREAM ---------------- */
|
|
38
|
+
if (!has(subjects_1.Streams.Events)) {
|
|
39
|
+
yield jsm.streams.add({
|
|
40
|
+
name: subjects_1.Streams.Events,
|
|
41
|
+
subjects: ["events.>"],
|
|
42
|
+
retention: nats_1.RetentionPolicy.Limits, // FAN-OUT
|
|
43
|
+
storage: nats_1.StorageType.File,
|
|
44
|
+
discard: nats_1.DiscardPolicy.Old,
|
|
45
|
+
max_age: 7 * 24 * 60 * 60 * 1000,
|
|
46
|
+
});
|
|
47
|
+
console.log("Created stream:", subjects_1.Streams.Events);
|
|
48
|
+
}
|
|
49
|
+
/* ---------------- JOBS STREAM ---------------- */
|
|
50
|
+
if (!has(subjects_1.Streams.Jobs)) {
|
|
51
|
+
yield jsm.streams.add({
|
|
52
|
+
name: subjects_1.Streams.Jobs,
|
|
53
|
+
subjects: ["jobs.>"],
|
|
54
|
+
retention: nats_1.RetentionPolicy.Workqueue, // EXACTLY-ONCE
|
|
55
|
+
storage: nats_1.StorageType.File,
|
|
56
|
+
discard: nats_1.DiscardPolicy.Old,
|
|
57
|
+
});
|
|
58
|
+
console.log("Created stream:", subjects_1.Streams.Jobs);
|
|
22
59
|
}
|
|
23
|
-
;
|
|
24
|
-
yield jsm.streams.add({
|
|
25
|
-
name: subjects_1.Streams.Events,
|
|
26
|
-
subjects: ["events.>"],
|
|
27
|
-
retention: nats_1.RetentionPolicy.Workqueue,
|
|
28
|
-
storage: nats_1.StorageType.File,
|
|
29
|
-
discard: nats_1.DiscardPolicy.Old,
|
|
30
|
-
max_age: 7 * 24 * 60 * 60 * 1000, // 7 days
|
|
31
|
-
});
|
|
32
60
|
});
|
|
33
61
|
}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|