@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.
- 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 +6 -1
- package/dist/config/common.config.js.map +1 -1
- package/dist/decorators/mail-provider.decorator.d.ts +3 -0
- package/dist/decorators/mail-provider.decorator.d.ts.map +1 -0
- package/dist/decorators/mail-provider.decorator.js +11 -0
- package/dist/decorators/mail-provider.decorator.js.map +1 -0
- package/dist/factories/mail.factory.d.ts +14 -0
- package/dist/factories/mail.factory.d.ts.map +1 -0
- package/dist/factories/mail.factory.js +50 -0
- package/dist/factories/mail.factory.js.map +1 -0
- package/dist/helpers/solid-registry.d.ts +3 -0
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +7 -0
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- 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/{email-publisher-database.service.d.ts → smtp-email-publisher-database.service.d.ts} +2 -2
- package/dist/jobs/database/smtp-email-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{email-publisher-database.service.js → smtp-email-publisher-database.service.js} +8 -8
- package/dist/jobs/database/smtp-email-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/{email-queue-options-database.d.ts → smtp-email-queue-options-database.d.ts} +1 -1
- package/dist/jobs/database/smtp-email-queue-options-database.d.ts.map +1 -0
- package/dist/jobs/database/{email-queue-options-database.js → smtp-email-queue-options-database.js} +1 -1
- package/dist/jobs/database/smtp-email-queue-options-database.js.map +1 -0
- package/dist/jobs/database/{email-subscriber-database.service.d.ts → smtp-email-subscriber-database.service.d.ts} +6 -4
- package/dist/jobs/database/smtp-email-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/{email-subscriber-database.service.js → smtp-email-subscriber-database.service.js} +14 -11
- package/dist/jobs/database/smtp-email-subscriber-database.service.js.map +1 -0
- 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/{email-publisher.service.d.ts → smtp-email-publisher.service.d.ts} +2 -2
- package/dist/jobs/smtp-email-publisher.service.d.ts.map +1 -0
- package/dist/jobs/{email-publisher.service.js → smtp-email-publisher.service.js} +8 -8
- package/dist/jobs/smtp-email-publisher.service.js.map +1 -0
- package/dist/jobs/{email-queue-options.d.ts → smtp-email-queue-options.d.ts} +1 -1
- package/dist/jobs/smtp-email-queue-options.d.ts.map +1 -0
- package/dist/jobs/{email-queue-options.js → smtp-email-queue-options.js} +1 -1
- package/dist/jobs/smtp-email-queue-options.js.map +1 -0
- package/dist/jobs/{email-subscriber.service.d.ts → smtp-email-subscriber.service.d.ts} +3 -3
- package/dist/jobs/smtp-email-subscriber.service.d.ts.map +1 -0
- package/dist/jobs/{email-subscriber.service.js → smtp-email-subscriber.service.js} +8 -8
- package/dist/jobs/smtp-email-subscriber.service.js.map +1 -0
- 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 +42 -31
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts +3 -3
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +16 -12
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/mail/elastic-email.service.d.ts.map +1 -1
- package/dist/services/mail/elastic-email.service.js +2 -0
- package/dist/services/mail/elastic-email.service.js.map +1 -1
- package/dist/services/mail/smtp-email.service.d.ts +6 -6
- package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
- package/dist/services/mail/smtp-email.service.js +17 -11
- 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/services/solid-introspect.service.d.ts +1 -0
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +14 -0
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +21 -8
- 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 +6 -1
- package/src/decorators/mail-provider.decorator.ts +7 -0
- package/src/factories/mail.factory.ts +38 -0
- package/src/helpers/solid-registry.ts +9 -0
- package/src/index.ts +10 -3
- package/src/interfaces.ts +11 -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/{email-publisher-database.service.ts → smtp-email-publisher-database.service.ts} +2 -2
- package/src/jobs/database/{email-subscriber-database.service.ts → smtp-email-subscriber-database.service.ts} +5 -3
- 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/jobs/{email-publisher.service.ts → smtp-email-publisher.service.ts} +2 -2
- package/src/jobs/{email-subscriber.service.ts → smtp-email-subscriber.service.ts} +2 -2
- package/src/seeders/module-metadata-seeder.service.ts +45 -42
- package/src/services/authentication.service.ts +24 -9
- package/src/services/mail/elastic-email.service.ts +2 -0
- package/src/services/mail/smtp-email.service.ts +48 -21
- 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/services/solid-introspect.service.ts +21 -5
- package/src/solid-core.module.ts +24 -8
- package/dist/jobs/database/email-publisher-database.service.d.ts.map +0 -1
- package/dist/jobs/database/email-publisher-database.service.js.map +0 -1
- package/dist/jobs/database/email-queue-options-database.d.ts.map +0 -1
- package/dist/jobs/database/email-queue-options-database.js.map +0 -1
- package/dist/jobs/database/email-subscriber-database.service.d.ts.map +0 -1
- package/dist/jobs/database/email-subscriber-database.service.js.map +0 -1
- package/dist/jobs/email-publisher.service.d.ts.map +0 -1
- package/dist/jobs/email-publisher.service.js.map +0 -1
- package/dist/jobs/email-queue-options.d.ts.map +0 -1
- package/dist/jobs/email-queue-options.js.map +0 -1
- package/dist/jobs/email-subscriber.service.d.ts.map +0 -1
- package/dist/jobs/email-subscriber.service.js.map +0 -1
- /package/src/jobs/database/{email-queue-options-database.ts → smtp-email-queue-options-database.ts} +0 -0
- /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
|
-
|
|
92
|
-
|
|
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<
|
|
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<
|
|
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<
|
|
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<
|
|
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)
|
package/src/solid-core.module.ts
CHANGED
|
@@ -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 {
|
|
90
|
-
import {
|
|
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 {
|
|
182
|
-
import {
|
|
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
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
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"]}
|
/package/src/jobs/database/{email-queue-options-database.ts → smtp-email-queue-options-database.ts}
RENAMED
|
File without changes
|
|
File without changes
|