@konplit-services/common 1.0.91 → 1.0.98
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/base-events/base-events.listener.d.ts +11 -2
- package/build/events/base-events/base-events.listener.js +34 -1
- package/build/events/base-events/base-events.publisher.d.ts +11 -2
- package/build/events/base-events/base-events.publisher.js +29 -1
- package/build/events/index.d.ts +1 -0
- package/build/events/index.js +1 -0
- package/build/events/subjects.d.ts +4 -1
- package/build/events/subjects.js +4 -0
- package/build/events/wallets/interfaces/index.d.ts +3 -0
- package/build/events/wallets/interfaces/index.js +19 -0
- package/build/events/wallets/interfaces/wallet-created.interface.d.ts +11 -0
- package/build/events/wallets/interfaces/wallet-created.interface.js +2 -0
- package/build/events/wallets/interfaces/wallet-credited.interface.d.ts +12 -0
- package/build/events/wallets/interfaces/wallet-credited.interface.js +2 -0
- package/build/events/wallets/interfaces/wallet-debited.interface.d.ts +12 -0
- package/build/events/wallets/interfaces/wallet-debited.interface.js +2 -0
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module Listener
|
|
8
8
|
*/
|
|
9
|
-
import { JetStreamClient, JsMsg } from "nats";
|
|
9
|
+
import { JetStreamClient, JsMsg, NatsConnection, Msg } from "nats";
|
|
10
10
|
import { StreamEvent, StreamName } from "../subjects";
|
|
11
11
|
/**
|
|
12
12
|
* Event Interface
|
|
@@ -32,6 +32,7 @@ interface Event {
|
|
|
32
32
|
*/
|
|
33
33
|
export declare abstract class Listener<T extends Event> {
|
|
34
34
|
private client;
|
|
35
|
+
private nc?;
|
|
35
36
|
private jc;
|
|
36
37
|
/**
|
|
37
38
|
* The subject associated with the event.
|
|
@@ -65,12 +66,19 @@ export declare abstract class Listener<T extends Event> {
|
|
|
65
66
|
* @param {JsMsg} msg - The raw NATS message
|
|
66
67
|
*/
|
|
67
68
|
abstract onMessage(data: T["data"], msg: JsMsg): void;
|
|
69
|
+
/**
|
|
70
|
+
* Handles the incoming message.
|
|
71
|
+
* @abstract
|
|
72
|
+
* @param {T["data"]} data - The decoded data from the message
|
|
73
|
+
* @param {JsMsg} msg - The raw NATS message
|
|
74
|
+
*/
|
|
75
|
+
abstract onMessageResponse(data: T["data"], msg: Msg): any;
|
|
68
76
|
/**
|
|
69
77
|
* Constructor for the Listener class.
|
|
70
78
|
*
|
|
71
79
|
* @param {JetStreamClient} client - The NATS JetStream client
|
|
72
80
|
*/
|
|
73
|
-
constructor(client: JetStreamClient);
|
|
81
|
+
constructor(client: JetStreamClient, nc?: NatsConnection);
|
|
74
82
|
/**
|
|
75
83
|
* Sets up the listener by ensuring the stream and consumer exist,
|
|
76
84
|
* then starts consuming messages.
|
|
@@ -78,6 +86,7 @@ export declare abstract class Listener<T extends Event> {
|
|
|
78
86
|
* @returns {Promise<void>} - Resolves when the listener is set up and consuming messages
|
|
79
87
|
*/
|
|
80
88
|
listen(): Promise<void>;
|
|
89
|
+
listenForRequests(): Promise<void>;
|
|
81
90
|
/**
|
|
82
91
|
* Ensures the stream exists in the NATS JetStream.
|
|
83
92
|
* Creates the stream if it does not exist.
|
|
@@ -16,6 +16,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
16
16
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
17
17
|
});
|
|
18
18
|
};
|
|
19
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
20
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
21
|
+
var m = o[Symbol.asyncIterator], i;
|
|
22
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
23
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
24
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
25
|
+
};
|
|
19
26
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
27
|
exports.Listener = void 0;
|
|
21
28
|
const nats_1 = require("nats");
|
|
@@ -35,7 +42,7 @@ class Listener {
|
|
|
35
42
|
*
|
|
36
43
|
* @param {JetStreamClient} client - The NATS JetStream client
|
|
37
44
|
*/
|
|
38
|
-
constructor(client) {
|
|
45
|
+
constructor(client, nc) {
|
|
39
46
|
this.jc = (0, nats_1.JSONCodec)();
|
|
40
47
|
/**
|
|
41
48
|
* Acknowledgment wait time of 5 seconds before retrying.
|
|
@@ -43,6 +50,7 @@ class Listener {
|
|
|
43
50
|
*/
|
|
44
51
|
this.ackWait = (0, nats_1.nanos)(5 * 1000); // acknowledge time of 5 seconds before retry
|
|
45
52
|
this.client = client;
|
|
53
|
+
this.nc = nc;
|
|
46
54
|
}
|
|
47
55
|
/**
|
|
48
56
|
* Sets up the listener by ensuring the stream and consumer exist,
|
|
@@ -72,6 +80,31 @@ class Listener {
|
|
|
72
80
|
}
|
|
73
81
|
});
|
|
74
82
|
}
|
|
83
|
+
listenForRequests() {
|
|
84
|
+
var e_1, _a;
|
|
85
|
+
var _b;
|
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
const subscription = (_b = this.nc) === null || _b === void 0 ? void 0 : _b.subscribe(this.subject);
|
|
88
|
+
try {
|
|
89
|
+
for (var subscription_1 = __asyncValues(subscription), subscription_1_1; subscription_1_1 = yield subscription_1.next(), !subscription_1_1.done;) {
|
|
90
|
+
const msg = subscription_1_1.value;
|
|
91
|
+
// Decode the request data
|
|
92
|
+
const decodedRequest = this.jc.decode(msg.data);
|
|
93
|
+
console.log("Received Request:", decodedRequest);
|
|
94
|
+
const response = this.onMessageResponse(decodedRequest, msg);
|
|
95
|
+
// Send a reply back
|
|
96
|
+
msg.respond(this.jc.encode({ data: response }));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
100
|
+
finally {
|
|
101
|
+
try {
|
|
102
|
+
if (subscription_1_1 && !subscription_1_1.done && (_a = subscription_1.return)) yield _a.call(subscription_1);
|
|
103
|
+
}
|
|
104
|
+
finally { if (e_1) throw e_1.error; }
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
75
108
|
/**
|
|
76
109
|
* Ensures the stream exists in the NATS JetStream.
|
|
77
110
|
* Creates the stream if it does not exist.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module Publisher
|
|
8
8
|
*/
|
|
9
|
-
import { JetStreamClient } from "nats";
|
|
9
|
+
import { JetStreamClient, NatsConnection } from "nats";
|
|
10
10
|
import { StreamEvent, StreamName } from "../subjects";
|
|
11
11
|
/**
|
|
12
12
|
* Event Interface
|
|
@@ -32,6 +32,7 @@ interface Event {
|
|
|
32
32
|
*/
|
|
33
33
|
export declare abstract class Publisher<T extends Event> {
|
|
34
34
|
private client;
|
|
35
|
+
private nc?;
|
|
35
36
|
private jc;
|
|
36
37
|
/**
|
|
37
38
|
* The subject associated with the event.
|
|
@@ -53,7 +54,7 @@ export declare abstract class Publisher<T extends Event> {
|
|
|
53
54
|
*
|
|
54
55
|
* @param {JetStreamClient} client - The NATS JetStream client
|
|
55
56
|
*/
|
|
56
|
-
constructor(client: JetStreamClient);
|
|
57
|
+
constructor(client: JetStreamClient, nc?: NatsConnection);
|
|
57
58
|
/**
|
|
58
59
|
* Publishes data to the NATS JetStream.
|
|
59
60
|
*
|
|
@@ -61,6 +62,14 @@ export declare abstract class Publisher<T extends Event> {
|
|
|
61
62
|
* @returns {Promise<void>} - Resolves when the data is published successfully
|
|
62
63
|
*/
|
|
63
64
|
publish(data: T["data"]): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Sends a request to another service and waits for a reply.
|
|
67
|
+
*
|
|
68
|
+
* @param {T["data"]} data - The data to be sent in the request
|
|
69
|
+
* @param {number} timeout - The timeout duration to wait for a response
|
|
70
|
+
* @returns {Promise<any>} - Resolves with the reply data from the responding service
|
|
71
|
+
*/
|
|
72
|
+
request(data: T["data"], timeout?: number): Promise<any>;
|
|
64
73
|
/**
|
|
65
74
|
* Ensures the stream exists in the NATS JetStream.
|
|
66
75
|
* Creates the stream if it does not exist.
|
|
@@ -35,9 +35,10 @@ class Publisher {
|
|
|
35
35
|
*
|
|
36
36
|
* @param {JetStreamClient} client - The NATS JetStream client
|
|
37
37
|
*/
|
|
38
|
-
constructor(client) {
|
|
38
|
+
constructor(client, nc) {
|
|
39
39
|
this.jc = (0, nats_1.JSONCodec)();
|
|
40
40
|
this.client = client;
|
|
41
|
+
this.nc = nc;
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
43
44
|
* Publishes data to the NATS JetStream.
|
|
@@ -62,6 +63,33 @@ class Publisher {
|
|
|
62
63
|
}));
|
|
63
64
|
});
|
|
64
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Sends a request to another service and waits for a reply.
|
|
68
|
+
*
|
|
69
|
+
* @param {T["data"]} data - The data to be sent in the request
|
|
70
|
+
* @param {number} timeout - The timeout duration to wait for a response
|
|
71
|
+
* @returns {Promise<any>} - Resolves with the reply data from the responding service
|
|
72
|
+
*/
|
|
73
|
+
request(data, timeout = 1000) {
|
|
74
|
+
var _a;
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
try {
|
|
77
|
+
// Send request and wait for the response
|
|
78
|
+
const response = yield ((_a = this.nc) === null || _a === void 0 ? void 0 : _a.request(this.subject, this.jc.encode(data), { timeout } // Timeout for the response
|
|
79
|
+
));
|
|
80
|
+
if (!response) {
|
|
81
|
+
throw new Error("Failed to get Response");
|
|
82
|
+
}
|
|
83
|
+
const replyData = this.jc.decode(response.data);
|
|
84
|
+
console.log("Received Reply:", replyData);
|
|
85
|
+
return replyData;
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
console.error("Error sending request:", err);
|
|
89
|
+
throw err;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
65
93
|
/**
|
|
66
94
|
* Ensures the stream exists in the NATS JetStream.
|
|
67
95
|
* Creates the stream if it does not exist.
|
package/build/events/index.d.ts
CHANGED
package/build/events/index.js
CHANGED
|
@@ -18,5 +18,6 @@ __exportStar(require("./subjects"), exports);
|
|
|
18
18
|
__exportStar(require("./accounts-events/interfaces"), exports);
|
|
19
19
|
__exportStar(require("./logs-events/interfaces"), exports);
|
|
20
20
|
__exportStar(require("./notification-events/interfaces"), exports);
|
|
21
|
+
__exportStar(require("./wallets/interfaces"), exports);
|
|
21
22
|
__exportStar(require("./base-events"), exports);
|
|
22
23
|
__exportStar(require("./types"), exports);
|
|
@@ -22,5 +22,8 @@ export declare enum Subjects {
|
|
|
22
22
|
NotificationSmsCreated = "events.sms.created",
|
|
23
23
|
NotificationEmailCreated = "events.email.created",
|
|
24
24
|
UserRoleUpdated = "events.user.role.updated",
|
|
25
|
-
AdminLogCreated = "events.admin.log.created"
|
|
25
|
+
AdminLogCreated = "events.admin.log.created",
|
|
26
|
+
WalletCreated = "events.wallet.created",
|
|
27
|
+
WalletCredited = "events.wallet.credited",
|
|
28
|
+
WalletDebited = "events.wallet.debited"
|
|
26
29
|
}
|
package/build/events/subjects.js
CHANGED
|
@@ -36,4 +36,8 @@ var Subjects;
|
|
|
36
36
|
// Roles
|
|
37
37
|
Subjects["UserRoleUpdated"] = "events.user.role.updated";
|
|
38
38
|
Subjects["AdminLogCreated"] = "events.admin.log.created";
|
|
39
|
+
//Wallets
|
|
40
|
+
Subjects["WalletCreated"] = "events.wallet.created";
|
|
41
|
+
Subjects["WalletCredited"] = "events.wallet.credited";
|
|
42
|
+
Subjects["WalletDebited"] = "events.wallet.debited";
|
|
39
43
|
})(Subjects = exports.Subjects || (exports.Subjects = {}));
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./wallet-created.interface"), exports);
|
|
18
|
+
__exportStar(require("./wallet-credited.interface"), exports);
|
|
19
|
+
__exportStar(require("./wallet-debited.interface"), exports);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CURRENCY_TYPE } from "../../../helper";
|
|
2
|
+
import { StreamEvent, StreamName, Subjects } from "../../subjects";
|
|
3
|
+
export interface WalletCreatedEvent {
|
|
4
|
+
subject: Subjects.WalletCreated;
|
|
5
|
+
streamName: StreamName.name;
|
|
6
|
+
streamEvents: StreamEvent.Event;
|
|
7
|
+
data: {
|
|
8
|
+
merchantId: string;
|
|
9
|
+
currencyType?: CURRENCY_TYPE;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CURRENCY_TYPE } from "../../../helper";
|
|
2
|
+
import { StreamEvent, StreamName, Subjects } from "../../subjects";
|
|
3
|
+
export interface WalletCreditedEvent {
|
|
4
|
+
subject: Subjects.WalletCreated;
|
|
5
|
+
streamName: StreamName.name;
|
|
6
|
+
streamEvents: StreamEvent.Event;
|
|
7
|
+
data: {
|
|
8
|
+
merchantId: string;
|
|
9
|
+
amount: number;
|
|
10
|
+
currencyType?: CURRENCY_TYPE;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CURRENCY_TYPE } from "../../../helper";
|
|
2
|
+
import { StreamEvent, StreamName, Subjects } from "../../subjects";
|
|
3
|
+
export interface WalletDebitedEvent {
|
|
4
|
+
subject: Subjects.WalletDebited;
|
|
5
|
+
streamName: StreamName.name;
|
|
6
|
+
streamEvents: StreamEvent.Event;
|
|
7
|
+
data: {
|
|
8
|
+
merchantId: string;
|
|
9
|
+
amount: number;
|
|
10
|
+
currencyType?: CURRENCY_TYPE;
|
|
11
|
+
};
|
|
12
|
+
}
|