@solidstarters/solid-core 1.2.146 → 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.
- package/dist/config/common.config.d.ts +10 -0
- package/dist/config/common.config.d.ts.map +1 -1
- package/dist/config/common.config.js +5 -0
- package/dist/config/common.config.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +5 -5
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/jobs/database/api-email-subscriber-database.service.d.ts +3 -1
- package/dist/jobs/database/api-email-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/api-email-subscriber-database.service.js +6 -3
- package/dist/jobs/database/api-email-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts +3 -1
- package/dist/jobs/database/computed-field-evaluation-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/database/computed-field-evaluation-subscriber.service.js +6 -3
- package/dist/jobs/database/computed-field-evaluation-subscriber.service.js.map +1 -1
- package/dist/jobs/database/generate-code-subscriber-database.service.d.ts +3 -1
- package/dist/jobs/database/generate-code-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/generate-code-subscriber-database.service.js +6 -3
- package/dist/jobs/database/generate-code-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/otp-subscriber-database.service.d.ts +3 -1
- package/dist/jobs/database/otp-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/otp-subscriber-database.service.js +5 -2
- package/dist/jobs/database/otp-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/sms-subscriber-database.service.d.ts +4 -2
- package/dist/jobs/database/sms-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/sms-subscriber-database.service.js +7 -4
- package/dist/jobs/database/sms-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/smtp-email-subscriber-database.service.d.ts +4 -2
- package/dist/jobs/database/smtp-email-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/smtp-email-subscriber-database.service.js +6 -3
- package/dist/jobs/database/smtp-email-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/test-queue-subscriber-database.service.d.ts +3 -1
- package/dist/jobs/database/test-queue-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/test-queue-subscriber-database.service.js +6 -3
- package/dist/jobs/database/test-queue-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +3 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +5 -2
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/twilio-sms-publisher-database.service.d.ts +11 -0
- package/dist/jobs/database/twilio-sms-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/twilio-sms-publisher-database.service.js +39 -0
- package/dist/jobs/database/twilio-sms-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/twilio-sms-queue-database-options.d.ts +8 -0
- package/dist/jobs/database/twilio-sms-queue-database-options.d.ts.map +1 -0
- package/dist/jobs/database/twilio-sms-queue-database-options.js +10 -0
- package/dist/jobs/database/twilio-sms-queue-database-options.js.map +1 -0
- package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts +17 -0
- package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/twilio-sms-subscriber-database.service.js +48 -0
- package/dist/jobs/database/twilio-sms-subscriber-database.service.js.map +1 -0
- package/dist/jobs/database/whatsapp-subscriber-database.service.d.ts +3 -1
- package/dist/jobs/database/whatsapp-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/whatsapp-subscriber-database.service.js +6 -3
- package/dist/jobs/database/whatsapp-subscriber-database.service.js.map +1 -1
- package/dist/jobs/sms-subscriber.service.d.ts +1 -1
- package/dist/jobs/sms-subscriber.service.js +1 -1
- package/dist/jobs/sms-subscriber.service.js.map +1 -1
- package/dist/jobs/smtp-email-subscriber.service.d.ts +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +15 -4
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/services/mail/smtp-email.service.d.ts +4 -4
- package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
- package/dist/services/mail/smtp-email.service.js +12 -8
- package/dist/services/mail/smtp-email.service.js.map +1 -1
- package/dist/services/poller.service.d.ts +24 -0
- package/dist/services/poller.service.d.ts.map +1 -0
- package/dist/services/poller.service.js +131 -0
- package/dist/services/poller.service.js.map +1 -0
- package/dist/services/queues/database-subscriber.service.d.ts +4 -1
- package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/database-subscriber.service.js +13 -13
- package/dist/services/queues/database-subscriber.service.js.map +1 -1
- package/dist/services/sms/Msg91BaseSMSService.d.ts +2 -2
- package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
- package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
- package/dist/services/sms/Msg91OTPService.d.ts +1 -1
- package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
- package/dist/services/sms/Msg91OTPService.js.map +1 -1
- package/dist/services/sms/Msg91SMSService.d.ts +1 -1
- package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
- package/dist/services/sms/Msg91SMSService.js.map +1 -1
- package/dist/services/sms/TwilioSMSService.d.ts +18 -0
- package/dist/services/sms/TwilioSMSService.d.ts.map +1 -0
- package/dist/services/sms/TwilioSMSService.js +115 -0
- package/dist/services/sms/TwilioSMSService.js.map +1 -0
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +10 -0
- package/dist/solid-core.module.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/src/config/common.config.ts +5 -0
- package/src/index.ts +2 -0
- package/src/interfaces.ts +5 -5
- package/src/jobs/database/api-email-subscriber-database.service.ts +3 -1
- package/src/jobs/database/computed-field-evaluation-subscriber.service.ts +4 -2
- package/src/jobs/database/generate-code-subscriber-database.service.ts +3 -1
- package/src/jobs/database/otp-subscriber-database.service.ts +3 -1
- package/src/jobs/database/sms-subscriber-database.service.ts +4 -2
- package/src/jobs/database/smtp-email-subscriber-database.service.ts +3 -1
- package/src/jobs/database/test-queue-subscriber-database.service.ts +3 -1
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +3 -1
- package/src/jobs/database/twilio-sms-publisher-database.service.ts +23 -0
- package/src/jobs/database/twilio-sms-queue-database-options.ts +9 -0
- package/src/jobs/database/twilio-sms-subscriber-database.service.ts +32 -0
- package/src/jobs/database/whatsapp-subscriber-database.service.ts +3 -1
- package/src/jobs/sms-subscriber.service.ts +1 -1
- package/src/seeders/module-metadata-seeder.service.ts +18 -15
- package/src/services/mail/smtp-email.service.ts +18 -17
- package/src/services/poller.service.ts +163 -0
- package/src/services/queues/database-subscriber.service.ts +39 -12
- package/src/services/sms/Msg91BaseSMSService.ts +2 -2
- package/src/services/sms/Msg91OTPService.ts +1 -1
- package/src/services/sms/Msg91SMSService.ts +1 -1
- package/src/services/sms/TwilioSMSService.ts +118 -0
- package/src/solid-core.module.ts +13 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidstarters/solid-core",
|
|
3
|
-
"version": "1.2.
|
|
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",
|
|
@@ -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,
|
package/src/index.ts
CHANGED
|
@@ -243,6 +243,8 @@ export * from './services/short-url/tiny-url.service'
|
|
|
243
243
|
export * from './services/sms/Msg91BaseSMSService' //rename
|
|
244
244
|
export * from './services/sms/Msg91OTPService' //rename
|
|
245
245
|
export * from './services/sms/Msg91SMSService' //rename
|
|
246
|
+
export * from './services/sms/TwilioSMSService' //rename
|
|
247
|
+
export * from './services/poller.service'
|
|
246
248
|
export * from './services/sms-template.service'
|
|
247
249
|
export * from './services/solid-introspect.service'
|
|
248
250
|
export * from './services/user.service'
|
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,
|
|
@@ -172,7 +172,7 @@ export interface IMail {
|
|
|
172
172
|
cc?: string[],
|
|
173
173
|
bcc?: string[],
|
|
174
174
|
from?: string,
|
|
175
|
-
): Promise<
|
|
175
|
+
): Promise<TResponse>;
|
|
176
176
|
|
|
177
177
|
sendEmailUsingTemplate(
|
|
178
178
|
to: string,
|
|
@@ -186,18 +186,18 @@ export interface IMail {
|
|
|
186
186
|
cc?: string[],
|
|
187
187
|
bcc?: string[],
|
|
188
188
|
from?: string,
|
|
189
|
-
): Promise<
|
|
189
|
+
): Promise<TResponse>;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
192
|
export interface ISMS {
|
|
193
|
-
sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<
|
|
193
|
+
sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<any>;
|
|
194
194
|
|
|
195
195
|
sendSMSUsingTemplate(
|
|
196
196
|
to: string,
|
|
197
197
|
templateName: string,
|
|
198
198
|
templateParams: any,
|
|
199
199
|
shouldQueueSms: boolean,
|
|
200
|
-
): Promise<
|
|
200
|
+
): Promise<any>;
|
|
201
201
|
}
|
|
202
202
|
|
|
203
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
|
}
|
|
@@ -7,6 +7,7 @@ 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
13
|
export class SmtpEmailQueueSubscriberDatabase extends DatabaseSubscriber<any> {
|
|
@@ -14,8 +15,9 @@ export class SmtpEmailQueueSubscriberDatabase extends DatabaseSubscriber<any> {
|
|
|
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,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 {
|
|
@@ -195,7 +195,7 @@ export class ModuleMetadataSeederService {
|
|
|
195
195
|
// Sms templates
|
|
196
196
|
this.logger.log(`[Start] Processing sms templates for ${moduleMetadata.name}`);
|
|
197
197
|
const smsTemplates: CreateSmsTemplateDto[] = overallMetadata.smsTemplates;
|
|
198
|
-
await this.seedSmsTemplates(smsTemplates);
|
|
198
|
+
await this.seedSmsTemplates(smsTemplates, moduleMetadata);
|
|
199
199
|
this.logger.log(`[End] Processing sms templates for ${moduleMetadata.name}`);
|
|
200
200
|
|
|
201
201
|
// Settings
|
|
@@ -259,7 +259,7 @@ export class ModuleMetadataSeederService {
|
|
|
259
259
|
'AuthenticationController.logout'
|
|
260
260
|
]
|
|
261
261
|
await this.roleService.addPermissionToRole('Internal User', internalRolePermission);
|
|
262
|
-
await this.roleService.addPermissionToRole('Public', ['SettingController.wrapSettings','AuthenticationController.logout']);
|
|
262
|
+
await this.roleService.addPermissionToRole('Public', ['SettingController.wrapSettings', 'AuthenticationController.logout']);
|
|
263
263
|
this.logger.log(`All Seeders finished`);
|
|
264
264
|
this.logger.log(`Newly created username is: ${usersDetail?.length > 0 ? usersDetail[0]?.username : ''} and password is ${usersDetail?.length > 0 ? usersDetail[0]?.password : ''}`);
|
|
265
265
|
}
|
|
@@ -350,7 +350,7 @@ export class ModuleMetadataSeederService {
|
|
|
350
350
|
|
|
351
351
|
}
|
|
352
352
|
|
|
353
|
-
async seedSmsTemplates(smsTemplates: CreateSmsTemplateDto[]) {
|
|
353
|
+
async seedSmsTemplates(smsTemplates: CreateSmsTemplateDto[], moduleMetadata: CreateModuleMetadataDto) {
|
|
354
354
|
if (!smsTemplates) {
|
|
355
355
|
return;
|
|
356
356
|
}
|
|
@@ -360,23 +360,26 @@ export class ModuleMetadataSeederService {
|
|
|
360
360
|
this.logger.log(`Found ${smsTemplate.name} sms template`);
|
|
361
361
|
|
|
362
362
|
// We need to load the actual template contents.
|
|
363
|
-
if (
|
|
364
|
-
// const smsTemplateFilePath = path.join(process.cwd(), smsTemplate.body);
|
|
365
|
-
// smsTemplate.body = fs.readFileSync(smsTemplateFilePath, 'utf-8').toString()
|
|
366
|
-
|
|
363
|
+
if (moduleMetadata.name === 'solid-core') {
|
|
367
364
|
const modulePath = path.dirname(require.resolve('@solidstarters/solid-core'));
|
|
368
|
-
|
|
369
|
-
// Resolve the `src` folder
|
|
370
365
|
const seedDataPath = path.join(modulePath, '../src/seeders/seed-data/sms-templates');
|
|
371
|
-
|
|
372
|
-
// Example usage
|
|
373
366
|
const filePath = path.join(seedDataPath, smsTemplate.body);
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
367
|
+
this.logger.log(`Seeding sms template from solid-core at path: ${filePath}`);
|
|
368
|
+
if (fs.existsSync(filePath)) {
|
|
369
|
+
smsTemplate.body = fs.readFileSync(filePath, 'utf-8').toString();
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
// Check if file exists
|
|
374
|
+
const emailTemplateHandlebar = `module-metadata/${moduleMetadata.name}/sms-templates/${smsTemplate.body}`
|
|
375
|
+
const fullPath = path.join(process.cwd(), emailTemplateHandlebar);
|
|
376
|
+
this.logger.log(`Seeding custom sms template from consuming model at path: ${fullPath}`);
|
|
377
|
+
if (fs.existsSync(fullPath)) {
|
|
378
|
+
smsTemplate.body = fs.readFileSync(fullPath, 'utf-8').toString();
|
|
379
|
+
}
|
|
378
380
|
}
|
|
379
381
|
|
|
382
|
+
|
|
380
383
|
// Save to DB.
|
|
381
384
|
await this.smsTemplateService.removeByName(smsTemplate.name);
|
|
382
385
|
await this.smsTemplateService.create(smsTemplate);
|
|
@@ -47,7 +47,7 @@ export class SMTPEMailService implements IMail {
|
|
|
47
47
|
cc?: string[],
|
|
48
48
|
bcc?: string[],
|
|
49
49
|
from?: string
|
|
50
|
-
)
|
|
50
|
+
) {
|
|
51
51
|
// Load template and evaluate it.
|
|
52
52
|
const emailTemplate = await this.emailTemplateService.findOneByName(templateName);
|
|
53
53
|
if (!emailTemplate) {
|
|
@@ -63,7 +63,7 @@ export class SMTPEMailService implements IMail {
|
|
|
63
63
|
const subject = subjectTemplate(templateParams);
|
|
64
64
|
|
|
65
65
|
// Finally send the email.
|
|
66
|
-
await this.sendEmail(to, subject, body, shouldQueueEmails, wrapperAttachments, attachments, parentEntity, parentEntityId, cc, bcc, from);
|
|
66
|
+
return await this.sendEmail(to, subject, body, shouldQueueEmails, wrapperAttachments, attachments, parentEntity, parentEntityId, cc, bcc, from);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
async sendEmail(
|
|
@@ -78,7 +78,7 @@ export class SMTPEMailService implements IMail {
|
|
|
78
78
|
cc?: string[],
|
|
79
79
|
bcc?: string[],
|
|
80
80
|
from?: string
|
|
81
|
-
)
|
|
81
|
+
) {
|
|
82
82
|
const message = {
|
|
83
83
|
payload: {
|
|
84
84
|
from: from || this.commonConfiguration.smtpMail.from,
|
|
@@ -95,33 +95,34 @@ export class SMTPEMailService implements IMail {
|
|
|
95
95
|
|
|
96
96
|
// Send using queue if the developer has explicitly invoked with true.
|
|
97
97
|
if (shouldQueueEmails === true) {
|
|
98
|
-
this.sendEmailAsynchronously(message);
|
|
98
|
+
return this.sendEmailAsynchronously(message);
|
|
99
99
|
}
|
|
100
100
|
// If developer has not, however system config mandates that we send using queue, still we send.
|
|
101
101
|
else if (shouldQueueEmails == false && this.commonConfiguration.shouldQueueEmails === true) {
|
|
102
|
-
this.sendEmailAsynchronously(message);
|
|
102
|
+
return this.sendEmailAsynchronously(message);
|
|
103
103
|
}
|
|
104
|
-
// Else we send
|
|
104
|
+
// Else we send synchronously
|
|
105
105
|
else {
|
|
106
|
-
await this.sendEmailSynchronously(message);
|
|
106
|
+
return await this.sendEmailSynchronously(message);
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
async sendEmailAsynchronously(message) {
|
|
111
111
|
const { to, subject, body } = message.payload;
|
|
112
|
-
// this.notificationPublisherService.publish(message);
|
|
113
|
-
// this.emailPublisher.publish(message);
|
|
114
|
-
// this.emailDbPublisher.publish(message);
|
|
115
|
-
|
|
116
|
-
this.publisherFactory.publish(message, 'SmtpEmailQueuePublisher');
|
|
117
|
-
|
|
118
112
|
this.logger.debug(`Queueing email to ${to} with subject ${subject} and body ${body}`);
|
|
113
|
+
return this.publisherFactory.publish(message, 'SmtpEmailQueuePublisher');
|
|
119
114
|
}
|
|
120
115
|
|
|
121
|
-
async sendEmailSynchronously(message: QueueMessage<any>)
|
|
122
|
-
const { from, to, subject, body, attachments, cc, bcc } = message.payload;
|
|
116
|
+
async sendEmailSynchronously(message: QueueMessage<any>) {
|
|
117
|
+
const { from, to, subject, body, attachments = [], cc, bcc } = message.payload;
|
|
123
118
|
|
|
124
|
-
|
|
119
|
+
// if any of the required fields are missing, throw an error.
|
|
120
|
+
if (!from || !to || !subject || !body) {
|
|
121
|
+
this.logger.error(`Required fields are missing in the email message: ${JSON.stringify(message.payload)}`);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const attachmentsList = attachments?.map((attachment: MailAttachment) => {
|
|
125
126
|
const attachmentEntry = {
|
|
126
127
|
filename: attachment.filename,
|
|
127
128
|
contentType: attachment.contentType,
|
|
@@ -133,7 +134,7 @@ export class SMTPEMailService implements IMail {
|
|
|
133
134
|
attachmentEntry['content'] = attachment.content;
|
|
134
135
|
}
|
|
135
136
|
return attachmentEntry;
|
|
136
|
-
});
|
|
137
|
+
}) || [];
|
|
137
138
|
|
|
138
139
|
// throw new Error('Random error....');
|
|
139
140
|
const r = await this.transporter.sendMail({
|