@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.
Files changed (255) hide show
  1. package/build/constants/eventConstants.d.ts +1 -0
  2. package/build/constants/eventConstants.js +11 -0
  3. package/build/constants/eventTracker.d.ts +2 -0
  4. package/build/constants/eventTracker.js +5 -0
  5. package/build/constants/location.d.ts +9 -0
  6. package/build/constants/location.js +11 -0
  7. package/build/constants/trackEvents.mixpanel.d.ts +137 -0
  8. package/build/constants/trackEvents.mixpanel.js +141 -0
  9. package/build/errors/bad-request-error.d.ts +10 -0
  10. package/build/errors/bad-request-error.js +21 -0
  11. package/build/errors/custom-error.d.ts +8 -0
  12. package/build/errors/custom-error.js +10 -0
  13. package/build/errors/database-connection-error.d.ts +9 -0
  14. package/build/errors/database-connection-error.js +19 -0
  15. package/build/errors/not-authorized-error.d.ts +8 -0
  16. package/build/errors/not-authorized-error.js +17 -0
  17. package/build/errors/not-found-error.d.ts +8 -0
  18. package/build/errors/not-found-error.js +17 -0
  19. package/build/errors/request-validation-error.d.ts +11 -0
  20. package/build/errors/request-validation-error.js +19 -0
  21. package/build/events/Group-member-migrate-event.d.ts +13 -0
  22. package/build/events/Group-member-migrate-event.js +2 -0
  23. package/build/events/Group-migrate-event.d.ts +17 -0
  24. package/build/events/Group-migrate-event.js +2 -0
  25. package/build/events/SameStaticCompanyToAuthorisedCompany.d.ts +5 -0
  26. package/build/events/SameStaticCompanyToAuthorisedCompany.js +2 -0
  27. package/build/events/add-experience-company-follow.d.ts +9 -0
  28. package/build/events/add-experience-company-follow.js +2 -0
  29. package/build/events/aki-test-event.d.ts +7 -0
  30. package/build/events/aki-test-event.js +2 -0
  31. package/build/events/base-listener-test.d.ts +18 -0
  32. package/build/events/base-listener-test.js +56 -0
  33. package/build/events/base-listener-v2.d.ts +21 -0
  34. package/build/events/base-listener-v2.js +121 -0
  35. package/build/events/base-listener.d.ts +18 -0
  36. package/build/events/base-listener.js +105 -0
  37. package/build/events/base-publisher-test.d.ts +16 -0
  38. package/build/events/base-publisher-test.js +39 -0
  39. package/build/events/base-publisher-v2.d.ts +15 -0
  40. package/build/events/base-publisher-v2.js +51 -0
  41. package/build/events/base-publisher.d.ts +15 -0
  42. package/build/events/base-publisher.js +66 -0
  43. package/build/events/bulkUser-deleted-event.d.ts +7 -0
  44. package/build/events/bulkUser-deleted-event.js +2 -0
  45. package/build/events/common-event.d.ts +4 -0
  46. package/build/events/common-event.js +2 -0
  47. package/build/events/companies-migrate-event.d.ts +15 -0
  48. package/build/events/companies-migrate-event.js +2 -0
  49. package/build/events/company-admin-created-event.d.ts +9 -0
  50. package/build/events/company-admin-created-event.js +2 -0
  51. package/build/events/company-admin-removed-event.d.ts +8 -0
  52. package/build/events/company-admin-removed-event.js +2 -0
  53. package/build/events/company-created-event.d.ts +13 -0
  54. package/build/events/company-created-event.js +2 -0
  55. package/build/events/company-data-created-event.d.ts +9 -0
  56. package/build/events/company-data-created-event.js +2 -0
  57. package/build/events/company-deleted-event.d.ts +7 -0
  58. package/build/events/company-deleted-event.js +2 -0
  59. package/build/events/company-employee-joined-event.d.ts +8 -0
  60. package/build/events/company-employee-joined-event.js +2 -0
  61. package/build/events/company-employee-removed-event.d.ts +8 -0
  62. package/build/events/company-employee-removed-event.js +2 -0
  63. package/build/events/company-updated-event.d.ts +9 -0
  64. package/build/events/company-updated-event.js +2 -0
  65. package/build/events/employee-added-event.d.ts +18 -0
  66. package/build/events/employee-added-event.js +3 -0
  67. package/build/events/employee-removed-event.d.ts +10 -0
  68. package/build/events/employee-removed-event.js +2 -0
  69. package/build/events/employee-updated-event.d.ts +19 -0
  70. package/build/events/employee-updated-event.js +2 -0
  71. package/build/events/employmentType-created-event.d.ts +11 -0
  72. package/build/events/employmentType-created-event.js +2 -0
  73. package/build/events/employmentType-deleted-event.d.ts +7 -0
  74. package/build/events/employmentType-deleted-event.js +2 -0
  75. package/build/events/entities.d.ts +37 -0
  76. package/build/events/entities.js +41 -0
  77. package/build/events/eventTypes.d.ts +8 -0
  78. package/build/events/eventTypes.js +12 -0
  79. package/build/events/group-created-event.d.ts +12 -0
  80. package/build/events/group-created-event.js +2 -0
  81. package/build/events/group-deleted-event.d.ts +8 -0
  82. package/build/events/group-deleted-event.js +2 -0
  83. package/build/events/group-member-joined-event.d.ts +8 -0
  84. package/build/events/group-member-joined-event.js +2 -0
  85. package/build/events/group-member-removed-event.d.ts +8 -0
  86. package/build/events/group-member-removed-event.js +2 -0
  87. package/build/events/group-updated-event.d.ts +10 -0
  88. package/build/events/group-updated-event.js +2 -0
  89. package/build/events/hashtag-created-event.d.ts +11 -0
  90. package/build/events/hashtag-created-event.js +2 -0
  91. package/build/events/hashtag-tagged.d.ts +14 -0
  92. package/build/events/hashtag-tagged.js +7 -0
  93. package/build/events/headline-updated-event.d.ts +8 -0
  94. package/build/events/headline-updated-event.js +2 -0
  95. package/build/events/industry-created-event.d.ts +17 -0
  96. package/build/events/industry-created-event.js +2 -0
  97. package/build/events/industry-deleted-event.d.ts +8 -0
  98. package/build/events/industry-deleted-event.js +2 -0
  99. package/build/events/industry-updated-event.d.ts +14 -0
  100. package/build/events/industry-updated-event.js +2 -0
  101. package/build/events/initiate-notification.d.ts +32 -0
  102. package/build/events/initiate-notification.js +2 -0
  103. package/build/events/initiate-notify-notification.d.ts +32 -0
  104. package/build/events/initiate-notify-notification.js +2 -0
  105. package/build/events/institution-alumni-created-event.d.ts +11 -0
  106. package/build/events/institution-alumni-created-event.js +2 -0
  107. package/build/events/institution-alumni-removed-event.d.ts +9 -0
  108. package/build/events/institution-alumni-removed-event.js +2 -0
  109. package/build/events/institution-alumni-updated-event.d.ts +12 -0
  110. package/build/events/institution-alumni-updated-event.js +2 -0
  111. package/build/events/institution-created-event.d.ts +17 -0
  112. package/build/events/institution-created-event.js +2 -0
  113. package/build/events/institution-deleted-event.d.ts +8 -0
  114. package/build/events/institution-deleted-event.js +2 -0
  115. package/build/events/institution-employee-added.d.ts +11 -0
  116. package/build/events/institution-employee-added.js +2 -0
  117. package/build/events/institution-employee-edited.d.ts +12 -0
  118. package/build/events/institution-employee-edited.js +2 -0
  119. package/build/events/institution-employee-removed.d.ts +9 -0
  120. package/build/events/institution-employee-removed.js +2 -0
  121. package/build/events/institution-migrate-event.d.ts +31 -0
  122. package/build/events/institution-migrate-event.js +2 -0
  123. package/build/events/institution-updated-event.d.ts +17 -0
  124. package/build/events/institution-updated-event.js +2 -0
  125. package/build/events/invite-contact-event.d.ts +9 -0
  126. package/build/events/invite-contact-event.js +2 -0
  127. package/build/events/job-created-event.d.ts +17 -0
  128. package/build/events/job-created-event.js +2 -0
  129. package/build/events/job-deleted-event.d.ts +7 -0
  130. package/build/events/job-deleted-event.js +2 -0
  131. package/build/events/job-updated-event.d.ts +14 -0
  132. package/build/events/job-updated-event.js +2 -0
  133. package/build/events/jobTitleData-created-event.d.ts +12 -0
  134. package/build/events/jobTitleData-created-event.js +2 -0
  135. package/build/events/jobTitleData-deleted-event.d.ts +7 -0
  136. package/build/events/jobTitleData-deleted-event.js +2 -0
  137. package/build/events/location-created-event.d.ts +11 -0
  138. package/build/events/location-created-event.js +2 -0
  139. package/build/events/location-deleted-event.d.ts +8 -0
  140. package/build/events/location-deleted-event.js +2 -0
  141. package/build/events/location-updated-event.d.ts +11 -0
  142. package/build/events/location-updated-event.js +2 -0
  143. package/build/events/messageData.d.ts +20 -0
  144. package/build/events/messageData.js +2 -0
  145. package/build/events/migrate-connections-to-chat-data.d.ts +9 -0
  146. package/build/events/migrate-connections-to-chat-data.js +2 -0
  147. package/build/events/migrate-connections-to-chat.d.ts +8 -0
  148. package/build/events/migrate-connections-to-chat.js +2 -0
  149. package/build/events/migrate-education-data.d.ts +11 -0
  150. package/build/events/migrate-education-data.js +2 -0
  151. package/build/events/migrate-messages.d.ts +9 -0
  152. package/build/events/migrate-messages.js +2 -0
  153. package/build/events/migrate-profile-image.d.ts +8 -0
  154. package/build/events/migrate-profile-image.js +2 -0
  155. package/build/events/migrate-user-event.d.ts +34 -0
  156. package/build/events/migrate-user-event.js +2 -0
  157. package/build/events/migrate-user-location-to-job.d.ts +8 -0
  158. package/build/events/migrate-user-location-to-job.js +2 -0
  159. package/build/events/migrate-user-to-chat.d.ts +8 -0
  160. package/build/events/migrate-user-to-chat.js +2 -0
  161. package/build/events/organizationEmployeeCreatedEvent.d.ts +9 -0
  162. package/build/events/organizationEmployeeCreatedEvent.js +2 -0
  163. package/build/events/parentTypes.d.ts +6 -0
  164. package/build/events/parentTypes.js +10 -0
  165. package/build/events/process-created-event.d.ts +12 -0
  166. package/build/events/process-created-event.js +2 -0
  167. package/build/events/process-updated-event.d.ts +12 -0
  168. package/build/events/process-updated-event.js +2 -0
  169. package/build/events/profile-image-update-event.d.ts +8 -0
  170. package/build/events/profile-image-update-event.js +2 -0
  171. package/build/events/profile-viewed-event.d.ts +9 -0
  172. package/build/events/profile-viewed-event.js +2 -0
  173. package/build/events/resume-deleted-event.d.ts +8 -0
  174. package/build/events/resume-deleted-event.js +2 -0
  175. package/build/events/resume-uploaded-event.d.ts +6 -0
  176. package/build/events/resume-uploaded-event.js +2 -0
  177. package/build/events/resumeData-to-job-service.d.ts +6 -0
  178. package/build/events/resumeData-to-job-service.js +2 -0
  179. package/build/events/scraping-start-event.d.ts +7 -0
  180. package/build/events/scraping-start-event.js +2 -0
  181. package/build/events/scraping-success-event.d.ts +11 -0
  182. package/build/events/scraping-success-event.js +2 -0
  183. package/build/events/segment-created-event.d.ts +10 -0
  184. package/build/events/segment-created-event.js +2 -0
  185. package/build/events/segment-updated-event.d.ts +10 -0
  186. package/build/events/segment-updated-event.js +2 -0
  187. package/build/events/service-created-event.d.ts +10 -0
  188. package/build/events/service-created-event.js +2 -0
  189. package/build/events/service-delete-event.d.ts +7 -0
  190. package/build/events/service-delete-event.js +2 -0
  191. package/build/events/service-updated-event.d.ts +9 -0
  192. package/build/events/service-updated-event.js +2 -0
  193. package/build/events/skill-created-event.d.ts +11 -0
  194. package/build/events/skill-created-event.js +2 -0
  195. package/build/events/skill-deleted-event.d.ts +7 -0
  196. package/build/events/skill-deleted-event.js +2 -0
  197. package/build/events/specialization-created-event.d.ts +10 -0
  198. package/build/events/specialization-created-event.js +2 -0
  199. package/build/events/specialization-updated-event.d.ts +10 -0
  200. package/build/events/specialization-updated-event.js +2 -0
  201. package/build/events/subjects.d.ts +103 -0
  202. package/build/events/subjects.js +107 -0
  203. package/build/events/thread-line-event.d.ts +16 -0
  204. package/build/events/thread-line-event.js +2 -0
  205. package/build/events/university-updated-event.d.ts +11 -0
  206. package/build/events/university-updated-event.js +2 -0
  207. package/build/events/user-badge-added-event.d.ts +8 -0
  208. package/build/events/user-badge-added-event.js +2 -0
  209. package/build/events/user-badge-deleted-event.d.ts +8 -0
  210. package/build/events/user-badge-deleted-event.js +2 -0
  211. package/build/events/user-connection-count-update-event.d.ts +8 -0
  212. package/build/events/user-connection-count-update-event.js +2 -0
  213. package/build/events/user-created-event.d.ts +12 -0
  214. package/build/events/user-created-event.js +2 -0
  215. package/build/events/user-deleted-event.d.ts +7 -0
  216. package/build/events/user-deleted-event.js +2 -0
  217. package/build/events/user-follow-event.d.ts +9 -0
  218. package/build/events/user-follow-event.js +2 -0
  219. package/build/events/user-follow-update-event .d.ts +10 -0
  220. package/build/events/user-follow-update-event .js +2 -0
  221. package/build/events/user-location-data-to-job-service.d.ts +7 -0
  222. package/build/events/user-location-data-to-job-service.js +2 -0
  223. package/build/events/user-reactivate-event.d.ts +8 -0
  224. package/build/events/user-reactivate-event.js +2 -0
  225. package/build/events/user-segment-created-event.d.ts +15 -0
  226. package/build/events/user-segment-created-event.js +2 -0
  227. package/build/events/user-skill-addded-event.d.ts +14 -0
  228. package/build/events/user-skill-addded-event.js +2 -0
  229. package/build/events/user-skill-removed-event.d.ts +12 -0
  230. package/build/events/user-skill-removed-event.js +2 -0
  231. package/build/events/user-unfollow-event.d.ts +9 -0
  232. package/build/events/user-unfollow-event.js +2 -0
  233. package/build/events/user-updated-event.d.ts +24 -0
  234. package/build/events/user-updated-event.js +2 -0
  235. package/build/events/userData-to-chat-service.d.ts +9 -0
  236. package/build/events/userData-to-chat-service.js +2 -0
  237. package/build/events/users-connected-event.d.ts +10 -0
  238. package/build/events/users-connected-event.js +2 -0
  239. package/build/events/users-disconnected-event.d.ts +8 -0
  240. package/build/events/users-disconnected-event.js +2 -0
  241. package/build/index.d.ts +122 -0
  242. package/build/index.js +140 -0
  243. package/build/middleware/current-user.d.ts +18 -0
  244. package/build/middleware/current-user.js +53 -0
  245. package/build/middleware/error-handler.d.ts +2 -0
  246. package/build/middleware/error-handler.js +15 -0
  247. package/build/middleware/require-auth.d.ts +2 -0
  248. package/build/middleware/require-auth.js +10 -0
  249. package/build/middleware/validate-request.d.ts +2 -0
  250. package/build/middleware/validate-request.js +13 -0
  251. package/build/services/eventTracking.d.ts +17 -0
  252. package/build/services/eventTracking.js +91 -0
  253. package/build/utils/get-location.d.ts +11 -0
  254. package/build/utils/get-location.js +338 -0
  255. 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,7 @@
1
+ import { Subjects } from './subjects';
2
+ export interface BulkUserDeletedEvent {
3
+ subject: Subjects.userBulkDelete;
4
+ data: {
5
+ users: any[];
6
+ };
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface AllEvent {
2
+ subject: any;
3
+ data: any;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ import { Subjects } from "./subjects";
2
+ export interface CompanyAdminCreatedEvent {
3
+ subject: Subjects.companyAdminCreated;
4
+ data: {
5
+ companyId: number;
6
+ userId: number;
7
+ roleId: number;
8
+ };
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { Subjects } from "./subjects";
2
+ export interface CompanyAdminRemovedEvent {
3
+ subject: Subjects.companyAdminRemoved;
4
+ data: {
5
+ companyId: number;
6
+ userId: number;
7
+ };
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ import { Subjects } from './subjects';
2
+ export interface CompanyDataCreatedEvent {
3
+ subject: Subjects.companyDataCreated;
4
+ data: {
5
+ company: string;
6
+ createdBy: string | number;
7
+ approved: boolean;
8
+ };
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { Subjects } from "./subjects";
2
+ export interface CompanyDeletedEvent {
3
+ subject: Subjects.companyDeleted;
4
+ data: {
5
+ id: number;
6
+ };
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { Subjects } from './subjects';
2
+ export interface CompanyEmployeeJoinedEvent {
3
+ subject: Subjects.companyEmployeeJoined;
4
+ data: {
5
+ companyId: number;
6
+ userId: number;
7
+ };
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });