@ts-cloud/core 0.7.102 → 0.7.104

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 (2) hide show
  1. package/dist/types.d.ts +43 -0
  2. package/package.json +2 -2
package/dist/types.d.ts CHANGED
@@ -426,6 +426,16 @@ export interface InfrastructureConfig {
426
426
  */
427
427
  realtime?: RealtimeConfig;
428
428
  dns?: DnsConfig;
429
+ /**
430
+ * Mail DNS for domains this deployment sends mail from.
431
+ *
432
+ * A domain that sends mail needs MX, SPF, DKIM and DMARC, and getting any of
433
+ * them wrong is invisible: mail lands in spam or is dropped by the receiver
434
+ * with nothing surfaced to the sender. Declaring it here lets the deploy
435
+ * publish the records rather than leaving them to be typed by hand and
436
+ * forgotten.
437
+ */
438
+ mail?: MailConfig;
429
439
  security?: SecurityConfig;
430
440
  monitoring?: MonitoringConfig;
431
441
  api?: ApiConfig;
@@ -841,6 +851,39 @@ export interface SharedPathSpec {
841
851
  }
842
852
  /** A shared path: a release-relative path, or {@link SharedPathSpec}. */
843
853
  export type SharedPathEntry = string | SharedPathSpec;
854
+ /**
855
+ * Mail DNS provisioning for a deployment.
856
+ *
857
+ * Opt-in: absent means the deploy touches no mail records at all, which is the
858
+ * right default for the many apps that send nothing.
859
+ */
860
+ export interface MailConfig {
861
+ /** Set false to keep the block for reference without publishing records. */
862
+ enabled?: boolean;
863
+ /** Mail server hostname that receives for these domains. */
864
+ host: string;
865
+ /**
866
+ * Domains to publish records for. Defaults to every site domain, since a
867
+ * deployment that sends mail almost always sends as the site it serves.
868
+ */
869
+ domains?: string[];
870
+ /** Public IPv4 authorised in SPF. Defaults to the app server's own IP. */
871
+ ip?: string;
872
+ /** Extra SPF mechanisms, e.g. `include:amazonses.com`. */
873
+ spfIncludes?: string[];
874
+ /** DKIM selector. Convention is `default`. */
875
+ dkimSelector?: string;
876
+ /**
877
+ * DKIM public key, per domain. Omitting a domain skips only its DKIM record:
878
+ * publishing an empty key is worse than publishing none, because a broken
879
+ * signature is a stronger negative signal than an unsigned message.
880
+ */
881
+ dkimPublicKeys?: Record<string, string>;
882
+ /** DMARC policy. `none` (report only) unless stated otherwise. */
883
+ dmarcPolicy?: 'none' | 'quarantine' | 'reject';
884
+ /** Address for aggregate DMARC reports. */
885
+ dmarcReportTo?: string;
886
+ }
844
887
  export interface SiteConfig {
845
888
  /**
846
889
  * Directory to deploy.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ts-cloud/core",
3
3
  "type": "module",
4
- "version": "0.7.102",
4
+ "version": "0.7.104",
5
5
  "description": "Core CloudFormation generation library for ts-cloud",
6
6
  "author": "Chris Breuer <chris@stacksjs.com>",
7
7
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "typecheck": "tsc --noEmit"
32
32
  },
33
33
  "dependencies": {
34
- "@ts-cloud/aws-types": "0.7.102"
34
+ "@ts-cloud/aws-types": "0.7.104"
35
35
  },
36
36
  "devDependencies": {
37
37
  "typescript": "^7.0.2"