@composurecdk/route53 0.7.0 → 0.8.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 (242) hide show
  1. package/README.md +54 -4
  2. package/dist/commonjs/a-record-builder.d.ts.map +1 -0
  3. package/dist/commonjs/a-record-builder.js +38 -0
  4. package/dist/commonjs/a-record-builder.js.map +1 -0
  5. package/dist/commonjs/aaaa-record-builder.d.ts.map +1 -0
  6. package/dist/commonjs/aaaa-record-builder.js +39 -0
  7. package/dist/commonjs/aaaa-record-builder.js.map +1 -0
  8. package/dist/commonjs/alias-targets.d.ts.map +1 -0
  9. package/dist/commonjs/alias-targets.js +50 -0
  10. package/dist/commonjs/alias-targets.js.map +1 -0
  11. package/dist/commonjs/caa-record-builder.d.ts.map +1 -0
  12. package/dist/commonjs/caa-record-builder.js +37 -0
  13. package/dist/commonjs/caa-record-builder.js.map +1 -0
  14. package/dist/commonjs/cname-record-builder.d.ts.map +1 -0
  15. package/dist/commonjs/cname-record-builder.js +43 -0
  16. package/dist/commonjs/cname-record-builder.js.map +1 -0
  17. package/dist/{defaults.d.ts → commonjs/defaults.d.ts} +30 -4
  18. package/dist/commonjs/defaults.d.ts.map +1 -0
  19. package/dist/commonjs/defaults.js +159 -0
  20. package/dist/commonjs/defaults.js.map +1 -0
  21. package/dist/commonjs/ds-record-builder.d.ts.map +1 -0
  22. package/dist/commonjs/ds-record-builder.js +37 -0
  23. package/dist/commonjs/ds-record-builder.js.map +1 -0
  24. package/dist/commonjs/health-check-alarm-builder.d.ts.map +1 -0
  25. package/dist/commonjs/health-check-alarm-builder.js +136 -0
  26. package/dist/commonjs/health-check-alarm-builder.js.map +1 -0
  27. package/dist/commonjs/health-check-alarm-config.d.ts.map +1 -0
  28. package/dist/commonjs/health-check-alarm-config.js +3 -0
  29. package/dist/commonjs/health-check-alarm-config.js.map +1 -0
  30. package/dist/commonjs/health-check-alarm-defaults.d.ts.map +1 -0
  31. package/dist/commonjs/health-check-alarm-defaults.js +29 -0
  32. package/dist/commonjs/health-check-alarm-defaults.js.map +1 -0
  33. package/dist/commonjs/health-check-alarms.d.ts.map +1 -0
  34. package/dist/commonjs/health-check-alarms.js +45 -0
  35. package/dist/commonjs/health-check-alarms.js.map +1 -0
  36. package/dist/commonjs/health-check-builder.d.ts.map +1 -0
  37. package/dist/commonjs/health-check-builder.js +56 -0
  38. package/dist/commonjs/health-check-builder.js.map +1 -0
  39. package/dist/{hosted-zone-builder.d.ts → commonjs/hosted-zone-builder.d.ts} +26 -7
  40. package/dist/commonjs/hosted-zone-builder.d.ts.map +1 -0
  41. package/dist/commonjs/hosted-zone-builder.js +60 -0
  42. package/dist/commonjs/hosted-zone-builder.js.map +1 -0
  43. package/dist/commonjs/https-record-builder.d.ts.map +1 -0
  44. package/dist/commonjs/https-record-builder.js +45 -0
  45. package/dist/commonjs/https-record-builder.js.map +1 -0
  46. package/dist/{index.d.ts → commonjs/index.d.ts} +2 -1
  47. package/dist/commonjs/index.d.ts.map +1 -0
  48. package/dist/commonjs/index.js +54 -0
  49. package/dist/commonjs/index.js.map +1 -0
  50. package/dist/commonjs/mx-record-builder.d.ts.map +1 -0
  51. package/dist/commonjs/mx-record-builder.js +37 -0
  52. package/dist/commonjs/mx-record-builder.js.map +1 -0
  53. package/dist/commonjs/ns-record-builder.d.ts.map +1 -0
  54. package/dist/commonjs/ns-record-builder.js +42 -0
  55. package/dist/commonjs/ns-record-builder.js.map +1 -0
  56. package/dist/commonjs/package.json +3 -0
  57. package/dist/commonjs/query-logging.d.ts +60 -0
  58. package/dist/commonjs/query-logging.d.ts.map +1 -0
  59. package/dist/commonjs/query-logging.js +136 -0
  60. package/dist/commonjs/query-logging.js.map +1 -0
  61. package/dist/commonjs/srv-record-builder.d.ts.map +1 -0
  62. package/dist/commonjs/srv-record-builder.js +37 -0
  63. package/dist/commonjs/srv-record-builder.js.map +1 -0
  64. package/dist/commonjs/svcb-record-builder.d.ts.map +1 -0
  65. package/dist/commonjs/svcb-record-builder.js +38 -0
  66. package/dist/commonjs/svcb-record-builder.js.map +1 -0
  67. package/dist/commonjs/txt-record-builder.d.ts.map +1 -0
  68. package/dist/commonjs/txt-record-builder.js +37 -0
  69. package/dist/commonjs/txt-record-builder.js.map +1 -0
  70. package/dist/commonjs/zone/index.d.ts.map +1 -0
  71. package/dist/commonjs/zone/index.js +23 -0
  72. package/dist/commonjs/zone/index.js.map +1 -0
  73. package/dist/commonjs/zone/zone-dsl.d.ts.map +1 -0
  74. package/dist/commonjs/zone/zone-dsl.js +247 -0
  75. package/dist/commonjs/zone/zone-dsl.js.map +1 -0
  76. package/dist/commonjs/zone/zone-records.d.ts.map +1 -0
  77. package/dist/commonjs/zone/zone-records.js +322 -0
  78. package/dist/commonjs/zone/zone-records.js.map +1 -0
  79. package/dist/esm/a-record-builder.d.ts +56 -0
  80. package/dist/esm/a-record-builder.d.ts.map +1 -0
  81. package/dist/esm/a-record-builder.js.map +1 -0
  82. package/dist/esm/aaaa-record-builder.d.ts +44 -0
  83. package/dist/esm/aaaa-record-builder.d.ts.map +1 -0
  84. package/dist/esm/aaaa-record-builder.js.map +1 -0
  85. package/dist/esm/alias-targets.d.ts +34 -0
  86. package/dist/esm/alias-targets.d.ts.map +1 -0
  87. package/dist/esm/alias-targets.js.map +1 -0
  88. package/dist/esm/caa-record-builder.d.ts +44 -0
  89. package/dist/esm/caa-record-builder.d.ts.map +1 -0
  90. package/dist/esm/caa-record-builder.js.map +1 -0
  91. package/dist/esm/cname-record-builder.d.ts +42 -0
  92. package/dist/esm/cname-record-builder.d.ts.map +1 -0
  93. package/dist/esm/cname-record-builder.js.map +1 -0
  94. package/dist/esm/defaults.d.ts +119 -0
  95. package/dist/esm/defaults.d.ts.map +1 -0
  96. package/dist/{defaults.js → esm/defaults.js} +37 -4
  97. package/dist/esm/defaults.js.map +1 -0
  98. package/dist/esm/ds-record-builder.d.ts +42 -0
  99. package/dist/esm/ds-record-builder.d.ts.map +1 -0
  100. package/dist/esm/ds-record-builder.js.map +1 -0
  101. package/dist/esm/health-check-alarm-builder.d.ts +133 -0
  102. package/dist/esm/health-check-alarm-builder.d.ts.map +1 -0
  103. package/dist/esm/health-check-alarm-builder.js.map +1 -0
  104. package/dist/esm/health-check-alarm-config.d.ts +39 -0
  105. package/dist/esm/health-check-alarm-config.d.ts.map +1 -0
  106. package/dist/esm/health-check-alarm-config.js.map +1 -0
  107. package/dist/esm/health-check-alarm-defaults.d.ts +13 -0
  108. package/dist/esm/health-check-alarm-defaults.d.ts.map +1 -0
  109. package/dist/esm/health-check-alarm-defaults.js.map +1 -0
  110. package/dist/esm/health-check-alarms.d.ts +15 -0
  111. package/dist/esm/health-check-alarms.d.ts.map +1 -0
  112. package/dist/esm/health-check-alarms.js.map +1 -0
  113. package/dist/esm/health-check-builder.d.ts +103 -0
  114. package/dist/esm/health-check-builder.d.ts.map +1 -0
  115. package/dist/esm/health-check-builder.js.map +1 -0
  116. package/dist/esm/hosted-zone-builder.d.ts +95 -0
  117. package/dist/esm/hosted-zone-builder.d.ts.map +1 -0
  118. package/dist/{hosted-zone-builder.js → esm/hosted-zone-builder.js} +11 -3
  119. package/dist/esm/hosted-zone-builder.js.map +1 -0
  120. package/dist/esm/https-record-builder.d.ts +45 -0
  121. package/dist/esm/https-record-builder.d.ts.map +1 -0
  122. package/dist/esm/https-record-builder.js.map +1 -0
  123. package/dist/esm/index.d.ts +20 -0
  124. package/dist/esm/index.d.ts.map +1 -0
  125. package/dist/{index.js → esm/index.js} +1 -1
  126. package/dist/esm/index.js.map +1 -0
  127. package/dist/esm/mx-record-builder.d.ts +40 -0
  128. package/dist/esm/mx-record-builder.d.ts.map +1 -0
  129. package/dist/esm/mx-record-builder.js.map +1 -0
  130. package/dist/esm/ns-record-builder.d.ts +40 -0
  131. package/dist/esm/ns-record-builder.d.ts.map +1 -0
  132. package/dist/esm/ns-record-builder.js.map +1 -0
  133. package/dist/esm/package.json +3 -0
  134. package/dist/esm/query-logging.d.ts +60 -0
  135. package/dist/esm/query-logging.d.ts.map +1 -0
  136. package/dist/esm/query-logging.js +133 -0
  137. package/dist/esm/query-logging.js.map +1 -0
  138. package/dist/esm/srv-record-builder.d.ts +40 -0
  139. package/dist/esm/srv-record-builder.d.ts.map +1 -0
  140. package/dist/esm/srv-record-builder.js.map +1 -0
  141. package/dist/esm/svcb-record-builder.d.ts +41 -0
  142. package/dist/esm/svcb-record-builder.d.ts.map +1 -0
  143. package/dist/esm/svcb-record-builder.js.map +1 -0
  144. package/dist/esm/txt-record-builder.d.ts +38 -0
  145. package/dist/esm/txt-record-builder.d.ts.map +1 -0
  146. package/dist/esm/txt-record-builder.js.map +1 -0
  147. package/dist/esm/zone/index.d.ts +3 -0
  148. package/dist/esm/zone/index.d.ts.map +1 -0
  149. package/dist/esm/zone/index.js.map +1 -0
  150. package/dist/esm/zone/zone-dsl.d.ts +296 -0
  151. package/dist/esm/zone/zone-dsl.d.ts.map +1 -0
  152. package/dist/esm/zone/zone-dsl.js.map +1 -0
  153. package/dist/esm/zone/zone-records.d.ts +67 -0
  154. package/dist/esm/zone/zone-records.d.ts.map +1 -0
  155. package/dist/esm/zone/zone-records.js.map +1 -0
  156. package/package.json +48 -22
  157. package/dist/a-record-builder.d.ts.map +0 -1
  158. package/dist/a-record-builder.js.map +0 -1
  159. package/dist/aaaa-record-builder.d.ts.map +0 -1
  160. package/dist/aaaa-record-builder.js.map +0 -1
  161. package/dist/alias-targets.d.ts.map +0 -1
  162. package/dist/alias-targets.js.map +0 -1
  163. package/dist/caa-record-builder.d.ts.map +0 -1
  164. package/dist/caa-record-builder.js.map +0 -1
  165. package/dist/cname-record-builder.d.ts.map +0 -1
  166. package/dist/cname-record-builder.js.map +0 -1
  167. package/dist/defaults.d.ts.map +0 -1
  168. package/dist/defaults.js.map +0 -1
  169. package/dist/ds-record-builder.d.ts.map +0 -1
  170. package/dist/ds-record-builder.js.map +0 -1
  171. package/dist/health-check-alarm-builder.d.ts.map +0 -1
  172. package/dist/health-check-alarm-builder.js.map +0 -1
  173. package/dist/health-check-alarm-config.d.ts.map +0 -1
  174. package/dist/health-check-alarm-config.js.map +0 -1
  175. package/dist/health-check-alarm-defaults.d.ts.map +0 -1
  176. package/dist/health-check-alarm-defaults.js.map +0 -1
  177. package/dist/health-check-alarms.d.ts.map +0 -1
  178. package/dist/health-check-alarms.js.map +0 -1
  179. package/dist/health-check-builder.d.ts.map +0 -1
  180. package/dist/health-check-builder.js.map +0 -1
  181. package/dist/hosted-zone-builder.d.ts.map +0 -1
  182. package/dist/hosted-zone-builder.js.map +0 -1
  183. package/dist/https-record-builder.d.ts.map +0 -1
  184. package/dist/https-record-builder.js.map +0 -1
  185. package/dist/index.d.ts.map +0 -1
  186. package/dist/index.js.map +0 -1
  187. package/dist/mx-record-builder.d.ts.map +0 -1
  188. package/dist/mx-record-builder.js.map +0 -1
  189. package/dist/ns-record-builder.d.ts.map +0 -1
  190. package/dist/ns-record-builder.js.map +0 -1
  191. package/dist/srv-record-builder.d.ts.map +0 -1
  192. package/dist/srv-record-builder.js.map +0 -1
  193. package/dist/svcb-record-builder.d.ts.map +0 -1
  194. package/dist/svcb-record-builder.js.map +0 -1
  195. package/dist/txt-record-builder.d.ts.map +0 -1
  196. package/dist/txt-record-builder.js.map +0 -1
  197. package/dist/zone/index.d.ts.map +0 -1
  198. package/dist/zone/index.js.map +0 -1
  199. package/dist/zone/zone-dsl.d.ts.map +0 -1
  200. package/dist/zone/zone-dsl.js.map +0 -1
  201. package/dist/zone/zone-records.d.ts.map +0 -1
  202. package/dist/zone/zone-records.js.map +0 -1
  203. /package/dist/{a-record-builder.d.ts → commonjs/a-record-builder.d.ts} +0 -0
  204. /package/dist/{aaaa-record-builder.d.ts → commonjs/aaaa-record-builder.d.ts} +0 -0
  205. /package/dist/{alias-targets.d.ts → commonjs/alias-targets.d.ts} +0 -0
  206. /package/dist/{caa-record-builder.d.ts → commonjs/caa-record-builder.d.ts} +0 -0
  207. /package/dist/{cname-record-builder.d.ts → commonjs/cname-record-builder.d.ts} +0 -0
  208. /package/dist/{ds-record-builder.d.ts → commonjs/ds-record-builder.d.ts} +0 -0
  209. /package/dist/{health-check-alarm-builder.d.ts → commonjs/health-check-alarm-builder.d.ts} +0 -0
  210. /package/dist/{health-check-alarm-config.d.ts → commonjs/health-check-alarm-config.d.ts} +0 -0
  211. /package/dist/{health-check-alarm-defaults.d.ts → commonjs/health-check-alarm-defaults.d.ts} +0 -0
  212. /package/dist/{health-check-alarms.d.ts → commonjs/health-check-alarms.d.ts} +0 -0
  213. /package/dist/{health-check-builder.d.ts → commonjs/health-check-builder.d.ts} +0 -0
  214. /package/dist/{https-record-builder.d.ts → commonjs/https-record-builder.d.ts} +0 -0
  215. /package/dist/{mx-record-builder.d.ts → commonjs/mx-record-builder.d.ts} +0 -0
  216. /package/dist/{ns-record-builder.d.ts → commonjs/ns-record-builder.d.ts} +0 -0
  217. /package/dist/{srv-record-builder.d.ts → commonjs/srv-record-builder.d.ts} +0 -0
  218. /package/dist/{svcb-record-builder.d.ts → commonjs/svcb-record-builder.d.ts} +0 -0
  219. /package/dist/{txt-record-builder.d.ts → commonjs/txt-record-builder.d.ts} +0 -0
  220. /package/dist/{zone → commonjs/zone}/index.d.ts +0 -0
  221. /package/dist/{zone → commonjs/zone}/zone-dsl.d.ts +0 -0
  222. /package/dist/{zone → commonjs/zone}/zone-records.d.ts +0 -0
  223. /package/dist/{a-record-builder.js → esm/a-record-builder.js} +0 -0
  224. /package/dist/{aaaa-record-builder.js → esm/aaaa-record-builder.js} +0 -0
  225. /package/dist/{alias-targets.js → esm/alias-targets.js} +0 -0
  226. /package/dist/{caa-record-builder.js → esm/caa-record-builder.js} +0 -0
  227. /package/dist/{cname-record-builder.js → esm/cname-record-builder.js} +0 -0
  228. /package/dist/{ds-record-builder.js → esm/ds-record-builder.js} +0 -0
  229. /package/dist/{health-check-alarm-builder.js → esm/health-check-alarm-builder.js} +0 -0
  230. /package/dist/{health-check-alarm-config.js → esm/health-check-alarm-config.js} +0 -0
  231. /package/dist/{health-check-alarm-defaults.js → esm/health-check-alarm-defaults.js} +0 -0
  232. /package/dist/{health-check-alarms.js → esm/health-check-alarms.js} +0 -0
  233. /package/dist/{health-check-builder.js → esm/health-check-builder.js} +0 -0
  234. /package/dist/{https-record-builder.js → esm/https-record-builder.js} +0 -0
  235. /package/dist/{mx-record-builder.js → esm/mx-record-builder.js} +0 -0
  236. /package/dist/{ns-record-builder.js → esm/ns-record-builder.js} +0 -0
  237. /package/dist/{srv-record-builder.js → esm/srv-record-builder.js} +0 -0
  238. /package/dist/{svcb-record-builder.js → esm/svcb-record-builder.js} +0 -0
  239. /package/dist/{txt-record-builder.js → esm/txt-record-builder.js} +0 -0
  240. /package/dist/{zone → esm/zone}/index.js +0 -0
  241. /package/dist/{zone → esm/zone}/zone-dsl.js +0 -0
  242. /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"}