@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidstarters/solid-core",
3
- "version": "1.2.145",
3
+ "version": "1.2.148",
4
4
  "description": "This module is a NestJS module containing all the required core providers required by a Solid application",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -67,6 +67,7 @@
67
67
  "reflect-metadata": "^0.1.13",
68
68
  "rxjs": "^7.8.1",
69
69
  "swagger-ui-express": "^5.0.0",
70
+ "twilio": "^5.8.0",
70
71
  "uuid": "^9.0.1",
71
72
  "xlsx": "^0.18.5"
72
73
  },
@@ -87,10 +88,10 @@
87
88
  "@nestjs/typeorm": "^10.0.1",
88
89
  "nest-commander": "^3.12.5",
89
90
  "nest-winston": "^1.9.7",
91
+ "nestjs-cls": "^5.4.3",
90
92
  "typeorm": "^0.3.20",
91
93
  "typeorm-naming-strategies": "^4.1.0",
92
- "winston": "^3.17.0",
93
- "nestjs-cls": "^5.4.3"
94
+ "winston": "^3.17.0"
94
95
  },
95
96
  "devDependencies": {
96
97
  "@angular-devkit/schematics": "^19.2.6",
@@ -2,7 +2,7 @@ import { registerAs } from '@nestjs/config';
2
2
 
3
3
  export default registerAs('common', () => {
4
4
  return {
5
- emailProvider: process.env.COMMON_EMAIL_PROVIDER,
5
+ emailProvider: process.env.COMMON_EMAIL_PROVIDER ?? "SMTPEMailService",
6
6
  emailTemplateSeederFiles: process.env.COMMON_EMAIL_TEMPLATE_SEEDER_FILES,
7
7
  smsProvider: process.env.COMMON_SMS_PROVIDER,
8
8
  smsTemplateSeederFiles: process.env.COMMON_SMS_TEMPLATE_SEEDER_FILES,
@@ -23,6 +23,11 @@ export default registerAs('common', () => {
23
23
  url: process.env.COMMON_MSG91_SMS_URL,
24
24
  apiKey: process.env.COMMON_MSG91_SMS_API_KEY,
25
25
  },
26
+ twilio: {
27
+ accountSid: process.env.COMMON_TWILIO_ACCOUNT_SID,
28
+ authToken: process.env.COMMON_TWILIO_AUTH_TOKEN,
29
+ number: process.env.COMMON_TWILIO_NUMBER,
30
+ },
26
31
  shortUrl: {
27
32
  apiUrl: process.env.COMMON_SHORT_URL_API_URL,
28
33
  apiKey: process.env.COMMON_SHORT_URL_API_KEY,
@@ -0,0 +1,7 @@
1
+ export const IS_MAIL_PROVIDER = 'IS_MAIL_PROVIDER';
2
+
3
+ export const MailProvider = () => {
4
+ return (target: Function) => {
5
+ Reflect.defineMetadata(IS_MAIL_PROVIDER, true, target);
6
+ };
7
+ };
@@ -0,0 +1,38 @@
1
+ import { Inject, Injectable, Logger } from "@nestjs/common";
2
+ import { ConfigType } from "@nestjs/config";
3
+ import { ModuleRef } from "@nestjs/core";
4
+ import commonConfig from "src/config/common.config";
5
+ import { SolidRegistry } from "src/helpers/solid-registry";
6
+ import { IMail } from "src/interfaces";
7
+
8
+ function norm(s?: string) {
9
+ return s?.trim().toLowerCase();
10
+ }
11
+
12
+ // This factory will be use to return a mail service instance, using the configured environment variables
13
+ @Injectable()
14
+ export class MailFactory {
15
+ private readonly logger = new Logger(this.constructor.name);
16
+ constructor(
17
+ private readonly moduleRef: ModuleRef, // Use the module ref to dynamically resolve the mail service
18
+ private readonly solidRegistry: SolidRegistry,
19
+ @Inject(commonConfig.KEY)
20
+ private readonly commonConfiguration: ConfigType<typeof commonConfig>,
21
+ ) { }
22
+
23
+
24
+ getMailService(): IMail {
25
+ const mailServiceName = this.commonConfiguration.emailProvider;
26
+ const mailProviders = this.solidRegistry.getMailProviders();
27
+ // Return the instance which matches the mailServiceName
28
+ if (!mailProviders.length) {
29
+ // throw new Error("No mail providers are registered.");
30
+ this.logger.error("No mail providers are registered.");
31
+ }
32
+
33
+ const mailServiceProvider = mailProviders.find(provider => provider.name === mailServiceName);
34
+
35
+ return mailServiceProvider.instance as IMail;
36
+ }
37
+
38
+ }
@@ -65,6 +65,11 @@ export class SolidRegistry {
65
65
  private computedFieldMetadata: ComputedFieldMetadata[] = [];
66
66
  private dashboardVariableSelectionProviders: Set<InstanceWrapper> = new Set();
67
67
  private dashboardQuestionDataProviders: Set<InstanceWrapper> = new Set();
68
+ private mailProviders: Set<InstanceWrapper> = new Set();
69
+
70
+ registerMailProvider(mailProvider: InstanceWrapper): void {
71
+ this.mailProviders.add(mailProvider);
72
+ }
68
73
 
69
74
  registerController(name: string, methodNames: string[]): void {
70
75
  this.controllers.add({ name: name, methods: methodNames });
@@ -106,6 +111,10 @@ export class SolidRegistry {
106
111
  this.modules = new Set(modules);
107
112
  }
108
113
 
114
+ getMailProviders(): Array<InstanceWrapper> {
115
+ return Array.from(this.mailProviders);
116
+ }
117
+
109
118
  getSeeders(): Array<InstanceWrapper> {
110
119
  return Array.from(this.seeders);
111
120
  }
package/src/index.ts CHANGED
@@ -21,6 +21,8 @@ export * from './decorators/roles.decorator'
21
21
  export * from './decorators/selection-provider.decorator'
22
22
  export * from './decorators/solid-database-module.decorator'
23
23
  export * from './decorators/solid-service.decorator'
24
+ export * from './decorators/mail-provider.decorator'
25
+
24
26
  export * from './dtos/basic-filters.dto'
25
27
  export * from './dtos/solid-request-context.dto'
26
28
  export * from './dtos/change-password.dto'
@@ -177,9 +179,9 @@ export * from './services/scheduled-jobs/scheduler.service';
177
179
  export * from './jobs/api-email-publisher.service'
178
180
  export * from './jobs/api-email-queue-options'
179
181
  export * from './jobs/api-email-subscriber.service'
180
- export * from './jobs/email-publisher.service'
181
- export * from './jobs/email-queue-options'
182
- export * from './jobs/email-subscriber.service'
182
+ export { SmtpEmailQueuePublisherRabbitmq, SmtpEmailQueuePublisherRabbitmq as EmailQueuePublisher } from './jobs/smtp-email-publisher.service' // alias for backward compatibility
183
+ export * from './jobs/smtp-email-queue-options'
184
+ export { SmtpEmailQueueSubscriberRabbitmq, SmtpEmailQueueSubscriberRabbitmq as EmailQueueSubscriber } from './jobs/smtp-email-subscriber.service' // alias for backward compatibility
183
185
  export * from './jobs/otp-publisher.service'
184
186
  export * from './jobs/otp-queue-options'
185
187
  export * from './jobs/otp-subscriber.service'
@@ -241,6 +243,8 @@ export * from './services/short-url/tiny-url.service'
241
243
  export * from './services/sms/Msg91BaseSMSService' //rename
242
244
  export * from './services/sms/Msg91OTPService' //rename
243
245
  export * from './services/sms/Msg91SMSService' //rename
246
+ export * from './services/sms/TwilioSMSService' //rename
247
+ export * from './services/poller.service'
244
248
  export * from './services/sms-template.service'
245
249
  export * from './services/solid-introspect.service'
246
250
  export * from './services/user.service'
@@ -261,6 +265,9 @@ export * from './services/queues/publisher-factory.service'
261
265
  export * from './services/queues/database-publisher.service'
262
266
  export * from './services/queues/database-subscriber.service'
263
267
 
268
+ // Factories
269
+ export * from './factories/mail.factory'
270
+
264
271
  // Repositories
265
272
  export * from './repository/solid-base.repository'
266
273
  export * from './repository/security-rule.repository'
package/src/interfaces.ts CHANGED
@@ -159,7 +159,7 @@ export class EventDetails<T> {
159
159
  ) { }
160
160
  }
161
161
 
162
- export interface IMail {
162
+ export interface IMail<TResponse=unknown> {
163
163
  sendEmail(
164
164
  to: string,
165
165
  subject: string,
@@ -169,7 +169,10 @@ export interface IMail {
169
169
  attachments?: MailAttachment[],
170
170
  parentEntity?: any,
171
171
  parentEntityId?: any,
172
- ): Promise<void>;
172
+ cc?: string[],
173
+ bcc?: string[],
174
+ from?: string,
175
+ ): Promise<TResponse>;
173
176
 
174
177
  sendEmailUsingTemplate(
175
178
  to: string,
@@ -180,18 +183,21 @@ export interface IMail {
180
183
  attachments?: MailAttachment[],
181
184
  parentEntity?: any,
182
185
  parentEntityId?: any,
183
- ): Promise<void>;
186
+ cc?: string[],
187
+ bcc?: string[],
188
+ from?: string,
189
+ ): Promise<TResponse>;
184
190
  }
185
191
 
186
192
  export interface ISMS {
187
- sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<void>;
193
+ sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<any>;
188
194
 
189
195
  sendSMSUsingTemplate(
190
196
  to: string,
191
197
  templateName: string,
192
198
  templateParams: any,
193
199
  shouldQueueSms: boolean,
194
- ): Promise<void>;
200
+ ): Promise<any>;
195
201
  }
196
202
 
197
203
  export interface MailAttachmentWrapper {
@@ -7,6 +7,7 @@ import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
7
7
  import { ElasticEmailService } from 'src/services/mail/elastic-email.service';
8
8
  import { QueuesModuleOptions } from 'src/interfaces';
9
9
  import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
10
+ import { PollerService } from 'src/services/poller.service';
10
11
 
11
12
  @Injectable()
12
13
  export class ApiEmailQueueSubscriberDatabase extends DatabaseSubscriber<any> {
@@ -14,8 +15,9 @@ export class ApiEmailQueueSubscriberDatabase extends DatabaseSubscriber<any> {
14
15
  private readonly emailService: ElasticEmailService,
15
16
  readonly mqMessageService: MqMessageService,
16
17
  readonly mqMessageQueueService: MqMessageQueueService,
18
+ readonly poller: PollerService,
17
19
  ) {
18
- super(mqMessageService, mqMessageQueueService);
20
+ super(mqMessageService, mqMessageQueueService, poller);
19
21
  }
20
22
 
21
23
  options(): QueuesModuleOptions {
@@ -7,15 +7,17 @@ import { MqMessageService } from "src/services/mq-message.service";
7
7
  import { DatabaseSubscriber } from "src/services/queues/database-subscriber.service";
8
8
  import { ComputedFieldEvaluationPayload } from "src/subscribers/computed-entity-field.subscriber";
9
9
  import computedFieldEvaluationQueueOptions from "./computed-field-evaluation-queue-options";
10
+ import { PollerService } from "src/services/poller.service";
10
11
 
11
12
  @Injectable()
12
13
  export class ComputedFieldEvaluationSubscriber extends DatabaseSubscriber<ComputedFieldEvaluationPayload> {
13
14
  constructor(
14
15
  readonly mqMessageService: MqMessageService,
15
16
  readonly mqMessageQueueService: MqMessageQueueService,
16
- readonly solidRegistry: SolidRegistry
17
+ readonly solidRegistry: SolidRegistry,
18
+ readonly poller: PollerService,
17
19
  ) {
18
- super(mqMessageService, mqMessageQueueService);
20
+ super(mqMessageService, mqMessageQueueService, poller);
19
21
  }
20
22
 
21
23
  options(): QueuesModuleOptions {
@@ -8,6 +8,7 @@ import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.serv
8
8
  import generateCodeQueueOptions from './generate-code-queue-options-database';
9
9
  import { SolidFieldType } from 'src/dtos/create-field-metadata.dto';
10
10
  import { ModelMetadataService } from 'src/services/model-metadata.service';
11
+ import { PollerService } from 'src/services/poller.service';
11
12
 
12
13
  @Injectable()
13
14
  export class GenerateCodeSubscriberDatabase extends DatabaseSubscriber<CodeGenerationOptions> {
@@ -16,10 +17,11 @@ export class GenerateCodeSubscriberDatabase extends DatabaseSubscriber<CodeGener
16
17
  constructor(
17
18
  readonly mqMessageService: MqMessageService,
18
19
  readonly mqMessageQueueService: MqMessageQueueService,
20
+ readonly poller: PollerService,
19
21
  @Inject(forwardRef(() => ModelMetadataService))
20
22
  readonly modelMetadataService: ModelMetadataService,
21
23
  ) {
22
- super(mqMessageService, mqMessageQueueService);
24
+ super(mqMessageService, mqMessageQueueService, poller);
23
25
  }
24
26
 
25
27
  options(): QueuesModuleOptions {
@@ -7,15 +7,17 @@ import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
7
7
  import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
8
8
  import { Msg91OTPService } from 'src/services/sms/Msg91OTPService';
9
9
  import { QueuesModuleOptions } from 'src/interfaces';
10
+ import { PollerService } from 'src/services/poller.service';
10
11
 
11
12
  @Injectable()
12
13
  export class OTPQueueSubscriberDatabase extends DatabaseSubscriber<any> {
13
14
  constructor(
14
15
  private readonly otpService: Msg91OTPService,
15
16
  readonly mqMessageService: MqMessageService,
17
+ readonly poller: PollerService,
16
18
  readonly mqMessageQueueService: MqMessageQueueService,
17
19
  ) {
18
- super(mqMessageService, mqMessageQueueService);
20
+ super(mqMessageService, mqMessageQueueService, poller);
19
21
  }
20
22
 
21
23
  options(): QueuesModuleOptions {
@@ -7,6 +7,7 @@ import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
7
7
  import { Msg91SMSService } from 'src/services/sms/Msg91SMSService';
8
8
  import { QueuesModuleOptions } from 'src/interfaces';
9
9
  import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
10
+ import { PollerService } from 'src/services/poller.service';
10
11
 
11
12
  @Injectable()
12
13
  export class SmsQueueSubscriberDatabase extends DatabaseSubscriber<any> {
@@ -14,8 +15,9 @@ export class SmsQueueSubscriberDatabase extends DatabaseSubscriber<any> {
14
15
  private readonly smsService: Msg91SMSService,
15
16
  readonly mqMessageService: MqMessageService,
16
17
  readonly mqMessageQueueService: MqMessageQueueService,
18
+ readonly poller: PollerService,
17
19
  ) {
18
- super(mqMessageService, mqMessageQueueService);
20
+ super(mqMessageService, mqMessageQueueService, poller);
19
21
  }
20
22
 
21
23
  options(): QueuesModuleOptions {
@@ -25,6 +27,6 @@ export class SmsQueueSubscriberDatabase extends DatabaseSubscriber<any> {
25
27
  }
26
28
 
27
29
  subscribe(message: QueueMessage<any>) {
28
- this.smsService.sendSMSSynchronously(message);
30
+ return this.smsService.sendSMSSynchronously(message);
29
31
  }
30
32
  }
@@ -1,13 +1,13 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import mailQueueOptions from './email-queue-options-database';
3
+ import mailQueueOptions from './smtp-email-queue-options-database';
4
4
  import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
5
5
  import { MqMessageService } from 'src/services/mq-message.service';
6
6
  import { QueuesModuleOptions } from 'src/interfaces';
7
7
  import { DatabasePublisher } from 'src/services/queues/database-publisher.service';
8
8
 
9
9
  @Injectable()
10
- export class EmailQueuePublisherDatabase extends DatabasePublisher<any> {
10
+ export class SmtpEmailQueuePublisherDatabase extends DatabasePublisher<any> {
11
11
  constructor(
12
12
  protected readonly mqMessageService: MqMessageService,
13
13
  protected readonly mqMessageQueueService: MqMessageQueueService,
@@ -1,21 +1,23 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import mailQueueOptions from './email-queue-options-database';
3
+ import mailQueueOptions from './smtp-email-queue-options-database';
4
4
  import { QueueMessage } from 'src/interfaces/mq';
5
5
  import { MqMessageService } from 'src/services/mq-message.service';
6
6
  import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
7
7
  import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
8
8
  import { SMTPEMailService } from 'src/services/mail/smtp-email.service';
9
9
  import { QueuesModuleOptions } from 'src/interfaces';
10
+ import { PollerService } from 'src/services/poller.service';
10
11
 
11
12
  @Injectable()
12
- export class EmailQueueSubscriberDatabase extends DatabaseSubscriber<any> {
13
+ export class SmtpEmailQueueSubscriberDatabase extends DatabaseSubscriber<any> {
13
14
  constructor(
14
15
  private readonly emailService: SMTPEMailService,
15
16
  readonly mqMessageService: MqMessageService,
16
17
  readonly mqMessageQueueService: MqMessageQueueService,
18
+ readonly poller: PollerService,
17
19
  ) {
18
- super(mqMessageService, mqMessageQueueService);
20
+ super(mqMessageService, mqMessageQueueService, poller);
19
21
  }
20
22
 
21
23
  options(): QueuesModuleOptions {
@@ -6,6 +6,7 @@ import { MqMessageService } from '../../services/mq-message.service';
6
6
  import { MqMessageQueueService } from '../../services/mq-message-queue.service';
7
7
  import { QueuesModuleOptions } from "../../interfaces";
8
8
  import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
9
+ import { PollerService } from 'src/services/poller.service';
9
10
 
10
11
  @Injectable()
11
12
  export class TestQueueSubscriberDatabase extends DatabaseSubscriber<any> {
@@ -13,8 +14,9 @@ export class TestQueueSubscriberDatabase extends DatabaseSubscriber<any> {
13
14
  constructor(
14
15
  readonly mqMessageService: MqMessageService,
15
16
  readonly mqMessageQueueService: MqMessageQueueService,
17
+ readonly poller: PollerService
16
18
  ) {
17
- super(mqMessageService, mqMessageQueueService);
19
+ super(mqMessageService, mqMessageQueueService, poller);
18
20
  }
19
21
 
20
22
  options(): QueuesModuleOptions {
@@ -7,6 +7,7 @@ import { QueuesModuleOptions, TriggerMcpClientOptions } from "../../interfaces";
7
7
  import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
8
8
  import triggerMcpClientQueueOptions from "./trigger-mcp-client-queue-options";
9
9
  import { AiInteractionService } from 'src/services/ai-interaction.service';
10
+ import { PollerService } from 'src/services/poller.service';
10
11
 
11
12
  @Injectable()
12
13
  export class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<TriggerMcpClientOptions> {
@@ -15,9 +16,10 @@ export class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<Trigg
15
16
  constructor(
16
17
  readonly mqMessageService: MqMessageService,
17
18
  readonly mqMessageQueueService: MqMessageQueueService,
19
+ readonly poller: PollerService,
18
20
  readonly aiInteractionService: AiInteractionService,
19
21
  ) {
20
- super(mqMessageService, mqMessageQueueService);
22
+ super(mqMessageService, mqMessageQueueService, poller);
21
23
  }
22
24
 
23
25
  options(): QueuesModuleOptions {
@@ -0,0 +1,23 @@
1
+ import { Injectable } from '@nestjs/common';
2
+
3
+ import smsQueueOptions from './twilio-sms-queue-database-options';
4
+ import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
5
+ import { MqMessageService } from 'src/services/mq-message.service';
6
+ import { QueuesModuleOptions } from 'src/interfaces';
7
+ import { DatabasePublisher } from 'src/services/queues/database-publisher.service';
8
+
9
+ @Injectable()
10
+ export class TwilioSmsQueuePublisherDatabase extends DatabasePublisher<any> {
11
+ constructor(
12
+ protected readonly mqMessageService: MqMessageService,
13
+ protected readonly mqMessageQueueService: MqMessageQueueService,
14
+ ) {
15
+ super(mqMessageService, mqMessageQueueService);
16
+ }
17
+
18
+ options(): QueuesModuleOptions {
19
+ return {
20
+ ...smsQueueOptions
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,9 @@
1
+ import { BrokerType } from "src/interfaces";
2
+
3
+ const SMS_QUEUE_NAME = 'twilio_sms_queue_database';
4
+
5
+ export default {
6
+ name: 'twilioSmsInstance',
7
+ type: BrokerType.Database,
8
+ queueName: SMS_QUEUE_NAME,
9
+ };
@@ -0,0 +1,32 @@
1
+ import { Injectable } from '@nestjs/common';
2
+
3
+ import { QueueMessage } from 'src/interfaces/mq';
4
+ import smsQueueOptions from './twilio-sms-queue-database-options';
5
+ import { MqMessageService } from 'src/services/mq-message.service';
6
+ import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
7
+ import { QueuesModuleOptions } from 'src/interfaces';
8
+ import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
9
+ import { TwilioSMSService } from 'src/services/sms/TwilioSMSService';
10
+ import { PollerService } from 'src/services/poller.service';
11
+
12
+ @Injectable()
13
+ export class TwilioSmsQueueSubscriberDatabase extends DatabaseSubscriber<any> {
14
+ constructor(
15
+ private readonly smsService: TwilioSMSService,
16
+ readonly mqMessageService: MqMessageService,
17
+ readonly mqMessageQueueService: MqMessageQueueService,
18
+ readonly poller: PollerService,
19
+ ) {
20
+ super(mqMessageService, mqMessageQueueService, poller);
21
+ }
22
+
23
+ options(): QueuesModuleOptions {
24
+ return {
25
+ ...smsQueueOptions
26
+ }
27
+ }
28
+
29
+ subscribe(message: QueueMessage<any>) {
30
+ return this.smsService.sendSMSSynchronously(message);
31
+ }
32
+ }
@@ -8,6 +8,7 @@ import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
8
8
  import { Msg91WhatsappService } from 'src/services/whatsapp/Msg91WhatsappService';
9
9
  import { QueuesModuleOptions } from 'src/interfaces';
10
10
  import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
11
+ import { PollerService } from 'src/services/poller.service';
11
12
 
12
13
  @Injectable()
13
14
  export class WhatsappQueueSubscriberDatabase extends DatabaseSubscriber<any> {
@@ -15,8 +16,9 @@ export class WhatsappQueueSubscriberDatabase extends DatabaseSubscriber<any> {
15
16
  private readonly whatsappService: Msg91WhatsappService,
16
17
  readonly mqMessageService: MqMessageService,
17
18
  readonly mqMessageQueueService: MqMessageQueueService,
19
+ readonly poller: PollerService,
18
20
  ) {
19
- super(mqMessageService, mqMessageQueueService);
21
+ super(mqMessageService, mqMessageQueueService, poller);
20
22
  }
21
23
 
22
24
  options(): QueuesModuleOptions {
@@ -25,6 +25,6 @@ export class SmsQueueSubscriber extends RabbitMqSubscriber<any> {
25
25
  }
26
26
 
27
27
  subscribe(message: QueueMessage<any>) {
28
- this.smsService.sendSMSSynchronously(message);
28
+ return this.smsService.sendSMSSynchronously(message);
29
29
  }
30
30
  }
@@ -1,13 +1,13 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
3
  import { RabbitMqPublisher } from 'src/services/queues/rabbitmq-publisher.service';
4
- import mailQueueOptions from './email-queue-options';
4
+ import mailQueueOptions from './smtp-email-queue-options';
5
5
  import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
6
6
  import { MqMessageService } from 'src/services/mq-message.service';
7
7
  import { QueuesModuleOptions } from "../interfaces";
8
8
 
9
9
  @Injectable()
10
- export class EmailQueuePublisher extends RabbitMqPublisher<any> {
10
+ export class SmtpEmailQueuePublisherRabbitmq extends RabbitMqPublisher<any> {
11
11
  constructor(
12
12
  protected readonly mqMessageService: MqMessageService,
13
13
  protected readonly mqMessageQueueService: MqMessageQueueService,
@@ -1,6 +1,6 @@
1
1
  import { Injectable } from '@nestjs/common';
2
2
 
3
- import mailQueueOptions from './email-queue-options';
3
+ import mailQueueOptions from './smtp-email-queue-options';
4
4
  import { RabbitMqSubscriber } from 'src/services/queues/rabbitmq-subscriber.service';
5
5
  import { QueueMessage } from 'src/interfaces/mq';
6
6
  import { SMTPEMailService } from '../services/mail/smtp-email.service';
@@ -9,7 +9,7 @@ import { MqMessageQueueService } from 'src/services/mq-message-queue.service';
9
9
  import { QueuesModuleOptions } from "../interfaces";
10
10
 
11
11
  @Injectable()
12
- export class EmailQueueSubscriber extends RabbitMqSubscriber<any> {
12
+ export class SmtpEmailQueueSubscriberRabbitmq extends RabbitMqSubscriber<any> {
13
13
  constructor(
14
14
  private readonly emailService: SMTPEMailService,
15
15
  readonly mqMessageService: MqMessageService,