prostgles-server 4.2.162 → 4.2.163

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.
@@ -1,7 +1,14 @@
1
1
  import { Email, SMTPConfig } from "./AuthTypes";
2
+ import nodemailer from "nodemailer";
3
+ import SESTransport from "nodemailer/lib/ses-transport";
4
+ type SESTransporter = nodemailer.Transporter<SESTransport.SentMessageInfo, SESTransport.Options>;
5
+ type SMTPTransporter = nodemailer.Transporter<nodemailer.SentMessageInfo, nodemailer.TransportOptions>;
6
+ type Transporter = SESTransporter | SMTPTransporter;
2
7
  /**
3
8
  * Allows sending emails using nodemailer default config or AWS SES
4
9
  * https://www.nodemailer.com/transports/ses/
5
10
  */
6
11
  export declare const sendEmail: (smptConfig: SMTPConfig, email: Email) => Promise<unknown>;
12
+ export declare const getOrSetTransporter: (smptConfig: SMTPConfig) => Transporter;
13
+ export {};
7
14
  //# sourceMappingURL=sendEmail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sendEmail.d.ts","sourceRoot":"","sources":["../../lib/Auth/sendEmail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAWhD;;;GAGG;AACH,eAAO,MAAM,SAAS,eAAgB,UAAU,SAAS,KAAK,qBAQ7D,CAAA"}
1
+ {"version":3,"file":"sendEmail.d.ts","sourceRoot":"","sources":["../../lib/Auth/sendEmail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,YAAY,MAAM,8BAA8B,CAAC;AAExD,KAAK,cAAc,GAAI,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;AAClG,KAAK,eAAe,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACvG,KAAK,WAAW,GAAG,cAAc,GAAG,eAAe,CAAC;AAIpD;;;GAGG;AACH,eAAO,MAAM,SAAS,eAAgB,UAAU,SAAS,KAAK,qBAG7D,CAAA;AAED,eAAO,MAAM,mBAAmB,eAAgB,UAAU,gBAOzD,CAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sendEmail = void 0;
3
+ exports.getOrSetTransporter = exports.sendEmail = void 0;
4
4
  const nodemailer_1 = require("nodemailer");
5
5
  const client_ses_1 = require("@aws-sdk/client-ses");
6
6
  const transporterCache = new Map();
@@ -9,14 +9,19 @@ const transporterCache = new Map();
9
9
  * https://www.nodemailer.com/transports/ses/
10
10
  */
11
11
  const sendEmail = (smptConfig, email) => {
12
+ const transporter = (0, exports.getOrSetTransporter)(smptConfig);
13
+ return send(transporter, email);
14
+ };
15
+ exports.sendEmail = sendEmail;
16
+ const getOrSetTransporter = (smptConfig) => {
12
17
  const configStr = JSON.stringify(smptConfig);
13
18
  const transporter = transporterCache.get(configStr) ?? getTransporter(smptConfig);
14
19
  if (!transporterCache.has(configStr)) {
15
20
  transporterCache.set(configStr, transporter);
16
21
  }
17
- return send(transporter, email);
22
+ return transporter;
18
23
  };
19
- exports.sendEmail = sendEmail;
24
+ exports.getOrSetTransporter = getOrSetTransporter;
20
25
  const getTransporter = (smptConfig) => {
21
26
  let transporter;
22
27
  if (smptConfig.type === "aws-ses") {
@@ -1 +1 @@
1
- {"version":3,"file":"sendEmail.js","sourceRoot":"","sources":["../../lib/Auth/sendEmail.ts"],"names":[],"mappings":";;;AACA,2CAAoC;AACpC,oDAAsC;AAOtC,MAAM,gBAAgB,GAA6B,IAAI,GAAG,EAAE,CAAC;AAE7D;;;GAGG;AACI,MAAM,SAAS,GAAG,CAAC,UAAsB,EAAE,KAAY,EAAE,EAAE;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IAClF,IAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAC,CAAC;QACnC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC,CAAA;AARY,QAAA,SAAS,aAQrB;AAED,MAAM,cAAc,GAAG,CAAC,UAAsB,EAAE,EAAE;IAChD,IAAI,WAAoC,CAAC;IACzC,IAAG,UAAU,CAAC,IAAI,KAAK,SAAS,EAAC,CAAC;QAChC,MAAM,EACJ,MAAM,EACN,WAAW,EACX,eAAe;QACf;;WAEG;QACH,WAAW,GAAG,CAAC,EAChB,GAAG,UAAU,CAAC;QACf,MAAM,GAAG,GAAG,IAAI,oBAAG,CAAC,GAAG,CAAC;YACtB,UAAU,EAAE,YAAY;YACxB,MAAM;YACN,WAAW,EAAE;gBACX,WAAW;gBACX,eAAe;aAChB;SACF,CAAC,CAAC;QAEH,WAAW,GAAG,oBAAU,CAAC,eAAe,CAAC;YACvC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAH,oBAAG,EAAE;YACjB,cAAc,EAAE,CAAC;YACjB,WAAW;SACZ,CAAC,CAAC;IAEL,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QACtD,WAAW,GAAG,oBAAU,CAAC,eAAe,CAAC;YACvC,IAAI;YACJ,IAAI;YACJ,MAAM;YACN,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACrB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,WAAwB,EAAE,KAAY,EAAE,EAAE;IACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YAC5B,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBACzB,WAAW,CAAC,QAAQ,CAClB,KAAK,EACL,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBACZ,IAAG,GAAG,EAAC,CAAC;wBACN,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"sendEmail.js","sourceRoot":"","sources":["../../lib/Auth/sendEmail.ts"],"names":[],"mappings":";;;AACA,2CAAoC;AACpC,oDAAsC;AAOtC,MAAM,gBAAgB,GAA6B,IAAI,GAAG,EAAE,CAAC;AAE7D;;;GAGG;AACI,MAAM,SAAS,GAAG,CAAC,UAAsB,EAAE,KAAY,EAAE,EAAE;IAChE,MAAM,WAAW,GAAG,IAAA,2BAAmB,EAAC,UAAU,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC,CAAA;AAHY,QAAA,SAAS,aAGrB;AAEM,MAAM,mBAAmB,GAAG,CAAC,UAAsB,EAAE,EAAE;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IAClF,IAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAC,CAAC;QACnC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAA;AAPY,QAAA,mBAAmB,uBAO/B;AAED,MAAM,cAAc,GAAG,CAAC,UAAsB,EAAE,EAAE;IAChD,IAAI,WAAoC,CAAC;IACzC,IAAG,UAAU,CAAC,IAAI,KAAK,SAAS,EAAC,CAAC;QAChC,MAAM,EACJ,MAAM,EACN,WAAW,EACX,eAAe;QACf;;WAEG;QACH,WAAW,GAAG,CAAC,EAChB,GAAG,UAAU,CAAC;QACf,MAAM,GAAG,GAAG,IAAI,oBAAG,CAAC,GAAG,CAAC;YACtB,UAAU,EAAE,YAAY;YACxB,MAAM;YACN,WAAW,EAAE;gBACX,WAAW;gBACX,eAAe;aAChB;SACF,CAAC,CAAC;QAEH,WAAW,GAAG,oBAAU,CAAC,eAAe,CAAC;YACvC,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAH,oBAAG,EAAE;YACjB,cAAc,EAAE,CAAC;YACjB,WAAW;SACZ,CAAC,CAAC;IAEL,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QACtD,WAAW,GAAG,oBAAU,CAAC,eAAe,CAAC;YACvC,IAAI;YACJ,IAAI;YACJ,MAAM;YACN,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACrB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,WAAwB,EAAE,KAAY,EAAE,EAAE;IACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YAC5B,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBACzB,WAAW,CAAC,QAAQ,CAClB,KAAK,EACL,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBACZ,IAAG,GAAG,EAAC,CAAC;wBACN,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setEmailProvider.d.ts","sourceRoot":"","sources":["../../lib/Auth/setEmailProvider.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,EAA0B,WAAW,EAAa,MAAM,eAAe,CAAC;AAK/E,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,iBA4DvE"}
1
+ {"version":3,"file":"setEmailProvider.d.ts","sourceRoot":"","sources":["../../lib/Auth/setEmailProvider.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,SAAS,CAAC;AACxB,OAAO,EAA0B,WAAW,EAAa,MAAM,eAAe,CAAC;AAK/E,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,iBAoEvE"}
@@ -11,6 +11,14 @@ async function setEmailProvider(app) {
11
11
  if (websiteUrl) {
12
12
  await checkDmarc(websiteUrl);
13
13
  }
14
+ if (email.signupType === "withPassword") {
15
+ if (email.emailConfirmation) {
16
+ tryGetTransporter(email.emailConfirmation.smtp);
17
+ }
18
+ }
19
+ else {
20
+ tryGetTransporter(email.emailMagicLink.smtp);
21
+ }
14
22
  app.post(AuthHandler_1.AUTH_ROUTES_AND_PARAMS.emailSignup, async (req, res) => {
15
23
  const { username, password } = req.body;
16
24
  let validationError = "";
@@ -83,4 +91,12 @@ const checkDmarc = async (websiteUrl) => {
83
91
  console.log("DMARC set to reject");
84
92
  }
85
93
  };
94
+ const tryGetTransporter = (smtp) => {
95
+ try {
96
+ (0, sendEmail_1.getOrSetTransporter)(smtp);
97
+ }
98
+ catch (err) {
99
+ console.error("Failed to set email transporter", err);
100
+ }
101
+ };
86
102
  //# sourceMappingURL=setEmailProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setEmailProvider.js","sourceRoot":"","sources":["../../lib/Auth/setEmailProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setEmailProvider.js","sourceRoot":"","sources":["../../lib/Auth/setEmailProvider.ts"],"names":[],"mappings":"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"}
@@ -14,13 +14,17 @@ const transporterCache: Map<string, Transporter> = new Map();
14
14
  * https://www.nodemailer.com/transports/ses/
15
15
  */
16
16
  export const sendEmail = (smptConfig: SMTPConfig, email: Email) => {
17
+ const transporter = getOrSetTransporter(smptConfig);
18
+ return send(transporter, email);
19
+ }
20
+
21
+ export const getOrSetTransporter = (smptConfig: SMTPConfig) => {
17
22
  const configStr = JSON.stringify(smptConfig);
18
23
  const transporter = transporterCache.get(configStr) ?? getTransporter(smptConfig);
19
24
  if(!transporterCache.has(configStr)){
20
25
  transporterCache.set(configStr, transporter);
21
26
  }
22
-
23
- return send(transporter, email);
27
+ return transporter;
24
28
  }
25
29
 
26
30
  const getTransporter = (smptConfig: SMTPConfig) => {
@@ -1,7 +1,7 @@
1
1
  import e from "express";
2
2
  import { AUTH_ROUTES_AND_PARAMS, AuthHandler, HTTPCODES } from "./AuthHandler";
3
3
  import { Email, SMTPConfig } from "./AuthTypes";
4
- import { sendEmail } from "./sendEmail";
4
+ import { getOrSetTransporter, sendEmail } from "./sendEmail";
5
5
  import { promises } from "node:dns";
6
6
 
7
7
  export async function setEmailProvider(this: AuthHandler, app: e.Express) {
@@ -12,6 +12,14 @@ export async function setEmailProvider(this: AuthHandler, app: e.Express) {
12
12
  await checkDmarc(websiteUrl);
13
13
  }
14
14
 
15
+ if(email.signupType === "withPassword"){
16
+ if(email.emailConfirmation){
17
+ tryGetTransporter(email.emailConfirmation.smtp);
18
+ }
19
+ } else {
20
+ tryGetTransporter(email.emailMagicLink.smtp);
21
+ }
22
+
15
23
  app.post(AUTH_ROUTES_AND_PARAMS.emailSignup, async (req, res) => {
16
24
  const { username, password } = req.body;
17
25
  let validationError = "";
@@ -82,4 +90,12 @@ const checkDmarc = async (websiteUrl: string) => {
82
90
  } else {
83
91
  console.log("DMARC set to reject")
84
92
  }
93
+ }
94
+
95
+ const tryGetTransporter = (smtp: SMTPConfig) => {
96
+ try {
97
+ getOrSetTransporter(smtp);
98
+ } catch(err) {
99
+ console.error("Failed to set email transporter", err);
100
+ }
85
101
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.162",
3
+ "version": "4.2.163",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",