@c9up/rover 0.1.12 → 0.1.13

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/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  Mail transport for Ream — SMTP, log, and pluggable transports (Mailgun, SendGrid, SES, Resend), plus class-based mailers (`BaseMail`), async templating (`htmlView`), in-process retry with exponential backoff, and an optional queue path via `@c9up/bay`.
4
4
 
5
+ `ream add @c9up/rover` installs it, registers the provider and writes
6
+ `config/mail.ts`. The rest of this page assumes that has run.
7
+
5
8
  ## Quick start
6
9
 
7
10
  ```ts
@@ -11,7 +14,7 @@ import '@c9up/rover/transports/mailgun' // opt-in side-effect registration
11
14
  const mail = new Mail({
12
15
  default: 'mailgun',
13
16
  from: 'noreply@acme.com',
14
- transports: {
17
+ mailers: {
15
18
  mailgun: { transport: 'mailgun', apiKey: process.env.MAILGUN_KEY!, domain: 'mg.acme.com' },
16
19
  },
17
20
  })
package/dist/Mail.d.ts CHANGED
@@ -99,19 +99,27 @@ export interface MailFailedEvent extends MailEventBase {
99
99
  };
100
100
  }
101
101
  export interface MailConfig {
102
+ /**
103
+ * Mailer used when `send()` is called without naming one. It has to be a
104
+ * key of {@link MailConfig.mailers}, or the constructor throws.
105
+ */
102
106
  default: string;
103
107
  from: string;
104
- transports?: Record<string, {
108
+ /**
109
+ * The declared mailers, name → the transport it sends through plus that
110
+ * transport's own settings. Build the entries with the `transports.*`
111
+ * helpers.
112
+ */
113
+ mailers?: Record<string, {
105
114
  transport: string;
106
115
  retry?: RetryConfig;
107
116
  [key: string]: unknown;
108
117
  }>;
109
118
  /**
110
- * AdonisJS spelling of `transports`. Both are accepted and mean the same
111
- * thing, so a migrated `config/mail.ts` runs with its imports rewritten and
112
- * nothing else.
119
+ * Rover's older spelling of `mailers`. Still accepted and identical in
120
+ * effect; new configs declare `mailers`.
113
121
  */
114
- mailers?: Record<string, {
122
+ transports?: Record<string, {
115
123
  transport: string;
116
124
  retry?: RetryConfig;
117
125
  [key: string]: unknown;
@@ -123,7 +131,7 @@ export interface MailConfig {
123
131
  name?: string;
124
132
  maxAttempts?: number;
125
133
  };
126
- /** Process-wide retry defaults. Overridden per-transport via `transports[name].retry`. */
134
+ /** Process-wide retry defaults. Overridden per-mailer via `mailers[name].retry`. */
127
135
  retry?: RetryConfig;
128
136
  }
129
137
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Mail.d.ts","sourceRoot":"","sources":["../src/Mail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Mail.d.ts","sourceRoot":"","sources":["../src/Mail.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,cAAc,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,KAAK,YAAY,EAGjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAGN,KAAK,WAAW,EAEhB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,cAAc;IAC9B,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC7B,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD;;;OAGG;IACH,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CACzC;AAED;;;;;;;;;GASG;AACH,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErC,MAAM,WAAW,aAAa;IAC7B,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,2EAA2E;IAC3E,KAAK,EAAE,oBAAoB,CAAC;IAC5B,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,aAAa;CAAG;AAE1D,MAAM,WAAW,aAAc,SAAQ,aAAa;IACnD,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC;CACF;AAED,MAAM,WAAW,UAAU;IAC1B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CACf,MAAM,EACN;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAClE,CAAC;IACF;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAClB,MAAM,EACN;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAClE,CAAC;IACF,uGAAuG;IACvG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,oFAAoF;IACpF,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACzB,SAAS,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,MAAM,CAAC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,UAAU,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AAED;;GAEG;AACH;;;;;;GAMG;AACH,qBAAa,aAAc,YAAW,aAAa;;gBAGtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAmDrC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAyD1D;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B;AAmCD;;GAEG;AACH,qBAAa,YAAa,YAAW,aAAa;IAC3C,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAO1D;AAED,MAAM,MAAM,oBAAoB,GAAG,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,aAAa,CAAC;AAOnB;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,GAC3B,IAAI,CAEN;AAED;;GAEG;AACH,qBAAa,IAAI;;gBAoBf,MAAM,EAAE,UAAU,EAClB,OAAO,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,YAAY,CAAC;QACrB,KAAK,CAAC,EAAE,SAAS,CAAC;QAClB,OAAO,CAAC,EAAE,WAAW,CAAC;KACtB;IA2DF;;;;;;OAMG;IACG,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E;;;;OAIG;IACG,iBAAiB,CACtB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,MAAM,CAAC;IAMlB;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAM3C,sDAAsD;IAChD,IAAI,CACT,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,EAC3C,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAChB,6DAA6D;IACvD,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjE;;;;;OAKG;IACG,SAAS,CACd,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,QAAQ,EACnD,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,MAAM,CAAC;IAgDlB;;;;;;;OAOG;IACG,eAAe,CACpB,OAAO,EAAE,WAAW,EACpB,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,WAAW,EAK3B,KAAK,GAAE,oBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC;IA+KhB;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAUzB,yEAAyE;IACzE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAezC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,mFAAmF;IAC7E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B;;;;;OAKG;IACH,IAAI,IAAI,QAAQ;IAQhB,qDAAqD;IACrD,OAAO,IAAI,IAAI;CAGf;AAED;;;;;GAKG;AACH,qBAAa,MAAM;;gBAIN,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;IAKpC,kDAAkD;IAClD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,yCAAyC;IACzC,IAAI,SAAS,IAAI,aAAa,CAE7B;IAED,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxE,SAAS,CACR,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,QAAQ,EACnD,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1B,OAAO,CAAC,MAAM,CAAC;CAGlB"}
package/dist/Mail.js CHANGED
@@ -211,8 +211,8 @@ export class Mail {
211
211
  if (config.viewsRoot !== undefined) {
212
212
  setViewsRoot(config.viewsRoot);
213
213
  }
214
- // `mailers` (AdonisJS) and `transports` (rover) are the same map under two
215
- // names; a config that sets both gets both, last name wins per key.
214
+ // `mailers` and `transports` name the same map; a config that sets both
215
+ // gets both, and `mailers` wins on a key the two share.
216
216
  const declared = { ...config.transports, ...config.mailers };
217
217
  for (const [name, transportConfig] of Object.entries(declared)) {
218
218
  const factory = transportFactories[transportConfig.transport];
@@ -226,6 +226,15 @@ export class Mail {
226
226
  this.#transportRetry.set(name, transportConfig.retry);
227
227
  }
228
228
  }
229
+ // A `default` naming nothing is a configuration typo, and the cost of
230
+ // letting it through is that the app boots, looks healthy, and throws on
231
+ // the first email it tries to send — often a password reset, in
232
+ // production. Refuse at construction and name what was declared.
233
+ if (!this.#transports.has(this.#defaultTransport)) {
234
+ throw new RoverError("MAIL_UNKNOWN_MAILER", `Mail default mailer '${this.#defaultTransport}' is not declared in config.mailers`, {
235
+ hint: `${knownMailers(this.#transports)} Add it, or point \`default\` at one of them.`,
236
+ });
237
+ }
229
238
  if (options?.queue) {
230
239
  this.setMessenger(options.queue);
231
240
  }
@@ -280,10 +289,9 @@ export class Mail {
280
289
  this.#fireSent({ ...base, messageId: randomBytes(16).toString("hex") });
281
290
  return;
282
291
  }
283
- // Validate transport up-front before running any callback / prepare() side effects.
284
- if (!this.#transports.has(transportName)) {
285
- throw new Error(`Mail transport '${transportName}' not configured`);
286
- }
292
+ // Validate the mailer up-front, before running any callback / prepare()
293
+ // side effects.
294
+ this.#requireTransport(transportName);
287
295
  const { message, views } = await this.#buildMessageWithViews(arg);
288
296
  await this.dispatchMessage(message, transportName, undefined, views);
289
297
  }
@@ -493,9 +501,7 @@ export class Mail {
493
501
  * routes through that transport (Adonis parity). Mailers are cached per name.
494
502
  */
495
503
  use(name) {
496
- if (!this.#transports.has(name)) {
497
- throw new Error(`Mail transport '${name}' not configured`);
498
- }
504
+ this.#requireTransport(name);
499
505
  let mailer = this.#mailers.get(name);
500
506
  if (mailer === undefined) {
501
507
  mailer = new Mailer(this, name);
@@ -505,10 +511,14 @@ export class Mail {
505
511
  }
506
512
  /** @internal Resolve the raw transport instance behind a mailer name. */
507
513
  transportFor(name) {
508
- const t = this.#transports.get(name);
509
- if (!t)
510
- throw new Error(`Mail transport '${name}' not configured`);
511
- return t;
514
+ return this.#requireTransport(name);
515
+ }
516
+ /** The transport behind `name`, or a RoverError listing the declared ones. */
517
+ #requireTransport(name) {
518
+ const transport = this.#transports.get(name);
519
+ if (transport)
520
+ return transport;
521
+ throw new RoverError("MAIL_UNKNOWN_MAILER", `Mail mailer '${name}' is not declared in config.mailers`, { hint: knownMailers(this.#transports) });
512
522
  }
513
523
  /**
514
524
  * Close one transport's open connections (Adonis `close`).
@@ -630,4 +640,11 @@ function errorDescriptor(err, attempts) {
630
640
  }
631
641
  return { code: "UNKNOWN", message: String(err), attempts };
632
642
  }
643
+ /** "Declared mailers: a, b." — the half of an unknown-mailer error that helps. */
644
+ function knownMailers(transports) {
645
+ const names = [...transports.keys()];
646
+ return names.length > 0
647
+ ? `Declared mailers: ${names.join(", ")}.`
648
+ : "No mailers are declared — add at least one to config.mailers.";
649
+ }
633
650
  //# sourceMappingURL=Mail.js.map
package/dist/Mail.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Mail.js","sourceRoot":"","sources":["../src/Mail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Mail.js","sourceRoot":"","sources":["../src/Mail.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export default class RoverProvider {
11
11
  return new Mail(config ?? {
12
12
  default: "log",
13
13
  from: "noreply@localhost",
14
- transports: { log: { transport: "log" } },
14
+ mailers: { log: { transport: "log" } },
15
15
  }, {
16
16
  // Optional-peer wiring: if `@c9up/bay` is installed and its
17
17
  // `QueueManager` is registered in the container, Mail gets
@@ -1 +1 @@
1
- {"version":3,"file":"RoverProvider.js","sourceRoot":"","sources":["../src/RoverProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAkB7C,MAAM,CAAC,OAAO,OAAO,aAAa;IACX;IAAtB,YAAsB,GAAoB;QAApB,QAAG,GAAH,GAAG,CAAiB;IAAG,CAAC;IAE9C,QAAQ;QACP,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAa,MAAM,CAAC,CAAC;YACvD,OAAO,IAAI,IAAI,CACd,MAAM,IAAI;gBACT,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,mBAAmB;gBACzB,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;aACzC,EACD;gBACC,4DAA4D;gBAC5D,2DAA2D;gBAC3D,yDAAyD;gBACzD,yDAAyD;gBACzD,KAAK,EAAE,MAAM,UAAU,CAAe,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC;gBAC/D,iEAAiE;gBACjE,2CAA2C;gBAC3C,OAAO,EAAE,MAAM,UAAU,CAAc,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC;aAC3D,CACD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;YACzC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAO,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACT,8DAA8D;QAC9D,+CAA+C;QAC/C,gEAAgE;QAChE,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAO,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,QAAQ,KAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,KAAK,UAAU,UAAU,CACxB,GAAoB,EACpB,KAAa;IAEb,IAAI,CAAC;QACJ,OAAO,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,CAAI,KAAK,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"RoverProvider.js","sourceRoot":"","sources":["../src/RoverProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAkB7C,MAAM,CAAC,OAAO,OAAO,aAAa;IACX;IAAtB,YAAsB,GAAoB;QAApB,QAAG,GAAH,GAAG,CAAiB;IAAG,CAAC;IAE9C,QAAQ;QACP,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAa,MAAM,CAAC,CAAC;YACvD,OAAO,IAAI,IAAI,CACd,MAAM,IAAI;gBACT,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;aACtC,EACD;gBACC,4DAA4D;gBAC5D,2DAA2D;gBAC3D,yDAAyD;gBACzD,yDAAyD;gBACzD,KAAK,EAAE,MAAM,UAAU,CAAe,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC;gBAC/D,iEAAiE;gBACjE,2CAA2C;gBAC3C,OAAO,EAAE,MAAM,UAAU,CAAc,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC;aAC3D,CACD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;YACzC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAO,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACT,8DAA8D;QAC9D,+CAA+C;QAC/C,gEAAgE;QAChE,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAO,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,QAAQ,KAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,KAAK,UAAU,UAAU,CACxB,GAAoB,EACpB,KAAa;IAEb,IAAI,CAAC;QACJ,OAAO,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,CAAI,KAAK,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC"}
package/dist/config.d.ts CHANGED
@@ -11,7 +11,9 @@ type Options = Record<string, unknown> & {
11
11
  retry?: RetryConfig;
12
12
  };
13
13
  /**
14
- * Mailer descriptors for `defineConfig`, matching the AdonisJS call site:
14
+ * One helper per transport rover ships. Each returns the descriptor a
15
+ * `mailers` entry is made of — the transport name plus the settings that
16
+ * transport reads:
15
17
  *
16
18
  * defineConfig({
17
19
  * default: 'smtp',
@@ -19,13 +21,12 @@ type Options = Record<string, unknown> & {
19
21
  * mailers: { smtp: transports.smtp({ host: env.get('SMTP_HOST') }) },
20
22
  * })
21
23
  *
22
- * Named deviation: upstream returns a config PROVIDER that lazily imports the
23
- * transport. Rover returns the plain descriptor its config can persist, and the
24
- * transport registers itself on import.
24
+ * The descriptor is plain data, so a config file can be serialised and
25
+ * inspected; the transport itself registers on import of the package entry.
25
26
  *
26
- * Postmark has no helper here on purpose: rover has no Postmark transport, so a
27
- * migrated config naming it fails to COMPILE which says so plainly instead
28
- * of throwing at boot.
27
+ * The list is exactly what rover can send through naming a transport that
28
+ * has no helper fails to COMPILE, which says so plainly, instead of throwing
29
+ * at boot.
29
30
  */
30
31
  export declare const transports: {
31
32
  smtp: (config?: Options) => TransportDescriptor;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AASjE;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,UAAU;oBAvBN,OAAO,KAAQ,mBAAmB;mBAAlC,OAAO,KAAQ,mBAAmB;uBAAlC,OAAO,KAAQ,mBAAmB;yBAAlC,OAAO,KAAQ,mBAAmB;sBAAlC,OAAO,KAAQ,mBAAmB;qBAAlC,OAAO,KAAQ,mBAAmB;wBAAlC,OAAO,KAAQ,mBAAmB;IA+BlD,8EAA8E;mBA/B9D,OAAO,KAAQ,mBAAmB;CAiClD,CAAC;AAEF,YAAY,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AASjE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU;oBAxBN,OAAO,KAAQ,mBAAmB;mBAAlC,OAAO,KAAQ,mBAAmB;uBAAlC,OAAO,KAAQ,mBAAmB;yBAAlC,OAAO,KAAQ,mBAAmB;sBAAlC,OAAO,KAAQ,mBAAmB;qBAAlC,OAAO,KAAQ,mBAAmB;wBAAlC,OAAO,KAAQ,mBAAmB;IAgClD,8EAA8E;mBAhC9D,OAAO,KAAQ,mBAAmB;CAkClD,CAAC;AAEF,YAAY,EAAE,UAAU,EAAE,CAAC"}
package/dist/config.js CHANGED
@@ -8,7 +8,9 @@ function describe(transport) {
8
8
  });
9
9
  }
10
10
  /**
11
- * Mailer descriptors for `defineConfig`, matching the AdonisJS call site:
11
+ * One helper per transport rover ships. Each returns the descriptor a
12
+ * `mailers` entry is made of — the transport name plus the settings that
13
+ * transport reads:
12
14
  *
13
15
  * defineConfig({
14
16
  * default: 'smtp',
@@ -16,13 +18,12 @@ function describe(transport) {
16
18
  * mailers: { smtp: transports.smtp({ host: env.get('SMTP_HOST') }) },
17
19
  * })
18
20
  *
19
- * Named deviation: upstream returns a config PROVIDER that lazily imports the
20
- * transport. Rover returns the plain descriptor its config can persist, and the
21
- * transport registers itself on import.
21
+ * The descriptor is plain data, so a config file can be serialised and
22
+ * inspected; the transport itself registers on import of the package entry.
22
23
  *
23
- * Postmark has no helper here on purpose: rover has no Postmark transport, so a
24
- * migrated config naming it fails to COMPILE which says so plainly instead
25
- * of throwing at boot.
24
+ * The list is exactly what rover can send through naming a transport that
25
+ * has no helper fails to COMPILE, which says so plainly, instead of throwing
26
+ * at boot.
26
27
  */
27
28
  export const transports = {
28
29
  smtp: describe("smtp"),
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,YAAY,CAAC,MAAkB;IAC9C,OAAO,MAAM,CAAC;AACf,CAAC;AAWD,SAAS,QAAQ,CAAC,SAAiB;IAClC,OAAO,CAAC,SAAkB,EAAE,EAAuB,EAAE,CAAC,CAAC;QACtD,GAAG,MAAM;QACT,SAAS;KACT,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;IACtB,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC5B,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC;IAChC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC1B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC9B,8EAA8E;IAC9E,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,YAAY,CAAC,MAAkB;IAC9C,OAAO,MAAM,CAAC;AACf,CAAC;AAWD,SAAS,QAAQ,CAAC,SAAiB;IAClC,OAAO,CAAC,SAAkB,EAAE,EAAuB,EAAE,CAAC,CAAC;QACtD,GAAG,MAAM;QACT,SAAS;KACT,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;IACtB,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC5B,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC;IAChC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC1B,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;IAC9B,8EAA8E;IAC9E,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;CACpB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `ream configure @c9up/rover` — wire mail in one command.
3
+ *
4
+ * The provider alone is not enough: it reads `config/mail.ts`, and a package
5
+ * registered without one falls back to a default that is rarely the one an
6
+ * application wants. Writing both together is what makes `ream add` mean
7
+ * installed AND working.
8
+ */
9
+ interface Codemods {
10
+ addProvider(importPath: string): Promise<void>;
11
+ addEnvVars(vars: Record<string, string>): Promise<void>;
12
+ writeFile(filePath: string, content: string, options?: {
13
+ force?: boolean;
14
+ }): Promise<void>;
15
+ }
16
+ export declare function configure(codemods: Codemods): Promise<void>;
17
+ export {};
18
+ //# sourceMappingURL=configure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,UAAU,QAAQ;IACjB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,SAAS,CACR,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;CACjB;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCjE"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * `ream configure @c9up/rover` — wire mail in one command.
3
+ *
4
+ * The provider alone is not enough: it reads `config/mail.ts`, and a package
5
+ * registered without one falls back to a default that is rarely the one an
6
+ * application wants. Writing both together is what makes `ream add` mean
7
+ * installed AND working.
8
+ */
9
+ export async function configure(codemods) {
10
+ // The config below reads these, so they are declared here. Writing the file
11
+ // without them leaves an application whose config asks the environment for
12
+ // something nothing ever put there.
13
+ await codemods.addEnvVars({
14
+ MAIL_MAILER: "log",
15
+ MAIL_FROM: "noreply@example.com",
16
+ SMTP_HOST: "",
17
+ SMTP_PORT: "587",
18
+ });
19
+ await codemods.addProvider("@c9up/rover/provider");
20
+ await codemods.writeFile("config/mail.ts", `import { defineConfig, transports } from '@c9up/rover'
21
+ import env from '#start/env'
22
+
23
+ export default defineConfig({
24
+ // Has to name one of the mailers below, or the application refuses to boot.
25
+ default: env.get('MAIL_MAILER', 'log'),
26
+ from: env.get('MAIL_FROM', 'noreply@example.com'),
27
+
28
+ mailers: {
29
+ // Writes to the logger instead of sending. The development mailer.
30
+ log: transports.log(),
31
+
32
+ smtp: transports.smtp({
33
+ host: env.get('SMTP_HOST', ''),
34
+ port: Number(env.get('SMTP_PORT', '587')),
35
+ }),
36
+ },
37
+ })`);
38
+ }
39
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAkB;IACjD,4EAA4E;IAC5E,2EAA2E;IAC3E,oCAAoC;IACpC,MAAM,QAAQ,CAAC,UAAU,CAAC;QACzB,WAAW,EAAE,KAAK;QAClB,SAAS,EAAE,qBAAqB;QAChC,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,MAAM,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACnD,MAAM,QAAQ,CAAC,SAAS,CACvB,gBAAgB,EAChB;;;;;;;;;;;;;;;;;GAiBC,CACD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resend.d.ts","sourceRoot":"","sources":["../../src/webhooks/resend.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,cAAc,EAEd,iBAAiB,EACjB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAuCD,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,oBAAoB,GAC3B,iBAAiB,CAgDnB"}
1
+ {"version":3,"file":"resend.d.ts","sourceRoot":"","sources":["../../src/webhooks/resend.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,cAAc,EAEd,iBAAiB,EACjB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAgED,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,oBAAoB,GAC3B,iBAAiB,CAgDnB"}
@@ -26,6 +26,26 @@ const EVENT_MAP = {
26
26
  "email.delivered": "mail.delivered",
27
27
  "email.bounced": "mail.bounced",
28
28
  };
29
+ /**
30
+ * Turn the configured signing secret into key bytes, or refuse.
31
+ *
32
+ * `Buffer.from(value, "base64")` never fails: it skips whatever it cannot read
33
+ * and hands back whatever is left, so a mistyped secret quietly becomes a
34
+ * short, deterministic key. Nothing then reports a configuration problem —
35
+ * every delivery just fails verification and looks like an attack, which is
36
+ * the one signal this endpoint exists to give.
37
+ */
38
+ function decodeSigningSecret(value) {
39
+ const bytes = Buffer.from(value, "base64");
40
+ const normalize = (v) => v.replace(/=+$/, "").replace(/\s/g, "");
41
+ if (normalize(bytes.toString("base64")) !== normalize(value)) {
42
+ throw new Error("createResendWebhookHandler: secret is not valid base64. Copy it from the Resend dashboard — it looks like `whsec_<base64>`.");
43
+ }
44
+ if (bytes.length < 16) {
45
+ throw new Error(`createResendWebhookHandler: secret decodes to ${bytes.length} bytes, which is too short to sign with. Expected at least 16.`);
46
+ }
47
+ return bytes;
48
+ }
29
49
  export function createResendWebhookHandler(options) {
30
50
  if (!options.secret) {
31
51
  throw new Error("createResendWebhookHandler: secret is required for HMAC verification.");
@@ -33,7 +53,7 @@ export function createResendWebhookHandler(options) {
33
53
  const secretRaw = options.secret.startsWith("whsec_")
34
54
  ? options.secret.slice(6)
35
55
  : options.secret;
36
- const keyBytes = Buffer.from(secretRaw, "base64");
56
+ const keyBytes = decodeSigningSecret(secretRaw);
37
57
  const emitter = options.emitter;
38
58
  const maxAgeSeconds = options.maxAgeSeconds ?? 300;
39
59
  return async (ctx, _next) => {
@@ -1 +1 @@
1
- {"version":3,"file":"resend.js","sourceRoot":"","sources":["../../src/webhooks/resend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resend.js","sourceRoot":"","sources":["../../src/webhooks/resend.ts"],"names":[],"mappings":"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"}
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c9up/rover",
3
- "version": "0.1.12",
3
+ "version": "0.1.13",
4
4
  "description": "Mail transport for Ream — SMTP, log, and pluggable transports",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -14,6 +14,10 @@
14
14
  "types": "./dist/RoverProvider.d.ts",
15
15
  "import": "./dist/RoverProvider.js"
16
16
  },
17
+ "./configure": {
18
+ "types": "./dist/configure.d.ts",
19
+ "import": "./dist/configure.js"
20
+ },
17
21
  "./services/main": {
18
22
  "types": "./dist/services/main.d.ts",
19
23
  "import": "./dist/services/main.js"
package/src/Mail.ts CHANGED
@@ -134,18 +134,26 @@ export interface MailFailedEvent extends MailEventBase {
134
134
  }
135
135
 
136
136
  export interface MailConfig {
137
+ /**
138
+ * Mailer used when `send()` is called without naming one. It has to be a
139
+ * key of {@link MailConfig.mailers}, or the constructor throws.
140
+ */
137
141
  default: string;
138
142
  from: string;
139
- transports?: Record<
143
+ /**
144
+ * The declared mailers, name → the transport it sends through plus that
145
+ * transport's own settings. Build the entries with the `transports.*`
146
+ * helpers.
147
+ */
148
+ mailers?: Record<
140
149
  string,
141
150
  { transport: string; retry?: RetryConfig; [key: string]: unknown }
142
151
  >;
143
152
  /**
144
- * AdonisJS spelling of `transports`. Both are accepted and mean the same
145
- * thing, so a migrated `config/mail.ts` runs with its imports rewritten and
146
- * nothing else.
153
+ * Rover's older spelling of `mailers`. Still accepted and identical in
154
+ * effect; new configs declare `mailers`.
147
155
  */
148
- mailers?: Record<
156
+ transports?: Record<
149
157
  string,
150
158
  { transport: string; retry?: RetryConfig; [key: string]: unknown }
151
159
  >;
@@ -153,7 +161,7 @@ export interface MailConfig {
153
161
  viewsRoot?: string;
154
162
  /** Optional Bay queue tuning for `sendLater()`. */
155
163
  queue?: { name?: string; maxAttempts?: number };
156
- /** Process-wide retry defaults. Overridden per-transport via `transports[name].retry`. */
164
+ /** Process-wide retry defaults. Overridden per-mailer via `mailers[name].retry`. */
157
165
  retry?: RetryConfig;
158
166
  }
159
167
 
@@ -418,8 +426,8 @@ export class Mail {
418
426
  setViewsRoot(config.viewsRoot);
419
427
  }
420
428
 
421
- // `mailers` (AdonisJS) and `transports` (rover) are the same map under two
422
- // names; a config that sets both gets both, last name wins per key.
429
+ // `mailers` and `transports` name the same map; a config that sets both
430
+ // gets both, and `mailers` wins on a key the two share.
423
431
  const declared = { ...config.transports, ...config.mailers };
424
432
  for (const [name, transportConfig] of Object.entries(declared)) {
425
433
  const factory = transportFactories[transportConfig.transport];
@@ -438,6 +446,20 @@ export class Mail {
438
446
  }
439
447
  }
440
448
 
449
+ // A `default` naming nothing is a configuration typo, and the cost of
450
+ // letting it through is that the app boots, looks healthy, and throws on
451
+ // the first email it tries to send — often a password reset, in
452
+ // production. Refuse at construction and name what was declared.
453
+ if (!this.#transports.has(this.#defaultTransport)) {
454
+ throw new RoverError(
455
+ "MAIL_UNKNOWN_MAILER",
456
+ `Mail default mailer '${this.#defaultTransport}' is not declared in config.mailers`,
457
+ {
458
+ hint: `${knownMailers(this.#transports)} Add it, or point \`default\` at one of them.`,
459
+ },
460
+ );
461
+ }
462
+
441
463
  if (options?.queue) {
442
464
  this.setMessenger(options.queue);
443
465
  }
@@ -509,10 +531,9 @@ export class Mail {
509
531
  this.#fireSent({ ...base, messageId: randomBytes(16).toString("hex") });
510
532
  return;
511
533
  }
512
- // Validate transport up-front before running any callback / prepare() side effects.
513
- if (!this.#transports.has(transportName)) {
514
- throw new Error(`Mail transport '${transportName}' not configured`);
515
- }
534
+ // Validate the mailer up-front, before running any callback / prepare()
535
+ // side effects.
536
+ this.#requireTransport(transportName);
516
537
 
517
538
  const { message, views } = await this.#buildMessageWithViews(arg);
518
539
  await this.dispatchMessage(message, transportName, undefined, views);
@@ -772,9 +793,7 @@ export class Mail {
772
793
  * routes through that transport (Adonis parity). Mailers are cached per name.
773
794
  */
774
795
  use(name: string): Mailer {
775
- if (!this.#transports.has(name)) {
776
- throw new Error(`Mail transport '${name}' not configured`);
777
- }
796
+ this.#requireTransport(name);
778
797
  let mailer = this.#mailers.get(name);
779
798
  if (mailer === undefined) {
780
799
  mailer = new Mailer(this, name);
@@ -785,9 +804,18 @@ export class Mail {
785
804
 
786
805
  /** @internal Resolve the raw transport instance behind a mailer name. */
787
806
  transportFor(name: string): MailTransport {
788
- const t = this.#transports.get(name);
789
- if (!t) throw new Error(`Mail transport '${name}' not configured`);
790
- return t;
807
+ return this.#requireTransport(name);
808
+ }
809
+
810
+ /** The transport behind `name`, or a RoverError listing the declared ones. */
811
+ #requireTransport(name: string): MailTransport {
812
+ const transport = this.#transports.get(name);
813
+ if (transport) return transport;
814
+ throw new RoverError(
815
+ "MAIL_UNKNOWN_MAILER",
816
+ `Mail mailer '${name}' is not declared in config.mailers`,
817
+ { hint: knownMailers(this.#transports) },
818
+ );
791
819
  }
792
820
 
793
821
  /**
@@ -939,3 +967,11 @@ function errorDescriptor(
939
967
  }
940
968
  return { code: "UNKNOWN", message: String(err), attempts };
941
969
  }
970
+
971
+ /** "Declared mailers: a, b." — the half of an unknown-mailer error that helps. */
972
+ function knownMailers(transports: Map<string, MailTransport>): string {
973
+ const names = [...transports.keys()];
974
+ return names.length > 0
975
+ ? `Declared mailers: ${names.join(", ")}.`
976
+ : "No mailers are declared — add at least one to config.mailers.";
977
+ }
@@ -29,7 +29,7 @@ export default class RoverProvider {
29
29
  config ?? {
30
30
  default: "log",
31
31
  from: "noreply@localhost",
32
- transports: { log: { transport: "log" } },
32
+ mailers: { log: { transport: "log" } },
33
33
  },
34
34
  {
35
35
  // Optional-peer wiring: if `@c9up/bay` is installed and its
package/src/config.ts CHANGED
@@ -22,7 +22,9 @@ function describe(transport: string) {
22
22
  }
23
23
 
24
24
  /**
25
- * Mailer descriptors for `defineConfig`, matching the AdonisJS call site:
25
+ * One helper per transport rover ships. Each returns the descriptor a
26
+ * `mailers` entry is made of — the transport name plus the settings that
27
+ * transport reads:
26
28
  *
27
29
  * defineConfig({
28
30
  * default: 'smtp',
@@ -30,13 +32,12 @@ function describe(transport: string) {
30
32
  * mailers: { smtp: transports.smtp({ host: env.get('SMTP_HOST') }) },
31
33
  * })
32
34
  *
33
- * Named deviation: upstream returns a config PROVIDER that lazily imports the
34
- * transport. Rover returns the plain descriptor its config can persist, and the
35
- * transport registers itself on import.
35
+ * The descriptor is plain data, so a config file can be serialised and
36
+ * inspected; the transport itself registers on import of the package entry.
36
37
  *
37
- * Postmark has no helper here on purpose: rover has no Postmark transport, so a
38
- * migrated config naming it fails to COMPILE which says so plainly instead
39
- * of throwing at boot.
38
+ * The list is exactly what rover can send through naming a transport that
39
+ * has no helper fails to COMPILE, which says so plainly, instead of throwing
40
+ * at boot.
40
41
  */
41
42
  export const transports = {
42
43
  smtp: describe("smtp"),
@@ -0,0 +1,53 @@
1
+ /**
2
+ * `ream configure @c9up/rover` — wire mail in one command.
3
+ *
4
+ * The provider alone is not enough: it reads `config/mail.ts`, and a package
5
+ * registered without one falls back to a default that is rarely the one an
6
+ * application wants. Writing both together is what makes `ream add` mean
7
+ * installed AND working.
8
+ */
9
+
10
+ interface Codemods {
11
+ addProvider(importPath: string): Promise<void>;
12
+ addEnvVars(vars: Record<string, string>): Promise<void>;
13
+ writeFile(
14
+ filePath: string,
15
+ content: string,
16
+ options?: { force?: boolean },
17
+ ): Promise<void>;
18
+ }
19
+
20
+ export async function configure(codemods: Codemods): Promise<void> {
21
+ // The config below reads these, so they are declared here. Writing the file
22
+ // without them leaves an application whose config asks the environment for
23
+ // something nothing ever put there.
24
+ await codemods.addEnvVars({
25
+ MAIL_MAILER: "log",
26
+ MAIL_FROM: "noreply@example.com",
27
+ SMTP_HOST: "",
28
+ SMTP_PORT: "587",
29
+ });
30
+
31
+ await codemods.addProvider("@c9up/rover/provider");
32
+ await codemods.writeFile(
33
+ "config/mail.ts",
34
+ `import { defineConfig, transports } from '@c9up/rover'
35
+ import env from '#start/env'
36
+
37
+ export default defineConfig({
38
+ // Has to name one of the mailers below, or the application refuses to boot.
39
+ default: env.get('MAIL_MAILER', 'log'),
40
+ from: env.get('MAIL_FROM', 'noreply@example.com'),
41
+
42
+ mailers: {
43
+ // Writes to the logger instead of sending. The development mailer.
44
+ log: transports.log(),
45
+
46
+ smtp: transports.smtp({
47
+ host: env.get('SMTP_HOST', ''),
48
+ port: Number(env.get('SMTP_PORT', '587')),
49
+ }),
50
+ },
51
+ })`,
52
+ );
53
+ }
@@ -57,6 +57,31 @@ const EVENT_MAP: Record<string, string> = {
57
57
  "email.bounced": "mail.bounced",
58
58
  };
59
59
 
60
+ /**
61
+ * Turn the configured signing secret into key bytes, or refuse.
62
+ *
63
+ * `Buffer.from(value, "base64")` never fails: it skips whatever it cannot read
64
+ * and hands back whatever is left, so a mistyped secret quietly becomes a
65
+ * short, deterministic key. Nothing then reports a configuration problem —
66
+ * every delivery just fails verification and looks like an attack, which is
67
+ * the one signal this endpoint exists to give.
68
+ */
69
+ function decodeSigningSecret(value: string): Buffer {
70
+ const bytes = Buffer.from(value, "base64");
71
+ const normalize = (v: string) => v.replace(/=+$/, "").replace(/\s/g, "");
72
+ if (normalize(bytes.toString("base64")) !== normalize(value)) {
73
+ throw new Error(
74
+ "createResendWebhookHandler: secret is not valid base64. Copy it from the Resend dashboard — it looks like `whsec_<base64>`.",
75
+ );
76
+ }
77
+ if (bytes.length < 16) {
78
+ throw new Error(
79
+ `createResendWebhookHandler: secret decodes to ${bytes.length} bytes, which is too short to sign with. Expected at least 16.`,
80
+ );
81
+ }
82
+ return bytes;
83
+ }
84
+
60
85
  export function createResendWebhookHandler(
61
86
  options: ResendWebhookOptions,
62
87
  ): WebhookMiddleware {
@@ -68,7 +93,7 @@ export function createResendWebhookHandler(
68
93
  const secretRaw = options.secret.startsWith("whsec_")
69
94
  ? options.secret.slice(6)
70
95
  : options.secret;
71
- const keyBytes = Buffer.from(secretRaw, "base64");
96
+ const keyBytes = decodeSigningSecret(secretRaw);
72
97
  const emitter = options.emitter;
73
98
  const maxAgeSeconds = options.maxAgeSeconds ?? 300;
74
99