@ts-cloud/core 0.12.16 → 0.13.1

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 +65 -0
  2. package/package.json +2 -2
package/dist/types.d.ts CHANGED
@@ -1792,6 +1792,39 @@ export interface SftpConfig {
1792
1792
  /** System account the box server runs as. Defaults to `ts-sftp`. */
1793
1793
  serviceUser?: string;
1794
1794
  }
1795
+ /**
1796
+ * The registrar half of {@link DnsConfig}.
1797
+ */
1798
+ export interface DnsRegistrarConfig {
1799
+ /** Who the domain is registered with. Must be able to set nameservers. */
1800
+ provider: 'porkbun' | 'godaddy';
1801
+ /**
1802
+ * Hostnames to serve through the DNS provider's edge proxy, where it has one
1803
+ * (Cloudflare's "orange cloud").
1804
+ *
1805
+ * Opt-in per host, never "every address record". Proxying a mail host is the
1806
+ * classic way to break a domain quietly: Cloudflare does not proxy SMTP, and
1807
+ * the proxy replaces the origin address that the domain's own SPF record
1808
+ * authorises — so delivery degrades hours later with nothing visibly wrong.
1809
+ * Listing only the web hosts is what keeps that from being the default.
1810
+ */
1811
+ proxied?: string[];
1812
+ /**
1813
+ * Report what the delegation would do and change nothing.
1814
+ *
1815
+ * Worth leaving on for a deploy or two before the real move: the report
1816
+ * names every record that would be copied, so a missing DKIM key is
1817
+ * something you read rather than something you discover.
1818
+ */
1819
+ dryRun?: boolean;
1820
+ /**
1821
+ * Skip the delegation entirely.
1822
+ *
1823
+ * For a zone that is deliberately delegated somewhere ts-cloud does not
1824
+ * manage, where the check would otherwise try to correct it on every deploy.
1825
+ */
1826
+ delegate?: boolean;
1827
+ }
1795
1828
  export interface DnsConfig {
1796
1829
  domain?: string;
1797
1830
  hostedZoneId?: string;
@@ -1801,6 +1834,38 @@ export interface DnsConfig {
1801
1834
  * instead of Route53
1802
1835
  */
1803
1836
  provider?: 'route53' | 'cloudflare' | 'porkbun' | 'godaddy';
1837
+ /**
1838
+ * Where the domain is REGISTERED, when that is not where its DNS is served.
1839
+ *
1840
+ * A domain has two homes people conflate: the registrar it was bought from,
1841
+ * and the provider whose nameservers answer for it. Setting this says "the
1842
+ * zone belongs on `provider`, and `registrar` is what has to be pointed at
1843
+ * it" — and lets a deploy perform that move instead of an operator doing it
1844
+ * by hand at two dashboards and hoping the record sets match.
1845
+ *
1846
+ * On deploy, when the registrar's nameservers do not already point at
1847
+ * `provider`, ts-cloud creates the zone, copies the registrar's records
1848
+ * across, verifies record for record that they arrived, and only then
1849
+ * updates the nameservers. A verification failure leaves the delegation
1850
+ * alone: pointing a live domain at a half-populated zone is the one outcome
1851
+ * an operator cannot quickly undo, because the old zone keeps answering only
1852
+ * until caches expire.
1853
+ *
1854
+ * Once delegated it is a no-op. The zone's new host is authoritative from
1855
+ * that point, so the registrar's copy of the records is stale and
1856
+ * re-importing it would resurrect anything deleted since.
1857
+ *
1858
+ * @example
1859
+ * dns: {
1860
+ * provider: 'cloudflare', // serves the zone
1861
+ * domain: 'example.com',
1862
+ * registrar: {
1863
+ * provider: 'porkbun', // owns the delegation
1864
+ * proxied: ['example.com', 'www.example.com'],
1865
+ * },
1866
+ * }
1867
+ */
1868
+ registrar?: DnsRegistrarConfig;
1804
1869
  /**
1805
1870
  * Records to publish on every deploy, alongside the address records ts-cloud
1806
1871
  * derives from `sites`.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ts-cloud/core",
3
3
  "type": "module",
4
- "version": "0.12.16",
4
+ "version": "0.13.1",
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.12.16"
34
+ "@ts-cloud/aws-types": "0.13.1"
35
35
  },
36
36
  "devDependencies": {
37
37
  "typescript": "^7.0.2"