@c9up/rover 0.1.6 → 0.1.7

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 (70) hide show
  1. package/README.md +3 -1
  2. package/dist/BaseMail.d.ts +2 -1
  3. package/dist/BaseMail.d.ts.map +1 -1
  4. package/dist/BaseMail.js +9 -4
  5. package/dist/BaseMail.js.map +1 -1
  6. package/dist/Mail.d.ts +65 -11
  7. package/dist/Mail.d.ts.map +1 -1
  8. package/dist/Mail.js +142 -49
  9. package/dist/Mail.js.map +1 -1
  10. package/dist/MessageBuilder.d.ts +44 -7
  11. package/dist/MessageBuilder.d.ts.map +1 -1
  12. package/dist/MessageBuilder.js +57 -10
  13. package/dist/MessageBuilder.js.map +1 -1
  14. package/dist/format.d.ts +12 -0
  15. package/dist/format.d.ts.map +1 -0
  16. package/dist/format.js +14 -0
  17. package/dist/format.js.map +1 -0
  18. package/dist/index.d.ts +3 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/queue/MailJob.d.ts.map +1 -1
  23. package/dist/queue/MailJob.js.map +1 -1
  24. package/dist/queue/MemoryMailMessenger.d.ts +15 -0
  25. package/dist/queue/MemoryMailMessenger.d.ts.map +1 -0
  26. package/dist/queue/MemoryMailMessenger.js +42 -0
  27. package/dist/queue/MemoryMailMessenger.js.map +1 -0
  28. package/dist/testing/FakeMail.d.ts +30 -3
  29. package/dist/testing/FakeMail.d.ts.map +1 -1
  30. package/dist/testing/FakeMail.js +106 -28
  31. package/dist/testing/FakeMail.js.map +1 -1
  32. package/dist/transports/BrevoTransport.d.ts +14 -0
  33. package/dist/transports/BrevoTransport.d.ts.map +1 -0
  34. package/dist/transports/BrevoTransport.js +134 -0
  35. package/dist/transports/BrevoTransport.js.map +1 -0
  36. package/dist/transports/MailgunTransport.d.ts.map +1 -1
  37. package/dist/transports/MailgunTransport.js +3 -1
  38. package/dist/transports/MailgunTransport.js.map +1 -1
  39. package/dist/transports/ResendTransport.d.ts.map +1 -1
  40. package/dist/transports/ResendTransport.js +4 -2
  41. package/dist/transports/ResendTransport.js.map +1 -1
  42. package/dist/transports/SendGridTransport.d.ts.map +1 -1
  43. package/dist/transports/SendGridTransport.js +2 -2
  44. package/dist/transports/SendGridTransport.js.map +1 -1
  45. package/dist/transports/SesTransport.js +1 -1
  46. package/dist/transports/SesTransport.js.map +1 -1
  47. package/dist/transports/SparkPostTransport.d.ts +14 -0
  48. package/dist/transports/SparkPostTransport.d.ts.map +1 -0
  49. package/dist/transports/SparkPostTransport.js +144 -0
  50. package/dist/transports/SparkPostTransport.js.map +1 -0
  51. package/index.darwin-arm64.node +0 -0
  52. package/index.darwin-x64.node +0 -0
  53. package/index.linux-arm64-gnu.node +0 -0
  54. package/index.linux-x64-gnu.node +0 -0
  55. package/index.win32-x64-msvc.node +0 -0
  56. package/package.json +10 -1
  57. package/src/BaseMail.ts +17 -5
  58. package/src/Mail.ts +205 -62
  59. package/src/MessageBuilder.ts +103 -12
  60. package/src/format.ts +14 -0
  61. package/src/index.ts +5 -1
  62. package/src/queue/MailJob.ts +1 -1
  63. package/src/queue/MemoryMailMessenger.ts +45 -0
  64. package/src/testing/FakeMail.ts +232 -31
  65. package/src/transports/BrevoTransport.ts +174 -0
  66. package/src/transports/MailgunTransport.ts +3 -1
  67. package/src/transports/ResendTransport.ts +4 -2
  68. package/src/transports/SendGridTransport.ts +2 -2
  69. package/src/transports/SesTransport.ts +3 -1
  70. package/src/transports/SparkPostTransport.ts +182 -0
@@ -1 +1 @@
1
- {"version":3,"file":"MessageBuilder.d.ts","sourceRoot":"","sources":["../src/MessageBuilder.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAc;;IAY1B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1B,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK3B,MAAM,CACL,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,GAClB,IAAI;IAKP,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKhE;;;;;OAKG;IACG,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAYrD"}
1
+ {"version":3,"file":"MessageBuilder.d.ts","sourceRoot":"","sources":["../src/MessageBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { formatAddress } from "./format.js";
1
2
  import { renderFile as renderTemplateFile } from "./templating/SimpleTemplate.js";
2
3
  export class MessageBuilder {
3
4
  #msg = {
@@ -10,24 +11,24 @@ export class MessageBuilder {
10
11
  headers: {},
11
12
  };
12
13
  #pendingView = null;
13
- from(address) {
14
- this.#msg.from = address;
14
+ from(address, name) {
15
+ this.#msg.from = formatAddress(address, name);
15
16
  return this;
16
17
  }
17
- to(address) {
18
- this.#msg.to.push(address);
18
+ to(address, name) {
19
+ addRecipients(this.#msg.to, address, name);
19
20
  return this;
20
21
  }
21
- cc(address) {
22
- this.#msg.cc.push(address);
22
+ cc(address, name) {
23
+ addRecipients(this.#msg.cc, address, name);
23
24
  return this;
24
25
  }
25
- bcc(address) {
26
- this.#msg.bcc.push(address);
26
+ bcc(address, name) {
27
+ addRecipients(this.#msg.bcc, address, name);
27
28
  return this;
28
29
  }
29
- replyTo(address) {
30
- this.#msg.replyTo = address;
30
+ replyTo(address, name) {
31
+ this.#msg.replyTo = formatAddress(address, name);
31
32
  return this;
32
33
  }
33
34
  subject(text) {
@@ -42,10 +43,40 @@ export class MessageBuilder {
42
43
  this.#msg.text = content;
43
44
  return this;
44
45
  }
46
+ /** Email priority (`low` | `normal` | `high`). */
47
+ priority(priority) {
48
+ this.#msg.priority = priority;
49
+ return this;
50
+ }
51
+ /** Set a custom `Message-ID` header. */
52
+ messageId(messageId) {
53
+ this.#msg.messageId = messageId;
54
+ return this;
55
+ }
56
+ /** Set the `In-Reply-To` header for threading replies. */
57
+ inReplyTo(messageId) {
58
+ this.#msg.inReplyTo = messageId;
59
+ return this;
60
+ }
61
+ /** Set the `References` header (thread message ids). */
62
+ references(messageIds) {
63
+ this.#msg.references = messageIds.slice();
64
+ return this;
65
+ }
45
66
  attach(filename, content, contentType) {
46
67
  this.#msg.attachments.push({ filename, content, contentType });
47
68
  return this;
48
69
  }
70
+ /**
71
+ * Embed inline content referenced by a Content-ID. Use `cid:<cid>` inside the
72
+ * HTML body to reference it. Content-based (rover is agnostic / no-fs): the
73
+ * path-based `embed(file, cid)` form from `@adonisjs/mail` is a deliberate
74
+ * divergence — pass the bytes directly instead.
75
+ */
76
+ embedData(content, cid, contentType) {
77
+ this.#msg.attachments.push({ filename: cid, content, contentType, cid });
78
+ return this;
79
+ }
49
80
  header(key, value) {
50
81
  this.#msg.headers[key] = value;
51
82
  return this;
@@ -73,4 +104,20 @@ export class MessageBuilder {
73
104
  return this.#msg;
74
105
  }
75
106
  }
107
+ /**
108
+ * Append one recipient, an array of recipients, or a `(address, name)` pair to
109
+ * a recipient list, formatting each into the `"Name" <address>` display form
110
+ * when a name is present.
111
+ */
112
+ function addRecipients(list, address, name) {
113
+ if (Array.isArray(address)) {
114
+ for (const entry of address) {
115
+ list.push(typeof entry === "string"
116
+ ? entry
117
+ : formatAddress(entry.address, entry.name));
118
+ }
119
+ return;
120
+ }
121
+ list.push(formatAddress(address, name));
122
+ }
76
123
  //# sourceMappingURL=MessageBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageBuilder.js","sourceRoot":"","sources":["../src/MessageBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAqBlF,MAAM,OAAO,cAAc;IAC1B,IAAI,GAAgB;QACnB,IAAI,EAAE,EAAE;QACR,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,EAAE;KACX,CAAC;IACF,YAAY,GAA2D,IAAI,CAAC;IAE5E,IAAI,CAAC,OAAe;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,EAAE,CAAC,OAAe;QACjB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,EAAE,CAAC,OAAe;QACjB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,GAAG,CAAC,OAAe;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,CAAC,OAAe;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,CAAC,OAAe;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,CAAC,OAAe;QACnB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,CACL,QAAgB,EAChB,OAAwB,EACxB,WAAoB;QAEpB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,KAAa;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC/B,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,QAAgB,EAAE,IAA8B;QACxD,IAAI,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,SAAkB;QAC7B,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,kBAAkB,CACxC,IAAI,CAAC,YAAY,CAAC,IAAI,EACtB,IAAI,CAAC,YAAY,CAAC,IAAI,EACtB,SAAS,EACT,SAAS,CACT,CAAC;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;CACD"}
1
+ {"version":3,"file":"MessageBuilder.js","sourceRoot":"","sources":["../src/MessageBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shared address formatting helper. Kept dependency-free and in its own module
3
+ * so both `BaseMail` and `MessageBuilder` can import it without re-introducing
4
+ * the BaseMail ↔ MessageBuilder value cycle.
5
+ */
6
+ /**
7
+ * Format a recipient address with an optional display name into the
8
+ * `"Name" <address>` form (RFC 5322 quoted display name). A bare address —
9
+ * or an empty/whitespace-only name — is returned unchanged.
10
+ */
11
+ export declare function formatAddress(address: string, name?: string): string;
12
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpE"}
package/dist/format.js ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Shared address formatting helper. Kept dependency-free and in its own module
3
+ * so both `BaseMail` and `MessageBuilder` can import it without re-introducing
4
+ * the BaseMail ↔ MessageBuilder value cycle.
5
+ */
6
+ /**
7
+ * Format a recipient address with an optional display name into the
8
+ * `"Name" <address>` form (RFC 5322 quoted display name). A bare address —
9
+ * or an empty/whitespace-only name — is returned unchanged.
10
+ */
11
+ export function formatAddress(address, name) {
12
+ return name !== undefined && name !== "" ? `"${name}" <${address}>` : address;
13
+ }
14
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,IAAa;IAC3D,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/E,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  export type { MailAddress } from "./BaseMail.js";
2
2
  export { BaseMail } from "./BaseMail.js";
3
3
  export { defineConfig } from "./config.js";
4
+ export type { EmitterLike, MailAttachment, MailConfig, MailFailedEvent, MailHooks, MailMessage, MailQueueEvent, MailSendingEvent, MailSendOutcome, MailSendResult, MailSentEvent, MailTransport, MailTransportFactory, } from "./Mail.js";
5
+ export { LogTransport, Mail, Mailer, MessageBuilder, registerTransport, SmtpTransport, } from "./Mail.js";
6
+ export type { Recipient, RecipientObject } from "./MessageBuilder.js";
4
7
  export { RoverError } from "./RoverError.js";
5
- export type { EmitterLike, MailAttachment, MailConfig, MailFailedEvent, MailHooks, MailMessage, MailSendOutcome, MailSendResult, MailSentEvent, MailTransport, MailTransportFactory, } from "./Mail.js";
6
- export { LogTransport, Mail, MessageBuilder, registerTransport, SmtpTransport, } from "./Mail.js";
7
8
  export { default as RoverProvider } from "./RoverProvider.js";
8
9
  export { DEFAULT_RETRY_CONFIG, isRetryableError, type RetryConfig, } from "./retry.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,aAAa,EACb,oBAAoB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,YAAY,EACZ,IAAI,EACJ,cAAc,EACd,iBAAiB,EACjB,aAAa,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,WAAW,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EACX,WAAW,EACX,cAAc,EACd,UAAU,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,aAAa,EACb,aAAa,EACb,oBAAoB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,YAAY,EACZ,IAAI,EACJ,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,aAAa,GACb,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACN,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,WAAW,GAChB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { BaseMail } from "./BaseMail.js";
2
2
  export { defineConfig } from "./config.js";
3
+ export { LogTransport, Mail, Mailer, MessageBuilder, registerTransport, SmtpTransport, } from "./Mail.js";
3
4
  export { RoverError } from "./RoverError.js";
4
- export { LogTransport, Mail, MessageBuilder, registerTransport, SmtpTransport, } from "./Mail.js";
5
5
  export { default as RoverProvider } from "./RoverProvider.js";
6
6
  export { DEFAULT_RETRY_CONFIG, isRetryableError, } from "./retry.js";
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAc7C,OAAO,EACN,YAAY,EACZ,IAAI,EACJ,cAAc,EACd,iBAAiB,EACjB,aAAa,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACN,oBAAoB,EACpB,gBAAgB,GAEhB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAgB3C,OAAO,EACN,YAAY,EACZ,IAAI,EACJ,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,aAAa,GACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACN,oBAAoB,EACpB,gBAAgB,GAEhB,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MailJob.d.ts","sourceRoot":"","sources":["../../src/queue/MailJob.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzD,QAAQ,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAChC,OAAO,CAAC,MAAM,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,sFAAsF;AACtF,UAAU,aAAa;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC9B,eAAe,CACd,OAAO,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,cAAe,YAAW,iBAAiB;;gBAG3C,IAAI,EAAE,cAAc;IAI1B,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAY7C"}
1
+ {"version":3,"file":"MailJob.d.ts","sourceRoot":"","sources":["../../src/queue/MailJob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9D,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACzD,QAAQ,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAChC,OAAO,CAAC,MAAM,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,sFAAsF;AACtF,UAAU,aAAa;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC9B,eAAe,CACd,OAAO,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,cAAe,YAAW,iBAAiB;;gBAG3C,IAAI,EAAE,cAAc;IAI1B,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAY7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"MailJob.js","sourceRoot":"","sources":["../../src/queue/MailJob.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MailJob.js","sourceRoot":"","sources":["../../src/queue/MailJob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { EmitterLike, MailMessage } from "../Mail.js";
2
+ import type { MailDispatcher } from "./MailJob.js";
3
+ /**
4
+ * Default in-memory messenger for `sendLater()` when no `@c9up/bay` queue is
5
+ * wired — mirrors `@adonisjs/mail`'s `MemoryQueueMessenger`. The send is
6
+ * scheduled on a microtask so `sendLater()` returns immediately (fire-and-
7
+ * forget). Background delivery failures surface on the `queued:mail:error`
8
+ * event rather than becoming unhandled rejections.
9
+ */
10
+ export declare class MemoryMailMessenger {
11
+ #private;
12
+ constructor(dispatcher: MailDispatcher, emitter: EmitterLike | null);
13
+ queue(message: MailMessage, transport?: string): string;
14
+ }
15
+ //# sourceMappingURL=MemoryMailMessenger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryMailMessenger.d.ts","sourceRoot":"","sources":["../../src/queue/MemoryMailMessenger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;;GAMG;AACH,qBAAa,mBAAmB;;gBAInB,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAKnE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;CAwBvD"}
@@ -0,0 +1,42 @@
1
+ import { randomBytes } from "node:crypto";
2
+ /**
3
+ * Default in-memory messenger for `sendLater()` when no `@c9up/bay` queue is
4
+ * wired — mirrors `@adonisjs/mail`'s `MemoryQueueMessenger`. The send is
5
+ * scheduled on a microtask so `sendLater()` returns immediately (fire-and-
6
+ * forget). Background delivery failures surface on the `queued:mail:error`
7
+ * event rather than becoming unhandled rejections.
8
+ */
9
+ export class MemoryMailMessenger {
10
+ #dispatcher;
11
+ #emitter;
12
+ constructor(dispatcher, emitter) {
13
+ this.#dispatcher = dispatcher;
14
+ this.#emitter = emitter;
15
+ }
16
+ queue(message, transport) {
17
+ const jobId = `mem_${randomBytes(12).toString("hex")}`;
18
+ queueMicrotask(() => {
19
+ this.#dispatcher
20
+ .dispatchMessage(message, transport)
21
+ .catch((error) => {
22
+ if (!this.#emitter)
23
+ return;
24
+ try {
25
+ this.#emitter.emit("queued:mail:error", {
26
+ jobId,
27
+ transportName: transport,
28
+ error: error instanceof Error
29
+ ? { message: error.message }
30
+ : { message: String(error) },
31
+ });
32
+ }
33
+ catch {
34
+ // Event bus failure ≠ mail failure — swallow so the microtask
35
+ // never rejects.
36
+ }
37
+ });
38
+ });
39
+ return jobId;
40
+ }
41
+ }
42
+ //# sourceMappingURL=MemoryMailMessenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryMailMessenger.js","sourceRoot":"","sources":["../../src/queue/MemoryMailMessenger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C;;;;;;GAMG;AACH,MAAM,OAAO,mBAAmB;IAC/B,WAAW,CAAiB;IAC5B,QAAQ,CAAqB;IAE7B,YAAY,UAA0B,EAAE,OAA2B;QAClE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAoB,EAAE,SAAkB;QAC7C,MAAM,KAAK,GAAG,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,cAAc,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,WAAW;iBACd,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC;iBACnC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACzB,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,OAAO;gBAC3B,IAAI,CAAC;oBACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE;wBACvC,KAAK;wBACL,aAAa,EAAE,SAAS;wBACxB,KAAK,EACJ,KAAK,YAAY,KAAK;4BACrB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;4BAC5B,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;qBAC9B,CAAC,CAAC;gBACJ,CAAC;gBAAC,MAAM,CAAC;oBACR,8DAA8D;oBAC9D,iBAAiB;gBAClB,CAAC;YACF,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACd,CAAC;CACD"}
@@ -1,3 +1,4 @@
1
+ import { BaseMail } from "../BaseMail.js";
1
2
  import type { MailMessage, MailSendOutcome, MailTransport } from "../Mail.js";
2
3
  export interface FakeMailPredicate {
3
4
  from?: string;
@@ -10,22 +11,48 @@ export interface FakeMailPredicate {
10
11
  }
11
12
  export type FakeMailPredicateArg = FakeMailPredicate | ((m: MailMessage) => boolean);
12
13
  /**
13
- * In-memory transport for tests — captures every `send(message)` call and
14
- * exposes Adonis/Laravel-style `assertSent` / `assertNotSent` helpers.
14
+ * Constructor of a `BaseMail` subclass — the `new (...args: never[]) => T`
15
+ * form keeps `instanceof` sound without an `any` in the signature.
16
+ */
17
+ export type MailConstructor<T extends BaseMail = BaseMail> = new (...args: never[]) => T;
18
+ /**
19
+ * In-memory capture for tests — records every `send` (`trackSent`) and
20
+ * `sendLater` (`trackQueued`) routed through a faked `Mail`, and exposes
21
+ * Adonis/Laravel-style assertions over both message content (predicate form)
22
+ * and the originating `BaseMail` class (constructor form).
15
23
  *
16
24
  * Not re-exported from the main barrel; reach via `@c9up/rover/testing`.
17
25
  */
18
26
  export declare class FakeMail implements MailTransport {
19
27
  #private;
28
+ /** MailTransport contract — direct `send()` capture (backward compatible). */
20
29
  send(message: MailMessage): Promise<MailSendOutcome>;
30
+ /** Record a synchronously-sent message (and its source `BaseMail`, if any). */
31
+ trackSent(message: MailMessage, mail?: BaseMail): void;
32
+ /** Record a queued message (and its source `BaseMail`, if any). */
33
+ trackQueued(message: MailMessage, mail?: BaseMail): void;
21
34
  /**
22
- * Return a defensive snapshot of captured messages. Each message is cloned
35
+ * Return a defensive snapshot of sent messages. Each message is cloned
23
36
  * (shallow-per-field with array copies) so test-side mutations can't bleed
24
37
  * back into the internal capture store — avoids cross-test contamination.
25
38
  */
26
39
  getSent(): MailMessage[];
40
+ /** Return a defensive snapshot of queued messages. */
41
+ getQueued(): MailMessage[];
27
42
  reset(): void;
28
43
  assertSent(predicate: FakeMailPredicateArg): void;
44
+ assertSent<T extends BaseMail>(mailConstructor: MailConstructor<T>, findFn?: (mail: T) => boolean): void;
29
45
  assertNotSent(predicate: FakeMailPredicateArg): void;
46
+ assertNotSent<T extends BaseMail>(mailConstructor: MailConstructor<T>, findFn?: (mail: T) => boolean): void;
47
+ assertQueued(predicate: FakeMailPredicateArg): void;
48
+ assertQueued<T extends BaseMail>(mailConstructor: MailConstructor<T>, findFn?: (mail: T) => boolean): void;
49
+ assertNotQueued(predicate: FakeMailPredicateArg): void;
50
+ assertNotQueued<T extends BaseMail>(mailConstructor: MailConstructor<T>, findFn?: (mail: T) => boolean): void;
51
+ assertSentCount(count: number): void;
52
+ assertSentCount(mailConstructor: MailConstructor<BaseMail>, count: number): void;
53
+ assertQueuedCount(count: number): void;
54
+ assertQueuedCount(mailConstructor: MailConstructor<BaseMail>, count: number): void;
55
+ assertNoneSent(): void;
56
+ assertNoneQueued(): void;
30
57
  }
31
58
  //# sourceMappingURL=FakeMail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FakeMail.d.ts","sourceRoot":"","sources":["../../src/testing/FakeMail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9E,MAAM,WAAW,iBAAiB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAC7B,iBAAiB,GACjB,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC;AAEjC;;;;;GAKG;AACH,qBAAa,QAAS,YAAW,aAAa;;IAGvC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAK1D;;;;OAIG;IACH,OAAO,IAAI,WAAW,EAAE;IAexB,KAAK,IAAI,IAAI;IAIb,UAAU,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAQjD,aAAa,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;CAQpD"}
1
+ {"version":3,"file":"FakeMail.d.ts","sourceRoot":"","sources":["../../src/testing/FakeMail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9E,MAAM,WAAW,iBAAiB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,oBAAoB,GAC7B,iBAAiB,GACjB,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC;AAEjC;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI,KAC5D,GAAG,IAAI,EAAE,KAAK,EAAE,KACZ,CAAC,CAAC;AAOP;;;;;;;GAOG;AACH,qBAAa,QAAS,YAAW,aAAa;;IAI7C,8EAA8E;IACxE,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAK1D,+EAA+E;IAC/E,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI;IAItD,mEAAmE;IACnE,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI;IAIxD;;;;OAIG;IACH,OAAO,IAAI,WAAW,EAAE;IAIxB,sDAAsD;IACtD,SAAS,IAAI,WAAW,EAAE;IAI1B,KAAK,IAAI,IAAI;IAKb,UAAU,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IACjD,UAAU,CAAC,CAAC,SAAS,QAAQ,EAC5B,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC3B,IAAI;IAQP,aAAa,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IACpD,aAAa,CAAC,CAAC,SAAS,QAAQ,EAC/B,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC3B,IAAI;IAeP,YAAY,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IACnD,YAAY,CAAC,CAAC,SAAS,QAAQ,EAC9B,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC3B,IAAI;IAeP,eAAe,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IACtD,eAAe,CAAC,CAAC,SAAS,QAAQ,EACjC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAC3B,IAAI;IAeP,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IACpC,eAAe,CACd,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC,EAC1C,KAAK,EAAE,MAAM,GACX,IAAI;IAQP,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IACtC,iBAAiB,CAChB,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC,EAC1C,KAAK,EAAE,MAAM,GACX,IAAI;IAQP,cAAc,IAAI,IAAI;IAQtB,gBAAgB,IAAI,IAAI;CAgExB"}
@@ -1,51 +1,129 @@
1
+ import { BaseMail } from "../BaseMail.js";
1
2
  /**
2
- * In-memory transport for tests — captures every `send(message)` call and
3
- * exposes Adonis/Laravel-style `assertSent` / `assertNotSent` helpers.
3
+ * In-memory capture for tests — records every `send` (`trackSent`) and
4
+ * `sendLater` (`trackQueued`) routed through a faked `Mail`, and exposes
5
+ * Adonis/Laravel-style assertions over both message content (predicate form)
6
+ * and the originating `BaseMail` class (constructor form).
4
7
  *
5
8
  * Not re-exported from the main barrel; reach via `@c9up/rover/testing`.
6
9
  */
7
10
  export class FakeMail {
8
- #captured = [];
11
+ #sent = [];
12
+ #queued = [];
13
+ /** MailTransport contract — direct `send()` capture (backward compatible). */
9
14
  async send(message) {
10
- this.#captured.push(message);
15
+ this.trackSent(message);
11
16
  return undefined;
12
17
  }
18
+ /** Record a synchronously-sent message (and its source `BaseMail`, if any). */
19
+ trackSent(message, mail) {
20
+ this.#sent.push({ message, mail });
21
+ }
22
+ /** Record a queued message (and its source `BaseMail`, if any). */
23
+ trackQueued(message, mail) {
24
+ this.#queued.push({ message, mail });
25
+ }
13
26
  /**
14
- * Return a defensive snapshot of captured messages. Each message is cloned
27
+ * Return a defensive snapshot of sent messages. Each message is cloned
15
28
  * (shallow-per-field with array copies) so test-side mutations can't bleed
16
29
  * back into the internal capture store — avoids cross-test contamination.
17
30
  */
18
31
  getSent() {
19
- return this.#captured.map((m) => ({
20
- from: m.from,
21
- to: m.to.slice(),
22
- cc: m.cc.slice(),
23
- bcc: m.bcc.slice(),
24
- replyTo: m.replyTo,
25
- subject: m.subject,
26
- html: m.html,
27
- text: m.text,
28
- attachments: m.attachments.slice(),
29
- headers: { ...m.headers },
30
- }));
32
+ return this.#sent.map((e) => cloneMessage(e.message));
33
+ }
34
+ /** Return a defensive snapshot of queued messages. */
35
+ getQueued() {
36
+ return this.#queued.map((e) => cloneMessage(e.message));
31
37
  }
32
38
  reset() {
33
- this.#captured = [];
39
+ this.#sent = [];
40
+ this.#queued = [];
41
+ }
42
+ assertSent(arg, findFn) {
43
+ this.#assertPresence("assertSent", "sent", this.#sent, arg, findFn, true);
44
+ }
45
+ assertNotSent(arg, findFn) {
46
+ this.#assertPresence("assertNotSent", "sent", this.#sent, arg, findFn, false);
47
+ }
48
+ assertQueued(arg, findFn) {
49
+ this.#assertPresence("assertQueued", "queued", this.#queued, arg, findFn, true);
50
+ }
51
+ assertNotQueued(arg, findFn) {
52
+ this.#assertPresence("assertNotQueued", "queued", this.#queued, arg, findFn, false);
53
+ }
54
+ assertSentCount(arg, count) {
55
+ this.#assertCount("assertSentCount", this.#sent, arg, count);
56
+ }
57
+ assertQueuedCount(arg, count) {
58
+ this.#assertCount("assertQueuedCount", this.#queued, arg, count);
59
+ }
60
+ assertNoneSent() {
61
+ if (this.#sent.length !== 0) {
62
+ throw new Error(`mail.assertNoneSent() failed — expected zero sent messages, found ${this.#sent.length}.\n${describeCaptured(this.#sent)}`);
63
+ }
64
+ }
65
+ assertNoneQueued() {
66
+ if (this.#queued.length !== 0) {
67
+ throw new Error(`mail.assertNoneQueued() failed — expected zero queued messages, found ${this.#queued.length}.\n${describeCaptured(this.#queued)}`);
68
+ }
34
69
  }
35
- assertSent(predicate) {
36
- const match = makeMatcher(predicate);
37
- if (this.#captured.some(match))
70
+ /**
71
+ * Shared body for the present/absent assertions. `expectPresent` flips the
72
+ * pass/fail sense so `assertSent` and `assertNotSent` share one code path.
73
+ */
74
+ #assertPresence(method, bucket, entries, arg, findFn, expectPresent) {
75
+ const found = isMailConstructor(arg)
76
+ ? entries.some((e) => e.mail !== undefined &&
77
+ e.mail instanceof arg &&
78
+ (findFn ? findFn(e.mail) : true))
79
+ : entries.some((e) => makeMatcher(arg)(e.message));
80
+ if (found === expectPresent)
38
81
  return;
39
- throw new Error(`mail.assertSent() failed — no captured message matches ${describePredicate(predicate)}.\n${describeCaptured(this.#captured)}`);
82
+ const target = isMailConstructor(arg)
83
+ ? `an instance of ${arg.name}`
84
+ : describePredicate(arg);
85
+ const reason = expectPresent
86
+ ? `no ${bucket} message matches ${target}`
87
+ : `at least one ${bucket} message matches ${target}`;
88
+ throw new Error(`mail.${method}() failed — ${reason}.\n${describeCaptured(entries)}`);
40
89
  }
41
- assertNotSent(predicate) {
42
- const match = makeMatcher(predicate);
43
- const found = this.#captured.find(match);
44
- if (!found)
90
+ #assertCount(method, entries, arg, count) {
91
+ if (typeof arg === "number") {
92
+ if (entries.length !== arg) {
93
+ throw new Error(`mail.${method}() failed — expected ${arg}, found ${entries.length}.\n${describeCaptured(entries)}`);
94
+ }
45
95
  return;
46
- throw new Error(`mail.assertNotSent() failed — at least one captured message matches ${describePredicate(predicate)}.\n${describeCaptured(this.#captured)}`);
96
+ }
97
+ const expected = count ?? 0;
98
+ const actual = entries.filter((e) => e.mail !== undefined && e.mail instanceof arg).length;
99
+ if (actual !== expected) {
100
+ throw new Error(`mail.${method}() failed — expected ${expected} of ${arg.name}, found ${actual}.\n${describeCaptured(entries)}`);
101
+ }
47
102
  }
48
103
  }
104
+ function isMailConstructor(arg) {
105
+ return (typeof arg === "function" &&
106
+ typeof arg.prototype === "object" &&
107
+ arg.prototype instanceof BaseMail);
108
+ }
109
+ function cloneMessage(m) {
110
+ return {
111
+ from: m.from,
112
+ to: m.to.slice(),
113
+ cc: m.cc.slice(),
114
+ bcc: m.bcc.slice(),
115
+ replyTo: m.replyTo,
116
+ subject: m.subject,
117
+ html: m.html,
118
+ text: m.text,
119
+ attachments: m.attachments.slice(),
120
+ headers: { ...m.headers },
121
+ priority: m.priority,
122
+ messageId: m.messageId,
123
+ inReplyTo: m.inReplyTo,
124
+ references: m.references ? m.references.slice() : undefined,
125
+ };
126
+ }
49
127
  function makeMatcher(predicate) {
50
128
  if (typeof predicate === "function")
51
129
  return predicate;
@@ -84,7 +162,7 @@ function describePredicate(predicate) {
84
162
  function describeCaptured(captured) {
85
163
  if (captured.length === 0)
86
164
  return "Captured: (none)";
87
- const lines = captured.map((m, i) => ` [${i}] to=[${m.to.join(", ")}] subject="${m.subject}" from="${m.from}"`);
165
+ const lines = captured.map((e, i) => ` [${i}] to=[${e.message.to.join(", ")}] subject="${e.message.subject}" from="${e.message.from}"`);
88
166
  return `Captured (${captured.length}):\n${lines.join("\n")}`;
89
167
  }
90
168
  //# sourceMappingURL=FakeMail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FakeMail.js","sourceRoot":"","sources":["../../src/testing/FakeMail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FakeMail.js","sourceRoot":"","sources":["../../src/testing/FakeMail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type MailMessage, type MailSendOutcome, type MailTransport } from "../Mail.js";
2
+ /**
3
+ * Brevo (formerly Sendinblue) transactional email transport. Talks to the
4
+ * `v3/smtp/email` REST API over `fetch`, mirroring the `@adonisjs/mail` Brevo
5
+ * transport. Same conventions as the other fetch-based transports (Resend /
6
+ * SES): CRLF stripping at the wire boundary, secret redaction, `retry-after`
7
+ * surfacing.
8
+ */
9
+ export declare class BrevoTransport implements MailTransport {
10
+ #private;
11
+ constructor(config: Record<string, unknown>);
12
+ send(message: MailMessage): Promise<MailSendOutcome>;
13
+ }
14
+ //# sourceMappingURL=BrevoTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrevoTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BrevoTransport.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,EAElB,MAAM,YAAY,CAAC;AAmCpB;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,aAAa;;gBAIvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAqBrC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAmF1D"}