@spinajs/email 2.0.481 → 2.0.484

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/lib/cjs/cli/EmailSrv.js +1 -1
  2. package/lib/cjs/config/email.d.ts +11 -1
  3. package/lib/cjs/config/email.d.ts.map +1 -1
  4. package/lib/cjs/config/email.js +9 -1
  5. package/lib/cjs/config/email.js.map +1 -1
  6. package/lib/cjs/events/EmailSendFailed.d.ts +44 -0
  7. package/lib/cjs/events/EmailSendFailed.d.ts.map +1 -0
  8. package/lib/cjs/events/EmailSendFailed.js +41 -0
  9. package/lib/cjs/events/EmailSendFailed.js.map +1 -0
  10. package/lib/cjs/index.d.ts +3 -1
  11. package/lib/cjs/index.d.ts.map +1 -1
  12. package/lib/cjs/index.js +32 -6
  13. package/lib/cjs/index.js.map +1 -1
  14. package/lib/cjs/interfaces.d.ts +39 -3
  15. package/lib/cjs/interfaces.d.ts.map +1 -1
  16. package/lib/cjs/interfaces.js.map +1 -1
  17. package/lib/cjs/jobs/EmailSend.d.ts +4 -3
  18. package/lib/cjs/jobs/EmailSend.d.ts.map +1 -1
  19. package/lib/cjs/jobs/EmailSend.js +7 -0
  20. package/lib/cjs/jobs/EmailSend.js.map +1 -1
  21. package/lib/cjs/schemas/email.smtp.configuration.d.ts +30 -3
  22. package/lib/cjs/schemas/email.smtp.configuration.d.ts.map +1 -1
  23. package/lib/cjs/schemas/email.smtp.configuration.js +18 -3
  24. package/lib/cjs/schemas/email.smtp.configuration.js.map +1 -1
  25. package/lib/mjs/cli/EmailSrv.js +1 -1
  26. package/lib/mjs/config/email.d.ts +11 -1
  27. package/lib/mjs/config/email.d.ts.map +1 -1
  28. package/lib/mjs/config/email.js +9 -1
  29. package/lib/mjs/config/email.js.map +1 -1
  30. package/lib/mjs/events/EmailSendFailed.d.ts +44 -0
  31. package/lib/mjs/events/EmailSendFailed.d.ts.map +1 -0
  32. package/lib/mjs/events/EmailSendFailed.js +38 -0
  33. package/lib/mjs/events/EmailSendFailed.js.map +1 -0
  34. package/lib/mjs/index.d.ts +3 -1
  35. package/lib/mjs/index.d.ts.map +1 -1
  36. package/lib/mjs/index.js +32 -6
  37. package/lib/mjs/index.js.map +1 -1
  38. package/lib/mjs/interfaces.d.ts +39 -3
  39. package/lib/mjs/interfaces.d.ts.map +1 -1
  40. package/lib/mjs/interfaces.js.map +1 -1
  41. package/lib/mjs/jobs/EmailSend.d.ts +4 -3
  42. package/lib/mjs/jobs/EmailSend.d.ts.map +1 -1
  43. package/lib/mjs/jobs/EmailSend.js +8 -1
  44. package/lib/mjs/jobs/EmailSend.js.map +1 -1
  45. package/lib/mjs/schemas/email.smtp.configuration.d.ts +30 -3
  46. package/lib/mjs/schemas/email.smtp.configuration.d.ts.map +1 -1
  47. package/lib/mjs/schemas/email.smtp.configuration.js +18 -3
  48. package/lib/mjs/schemas/email.smtp.configuration.js.map +1 -1
  49. package/lib/tsconfig.cjs.tsbuildinfo +1 -1
  50. package/lib/tsconfig.mjs.tsbuildinfo +1 -1
  51. package/package.json +18 -18
@@ -16,7 +16,7 @@ const log_common_1 = require("@spinajs/log-common");
16
16
  const index_js_1 = require("./../index.js");
17
17
  let EmailServer = class EmailServer extends cli_1.CliCommand {
18
18
  async execute() {
19
- await this.EmailService.processDefferedEmails();
19
+ await this.EmailService.processDeferredEmails();
20
20
  }
21
21
  };
22
22
  exports.EmailServer = EmailServer;
@@ -12,21 +12,31 @@ declare const email: {
12
12
  * FS must be set in configuration on server/app that sends emails
13
13
  */
14
14
  templateFs: string;
15
+ /**
16
+ * Default queue-level retry count for deferred emails.
17
+ */
18
+ retry: {
19
+ count: number;
20
+ };
15
21
  };
16
22
  queue: {
17
23
  routing: {
18
- EmailSendJob: {
24
+ EmailSend: {
19
25
  connection: string;
20
26
  };
21
27
  EmailSent: {
22
28
  connection: string;
23
29
  };
30
+ EmailSendFailed: {
31
+ connection: string;
32
+ };
24
33
  };
25
34
  connections: {
26
35
  name: string;
27
36
  service: string;
28
37
  defaultQueueChannel: string;
29
38
  defaultTopicChannel: string;
39
+ defaultQueueDeadLetterChannel: string;
30
40
  }[];
31
41
  };
32
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/config/email.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,KAAK;;;;;;;;;QAWP;;;WAGG;;;;;;;;;;;;;;;;;;;CAmBN,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/config/email.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,KAAK;;;;;;;;;QAWP;;;WAGG;;QAGH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;CAuBN,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -24,11 +24,18 @@ const email = {
24
24
  * FS must be set in configuration on server/app that sends emails
25
25
  */
26
26
  templateFs: "email-templates",
27
+ /**
28
+ * Default queue-level retry count for deferred emails.
29
+ */
30
+ retry: {
31
+ count: 3,
32
+ },
27
33
  },
28
34
  queue: {
29
35
  routing: {
30
- EmailSendJob: { connection: 'email-queue-black-hole' },
36
+ EmailSend: { connection: 'email-queue-black-hole' },
31
37
  EmailSent: { connection: 'email-queue-black-hole' },
38
+ EmailSendFailed: { connection: 'email-queue-black-hole' },
32
39
  },
33
40
  // by default we dont have queue server for sending emails
34
41
  connections: [
@@ -37,6 +44,7 @@ const email = {
37
44
  service: 'BlackHoleQueueClient',
38
45
  defaultQueueChannel: 'email-jobs',
39
46
  defaultTopicChannel: 'email-events',
47
+ defaultQueueDeadLetterChannel: 'email-jobs-dlq',
40
48
  },
41
49
  ],
42
50
  },
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/config/email.ts"],"names":[],"mappings":";;AAAA,+BAAgD;AAEhD,SAAS,GAAG,CAAC,IAAY;IACvB,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IACjD,OAAO;QACL,IAAA,cAAO,EAAC,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAExJ,4CAA4C;QAC5C,IAAA,cAAO,EAAC,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,EAAC,KAAK,EAAC,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;KAC9J,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;SACvB;KACF;IACD,KAAK,EAAE;QACL,kCAAkC;QAClC,KAAK,EAAE,wBAAwB;QAE/B;;;WAGG;QACH,UAAU,EAAE,iBAAiB;KAC9B;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,YAAY,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE;YACtD,SAAS,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE;SACpD;QAED,0DAA0D;QAC1D,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,sBAAsB;gBAC/B,mBAAmB,EAAE,YAAY;gBACjC,mBAAmB,EAAE,cAAc;aACpC;SACF;KACF;CACF,CAAC;AAEF,kBAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/config/email.ts"],"names":[],"mappings":";;AAAA,+BAAgD;AAEhD,SAAS,GAAG,CAAC,IAAY;IACvB,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;IACjD,OAAO;QACL,IAAA,cAAO,EAAC,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAExJ,4CAA4C;QAC5C,IAAA,cAAO,EAAC,IAAA,gBAAS,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,EAAE,EAAC,KAAK,EAAC,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;KAC9J,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;SACvB;KACF;IACD,KAAK,EAAE;QACL,kCAAkC;QAClC,KAAK,EAAE,wBAAwB;QAE/B;;;WAGG;QACH,UAAU,EAAE,iBAAiB;QAE7B;;WAEG;QACH,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;SACT;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,SAAS,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE;YACnD,SAAS,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE;YACnD,eAAe,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE;SAC1D;QAED,0DAA0D;QAC1D,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,sBAAsB;gBAC/B,mBAAmB,EAAE,YAAY;gBACjC,mBAAmB,EAAE,cAAc;gBACnC,6BAA6B,EAAE,gBAAgB;aAChD;SACF;KACF;CACF,CAAC;AAEF,kBAAe,KAAK,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { QueueEvent, IJobFailureContext } from '@spinajs/queue';
2
+ import { DateTime } from 'luxon';
3
+ import { IEmail, IEmailTemplate } from '../interfaces.js';
4
+ /**
5
+ * Emitted when a deferred email job has finally failed ( retries exhausted ).
6
+ * Carries only wire-safe fields so it can be routed to alerting / dead-letter handling.
7
+ */
8
+ export declare class EmailSendFailed extends QueueEvent {
9
+ Connection?: string;
10
+ From: string;
11
+ To: string[];
12
+ Subject: string;
13
+ /**
14
+ * Email template eg. pug file or mustashe
15
+ */
16
+ Template?: string | IEmailTemplate;
17
+ /**
18
+ * Additional tag for email, usefull for identyfying emails by category or module that sends it
19
+ */
20
+ Tag?: string;
21
+ /**
22
+ * Unique email id, for identification eg. in case of delivery failure
23
+ */
24
+ EmailId?: string;
25
+ /**
26
+ * Id of the failed queue job.
27
+ */
28
+ JobId?: string;
29
+ /**
30
+ * Failure reason - message only, so it stays wire-safe ( no stack / PII ).
31
+ */
32
+ Error: string;
33
+ /**
34
+ * The attempt number that finally failed.
35
+ */
36
+ Attempt?: number;
37
+ /**
38
+ * The total allowed executions for the job ( retries + 1 ).
39
+ */
40
+ MaxAttempts?: number;
41
+ FailedAt: DateTime;
42
+ constructor(email: IEmail, err: unknown, ctx?: IJobFailureContext);
43
+ }
44
+ //# sourceMappingURL=EmailSendFailed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmailSendFailed.d.ts","sourceRoot":"","sources":["../../../src/events/EmailSendFailed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAS,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;GAGG;AACH,qBACa,eAAgB,SAAQ,UAAU;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,IAAI,EAAE,MAAM,CAAC;IAEb,EAAE,EAAE,MAAM,EAAE,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACI,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAE1C;;OAEG;IACI,GAAG,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACI,OAAO,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACI,KAAK,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACI,KAAK,EAAE,MAAM,CAAC;IAErB;;OAEG;IACI,OAAO,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACI,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,EAAE,QAAQ,CAAC;gBAEd,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,kBAAkB;CAmBlE"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EmailSendFailed = void 0;
13
+ const queue_1 = require("@spinajs/queue");
14
+ const luxon_1 = require("luxon");
15
+ /**
16
+ * Emitted when a deferred email job has finally failed ( retries exhausted ).
17
+ * Carries only wire-safe fields so it can be routed to alerting / dead-letter handling.
18
+ */
19
+ let EmailSendFailed = class EmailSendFailed extends queue_1.QueueEvent {
20
+ constructor(email, err, ctx) {
21
+ super();
22
+ this.Connection = email.connection;
23
+ this.From = email.from ?? '';
24
+ this.To = email.to;
25
+ this.Subject = email.subject;
26
+ this.Template = email.template;
27
+ this.Tag = email.tag;
28
+ this.EmailId = email.emailId;
29
+ this.JobId = ctx?.jobId;
30
+ this.Attempt = ctx?.attempt;
31
+ this.MaxAttempts = ctx?.maxAttempts;
32
+ this.Error = err instanceof Error ? err.message : String(err);
33
+ this.FailedAt = luxon_1.DateTime.now();
34
+ }
35
+ };
36
+ exports.EmailSendFailed = EmailSendFailed;
37
+ exports.EmailSendFailed = EmailSendFailed = __decorate([
38
+ (0, queue_1.Event)(),
39
+ __metadata("design:paramtypes", [Object, Object, Object])
40
+ ], EmailSendFailed);
41
+ //# sourceMappingURL=EmailSendFailed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmailSendFailed.js","sourceRoot":"","sources":["../../../src/events/EmailSendFailed.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAuE;AACvE,iCAAiC;AAGjC;;;GAGG;AAEI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,kBAAU;IA8C7C,YAAY,KAAa,EAAE,GAAY,EAAE,GAAwB;QAC/D,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE7B,IAAI,CAAC,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,OAAO,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,GAAG,EAAE,WAAW,CAAC;QAEpC,IAAI,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE9D,IAAI,CAAC,QAAQ,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;CACF,CAAA;AAjEY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,aAAK,GAAE;;GACK,eAAe,CAiE3B"}
@@ -4,6 +4,8 @@ import { EmailSend } from './jobs/EmailSend.js';
4
4
  export * from './interfaces.js';
5
5
  export * from './transports.js';
6
6
  export * from './jobs/EmailSend.js';
7
+ export * from './events/EmailSent.js';
8
+ export * from './events/EmailSendFailed.js';
7
9
  export * from "./fp.js";
8
10
  export declare class LogBotstrapper extends Bootstrapper {
9
11
  bootstrap(): void;
@@ -20,6 +22,6 @@ export declare class DefaultEmailService extends EmailService {
20
22
  */
21
23
  send(email: IEmail): Promise<void>;
22
24
  sendDeferred(email: IEmail): Promise<EmailSend>;
23
- processDefferedEmails(): Promise<void>;
25
+ processDeferredEmails(): Promise<void>;
24
26
  }
25
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,YAAY,EAAc,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AAExB,qBACa,cAAe,SAAQ,YAAY;IACvC,SAAS,IAAI,IAAI;CAGzB;AAED;;GAEG;AACH,qBACa,mBAAoB,SAAQ,YAAY;IACnD;;;;;OAKG;IACU,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAiB/C,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,YAAY,EAAc,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AAExB,qBACa,cAAe,SAAQ,YAAY;IACvC,SAAS,IAAI,IAAI;CAGzB;AAED;;GAEG;AACH,qBACa,mBAAoB,SAAQ,YAAY;IACnD;;;;;OAKG;IACU,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiClC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAoB/C,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpD"}
package/lib/cjs/index.js CHANGED
@@ -26,6 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.DefaultEmailService = exports.LogBotstrapper = void 0;
27
27
  const exceptions_1 = require("@spinajs/exceptions");
28
28
  const di_1 = require("@spinajs/di");
29
+ const log_1 = require("@spinajs/log");
29
30
  const interfaces_js_1 = require("./interfaces.js");
30
31
  const email_smtp_configuration_js_1 = __importDefault(require("./schemas/email.smtp.configuration.js"));
31
32
  const EmailSent_js_1 = require("./events/EmailSent.js");
@@ -33,6 +34,8 @@ const EmailSend_js_1 = require("./jobs/EmailSend.js");
33
34
  __exportStar(require("./interfaces.js"), exports);
34
35
  __exportStar(require("./transports.js"), exports);
35
36
  __exportStar(require("./jobs/EmailSend.js"), exports);
37
+ __exportStar(require("./events/EmailSent.js"), exports);
38
+ __exportStar(require("./events/EmailSendFailed.js"), exports);
36
39
  __exportStar(require("./fp.js"), exports);
37
40
  let LogBotstrapper = class LogBotstrapper extends di_1.Bootstrapper {
38
41
  bootstrap() {
@@ -54,16 +57,39 @@ let DefaultEmailService = class DefaultEmailService extends interfaces_js_1.Emai
54
57
  * @param email - email struct
55
58
  */
56
59
  async send(email) {
57
- if (!this.Senders.has(email.connection)) {
58
- throw new exceptions_1.InvalidOperation(`Email sender ${email.connection} not exists. Please check your configuration files.`);
60
+ const connection = email.connection;
61
+ if (!this.Senders.has(connection)) {
62
+ this.Log.error(`Email sender ${connection} not exists. Please check your configuration files.`);
63
+ log_1.Perf.count('email.send.failed', 1, { connection });
64
+ throw new exceptions_1.InvalidOperation(`Email sender ${connection} not exists. Please check your configuration files.`);
65
+ }
66
+ try {
67
+ await log_1.Perf.measure('email.send', () => this.Senders.get(connection).send(email), { labels: { connection } });
68
+ }
69
+ catch (err) {
70
+ // full recipient addresses are PII - keep them at trace level only, log just the count otherwise.
71
+ this.Log.error(err, `Cannot send email on connection ${connection}, subject: ${email.subject}, recipients: ${email.to?.length ?? 0}`);
72
+ this.Log.trace(`Failed email recipients on connection ${connection}: ${(email.to ?? []).join(', ')}`);
73
+ log_1.Perf.count('email.send.failed', 1, { connection });
74
+ // rethrow the ORIGINAL error so the queue consumer sees the failure and can retry / dead-letter.
75
+ throw err;
76
+ }
77
+ log_1.Perf.count('email.sent', 1, { connection });
78
+ this.Log.info(`Email sent on connection ${connection}, subject: ${email.subject}, recipients: ${email.to?.length ?? 0}`);
79
+ // inform others of email event. Guard separately: rethrowing after a successful SMTP send
80
+ // would make the queue retry the job and send a DUPLICATE email.
81
+ try {
82
+ await this.Queue.emit(new EmailSent_js_1.EmailSent(email));
83
+ }
84
+ catch (err) {
85
+ this.Log.error(err, `Failed to emit EmailSent event on connection ${connection}, subject: ${email.subject}`);
59
86
  }
60
- await this.Senders.get(email.connection).send(email);
61
- // inform others of email event
62
- await this.Queue.emit(new EmailSent_js_1.EmailSent(email));
63
87
  }
64
88
  async sendDeferred(email) {
65
89
  const dEmail = new EmailSend_js_1.EmailSend();
66
90
  dEmail.hydrate(email);
91
+ // queue-level retry: per-email override wins, then config default, then 3.
92
+ dEmail.RetryCount = email.retryCount ?? this.Configuration.retry?.count ?? 3;
67
93
  /** set queue schedule */
68
94
  if (email.schedule) {
69
95
  dEmail.ScheduleCron = email.schedule.cron;
@@ -74,7 +100,7 @@ let DefaultEmailService = class DefaultEmailService extends interfaces_js_1.Emai
74
100
  await this.Queue.emit(dEmail);
75
101
  return dEmail;
76
102
  }
77
- async processDefferedEmails() {
103
+ async processDeferredEmails() {
78
104
  await this.Queue.consume(EmailSend_js_1.EmailSend);
79
105
  }
80
106
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAuD;AACvD,oCAA2D;AAC3D,mDAAuD;AACvD,wGAAyE;AACzE,wDAAkD;AAClD,sDAAgD;AAEhD,kDAAgC;AAChC,kDAAgC;AAChC,sDAAoC;AACpC,0CAAwB;AAGjB,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,iBAAY;IACvC,SAAS;QACd,OAAE,CAAC,QAAQ,CAAC,qCAAoB,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACvE,CAAC;CACF,CAAA;AAJY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,eAAU,EAAC,iBAAY,CAAC;GACZ,cAAc,CAI1B;AAED;;GAEG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,4BAAY;IACnD;;;;;OAKG;IACI,KAAK,CAAC,IAAI,CAAC,KAAa;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,6BAAgB,CAAC,gBAAgB,KAAK,CAAC,UAAU,qDAAqD,CAAC,CAAC;QACpH,CAAC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtD,+BAA+B;QAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,wBAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,KAAa;QACrC,MAAM,MAAM,GAAG,IAAI,wBAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtB,yBAAyB;QACzB,IAAG,KAAK,CAAC,QAAQ,EAAC,CAAC;YACjB,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC1C,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5C,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC9C,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAS,CAAC,CAAC;IACtC,CAAC;CACF,CAAA;AAtCY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,eAAU,EAAC,4BAAY,CAAC;GACZ,mBAAmB,CAsC/B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -88,6 +88,11 @@ export interface IEmail {
88
88
  * Unique email id, for identification eg. in case of delivery failure
89
89
  */
90
90
  emailId?: string;
91
+ /**
92
+ * Per-email override of the queue-level retry count used when the email is sent deferred.
93
+ * Falls back to `email.retry.count` configuration when not set.
94
+ */
95
+ retryCount?: number;
91
96
  /**
92
97
  * Email delivery schedule. If we want to repeat email, schedule to send at specific time, send delayed etc..
93
98
  */
@@ -113,14 +118,27 @@ export interface IEmail {
113
118
  export interface EmailConfiguration {
114
119
  connections: EmailConnectionOptions[];
115
120
  defaultConnection: string;
121
+ /**
122
+ * Default queue-level retry policy for deferred emails.
123
+ */
124
+ retry?: {
125
+ /**
126
+ * How many times a deferred email job is retried on failure. Defaults to 3.
127
+ */
128
+ count?: number;
129
+ };
116
130
  }
117
131
  export interface EmailConnectionOptions {
118
- sender: string;
132
+ /**
133
+ * DI service name of the {@link EmailSender} implementation handling this connection.
134
+ * Selected via {@link AutoinjectService} ( reads the `service` key of each connection entry ).
135
+ */
136
+ service: string;
119
137
  name: string;
120
138
  host?: string;
121
139
  port?: number;
122
140
  user?: string;
123
- pass?: string;
141
+ password?: string;
124
142
  ssl?: boolean;
125
143
  templates?: {
126
144
  defaults?: any;
@@ -134,6 +152,24 @@ export interface EmailConnectionOptions {
134
152
  */
135
153
  mailFrom?: string;
136
154
  };
155
+ /**
156
+ * In-process SMTP send resilience ( retry / timeout ) applied by transports when
157
+ * talking to the SMTP server, independent of the queue-level job retry.
158
+ */
159
+ resilience?: {
160
+ /**
161
+ * How many times the transport retries a failed SMTP send.
162
+ */
163
+ retries?: number;
164
+ /**
165
+ * Delay ( ms ) between SMTP send retries.
166
+ */
167
+ delay?: number;
168
+ /**
169
+ * Timeout ( ms ) for a single SMTP send attempt.
170
+ */
171
+ timeout?: number;
172
+ };
137
173
  /**
138
174
  * Additional options passed
139
175
  * lib specific
@@ -163,6 +199,6 @@ export declare abstract class EmailService extends AsyncService {
163
199
  /**
164
200
  * Subscribte to queue for emails to send
165
201
  */
166
- abstract processDefferedEmails(): Promise<void>;
202
+ abstract processDeferredEmails(): Promise<void>;
167
203
  }
168
204
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAAwH;AACxH,sCAA2C;AAC3C,0DAAmE;AACnE,0CAA8C;AAG9C,MAAsB,WAAY,SAAQ,iBAAY;IAQpD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAIM,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,GAAG,OAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAEvF,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,MAAM,IAAI,qBAAgB,CAAC,oCAAoC,GAAG,IAAI,CAAC,qBAAqB,GAAG,4GAA4G,GAAG,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,CAAC;YAC/P,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAvBD,kCAuBC;AAnBW;IADT,IAAA,sBAAM,EAAC,kBAAkB,CAAC;;0DACa;AAuBnC,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,WAAW;IAKnD,YAAmB,OAA+B;QAChD,KAAK,EAAE,CAAC;QADS,YAAO,GAAP,OAAO,CAAwB;IAElD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;CACF,CAAA;AAbY,oDAAoB;AAErB;IADT,IAAA,YAAM,EAAC,OAAO,CAAC;8BACD,SAAG;iDAAC;+BAFR,oBAAoB;IAFhC,IAAA,eAAU,EAAC,WAAW,CAAC;IACvB,IAAA,gBAAW,GAAE;;GACD,oBAAoB,CAahC;AAgKD,MAAsB,YAAa,SAAQ,iBAAY;CAmCtD;AAnCD,oCAmCC;AAjCW;IADT,IAAA,YAAM,EAAC,OAAO,CAAC;8BACD,SAAG;yCAAC;AAGT;IADT,IAAA,iCAAiB,EAAC,mBAAmB,EAAE,WAAW,CAAC;8BACjC,GAAG;6CAAsB;AAGlC;IADT,IAAA,sBAAM,EAAC,OAAO,CAAC;;mDAC4B;AAGlC;IADT,IAAA,eAAU,EAAC,oBAAY,CAAC;8BACR,oBAAY;2CAAC"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAAwH;AACxH,sCAA2C;AAC3C,0DAAmE;AACnE,0CAA8C;AAG9C,MAAsB,WAAY,SAAQ,iBAAY;IAQpD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAIM,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,GAAG,OAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAEvF,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,MAAM,IAAI,qBAAgB,CAAC,oCAAoC,GAAG,IAAI,CAAC,qBAAqB,GAAG,4GAA4G,GAAG,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,CAAC;YAC/P,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAvBD,kCAuBC;AAnBW;IADT,IAAA,sBAAM,EAAC,kBAAkB,CAAC;;0DACa;AAuBnC,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,WAAW;IAKnD,YAAmB,OAA+B;QAChD,KAAK,EAAE,CAAC;QADS,YAAO,GAAP,OAAO,CAAwB;IAElD,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAc;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,OAAO,qBAAqB,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;CACF,CAAA;AAbY,oDAAoB;AAErB;IADT,IAAA,YAAM,EAAC,OAAO,CAAC;8BACD,SAAG;iDAAC;+BAFR,oBAAoB;IAFhC,IAAA,eAAU,EAAC,WAAW,CAAC;IACvB,IAAA,gBAAW,GAAE;;GACD,oBAAoB,CAahC;AAuMD,MAAsB,YAAa,SAAQ,iBAAY;CAmCtD;AAnCD,oCAmCC;AAjCW;IADT,IAAA,YAAM,EAAC,OAAO,CAAC;8BACD,SAAG;yCAAC;AAGT;IADT,IAAA,iCAAiB,EAAC,mBAAmB,EAAE,WAAW,CAAC;8BACjC,GAAG;6CAAsB;AAGlC;IADT,IAAA,sBAAM,EAAC,OAAO,CAAC;;mDAC4B;AAGlC;IADT,IAAA,eAAU,EAAC,oBAAY,CAAC;8BACR,oBAAY;2CAAC"}
@@ -1,5 +1,5 @@
1
- import { QueueJob } from '@spinajs/queue';
2
- import { IEmail, IEmailAttachement } from '../interfaces.js';
1
+ import { QueueJob, IJobFailureContext } from '@spinajs/queue';
2
+ import { IEmail, IEmailAttachement, IEmailTemplate } from '../interfaces.js';
3
3
  /**
4
4
  * Job for sending emails in background
5
5
  */
@@ -10,7 +10,7 @@ export declare class EmailSend extends QueueJob implements IEmail {
10
10
  from: string;
11
11
  connection: string;
12
12
  attachements?: IEmailAttachement[];
13
- template?: string;
13
+ template?: string | IEmailTemplate;
14
14
  templateId?: string;
15
15
  model?: unknown;
16
16
  text?: string;
@@ -23,5 +23,6 @@ export declare class EmailSend extends QueueJob implements IEmail {
23
23
  execute(): Promise<{
24
24
  result: boolean;
25
25
  }>;
26
+ onFailed(err: unknown, ctx: IJobFailureContext): Promise<void>;
26
27
  }
27
28
  //# sourceMappingURL=EmailSend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSend.d.ts","sourceRoot":"","sources":["../../../src/jobs/EmailSend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAO,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAgB,MAAM,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE3E;;GAEG;AACH,qBACa,SAAU,SAAQ,QAAS,YAAW,MAAM;IAChD,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IAEX,OAAO;;;CAOrB"}
1
+ {"version":3,"file":"EmailSend.d.ts","sourceRoot":"","sources":["../../../src/jobs/EmailSend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAqB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAgB,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAG3F;;GAEG;AACH,qBACa,SAAU,SAAQ,QAAS,YAAW,MAAM;IAChD,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IAEX,OAAO;;;IAQP,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,kBAAkB;CAK5D"}
@@ -10,6 +10,7 @@ exports.EmailSend = void 0;
10
10
  const di_1 = require("@spinajs/di");
11
11
  const queue_1 = require("@spinajs/queue");
12
12
  const interfaces_js_1 = require("../interfaces.js");
13
+ const EmailSendFailed_js_1 = require("../events/EmailSendFailed.js");
13
14
  /**
14
15
  * Job for sending emails in background
15
16
  */
@@ -21,6 +22,12 @@ let EmailSend = class EmailSend extends queue_1.QueueJob {
21
22
  result: true,
22
23
  };
23
24
  }
25
+ async onFailed(err, ctx) {
26
+ if (!ctx.isFinal)
27
+ return;
28
+ const queue = await di_1.DI.resolve(queue_1.QueueService);
29
+ await queue.emit(new EmailSendFailed_js_1.EmailSendFailed(this, err, ctx));
30
+ }
24
31
  };
25
32
  exports.EmailSend = EmailSend;
26
33
  exports.EmailSend = EmailSend = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSend.js","sourceRoot":"","sources":["../../../src/jobs/EmailSend.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oCAAiC;AACjC,0CAA+C;AAC/C,oDAA2E;AAE3E;;GAEG;AAEI,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,gBAAQ;IAkB9B,KAAK,CAAC,OAAO;QAClB,MAAM,MAAM,GAAG,MAAM,OAAE,CAAC,OAAO,CAAC,4BAAY,CAAC,CAAC;QAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO;YACL,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;CACF,CAAA;AAzBY,8BAAS;oBAAT,SAAS;IADrB,IAAA,WAAG,GAAE;GACO,SAAS,CAyBrB"}
1
+ {"version":3,"file":"EmailSend.js","sourceRoot":"","sources":["../../../src/jobs/EmailSend.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oCAAiC;AACjC,0CAAiF;AACjF,oDAA2F;AAC3F,qEAA+D;AAE/D;;GAEG;AAEI,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,gBAAQ;IAkB9B,KAAK,CAAC,OAAO;QAClB,MAAM,MAAM,GAAG,MAAM,OAAE,CAAC,OAAO,CAAC,4BAAY,CAAC,CAAC;QAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO;YACL,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,GAAY,EAAE,GAAuB;QACzD,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,KAAK,GAAG,MAAM,OAAE,CAAC,OAAO,CAAC,oBAAY,CAAC,CAAC;QAC7C,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,oCAAe,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC;CACF,CAAA;AA/BY,8BAAS;oBAAT,SAAS;IADrB,IAAA,WAAG,GAAE;GACO,SAAS,CA+BrB"}
@@ -4,7 +4,20 @@ declare const CONFIGURATION_SCHEMA: {
4
4
  description: string;
5
5
  type: string;
6
6
  properties: {
7
- queue: string;
7
+ queue: {
8
+ type: string;
9
+ };
10
+ templateFs: {
11
+ type: string;
12
+ };
13
+ retry: {
14
+ type: string;
15
+ properties: {
16
+ count: {
17
+ type: string;
18
+ };
19
+ };
20
+ };
8
21
  connections: {
9
22
  type: string;
10
23
  uniqueItems: boolean;
@@ -29,12 +42,26 @@ declare const CONFIGURATION_SCHEMA: {
29
42
  name: {
30
43
  type: string;
31
44
  };
32
- sender: {
45
+ service: {
33
46
  type: string;
34
47
  };
35
48
  options: {
36
49
  type: string;
37
50
  };
51
+ resilience: {
52
+ type: string;
53
+ properties: {
54
+ retries: {
55
+ type: string;
56
+ };
57
+ delay: {
58
+ type: string;
59
+ };
60
+ timeout: {
61
+ type: string;
62
+ };
63
+ };
64
+ };
38
65
  defaults: {
39
66
  type: string;
40
67
  properties: {
@@ -44,10 +71,10 @@ declare const CONFIGURATION_SCHEMA: {
44
71
  };
45
72
  };
46
73
  };
74
+ required: string[];
47
75
  };
48
76
  };
49
77
  };
50
- required: string[];
51
78
  };
52
79
  export default CONFIGURATION_SCHEMA;
53
80
  //# sourceMappingURL=email.smtp.configuration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"email.smtp.configuration.d.ts","sourceRoot":"","sources":["../../../src/schemas/email.smtp.configuration.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCzB,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"email.smtp.configuration.d.ts","sourceRoot":"","sources":["../../../src/schemas/email.smtp.configuration.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDzB,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -6,7 +6,14 @@ const CONFIGURATION_SCHEMA = {
6
6
  description: 'Email smtp transport configuration option validation',
7
7
  type: 'object',
8
8
  properties: {
9
- queue: 'string',
9
+ queue: { type: 'string' },
10
+ templateFs: { type: 'string' },
11
+ retry: {
12
+ type: 'object',
13
+ properties: {
14
+ count: { type: 'number' },
15
+ },
16
+ },
10
17
  connections: {
11
18
  type: 'array',
12
19
  uniqueItems: true,
@@ -19,10 +26,18 @@ const CONFIGURATION_SCHEMA = {
19
26
  user: { type: 'string' },
20
27
  password: { type: 'string' },
21
28
  name: { type: 'string' },
22
- sender: { type: 'string' },
29
+ service: { type: 'string' },
23
30
  options: {
24
31
  type: 'object',
25
32
  },
33
+ resilience: {
34
+ type: 'object',
35
+ properties: {
36
+ retries: { type: 'number' },
37
+ delay: { type: 'number' },
38
+ timeout: { type: 'number' },
39
+ },
40
+ },
26
41
  defaults: {
27
42
  type: 'object',
28
43
  properties: {
@@ -30,10 +45,10 @@ const CONFIGURATION_SCHEMA = {
30
45
  },
31
46
  },
32
47
  },
48
+ required: ['name', 'service'],
33
49
  },
34
50
  },
35
51
  },
36
- required: ['name', 'sender'],
37
52
  };
38
53
  exports.default = CONFIGURATION_SCHEMA;
39
54
  //# sourceMappingURL=email.smtp.configuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email.smtp.configuration.js","sourceRoot":"","sources":["../../../src/schemas/email.smtp.configuration.ts"],"names":[],"mappings":";;AAAA,MAAM,oBAAoB,GAAG;IAC3B,GAAG,EAAE,yCAAyC;IAC9C,oBAAoB,EAAE,OAAO;IAC7B,WAAW,EAAE,sDAAsD;IACnE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;qBACf;oBACD,QAAQ,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC7B;qBACF;iBACF;aACF;SACF;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;CAC7B,CAAC;AAEF,kBAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"email.smtp.configuration.js","sourceRoot":"","sources":["../../../src/schemas/email.smtp.configuration.ts"],"names":[],"mappings":";;AAAA,MAAM,oBAAoB,GAAG;IAC3B,GAAG,EAAE,yCAAyC;IAC9C,oBAAoB,EAAE,OAAO;IAC7B,WAAW,EAAE,sDAAsD;IACnE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9B,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC1B;SACF;QACD,WAAW,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;qBACf;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC5B;qBACF;oBACD,QAAQ,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC7B;qBACF;iBACF;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;aAC9B;SACF;KACF;CACF,CAAC;AAEF,kBAAe,oBAAoB,CAAC"}
@@ -13,7 +13,7 @@ import { Logger, Log } from '@spinajs/log-common';
13
13
  import { EmailService } from './../index.js';
14
14
  let EmailServer = class EmailServer extends CliCommand {
15
15
  async execute() {
16
- await this.EmailService.processDefferedEmails();
16
+ await this.EmailService.processDeferredEmails();
17
17
  }
18
18
  };
19
19
  __decorate([
@@ -12,21 +12,31 @@ declare const email: {
12
12
  * FS must be set in configuration on server/app that sends emails
13
13
  */
14
14
  templateFs: string;
15
+ /**
16
+ * Default queue-level retry count for deferred emails.
17
+ */
18
+ retry: {
19
+ count: number;
20
+ };
15
21
  };
16
22
  queue: {
17
23
  routing: {
18
- EmailSendJob: {
24
+ EmailSend: {
19
25
  connection: string;
20
26
  };
21
27
  EmailSent: {
22
28
  connection: string;
23
29
  };
30
+ EmailSendFailed: {
31
+ connection: string;
32
+ };
24
33
  };
25
34
  connections: {
26
35
  name: string;
27
36
  service: string;
28
37
  defaultQueueChannel: string;
29
38
  defaultTopicChannel: string;
39
+ defaultQueueDeadLetterChannel: string;
30
40
  }[];
31
41
  };
32
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/config/email.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,KAAK;;;;;;;;;QAWP;;;WAGG;;;;;;;;;;;;;;;;;;;CAmBN,CAAC;AAEF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/config/email.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,KAAK;;;;;;;;;QAWP;;;WAGG;;QAGH;;WAEG;;;;;;;;;;;;;;;;;;;;;;;;;CAuBN,CAAC;AAEF,eAAe,KAAK,CAAC"}