@itdigitalwing/aladdin-common 1.0.281 → 1.0.282
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/constants/eventConstants.d.ts +1 -0
- package/build/constants/eventConstants.js +11 -0
- package/build/constants/eventTracker.d.ts +2 -0
- package/build/constants/eventTracker.js +5 -0
- package/build/constants/location.d.ts +9 -0
- package/build/constants/location.js +11 -0
- package/build/constants/trackEvents.mixpanel.d.ts +137 -0
- package/build/constants/trackEvents.mixpanel.js +141 -0
- package/build/errors/bad-request-error.d.ts +10 -0
- package/build/errors/bad-request-error.js +21 -0
- package/build/errors/custom-error.d.ts +8 -0
- package/build/errors/custom-error.js +10 -0
- package/build/errors/database-connection-error.d.ts +9 -0
- package/build/errors/database-connection-error.js +19 -0
- package/build/errors/not-authorized-error.d.ts +8 -0
- package/build/errors/not-authorized-error.js +17 -0
- package/build/errors/not-found-error.d.ts +8 -0
- package/build/errors/not-found-error.js +17 -0
- package/build/errors/request-validation-error.d.ts +11 -0
- package/build/errors/request-validation-error.js +19 -0
- package/build/events/Group-member-migrate-event.d.ts +13 -0
- package/build/events/Group-member-migrate-event.js +2 -0
- package/build/events/Group-migrate-event.d.ts +17 -0
- package/build/events/Group-migrate-event.js +2 -0
- package/build/events/SameStaticCompanyToAuthorisedCompany.d.ts +5 -0
- package/build/events/SameStaticCompanyToAuthorisedCompany.js +2 -0
- package/build/events/add-experience-company-follow.d.ts +9 -0
- package/build/events/add-experience-company-follow.js +2 -0
- package/build/events/aki-test-event.d.ts +7 -0
- package/build/events/aki-test-event.js +2 -0
- package/build/events/base-listener-test.d.ts +18 -0
- package/build/events/base-listener-test.js +56 -0
- package/build/events/base-listener-v2.d.ts +21 -0
- package/build/events/base-listener-v2.js +121 -0
- package/build/events/base-listener.d.ts +18 -0
- package/build/events/base-listener.js +105 -0
- package/build/events/base-publisher-test.d.ts +16 -0
- package/build/events/base-publisher-test.js +39 -0
- package/build/events/base-publisher-v2.d.ts +15 -0
- package/build/events/base-publisher-v2.js +51 -0
- package/build/events/base-publisher.d.ts +15 -0
- package/build/events/base-publisher.js +66 -0
- package/build/events/bulkUser-deleted-event.d.ts +7 -0
- package/build/events/bulkUser-deleted-event.js +2 -0
- package/build/events/common-event.d.ts +4 -0
- package/build/events/common-event.js +2 -0
- package/build/events/companies-migrate-event.d.ts +15 -0
- package/build/events/companies-migrate-event.js +2 -0
- package/build/events/company-admin-created-event.d.ts +9 -0
- package/build/events/company-admin-created-event.js +2 -0
- package/build/events/company-admin-removed-event.d.ts +8 -0
- package/build/events/company-admin-removed-event.js +2 -0
- package/build/events/company-created-event.d.ts +13 -0
- package/build/events/company-created-event.js +2 -0
- package/build/events/company-data-created-event.d.ts +9 -0
- package/build/events/company-data-created-event.js +2 -0
- package/build/events/company-deleted-event.d.ts +7 -0
- package/build/events/company-deleted-event.js +2 -0
- package/build/events/company-employee-joined-event.d.ts +8 -0
- package/build/events/company-employee-joined-event.js +2 -0
- package/build/events/company-employee-removed-event.d.ts +8 -0
- package/build/events/company-employee-removed-event.js +2 -0
- package/build/events/company-updated-event.d.ts +9 -0
- package/build/events/company-updated-event.js +2 -0
- package/build/events/employee-added-event.d.ts +18 -0
- package/build/events/employee-added-event.js +3 -0
- package/build/events/employee-removed-event.d.ts +10 -0
- package/build/events/employee-removed-event.js +2 -0
- package/build/events/employee-updated-event.d.ts +19 -0
- package/build/events/employee-updated-event.js +2 -0
- package/build/events/employmentType-created-event.d.ts +11 -0
- package/build/events/employmentType-created-event.js +2 -0
- package/build/events/employmentType-deleted-event.d.ts +7 -0
- package/build/events/employmentType-deleted-event.js +2 -0
- package/build/events/entities.d.ts +37 -0
- package/build/events/entities.js +41 -0
- package/build/events/eventTypes.d.ts +8 -0
- package/build/events/eventTypes.js +12 -0
- package/build/events/group-created-event.d.ts +12 -0
- package/build/events/group-created-event.js +2 -0
- package/build/events/group-deleted-event.d.ts +8 -0
- package/build/events/group-deleted-event.js +2 -0
- package/build/events/group-member-joined-event.d.ts +8 -0
- package/build/events/group-member-joined-event.js +2 -0
- package/build/events/group-member-removed-event.d.ts +8 -0
- package/build/events/group-member-removed-event.js +2 -0
- package/build/events/group-updated-event.d.ts +10 -0
- package/build/events/group-updated-event.js +2 -0
- package/build/events/hashtag-created-event.d.ts +11 -0
- package/build/events/hashtag-created-event.js +2 -0
- package/build/events/hashtag-tagged.d.ts +14 -0
- package/build/events/hashtag-tagged.js +7 -0
- package/build/events/headline-updated-event.d.ts +8 -0
- package/build/events/headline-updated-event.js +2 -0
- package/build/events/industry-created-event.d.ts +17 -0
- package/build/events/industry-created-event.js +2 -0
- package/build/events/industry-deleted-event.d.ts +8 -0
- package/build/events/industry-deleted-event.js +2 -0
- package/build/events/industry-updated-event.d.ts +14 -0
- package/build/events/industry-updated-event.js +2 -0
- package/build/events/initiate-notification.d.ts +32 -0
- package/build/events/initiate-notification.js +2 -0
- package/build/events/initiate-notify-notification.d.ts +32 -0
- package/build/events/initiate-notify-notification.js +2 -0
- package/build/events/institution-alumni-created-event.d.ts +11 -0
- package/build/events/institution-alumni-created-event.js +2 -0
- package/build/events/institution-alumni-removed-event.d.ts +9 -0
- package/build/events/institution-alumni-removed-event.js +2 -0
- package/build/events/institution-alumni-updated-event.d.ts +12 -0
- package/build/events/institution-alumni-updated-event.js +2 -0
- package/build/events/institution-created-event.d.ts +17 -0
- package/build/events/institution-created-event.js +2 -0
- package/build/events/institution-deleted-event.d.ts +8 -0
- package/build/events/institution-deleted-event.js +2 -0
- package/build/events/institution-employee-added.d.ts +11 -0
- package/build/events/institution-employee-added.js +2 -0
- package/build/events/institution-employee-edited.d.ts +12 -0
- package/build/events/institution-employee-edited.js +2 -0
- package/build/events/institution-employee-removed.d.ts +9 -0
- package/build/events/institution-employee-removed.js +2 -0
- package/build/events/institution-migrate-event.d.ts +31 -0
- package/build/events/institution-migrate-event.js +2 -0
- package/build/events/institution-updated-event.d.ts +17 -0
- package/build/events/institution-updated-event.js +2 -0
- package/build/events/invite-contact-event.d.ts +9 -0
- package/build/events/invite-contact-event.js +2 -0
- package/build/events/job-created-event.d.ts +17 -0
- package/build/events/job-created-event.js +2 -0
- package/build/events/job-deleted-event.d.ts +7 -0
- package/build/events/job-deleted-event.js +2 -0
- package/build/events/job-updated-event.d.ts +14 -0
- package/build/events/job-updated-event.js +2 -0
- package/build/events/jobTitleData-created-event.d.ts +12 -0
- package/build/events/jobTitleData-created-event.js +2 -0
- package/build/events/jobTitleData-deleted-event.d.ts +7 -0
- package/build/events/jobTitleData-deleted-event.js +2 -0
- package/build/events/location-created-event.d.ts +11 -0
- package/build/events/location-created-event.js +2 -0
- package/build/events/location-deleted-event.d.ts +8 -0
- package/build/events/location-deleted-event.js +2 -0
- package/build/events/location-updated-event.d.ts +11 -0
- package/build/events/location-updated-event.js +2 -0
- package/build/events/messageData.d.ts +20 -0
- package/build/events/messageData.js +2 -0
- package/build/events/migrate-connections-to-chat-data.d.ts +9 -0
- package/build/events/migrate-connections-to-chat-data.js +2 -0
- package/build/events/migrate-connections-to-chat.d.ts +8 -0
- package/build/events/migrate-connections-to-chat.js +2 -0
- package/build/events/migrate-education-data.d.ts +11 -0
- package/build/events/migrate-education-data.js +2 -0
- package/build/events/migrate-messages.d.ts +9 -0
- package/build/events/migrate-messages.js +2 -0
- package/build/events/migrate-profile-image.d.ts +8 -0
- package/build/events/migrate-profile-image.js +2 -0
- package/build/events/migrate-user-event.d.ts +34 -0
- package/build/events/migrate-user-event.js +2 -0
- package/build/events/migrate-user-location-to-job.d.ts +8 -0
- package/build/events/migrate-user-location-to-job.js +2 -0
- package/build/events/migrate-user-to-chat.d.ts +8 -0
- package/build/events/migrate-user-to-chat.js +2 -0
- package/build/events/organizationEmployeeCreatedEvent.d.ts +9 -0
- package/build/events/organizationEmployeeCreatedEvent.js +2 -0
- package/build/events/parentTypes.d.ts +6 -0
- package/build/events/parentTypes.js +10 -0
- package/build/events/process-created-event.d.ts +12 -0
- package/build/events/process-created-event.js +2 -0
- package/build/events/process-updated-event.d.ts +12 -0
- package/build/events/process-updated-event.js +2 -0
- package/build/events/profile-image-update-event.d.ts +8 -0
- package/build/events/profile-image-update-event.js +2 -0
- package/build/events/profile-viewed-event.d.ts +9 -0
- package/build/events/profile-viewed-event.js +2 -0
- package/build/events/resume-deleted-event.d.ts +8 -0
- package/build/events/resume-deleted-event.js +2 -0
- package/build/events/resume-uploaded-event.d.ts +6 -0
- package/build/events/resume-uploaded-event.js +2 -0
- package/build/events/resumeData-to-job-service.d.ts +6 -0
- package/build/events/resumeData-to-job-service.js +2 -0
- package/build/events/scraping-start-event.d.ts +7 -0
- package/build/events/scraping-start-event.js +2 -0
- package/build/events/scraping-success-event.d.ts +11 -0
- package/build/events/scraping-success-event.js +2 -0
- package/build/events/segment-created-event.d.ts +10 -0
- package/build/events/segment-created-event.js +2 -0
- package/build/events/segment-updated-event.d.ts +10 -0
- package/build/events/segment-updated-event.js +2 -0
- package/build/events/service-created-event.d.ts +10 -0
- package/build/events/service-created-event.js +2 -0
- package/build/events/service-delete-event.d.ts +7 -0
- package/build/events/service-delete-event.js +2 -0
- package/build/events/service-updated-event.d.ts +9 -0
- package/build/events/service-updated-event.js +2 -0
- package/build/events/skill-created-event.d.ts +11 -0
- package/build/events/skill-created-event.js +2 -0
- package/build/events/skill-deleted-event.d.ts +7 -0
- package/build/events/skill-deleted-event.js +2 -0
- package/build/events/specialization-created-event.d.ts +10 -0
- package/build/events/specialization-created-event.js +2 -0
- package/build/events/specialization-updated-event.d.ts +10 -0
- package/build/events/specialization-updated-event.js +2 -0
- package/build/events/subjects.d.ts +103 -0
- package/build/events/subjects.js +107 -0
- package/build/events/thread-line-event.d.ts +16 -0
- package/build/events/thread-line-event.js +2 -0
- package/build/events/university-updated-event.d.ts +11 -0
- package/build/events/university-updated-event.js +2 -0
- package/build/events/user-badge-added-event.d.ts +8 -0
- package/build/events/user-badge-added-event.js +2 -0
- package/build/events/user-badge-deleted-event.d.ts +8 -0
- package/build/events/user-badge-deleted-event.js +2 -0
- package/build/events/user-connection-count-update-event.d.ts +8 -0
- package/build/events/user-connection-count-update-event.js +2 -0
- package/build/events/user-created-event.d.ts +12 -0
- package/build/events/user-created-event.js +2 -0
- package/build/events/user-deleted-event.d.ts +7 -0
- package/build/events/user-deleted-event.js +2 -0
- package/build/events/user-follow-event.d.ts +9 -0
- package/build/events/user-follow-event.js +2 -0
- package/build/events/user-follow-update-event .d.ts +10 -0
- package/build/events/user-follow-update-event .js +2 -0
- package/build/events/user-location-data-to-job-service.d.ts +7 -0
- package/build/events/user-location-data-to-job-service.js +2 -0
- package/build/events/user-reactivate-event.d.ts +8 -0
- package/build/events/user-reactivate-event.js +2 -0
- package/build/events/user-segment-created-event.d.ts +15 -0
- package/build/events/user-segment-created-event.js +2 -0
- package/build/events/user-skill-addded-event.d.ts +14 -0
- package/build/events/user-skill-addded-event.js +2 -0
- package/build/events/user-skill-removed-event.d.ts +12 -0
- package/build/events/user-skill-removed-event.js +2 -0
- package/build/events/user-unfollow-event.d.ts +9 -0
- package/build/events/user-unfollow-event.js +2 -0
- package/build/events/user-updated-event.d.ts +24 -0
- package/build/events/user-updated-event.js +2 -0
- package/build/events/userData-to-chat-service.d.ts +9 -0
- package/build/events/userData-to-chat-service.js +2 -0
- package/build/events/users-connected-event.d.ts +10 -0
- package/build/events/users-connected-event.js +2 -0
- package/build/events/users-disconnected-event.d.ts +8 -0
- package/build/events/users-disconnected-event.js +2 -0
- package/build/index.d.ts +122 -0
- package/build/index.js +140 -0
- package/build/middleware/current-user.d.ts +18 -0
- package/build/middleware/current-user.js +53 -0
- package/build/middleware/error-handler.d.ts +2 -0
- package/build/middleware/error-handler.js +15 -0
- package/build/middleware/require-auth.d.ts +2 -0
- package/build/middleware/require-auth.js +10 -0
- package/build/middleware/validate-request.d.ts +2 -0
- package/build/middleware/validate-request.js +13 -0
- package/build/services/eventTracking.d.ts +17 -0
- package/build/services/eventTracking.js +91 -0
- package/build/utils/get-location.d.ts +11 -0
- package/build/utils/get-location.js +338 -0
- package/package.json +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ListenerTest = void 0;
|
|
4
|
+
const eventTracking_1 = require("../services/eventTracking");
|
|
5
|
+
class ListenerTest {
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.ackWait = 5 * 1000;
|
|
8
|
+
this.client = client;
|
|
9
|
+
}
|
|
10
|
+
subscriptionOptions() {
|
|
11
|
+
return this.client
|
|
12
|
+
.subscriptionOptions()
|
|
13
|
+
.setDeliverAllAvailable()
|
|
14
|
+
.setManualAckMode(true)
|
|
15
|
+
.setAckWait(this.ackWait)
|
|
16
|
+
.setDurableName(this.queueGroupName);
|
|
17
|
+
}
|
|
18
|
+
listen() {
|
|
19
|
+
const subscription = this.client.subscribe(this.subject, this.queueGroupName, this.subscriptionOptions());
|
|
20
|
+
subscription.on("message", (msg) => {
|
|
21
|
+
var _a;
|
|
22
|
+
console.log(`Message received: ${this.subject} / ${this.queueGroupName}`);
|
|
23
|
+
const CURRENT_SERVICE = process.env.CURRENT_SERVICE;
|
|
24
|
+
if (!CURRENT_SERVICE) {
|
|
25
|
+
console.log("🚨🚨 CURRENT_SERVICE name is note added to the env.");
|
|
26
|
+
}
|
|
27
|
+
const { data, eventDetails } = this.parseMessage(msg);
|
|
28
|
+
if ((_a = eventDetails === null || eventDetails === void 0 ? void 0 : eventDetails.dependencyServicesArray) === null || _a === void 0 ? void 0 : _a.includes(CURRENT_SERVICE)) {
|
|
29
|
+
(0, eventTracking_1.updateEventListenArray)({
|
|
30
|
+
id: eventDetails === null || eventDetails === void 0 ? void 0 : eventDetails.id,
|
|
31
|
+
listenedService: CURRENT_SERVICE,
|
|
32
|
+
})
|
|
33
|
+
.then((result) => {
|
|
34
|
+
var _a;
|
|
35
|
+
console.log(JSON.stringify({ data, eventDetails, CURRENT_SERVICE, result }, null, 2));
|
|
36
|
+
if ((_a = eventDetails === null || eventDetails === void 0 ? void 0 : eventDetails.dependencyServicesArray) === null || _a === void 0 ? void 0 : _a.includes(CURRENT_SERVICE)) {
|
|
37
|
+
this.onMessage(data, msg);
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
.catch((error) => {
|
|
41
|
+
console.log(error);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
msg.ack();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
parseMessage(msg) {
|
|
50
|
+
const data = msg.getData();
|
|
51
|
+
return typeof data === "string"
|
|
52
|
+
? JSON.parse(data)
|
|
53
|
+
: JSON.parse(data.toString("utf8"));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.ListenerTest = ListenerTest;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Kafka, Consumer, EachMessagePayload } from "kafkajs";
|
|
2
|
+
import { Subjects } from "./subjects";
|
|
3
|
+
interface Event {
|
|
4
|
+
subject: Subjects;
|
|
5
|
+
data: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class ListenerV2<T extends Event> {
|
|
8
|
+
abstract subject: T["subject"];
|
|
9
|
+
abstract queueGroupName: string;
|
|
10
|
+
abstract onMessage(data: T["data"], msg: EachMessagePayload, consumer: Consumer): void;
|
|
11
|
+
private consumer;
|
|
12
|
+
protected ackWait: number;
|
|
13
|
+
private client;
|
|
14
|
+
private CURRENT_SERVICE;
|
|
15
|
+
constructor(client: Kafka);
|
|
16
|
+
private setupConsumer;
|
|
17
|
+
listen(): void;
|
|
18
|
+
parseMessage(message: EachMessagePayload["message"]): any;
|
|
19
|
+
ack(consumer: Consumer, msg: EachMessagePayload): void;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ListenerV2 = void 0;
|
|
13
|
+
const eventTracking_1 = require("../services/eventTracking");
|
|
14
|
+
class ListenerV2 {
|
|
15
|
+
constructor(client) {
|
|
16
|
+
this.ackWait = 5 * 1000;
|
|
17
|
+
this.CURRENT_SERVICE = process.env.CURRENT_SERVICE;
|
|
18
|
+
this.client = client; // Save the Kafka client
|
|
19
|
+
}
|
|
20
|
+
// Method to initialize the consumer with the correct groupId and connect it
|
|
21
|
+
setupConsumer() {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
try {
|
|
24
|
+
// Initialize the consumer with the queueGroupName
|
|
25
|
+
this.consumer = this.client.consumer({
|
|
26
|
+
groupId: this.queueGroupName,
|
|
27
|
+
retry: {
|
|
28
|
+
retries: 10,
|
|
29
|
+
initialRetryTime: 300,
|
|
30
|
+
maxRetryTime: 5000,
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
// Connect and subscribe the consumer
|
|
34
|
+
yield this.consumer.connect();
|
|
35
|
+
yield this.consumer.subscribe({
|
|
36
|
+
topic: this.subject.replace(":", "-"),
|
|
37
|
+
fromBeginning: true,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
// this.listen();
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
// Listen method adapted for Kafka
|
|
47
|
+
listen() {
|
|
48
|
+
this.setupConsumer()
|
|
49
|
+
.then(() => {
|
|
50
|
+
if (!this.consumer) {
|
|
51
|
+
throw new Error("Consumer is not initialized");
|
|
52
|
+
}
|
|
53
|
+
this.consumer.run({
|
|
54
|
+
autoCommit: false,
|
|
55
|
+
eachMessage: (payload) => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
var _a, _b;
|
|
57
|
+
try {
|
|
58
|
+
const { topic } = payload;
|
|
59
|
+
console.log(`Message received: ${topic} / ${this.queueGroupName}`);
|
|
60
|
+
const { data, eventDetails } = this.parseMessage(payload.message);
|
|
61
|
+
// event tracker
|
|
62
|
+
if ((_a = eventDetails === null || eventDetails === void 0 ? void 0 : eventDetails.dependencyServicesArray) === null || _a === void 0 ? void 0 : _a.includes(this.CURRENT_SERVICE)) {
|
|
63
|
+
yield (0, eventTracking_1.updateEventListenArray)({
|
|
64
|
+
id: eventDetails === null || eventDetails === void 0 ? void 0 : eventDetails.id,
|
|
65
|
+
listenedService: this.CURRENT_SERVICE,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (!this.consumer) {
|
|
69
|
+
//
|
|
70
|
+
throw new Error("Consumer is not initialized");
|
|
71
|
+
}
|
|
72
|
+
// call onMessage function if service exist in dependencyServicesArray
|
|
73
|
+
if ((_b = eventDetails === null || eventDetails === void 0 ? void 0 : eventDetails.dependencyServicesArray) === null || _b === void 0 ? void 0 : _b.includes(this.CURRENT_SERVICE))
|
|
74
|
+
this.onMessage(data, payload, this.consumer);
|
|
75
|
+
else {
|
|
76
|
+
this.consumer.commitOffsets([
|
|
77
|
+
{
|
|
78
|
+
topic: payload.topic,
|
|
79
|
+
offset: (parseInt(payload.message.offset) + 1).toString(),
|
|
80
|
+
partition: payload.partition,
|
|
81
|
+
},
|
|
82
|
+
]);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.log("eachMessage ===>", error);
|
|
87
|
+
}
|
|
88
|
+
}),
|
|
89
|
+
});
|
|
90
|
+
})
|
|
91
|
+
.catch((err) => console.error("Error during listener setup:", err));
|
|
92
|
+
}
|
|
93
|
+
// Parse the Kafka message
|
|
94
|
+
parseMessage(message) {
|
|
95
|
+
var _a;
|
|
96
|
+
const data = (_a = message.value) === null || _a === void 0 ? void 0 : _a.toString();
|
|
97
|
+
try {
|
|
98
|
+
return data ? JSON.parse(data) : {};
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error("Error parsing message:", error);
|
|
102
|
+
return {}; // Return an empty object or handle accordingly
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
ack(consumer, msg) {
|
|
106
|
+
try {
|
|
107
|
+
consumer.commitOffsets([
|
|
108
|
+
{
|
|
109
|
+
topic: msg.topic,
|
|
110
|
+
offset: (parseInt(msg.message.offset) + 1).toString(),
|
|
111
|
+
partition: msg.partition,
|
|
112
|
+
},
|
|
113
|
+
]);
|
|
114
|
+
console.log(`✅ Message acknowledged for topic ${msg.topic}, partition ${msg.partition}, offset ${msg.message.offset}`);
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
console.error("Error committing offsets:", err);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.ListenerV2 = ListenerV2;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Message, Stan } from "node-nats-streaming";
|
|
2
|
+
import { Subjects } from "./subjects";
|
|
3
|
+
interface Event {
|
|
4
|
+
subject: Subjects;
|
|
5
|
+
data: any;
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class Listener<T extends Event> {
|
|
8
|
+
abstract subject: T["subject"];
|
|
9
|
+
abstract queueGroupName: string;
|
|
10
|
+
abstract onMessage(data: T["data"], msg: Message): void;
|
|
11
|
+
private client;
|
|
12
|
+
protected ackWait: number;
|
|
13
|
+
constructor(client: Stan);
|
|
14
|
+
subscriptionOptions(): import("node-nats-streaming").SubscriptionOptions;
|
|
15
|
+
listen(): void;
|
|
16
|
+
parseMessage(msg: Message): any;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Listener = void 0;
|
|
4
|
+
const eventTracking_1 = require("../services/eventTracking");
|
|
5
|
+
class Listener {
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.ackWait = 5 * 1000;
|
|
8
|
+
this.client = client;
|
|
9
|
+
}
|
|
10
|
+
subscriptionOptions() {
|
|
11
|
+
return this.client
|
|
12
|
+
.subscriptionOptions()
|
|
13
|
+
.setDeliverAllAvailable()
|
|
14
|
+
.setManualAckMode(true)
|
|
15
|
+
.setAckWait(this.ackWait)
|
|
16
|
+
.setDurableName(this.queueGroupName);
|
|
17
|
+
}
|
|
18
|
+
listen() {
|
|
19
|
+
const subscription = this.client.subscribe(this.subject, this.queueGroupName, this.subscriptionOptions());
|
|
20
|
+
subscription.on("message", (msg) => {
|
|
21
|
+
var _a;
|
|
22
|
+
console.log(`Message received: ${this.subject} / ${this.queueGroupName}`);
|
|
23
|
+
const CURRENT_SERVICE = process.env.CURRENT_SERVICE;
|
|
24
|
+
if (!CURRENT_SERVICE) {
|
|
25
|
+
console.log("🚨🚨 CURRENT_SERVICE name is note added to the env.");
|
|
26
|
+
}
|
|
27
|
+
const { data, eventDetails } = this.parseMessage(msg);
|
|
28
|
+
if ((_a = eventDetails === null || eventDetails === void 0 ? void 0 : eventDetails.dependencyServicesArray) === null || _a === void 0 ? void 0 : _a.includes(CURRENT_SERVICE)) {
|
|
29
|
+
(0, eventTracking_1.updateEventListenArray)({
|
|
30
|
+
id: eventDetails === null || eventDetails === void 0 ? void 0 : eventDetails.id,
|
|
31
|
+
listenedService: CURRENT_SERVICE,
|
|
32
|
+
})
|
|
33
|
+
.then((result) => {
|
|
34
|
+
// console.log(
|
|
35
|
+
// JSON.stringify(
|
|
36
|
+
// { data, eventDetails, CURRENT_SERVICE, result },
|
|
37
|
+
// null,
|
|
38
|
+
// 2
|
|
39
|
+
// )
|
|
40
|
+
// );
|
|
41
|
+
var _a;
|
|
42
|
+
if ((_a = eventDetails === null || eventDetails === void 0 ? void 0 : eventDetails.dependencyServicesArray) === null || _a === void 0 ? void 0 : _a.includes(CURRENT_SERVICE)) {
|
|
43
|
+
this.onMessage(data, msg);
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
.catch((error) => {
|
|
47
|
+
console.log(error);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
msg.ack();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
parseMessage(msg) {
|
|
56
|
+
const data = msg.getData();
|
|
57
|
+
return typeof data === "string"
|
|
58
|
+
? JSON.parse(data)
|
|
59
|
+
: JSON.parse(data.toString("utf8"));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.Listener = Listener;
|
|
63
|
+
// previous without event management
|
|
64
|
+
// import { Message, Stan } from "node-nats-streaming";
|
|
65
|
+
// import { Subjects } from "./subjects";
|
|
66
|
+
// interface Event {
|
|
67
|
+
// subject: Subjects;
|
|
68
|
+
// data: any;
|
|
69
|
+
// }
|
|
70
|
+
// export abstract class Listener<T extends Event> {
|
|
71
|
+
// abstract subject: T["subject"];
|
|
72
|
+
// abstract queueGroupName: string;
|
|
73
|
+
// abstract onMessage(data: T["data"], msg: Message): void;
|
|
74
|
+
// private client: Stan;
|
|
75
|
+
// protected ackWait = 5 * 1000;
|
|
76
|
+
// constructor(client: Stan) {
|
|
77
|
+
// this.client = client;
|
|
78
|
+
// }
|
|
79
|
+
// subscriptionOptions() {
|
|
80
|
+
// return this.client
|
|
81
|
+
// .subscriptionOptions()
|
|
82
|
+
// .setDeliverAllAvailable()
|
|
83
|
+
// .setManualAckMode(true)
|
|
84
|
+
// .setAckWait(this.ackWait)
|
|
85
|
+
// .setDurableName(this.queueGroupName);
|
|
86
|
+
// }
|
|
87
|
+
// listen() {
|
|
88
|
+
// const subscription = this.client.subscribe(
|
|
89
|
+
// this.subject,
|
|
90
|
+
// this.queueGroupName,
|
|
91
|
+
// this.subscriptionOptions()
|
|
92
|
+
// );
|
|
93
|
+
// subscription.on("message", (msg: Message) => {
|
|
94
|
+
// console.log(`Message received: ${this.subject} / ${this.queueGroupName}`);
|
|
95
|
+
// const parsedData = this.parseMessage(msg);
|
|
96
|
+
// this.onMessage(parsedData, msg);
|
|
97
|
+
// });
|
|
98
|
+
// }
|
|
99
|
+
// parseMessage(msg: Message) {
|
|
100
|
+
// const data = msg.getData();
|
|
101
|
+
// return typeof data === "string"
|
|
102
|
+
// ? JSON.parse(data)
|
|
103
|
+
// : JSON.parse(data.toString("utf8"));
|
|
104
|
+
// }
|
|
105
|
+
// }
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Stan } from "node-nats-streaming";
|
|
2
|
+
import { Subjects } from "./subjects";
|
|
3
|
+
import { PUBLISHER_SERVICE_TYPE } from "./eventTypes";
|
|
4
|
+
interface Event {
|
|
5
|
+
subject: Subjects;
|
|
6
|
+
data: any;
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class PublisherTest<T extends Event> {
|
|
9
|
+
abstract subject: T["subject"];
|
|
10
|
+
abstract dependencyServicesArray: PUBLISHER_SERVICE_TYPE[];
|
|
11
|
+
private client;
|
|
12
|
+
private CURRENT_SERVICE;
|
|
13
|
+
constructor(client: Stan);
|
|
14
|
+
publish(data: T["data"]): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PublisherTest = void 0;
|
|
4
|
+
const eventTracking_1 = require("../services/eventTracking");
|
|
5
|
+
class PublisherTest {
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.CURRENT_SERVICE = process.env.CURRENT_SERVICE;
|
|
8
|
+
this.client = client;
|
|
9
|
+
}
|
|
10
|
+
publish(data) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
(0, eventTracking_1.insertEventToCollection)({
|
|
13
|
+
data,
|
|
14
|
+
subject: this.subject,
|
|
15
|
+
dependencyServicesArray: this.dependencyServicesArray,
|
|
16
|
+
publisherService: process.env.CURRENT_SERVICE,
|
|
17
|
+
})
|
|
18
|
+
.then(({ insertedId }) => {
|
|
19
|
+
this.client.publish(this.subject, JSON.stringify({
|
|
20
|
+
data,
|
|
21
|
+
eventDetails: {
|
|
22
|
+
dependencyServicesArray: this.dependencyServicesArray.filter((item) => item !== this.CURRENT_SERVICE),
|
|
23
|
+
id: insertedId,
|
|
24
|
+
},
|
|
25
|
+
}), (err) => {
|
|
26
|
+
if (err) {
|
|
27
|
+
return reject(err);
|
|
28
|
+
}
|
|
29
|
+
console.log("Event published to subject", this.subject);
|
|
30
|
+
resolve();
|
|
31
|
+
});
|
|
32
|
+
})
|
|
33
|
+
.catch((error) => {
|
|
34
|
+
reject(error);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.PublisherTest = PublisherTest;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Producer } from "kafkajs";
|
|
2
|
+
import { Subjects } from "./subjects";
|
|
3
|
+
import { PUBLISHER_SERVICE_TYPE } from "./eventTypes";
|
|
4
|
+
interface Event {
|
|
5
|
+
subject: Subjects;
|
|
6
|
+
data: any;
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class PublisherV2<T extends Event> {
|
|
9
|
+
abstract subject: T["subject"];
|
|
10
|
+
abstract dependencyServicesArray: PUBLISHER_SERVICE_TYPE[];
|
|
11
|
+
private producer;
|
|
12
|
+
constructor(producer: Producer);
|
|
13
|
+
publish(data: T["data"]): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PublisherV2 = void 0;
|
|
13
|
+
const eventTracking_1 = require("../services/eventTracking");
|
|
14
|
+
class PublisherV2 {
|
|
15
|
+
// Inject the producer
|
|
16
|
+
constructor(producer) {
|
|
17
|
+
this.producer = producer;
|
|
18
|
+
}
|
|
19
|
+
// Publish method adapted for Kafka
|
|
20
|
+
publish(data) {
|
|
21
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
try {
|
|
23
|
+
const { insertedId } = yield (0, eventTracking_1.insertEventToCollection)({
|
|
24
|
+
data,
|
|
25
|
+
subject: this.subject,
|
|
26
|
+
dependencyServicesArray: this.dependencyServicesArray,
|
|
27
|
+
publisherService: process.env.CURRENT_SERVICE,
|
|
28
|
+
});
|
|
29
|
+
const dataToPublish = JSON.stringify({
|
|
30
|
+
data,
|
|
31
|
+
eventDetails: {
|
|
32
|
+
dependencyServicesArray: this.dependencyServicesArray,
|
|
33
|
+
id: insertedId,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
yield this.producer.send({
|
|
37
|
+
topic: this.subject.replace(":", "-"),
|
|
38
|
+
messages: [{ value: dataToPublish }],
|
|
39
|
+
acks: -1,
|
|
40
|
+
});
|
|
41
|
+
console.log("Event published to subject", this.subject);
|
|
42
|
+
resolve();
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
console.error("Error publishing event:", err);
|
|
46
|
+
reject(err);
|
|
47
|
+
}
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.PublisherV2 = PublisherV2;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Stan } from "node-nats-streaming";
|
|
2
|
+
import { Subjects } from "./subjects";
|
|
3
|
+
import { PUBLISHER_SERVICE_TYPE } from "./eventTypes";
|
|
4
|
+
interface Event {
|
|
5
|
+
subject: Subjects;
|
|
6
|
+
data: any;
|
|
7
|
+
}
|
|
8
|
+
export declare abstract class Publisher<T extends Event> {
|
|
9
|
+
abstract subject: T["subject"];
|
|
10
|
+
abstract dependencyServicesArray: PUBLISHER_SERVICE_TYPE[];
|
|
11
|
+
private client;
|
|
12
|
+
constructor(client: Stan);
|
|
13
|
+
publish(data: T["data"]): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Publisher = void 0;
|
|
4
|
+
const eventTracking_1 = require("../services/eventTracking");
|
|
5
|
+
class Publisher {
|
|
6
|
+
constructor(client) {
|
|
7
|
+
this.client = client;
|
|
8
|
+
}
|
|
9
|
+
publish(data) {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
var _a;
|
|
12
|
+
(0, eventTracking_1.insertEventToCollection)({
|
|
13
|
+
data,
|
|
14
|
+
subject: this.subject,
|
|
15
|
+
dependencyServicesArray: (_a = this.dependencyServicesArray) === null || _a === void 0 ? void 0 : _a.filter((dependency) => dependency !== process.env.CURRENT_SERVICE),
|
|
16
|
+
publisherService: process.env.CURRENT_SERVICE,
|
|
17
|
+
})
|
|
18
|
+
.then(({ insertedId }) => {
|
|
19
|
+
this.client.publish(this.subject, JSON.stringify({
|
|
20
|
+
data,
|
|
21
|
+
eventDetails: {
|
|
22
|
+
dependencyServicesArray: this.dependencyServicesArray,
|
|
23
|
+
id: insertedId,
|
|
24
|
+
},
|
|
25
|
+
}), (err) => {
|
|
26
|
+
if (err) {
|
|
27
|
+
return reject(err);
|
|
28
|
+
}
|
|
29
|
+
console.log("Event published to subject", this.subject);
|
|
30
|
+
resolve();
|
|
31
|
+
});
|
|
32
|
+
})
|
|
33
|
+
.catch((error) => {
|
|
34
|
+
reject(error);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.Publisher = Publisher;
|
|
40
|
+
// previous publisher without event tracking
|
|
41
|
+
// import { Stan } from "node-nats-streaming";
|
|
42
|
+
// import { Subjects } from "./subjects";
|
|
43
|
+
// import { PUBLISHER_SERVICE_TYPE } from "./eventTypes";
|
|
44
|
+
// interface Event {
|
|
45
|
+
// subject: Subjects;
|
|
46
|
+
// data: any;
|
|
47
|
+
// }
|
|
48
|
+
// export abstract class Publisher<T extends Event> {
|
|
49
|
+
// abstract subject: T["subject"];
|
|
50
|
+
// private client: Stan;
|
|
51
|
+
// abstract dependencyServicesArray: PUBLISHER_SERVICE_TYPE[];
|
|
52
|
+
// constructor(client: Stan) {
|
|
53
|
+
// this.client = client;
|
|
54
|
+
// }
|
|
55
|
+
// publish(data: T["data"]): Promise<void> {
|
|
56
|
+
// return new Promise((resolve, reject) => {
|
|
57
|
+
// this.client.publish(this.subject, JSON.stringify(data), (err) => {
|
|
58
|
+
// if (err) {
|
|
59
|
+
// return reject(err);
|
|
60
|
+
// }
|
|
61
|
+
// console.log("Event published to subject", this.subject);
|
|
62
|
+
// resolve();
|
|
63
|
+
// });
|
|
64
|
+
// });
|
|
65
|
+
// }
|
|
66
|
+
// }
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Subjects } from './subjects';
|
|
2
|
+
export interface MigrateCompany {
|
|
3
|
+
name?: string;
|
|
4
|
+
url_name?: string;
|
|
5
|
+
id?: number;
|
|
6
|
+
logo?: string;
|
|
7
|
+
verified?: string;
|
|
8
|
+
tagline?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface MigrateCompanies {
|
|
11
|
+
subject: Subjects.companyDataMigration;
|
|
12
|
+
data: {
|
|
13
|
+
data: MigrateCompany[];
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Subjects } from './subjects';
|
|
2
|
+
export interface CompanyCreatedEvent {
|
|
3
|
+
subject: Subjects.companyCreated;
|
|
4
|
+
data: {
|
|
5
|
+
id: number;
|
|
6
|
+
name?: string;
|
|
7
|
+
image?: string;
|
|
8
|
+
userId: number;
|
|
9
|
+
verified: boolean;
|
|
10
|
+
url_name?: string;
|
|
11
|
+
type?: string;
|
|
12
|
+
};
|
|
13
|
+
}
|