@churchapps/apihelper 0.4.37 → 0.4.39
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/helpers/EmailHelper.d.ts +2 -2
- package/dist/helpers/EmailHelper.d.ts.map +1 -1
- package/dist/helpers/EmailHelper.js +8 -7
- package/dist/helpers/EmailHelper.js.map +1 -1
- package/dist/helpers/Interfaces.d.ts +1 -0
- package/dist/helpers/Interfaces.d.ts.map +1 -1
- package/dist/templates/EmailTemplate.html +0 -1
- package/package.json +2 -2
- package/src/helpers/EmailHelper.ts +8 -8
- package/src/helpers/Interfaces.ts +1 -1
- package/src/tools/templates/EmailTemplate.html +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { IEmailPayload } from '.';
|
|
2
2
|
export declare class EmailHelper {
|
|
3
3
|
private static getSESClient;
|
|
4
|
-
static sendTemplatedEmail(from: string, to: string, appName: string, appUrl: string, subject: string, contents: string, emailTemplate?: "EmailTemplate.html" | "ChurchEmailTemplate.html"): Promise<void>;
|
|
4
|
+
static sendTemplatedEmail(from: string, to: string, appName: string, appUrl: string, subject: string, contents: string, emailTemplate?: "EmailTemplate.html" | "ChurchEmailTemplate.html", replyTo?: string): Promise<void>;
|
|
5
5
|
static readTemplate(templateFile?: string): string;
|
|
6
6
|
private static sendSes;
|
|
7
|
-
static sendEmail({ from, to, subject, body }: IEmailPayload): Promise<void>;
|
|
7
|
+
static sendEmail({ from, to, subject, body, replyTo }: IEmailPayload): Promise<void>;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=EmailHelper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/EmailHelper.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,aAAa,EAAE,MAAM,GAAG,CAAA;AAIlD,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,YAAY;WAIP,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAE,oBAAoB,GAAG,0BAAiD;
|
|
1
|
+
{"version":3,"file":"EmailHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/EmailHelper.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,aAAa,EAAE,MAAM,GAAG,CAAA;AAIlD,qBAAa,WAAW;IAEtB,OAAO,CAAC,MAAM,CAAC,YAAY;WAIP,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAE,oBAAoB,GAAG,0BAAiD,EAAE,OAAO,CAAC,EAAE,MAAM;WAWhO,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM;mBAQ3B,OAAO;WAwBR,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAqClG"}
|
|
@@ -14,7 +14,7 @@ class EmailHelper {
|
|
|
14
14
|
static getSESClient() {
|
|
15
15
|
return new client_ses_1.SESClient({ region: "us-east-2" });
|
|
16
16
|
}
|
|
17
|
-
static async sendTemplatedEmail(from, to, appName, appUrl, subject, contents, emailTemplate = "EmailTemplate.html") {
|
|
17
|
+
static async sendTemplatedEmail(from, to, appName, appUrl, subject, contents, emailTemplate = "EmailTemplate.html", replyTo) {
|
|
18
18
|
if (!appName)
|
|
19
19
|
appName = "B1";
|
|
20
20
|
if (!appUrl)
|
|
@@ -23,7 +23,7 @@ class EmailHelper {
|
|
|
23
23
|
const emailBody = template
|
|
24
24
|
.replace("{appLink}", "<a target='_blank' rel='noreferrer noopener' href=\"" + appUrl + "/\">" + appName + "</a>")
|
|
25
25
|
.replace("{contents}", contents);
|
|
26
|
-
await EmailHelper.sendEmail({ from, to, subject, body: emailBody });
|
|
26
|
+
await EmailHelper.sendEmail({ from, to, subject, body: emailBody, replyTo });
|
|
27
27
|
}
|
|
28
28
|
static readTemplate(templateFile) {
|
|
29
29
|
if (!templateFile)
|
|
@@ -33,7 +33,7 @@ class EmailHelper {
|
|
|
33
33
|
const contents = buffer.toString();
|
|
34
34
|
return contents;
|
|
35
35
|
}
|
|
36
|
-
static async sendSes({ from, to, subject, body }) {
|
|
36
|
+
static async sendSes({ from, to, subject, body, replyTo }) {
|
|
37
37
|
const sesClient = this.getSESClient();
|
|
38
38
|
const sendCommand = new client_ses_1.SendEmailCommand({
|
|
39
39
|
Destination: {
|
|
@@ -51,11 +51,12 @@ class EmailHelper {
|
|
|
51
51
|
Data: subject
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
|
-
Source: from
|
|
54
|
+
Source: from,
|
|
55
|
+
ReplyToAddresses: replyTo ? [replyTo] : undefined
|
|
55
56
|
});
|
|
56
57
|
await sesClient.send(sendCommand);
|
|
57
58
|
}
|
|
58
|
-
static async sendEmail({ from, to, subject, body }) {
|
|
59
|
+
static async sendEmail({ from, to, subject, body, replyTo }) {
|
|
59
60
|
try {
|
|
60
61
|
// Use a safer fallback - streamline transport (for testing/dev) or require proper SMTP config
|
|
61
62
|
let transporter = nodemailer_1.default.createTransport({
|
|
@@ -64,7 +65,7 @@ class EmailHelper {
|
|
|
64
65
|
buffer: true
|
|
65
66
|
});
|
|
66
67
|
if (_1.EnvironmentBase.mailSystem === 'SES') {
|
|
67
|
-
await this.sendSes({ from, to, subject, body });
|
|
68
|
+
await this.sendSes({ from, to, subject, body, replyTo });
|
|
68
69
|
}
|
|
69
70
|
else {
|
|
70
71
|
if (_1.EnvironmentBase.mailSystem === "SMTP") {
|
|
@@ -83,7 +84,7 @@ class EmailHelper {
|
|
|
83
84
|
console.log(body);
|
|
84
85
|
}
|
|
85
86
|
else {
|
|
86
|
-
await transporter.sendMail({ from, to, subject, html: body });
|
|
87
|
+
await transporter.sendMail({ from, to, subject, html: body, replyTo });
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailHelper.js","sourceRoot":"","sources":["../../src/helpers/EmailHelper.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAkE;AAClE,4DAAmC;AACnC,sEAAsE;AACtE,wBAAkD;AAClD,4CAAoB;AACpB,gDAAwB;AAExB,MAAa,WAAW;IAEd,MAAM,CAAC,YAAY;QACzB,OAAO,IAAI,sBAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,EAAU,EAAE,OAAe,EAAE,MAAc,EAAE,OAAe,EAAE,QAAgB,EAAE,gBAAmE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"EmailHelper.js","sourceRoot":"","sources":["../../src/helpers/EmailHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Interfaces.d.ts","sourceRoot":"","sources":["../../src/helpers/Interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AACtF,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE"}
|
|
1
|
+
{"version":3,"file":"Interfaces.d.ts","sourceRoot":"","sources":["../../src/helpers/Interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;AACtF,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE"}
|
|
@@ -390,7 +390,6 @@
|
|
|
390
390
|
<ul>
|
|
391
391
|
<li><span class="text"><a href="mailto:support@churchapps.org">support@churchapps.org</a></span></li>
|
|
392
392
|
<li><span class="text"><a href="phone:19189942638">+1 (918) 994-2638</a></span></li>
|
|
393
|
-
<li><span class="text"><a href="https://m.me/livecsolutions">https://m.me/livecsolutions</a></span></li>
|
|
394
393
|
<li><span class="text"><a href="https://support.churchapps.org">support.churchapps.org</a></span></li>
|
|
395
394
|
</ul>
|
|
396
395
|
</td>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@churchapps/apihelper",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.39",
|
|
4
4
|
"description": "Library of helper functions not specific to any one ChurchApps project or framework.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"lint:fix": "eslint src/**/*.ts --fix",
|
|
21
21
|
"format": "prettier --write src/**/*.ts",
|
|
22
22
|
"format:check": "prettier --check src/**/*.ts",
|
|
23
|
-
"publish": "npm run build && npm publish --access=public"
|
|
23
|
+
"publish:all": "npm run build && npm publish --access=public"
|
|
24
24
|
},
|
|
25
25
|
"repository": {
|
|
26
26
|
"type": "git",
|
|
@@ -11,7 +11,7 @@ export class EmailHelper {
|
|
|
11
11
|
return new SESClient({ region: "us-east-2" });
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
public static async sendTemplatedEmail(from: string, to: string, appName: string, appUrl: string, subject: string, contents: string, emailTemplate: "EmailTemplate.html" | "ChurchEmailTemplate.html" = "EmailTemplate.html") {
|
|
14
|
+
public static async sendTemplatedEmail(from: string, to: string, appName: string, appUrl: string, subject: string, contents: string, emailTemplate: "EmailTemplate.html" | "ChurchEmailTemplate.html" = "EmailTemplate.html", replyTo?: string) {
|
|
15
15
|
if (!appName) appName = "B1";
|
|
16
16
|
if (!appUrl) appUrl = "https://b1.church";
|
|
17
17
|
|
|
@@ -19,7 +19,7 @@ export class EmailHelper {
|
|
|
19
19
|
const emailBody = template
|
|
20
20
|
.replace("{appLink}", "<a target='_blank' rel='noreferrer noopener' href=\"" + appUrl + "/\">" + appName + "</a>")
|
|
21
21
|
.replace("{contents}", contents);
|
|
22
|
-
await EmailHelper.sendEmail({ from, to, subject, body: emailBody });
|
|
22
|
+
await EmailHelper.sendEmail({ from, to, subject, body: emailBody, replyTo });
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
public static readTemplate(templateFile?: string) {
|
|
@@ -30,7 +30,7 @@ export class EmailHelper {
|
|
|
30
30
|
return contents;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
private static async sendSes({ from, to, subject, body }: IEmailPayload) {
|
|
33
|
+
private static async sendSes({ from, to, subject, body, replyTo }: IEmailPayload) {
|
|
34
34
|
const sesClient = this.getSESClient();
|
|
35
35
|
const sendCommand = new SendEmailCommand({
|
|
36
36
|
Destination: {
|
|
@@ -48,13 +48,13 @@ export class EmailHelper {
|
|
|
48
48
|
Data: subject
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
|
-
Source: from
|
|
52
|
-
|
|
51
|
+
Source: from,
|
|
52
|
+
ReplyToAddresses: replyTo ? [replyTo] : undefined
|
|
53
53
|
});
|
|
54
54
|
await sesClient.send(sendCommand);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
public static async sendEmail({ from, to, subject, body }: IEmailPayload): Promise<void> {
|
|
57
|
+
public static async sendEmail({ from, to, subject, body, replyTo }: IEmailPayload): Promise<void> {
|
|
58
58
|
try {
|
|
59
59
|
// Use a safer fallback - streamline transport (for testing/dev) or require proper SMTP config
|
|
60
60
|
let transporter: nodemailer.Transporter = nodemailer.createTransport({
|
|
@@ -64,7 +64,7 @@ export class EmailHelper {
|
|
|
64
64
|
});
|
|
65
65
|
|
|
66
66
|
if (EnvironmentBase.mailSystem === 'SES') {
|
|
67
|
-
await this.sendSes({ from, to, subject, body });
|
|
67
|
+
await this.sendSes({ from, to, subject, body, replyTo });
|
|
68
68
|
} else {
|
|
69
69
|
if (EnvironmentBase.mailSystem === "SMTP") {
|
|
70
70
|
transporter = nodemailer.createTransport({
|
|
@@ -82,7 +82,7 @@ export class EmailHelper {
|
|
|
82
82
|
console.log(subject);
|
|
83
83
|
console.log(body);
|
|
84
84
|
} else {
|
|
85
|
-
await transporter.sendMail({ from, to, subject, html: body });
|
|
85
|
+
await transporter.sendMail({ from, to, subject, html: body, replyTo });
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
return null;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export interface IPermission { contentType: string; action: string; apiName?: string }
|
|
2
|
-
export interface IEmailPayload { from: string, to: string, subject: string, body: string }
|
|
2
|
+
export interface IEmailPayload { from: string, to: string, subject: string, body: string, replyTo?: string }
|
|
@@ -390,7 +390,6 @@
|
|
|
390
390
|
<ul>
|
|
391
391
|
<li><span class="text"><a href="mailto:support@churchapps.org">support@churchapps.org</a></span></li>
|
|
392
392
|
<li><span class="text"><a href="phone:19189942638">+1 (918) 994-2638</a></span></li>
|
|
393
|
-
<li><span class="text"><a href="https://m.me/livecsolutions">https://m.me/livecsolutions</a></span></li>
|
|
394
393
|
<li><span class="text"><a href="https://support.churchapps.org">support.churchapps.org</a></span></li>
|
|
395
394
|
</ul>
|
|
396
395
|
</td>
|