@solidstarters/solid-core 1.2.146 → 1.2.149

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 (156) 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 +5 -0
  4. package/dist/config/common.config.js.map +1 -1
  5. package/dist/controllers/ai-interaction.controller.d.ts +1 -1
  6. package/dist/controllers/ai-interaction.controller.js +1 -1
  7. package/dist/dtos/create-ai-interaction.dto.d.ts +3 -0
  8. package/dist/dtos/create-ai-interaction.dto.d.ts.map +1 -1
  9. package/dist/dtos/create-ai-interaction.dto.js +20 -1
  10. package/dist/dtos/create-ai-interaction.dto.js.map +1 -1
  11. package/dist/dtos/update-ai-interaction.dto.d.ts +3 -0
  12. package/dist/dtos/update-ai-interaction.dto.d.ts.map +1 -1
  13. package/dist/dtos/update-ai-interaction.dto.js +19 -1
  14. package/dist/dtos/update-ai-interaction.dto.js.map +1 -1
  15. package/dist/entities/ai-interaction.entity.d.ts +3 -0
  16. package/dist/entities/ai-interaction.entity.d.ts.map +1 -1
  17. package/dist/entities/ai-interaction.entity.js +17 -1
  18. package/dist/entities/ai-interaction.entity.js.map +1 -1
  19. package/dist/helpers/environment.helper.d.ts +2 -0
  20. package/dist/helpers/environment.helper.d.ts.map +1 -0
  21. package/dist/helpers/environment.helper.js +11 -0
  22. package/dist/helpers/environment.helper.js.map +1 -0
  23. package/dist/index.d.ts +4 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +4 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/interfaces.d.ts +5 -5
  28. package/dist/interfaces.d.ts.map +1 -1
  29. package/dist/interfaces.js.map +1 -1
  30. package/dist/jobs/database/api-email-subscriber-database.service.d.ts +3 -1
  31. package/dist/jobs/database/api-email-subscriber-database.service.d.ts.map +1 -1
  32. package/dist/jobs/database/api-email-subscriber-database.service.js +6 -3
  33. package/dist/jobs/database/api-email-subscriber-database.service.js.map +1 -1
  34. package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts +3 -1
  35. package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts.map +1 -1
  36. package/dist/jobs/database/computed-field-evaluation-subscriber.service.js +6 -3
  37. package/dist/jobs/database/computed-field-evaluation-subscriber.service.js.map +1 -1
  38. package/dist/jobs/database/generate-code-subscriber-database.service.d.ts +3 -1
  39. package/dist/jobs/database/generate-code-subscriber-database.service.d.ts.map +1 -1
  40. package/dist/jobs/database/generate-code-subscriber-database.service.js +6 -3
  41. package/dist/jobs/database/generate-code-subscriber-database.service.js.map +1 -1
  42. package/dist/jobs/database/otp-subscriber-database.service.d.ts +3 -1
  43. package/dist/jobs/database/otp-subscriber-database.service.d.ts.map +1 -1
  44. package/dist/jobs/database/otp-subscriber-database.service.js +5 -2
  45. package/dist/jobs/database/otp-subscriber-database.service.js.map +1 -1
  46. package/dist/jobs/database/sms-subscriber-database.service.d.ts +4 -2
  47. package/dist/jobs/database/sms-subscriber-database.service.d.ts.map +1 -1
  48. package/dist/jobs/database/sms-subscriber-database.service.js +7 -4
  49. package/dist/jobs/database/sms-subscriber-database.service.js.map +1 -1
  50. package/dist/jobs/database/smtp-email-subscriber-database.service.d.ts +4 -2
  51. package/dist/jobs/database/smtp-email-subscriber-database.service.d.ts.map +1 -1
  52. package/dist/jobs/database/smtp-email-subscriber-database.service.js +6 -3
  53. package/dist/jobs/database/smtp-email-subscriber-database.service.js.map +1 -1
  54. package/dist/jobs/database/test-queue-subscriber-database.service.d.ts +3 -1
  55. package/dist/jobs/database/test-queue-subscriber-database.service.d.ts.map +1 -1
  56. package/dist/jobs/database/test-queue-subscriber-database.service.js +6 -3
  57. package/dist/jobs/database/test-queue-subscriber-database.service.js.map +1 -1
  58. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +3 -1
  59. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
  60. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +7 -2
  61. package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
  62. package/dist/jobs/database/twilio-sms-publisher-database.service.d.ts +11 -0
  63. package/dist/jobs/database/twilio-sms-publisher-database.service.d.ts.map +1 -0
  64. package/dist/jobs/database/twilio-sms-publisher-database.service.js +39 -0
  65. package/dist/jobs/database/twilio-sms-publisher-database.service.js.map +1 -0
  66. package/dist/jobs/database/twilio-sms-queue-database-options.d.ts +8 -0
  67. package/dist/jobs/database/twilio-sms-queue-database-options.d.ts.map +1 -0
  68. package/dist/jobs/database/twilio-sms-queue-database-options.js +10 -0
  69. package/dist/jobs/database/twilio-sms-queue-database-options.js.map +1 -0
  70. package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts +17 -0
  71. package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts.map +1 -0
  72. package/dist/jobs/database/twilio-sms-subscriber-database.service.js +48 -0
  73. package/dist/jobs/database/twilio-sms-subscriber-database.service.js.map +1 -0
  74. package/dist/jobs/database/whatsapp-subscriber-database.service.d.ts +3 -1
  75. package/dist/jobs/database/whatsapp-subscriber-database.service.d.ts.map +1 -1
  76. package/dist/jobs/database/whatsapp-subscriber-database.service.js +6 -3
  77. package/dist/jobs/database/whatsapp-subscriber-database.service.js.map +1 -1
  78. package/dist/jobs/sms-subscriber.service.d.ts +1 -1
  79. package/dist/jobs/sms-subscriber.service.js +1 -1
  80. package/dist/jobs/sms-subscriber.service.js.map +1 -1
  81. package/dist/jobs/smtp-email-subscriber.service.d.ts +1 -1
  82. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -1
  83. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  84. package/dist/seeders/module-metadata-seeder.service.js +15 -4
  85. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  86. package/dist/seeders/seed-data/solid-core-metadata.json +83 -3
  87. package/dist/services/ai-interaction.service.d.ts +1 -1
  88. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  89. package/dist/services/ai-interaction.service.js +5 -1
  90. package/dist/services/ai-interaction.service.js.map +1 -1
  91. package/dist/services/mail/smtp-email.service.d.ts +4 -4
  92. package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
  93. package/dist/services/mail/smtp-email.service.js +12 -8
  94. package/dist/services/mail/smtp-email.service.js.map +1 -1
  95. package/dist/services/mq-message.service.d.ts +9 -0
  96. package/dist/services/mq-message.service.d.ts.map +1 -1
  97. package/dist/services/mq-message.service.js +61 -0
  98. package/dist/services/mq-message.service.js.map +1 -1
  99. package/dist/services/poller.service.d.ts +24 -0
  100. package/dist/services/poller.service.d.ts.map +1 -0
  101. package/dist/services/poller.service.js +131 -0
  102. package/dist/services/poller.service.js.map +1 -0
  103. package/dist/services/queues/database-subscriber.service.d.ts +4 -1
  104. package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
  105. package/dist/services/queues/database-subscriber.service.js +13 -13
  106. package/dist/services/queues/database-subscriber.service.js.map +1 -1
  107. package/dist/services/sms/Msg91BaseSMSService.d.ts +2 -2
  108. package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
  109. package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
  110. package/dist/services/sms/Msg91OTPService.d.ts +1 -1
  111. package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
  112. package/dist/services/sms/Msg91OTPService.js.map +1 -1
  113. package/dist/services/sms/Msg91SMSService.d.ts +1 -1
  114. package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
  115. package/dist/services/sms/Msg91SMSService.js.map +1 -1
  116. package/dist/services/sms/TwilioSMSService.d.ts +18 -0
  117. package/dist/services/sms/TwilioSMSService.d.ts.map +1 -0
  118. package/dist/services/sms/TwilioSMSService.js +115 -0
  119. package/dist/services/sms/TwilioSMSService.js.map +1 -0
  120. package/dist/solid-core.module.d.ts.map +1 -1
  121. package/dist/solid-core.module.js +11 -0
  122. package/dist/solid-core.module.js.map +1 -1
  123. package/dist/tsconfig.tsbuildinfo +1 -1
  124. package/package.json +4 -3
  125. package/src/config/common.config.ts +5 -0
  126. package/src/dtos/create-ai-interaction.dto.ts +16 -5
  127. package/src/dtos/update-ai-interaction.dto.ts +16 -5
  128. package/src/entities/ai-interaction.entity.ts +11 -3
  129. package/src/helpers/environment.helper.ts +7 -0
  130. package/src/index.ts +5 -0
  131. package/src/interfaces.ts +5 -5
  132. package/src/jobs/database/api-email-subscriber-database.service.ts +3 -1
  133. package/src/jobs/database/computed-field-evaluation-subscriber.service.ts +4 -2
  134. package/src/jobs/database/generate-code-subscriber-database.service.ts +3 -1
  135. package/src/jobs/database/otp-subscriber-database.service.ts +3 -1
  136. package/src/jobs/database/sms-subscriber-database.service.ts +4 -2
  137. package/src/jobs/database/smtp-email-subscriber-database.service.ts +3 -1
  138. package/src/jobs/database/test-queue-subscriber-database.service.ts +3 -1
  139. package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +5 -1
  140. package/src/jobs/database/twilio-sms-publisher-database.service.ts +23 -0
  141. package/src/jobs/database/twilio-sms-queue-database-options.ts +9 -0
  142. package/src/jobs/database/twilio-sms-subscriber-database.service.ts +32 -0
  143. package/src/jobs/database/whatsapp-subscriber-database.service.ts +3 -1
  144. package/src/jobs/sms-subscriber.service.ts +1 -1
  145. package/src/seeders/module-metadata-seeder.service.ts +18 -15
  146. package/src/seeders/seed-data/solid-core-metadata.json +83 -3
  147. package/src/services/ai-interaction.service.ts +8 -3
  148. package/src/services/mail/smtp-email.service.ts +18 -17
  149. package/src/services/mq-message.service.ts +116 -0
  150. package/src/services/poller.service.ts +163 -0
  151. package/src/services/queues/database-subscriber.service.ts +39 -12
  152. package/src/services/sms/Msg91BaseSMSService.ts +2 -2
  153. package/src/services/sms/Msg91OTPService.ts +1 -1
  154. package/src/services/sms/Msg91SMSService.ts +1 -1
  155. package/src/services/sms/TwilioSMSService.ts +118 -0
  156. package/src/solid-core.module.ts +14 -0
@@ -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
+ }
@@ -186,6 +186,11 @@ import { OTPQueuePublisherDatabase } from './jobs/database/otp-publisher-databas
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';
@@ -260,6 +265,8 @@ import { SolidCreateModelLayoutMcpToolResponseHandler } from './services/mcp-too
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';
262
267
  import { MailFactory } from './factories/mail.factory';
268
+ import { TwilioSMSService } from './services/sms/TwilioSMSService';
269
+ import { PollerService } from './services/poller.service';
263
270
 
264
271
 
265
272
  @Global()
@@ -427,9 +434,11 @@ import { MailFactory } from './factories/mail.factory';
427
434
  Msg91SMSService,
428
435
  Msg91OTPService,
429
436
  Msg91WhatsappService,
437
+ TwilioSMSService,
430
438
  SmsTemplateService,
431
439
  EmailTemplateService,
432
440
  PublisherFactory,
441
+ PollerService,
433
442
 
434
443
  McpToolResponseHandlerFactory,
435
444
  SolidCreateModuleMcpToolResponseHandler,
@@ -449,6 +458,8 @@ import { MailFactory } from './factories/mail.factory';
449
458
  SmsQueueSubscriber,
450
459
  SmsQueuePublisherDatabase,
451
460
  SmsQueueSubscriberDatabase,
461
+ TwilioSmsQueuePublisherDatabase,
462
+ TwilioSmsQueueSubscriberDatabase,
452
463
  OTPQueuePublisher,
453
464
  OTPQueueSubscriber,
454
465
  OTPQueuePublisherDatabase,
@@ -567,6 +578,7 @@ import { MailFactory } from './factories/mail.factory';
567
578
  ElasticEmailService,
568
579
  Msg91SMSService,
569
580
  Msg91OTPService,
581
+ TwilioSMSService,
570
582
  Msg91WhatsappService,
571
583
  TinyUrlService,
572
584
  PdfService,
@@ -592,6 +604,8 @@ import { MailFactory } from './factories/mail.factory';
592
604
  ConfigModule,
593
605
  PublisherFactory,
594
606
  MailFactory,
607
+ PollerService,
608
+ AiInteractionService,
595
609
  ],
596
610
  })
597
611
  export class SolidCoreModule { }