@solidstarters/solid-core 1.2.145 → 1.2.148

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 (187) hide show
  1. package/dist/config/common.config.d.ts +10 -0
  2. package/dist/config/common.config.d.ts.map +1 -1
  3. package/dist/config/common.config.js +6 -1
  4. package/dist/config/common.config.js.map +1 -1
  5. package/dist/decorators/mail-provider.decorator.d.ts +3 -0
  6. package/dist/decorators/mail-provider.decorator.d.ts.map +1 -0
  7. package/dist/decorators/mail-provider.decorator.js +11 -0
  8. package/dist/decorators/mail-provider.decorator.js.map +1 -0
  9. package/dist/factories/mail.factory.d.ts +14 -0
  10. package/dist/factories/mail.factory.d.ts.map +1 -0
  11. package/dist/factories/mail.factory.js +50 -0
  12. package/dist/factories/mail.factory.js.map +1 -0
  13. package/dist/helpers/solid-registry.d.ts +3 -0
  14. package/dist/helpers/solid-registry.d.ts.map +1 -1
  15. package/dist/helpers/solid-registry.js +7 -0
  16. package/dist/helpers/solid-registry.js.map +1 -1
  17. package/dist/index.d.ts +7 -3
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +12 -4
  20. package/dist/index.js.map +1 -1
  21. package/dist/interfaces.d.ts +5 -5
  22. package/dist/interfaces.d.ts.map +1 -1
  23. package/dist/interfaces.js.map +1 -1
  24. package/dist/jobs/database/api-email-subscriber-database.service.d.ts +3 -1
  25. package/dist/jobs/database/api-email-subscriber-database.service.d.ts.map +1 -1
  26. package/dist/jobs/database/api-email-subscriber-database.service.js +6 -3
  27. package/dist/jobs/database/api-email-subscriber-database.service.js.map +1 -1
  28. package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts +3 -1
  29. package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts.map +1 -1
  30. package/dist/jobs/database/computed-field-evaluation-subscriber.service.js +6 -3
  31. package/dist/jobs/database/computed-field-evaluation-subscriber.service.js.map +1 -1
  32. package/dist/jobs/database/generate-code-subscriber-database.service.d.ts +3 -1
  33. package/dist/jobs/database/generate-code-subscriber-database.service.d.ts.map +1 -1
  34. package/dist/jobs/database/generate-code-subscriber-database.service.js +6 -3
  35. package/dist/jobs/database/generate-code-subscriber-database.service.js.map +1 -1
  36. package/dist/jobs/database/otp-subscriber-database.service.d.ts +3 -1
  37. package/dist/jobs/database/otp-subscriber-database.service.d.ts.map +1 -1
  38. package/dist/jobs/database/otp-subscriber-database.service.js +5 -2
  39. package/dist/jobs/database/otp-subscriber-database.service.js.map +1 -1
  40. package/dist/jobs/database/sms-subscriber-database.service.d.ts +4 -2
  41. package/dist/jobs/database/sms-subscriber-database.service.d.ts.map +1 -1
  42. package/dist/jobs/database/sms-subscriber-database.service.js +7 -4
  43. package/dist/jobs/database/sms-subscriber-database.service.js.map +1 -1
  44. package/dist/jobs/database/{email-publisher-database.service.d.ts → smtp-email-publisher-database.service.d.ts} +2 -2
  45. package/dist/jobs/database/smtp-email-publisher-database.service.d.ts.map +1 -0
  46. package/dist/jobs/database/{email-publisher-database.service.js → smtp-email-publisher-database.service.js} +8 -8
  47. package/dist/jobs/database/smtp-email-publisher-database.service.js.map +1 -0
  48. package/dist/jobs/database/{email-queue-options-database.d.ts → smtp-email-queue-options-database.d.ts} +1 -1
  49. package/dist/jobs/database/smtp-email-queue-options-database.d.ts.map +1 -0
  50. package/dist/jobs/database/{email-queue-options-database.js → smtp-email-queue-options-database.js} +1 -1
  51. package/dist/jobs/database/smtp-email-queue-options-database.js.map +1 -0
  52. package/dist/jobs/database/{email-subscriber-database.service.d.ts → smtp-email-subscriber-database.service.d.ts} +6 -4
  53. package/dist/jobs/database/smtp-email-subscriber-database.service.d.ts.map +1 -0
  54. package/dist/jobs/database/{email-subscriber-database.service.js → smtp-email-subscriber-database.service.js} +14 -11
  55. package/dist/jobs/database/smtp-email-subscriber-database.service.js.map +1 -0
  56. package/dist/jobs/database/test-queue-subscriber-database.service.d.ts +3 -1
  57. package/dist/jobs/database/test-queue-subscriber-database.service.d.ts.map +1 -1
  58. package/dist/jobs/database/test-queue-subscriber-database.service.js +6 -3
  59. package/dist/jobs/database/test-queue-subscriber-database.service.js.map +1 -1
  60. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +3 -1
  61. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  62. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +5 -2
  63. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  64. package/dist/jobs/database/twilio-sms-publisher-database.service.d.ts +11 -0
  65. package/dist/jobs/database/twilio-sms-publisher-database.service.d.ts.map +1 -0
  66. package/dist/jobs/database/twilio-sms-publisher-database.service.js +39 -0
  67. package/dist/jobs/database/twilio-sms-publisher-database.service.js.map +1 -0
  68. package/dist/jobs/database/twilio-sms-queue-database-options.d.ts +8 -0
  69. package/dist/jobs/database/twilio-sms-queue-database-options.d.ts.map +1 -0
  70. package/dist/jobs/database/twilio-sms-queue-database-options.js +10 -0
  71. package/dist/jobs/database/twilio-sms-queue-database-options.js.map +1 -0
  72. package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts +17 -0
  73. package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts.map +1 -0
  74. package/dist/jobs/database/twilio-sms-subscriber-database.service.js +48 -0
  75. package/dist/jobs/database/twilio-sms-subscriber-database.service.js.map +1 -0
  76. package/dist/jobs/database/whatsapp-subscriber-database.service.d.ts +3 -1
  77. package/dist/jobs/database/whatsapp-subscriber-database.service.d.ts.map +1 -1
  78. package/dist/jobs/database/whatsapp-subscriber-database.service.js +6 -3
  79. package/dist/jobs/database/whatsapp-subscriber-database.service.js.map +1 -1
  80. package/dist/jobs/sms-subscriber.service.d.ts +1 -1
  81. package/dist/jobs/sms-subscriber.service.js +1 -1
  82. package/dist/jobs/sms-subscriber.service.js.map +1 -1
  83. package/dist/jobs/{email-publisher.service.d.ts → smtp-email-publisher.service.d.ts} +2 -2
  84. package/dist/jobs/smtp-email-publisher.service.d.ts.map +1 -0
  85. package/dist/jobs/{email-publisher.service.js → smtp-email-publisher.service.js} +8 -8
  86. package/dist/jobs/smtp-email-publisher.service.js.map +1 -0
  87. package/dist/jobs/{email-queue-options.d.ts → smtp-email-queue-options.d.ts} +1 -1
  88. package/dist/jobs/smtp-email-queue-options.d.ts.map +1 -0
  89. package/dist/jobs/{email-queue-options.js → smtp-email-queue-options.js} +1 -1
  90. package/dist/jobs/smtp-email-queue-options.js.map +1 -0
  91. package/dist/jobs/{email-subscriber.service.d.ts → smtp-email-subscriber.service.d.ts} +3 -3
  92. package/dist/jobs/smtp-email-subscriber.service.d.ts.map +1 -0
  93. package/dist/jobs/{email-subscriber.service.js → smtp-email-subscriber.service.js} +8 -8
  94. package/dist/jobs/smtp-email-subscriber.service.js.map +1 -0
  95. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -1
  96. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  97. package/dist/seeders/module-metadata-seeder.service.js +42 -31
  98. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  99. package/dist/services/authentication.service.d.ts +3 -3
  100. package/dist/services/authentication.service.d.ts.map +1 -1
  101. package/dist/services/authentication.service.js +16 -12
  102. package/dist/services/authentication.service.js.map +1 -1
  103. package/dist/services/mail/elastic-email.service.d.ts.map +1 -1
  104. package/dist/services/mail/elastic-email.service.js +2 -0
  105. package/dist/services/mail/elastic-email.service.js.map +1 -1
  106. package/dist/services/mail/smtp-email.service.d.ts +6 -6
  107. package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
  108. package/dist/services/mail/smtp-email.service.js +17 -11
  109. package/dist/services/mail/smtp-email.service.js.map +1 -1
  110. package/dist/services/poller.service.d.ts +24 -0
  111. package/dist/services/poller.service.d.ts.map +1 -0
  112. package/dist/services/poller.service.js +131 -0
  113. package/dist/services/poller.service.js.map +1 -0
  114. package/dist/services/queues/database-subscriber.service.d.ts +4 -1
  115. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
  116. package/dist/services/queues/database-subscriber.service.js +13 -13
  117. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  118. package/dist/services/sms/Msg91BaseSMSService.d.ts +2 -2
  119. package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
  120. package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
  121. package/dist/services/sms/Msg91OTPService.d.ts +1 -1
  122. package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
  123. package/dist/services/sms/Msg91OTPService.js.map +1 -1
  124. package/dist/services/sms/Msg91SMSService.d.ts +1 -1
  125. package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
  126. package/dist/services/sms/Msg91SMSService.js.map +1 -1
  127. package/dist/services/sms/TwilioSMSService.d.ts +18 -0
  128. package/dist/services/sms/TwilioSMSService.d.ts.map +1 -0
  129. package/dist/services/sms/TwilioSMSService.js +115 -0
  130. package/dist/services/sms/TwilioSMSService.js.map +1 -0
  131. package/dist/services/solid-introspect.service.d.ts +1 -0
  132. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  133. package/dist/services/solid-introspect.service.js +14 -0
  134. package/dist/services/solid-introspect.service.js.map +1 -1
  135. package/dist/solid-core.module.d.ts.map +1 -1
  136. package/dist/solid-core.module.js +21 -8
  137. package/dist/solid-core.module.js.map +1 -1
  138. package/dist/tsconfig.tsbuildinfo +1 -1
  139. package/package.json +4 -3
  140. package/src/config/common.config.ts +6 -1
  141. package/src/decorators/mail-provider.decorator.ts +7 -0
  142. package/src/factories/mail.factory.ts +38 -0
  143. package/src/helpers/solid-registry.ts +9 -0
  144. package/src/index.ts +10 -3
  145. package/src/interfaces.ts +11 -5
  146. package/src/jobs/database/api-email-subscriber-database.service.ts +3 -1
  147. package/src/jobs/database/computed-field-evaluation-subscriber.service.ts +4 -2
  148. package/src/jobs/database/generate-code-subscriber-database.service.ts +3 -1
  149. package/src/jobs/database/otp-subscriber-database.service.ts +3 -1
  150. package/src/jobs/database/sms-subscriber-database.service.ts +4 -2
  151. package/src/jobs/database/{email-publisher-database.service.ts → smtp-email-publisher-database.service.ts} +2 -2
  152. package/src/jobs/database/{email-subscriber-database.service.ts → smtp-email-subscriber-database.service.ts} +5 -3
  153. package/src/jobs/database/test-queue-subscriber-database.service.ts +3 -1
  154. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +3 -1
  155. package/src/jobs/database/twilio-sms-publisher-database.service.ts +23 -0
  156. package/src/jobs/database/twilio-sms-queue-database-options.ts +9 -0
  157. package/src/jobs/database/twilio-sms-subscriber-database.service.ts +32 -0
  158. package/src/jobs/database/whatsapp-subscriber-database.service.ts +3 -1
  159. package/src/jobs/sms-subscriber.service.ts +1 -1
  160. package/src/jobs/{email-publisher.service.ts → smtp-email-publisher.service.ts} +2 -2
  161. package/src/jobs/{email-subscriber.service.ts → smtp-email-subscriber.service.ts} +2 -2
  162. package/src/seeders/module-metadata-seeder.service.ts +45 -42
  163. package/src/services/authentication.service.ts +24 -9
  164. package/src/services/mail/elastic-email.service.ts +2 -0
  165. package/src/services/mail/smtp-email.service.ts +48 -21
  166. package/src/services/poller.service.ts +163 -0
  167. package/src/services/queues/database-subscriber.service.ts +39 -12
  168. package/src/services/sms/Msg91BaseSMSService.ts +2 -2
  169. package/src/services/sms/Msg91OTPService.ts +1 -1
  170. package/src/services/sms/Msg91SMSService.ts +1 -1
  171. package/src/services/sms/TwilioSMSService.ts +118 -0
  172. package/src/services/solid-introspect.service.ts +21 -5
  173. package/src/solid-core.module.ts +24 -8
  174. package/dist/jobs/database/email-publisher-database.service.d.ts.map +0 -1
  175. package/dist/jobs/database/email-publisher-database.service.js.map +0 -1
  176. package/dist/jobs/database/email-queue-options-database.d.ts.map +0 -1
  177. package/dist/jobs/database/email-queue-options-database.js.map +0 -1
  178. package/dist/jobs/database/email-subscriber-database.service.d.ts.map +0 -1
  179. package/dist/jobs/database/email-subscriber-database.service.js.map +0 -1
  180. package/dist/jobs/email-publisher.service.d.ts.map +0 -1
  181. package/dist/jobs/email-publisher.service.js.map +0 -1
  182. package/dist/jobs/email-queue-options.d.ts.map +0 -1
  183. package/dist/jobs/email-queue-options.js.map +0 -1
  184. package/dist/jobs/email-subscriber.service.d.ts.map +0 -1
  185. package/dist/jobs/email-subscriber.service.js.map +0 -1
  186. /package/src/jobs/database/{email-queue-options-database.ts → smtp-email-queue-options-database.ts} +0 -0
  187. /package/src/jobs/{email-queue-options.ts → smtp-email-queue-options.ts} +0 -0
@@ -3,6 +3,7 @@ import { QueuesModuleOptions } from "../../interfaces";
3
3
  import { QueueMessage, QueueSubscriber } from '../../interfaces/mq';
4
4
  import { MqMessageQueueService } from '../mq-message-queue.service';
5
5
  import { MqMessageService } from '../mq-message.service';
6
+ import { PollerService } from '../poller.service';
6
7
 
7
8
 
8
9
  export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscriber<T> {
@@ -13,6 +14,7 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
13
14
  constructor(
14
15
  protected readonly mqMessageService: MqMessageService,
15
16
  protected readonly mqMessageQueueService: MqMessageQueueService,
17
+ protected readonly poller: PollerService,
16
18
  ) {
17
19
  this.serviceRole = process.env.QUEUES_SERVICE_ROLE;
18
20
  if (!this.serviceRole) {
@@ -70,6 +72,31 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
70
72
  // this.logger.debug(`#### DatabaseSubscriber finished processing message from queue: ${queueName}`);
71
73
  }
72
74
 
75
+ // async onModuleInit(): Promise<void> {
76
+ // // we will start subscriber only if the current service role is subscriber.
77
+ // if (['both', 'subscriber'].includes(this.serviceRole)) {
78
+
79
+ // const options = this.options();
80
+
81
+ // const queueName = options.queueName;
82
+ // // setInterval(() => this.processNext(queueName), 1000);
83
+ // const poll = async () => {
84
+ // try {
85
+ // await this.processNext(queueName);
86
+ // } catch (err) {
87
+ // this.logger.error(`Polling error: ${err.message}`);
88
+ // } finally {
89
+ // setTimeout(poll, 1000); // Wait 1s *after* processing finishes
90
+ // }
91
+ // };
92
+
93
+ // // start the loop
94
+ // poll();
95
+
96
+ // this.logger.log(`DatabaseSubscriber ready to consume messages: ${JSON.stringify(this.options())}`);
97
+ // }
98
+ // }
99
+
73
100
  async onModuleInit(): Promise<void> {
74
101
  // we will start subscriber only if the current service role is subscriber.
75
102
  if (['both', 'subscriber'].includes(this.serviceRole)) {
@@ -77,24 +104,24 @@ export abstract class DatabaseSubscriber<T> implements OnModuleInit, QueueSubscr
77
104
  const options = this.options();
78
105
 
79
106
  const queueName = options.queueName;
80
- // setInterval(() => this.processNext(queueName), 1000);
81
- const poll = async () => {
82
- try {
83
- await this.processNext(queueName);
84
- } catch (err) {
85
- this.logger.error(`Polling error: ${err.message}`);
86
- } finally {
87
- setTimeout(poll, 1000); // Wait 1s *after* processing finishes
88
- }
89
- };
90
107
 
91
- // start the loop
92
- poll();
108
+ this.poller.start(queueName, (q) => this.processNext(q), {
109
+ baseDelayMs: 1000,
110
+ maxDelayMs: 30_000,
111
+ timeoutPerIterationMs: 60_000,
112
+ jitter: true,
113
+ });
93
114
 
94
115
  this.logger.log(`DatabaseSubscriber ready to consume messages: ${JSON.stringify(this.options())}`);
95
116
  }
96
117
  }
97
118
 
119
+ onModuleDestroy() {
120
+ const options = this.options();
121
+ const queueName = options.queueName;
122
+ this.poller.stop(queueName);
123
+ }
124
+
98
125
  /**
99
126
  * Abstract method for message processing logic.
100
127
  */
@@ -20,7 +20,7 @@ export abstract class Msg91BaseSMSService implements ISMS {
20
20
  throw new Error(`Msg91 does not support sending plain text messages, you need to register a template and use the templateId to send the SMS.`);
21
21
  }
22
22
 
23
- async sendSMSUsingTemplate(to: string, templateName: string, templateParams: any, shouldQueueSms = false): Promise<void> {
23
+ async sendSMSUsingTemplate(to: string, templateName: string, templateParams: any, shouldQueueSms = false): Promise<any> {
24
24
  // Load template and evaluate it.
25
25
  const emailTemplate = await this.smsTemplateService.findOneByName(templateName);
26
26
  if (!emailTemplate) {
@@ -76,5 +76,5 @@ export abstract class Msg91BaseSMSService implements ISMS {
76
76
  this.logger.debug(`Queueing SMS to ${to} with message ${JSON.stringify(message)}`);
77
77
  }
78
78
 
79
- abstract sendSMSSynchronously(message: QueueMessage<any>): Promise<void>
79
+ abstract sendSMSSynchronously(message: QueueMessage<any>): Promise<any>
80
80
  }
@@ -28,7 +28,7 @@ export class Msg91OTPService extends Msg91BaseSMSService implements ISMS {
28
28
  super(commonConfiguration, 'OTPQueuePublisher', publisherFactory, smsTemplateService);
29
29
  }
30
30
 
31
- async sendSMSSynchronously(message: QueueMessage<any>): Promise<void> {
31
+ async sendSMSSynchronously(message: QueueMessage<any>): Promise<any> {
32
32
  const { to, templateId, otp } = message.payload;
33
33
  const params = { otp, template_id: templateId, mobile: to, authkey: this.commonConfiguration.msg91Sms.apiKey }
34
34
  const otpUrl = `${this.commonConfiguration.msg91Sms.url}/otp?${this.paramsToQueryString(params)}`;
@@ -21,7 +21,7 @@ export class Msg91SMSService extends Msg91BaseSMSService implements ISMS {
21
21
  super(commonConfiguration, 'SmsQueuePublisher', publisherFactory, smsTemplateService)
22
22
  }
23
23
 
24
- async sendSMSSynchronously(message: QueueMessage<any>): Promise<void> {
24
+ async sendSMSSynchronously(message: QueueMessage<any>): Promise<any> {
25
25
  const { to, templateId, ...templateParams } = message.payload;
26
26
  const body = { template_id: templateId, short_url: "0", recipients: [{ mobiles: to, ...templateParams }] };
27
27
  const headers = { "authkey": this.commonConfiguration.msg91Sms.apiKey };
@@ -0,0 +1,118 @@
1
+ import Handlebars from "handlebars";
2
+ import { Inject, Injectable, Logger } from "@nestjs/common";
3
+ import { ConfigType } from "@nestjs/config";
4
+ import commonConfig from "src/config/common.config";
5
+ import { SmsTemplateService } from "../sms-template.service";
6
+ import { ISMS } from "../../interfaces";
7
+ import { PublisherFactory } from "../queues/publisher-factory.service";
8
+ import twilio from 'twilio';
9
+ import { QueueMessage } from "src/interfaces/mq";
10
+
11
+
12
+ @Injectable()
13
+ export class TwilioSMSService implements ISMS {
14
+ private readonly logger = new Logger(TwilioSMSService.name);
15
+
16
+ constructor(
17
+ @Inject(commonConfig.KEY)
18
+ private commonConfiguration: ConfigType<typeof commonConfig>,
19
+ private publisherFactory: PublisherFactory<any>,
20
+ private smsTemplateService: SmsTemplateService,
21
+ ) {
22
+ // super(commonConfiguration, 'OTPQueuePublisher', publisherFactory, smsTemplateService);
23
+ }
24
+
25
+ async sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<any> {
26
+ const accountSid = this.commonConfiguration.twilio.accountSid;
27
+ const authToken = this.commonConfiguration.twilio.authToken;
28
+ const twilioNumber = this.commonConfiguration.twilio.number;
29
+ if (!accountSid || !authToken || !twilioNumber) {
30
+ throw new Error("Missing COMMON_TWILIO_ACCOUNT_SID or COMMON_TWILIO_AUTH_TOKEN or COMMON_TWILIO_NUMBER in env.");
31
+ }
32
+
33
+ const message = {
34
+ payload: {
35
+ body: body,
36
+ to: to,
37
+ },
38
+ };
39
+
40
+ // Send using queue if the developer has explicitly invoked with true.
41
+ if (shouldQueueSms === true) {
42
+ await this.sendSMSAsynchronously(message);
43
+ }
44
+ // If developer has not, however system config mandates that we send using queue, still we send.
45
+ else if (shouldQueueSms === false && this.commonConfiguration.shouldQueueSms === true) {
46
+ await this.sendSMSAsynchronously(message);
47
+ }
48
+ // Else we send synch
49
+ else {
50
+ await this.sendSMSSynchronously(message);
51
+ }
52
+
53
+ return message;
54
+ }
55
+
56
+ async sendSMSUsingTemplate(to: string, templateName: string, templateParams: any, shouldQueueSms: boolean): Promise<any> {
57
+ // Load template and evaluate it.
58
+ const smsTemplate = await this.smsTemplateService.findOneByName(templateName);
59
+ if (!smsTemplate) {
60
+ throw new Error(`Invalid template name ${templateName}`);
61
+ }
62
+
63
+ // Evaluate the body template.
64
+ let body = '';
65
+ try {
66
+ const bodyTemplate = Handlebars.compile(smsTemplate.body);
67
+ body = bodyTemplate(templateParams);
68
+ } catch (error) {
69
+ throw new Error('Unable to compile sms template body');
70
+ }
71
+ // Finally send the email.
72
+ return await this.sendSMS(to, body, shouldQueueSms);
73
+
74
+ }
75
+
76
+ async sendSMSAsynchronously(message) {
77
+ const { to } = message.payload;
78
+ this.publisherFactory.publish(message, 'TwilioSmsQueuePublisher');
79
+ this.logger.debug(`Queueing SMS to ${to} with message ${JSON.stringify(message)}`);
80
+ }
81
+
82
+ async sendSMSSynchronously(message: QueueMessage<any>): Promise<any> {
83
+ const accountSid = this.commonConfiguration.twilio.accountSid;
84
+ const authToken = this.commonConfiguration.twilio.authToken;
85
+ const twilioNumber = this.commonConfiguration.twilio.number;
86
+ if (!accountSid || !authToken || !twilioNumber) {
87
+ throw new Error("Missing COMMON_TWILIO_ACCOUNT_SID or COMMON_TWILIO_AUTH_TOKEN or COMMON_TWILIO_NUMBER in env.");
88
+ }
89
+
90
+ const { to, body } = message.payload;
91
+
92
+ const client = twilio(accountSid, authToken);
93
+ try {
94
+ const toSplit = to.split(',');
95
+
96
+ const r = [];
97
+
98
+ for (let i = 0; i < toSplit.length; i++) {
99
+ const actualTo = toSplit[i];
100
+ const twilioResponseMsg = await client.messages.create({
101
+ body: body,
102
+ from: twilioNumber,
103
+ to: actualTo,
104
+ });
105
+
106
+ this.logger.debug(`Sending SMS to ${actualTo} using Twilio`);
107
+ this.logger.debug(`Twilio response: `);
108
+ this.logger.debug(JSON.stringify(twilioResponseMsg))
109
+
110
+ r.push(twilioResponseMsg);
111
+ }
112
+
113
+ return r;
114
+ } catch (error) {
115
+ throw new Error(error);
116
+ }
117
+ }
118
+ }
@@ -10,6 +10,7 @@ import { CRUDService } from './crud.service';
10
10
  import { IS_SCHEDULED_JOB_PROVIDER } from 'src/decorators/scheduled-job-provider.decorator';
11
11
  import { IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER } from 'src/decorators/dashboard-selection-provider.decorator';
12
12
  import { IS_DASHBOARD_QUESTION_DATA_PROVIDER } from 'src/decorators/dashboard-question-data-provider.decorator';
13
+ import { IS_MAIL_PROVIDER } from 'src/decorators/mail-provider.decorator';
13
14
 
14
15
  @Injectable()
15
16
  export class SolidIntrospectService implements OnApplicationBootstrap {
@@ -40,7 +41,6 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
40
41
  .filter((provider) => this.isSelectionProvider(provider));
41
42
 
42
43
  selectionProviders.forEach((selectionProvider) => {
43
- // @ts-ignore
44
44
  this.solidRegistry.registerSelectionProvider(selectionProvider);
45
45
  });
46
46
 
@@ -50,7 +50,6 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
50
50
  .filter((provider) => this.isDashboardVariableSelectionProvider(provider));
51
51
 
52
52
  dashboardVariableSelectionProviders.forEach((dashboardSelectionProvider) => {
53
- // @ts-ignore
54
53
  this.solidRegistry.registerDashboardVariableSelectionProvider(dashboardSelectionProvider);
55
54
  });
56
55
 
@@ -60,7 +59,6 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
60
59
  .filter((provider) => this.isDashboardQuestionDataProvider(provider));
61
60
 
62
61
  dashboardQuestionDataProviders.forEach((provider) => {
63
- // @ts-ignore
64
62
  this.solidRegistry.registerDashboardQuestionDataProvider(provider);
65
63
  });
66
64
 
@@ -81,7 +79,6 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
81
79
  .filter((provider) => this.isSolidDatabaseModule(provider));
82
80
 
83
81
  solidDatabaseModules.forEach((solidDatabaseModule) => {
84
- // @ts-ignore
85
82
  this.solidRegistry.registerSolidDatabaseModule(solidDatabaseModule);
86
83
  });
87
84
 
@@ -110,10 +107,17 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
110
107
  .filter((provider) => this.isScheduledJobProvider(provider));
111
108
 
112
109
  scheduledJobProviders.forEach((scheduledJobProvider) => {
113
- // @ts-ignore
114
110
  this.solidRegistry.registerScheduledJobProvider(scheduledJobProvider);
115
111
  });
116
112
 
113
+ // Register all IMail implementations
114
+ const mailProviders = this.discoveryService
115
+ .getProviders()
116
+ .filter((provider) => this.isMailProvider(provider));
117
+
118
+ mailProviders.forEach((mailProvider) => {
119
+ this.solidRegistry.registerMailProvider(mailProvider);
120
+ });
117
121
  }
118
122
 
119
123
  isDashboardQuestionDataProvider(providerWrapper: InstanceWrapper<any>) {
@@ -196,6 +200,18 @@ export class SolidIntrospectService implements OnApplicationBootstrap {
196
200
  return !!isSolidDatabaseModule;
197
201
  }
198
202
 
203
+ private isMailProvider(provider: InstanceWrapper) {
204
+ const { instance } = provider;
205
+ if (!instance) return false;
206
+
207
+ const isMailProvider = this.reflector.get<boolean>(
208
+ IS_MAIL_PROVIDER,
209
+ instance.constructor,
210
+ );
211
+
212
+ return !!isMailProvider;
213
+ }
214
+
199
215
  private isModule(provider: InstanceWrapper): boolean {
200
216
  const metatype = provider.metatype;
201
217
  // Check if it's a Static Module (Class-Based)
@@ -86,8 +86,8 @@ import { ApiEmailQueuePublisher } from './jobs/api-email-publisher.service';
86
86
  import { ApiEmailQueueSubscriber } from './jobs/api-email-subscriber.service';
87
87
  import { TestQueuePublisherDatabase } from './jobs/database/test-queue-publisher-database.service';
88
88
  import { TestQueueSubscriberDatabase } from './jobs/database/test-queue-subscriber-database.service';
89
- import { EmailQueuePublisher } from './jobs/email-publisher.service';
90
- import { EmailQueueSubscriber } from './jobs/email-subscriber.service';
89
+ import { SmtpEmailQueuePublisherRabbitmq } from './jobs/smtp-email-publisher.service';
90
+ import { SmtpEmailQueueSubscriberRabbitmq } from './jobs/smtp-email-subscriber.service';
91
91
  import { OTPQueuePublisher } from './jobs/otp-publisher.service';
92
92
  import { OTPQueueSubscriber } from './jobs/otp-subscriber.service';
93
93
  import { SmsQueuePublisher } from './jobs/sms-publisher.service';
@@ -178,14 +178,19 @@ import { ApiEmailQueuePublisherDatabase } from './jobs/database/api-email-publis
178
178
  import { ApiEmailQueueSubscriberDatabase } from './jobs/database/api-email-subscriber-database.service';
179
179
  import { ComputedFieldEvaluationPublisher } from './jobs/database/computed-field-evaluation-publisher.service';
180
180
  import { ComputedFieldEvaluationSubscriber } from './jobs/database/computed-field-evaluation-subscriber.service';
181
- import { EmailQueuePublisherDatabase } from './jobs/database/email-publisher-database.service';
182
- import { EmailQueueSubscriberDatabase } from './jobs/database/email-subscriber-database.service';
181
+ import { SmtpEmailQueuePublisherDatabase } from './jobs/database/smtp-email-publisher-database.service';
182
+ import { SmtpEmailQueueSubscriberDatabase } from './jobs/database/smtp-email-subscriber-database.service';
183
183
  import { GenerateCodePublisherDatabase } from './jobs/database/generate-code-publisher-database.service';
184
184
  import { GenerateCodeSubscriberDatabase } from './jobs/database/generate-code-subscriber-database.service';
185
185
  import { OTPQueuePublisherDatabase } from './jobs/database/otp-publisher-database.service';
186
186
  import { OTPQueueSubscriberDatabase } from './jobs/database/otp-subscriber-database.service';
187
187
  import { SmsQueuePublisherDatabase } from './jobs/database/sms-publisher-database.service';
188
188
  import { SmsQueueSubscriberDatabase } from './jobs/database/sms-subscriber-database.service';
189
+
190
+ import { TwilioSmsQueuePublisherDatabase } from './jobs/database/twilio-sms-publisher-database.service';
191
+ import { TwilioSmsQueueSubscriberDatabase } from './jobs/database/twilio-sms-subscriber-database.service';
192
+
193
+
189
194
  import { TriggerMcpClientPublisherDatabase } from './jobs/database/trigger-mcp-client-publisher-database.service';
190
195
  import { TriggerMcpClientSubscriberDatabase } from './jobs/database/trigger-mcp-client-subscriber-database.service';
191
196
  import { WhatsappQueuePublisherDatabase } from './jobs/database/whatsapp-publisher-database.service';
@@ -259,6 +264,9 @@ import { ViewMetadataRepository } from './repository/view-metadata.repository';
259
264
  import { SolidCreateModelLayoutMcpToolResponseHandler } from './services/mcp-tool-response-handlers/solid-save-model-layout-mcp-tool-response-handler.service';
260
265
  import { NoopsEntityComputedFieldProviderService } from './services/computed-fields/entity/noops-entity-computed-field-provider.service';
261
266
  import { AlphaNumExternalIdComputationProvider } from './services/computed-fields/entity/alpha-num-external-id-computed-field-provider';
267
+ import { MailFactory } from './factories/mail.factory';
268
+ import { TwilioSMSService } from './services/sms/TwilioSMSService';
269
+ import { PollerService } from './services/poller.service';
262
270
 
263
271
 
264
272
  @Global()
@@ -426,9 +434,11 @@ import { AlphaNumExternalIdComputationProvider } from './services/computed-field
426
434
  Msg91SMSService,
427
435
  Msg91OTPService,
428
436
  Msg91WhatsappService,
437
+ TwilioSMSService,
429
438
  SmsTemplateService,
430
439
  EmailTemplateService,
431
440
  PublisherFactory,
441
+ PollerService,
432
442
 
433
443
  McpToolResponseHandlerFactory,
434
444
  SolidCreateModuleMcpToolResponseHandler,
@@ -436,10 +446,10 @@ import { AlphaNumExternalIdComputationProvider } from './services/computed-field
436
446
  TriggerMcpClientPublisherDatabase,
437
447
  TriggerMcpClientSubscriberDatabase,
438
448
 
439
- EmailQueuePublisher,
440
- EmailQueueSubscriber,
441
- EmailQueuePublisherDatabase,
442
- EmailQueueSubscriberDatabase,
449
+ SmtpEmailQueuePublisherRabbitmq,
450
+ SmtpEmailQueueSubscriberRabbitmq,
451
+ SmtpEmailQueuePublisherDatabase,
452
+ SmtpEmailQueueSubscriberDatabase,
443
453
  ApiEmailQueuePublisher,
444
454
  ApiEmailQueueSubscriber,
445
455
  ApiEmailQueuePublisherDatabase,
@@ -448,6 +458,8 @@ import { AlphaNumExternalIdComputationProvider } from './services/computed-field
448
458
  SmsQueueSubscriber,
449
459
  SmsQueuePublisherDatabase,
450
460
  SmsQueueSubscriberDatabase,
461
+ TwilioSmsQueuePublisherDatabase,
462
+ TwilioSmsQueueSubscriberDatabase,
451
463
  OTPQueuePublisher,
452
464
  OTPQueueSubscriber,
453
465
  OTPQueuePublisherDatabase,
@@ -548,6 +560,7 @@ import { AlphaNumExternalIdComputationProvider } from './services/computed-field
548
560
  ViewMetadataRepository,
549
561
  SolidCreateModelLayoutMcpToolResponseHandler,
550
562
  AlphaNumExternalIdComputationProvider,
563
+ MailFactory,
551
564
  ],
552
565
  exports: [
553
566
  ModuleMetadataService,
@@ -565,6 +578,7 @@ import { AlphaNumExternalIdComputationProvider } from './services/computed-field
565
578
  ElasticEmailService,
566
579
  Msg91SMSService,
567
580
  Msg91OTPService,
581
+ TwilioSMSService,
568
582
  Msg91WhatsappService,
569
583
  TinyUrlService,
570
584
  PdfService,
@@ -589,6 +603,8 @@ import { AlphaNumExternalIdComputationProvider } from './services/computed-field
589
603
  ListOfValuesService,
590
604
  ConfigModule,
591
605
  PublisherFactory,
606
+ MailFactory,
607
+ PollerService
592
608
  ],
593
609
  })
594
610
  export class SolidCoreModule { }
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-publisher-database.service.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/email-publisher-database.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAEnF,qBACa,2BAA4B,SAAQ,iBAAiB,CAAC,GAAG,CAAC;IAE/D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;gBAD5C,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB;IAKnE,OAAO,IAAI,mBAAmB;CAKjC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-publisher-database.service.js","sourceRoot":"","sources":["../../../src/jobs/database/email-publisher-database.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,kGAA8D;AAC9D,sFAA8E;AAC9E,0EAAmE;AAEnE,iGAAmF;AAG5E,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,8CAAsB;IACnE,YACuB,gBAAkC,EAClC,qBAA4C;QAE/D,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAH5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,0BAAqB,GAArB,qBAAqB,CAAuB;IAGnE,CAAC;IAED,OAAO;QACH,OAAO;YACH,GAAG,sCAAgB;SACtB,CAAA;IACL,CAAC;CACJ,CAAA;AAbY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;qCAGgC,qCAAgB;QACX,gDAAqB;GAH1D,2BAA2B,CAavC","sourcesContent":["import { Injectable } from '@nestjs/common';\n\nimport mailQueueOptions from './email-queue-options-database';\nimport { MqMessageQueueService } from 'src/services/mq-message-queue.service';\nimport { MqMessageService } from 'src/services/mq-message.service';\nimport { QueuesModuleOptions } from 'src/interfaces';\nimport { DatabasePublisher } from 'src/services/queues/database-publisher.service';\n\n@Injectable()\nexport class EmailQueuePublisherDatabase extends DatabasePublisher<any> {\n constructor(\n protected readonly mqMessageService: MqMessageService,\n protected readonly mqMessageQueueService: MqMessageQueueService,\n ) {\n super(mqMessageService, mqMessageQueueService);\n }\n\n options(): QueuesModuleOptions {\n return {\n ...mailQueueOptions\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-queue-options-database.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/email-queue-options-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;;;;;;AAK5C,wBAIE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-queue-options-database.js","sourceRoot":"","sources":["../../../src/jobs/database/email-queue-options-database.ts"],"names":[],"mappings":";;AAAA,iDAA4C;AAG5C,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAElD,kBAAe;IACX,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,uBAAU,CAAC,QAAQ;IACzB,SAAS,EAAE,eAAe;CAC7B,CAAC","sourcesContent":["import { BrokerType } from \"src/interfaces\";\n\n\nconst MAIL_QUEUE_NAME = 'solid_email_db_queue_v3';\n\nexport default {\n name: 'solidEmailInstance',\n type: BrokerType.Database,\n queueName: MAIL_QUEUE_NAME,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-subscriber-database.service.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/email-subscriber-database.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,qBACa,4BAA6B,SAAQ,kBAAkB,CAAC,GAAG,CAAC;IAEjE,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;gBAFpC,YAAY,EAAE,gBAAgB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB;IAKzD,OAAO,IAAI,mBAAmB;IAM9B,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC;CAGvC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-subscriber-database.service.js","sourceRoot":"","sources":["../../../src/jobs/database/email-subscriber-database.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,kGAA8D;AAE9D,0EAAmE;AACnE,sFAA8E;AAC9E,mGAAqF;AACrF,+EAAwE;AAIjE,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,gDAAuB;IACrE,YACqB,YAA8B,EACtC,gBAAkC,EAClC,qBAA4C;QAErD,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAJ9B,iBAAY,GAAZ,YAAY,CAAkB;QACtC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,0BAAqB,GAArB,qBAAqB,CAAuB;IAGzD,CAAC;IAED,OAAO;QACH,OAAO;YACH,GAAG,sCAAgB;SACtB,CAAA;IACL,CAAC;IAED,SAAS,CAAC,OAA0B;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;CACJ,CAAA;AAlBY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;qCAG0B,qCAAgB;QACpB,qCAAgB;QACX,gDAAqB;GAJhD,4BAA4B,CAkBxC","sourcesContent":["import { Injectable } from '@nestjs/common';\n\nimport mailQueueOptions from './email-queue-options-database';\nimport { QueueMessage } from 'src/interfaces/mq';\nimport { MqMessageService } from 'src/services/mq-message.service';\nimport { MqMessageQueueService } from 'src/services/mq-message-queue.service';\nimport { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';\nimport { SMTPEMailService } from 'src/services/mail/smtp-email.service';\nimport { QueuesModuleOptions } from 'src/interfaces';\n\n@Injectable()\nexport class EmailQueueSubscriberDatabase extends DatabaseSubscriber<any> {\n constructor(\n private readonly emailService: SMTPEMailService,\n readonly mqMessageService: MqMessageService,\n readonly mqMessageQueueService: MqMessageQueueService,\n ) {\n super(mqMessageService, mqMessageQueueService);\n }\n\n options(): QueuesModuleOptions {\n return {\n ...mailQueueOptions\n }\n }\n\n subscribe(message: QueueMessage<any>) {\n return this.emailService.sendEmailSynchronously(message);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-publisher.service.d.ts","sourceRoot":"","sources":["../../src/jobs/email-publisher.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,qBACa,mBAAoB,SAAQ,iBAAiB,CAAC,GAAG,CAAC;IAEvD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;gBAD5C,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB;IAKnE,OAAO,IAAI,mBAAmB;CAKjC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-publisher.service.js","sourceRoot":"","sources":["../../src/jobs/email-publisher.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,8FAAmF;AACnF,gFAAqD;AACrD,mFAA8E;AAC9E,uEAAmE;AAI5D,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,8CAAsB;IAC3D,YACuB,gBAAkC,EAClC,qBAA4C;QAE/D,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAH5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,0BAAqB,GAArB,qBAAqB,CAAuB;IAGnE,CAAC;IAED,OAAO;QACH,OAAO;YACH,GAAG,6BAAgB;SACtB,CAAA;IACL,CAAC;CACJ,CAAA;AAbY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAGgC,qCAAgB;QACX,gDAAqB;GAH1D,mBAAmB,CAa/B","sourcesContent":["import { Injectable } from '@nestjs/common';\n\nimport { RabbitMqPublisher } from 'src/services/queues/rabbitmq-publisher.service';\nimport mailQueueOptions from './email-queue-options';\nimport { MqMessageQueueService } from 'src/services/mq-message-queue.service';\nimport { MqMessageService } from 'src/services/mq-message.service';\nimport { QueuesModuleOptions } from \"../interfaces\";\n\n@Injectable()\nexport class EmailQueuePublisher extends RabbitMqPublisher<any> {\n constructor(\n protected readonly mqMessageService: MqMessageService,\n protected readonly mqMessageQueueService: MqMessageQueueService,\n ) {\n super(mqMessageService, mqMessageQueueService);\n }\n\n options(): QueuesModuleOptions {\n return {\n ...mailQueueOptions\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-queue-options.d.ts","sourceRoot":"","sources":["../../src/jobs/email-queue-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;;;;;AAI3C,wBAQE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-queue-options.js","sourceRoot":"","sources":["../../src/jobs/email-queue-options.ts"],"names":[],"mappings":";;AACA,8CAA2C;AAE3C,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C,kBAAe;IACX,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,uBAAU,CAAC,QAAQ;IACzB,SAAS,EAAE,eAAe;CAK7B,CAAC","sourcesContent":["import { QueueMessage } from 'src/interfaces/mq';\nimport { BrokerType } from \"../interfaces\";\n\nconst MAIL_QUEUE_NAME = 'solid_email_queue_v3';\n\nexport default {\n name: 'solidEmailInstance',\n type: BrokerType.RabbitMQ,\n queueName: MAIL_QUEUE_NAME,\n // receive: async (message: QueueMessage<any>) => { // Default receive handler\n // console.log(`Received message: ${JSON.stringify(message)} from queue ${MAIL_QUEUE_NAME}`);\n // return 'Received';\n // },\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-subscriber.service.d.ts","sourceRoot":"","sources":["../../src/jobs/email-subscriber.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,qBACa,oBAAqB,SAAQ,kBAAkB,CAAC,GAAG,CAAC;IAEzD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;gBAFpC,YAAY,EAAE,gBAAgB,EACtC,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB;IAKzD,OAAO,IAAI,mBAAmB;IAM9B,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC;CAGvC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email-subscriber.service.js","sourceRoot":"","sources":["../../src/jobs/email-subscriber.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,gFAAqD;AACrD,gGAAqF;AAErF,4EAAuE;AACvE,uEAAmE;AACnE,mFAA8E;AAIvE,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,gDAAuB;IAC7D,YACqB,YAA8B,EACtC,gBAAkC,EAClC,qBAA4C;QAErD,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAJ9B,iBAAY,GAAZ,YAAY,CAAkB;QACtC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,0BAAqB,GAArB,qBAAqB,CAAuB;IAGzD,CAAC;IAED,OAAO;QACH,OAAO;YACH,GAAG,6BAAgB;SACtB,CAAA;IACL,CAAC;IAED,SAAS,CAAC,OAA0B;QAChC,OAAO,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;CACJ,CAAA;AAlBY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAG0B,qCAAgB;QACpB,qCAAgB;QACX,gDAAqB;GAJhD,oBAAoB,CAkBhC","sourcesContent":["import { Injectable } from '@nestjs/common';\n\nimport mailQueueOptions from './email-queue-options';\nimport { RabbitMqSubscriber } from 'src/services/queues/rabbitmq-subscriber.service';\nimport { QueueMessage } from 'src/interfaces/mq';\nimport { SMTPEMailService } from '../services/mail/smtp-email.service';\nimport { MqMessageService } from 'src/services/mq-message.service';\nimport { MqMessageQueueService } from 'src/services/mq-message-queue.service';\nimport { QueuesModuleOptions } from \"../interfaces\";\n\n@Injectable()\nexport class EmailQueueSubscriber extends RabbitMqSubscriber<any> {\n constructor(\n private readonly emailService: SMTPEMailService,\n readonly mqMessageService: MqMessageService,\n readonly mqMessageQueueService: MqMessageQueueService,\n ) {\n super(mqMessageService, mqMessageQueueService);\n }\n\n options(): QueuesModuleOptions {\n return {\n ...mailQueueOptions\n }\n }\n\n subscribe(message: QueueMessage<any>) {\n return this.emailService.sendEmailSynchronously(message);\n }\n}\n"]}