@composurecdk/route53 0.7.0 → 0.8.0
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 +54 -4
- package/dist/commonjs/a-record-builder.d.ts.map +1 -0
- package/dist/commonjs/a-record-builder.js +38 -0
- package/dist/commonjs/a-record-builder.js.map +1 -0
- package/dist/commonjs/aaaa-record-builder.d.ts.map +1 -0
- package/dist/commonjs/aaaa-record-builder.js +39 -0
- package/dist/commonjs/aaaa-record-builder.js.map +1 -0
- package/dist/commonjs/alias-targets.d.ts.map +1 -0
- package/dist/commonjs/alias-targets.js +50 -0
- package/dist/commonjs/alias-targets.js.map +1 -0
- package/dist/commonjs/caa-record-builder.d.ts.map +1 -0
- package/dist/commonjs/caa-record-builder.js +37 -0
- package/dist/commonjs/caa-record-builder.js.map +1 -0
- package/dist/commonjs/cname-record-builder.d.ts.map +1 -0
- package/dist/commonjs/cname-record-builder.js +43 -0
- package/dist/commonjs/cname-record-builder.js.map +1 -0
- package/dist/{defaults.d.ts → commonjs/defaults.d.ts} +30 -4
- package/dist/commonjs/defaults.d.ts.map +1 -0
- package/dist/commonjs/defaults.js +159 -0
- package/dist/commonjs/defaults.js.map +1 -0
- package/dist/commonjs/ds-record-builder.d.ts.map +1 -0
- package/dist/commonjs/ds-record-builder.js +37 -0
- package/dist/commonjs/ds-record-builder.js.map +1 -0
- package/dist/commonjs/health-check-alarm-builder.d.ts.map +1 -0
- package/dist/commonjs/health-check-alarm-builder.js +136 -0
- package/dist/commonjs/health-check-alarm-builder.js.map +1 -0
- package/dist/commonjs/health-check-alarm-config.d.ts.map +1 -0
- package/dist/commonjs/health-check-alarm-config.js +3 -0
- package/dist/commonjs/health-check-alarm-config.js.map +1 -0
- package/dist/commonjs/health-check-alarm-defaults.d.ts.map +1 -0
- package/dist/commonjs/health-check-alarm-defaults.js +29 -0
- package/dist/commonjs/health-check-alarm-defaults.js.map +1 -0
- package/dist/commonjs/health-check-alarms.d.ts.map +1 -0
- package/dist/commonjs/health-check-alarms.js +45 -0
- package/dist/commonjs/health-check-alarms.js.map +1 -0
- package/dist/commonjs/health-check-builder.d.ts.map +1 -0
- package/dist/commonjs/health-check-builder.js +56 -0
- package/dist/commonjs/health-check-builder.js.map +1 -0
- package/dist/{hosted-zone-builder.d.ts → commonjs/hosted-zone-builder.d.ts} +26 -7
- package/dist/commonjs/hosted-zone-builder.d.ts.map +1 -0
- package/dist/commonjs/hosted-zone-builder.js +60 -0
- package/dist/commonjs/hosted-zone-builder.js.map +1 -0
- package/dist/commonjs/https-record-builder.d.ts.map +1 -0
- package/dist/commonjs/https-record-builder.js +45 -0
- package/dist/commonjs/https-record-builder.js.map +1 -0
- package/dist/{index.d.ts → commonjs/index.d.ts} +2 -1
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +54 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/mx-record-builder.d.ts.map +1 -0
- package/dist/commonjs/mx-record-builder.js +37 -0
- package/dist/commonjs/mx-record-builder.js.map +1 -0
- package/dist/commonjs/ns-record-builder.d.ts.map +1 -0
- package/dist/commonjs/ns-record-builder.js +42 -0
- package/dist/commonjs/ns-record-builder.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/query-logging.d.ts +60 -0
- package/dist/commonjs/query-logging.d.ts.map +1 -0
- package/dist/commonjs/query-logging.js +136 -0
- package/dist/commonjs/query-logging.js.map +1 -0
- package/dist/commonjs/srv-record-builder.d.ts.map +1 -0
- package/dist/commonjs/srv-record-builder.js +37 -0
- package/dist/commonjs/srv-record-builder.js.map +1 -0
- package/dist/commonjs/svcb-record-builder.d.ts.map +1 -0
- package/dist/commonjs/svcb-record-builder.js +38 -0
- package/dist/commonjs/svcb-record-builder.js.map +1 -0
- package/dist/commonjs/txt-record-builder.d.ts.map +1 -0
- package/dist/commonjs/txt-record-builder.js +37 -0
- package/dist/commonjs/txt-record-builder.js.map +1 -0
- package/dist/commonjs/zone/index.d.ts.map +1 -0
- package/dist/commonjs/zone/index.js +23 -0
- package/dist/commonjs/zone/index.js.map +1 -0
- package/dist/commonjs/zone/zone-dsl.d.ts.map +1 -0
- package/dist/commonjs/zone/zone-dsl.js +247 -0
- package/dist/commonjs/zone/zone-dsl.js.map +1 -0
- package/dist/commonjs/zone/zone-records.d.ts.map +1 -0
- package/dist/commonjs/zone/zone-records.js +322 -0
- package/dist/commonjs/zone/zone-records.js.map +1 -0
- package/dist/esm/a-record-builder.d.ts +56 -0
- package/dist/esm/a-record-builder.d.ts.map +1 -0
- package/dist/esm/a-record-builder.js.map +1 -0
- package/dist/esm/aaaa-record-builder.d.ts +44 -0
- package/dist/esm/aaaa-record-builder.d.ts.map +1 -0
- package/dist/esm/aaaa-record-builder.js.map +1 -0
- package/dist/esm/alias-targets.d.ts +34 -0
- package/dist/esm/alias-targets.d.ts.map +1 -0
- package/dist/esm/alias-targets.js.map +1 -0
- package/dist/esm/caa-record-builder.d.ts +44 -0
- package/dist/esm/caa-record-builder.d.ts.map +1 -0
- package/dist/esm/caa-record-builder.js.map +1 -0
- package/dist/esm/cname-record-builder.d.ts +42 -0
- package/dist/esm/cname-record-builder.d.ts.map +1 -0
- package/dist/esm/cname-record-builder.js.map +1 -0
- package/dist/esm/defaults.d.ts +119 -0
- package/dist/esm/defaults.d.ts.map +1 -0
- package/dist/{defaults.js → esm/defaults.js} +37 -4
- package/dist/esm/defaults.js.map +1 -0
- package/dist/esm/ds-record-builder.d.ts +42 -0
- package/dist/esm/ds-record-builder.d.ts.map +1 -0
- package/dist/esm/ds-record-builder.js.map +1 -0
- package/dist/esm/health-check-alarm-builder.d.ts +133 -0
- package/dist/esm/health-check-alarm-builder.d.ts.map +1 -0
- package/dist/esm/health-check-alarm-builder.js.map +1 -0
- package/dist/esm/health-check-alarm-config.d.ts +39 -0
- package/dist/esm/health-check-alarm-config.d.ts.map +1 -0
- package/dist/esm/health-check-alarm-config.js.map +1 -0
- package/dist/esm/health-check-alarm-defaults.d.ts +13 -0
- package/dist/esm/health-check-alarm-defaults.d.ts.map +1 -0
- package/dist/esm/health-check-alarm-defaults.js.map +1 -0
- package/dist/esm/health-check-alarms.d.ts +15 -0
- package/dist/esm/health-check-alarms.d.ts.map +1 -0
- package/dist/esm/health-check-alarms.js.map +1 -0
- package/dist/esm/health-check-builder.d.ts +103 -0
- package/dist/esm/health-check-builder.d.ts.map +1 -0
- package/dist/esm/health-check-builder.js.map +1 -0
- package/dist/esm/hosted-zone-builder.d.ts +95 -0
- package/dist/esm/hosted-zone-builder.d.ts.map +1 -0
- package/dist/{hosted-zone-builder.js → esm/hosted-zone-builder.js} +11 -3
- package/dist/esm/hosted-zone-builder.js.map +1 -0
- package/dist/esm/https-record-builder.d.ts +45 -0
- package/dist/esm/https-record-builder.d.ts.map +1 -0
- package/dist/esm/https-record-builder.js.map +1 -0
- package/dist/esm/index.d.ts +20 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/{index.js → esm/index.js} +1 -1
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mx-record-builder.d.ts +40 -0
- package/dist/esm/mx-record-builder.d.ts.map +1 -0
- package/dist/esm/mx-record-builder.js.map +1 -0
- package/dist/esm/ns-record-builder.d.ts +40 -0
- package/dist/esm/ns-record-builder.d.ts.map +1 -0
- package/dist/esm/ns-record-builder.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/query-logging.d.ts +60 -0
- package/dist/esm/query-logging.d.ts.map +1 -0
- package/dist/esm/query-logging.js +133 -0
- package/dist/esm/query-logging.js.map +1 -0
- package/dist/esm/srv-record-builder.d.ts +40 -0
- package/dist/esm/srv-record-builder.d.ts.map +1 -0
- package/dist/esm/srv-record-builder.js.map +1 -0
- package/dist/esm/svcb-record-builder.d.ts +41 -0
- package/dist/esm/svcb-record-builder.d.ts.map +1 -0
- package/dist/esm/svcb-record-builder.js.map +1 -0
- package/dist/esm/txt-record-builder.d.ts +38 -0
- package/dist/esm/txt-record-builder.d.ts.map +1 -0
- package/dist/esm/txt-record-builder.js.map +1 -0
- package/dist/esm/zone/index.d.ts +3 -0
- package/dist/esm/zone/index.d.ts.map +1 -0
- package/dist/esm/zone/index.js.map +1 -0
- package/dist/esm/zone/zone-dsl.d.ts +296 -0
- package/dist/esm/zone/zone-dsl.d.ts.map +1 -0
- package/dist/esm/zone/zone-dsl.js.map +1 -0
- package/dist/esm/zone/zone-records.d.ts +67 -0
- package/dist/esm/zone/zone-records.d.ts.map +1 -0
- package/dist/esm/zone/zone-records.js.map +1 -0
- package/package.json +47 -21
- package/dist/a-record-builder.d.ts.map +0 -1
- package/dist/a-record-builder.js.map +0 -1
- package/dist/aaaa-record-builder.d.ts.map +0 -1
- package/dist/aaaa-record-builder.js.map +0 -1
- package/dist/alias-targets.d.ts.map +0 -1
- package/dist/alias-targets.js.map +0 -1
- package/dist/caa-record-builder.d.ts.map +0 -1
- package/dist/caa-record-builder.js.map +0 -1
- package/dist/cname-record-builder.d.ts.map +0 -1
- package/dist/cname-record-builder.js.map +0 -1
- package/dist/defaults.d.ts.map +0 -1
- package/dist/defaults.js.map +0 -1
- package/dist/ds-record-builder.d.ts.map +0 -1
- package/dist/ds-record-builder.js.map +0 -1
- package/dist/health-check-alarm-builder.d.ts.map +0 -1
- package/dist/health-check-alarm-builder.js.map +0 -1
- package/dist/health-check-alarm-config.d.ts.map +0 -1
- package/dist/health-check-alarm-config.js.map +0 -1
- package/dist/health-check-alarm-defaults.d.ts.map +0 -1
- package/dist/health-check-alarm-defaults.js.map +0 -1
- package/dist/health-check-alarms.d.ts.map +0 -1
- package/dist/health-check-alarms.js.map +0 -1
- package/dist/health-check-builder.d.ts.map +0 -1
- package/dist/health-check-builder.js.map +0 -1
- package/dist/hosted-zone-builder.d.ts.map +0 -1
- package/dist/hosted-zone-builder.js.map +0 -1
- package/dist/https-record-builder.d.ts.map +0 -1
- package/dist/https-record-builder.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/mx-record-builder.d.ts.map +0 -1
- package/dist/mx-record-builder.js.map +0 -1
- package/dist/ns-record-builder.d.ts.map +0 -1
- package/dist/ns-record-builder.js.map +0 -1
- package/dist/srv-record-builder.d.ts.map +0 -1
- package/dist/srv-record-builder.js.map +0 -1
- package/dist/svcb-record-builder.d.ts.map +0 -1
- package/dist/svcb-record-builder.js.map +0 -1
- package/dist/txt-record-builder.d.ts.map +0 -1
- package/dist/txt-record-builder.js.map +0 -1
- package/dist/zone/index.d.ts.map +0 -1
- package/dist/zone/index.js.map +0 -1
- package/dist/zone/zone-dsl.d.ts.map +0 -1
- package/dist/zone/zone-dsl.js.map +0 -1
- package/dist/zone/zone-records.d.ts.map +0 -1
- package/dist/zone/zone-records.js.map +0 -1
- /package/dist/{a-record-builder.d.ts → commonjs/a-record-builder.d.ts} +0 -0
- /package/dist/{aaaa-record-builder.d.ts → commonjs/aaaa-record-builder.d.ts} +0 -0
- /package/dist/{alias-targets.d.ts → commonjs/alias-targets.d.ts} +0 -0
- /package/dist/{caa-record-builder.d.ts → commonjs/caa-record-builder.d.ts} +0 -0
- /package/dist/{cname-record-builder.d.ts → commonjs/cname-record-builder.d.ts} +0 -0
- /package/dist/{ds-record-builder.d.ts → commonjs/ds-record-builder.d.ts} +0 -0
- /package/dist/{health-check-alarm-builder.d.ts → commonjs/health-check-alarm-builder.d.ts} +0 -0
- /package/dist/{health-check-alarm-config.d.ts → commonjs/health-check-alarm-config.d.ts} +0 -0
- /package/dist/{health-check-alarm-defaults.d.ts → commonjs/health-check-alarm-defaults.d.ts} +0 -0
- /package/dist/{health-check-alarms.d.ts → commonjs/health-check-alarms.d.ts} +0 -0
- /package/dist/{health-check-builder.d.ts → commonjs/health-check-builder.d.ts} +0 -0
- /package/dist/{https-record-builder.d.ts → commonjs/https-record-builder.d.ts} +0 -0
- /package/dist/{mx-record-builder.d.ts → commonjs/mx-record-builder.d.ts} +0 -0
- /package/dist/{ns-record-builder.d.ts → commonjs/ns-record-builder.d.ts} +0 -0
- /package/dist/{srv-record-builder.d.ts → commonjs/srv-record-builder.d.ts} +0 -0
- /package/dist/{svcb-record-builder.d.ts → commonjs/svcb-record-builder.d.ts} +0 -0
- /package/dist/{txt-record-builder.d.ts → commonjs/txt-record-builder.d.ts} +0 -0
- /package/dist/{zone → commonjs/zone}/index.d.ts +0 -0
- /package/dist/{zone → commonjs/zone}/zone-dsl.d.ts +0 -0
- /package/dist/{zone → commonjs/zone}/zone-records.d.ts +0 -0
- /package/dist/{a-record-builder.js → esm/a-record-builder.js} +0 -0
- /package/dist/{aaaa-record-builder.js → esm/aaaa-record-builder.js} +0 -0
- /package/dist/{alias-targets.js → esm/alias-targets.js} +0 -0
- /package/dist/{caa-record-builder.js → esm/caa-record-builder.js} +0 -0
- /package/dist/{cname-record-builder.js → esm/cname-record-builder.js} +0 -0
- /package/dist/{ds-record-builder.js → esm/ds-record-builder.js} +0 -0
- /package/dist/{health-check-alarm-builder.js → esm/health-check-alarm-builder.js} +0 -0
- /package/dist/{health-check-alarm-config.js → esm/health-check-alarm-config.js} +0 -0
- /package/dist/{health-check-alarm-defaults.js → esm/health-check-alarm-defaults.js} +0 -0
- /package/dist/{health-check-alarms.js → esm/health-check-alarms.js} +0 -0
- /package/dist/{health-check-builder.js → esm/health-check-builder.js} +0 -0
- /package/dist/{https-record-builder.js → esm/https-record-builder.js} +0 -0
- /package/dist/{mx-record-builder.js → esm/mx-record-builder.js} +0 -0
- /package/dist/{ns-record-builder.js → esm/ns-record-builder.js} +0 -0
- /package/dist/{srv-record-builder.js → esm/srv-record-builder.js} +0 -0
- /package/dist/{svcb-record-builder.js → esm/svcb-record-builder.js} +0 -0
- /package/dist/{txt-record-builder.js → esm/txt-record-builder.js} +0 -0
- /package/dist/{zone → esm/zone}/index.js +0 -0
- /package/dist/{zone → esm/zone}/zone-dsl.js +0 -0
- /package/dist/{zone → esm/zone}/zone-records.js +0 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APEX = void 0;
|
|
4
|
+
exports.A = A;
|
|
5
|
+
exports.AAAA = AAAA;
|
|
6
|
+
exports.CNAME = CNAME;
|
|
7
|
+
exports.TXT = TXT;
|
|
8
|
+
exports.MX = MX;
|
|
9
|
+
exports.SRV = SRV;
|
|
10
|
+
exports.CAA = CAA;
|
|
11
|
+
exports.CAA_ISSUE = CAA_ISSUE;
|
|
12
|
+
exports.CAA_ISSUEWILD = CAA_ISSUEWILD;
|
|
13
|
+
exports.CAA_IODEF = CAA_IODEF;
|
|
14
|
+
exports.NS = NS;
|
|
15
|
+
exports.DS = DS;
|
|
16
|
+
exports.HTTPS = HTTPS;
|
|
17
|
+
exports.SVCB = SVCB;
|
|
18
|
+
exports.ALIAS = ALIAS;
|
|
19
|
+
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
20
|
+
/**
|
|
21
|
+
* Sentinel name representing the zone apex (the zone-file `@`).
|
|
22
|
+
*
|
|
23
|
+
* Translated to an undefined CDK `recordName` when bound to a CDK construct.
|
|
24
|
+
*/
|
|
25
|
+
exports.APEX = "@";
|
|
26
|
+
const toArray = (x) => Array.isArray(x) ? x : [x];
|
|
27
|
+
/**
|
|
28
|
+
* IPv4 address record. Use {@link APEX} (`"@"`) as `name` for the zone apex.
|
|
29
|
+
*
|
|
30
|
+
* Multiple `A` calls for the same `name` are merged into a single CDK record
|
|
31
|
+
* set with all addresses; alternatively, pass an array as the second argument.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* A("@", "1.2.3.4")
|
|
36
|
+
* A("ha", ["1.2.3.4", "5.6.7.8"])
|
|
37
|
+
* A("www", "1.2.3.4", { ttl: Duration.minutes(10) })
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
function A(name, address, options = {}) {
|
|
41
|
+
return { type: "A", name, addresses: toArray(address), ...options };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* IPv6 address record. See {@link A} for the merging / array semantics — they
|
|
45
|
+
* are identical.
|
|
46
|
+
*/
|
|
47
|
+
function AAAA(name, address, options = {}) {
|
|
48
|
+
return { type: "AAAA", name, addresses: toArray(address), ...options };
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Canonical-name record. DNS forbids more than one CNAME per name, so a second
|
|
52
|
+
* `CNAME(name, …)` for the same name is a configuration error and is rejected
|
|
53
|
+
* when the records are bound to the zone.
|
|
54
|
+
*
|
|
55
|
+
* CNAMEs also cannot live at the zone apex — use an A/AAAA alias instead.
|
|
56
|
+
*
|
|
57
|
+
* Targets containing dots should be fully qualified (trailing `.`).
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```ts
|
|
61
|
+
* CNAME("dkim1", "dkim1.39769.dkim.example.")
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
function CNAME(name, target, options = {}) {
|
|
65
|
+
return { type: "CNAME", name, target, ...options };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Text record. Pass a single string or an array of strings; multiple `TXT`
|
|
69
|
+
* calls for the same `name` are merged into one CDK record set.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* TXT("@", "v=spf1 mx -all")
|
|
74
|
+
* TXT("_dmarc", "v=DMARC1; p=none;")
|
|
75
|
+
* TXT("multi", ["one", "two"])
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
function TXT(name, value, options = {}) {
|
|
79
|
+
return { type: "TXT", name, values: toArray(value), ...options };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Mail-exchanger record. The argument order matches BIND zone files
|
|
83
|
+
* (`name priority target`); multiple `MX(name, …)` calls for the same name are
|
|
84
|
+
* merged into one CDK record set with all `(priority, hostName)` pairs.
|
|
85
|
+
*
|
|
86
|
+
* Targets containing dots should be fully qualified (trailing `.`).
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* MX("@", 10, "mail.example.com.")
|
|
91
|
+
* MX("@", 20, "backup.example.com.")
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
94
|
+
function MX(name, priority, hostName, options = {}) {
|
|
95
|
+
return { type: "MX", name, values: [{ priority, hostName }], ...options };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Service-locator record. The argument order matches BIND zone files
|
|
99
|
+
* (`name priority weight port target`); multiple `SRV(name, …)` calls for the
|
|
100
|
+
* same name are merged into one CDK record set.
|
|
101
|
+
*
|
|
102
|
+
* Record names typically follow the `_service._proto` convention (e.g.
|
|
103
|
+
* `_sip._tcp`). Lower priority wins; weight distributes load across peers.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* SRV("_sip._tcp", 10, 60, 5060, "sip1.example.com.")
|
|
108
|
+
* SRV("_sip._tcp", 10, 40, 5060, "sip2.example.com.")
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
function SRV(name, priority, weight, port, hostName, options = {}) {
|
|
112
|
+
return { type: "SRV", name, values: [{ priority, weight, port, hostName }], ...options };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Certification-authority authorization record. Argument order matches BIND
|
|
116
|
+
* zone files (`name flag tag value`); multiple `CAA(name, …)` calls for the
|
|
117
|
+
* same name are merged into one CDK record set.
|
|
118
|
+
*
|
|
119
|
+
* For the common cases, prefer {@link CAA_ISSUE}, {@link CAA_ISSUEWILD}, or
|
|
120
|
+
* {@link CAA_IODEF}.
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```ts
|
|
124
|
+
* CAA("@", 0, CaaTag.ISSUE, "amazon.com")
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
function CAA(name, flag, tag, value, options = {}) {
|
|
128
|
+
return { type: "CAA", name, values: [{ flag, tag, value }], ...options };
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* CAA `issue` record — authorizes a specific certificate authority to issue
|
|
132
|
+
* certificates for the name. Merges with other CAA records at the same name.
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```ts
|
|
136
|
+
* CAA_ISSUE("@", "amazon.com")
|
|
137
|
+
* CAA_ISSUE("@", "amazontrust.com")
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
function CAA_ISSUE(name, authority, options = {}) {
|
|
141
|
+
return CAA(name, 0, aws_route53_1.CaaTag.ISSUE, authority, options);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* CAA `issuewild` record — authorizes a specific CA to issue wildcard
|
|
145
|
+
* certificates for the name. Merges with other CAA records at the same name.
|
|
146
|
+
*/
|
|
147
|
+
function CAA_ISSUEWILD(name, authority, options = {}) {
|
|
148
|
+
return CAA(name, 0, aws_route53_1.CaaTag.ISSUEWILD, authority, options);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* CAA `iodef` record — reports policy violations to a URL. Merges with other
|
|
152
|
+
* CAA records at the same name.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```ts
|
|
156
|
+
* CAA_IODEF("@", "mailto:security@example.com")
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
function CAA_IODEF(name, url, options = {}) {
|
|
160
|
+
return CAA(name, 0, aws_route53_1.CaaTag.IODEF, url, options);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Name-server delegation record. Delegates a subdomain to the supplied name
|
|
164
|
+
* servers. NS records cannot live at the zone apex — the apex NS set is
|
|
165
|
+
* managed by Route 53 itself.
|
|
166
|
+
*
|
|
167
|
+
* Multiple `NS(name, …)` calls for the same name are merged; alternatively,
|
|
168
|
+
* pass an array of host names.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```ts
|
|
172
|
+
* NS("internal", ["ns-1.awsdns-00.co.uk.", "ns-2.awsdns-00.com."])
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
function NS(name, hostName, options = {}) {
|
|
176
|
+
return { type: "NS", name, values: toArray(hostName), ...options };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* DNSSEC delegation-signer record. Each value is a full rdata string
|
|
180
|
+
* (`keyTag algorithm digestType digest`). Multiple `DS(name, …)` calls for the
|
|
181
|
+
* same name are merged.
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```ts
|
|
185
|
+
* DS("secure", "60485 5 1 2BB183AF5F22588179A53B0A98631FAD1A292118")
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
function DS(name, rdata, options = {}) {
|
|
189
|
+
return { type: "DS", name, values: toArray(rdata), ...options };
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* HTTPS service-binding record (RFC 9460). Accepts pre-constructed
|
|
193
|
+
* {@link HttpsRecordValue} instances from the CDK. For alias-mode HTTPS
|
|
194
|
+
* records (typically pointing at a CloudFront distribution), use
|
|
195
|
+
* `createHttpsRecordBuilder` directly — the DSL supports value-mode only.
|
|
196
|
+
*
|
|
197
|
+
* Multiple `HTTPS(name, …)` calls for the same name are merged.
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```ts
|
|
201
|
+
* HTTPS("@", HttpsRecordValue.service({ alpn: [Alpn.H3, Alpn.H2] }))
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
function HTTPS(name, value, options = {}) {
|
|
205
|
+
return { type: "HTTPS", name, values: toArray(value), ...options };
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Generic service-binding record (RFC 9460). For HTTPS specifically, prefer
|
|
209
|
+
* {@link HTTPS} — most clients only consult HTTPS records for web traffic.
|
|
210
|
+
*
|
|
211
|
+
* Multiple `SVCB(name, …)` calls for the same name are merged.
|
|
212
|
+
*/
|
|
213
|
+
function SVCB(name, value, options = {}) {
|
|
214
|
+
return { type: "SVCB", name, values: toArray(value), ...options };
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Route 53 alias record — compiles to an A record (or AAAA when
|
|
218
|
+
* `options.ipv6` is `true`) whose target is an `aliasTarget` rather than a
|
|
219
|
+
* list of IP addresses. Use {@link APEX} (`"@"`) as `name` for the zone apex.
|
|
220
|
+
*
|
|
221
|
+
* Pair with the alias-target helpers in `@composurecdk/route53` —
|
|
222
|
+
* `cloudfrontAliasTarget`, `apiGatewayAliasTarget`, or
|
|
223
|
+
* `apiGatewayDomainAliasTarget` — which return `Resolvable<RecordTarget>`.
|
|
224
|
+
*
|
|
225
|
+
* Because DNS permits only one record set per `(type, name)`, an `ALIAS`
|
|
226
|
+
* cannot coexist with address-mode `A`/`AAAA` at the same name, and two
|
|
227
|
+
* `ALIAS` calls for the same `(type, name)` are a configuration error. Both
|
|
228
|
+
* cases are rejected at build time.
|
|
229
|
+
*
|
|
230
|
+
* TTL defaults do not apply to alias records — AWS ignores TTL on aliases and
|
|
231
|
+
* CDK warns if one is set — so the underlying builder suppresses them.
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```ts
|
|
235
|
+
* ALIAS("@", cloudfrontAliasTarget(
|
|
236
|
+
* ref<DistributionBuilderResult>("cdn").get("distribution"),
|
|
237
|
+
* ))
|
|
238
|
+
* ALIAS("@", cloudfrontAliasTarget(
|
|
239
|
+
* ref<DistributionBuilderResult>("cdn").get("distribution"),
|
|
240
|
+
* ), { ipv6: true })
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
function ALIAS(name, target, options = {}) {
|
|
244
|
+
const { ipv6 = false, ...rest } = options;
|
|
245
|
+
return { type: "ALIAS", name, target, ipv6, ...rest };
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=zone-dsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zone-dsl.js","sourceRoot":"","sources":["../../../src/zone/zone-dsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zone-records.d.ts","sourceRoot":"","sources":["../../../src/zone/zone-records.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAe,KAAK,SAAS,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,KAAK,uBAAuB,EAA2B,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,oBAAoB,EAAwB,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,sBAAsB,EAA0B,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,qBAAqB,EAAyB,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,qBAAqB,EAAyB,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,KAAK,qBAAqB,EAAyB,MAAM,yBAAyB,CAAC;AAC5F,OAAO,EAAE,KAAK,sBAAsB,EAA0B,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,KAAK,uBAAuB,EAA2B,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,KAAK,sBAAsB,EAA0B,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAYL,KAAK,UAAU,EAIhB,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACzD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACxD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAoB,SAAQ,SAAS,CAAC,wBAAwB,CAAC;IAC9E;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,mBAAmB,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,GAAG,mBAAmB,CAE7E"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.zoneRecords = zoneRecords;
|
|
4
|
+
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
6
|
+
const core_1 = require("@composurecdk/core");
|
|
7
|
+
const aaaa_record_builder_js_1 = require("../aaaa-record-builder.js");
|
|
8
|
+
const a_record_builder_js_1 = require("../a-record-builder.js");
|
|
9
|
+
const caa_record_builder_js_1 = require("../caa-record-builder.js");
|
|
10
|
+
const cname_record_builder_js_1 = require("../cname-record-builder.js");
|
|
11
|
+
const ds_record_builder_js_1 = require("../ds-record-builder.js");
|
|
12
|
+
const https_record_builder_js_1 = require("../https-record-builder.js");
|
|
13
|
+
const mx_record_builder_js_1 = require("../mx-record-builder.js");
|
|
14
|
+
const ns_record_builder_js_1 = require("../ns-record-builder.js");
|
|
15
|
+
const srv_record_builder_js_1 = require("../srv-record-builder.js");
|
|
16
|
+
const svcb_record_builder_js_1 = require("../svcb-record-builder.js");
|
|
17
|
+
const txt_record_builder_js_1 = require("../txt-record-builder.js");
|
|
18
|
+
const zone_dsl_js_1 = require("./zone-dsl.js");
|
|
19
|
+
/**
|
|
20
|
+
* Creates a single compose component that emits every record in `specs`.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* compose(
|
|
25
|
+
* {
|
|
26
|
+
* zone: createHostedZoneBuilder().zoneName("example.com"),
|
|
27
|
+
* records: zoneRecords([
|
|
28
|
+
* A("@", "1.2.3.4"),
|
|
29
|
+
* MX("@", 10, "mail.example.com."),
|
|
30
|
+
* ]).zone(ref<HostedZoneBuilderResult>("zone").get("hostedZone")),
|
|
31
|
+
* },
|
|
32
|
+
* { zone: [], records: ["zone"] },
|
|
33
|
+
* ).build(stack, "DNS");
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
function zoneRecords(specs) {
|
|
37
|
+
return new ZoneRecordsBuilder(specs);
|
|
38
|
+
}
|
|
39
|
+
class ZoneRecordsBuilder {
|
|
40
|
+
#zone;
|
|
41
|
+
#specs;
|
|
42
|
+
constructor(specs) {
|
|
43
|
+
this.#specs = specs;
|
|
44
|
+
}
|
|
45
|
+
zone(zone) {
|
|
46
|
+
this.#zone = zone;
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
build(scope, id, context) {
|
|
50
|
+
if (!this.#zone) {
|
|
51
|
+
throw new Error(`zoneRecords "${id}" requires a zone. Call .zone() with an IHostedZone.`);
|
|
52
|
+
}
|
|
53
|
+
validateSpecs(this.#specs);
|
|
54
|
+
const zone = (0, core_1.resolve)(this.#zone, context ?? {});
|
|
55
|
+
const result = {
|
|
56
|
+
a: {},
|
|
57
|
+
aaaa: {},
|
|
58
|
+
cname: {},
|
|
59
|
+
txt: {},
|
|
60
|
+
mx: {},
|
|
61
|
+
srv: {},
|
|
62
|
+
caa: {},
|
|
63
|
+
ns: {},
|
|
64
|
+
ds: {},
|
|
65
|
+
https: {},
|
|
66
|
+
svcb: {},
|
|
67
|
+
};
|
|
68
|
+
const root = new constructs_1.Construct(scope, id);
|
|
69
|
+
const subScopes = new Map();
|
|
70
|
+
const subScope = (bucket) => {
|
|
71
|
+
let s = subScopes.get(bucket);
|
|
72
|
+
if (!s) {
|
|
73
|
+
s = new constructs_1.Construct(root, bucket);
|
|
74
|
+
subScopes.set(bucket, s);
|
|
75
|
+
}
|
|
76
|
+
return s;
|
|
77
|
+
};
|
|
78
|
+
for (const group of groupRecords(this.#specs)) {
|
|
79
|
+
const head = group[0];
|
|
80
|
+
// Use the APEX sentinel ("@") as the result-map key, but a readable
|
|
81
|
+
// "Apex" as the construct id so the synthesised logical ID keeps a
|
|
82
|
+
// human-visible marker. ("@" sanitises to empty and produces opaque
|
|
83
|
+
// logical IDs like `DNSrecordsa85669662`.) CDK's duplicate-id check
|
|
84
|
+
// catches the rare case of a user-supplied label also spelled "Apex".
|
|
85
|
+
const key = head.name;
|
|
86
|
+
const childId = key === zone_dsl_js_1.APEX ? "Apex" : (0, core_1.constructId)(key);
|
|
87
|
+
switch (head.type) {
|
|
88
|
+
case "A":
|
|
89
|
+
result.a[key] = buildA(subScope("a"), childId, group, zone, context);
|
|
90
|
+
break;
|
|
91
|
+
case "AAAA":
|
|
92
|
+
result.aaaa[key] = buildAaaa(subScope("aaaa"), childId, group, zone, context);
|
|
93
|
+
break;
|
|
94
|
+
case "CNAME":
|
|
95
|
+
result.cname[key] = buildCname(subScope("cname"), childId, group, zone, context);
|
|
96
|
+
break;
|
|
97
|
+
case "TXT":
|
|
98
|
+
result.txt[key] = buildTxt(subScope("txt"), childId, group, zone, context);
|
|
99
|
+
break;
|
|
100
|
+
case "MX":
|
|
101
|
+
result.mx[key] = buildMx(subScope("mx"), childId, group, zone, context);
|
|
102
|
+
break;
|
|
103
|
+
case "SRV":
|
|
104
|
+
result.srv[key] = buildSrv(subScope("srv"), childId, group, zone, context);
|
|
105
|
+
break;
|
|
106
|
+
case "CAA":
|
|
107
|
+
result.caa[key] = buildCaa(subScope("caa"), childId, group, zone, context);
|
|
108
|
+
break;
|
|
109
|
+
case "NS":
|
|
110
|
+
result.ns[key] = buildNs(subScope("ns"), childId, group, zone, context);
|
|
111
|
+
break;
|
|
112
|
+
case "DS":
|
|
113
|
+
result.ds[key] = buildDs(subScope("ds"), childId, group, zone, context);
|
|
114
|
+
break;
|
|
115
|
+
case "HTTPS":
|
|
116
|
+
result.https[key] = buildHttps(subScope("https"), childId, group, zone, context);
|
|
117
|
+
break;
|
|
118
|
+
case "SVCB":
|
|
119
|
+
result.svcb[key] = buildSvcb(subScope("svcb"), childId, group, zone, context);
|
|
120
|
+
break;
|
|
121
|
+
case "ALIAS": {
|
|
122
|
+
const aliasGroup = group;
|
|
123
|
+
if (aliasGroup.length > 1) {
|
|
124
|
+
throw new Error(`ALIAS for "${head.name}" (${head.ipv6 ? "AAAA" : "A"}) declared ` +
|
|
125
|
+
`${String(aliasGroup.length)} times. ` +
|
|
126
|
+
`DNS allows only one alias record per (type, name).`);
|
|
127
|
+
}
|
|
128
|
+
const spec = aliasGroup[0];
|
|
129
|
+
if (spec.ipv6) {
|
|
130
|
+
result.aaaa[key] = buildAliasAaaa(subScope("aaaa"), childId, spec, zone, context);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
result.a[key] = buildAliasA(subScope("a"), childId, spec, zone, context);
|
|
134
|
+
}
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
default: {
|
|
138
|
+
const _exhaustive = head;
|
|
139
|
+
throw new Error(`Unhandled record type: ${_exhaustive.type}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/** CDK-style record-name convention: apex is `undefined`. */
|
|
147
|
+
const sub = (name) => (name === zone_dsl_js_1.APEX ? undefined : name);
|
|
148
|
+
/** Preserve insertion order while dropping duplicates. */
|
|
149
|
+
const dedupe = (xs) => [...new Set(xs)];
|
|
150
|
+
function validateSpecs(specs) {
|
|
151
|
+
const aliasNames = { a: new Set(), aaaa: new Set() };
|
|
152
|
+
for (const spec of specs) {
|
|
153
|
+
if (spec.type === "ALIAS") {
|
|
154
|
+
const bucket = spec.ipv6 ? aliasNames.aaaa : aliasNames.a;
|
|
155
|
+
bucket.add(spec.name);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
for (const spec of specs) {
|
|
159
|
+
switch (spec.type) {
|
|
160
|
+
case "A":
|
|
161
|
+
if (spec.addresses.length === 0) {
|
|
162
|
+
throw new Error(`${spec.type}("${spec.name}") must supply at least one address.`);
|
|
163
|
+
}
|
|
164
|
+
if (aliasNames.a.has(spec.name)) {
|
|
165
|
+
throw new Error(`A("${spec.name}") cannot coexist with ALIAS("${spec.name}"). ` +
|
|
166
|
+
`DNS allows only one record set per (type, name).`);
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
case "AAAA":
|
|
170
|
+
if (spec.addresses.length === 0) {
|
|
171
|
+
throw new Error(`${spec.type}("${spec.name}") must supply at least one address.`);
|
|
172
|
+
}
|
|
173
|
+
if (aliasNames.aaaa.has(spec.name)) {
|
|
174
|
+
throw new Error(`AAAA("${spec.name}") cannot coexist with ALIAS("${spec.name}", { ipv6: true }). ` +
|
|
175
|
+
`DNS allows only one record set per (type, name).`);
|
|
176
|
+
}
|
|
177
|
+
break;
|
|
178
|
+
case "TXT":
|
|
179
|
+
case "MX":
|
|
180
|
+
case "SRV":
|
|
181
|
+
case "CAA":
|
|
182
|
+
case "NS":
|
|
183
|
+
case "DS":
|
|
184
|
+
case "HTTPS":
|
|
185
|
+
case "SVCB":
|
|
186
|
+
if (spec.values.length === 0) {
|
|
187
|
+
throw new Error(`${spec.type}("${spec.name}") must supply at least one value.`);
|
|
188
|
+
}
|
|
189
|
+
break;
|
|
190
|
+
case "CNAME":
|
|
191
|
+
case "ALIAS":
|
|
192
|
+
// CNAME carries a single `target` string; the DSL factory cannot
|
|
193
|
+
// produce an empty one. ALIAS carries a single target value and is
|
|
194
|
+
// checked for duplicates during grouping.
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Group records by `(type, name)`, preserving the insertion order of groups.
|
|
201
|
+
* `ALIAS` specs are split further by `ipv6` so an A-alias and an AAAA-alias at
|
|
202
|
+
* the same name land in separate groups (they emit distinct record types).
|
|
203
|
+
*/
|
|
204
|
+
function groupRecords(specs) {
|
|
205
|
+
const groups = new Map();
|
|
206
|
+
for (const s of specs) {
|
|
207
|
+
const k = s.type === "ALIAS" ? `ALIAS/${s.ipv6 ? "6" : "4"}/${s.name}` : `${s.type}/${s.name}`;
|
|
208
|
+
const existing = groups.get(k);
|
|
209
|
+
if (existing)
|
|
210
|
+
existing.push(s);
|
|
211
|
+
else
|
|
212
|
+
groups.set(k, [s]);
|
|
213
|
+
}
|
|
214
|
+
return [...groups.values()];
|
|
215
|
+
}
|
|
216
|
+
/** First non-undefined value of `field` across the group, or `undefined`. */
|
|
217
|
+
function pickOption(group, field) {
|
|
218
|
+
for (const s of group)
|
|
219
|
+
if (s[field] !== undefined)
|
|
220
|
+
return s[field];
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
function applyCommon(builder, specs, name) {
|
|
224
|
+
let b = builder;
|
|
225
|
+
if (name)
|
|
226
|
+
b = b.recordName(name);
|
|
227
|
+
const ttl = pickOption(specs, "ttl");
|
|
228
|
+
if (ttl)
|
|
229
|
+
b = b.ttl(ttl);
|
|
230
|
+
const comment = pickOption(specs, "comment");
|
|
231
|
+
if (comment)
|
|
232
|
+
b = b.comment(comment);
|
|
233
|
+
return b;
|
|
234
|
+
}
|
|
235
|
+
function buildA(scope, id, specs, zone, context) {
|
|
236
|
+
const addresses = dedupe(specs.flatMap((s) => [...s.addresses]));
|
|
237
|
+
const b = applyCommon((0, a_record_builder_js_1.createARecordBuilder)()
|
|
238
|
+
.zone(zone)
|
|
239
|
+
.target(aws_route53_1.RecordTarget.fromIpAddresses(...addresses)), specs, sub(specs[0].name));
|
|
240
|
+
return b.build(scope, id, context);
|
|
241
|
+
}
|
|
242
|
+
function buildAaaa(scope, id, specs, zone, context) {
|
|
243
|
+
const addresses = dedupe(specs.flatMap((s) => [...s.addresses]));
|
|
244
|
+
const b = applyCommon((0, aaaa_record_builder_js_1.createAaaaRecordBuilder)()
|
|
245
|
+
.zone(zone)
|
|
246
|
+
.target(aws_route53_1.RecordTarget.fromIpAddresses(...addresses)), specs, sub(specs[0].name));
|
|
247
|
+
return b.build(scope, id, context);
|
|
248
|
+
}
|
|
249
|
+
function buildCname(scope, id, specs, zone, context) {
|
|
250
|
+
if (specs.length > 1) {
|
|
251
|
+
throw new Error(`CNAME for "${specs[0].name}" declared ${String(specs.length)} times. ` +
|
|
252
|
+
`DNS allows at most one CNAME per name.`);
|
|
253
|
+
}
|
|
254
|
+
const [spec] = specs;
|
|
255
|
+
const name = sub(spec.name);
|
|
256
|
+
if (!name)
|
|
257
|
+
throw new Error("CNAME records cannot live at the zone apex.");
|
|
258
|
+
let b = (0, cname_record_builder_js_1.createCnameRecordBuilder)().zone(zone).recordName(name).domainName(spec.target);
|
|
259
|
+
if (spec.ttl)
|
|
260
|
+
b = b.ttl(spec.ttl);
|
|
261
|
+
if (spec.comment)
|
|
262
|
+
b = b.comment(spec.comment);
|
|
263
|
+
return b.build(scope, id, context);
|
|
264
|
+
}
|
|
265
|
+
function buildTxt(scope, id, specs, zone, context) {
|
|
266
|
+
const values = dedupe(specs.flatMap((s) => [...s.values]));
|
|
267
|
+
const b = applyCommon((0, txt_record_builder_js_1.createTxtRecordBuilder)().zone(zone).values(values), specs, sub(specs[0].name));
|
|
268
|
+
return b.build(scope, id, context);
|
|
269
|
+
}
|
|
270
|
+
function buildMx(scope, id, specs, zone, context) {
|
|
271
|
+
const values = specs.flatMap((s) => s.values.map((v) => ({ priority: v.priority, hostName: v.hostName })));
|
|
272
|
+
const b = applyCommon((0, mx_record_builder_js_1.createMxRecordBuilder)().zone(zone).values(values), specs, sub(specs[0].name));
|
|
273
|
+
return b.build(scope, id, context);
|
|
274
|
+
}
|
|
275
|
+
function buildSrv(scope, id, specs, zone, context) {
|
|
276
|
+
const values = specs.flatMap((s) => s.values.map((v) => ({
|
|
277
|
+
priority: v.priority,
|
|
278
|
+
weight: v.weight,
|
|
279
|
+
port: v.port,
|
|
280
|
+
hostName: v.hostName,
|
|
281
|
+
})));
|
|
282
|
+
const b = applyCommon((0, srv_record_builder_js_1.createSrvRecordBuilder)().zone(zone).values(values), specs, sub(specs[0].name));
|
|
283
|
+
return b.build(scope, id, context);
|
|
284
|
+
}
|
|
285
|
+
function buildCaa(scope, id, specs, zone, context) {
|
|
286
|
+
const values = specs.flatMap((s) => s.values.map((v) => ({ flag: v.flag, tag: v.tag, value: v.value })));
|
|
287
|
+
const b = applyCommon((0, caa_record_builder_js_1.createCaaRecordBuilder)().zone(zone).values(values), specs, sub(specs[0].name));
|
|
288
|
+
return b.build(scope, id, context);
|
|
289
|
+
}
|
|
290
|
+
function buildNs(scope, id, specs, zone, context) {
|
|
291
|
+
const name = sub(specs[0].name);
|
|
292
|
+
if (!name) {
|
|
293
|
+
throw new Error(`NS records cannot live at the zone apex. The apex NS set is managed by Route 53.`);
|
|
294
|
+
}
|
|
295
|
+
const values = dedupe(specs.flatMap((s) => [...s.values]));
|
|
296
|
+
const b = applyCommon((0, ns_record_builder_js_1.createNsRecordBuilder)().zone(zone).values(values), specs, name);
|
|
297
|
+
return b.build(scope, id, context);
|
|
298
|
+
}
|
|
299
|
+
function buildDs(scope, id, specs, zone, context) {
|
|
300
|
+
const values = dedupe(specs.flatMap((s) => [...s.values]));
|
|
301
|
+
const b = applyCommon((0, ds_record_builder_js_1.createDsRecordBuilder)().zone(zone).values(values), specs, sub(specs[0].name));
|
|
302
|
+
return b.build(scope, id, context);
|
|
303
|
+
}
|
|
304
|
+
function buildHttps(scope, id, specs, zone, context) {
|
|
305
|
+
const values = specs.flatMap((s) => [...s.values]);
|
|
306
|
+
const b = applyCommon((0, https_record_builder_js_1.createHttpsRecordBuilder)().zone(zone).values(values), specs, sub(specs[0].name));
|
|
307
|
+
return b.build(scope, id, context);
|
|
308
|
+
}
|
|
309
|
+
function buildSvcb(scope, id, specs, zone, context) {
|
|
310
|
+
const values = specs.flatMap((s) => [...s.values]);
|
|
311
|
+
const b = applyCommon((0, svcb_record_builder_js_1.createSvcbRecordBuilder)().zone(zone).values(values), specs, sub(specs[0].name));
|
|
312
|
+
return b.build(scope, id, context);
|
|
313
|
+
}
|
|
314
|
+
function buildAliasA(scope, id, spec, zone, context) {
|
|
315
|
+
const b = applyCommon((0, a_record_builder_js_1.createARecordBuilder)().zone(zone).target(spec.target), [spec], sub(spec.name));
|
|
316
|
+
return b.build(scope, id, context);
|
|
317
|
+
}
|
|
318
|
+
function buildAliasAaaa(scope, id, spec, zone, context) {
|
|
319
|
+
const b = applyCommon((0, aaaa_record_builder_js_1.createAaaaRecordBuilder)().zone(zone).target(spec.target), [spec], sub(spec.name));
|
|
320
|
+
return b.build(scope, id, context);
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=zone-records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zone-records.js","sourceRoot":"","sources":["../../../src/zone/zone-records.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ARecord, type ARecordProps, type IHostedZone, type RecordTarget } from "aws-cdk-lib/aws-route53";
|
|
2
|
+
import { type IConstruct } from "constructs";
|
|
3
|
+
import { type IBuilder, type Lifecycle, type Resolvable } from "@composurecdk/core";
|
|
4
|
+
/**
|
|
5
|
+
* Configuration properties for the Route53 A record builder.
|
|
6
|
+
*
|
|
7
|
+
* Extends the CDK {@link ARecordProps} but replaces `zone` and `target` with
|
|
8
|
+
* {@link Resolvable} variants so they can be wired from other components in a
|
|
9
|
+
* composed system via {@link ref}.
|
|
10
|
+
*/
|
|
11
|
+
export interface ARecordBuilderProps extends Omit<ARecordProps, "zone" | "target"> {
|
|
12
|
+
/**
|
|
13
|
+
* The hosted zone in which to create the record. Accepts a {@link Resolvable}
|
|
14
|
+
* so a zone produced by a composed {@link createHostedZoneBuilder} can be
|
|
15
|
+
* wired in via {@link ref}.
|
|
16
|
+
*/
|
|
17
|
+
zone?: Resolvable<IHostedZone>;
|
|
18
|
+
/**
|
|
19
|
+
* The record target. Accepts a {@link Resolvable} so alias targets derived
|
|
20
|
+
* from composed components (e.g. a CloudFront distribution) can be wired in
|
|
21
|
+
* via {@link ref} or the helpers in `./alias-targets.js`.
|
|
22
|
+
*/
|
|
23
|
+
target?: Resolvable<RecordTarget>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The build output of an {@link IARecordBuilder}.
|
|
27
|
+
*/
|
|
28
|
+
export interface ARecordBuilderResult {
|
|
29
|
+
/** The Route53 A record construct created by the builder. */
|
|
30
|
+
record: ARecord;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A fluent builder for configuring and creating a Route53 A record (typically
|
|
34
|
+
* an alias record pointing at a CloudFront distribution, ALB, API Gateway
|
|
35
|
+
* custom domain, or another A-record-capable target).
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const apex = createARecordBuilder()
|
|
40
|
+
* .zone(ref("zone", (r: HostedZoneBuilderResult) => r.hostedZone))
|
|
41
|
+
* .target(cloudfrontAliasTarget(ref("cdn", (r: DistributionBuilderResult) => r.distribution)));
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export type IARecordBuilder = IBuilder<ARecordBuilderProps, ARecordBuilder>;
|
|
45
|
+
declare class ARecordBuilder implements Lifecycle<ARecordBuilderResult> {
|
|
46
|
+
props: Partial<ARecordBuilderProps>;
|
|
47
|
+
build(scope: IConstruct, id: string, context?: Record<string, object>): ARecordBuilderResult;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Creates a new {@link IARecordBuilder} for configuring a Route53 A record.
|
|
51
|
+
*
|
|
52
|
+
* @returns A fluent builder for a Route53 A record.
|
|
53
|
+
*/
|
|
54
|
+
export declare function createARecordBuilder(): IARecordBuilder;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=a-record-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a-record-builder.d.ts","sourceRoot":"","sources":["../../src/a-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;GAMG;AACH,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC;IAChF;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAE/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;AAE5E,cAAM,cAAe,YAAW,SAAS,CAAC,oBAAoB,CAAC;IAC7D,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAM;IAEzC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,oBAAoB;CAuB7F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAGtD"}
|