@c9up/rover 0.1.16 → 0.1.18

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.
@@ -69,6 +69,20 @@ export interface CalendarEventOptions {
69
69
  filename?: string;
70
70
  encoding?: string;
71
71
  }
72
+ /**
73
+ * The calendar handed to an `icalEvent(callback)`.
74
+ *
75
+ * Structural, and deliberately not `ICalCalendar`: `ical-generator` is an
76
+ * OPTIONAL peer, so importing its type here would make every consumer install
77
+ * it to typecheck. A caller who has the package gets the real object at
78
+ * runtime and can annotate their own callback with the real type.
79
+ */
80
+ export interface CalendarBuilder {
81
+ createEvent(data: Record<string, unknown>): unknown;
82
+ toString(): string;
83
+ }
84
+ /** Builds the invitation in place (AdonisJS `icalEvent(callback)`). */
85
+ export type CalendarEventCallback = (calendar: CalendarBuilder) => void;
72
86
  /**
73
87
  * A calendar invitation. Exactly one source: inline `content`, a `path` read at
74
88
  * {@link MessageBuilder.build} time, or an `href` the provider fetches.
@@ -328,15 +342,15 @@ export declare class MessageBuilder {
328
342
  /** `List-Help` (AdonisJS `listHelp`). */
329
343
  listHelp(value: ListHeader | ListHeader[] | ListHeader[][]): this;
330
344
  /**
331
- * Attach a calendar invitation from an ICS string (AdonisJS `icalEvent`).
345
+ * Attach a calendar invitation (AdonisJS `icalEvent`).
332
346
  *
333
- * Named deviation: upstream also accepts a `(calendar: ICalCalendar) => void`
334
- * builder, which is `ical-generator`'s API. rover carries no such
335
- * dependency, so it takes the ICS text produced by whichever generator you
336
- * prefer. {@link icalEventFromFile} and {@link icalEventFromUrl} are the
337
- * other two upstream forms, unchanged.
347
+ * Takes either the ICS text or a `(calendar) => void` builder, as upstream
348
+ * does. The builder runs at {@link build} time against an `ical-generator`
349
+ * calendar; that package is an OPTIONAL peer, so passing the text needs
350
+ * nothing installed. {@link icalEventFromFile} and {@link icalEventFromUrl}
351
+ * are the other two upstream forms.
338
352
  */
339
- icalEvent(contents: string, options?: CalendarEventOptions): this;
353
+ icalEvent(contents: string | CalendarEventCallback, options?: CalendarEventOptions): this;
340
354
  /** Calendar invitation read from a file at {@link build} time (AdonisJS `icalEventFromFile`). */
341
355
  icalEventFromFile(file: string | URL, options?: CalendarEventOptions): this;
342
356
  /** Calendar invitation the transport fetches from a URL (AdonisJS `icalEventFromUrl`). */
@@ -1 +1 @@
1
- {"version":3,"file":"MessageBuilder.d.ts","sourceRoot":"","sources":["../src/MessageBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageBuilder.d.ts","sourceRoot":"","sources":["../src/MessageBuilder.ts"],"names":[],"mappings":"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"}
@@ -114,6 +114,8 @@ export class MessageBuilder {
114
114
  headers: {},
115
115
  };
116
116
  #pendingView = null;
117
+ /** An `icalEvent(callback)` waiting for `build()` to run it. */
118
+ #pendingCalendar = null;
117
119
  /**
118
120
  * The templates {@link build} actually rendered. Recorded because `build()`
119
121
  * clears the pending views once they are rendered, and the lifecycle events
@@ -529,15 +531,25 @@ export class MessageBuilder {
529
531
  }
530
532
  // ── Calendar invitations ──────────────────────────────────────────────
531
533
  /**
532
- * Attach a calendar invitation from an ICS string (AdonisJS `icalEvent`).
534
+ * Attach a calendar invitation (AdonisJS `icalEvent`).
533
535
  *
534
- * Named deviation: upstream also accepts a `(calendar: ICalCalendar) => void`
535
- * builder, which is `ical-generator`'s API. rover carries no such
536
- * dependency, so it takes the ICS text produced by whichever generator you
537
- * prefer. {@link icalEventFromFile} and {@link icalEventFromUrl} are the
538
- * other two upstream forms, unchanged.
536
+ * Takes either the ICS text or a `(calendar) => void` builder, as upstream
537
+ * does. The builder runs at {@link build} time against an `ical-generator`
538
+ * calendar; that package is an OPTIONAL peer, so passing the text needs
539
+ * nothing installed. {@link icalEventFromFile} and {@link icalEventFromUrl}
540
+ * are the other two upstream forms.
539
541
  */
540
542
  icalEvent(contents, options) {
543
+ if (typeof contents === "function") {
544
+ // Resolved at `build()`, not here: `ical-generator` is an optional
545
+ // peer that has to be imported dynamically, and the fluent chain
546
+ // stays synchronous — the same deferral `icalEventFromFile` uses to
547
+ // read its file.
548
+ this.#pendingCalendar = { build: contents, options };
549
+ this.#msg.icalEvent = undefined;
550
+ return this;
551
+ }
552
+ this.#pendingCalendar = null;
541
553
  this.#msg.icalEvent = { ...options, content: contents };
542
554
  return this;
543
555
  }
@@ -587,6 +599,13 @@ export class MessageBuilder {
587
599
  * longer clobber each other.
588
600
  */
589
601
  async build(viewsRoot) {
602
+ if (this.#pendingCalendar !== null) {
603
+ this.#msg.icalEvent = {
604
+ ...this.#pendingCalendar.options,
605
+ content: await renderCalendar(this.#pendingCalendar.build),
606
+ };
607
+ this.#pendingCalendar = null;
608
+ }
590
609
  if (this.#pendingView !== null) {
591
610
  this.#renderedViews.html = {
592
611
  template: this.#pendingView.path,
@@ -649,4 +668,43 @@ function addRecipients(list, address, name) {
649
668
  }
650
669
  list.push(formatAddress(address, name));
651
670
  }
671
+ /**
672
+ * Run an `icalEvent(callback)` against a real `ical-generator` calendar.
673
+ *
674
+ * The package is an optional peer: an app that never builds an invitation
675
+ * should not carry an iCalendar library. When one IS built without it
676
+ * installed, say exactly that — the alternative is a `Cannot find module`
677
+ * thrown from inside a mail send, which reads as a mail bug.
678
+ */
679
+ async function renderCalendar(build) {
680
+ let factory;
681
+ try {
682
+ const mod = await import("ical-generator");
683
+ factory = mod.default;
684
+ }
685
+ catch (cause) {
686
+ throw new RoverError("E_MAIL_PROVIDER_CONFIG", "icalEvent(callback) needs the `ical-generator` package, which is not installed.", {
687
+ hint: "Install ical-generator, or pass the ICS yourself with icalEvent(contents).",
688
+ context: {
689
+ reason: cause instanceof Error ? cause.message : String(cause),
690
+ },
691
+ });
692
+ }
693
+ if (typeof factory !== "function") {
694
+ throw new RoverError("E_MAIL_PROVIDER_CONFIG", "`ical-generator` did not export a calendar factory.");
695
+ }
696
+ const calendar = factory();
697
+ if (!isCalendarBuilder(calendar)) {
698
+ throw new RoverError("E_MAIL_PROVIDER_CONFIG", "`ical-generator` returned an object without createEvent()/toString().");
699
+ }
700
+ build(calendar);
701
+ return calendar.toString();
702
+ }
703
+ function isCalendarBuilder(value) {
704
+ return (typeof value === "object" &&
705
+ value !== null &&
706
+ "createEvent" in value &&
707
+ typeof value.createEvent === "function" &&
708
+ typeof value.toString === "function");
709
+ }
652
710
  //# sourceMappingURL=MessageBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageBuilder.js","sourceRoot":"","sources":["../src/MessageBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageBuilder.js","sourceRoot":"","sources":["../src/MessageBuilder.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ import "./augmentations.js";
6
6
  interface RoverContainer {
7
7
  singleton(token: unknown, factory: () => unknown): void;
8
8
  resolve<T = unknown>(token: unknown): Promise<T>;
9
+ /**
10
+ * Optional reader — present on ream's real container. Asked before resolving
11
+ * an OPTIONAL peer, so "not installed" is answered by a lookup rather than
12
+ * inferred from whatever resolving it threw.
13
+ */
14
+ has?(token: unknown): boolean;
9
15
  }
10
16
  interface RoverConfigStore {
11
17
  get<T = unknown>(key: string): T | undefined;
@@ -15,6 +21,7 @@ export interface RoverAppContext {
15
21
  config: RoverConfigStore;
16
22
  }
17
23
  export default class RoverProvider {
24
+ #private;
18
25
  protected app: RoverAppContext;
19
26
  constructor(app: RoverAppContext);
20
27
  register(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"RoverProvider.d.ts","sourceRoot":"","sources":["../src/RoverProvider.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAM5B;;;GAGG;AACH,UAAU,cAAc;IACvB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC;IACxD,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACjD;AACD,UAAU,gBAAgB;IACzB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;CAC7C;AACD,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;IACrB,SAAS,CAAC,GAAG,EAAE,eAAe;gBAApB,GAAG,EAAE,eAAe;IAE1C,QAAQ;IA+BF,IAAI;IAOJ,QAAQ;CACd"}
1
+ {"version":3,"file":"RoverProvider.d.ts","sourceRoot":"","sources":["../src/RoverProvider.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAM5B;;;GAGG;AACH,UAAU,cAAc;IACvB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC;IACxD,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD;;;;OAIG;IACH,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;CAC9B;AACD,UAAU,gBAAgB;IACzB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;CAC7C;AACD,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,OAAO,aAAa;;IAIrB,SAAS,CAAC,GAAG,EAAE,eAAe;gBAApB,GAAG,EAAE,eAAe;IAE1C,QAAQ;IA+BF,IAAI;IASJ,QAAQ;CAQd"}
@@ -1,8 +1,10 @@
1
1
  import "./augmentations.js";
2
2
  import { Mail } from "./Mail.js";
3
- import { setMail } from "./services/main.js";
3
+ import { clearMail, getMail, setMail } from "./services/main.js";
4
4
  export default class RoverProvider {
5
5
  app;
6
+ /** The Mail this provider bound, so shutdown only clears its own. */
7
+ #mail;
6
8
  constructor(app) {
7
9
  this.app = app;
8
10
  }
@@ -37,9 +39,19 @@ export default class RoverProvider {
37
39
  // Populate the `@c9up/rover/services/main` singleton with the
38
40
  // container-resolved Mail instance so apps can
39
41
  // `import mail from '@c9up/rover/services/main'` from anywhere.
40
- setMail(await this.app.container.resolve(Mail));
42
+ const mail = await this.app.container.resolve(Mail);
43
+ this.#mail = mail;
44
+ setMail(mail);
45
+ }
46
+ async shutdown() {
47
+ // Release the module-level singleton, but only while it is still ours: a
48
+ // stopped application left a dead Mail reachable through
49
+ // `services/main`, and with two applications in one process the one
50
+ // shutting down must not clear a binding the other has since installed.
51
+ if (this.#mail !== undefined && getMail() === this.#mail)
52
+ clearMail();
53
+ this.#mail = undefined;
41
54
  }
42
- async shutdown() { }
43
55
  }
44
56
  /**
45
57
  * Resolve a token from the container without throwing when it's not
@@ -47,11 +59,15 @@ export default class RoverProvider {
47
59
  * are purely opt-in.
48
60
  */
49
61
  async function tryResolve(app, token) {
50
- try {
51
- return await app.container.resolve(token);
52
- }
53
- catch {
62
+ // ASK whether the token is bound, rather than catching whatever resolving it
63
+ // throws. Catching everything meant a registered binding whose factory
64
+ // failed — a bad queue config, a driver that cannot connect — read exactly
65
+ // like "bay is not installed": rover disabled the feature and said nothing,
66
+ // and mail queued nowhere. Absence is a `has()` answer; a factory that
67
+ // throws is a fault, and faults propagate.
68
+ if (typeof app.container.has === "function" && !app.container.has(token)) {
54
69
  return undefined;
55
70
  }
71
+ return await app.container.resolve(token);
56
72
  }
57
73
  //# sourceMappingURL=RoverProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RoverProvider.js","sourceRoot":"","sources":["../src/RoverProvider.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAE5B,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,sEAAsE;QACtE,qEAAqE;QACrE,yDAAyD;QACzD,uEAAuE;QACvE,oBAAoB;QACpB,MAAM,IAAI,GAAG,GAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAO,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5C,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":"AAAA,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAwBjE,MAAM,CAAC,OAAO,OAAO,aAAa;IAIX;IAHtB,qEAAqE;IACrE,KAAK,CAAmB;IAExB,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,sEAAsE;QACtE,qEAAqE;QACrE,yDAAyD;QACzD,uEAAuE;QACvE,oBAAoB;QACpB,MAAM,IAAI,GAAG,GAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAO,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI;QACT,8DAA8D;QAC9D,+CAA+C;QAC/C,gEAAgE;QAChE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAO,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,KAAK,CAAC,QAAQ;QACb,yEAAyE;QACzE,yDAAyD;QACzD,oEAAoE;QACpE,wEAAwE;QACxE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,EAAE,KAAK,IAAI,CAAC,KAAK;YAAE,SAAS,EAAE,CAAC;QACtE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACxB,CAAC;CACD;AAED;;;;GAIG;AACH,KAAK,UAAU,UAAU,CACxB,GAAoB,EACpB,KAAa;IAEb,6EAA6E;IAC7E,uEAAuE;IACvE,2EAA2E;IAC3E,4EAA4E;IAC5E,uEAAuE;IACvE,2CAA2C;IAC3C,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1E,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,CAAI,KAAK,CAAC,CAAC;AAC9C,CAAC"}
@@ -15,6 +15,15 @@ import type { Mail } from "../Mail.js";
15
15
  export declare function setMail(mail: Mail): void;
16
16
  /** @internal Get the resolved singleton (or `undefined` pre-boot). */
17
17
  export declare function getMail(): Mail | undefined;
18
+ /**
19
+ * @internal Release the singleton, so a shut-down application does not leave a
20
+ * dead Mail reachable through `services/main`.
21
+ *
22
+ * The caller checks ownership first (`getMail() === mine`): with two
23
+ * applications in one process, the one shutting down must not clear a binding
24
+ * the other has since installed.
25
+ */
26
+ export declare function clearMail(): void;
18
27
  declare const mail: Mail;
19
28
  export default mail;
20
29
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/services/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAExC;AAED,sEAAsE;AACtE,wBAAgB,OAAO,IAAI,IAAI,GAAG,SAAS,CAE1C;AAED,QAAA,MAAM,IAAI,EAAE,IAWV,CAAC;AAEH,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/services/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAExC;AAED,sEAAsE;AACtE,wBAAgB,OAAO,IAAI,IAAI,GAAG,SAAS,CAE1C;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAEhC;AAED,QAAA,MAAM,IAAI,EAAE,IAWV,CAAC;AAEH,eAAe,IAAI,CAAC"}
@@ -19,6 +19,17 @@ export function setMail(mail) {
19
19
  export function getMail() {
20
20
  return instance;
21
21
  }
22
+ /**
23
+ * @internal Release the singleton, so a shut-down application does not leave a
24
+ * dead Mail reachable through `services/main`.
25
+ *
26
+ * The caller checks ownership first (`getMail() === mine`): with two
27
+ * applications in one process, the one shutting down must not clear a binding
28
+ * the other has since installed.
29
+ */
30
+ export function clearMail() {
31
+ instance = undefined;
32
+ }
22
33
  const mail = new Proxy({}, {
23
34
  get(_target, prop) {
24
35
  if (!instance) {
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/services/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,IAAI,QAA0B,CAAC;AAE/B,2EAA2E;AAC3E,MAAM,UAAU,OAAO,CAAC,IAAU;IACjC,QAAQ,GAAG,IAAI,CAAC;AACjB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,OAAO;IACtB,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,IAAI,GAAS,IAAI,KAAK,CAAC,EAAU,EAAE;IACxC,GAAG,CAAC,OAAO,EAAE,IAAI;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,mEAAmE;gBAClE,0EAA0E,CAC3E,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/services/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,IAAI,QAA0B,CAAC;AAE/B,2EAA2E;AAC3E,MAAM,UAAU,OAAO,CAAC,IAAU;IACjC,QAAQ,GAAG,IAAI,CAAC;AACjB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,OAAO;IACtB,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS;IACxB,QAAQ,GAAG,SAAS,CAAC;AACtB,CAAC;AAED,MAAM,IAAI,GAAS,IAAI,KAAK,CAAC,EAAU,EAAE;IACxC,GAAG,CAAC,OAAO,EAAE,IAAI;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACd,mEAAmE;gBAClE,0EAA0E,CAC3E,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loadNapi.d.ts","sourceRoot":"","sources":["../../src/templating/loadNapi.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyB9C,gEAAgE;AAChE,MAAM,MAAM,aAAa,GAAG,OAAO,wBAAwB,EAAE,OAAO,CAAC;AAErE;;;;;;;;GAQG;AACH,KAAK,aAAa,GAAG,cAAc,wBAAwB,CAAC,CAAC;AAa7D,wBAAgB,SAAS,IAAI,aAAa,CA6CzC;AA6BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAwBpD"}
1
+ {"version":3,"file":"loadNapi.d.ts","sourceRoot":"","sources":["../../src/templating/loadNapi.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAsB9C,gEAAgE;AAChE,MAAM,MAAM,aAAa,GAAG,OAAO,wBAAwB,EAAE,OAAO,CAAC;AAErE;;;;;;;;GAQG;AACH,KAAK,aAAa,GAAG,cAAc,wBAAwB,CAAC,CAAC;AAa7D,wBAAgB,SAAS,IAAI,aAAa,CA2CzC;AA6BD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAwBpD"}
@@ -7,21 +7,14 @@
7
7
  // consumers get a typed `RoverError`. Zero `as` / `any` per `feedback_no_any_types`
8
8
  // — every boundary is narrowed with a `Reflect.get` type guard.
9
9
  import { createRequire } from "node:module";
10
- import { arch, platform } from "node:process";
11
10
  import { fileURLToPath } from "node:url";
12
11
  import { RoverError } from "../RoverError.js";
13
- const SUFFIX_MAP = {
14
- "linux-x64": "linux-x64-gnu",
15
- "linux-arm64": "linux-arm64-gnu",
16
- "darwin-x64": "darwin-x64",
17
- "darwin-arm64": "darwin-arm64",
18
- "win32-x64": "win32-x64-msvc",
19
- };
12
+ import { muslHint, nativeBinarySuffix, supportedTargets, } from "../vendor/nativeBinary.js";
20
13
  function platformSuffix() {
21
- const key = `${platform}-${arch}`;
22
- const suffix = SUFFIX_MAP[key];
23
- if (typeof suffix !== "string") {
24
- throw new RoverError("E_MAIL_TEMPLATE_NAPI_REQUIRED", `Unsupported platform/arch '${key}' for @c9up/rover native binary. Supported: ${Object.keys(SUFFIX_MAP).join(", ")}.`, {
14
+ // The table is shared; the refusal is rover's, with rover's code on it.
15
+ const suffix = nativeBinarySuffix();
16
+ if (suffix === undefined) {
17
+ throw new RoverError("E_MAIL_TEMPLATE_NAPI_REQUIRED", `No @c9up/rover native binary for this platform. Supported: ${supportedTargets().join(", ")}.`, {
25
18
  hint: "Build the native binary on a supported platform with 'pnpm --filter @c9up/rover build:napi'.",
26
19
  });
27
20
  }
@@ -58,10 +51,8 @@ export function getNative() {
58
51
  // The prebuilt linux binaries target glibc (`-gnu`). On musl hosts (Alpine
59
52
  // containers) the `-gnu` binary fails to dlopen with a libc symbol error —
60
53
  // surface that explicitly rather than only pointing at the build step.
61
- const muslHint = suffix.endsWith("-gnu")
62
- ? " If you are on Alpine/musl, note the prebuilt binaries target glibc (musl is not a supported target)."
63
- : "";
64
- throw new RoverError("E_MAIL_TEMPLATE_NAPI_REQUIRED", `@c9up/rover native binary 'index.${suffix}.node' not found or failed to load near ${here} — run 'pnpm --filter @c9up/rover build:napi' to build it.${muslHint} Cause: ${causeMessage}`, {
54
+ const musl = muslHint();
55
+ throw new RoverError("E_MAIL_TEMPLATE_NAPI_REQUIRED", `@c9up/rover native binary 'index.${suffix}.node' not found or failed to load near ${here} run 'pnpm --filter @c9up/rover build:napi' to build it.${musl} Cause: ${causeMessage}`, {
65
56
  hint: "Run 'pnpm --filter @c9up/rover build:napi' to compile the native template engine.",
66
57
  });
67
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loadNapi.js","sourceRoot":"","sources":["../../src/templating/loadNapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loadNapi.js","sourceRoot":"","sources":["../../src/templating/loadNapi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Every `platform-arch` a binary is built for.
3
+ *
4
+ * For the message a package raises when it refuses: "no binary for
5
+ * linux-riscv64" is only actionable next to the list of what there IS.
6
+ */
7
+ export declare function supportedTargets(): readonly string[];
8
+ /** The suffix a given `platform-arch` builds under, or `undefined`. */
9
+ export declare function nativeTargetSuffix(target: string): string | undefined;
10
+ /** The suffix for THIS platform, or `undefined` where no binary is built. */
11
+ export declare function nativeBinarySuffix(): string | undefined;
12
+ /**
13
+ * Why the binary is not there, phrased for whoever has to fix it.
14
+ *
15
+ * "not found" and "not built for your platform" call for different actions,
16
+ * and a single "unavailable" leaves the reader to guess which one they are
17
+ * looking at.
18
+ */
19
+ export declare function unavailableReason(cause?: unknown): string;
20
+ /**
21
+ * `musl` builds under a different suffix, and the failure is otherwise
22
+ * baffling: the file is there, and `require` still refuses it. Worth saying so
23
+ * in a message rather than leaving a reader to discover glibc.
24
+ */
25
+ export declare function muslHint(): string;
26
+ /** What a load attempt did, so the caller can apply its own policy. */
27
+ export type NativeBinaryResult<T> = {
28
+ loaded: true;
29
+ binary: T;
30
+ } | {
31
+ loaded: false;
32
+ suffix: string | undefined;
33
+ cause?: unknown;
34
+ };
35
+ /**
36
+ * Load `<package root>/index.<suffix>.node`.
37
+ *
38
+ * The path is fixed rather than passed: this file is generated into
39
+ * `<package>/src/vendor/`, so the package root is always two levels up, from
40
+ * `src` and from `dist` alike.
41
+ */
42
+ export declare function loadNativeBinary<T>(): NativeBinaryResult<T>;
43
+ //# sourceMappingURL=nativeBinary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeBinary.d.ts","sourceRoot":"","sources":["../../src/vendor/nativeBinary.ts"],"names":[],"mappings":"AAoCA;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAEpD;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAQzD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAIjC;AAED,uEAAuE;AACvE,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAC7B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,GAC3B;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAElE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAa3D"}
@@ -0,0 +1,99 @@
1
+ // Generated from scripts/vendor/nativeBinary.ts — do not edit.
2
+ //
3
+ // This package is published and built from its own repository, so the file
4
+ // has to exist here rather than be imported. `pnpm vendor:sync` rewrites it,
5
+ // and `pnpm vendor:check` fails if this copy has drifted from the original.
6
+ /**
7
+ * Finding the NAPI binary a package ships beside itself.
8
+ *
9
+ * Every package with a Rust engine repeats the same table: napi-rs names its
10
+ * artefacts `index.<platform>-<arch>-<abi>.node`, and the mapping from Node's
11
+ * `platform`/`arch` to that suffix is the part that must never differ between
12
+ * packages. Adding a target means adding it everywhere, and a package that
13
+ * missed the edit fails only on that platform — which is exactly the failure
14
+ * nobody reproduces.
15
+ *
16
+ * What is NOT here is the policy. Some packages degrade when the binary is
17
+ * absent and answer `undefined`; others refuse loudly with build instructions.
18
+ * Both are right for their package, so the loader reports what happened and
19
+ * the caller decides.
20
+ */
21
+ import { createRequire } from "node:module";
22
+ import { dirname, join } from "node:path";
23
+ import { arch, platform } from "node:process";
24
+ import { fileURLToPath } from "node:url";
25
+ /** Node's `platform-arch` → the suffix napi-rs builds under. */
26
+ const TARGETS = {
27
+ "linux-x64": "linux-x64-gnu",
28
+ "linux-arm64": "linux-arm64-gnu",
29
+ "darwin-x64": "darwin-x64",
30
+ "darwin-arm64": "darwin-arm64",
31
+ "win32-x64": "win32-x64-msvc",
32
+ };
33
+ /**
34
+ * Every `platform-arch` a binary is built for.
35
+ *
36
+ * For the message a package raises when it refuses: "no binary for
37
+ * linux-riscv64" is only actionable next to the list of what there IS.
38
+ */
39
+ export function supportedTargets() {
40
+ return Object.keys(TARGETS);
41
+ }
42
+ /** The suffix a given `platform-arch` builds under, or `undefined`. */
43
+ export function nativeTargetSuffix(target) {
44
+ return TARGETS[target];
45
+ }
46
+ /** The suffix for THIS platform, or `undefined` where no binary is built. */
47
+ export function nativeBinarySuffix() {
48
+ return nativeTargetSuffix(`${platform}-${arch}`);
49
+ }
50
+ /**
51
+ * Why the binary is not there, phrased for whoever has to fix it.
52
+ *
53
+ * "not found" and "not built for your platform" call for different actions,
54
+ * and a single "unavailable" leaves the reader to guess which one they are
55
+ * looking at.
56
+ */
57
+ export function unavailableReason(cause) {
58
+ if (cause !== undefined) {
59
+ return `failed to load (${cause instanceof Error ? cause.message : String(cause)})`;
60
+ }
61
+ const target = `${platform}-${arch}`;
62
+ return nativeTargetSuffix(target) !== undefined
63
+ ? "binary not found"
64
+ : `no prebuilt binary for ${target}`;
65
+ }
66
+ /**
67
+ * `musl` builds under a different suffix, and the failure is otherwise
68
+ * baffling: the file is there, and `require` still refuses it. Worth saying so
69
+ * in a message rather than leaving a reader to discover glibc.
70
+ */
71
+ export function muslHint() {
72
+ return platform === "linux"
73
+ ? " On Alpine/musl, the gnu binary will not load — build the musl target."
74
+ : "";
75
+ }
76
+ /**
77
+ * Load `<package root>/index.<suffix>.node`.
78
+ *
79
+ * The path is fixed rather than passed: this file is generated into
80
+ * `<package>/src/vendor/`, so the package root is always two levels up, from
81
+ * `src` and from `dist` alike.
82
+ */
83
+ export function loadNativeBinary() {
84
+ const suffix = nativeBinarySuffix();
85
+ if (suffix === undefined)
86
+ return { loaded: false, suffix };
87
+ const here = dirname(fileURLToPath(import.meta.url));
88
+ try {
89
+ const nodeRequire = createRequire(import.meta.url);
90
+ return {
91
+ loaded: true,
92
+ binary: nodeRequire(join(here, `../../index.${suffix}.node`)),
93
+ };
94
+ }
95
+ catch (cause) {
96
+ return { loaded: false, suffix, cause };
97
+ }
98
+ }
99
+ //# sourceMappingURL=nativeBinary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeBinary.js","sourceRoot":"","sources":["../../src/vendor/nativeBinary.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAE5E;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,gEAAgE;AAChE,MAAM,OAAO,GAA2B;IACvC,WAAW,EAAE,eAAe;IAC5B,aAAa,EAAE,iBAAiB;IAChC,YAAY,EAAE,YAAY;IAC1B,cAAc,EAAE,cAAc;IAC9B,WAAW,EAAE,gBAAgB;CAC7B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,kBAAkB;IACjC,OAAO,kBAAkB,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAe;IAChD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IACrF,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;IACrC,OAAO,kBAAkB,CAAC,MAAM,CAAC,KAAK,SAAS;QAC9C,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,0BAA0B,MAAM,EAAE,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ;IACvB,OAAO,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,wEAAwE;QAC1E,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB;IAC/B,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC;QACJ,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,OAAO;YACN,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,MAAM,OAAO,CAAC,CAAM;SAClE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;AACF,CAAC"}
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c9up/rover",
3
- "version": "0.1.16",
3
+ "version": "0.1.18",
4
4
  "description": "Mail transport for Ream — SMTP, log, and pluggable transports",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -64,22 +64,24 @@
64
64
  }
65
65
  },
66
66
  "dependencies": {
67
- "nodemailer": "^9.0.1"
67
+ "nodemailer": "^10.0.1"
68
68
  },
69
69
  "devDependencies": {
70
- "@biomejs/biome": "^2.4.10",
71
- "@c9up/bay": "^0.1.13",
70
+ "@biomejs/biome": "^2.5.12",
71
+ "@c9up/bay": "^0.2.0",
72
72
  "@c9up/helix": "^0.2.0",
73
73
  "@c9up/ream": "^0.2.0",
74
- "@types/node": "*",
75
- "@types/nodemailer": "^7.0.0",
76
- "@vitest/coverage-v8": "^4.1.2",
77
- "typescript": "^6.0.2",
78
- "vitest": "^4.1.2"
74
+ "@types/node": "^22.20.1",
75
+ "@types/nodemailer": "^8.0.1",
76
+ "@vitest/coverage-v8": "4.1.11",
77
+ "ical-generator": "^11.1.1",
78
+ "typescript": "^6.0.3",
79
+ "vitest": "4.1.11"
79
80
  },
80
81
  "peerDependencies": {
81
82
  "@c9up/helix": "^0.2.0",
82
- "@c9up/ream": "^0.2.0"
83
+ "@c9up/ream": "^0.2.0",
84
+ "ical-generator": ">=8"
83
85
  },
84
86
  "peerDependenciesMeta": {
85
87
  "@c9up/helix": {
@@ -87,6 +89,9 @@
87
89
  },
88
90
  "@c9up/ream": {
89
91
  "optional": true
92
+ },
93
+ "ical-generator": {
94
+ "optional": true
90
95
  }
91
96
  },
92
97
  "files": [
@@ -1,5 +1,5 @@
1
1
  import { copyFileSync, existsSync } from 'node:fs'
2
- import { dirname, join } from 'node:path'
2
+ import { dirname, join, resolve } from 'node:path'
3
3
  import { arch, env, platform } from 'node:process'
4
4
  import { fileURLToPath } from 'node:url'
5
5
 
@@ -26,6 +26,14 @@ const hostSuffixMap = {
26
26
  'win32-x64': 'win32-x64-msvc',
27
27
  }
28
28
 
29
+ // Cargo writes its artifacts under CARGO_TARGET_DIR when that is set — a
30
+ // shared cache, a CI mount — so they are not under this package's `target/` at
31
+ // all. A relative value is resolved against the directory cargo ran in, which
32
+ // is this package root.
33
+ const targetDir = env.CARGO_TARGET_DIR
34
+ ? resolve(root, env.CARGO_TARGET_DIR)
35
+ : join(root, 'target')
36
+
29
37
  const triple = env.CARGO_BUILD_TARGET ?? ''
30
38
  let suffix
31
39
  let os
@@ -35,11 +43,11 @@ if (triple) {
35
43
  if (!entry) throw new Error(`${TAG} unsupported CARGO_BUILD_TARGET: ${triple}`)
36
44
  suffix = entry.suffix
37
45
  os = entry.os
38
- releaseDir = join(root, 'target', triple, 'release')
46
+ releaseDir = join(targetDir, triple, 'release')
39
47
  } else {
40
48
  suffix = hostSuffixMap[`${platform}-${arch}`]
41
49
  os = platform
42
- releaseDir = join(root, 'target', 'release')
50
+ releaseDir = join(targetDir, 'release')
43
51
  if (!suffix) throw new Error(`${TAG} unsupported platform/arch: ${platform}-${arch}`)
44
52
  }
45
53
 
@@ -92,6 +92,22 @@ export interface CalendarEventOptions {
92
92
  encoding?: string;
93
93
  }
94
94
 
95
+ /**
96
+ * The calendar handed to an `icalEvent(callback)`.
97
+ *
98
+ * Structural, and deliberately not `ICalCalendar`: `ical-generator` is an
99
+ * OPTIONAL peer, so importing its type here would make every consumer install
100
+ * it to typecheck. A caller who has the package gets the real object at
101
+ * runtime and can annotate their own callback with the real type.
102
+ */
103
+ export interface CalendarBuilder {
104
+ createEvent(data: Record<string, unknown>): unknown;
105
+ toString(): string;
106
+ }
107
+
108
+ /** Builds the invitation in place (AdonisJS `icalEvent(callback)`). */
109
+ export type CalendarEventCallback = (calendar: CalendarBuilder) => void;
110
+
95
111
  /**
96
112
  * A calendar invitation. Exactly one source: inline `content`, a `path` read at
97
113
  * {@link MessageBuilder.build} time, or an `href` the provider fetches.
@@ -272,6 +288,11 @@ export class MessageBuilder {
272
288
  headers: {},
273
289
  };
274
290
  #pendingView: { path: string; data: Record<string, unknown> } | null = null;
291
+ /** An `icalEvent(callback)` waiting for `build()` to run it. */
292
+ #pendingCalendar: {
293
+ build: CalendarEventCallback;
294
+ options?: CalendarEventOptions;
295
+ } | null = null;
275
296
  /**
276
297
  * The templates {@link build} actually rendered. Recorded because `build()`
277
298
  * clears the pending views once they are rendered, and the lifecycle events
@@ -789,15 +810,28 @@ export class MessageBuilder {
789
810
  // ── Calendar invitations ──────────────────────────────────────────────
790
811
 
791
812
  /**
792
- * Attach a calendar invitation from an ICS string (AdonisJS `icalEvent`).
813
+ * Attach a calendar invitation (AdonisJS `icalEvent`).
793
814
  *
794
- * Named deviation: upstream also accepts a `(calendar: ICalCalendar) => void`
795
- * builder, which is `ical-generator`'s API. rover carries no such
796
- * dependency, so it takes the ICS text produced by whichever generator you
797
- * prefer. {@link icalEventFromFile} and {@link icalEventFromUrl} are the
798
- * other two upstream forms, unchanged.
815
+ * Takes either the ICS text or a `(calendar) => void` builder, as upstream
816
+ * does. The builder runs at {@link build} time against an `ical-generator`
817
+ * calendar; that package is an OPTIONAL peer, so passing the text needs
818
+ * nothing installed. {@link icalEventFromFile} and {@link icalEventFromUrl}
819
+ * are the other two upstream forms.
799
820
  */
800
- icalEvent(contents: string, options?: CalendarEventOptions): this {
821
+ icalEvent(
822
+ contents: string | CalendarEventCallback,
823
+ options?: CalendarEventOptions,
824
+ ): this {
825
+ if (typeof contents === "function") {
826
+ // Resolved at `build()`, not here: `ical-generator` is an optional
827
+ // peer that has to be imported dynamically, and the fluent chain
828
+ // stays synchronous — the same deferral `icalEventFromFile` uses to
829
+ // read its file.
830
+ this.#pendingCalendar = { build: contents, options };
831
+ this.#msg.icalEvent = undefined;
832
+ return this;
833
+ }
834
+ this.#pendingCalendar = null;
801
835
  this.#msg.icalEvent = { ...options, content: contents };
802
836
  return this;
803
837
  }
@@ -854,6 +888,13 @@ export class MessageBuilder {
854
888
  * longer clobber each other.
855
889
  */
856
890
  async build(viewsRoot?: string): Promise<MailMessage> {
891
+ if (this.#pendingCalendar !== null) {
892
+ this.#msg.icalEvent = {
893
+ ...this.#pendingCalendar.options,
894
+ content: await renderCalendar(this.#pendingCalendar.build),
895
+ };
896
+ this.#pendingCalendar = null;
897
+ }
857
898
  if (this.#pendingView !== null) {
858
899
  this.#renderedViews.html = {
859
900
  template: this.#pendingView.path,
@@ -942,3 +983,55 @@ function addRecipients(
942
983
  }
943
984
  list.push(formatAddress(address, name));
944
985
  }
986
+
987
+ /**
988
+ * Run an `icalEvent(callback)` against a real `ical-generator` calendar.
989
+ *
990
+ * The package is an optional peer: an app that never builds an invitation
991
+ * should not carry an iCalendar library. When one IS built without it
992
+ * installed, say exactly that — the alternative is a `Cannot find module`
993
+ * thrown from inside a mail send, which reads as a mail bug.
994
+ */
995
+ async function renderCalendar(build: CalendarEventCallback): Promise<string> {
996
+ let factory: unknown;
997
+ try {
998
+ const mod: { default?: unknown } = await import("ical-generator");
999
+ factory = mod.default;
1000
+ } catch (cause) {
1001
+ throw new RoverError(
1002
+ "E_MAIL_PROVIDER_CONFIG",
1003
+ "icalEvent(callback) needs the `ical-generator` package, which is not installed.",
1004
+ {
1005
+ hint: "Install ical-generator, or pass the ICS yourself with icalEvent(contents).",
1006
+ context: {
1007
+ reason: cause instanceof Error ? cause.message : String(cause),
1008
+ },
1009
+ },
1010
+ );
1011
+ }
1012
+ if (typeof factory !== "function") {
1013
+ throw new RoverError(
1014
+ "E_MAIL_PROVIDER_CONFIG",
1015
+ "`ical-generator` did not export a calendar factory.",
1016
+ );
1017
+ }
1018
+ const calendar: unknown = factory();
1019
+ if (!isCalendarBuilder(calendar)) {
1020
+ throw new RoverError(
1021
+ "E_MAIL_PROVIDER_CONFIG",
1022
+ "`ical-generator` returned an object without createEvent()/toString().",
1023
+ );
1024
+ }
1025
+ build(calendar);
1026
+ return calendar.toString();
1027
+ }
1028
+
1029
+ function isCalendarBuilder(value: unknown): value is CalendarBuilder {
1030
+ return (
1031
+ typeof value === "object" &&
1032
+ value !== null &&
1033
+ "createEvent" in value &&
1034
+ typeof value.createEvent === "function" &&
1035
+ typeof value.toString === "function"
1036
+ );
1037
+ }
@@ -2,7 +2,7 @@ import "./augmentations.js";
2
2
  import type { EmitterLike, MailConfig } from "./Mail.js";
3
3
  import { Mail } from "./Mail.js";
4
4
  import type { BayQueueLike } from "./queue/MailJob.js";
5
- import { setMail } from "./services/main.js";
5
+ import { clearMail, getMail, setMail } from "./services/main.js";
6
6
 
7
7
  /**
8
8
  * Duck-typed slice of the host's IoC container — rover does NOT import
@@ -11,6 +11,12 @@ import { setMail } from "./services/main.js";
11
11
  interface RoverContainer {
12
12
  singleton(token: unknown, factory: () => unknown): void;
13
13
  resolve<T = unknown>(token: unknown): Promise<T>;
14
+ /**
15
+ * Optional reader — present on ream's real container. Asked before resolving
16
+ * an OPTIONAL peer, so "not installed" is answered by a lookup rather than
17
+ * inferred from whatever resolving it threw.
18
+ */
19
+ has?(token: unknown): boolean;
14
20
  }
15
21
  interface RoverConfigStore {
16
22
  get<T = unknown>(key: string): T | undefined;
@@ -21,6 +27,9 @@ export interface RoverAppContext {
21
27
  }
22
28
 
23
29
  export default class RoverProvider {
30
+ /** The Mail this provider bound, so shutdown only clears its own. */
31
+ #mail: Mail | undefined;
32
+
24
33
  constructor(protected app: RoverAppContext) {}
25
34
 
26
35
  register() {
@@ -58,10 +67,19 @@ export default class RoverProvider {
58
67
  // Populate the `@c9up/rover/services/main` singleton with the
59
68
  // container-resolved Mail instance so apps can
60
69
  // `import mail from '@c9up/rover/services/main'` from anywhere.
61
- setMail(await this.app.container.resolve<Mail>(Mail));
70
+ const mail = await this.app.container.resolve<Mail>(Mail);
71
+ this.#mail = mail;
72
+ setMail(mail);
62
73
  }
63
74
 
64
- async shutdown() {}
75
+ async shutdown() {
76
+ // Release the module-level singleton, but only while it is still ours: a
77
+ // stopped application left a dead Mail reachable through
78
+ // `services/main`, and with two applications in one process the one
79
+ // shutting down must not clear a binding the other has since installed.
80
+ if (this.#mail !== undefined && getMail() === this.#mail) clearMail();
81
+ this.#mail = undefined;
82
+ }
65
83
  }
66
84
 
67
85
  /**
@@ -73,9 +91,14 @@ async function tryResolve<T>(
73
91
  app: RoverAppContext,
74
92
  token: string,
75
93
  ): Promise<T | undefined> {
76
- try {
77
- return await app.container.resolve<T>(token);
78
- } catch {
94
+ // ASK whether the token is bound, rather than catching whatever resolving it
95
+ // throws. Catching everything meant a registered binding whose factory
96
+ // failed — a bad queue config, a driver that cannot connect — read exactly
97
+ // like "bay is not installed": rover disabled the feature and said nothing,
98
+ // and mail queued nowhere. Absence is a `has()` answer; a factory that
99
+ // throws is a fault, and faults propagate.
100
+ if (typeof app.container.has === "function" && !app.container.has(token)) {
79
101
  return undefined;
80
102
  }
103
+ return await app.container.resolve<T>(token);
81
104
  }
@@ -25,6 +25,18 @@ export function getMail(): Mail | undefined {
25
25
  return instance;
26
26
  }
27
27
 
28
+ /**
29
+ * @internal Release the singleton, so a shut-down application does not leave a
30
+ * dead Mail reachable through `services/main`.
31
+ *
32
+ * The caller checks ownership first (`getMail() === mine`): with two
33
+ * applications in one process, the one shutting down must not clear a binding
34
+ * the other has since installed.
35
+ */
36
+ export function clearMail(): void {
37
+ instance = undefined;
38
+ }
39
+
28
40
  const mail: Mail = new Proxy({} as Mail, {
29
41
  get(_target, prop) {
30
42
  if (!instance) {
@@ -8,25 +8,21 @@
8
8
  // — every boundary is narrowed with a `Reflect.get` type guard.
9
9
 
10
10
  import { createRequire } from "node:module";
11
- import { arch, platform } from "node:process";
12
11
  import { fileURLToPath } from "node:url";
13
12
  import { RoverError } from "../RoverError.js";
14
-
15
- const SUFFIX_MAP: Readonly<Record<string, string>> = {
16
- "linux-x64": "linux-x64-gnu",
17
- "linux-arm64": "linux-arm64-gnu",
18
- "darwin-x64": "darwin-x64",
19
- "darwin-arm64": "darwin-arm64",
20
- "win32-x64": "win32-x64-msvc",
21
- };
13
+ import {
14
+ muslHint,
15
+ nativeBinarySuffix,
16
+ supportedTargets,
17
+ } from "../vendor/nativeBinary.js";
22
18
 
23
19
  function platformSuffix(): string {
24
- const key = `${platform}-${arch}`;
25
- const suffix = SUFFIX_MAP[key];
26
- if (typeof suffix !== "string") {
20
+ // The table is shared; the refusal is rover's, with rover's code on it.
21
+ const suffix = nativeBinarySuffix();
22
+ if (suffix === undefined) {
27
23
  throw new RoverError(
28
24
  "E_MAIL_TEMPLATE_NAPI_REQUIRED",
29
- `Unsupported platform/arch '${key}' for @c9up/rover native binary. Supported: ${Object.keys(SUFFIX_MAP).join(", ")}.`,
25
+ `No @c9up/rover native binary for this platform. Supported: ${supportedTargets().join(", ")}.`,
30
26
  {
31
27
  hint: "Build the native binary on a supported platform with 'pnpm --filter @c9up/rover build:napi'.",
32
28
  },
@@ -83,12 +79,10 @@ export function getNative(): NativeExports {
83
79
  // The prebuilt linux binaries target glibc (`-gnu`). On musl hosts (Alpine
84
80
  // containers) the `-gnu` binary fails to dlopen with a libc symbol error —
85
81
  // surface that explicitly rather than only pointing at the build step.
86
- const muslHint = suffix.endsWith("-gnu")
87
- ? " If you are on Alpine/musl, note the prebuilt binaries target glibc (musl is not a supported target)."
88
- : "";
82
+ const musl = muslHint();
89
83
  throw new RoverError(
90
84
  "E_MAIL_TEMPLATE_NAPI_REQUIRED",
91
- `@c9up/rover native binary 'index.${suffix}.node' not found or failed to load near ${here} — run 'pnpm --filter @c9up/rover build:napi' to build it.${muslHint} Cause: ${causeMessage}`,
85
+ `@c9up/rover native binary 'index.${suffix}.node' not found or failed to load near ${here} — run 'pnpm --filter @c9up/rover build:napi' to build it.${musl} Cause: ${causeMessage}`,
92
86
  {
93
87
  hint: "Run 'pnpm --filter @c9up/rover build:napi' to compile the native template engine.",
94
88
  },
@@ -0,0 +1,110 @@
1
+ // Generated from scripts/vendor/nativeBinary.ts — do not edit.
2
+ //
3
+ // This package is published and built from its own repository, so the file
4
+ // has to exist here rather than be imported. `pnpm vendor:sync` rewrites it,
5
+ // and `pnpm vendor:check` fails if this copy has drifted from the original.
6
+
7
+ /**
8
+ * Finding the NAPI binary a package ships beside itself.
9
+ *
10
+ * Every package with a Rust engine repeats the same table: napi-rs names its
11
+ * artefacts `index.<platform>-<arch>-<abi>.node`, and the mapping from Node's
12
+ * `platform`/`arch` to that suffix is the part that must never differ between
13
+ * packages. Adding a target means adding it everywhere, and a package that
14
+ * missed the edit fails only on that platform — which is exactly the failure
15
+ * nobody reproduces.
16
+ *
17
+ * What is NOT here is the policy. Some packages degrade when the binary is
18
+ * absent and answer `undefined`; others refuse loudly with build instructions.
19
+ * Both are right for their package, so the loader reports what happened and
20
+ * the caller decides.
21
+ */
22
+
23
+ import { createRequire } from "node:module";
24
+ import { dirname, join } from "node:path";
25
+ import { arch, platform } from "node:process";
26
+ import { fileURLToPath } from "node:url";
27
+
28
+ /** Node's `platform-arch` → the suffix napi-rs builds under. */
29
+ const TARGETS: Record<string, string> = {
30
+ "linux-x64": "linux-x64-gnu",
31
+ "linux-arm64": "linux-arm64-gnu",
32
+ "darwin-x64": "darwin-x64",
33
+ "darwin-arm64": "darwin-arm64",
34
+ "win32-x64": "win32-x64-msvc",
35
+ };
36
+
37
+ /**
38
+ * Every `platform-arch` a binary is built for.
39
+ *
40
+ * For the message a package raises when it refuses: "no binary for
41
+ * linux-riscv64" is only actionable next to the list of what there IS.
42
+ */
43
+ export function supportedTargets(): readonly string[] {
44
+ return Object.keys(TARGETS);
45
+ }
46
+
47
+ /** The suffix a given `platform-arch` builds under, or `undefined`. */
48
+ export function nativeTargetSuffix(target: string): string | undefined {
49
+ return TARGETS[target];
50
+ }
51
+
52
+ /** The suffix for THIS platform, or `undefined` where no binary is built. */
53
+ export function nativeBinarySuffix(): string | undefined {
54
+ return nativeTargetSuffix(`${platform}-${arch}`);
55
+ }
56
+
57
+ /**
58
+ * Why the binary is not there, phrased for whoever has to fix it.
59
+ *
60
+ * "not found" and "not built for your platform" call for different actions,
61
+ * and a single "unavailable" leaves the reader to guess which one they are
62
+ * looking at.
63
+ */
64
+ export function unavailableReason(cause?: unknown): string {
65
+ if (cause !== undefined) {
66
+ return `failed to load (${cause instanceof Error ? cause.message : String(cause)})`;
67
+ }
68
+ const target = `${platform}-${arch}`;
69
+ return nativeTargetSuffix(target) !== undefined
70
+ ? "binary not found"
71
+ : `no prebuilt binary for ${target}`;
72
+ }
73
+
74
+ /**
75
+ * `musl` builds under a different suffix, and the failure is otherwise
76
+ * baffling: the file is there, and `require` still refuses it. Worth saying so
77
+ * in a message rather than leaving a reader to discover glibc.
78
+ */
79
+ export function muslHint(): string {
80
+ return platform === "linux"
81
+ ? " On Alpine/musl, the gnu binary will not load — build the musl target."
82
+ : "";
83
+ }
84
+
85
+ /** What a load attempt did, so the caller can apply its own policy. */
86
+ export type NativeBinaryResult<T> =
87
+ | { loaded: true; binary: T }
88
+ | { loaded: false; suffix: string | undefined; cause?: unknown };
89
+
90
+ /**
91
+ * Load `<package root>/index.<suffix>.node`.
92
+ *
93
+ * The path is fixed rather than passed: this file is generated into
94
+ * `<package>/src/vendor/`, so the package root is always two levels up, from
95
+ * `src` and from `dist` alike.
96
+ */
97
+ export function loadNativeBinary<T>(): NativeBinaryResult<T> {
98
+ const suffix = nativeBinarySuffix();
99
+ if (suffix === undefined) return { loaded: false, suffix };
100
+ const here = dirname(fileURLToPath(import.meta.url));
101
+ try {
102
+ const nodeRequire = createRequire(import.meta.url);
103
+ return {
104
+ loaded: true,
105
+ binary: nodeRequire(join(here, `../../index.${suffix}.node`)) as T,
106
+ };
107
+ } catch (cause) {
108
+ return { loaded: false, suffix, cause };
109
+ }
110
+ }