@betterinternship/core 2.2.3 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,12 @@
1
1
  import * as amqp from 'amqplib';
2
2
  export declare const QueueName: (...args: string[]) => string;
3
- export declare const BrokerAPI: {
4
- assertQueue: (..._: any[]) => Promise<void>;
5
- sendToQueue: (..._: any[]) => Promise<void>;
6
- readFromQueue: (..._: any[]) => Promise<void>;
7
- } | {
8
- assertQueue: (queueId: string, options?: amqp.Options.AssertQueue) => Promise<amqp.Replies.AssertQueue>;
9
- sendToQueue: (queueId: string, content: any) => boolean;
10
- readFromQueue: <T>(queueId: string) => Promise<null>;
11
- };
3
+ export declare class BrokerAPI {
4
+ connection: amqp.ChannelModel;
5
+ channels: Record<string, amqp.Channel>;
6
+ private static __instance;
7
+ private constructor();
8
+ static instance(): Promise<BrokerAPI>;
9
+ assertQueue(queueId: string, options?: amqp.Options.AssertQueue): Promise<amqp.Replies.AssertQueue>;
10
+ sendToQueue(queueId: string, content: any): boolean;
11
+ readFromQueue<T>(queueId: string): Promise<null>;
12
+ }
@@ -1,7 +1,8 @@
1
1
  import * as amqp from 'amqplib';
2
2
  import { ENV } from '../env.js';
3
+ const RABBITMQ_ENABLED = ENV.RABBITMQ_ENABLED;
3
4
  const RABBITMQ_URL = ENV.RABBITMQ_URL;
4
- if (!RABBITMQ_URL && ENV.RABBITMQ_ENABLED)
5
+ if (!RABBITMQ_URL && RABBITMQ_ENABLED)
5
6
  throw new Error('[ERROR:ENV] Missing RabbitMQ configuration.');
6
7
  export const QueueName = (...args) => {
7
8
  if (ENV.ENVIRONMENT === 'production')
@@ -9,30 +10,33 @@ export const QueueName = (...args) => {
9
10
  else
10
11
  return ['dev', ...args].join('.');
11
12
  };
12
- export const BrokerAPI = await (async () => {
13
- if (!RABBITMQ_URL) {
14
- return {
15
- assertQueue: async (..._) => { },
16
- sendToQueue: async (..._) => { },
17
- readFromQueue: async (..._) => { },
13
+ export class BrokerAPI {
14
+ connection;
15
+ channels;
16
+ static __instance;
17
+ constructor() { }
18
+ static async instance() {
19
+ if (BrokerAPI.__instance || !RABBITMQ_ENABLED)
20
+ return BrokerAPI.__instance;
21
+ BrokerAPI.__instance = new BrokerAPI();
22
+ BrokerAPI.__instance.connection = await amqp.connect(RABBITMQ_URL);
23
+ BrokerAPI.__instance.channels = {
24
+ asserter: await BrokerAPI.__instance.connection.createChannel(),
25
+ reader: await BrokerAPI.__instance.connection.createChannel(),
26
+ writer: await BrokerAPI.__instance.connection.createChannel(),
18
27
  };
28
+ return BrokerAPI.__instance;
19
29
  }
20
- const connection = await amqp.connect(RABBITMQ_URL);
21
- const channels = {
22
- asserter: await connection.createChannel(),
23
- reader: await connection.createChannel(),
24
- writer: await connection.createChannel(),
25
- };
26
- const assertQueue = async (queueId, options) => {
27
- const result = await channels.asserter.assertQueue(queueId, {
30
+ async assertQueue(queueId, options) {
31
+ const result = await this.channels.asserter.assertQueue(queueId, {
28
32
  durable: true,
29
33
  ...options,
30
34
  });
31
35
  console.log(`[BROKER] Queue "${queueId}" has been asserted.`);
32
36
  return result;
33
- };
34
- const sendToQueue = (queueId, content) => {
35
- const result = channels.writer.sendToQueue(queueId, Buffer.from(JSON.stringify(content)));
37
+ }
38
+ sendToQueue(queueId, content) {
39
+ const result = this.channels.writer.sendToQueue(queueId, Buffer.from(JSON.stringify(content)));
36
40
  if (result) {
37
41
  console.log(`[BROKER] Message sent to queue "${queueId}": ${JSON.stringify(content)}.`);
38
42
  }
@@ -40,18 +44,18 @@ export const BrokerAPI = await (async () => {
40
44
  console.log(`[BROKER] Message could not sent to queue "${queueId}": ${JSON.stringify(content)}.`);
41
45
  }
42
46
  return result;
43
- };
44
- const readFromQueue = async (queueId) => {
47
+ }
48
+ async readFromQueue(queueId) {
45
49
  const resolveFromQueue = (message) => {
46
- channels.writer.ack(message);
50
+ this.channels.writer.ack(message);
47
51
  console.log(`[BROKER] Message "${message.properties.messageId}" resolved from queue "${queueId}".`);
48
52
  };
49
53
  const rejectFromQueue = (message) => {
50
- channels.writer.nack(message);
54
+ this.channels.writer.nack(message);
51
55
  console.log(`[BROKER] Message "${message.properties.messageId}" rejected from queue "${queueId}".`);
52
56
  };
53
57
  let result = null;
54
- await channels.reader.consume(queueId, (message) => {
58
+ await this.channels.reader.consume(queueId, (message) => {
55
59
  const content = message?.content?.toString?.();
56
60
  result = {
57
61
  content: content ? JSON.parse(content) : null,
@@ -61,11 +65,6 @@ export const BrokerAPI = await (async () => {
61
65
  return message ? result : null;
62
66
  });
63
67
  return result;
64
- };
65
- return {
66
- assertQueue,
67
- sendToQueue,
68
- readFromQueue,
69
- };
70
- })();
68
+ }
69
+ }
71
70
  //# sourceMappingURL=broker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../../lib/broker/broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../../lib/broker/broker.ts"],"names":[],"mappings":"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"}