@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.
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 +47 -21
  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,39 @@
1
+ import type { AlarmConfig } from "@composurecdk/cloudwatch";
2
+ /**
3
+ * Controls which recommended alarms are created for a Route 53 health check.
4
+ * The single recommended alarm — `healthCheckStatus` — is enabled by default
5
+ * with the AWS-recommended threshold. Set it to `false` to disable, or
6
+ * provide an {@link AlarmConfig} to tune the threshold or evaluation window.
7
+ *
8
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
9
+ */
10
+ export interface HealthCheckAlarmConfig {
11
+ /**
12
+ * Master switch: set to `false` to disable all recommended alarms.
13
+ * Individual alarms can also be disabled via their own entry.
14
+ * @default true
15
+ */
16
+ enabled?: boolean;
17
+ /**
18
+ * Alarm when the health check is reporting unhealthy.
19
+ *
20
+ * Metric: `AWS/Route53 HealthCheckStatus`, statistic Minimum, period
21
+ * 1 minute, dimension `HealthCheckId`. Minimum is the AWS-recommended
22
+ * statistic — it surfaces "at least one Route 53 checker sees it down"
23
+ * during the period.
24
+ *
25
+ * Default threshold: `< 1` for one consecutive 1-minute period.
26
+ * Default `treatMissingData: breaching` — missing data is treated as
27
+ * unhealthy, matching the AWS example.
28
+ *
29
+ * Note: `AWS/Route53` metrics are emitted only in `us-east-1`. Alarms
30
+ * created against this metric in any other region will never receive
31
+ * data. The builder emits a synth-time warning when this happens; for
32
+ * stacks outside `us-east-1`, route the alarm into a `us-east-1` stack
33
+ * via `createHealthCheckAlarmBuilder()` and `compose().withStacks()`.
34
+ *
35
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
36
+ */
37
+ healthCheckStatus?: AlarmConfig | false;
38
+ }
39
+ //# sourceMappingURL=health-check-alarm-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarm-config.d.ts","sourceRoot":"","sources":["../../src/health-check-alarm-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,iBAAiB,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CACzC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarm-config.js","sourceRoot":"","sources":["../../src/health-check-alarm-config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { AlarmConfigDefaults } from "@composurecdk/cloudwatch";
2
+ interface HealthCheckAlarmDefaults {
3
+ enabled: true;
4
+ healthCheckStatus: AlarmConfigDefaults;
5
+ }
6
+ /**
7
+ * AWS-recommended default alarm configuration for Route 53 health checks.
8
+ *
9
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
10
+ */
11
+ export declare const HEALTH_CHECK_ALARM_DEFAULTS: HealthCheckAlarmDefaults;
12
+ export {};
13
+ //# sourceMappingURL=health-check-alarm-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarm-defaults.d.ts","sourceRoot":"","sources":["../../src/health-check-alarm-defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,UAAU,wBAAwB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,iBAAiB,EAAE,mBAAmB,CAAC;CACxC;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,wBAmBzC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarm-defaults.js","sourceRoot":"","sources":["../../src/health-check-alarm-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAQ9D;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAA6B;IACnE,OAAO,EAAE,IAAI;IAEb;;;;;;;;;OASG;IACH,iBAAiB,EAAE;QACjB,SAAS,EAAE,CAAC;QACZ,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC,SAAS;KAC7C;CACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { IHealthCheck } from "aws-cdk-lib/aws-route53";
2
+ import type { AlarmDefinition } from "@composurecdk/cloudwatch";
3
+ import type { HealthCheckAlarmConfig } from "./health-check-alarm-config.js";
4
+ /**
5
+ * Resolves the recommended alarm configuration into fully-resolved
6
+ * {@link AlarmDefinition}s for a Route 53 health check.
7
+ *
8
+ * Period and statistic are fixed at the AWS-recommended values
9
+ * (1 minute, Minimum) and not exposed as configuration knobs — they are
10
+ * load-bearing for the recommended semantics ("the worst checker reading
11
+ * per minute"). Threshold, evaluation periods, datapoints, and missing-data
12
+ * behaviour remain user-configurable via {@link HealthCheckAlarmConfig}.
13
+ */
14
+ export declare function resolveHealthCheckAlarmDefinitions(healthCheck: IHealthCheck, config: HealthCheckAlarmConfig | undefined): AlarmDefinition[];
15
+ //# sourceMappingURL=health-check-alarms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarms.d.ts","sourceRoot":"","sources":["../../src/health-check-alarms.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAK7E;;;;;;;;;GASG;AACH,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,YAAY,EACzB,MAAM,EAAE,sBAAsB,GAAG,SAAS,GACzC,eAAe,EAAE,CA8BnB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarms.js","sourceRoot":"","sources":["../../src/health-check-alarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAG/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,UAAU,kCAAkC,CAChD,WAAyB,EACzB,MAA0C;IAE1C,IAAI,MAAM,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAEzC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,IAAI,MAAM,EAAE,iBAAiB,KAAK,KAAK,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,kBAAkB,CAC5B,MAAM,EAAE,iBAAiB,EACzB,2BAA2B,CAAC,iBAAiB,CAC9C,CAAC;QACF,WAAW,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,mBAAmB;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,IAAI,MAAM,CAAC;gBACjB,SAAS,EAAE,aAAa;gBACxB,UAAU,EAAE,mBAAmB;gBAC/B,aAAa,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE;gBAC3D,SAAS,EAAE,KAAK,CAAC,OAAO;gBACxB,MAAM,EAAE,aAAa;aACtB,CAAC;YACF,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,kBAAkB,EAAE,kBAAkB,CAAC,mBAAmB;YAC1D,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB;YACxC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,WAAW,EAAE,gFAAgF,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,uBAAuB;SAC1I,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,103 @@
1
+ import { HealthCheck, type HealthCheckProps, type IHealthCheck } from "aws-cdk-lib/aws-route53";
2
+ import { type Alarm } from "aws-cdk-lib/aws-cloudwatch";
3
+ import { type IConstruct } from "constructs";
4
+ import { COPY_STATE, type Lifecycle } from "@composurecdk/core";
5
+ import { type ITaggedBuilder } from "@composurecdk/cloudformation";
6
+ import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
7
+ import type { HealthCheckAlarmConfig } from "./health-check-alarm-config.js";
8
+ /**
9
+ * Configuration properties for the Route 53 health-check builder.
10
+ *
11
+ * Extends the CDK {@link HealthCheckProps} with builder-specific options for
12
+ * AWS-recommended CloudWatch alarms.
13
+ */
14
+ export interface HealthCheckBuilderProps extends HealthCheckProps {
15
+ /**
16
+ * Configuration for AWS-recommended CloudWatch alarms.
17
+ *
18
+ * By default, the builder creates a recommended `healthCheckStatus`
19
+ * alarm matching AWS guidance (`HealthCheckStatus < 1` for one minute,
20
+ * `treatMissingData: breaching`). The alarm can be customised or
21
+ * disabled. Set to `false` to disable all alarms.
22
+ *
23
+ * No alarm actions are configured by default since notification methods
24
+ * are user-specific. Access alarms from the build result or use an
25
+ * `afterBuild` hook (or `alarmActionsPolicy`) to apply actions.
26
+ *
27
+ * Note: `AWS/Route53` metrics are emitted only in `us-east-1`. If this
28
+ * builder is used outside `us-east-1`, the synthesised alarm will never
29
+ * receive data — the builder emits a synth-time warning. For non-`us-east-1`
30
+ * stacks, suppress this builder's alarms with `recommendedAlarms: false`
31
+ * and create alarms in a `us-east-1` stack via
32
+ * {@link createHealthCheckAlarmBuilder}.
33
+ *
34
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
35
+ */
36
+ recommendedAlarms?: HealthCheckAlarmConfig | false;
37
+ }
38
+ /**
39
+ * The build output of an {@link IHealthCheckBuilder}.
40
+ */
41
+ export interface HealthCheckBuilderResult {
42
+ /** The Route 53 health check construct created by the builder. */
43
+ healthCheck: HealthCheck;
44
+ /**
45
+ * CloudWatch alarms created for the health check, keyed by alarm name.
46
+ *
47
+ * Includes both AWS-recommended alarms and any custom alarms added via
48
+ * {@link IHealthCheckBuilder.addAlarm}. Access individual alarms by key
49
+ * (e.g. `result.alarms.healthCheckStatus`).
50
+ *
51
+ * No alarm actions are configured — apply them via the result or an
52
+ * `afterBuild` hook.
53
+ *
54
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
55
+ */
56
+ alarms: Record<string, Alarm>;
57
+ }
58
+ /**
59
+ * A fluent builder for configuring and creating a Route 53 health check.
60
+ *
61
+ * Each configuration property from the CDK {@link HealthCheckProps} is
62
+ * exposed as an overloaded method: call with a value to set it (returns the
63
+ * builder for chaining), or call with no arguments to read the current value.
64
+ *
65
+ * The builder also creates the AWS-recommended `healthCheckStatus`
66
+ * CloudWatch alarm by default. Alarms can be customised or disabled via the
67
+ * `recommendedAlarms` property.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * const hc = createHealthCheckBuilder()
72
+ * .type(HealthCheckType.HTTPS)
73
+ * .fqdn("api.example.com")
74
+ * .resourcePath("/health");
75
+ * ```
76
+ */
77
+ export type IHealthCheckBuilder = ITaggedBuilder<HealthCheckBuilderProps, HealthCheckBuilder>;
78
+ declare class HealthCheckBuilder implements Lifecycle<HealthCheckBuilderResult> {
79
+ #private;
80
+ props: Partial<HealthCheckBuilderProps>;
81
+ addAlarm(key: string, configure: (alarm: AlarmDefinitionBuilder<IHealthCheck>) => AlarmDefinitionBuilder<IHealthCheck>): this;
82
+ /** @internal — see ADR-0005. */
83
+ [COPY_STATE](target: HealthCheckBuilder): void;
84
+ build(scope: IConstruct, id: string): HealthCheckBuilderResult;
85
+ }
86
+ /**
87
+ * Creates a new {@link IHealthCheckBuilder} for configuring a Route 53
88
+ * health check.
89
+ *
90
+ * @returns A fluent builder for a Route 53 health check.
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * const hc = createHealthCheckBuilder()
95
+ * .type(HealthCheckType.HTTPS)
96
+ * .fqdn("api.example.com");
97
+ *
98
+ * const result = hc.build(stack, "ApiHealthCheck");
99
+ * ```
100
+ */
101
+ export declare function createHealthCheckBuilder(): IHealthCheckBuilder;
102
+ export {};
103
+ //# sourceMappingURL=health-check-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-builder.d.ts","sourceRoot":"","sources":["../../src/health-check-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAI7E;;;;;GAKG;AACH,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,WAAW,EAAE,WAAW,CAAC;IAEzB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAE9F,cAAM,kBAAmB,YAAW,SAAS,CAAC,wBAAwB,CAAC;;IACrE,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAG7C,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,CACT,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,KACxC,sBAAsB,CAAC,YAAY,CAAC,GACxC,IAAI;IAKP,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAI9C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,wBAAwB;CA4B/D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-builder.js","sourceRoot":"","sources":["../../src/health-check-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA4C,MAAM,yBAAyB,CAAC;AAGhG,OAAO,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAuB,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA4EtD,MAAM,kBAAkB;IACtB,KAAK,GAAqC,EAAE,CAAC;IACpC,aAAa,GAA2C,EAAE,CAAC;IAEpE,QAAQ,CACN,GAAW,EACX,SAEyC;QAEzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAe,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,CAAC,UAAU,CAAC,CAAC,MAA0B;QACrC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAiB,EAAE,EAAU;QACjC,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAElD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,+DAA+D,CACzF,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,qBAAqB;YACxB,GAAG,IAAI;SACY,CAAC;QAEtB,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,sBAAsB,CACnC,KAAK,EACL,EAAE,EACF,EAAE,WAAW,EAAE,EACf;YACE,iBAAiB;YACjB,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CACF,CAAC;QAEF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;CACF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,aAAa,CAA8C,kBAAkB,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { PublicHostedZone, type PublicHostedZoneProps } from "aws-cdk-lib/aws-route53";
2
+ import { type LogGroup } from "aws-cdk-lib/aws-logs";
3
+ import { type IConstruct } from "constructs";
4
+ import { type Lifecycle } from "@composurecdk/core";
5
+ import { type ITaggedBuilder } from "@composurecdk/cloudformation";
6
+ import { type QueryLoggingConfig } from "./query-logging.js";
7
+ /**
8
+ * Configuration properties for the Route53 public hosted zone builder.
9
+ *
10
+ * Hides the CDK `queryLogsLogGroupArn` field in favour of {@link queryLogging}
11
+ * — a discriminated config that supports a `false` opt-out, a user-supplied
12
+ * pre-existing log group ARN, or a customizable auto-managed `LogGroup`
13
+ * provisioned alongside the hosted zone.
14
+ */
15
+ export interface HostedZoneBuilderProps extends Omit<PublicHostedZoneProps, "queryLogsLogGroupArn"> {
16
+ /**
17
+ * See {@link QueryLoggingConfig}. Defaults to an auto-managed CloudWatch
18
+ * log group and a single shared resource policy granting Route 53 write
19
+ * access — the secure path is the easy path. Set to `false` to opt out, or
20
+ * to `{ logGroupArn }` to bring your own log group.
21
+ */
22
+ queryLogging?: QueryLoggingConfig;
23
+ }
24
+ /**
25
+ * The build output of an {@link IHostedZoneBuilder}. Contains the CDK
26
+ * constructs created during {@link Lifecycle.build}, keyed by role.
27
+ */
28
+ export interface HostedZoneBuilderResult {
29
+ /** The Route53 public hosted zone construct created by the builder. */
30
+ hostedZone: PublicHostedZone;
31
+ /**
32
+ * The CloudWatch log group auto-created for DNS query logging, or
33
+ * `undefined` when query logging was disabled or the user supplied their
34
+ * own log group ARN. The shared `AWS::Logs::ResourcePolicy` is
35
+ * intentionally not exposed: it is stack-scoped, shared across every
36
+ * hosted zone in the stack, and not safe to mutate from a single
37
+ * builder's result.
38
+ */
39
+ queryLogGroup?: LogGroup;
40
+ }
41
+ /**
42
+ * A fluent builder for configuring and creating a Route53 public hosted zone.
43
+ *
44
+ * Each configuration property from the CDK {@link PublicHostedZoneProps} is
45
+ * exposed as an overloaded method: call with a value to set it (returns the
46
+ * builder for chaining), or call with no arguments to read the current value.
47
+ *
48
+ * The builder implements {@link Lifecycle}, so it can be used directly as a
49
+ * component in a {@link compose | composed system}. When built, it creates a
50
+ * public hosted zone with the configured properties — including the
51
+ * auto-managed DNS query-log group and shared resource policy — and returns a
52
+ * {@link HostedZoneBuilderResult}.
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * const zone = createHostedZoneBuilder()
57
+ * .zoneName("example.com")
58
+ * .comment("Primary customer-facing domain");
59
+ * ```
60
+ */
61
+ export type IHostedZoneBuilder = ITaggedBuilder<HostedZoneBuilderProps, HostedZoneBuilder>;
62
+ declare class HostedZoneBuilder implements Lifecycle<HostedZoneBuilderResult> {
63
+ props: Partial<HostedZoneBuilderProps>;
64
+ build(scope: IConstruct, id: string): HostedZoneBuilderResult;
65
+ }
66
+ /**
67
+ * Creates a new {@link IHostedZoneBuilder} for configuring a Route53 public
68
+ * hosted zone.
69
+ *
70
+ * This is the entry point for defining a public hosted zone component. The
71
+ * returned builder exposes every {@link HostedZoneBuilderProps} property as a
72
+ * fluent setter/getter and implements {@link Lifecycle} for use with
73
+ * {@link compose}.
74
+ *
75
+ * @returns A fluent builder for a Route53 public hosted zone.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * const zone = createHostedZoneBuilder().zoneName("example.com");
80
+ *
81
+ * // Use standalone:
82
+ * const result = zone.build(stack, "SiteZone");
83
+ *
84
+ * // Or compose into a system:
85
+ * const system = compose(
86
+ * { zone, cert: createCertificateBuilder()
87
+ * .domainName("example.com")
88
+ * .validationZone(ref("zone", (r: HostedZoneBuilderResult) => r.hostedZone)) },
89
+ * { zone: [], cert: ["zone"] },
90
+ * );
91
+ * ```
92
+ */
93
+ export declare function createHostedZoneBuilder(): IHostedZoneBuilder;
94
+ export {};
95
+ //# sourceMappingURL=hosted-zone-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-zone-builder.d.ts","sourceRoot":"","sources":["../../src/hosted-zone-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAElF,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAClD,qBAAqB,EACrB,sBAAsB,CACvB;IACC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,UAAU,EAAE,gBAAgB,CAAC;IAC7B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;AAE3F,cAAM,iBAAkB,YAAW,SAAS,CAAC,uBAAuB,CAAC;IACnE,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAM;IAE5C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,uBAAuB;CA8B9D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAE5D"}
@@ -1,6 +1,7 @@
1
1
  import { PublicHostedZone } from "aws-cdk-lib/aws-route53";
2
2
  import { taggedBuilder } from "@composurecdk/cloudformation";
3
3
  import { HOSTED_ZONE_DEFAULTS } from "./defaults.js";
4
+ import { resolveQueryLogging } from "./query-logging.js";
4
5
  class HostedZoneBuilder {
5
6
  props = {};
6
7
  build(scope, id) {
@@ -8,12 +9,19 @@ class HostedZoneBuilder {
8
9
  throw new Error(`HostedZoneBuilder "${id}" requires a zoneName. ` +
9
10
  `Call .zoneName() with a fully-qualified domain.`);
10
11
  }
11
- const mergedProps = {
12
+ const { queryLogging, ...zoneProps } = {
12
13
  ...HOSTED_ZONE_DEFAULTS,
13
14
  ...this.props,
14
15
  };
15
- const hostedZone = new PublicHostedZone(scope, id, mergedProps);
16
- return { hostedZone };
16
+ const { queryLogGroup, queryLogsLogGroupArn, policy } = resolveQueryLogging(scope, id, this.props.zoneName, queryLogging);
17
+ const hostedZone = new PublicHostedZone(scope, id, {
18
+ ...zoneProps,
19
+ zoneName: this.props.zoneName,
20
+ queryLogsLogGroupArn,
21
+ });
22
+ if (policy)
23
+ hostedZone.node.addDependency(policy);
24
+ return { hostedZone, queryLogGroup };
17
25
  }
18
26
  }
19
27
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-zone-builder.js","sourceRoot":"","sources":["../../src/hosted-zone-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA8B,MAAM,yBAAyB,CAAC;AAIvF,OAAO,EAAuB,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAA2B,MAAM,oBAAoB,CAAC;AA+DlF,MAAM,iBAAiB;IACrB,KAAK,GAAoC,EAAE,CAAC;IAE5C,KAAK,CAAC,KAAiB,EAAE,EAAU;QACjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,EAAE,yBAAyB;gBAC/C,iDAAiD,CACpD,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,GAAG;YACrC,GAAG,oBAAoB;YACvB,GAAG,IAAI,CAAC,KAAK;SACd,CAAC;QAEF,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,mBAAmB,CACzE,KAAK,EACL,EAAE,EACF,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,YAAY,CACb,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE;YACjD,GAAG,SAAS;YACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAC7B,oBAAoB;SACrB,CAAC,CAAC;QAEH,IAAI,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAElD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IACvC,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,aAAa,CAA4C,iBAAiB,CAAC,CAAC;AACrF,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { HttpsRecord, type HttpsRecordProps, 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 HTTPS record builder.
6
+ *
7
+ * Extends the CDK {@link HttpsRecordProps} but replaces `zone` and `target`
8
+ * with {@link Resolvable} variants so they can be wired from composed
9
+ * components (e.g. a CloudFront distribution used as an alias target).
10
+ */
11
+ export interface HttpsRecordBuilderProps extends Omit<HttpsRecordProps, "zone" | "target"> {
12
+ /** The hosted zone in which to create the record. */
13
+ zone?: Resolvable<IHostedZone>;
14
+ /** The record target — mutually exclusive with `values`. */
15
+ target?: Resolvable<RecordTarget>;
16
+ }
17
+ /**
18
+ * The build output of an {@link IHttpsRecordBuilder}.
19
+ */
20
+ export interface HttpsRecordBuilderResult {
21
+ /** The Route53 HTTPS record construct created by the builder. */
22
+ record: HttpsRecord;
23
+ }
24
+ /**
25
+ * A fluent builder for configuring and creating a Route53 HTTPS record.
26
+ *
27
+ * HTTPS records (RFC 9460) advertise protocol hints — ALPN, port, IP hints —
28
+ * that clients can use before opening a connection, enabling one-round-trip
29
+ * HTTP/3 upgrades. Specify exactly one of `values` (explicit parameter list)
30
+ * or `target` (alias, typically a CloudFront distribution).
31
+ */
32
+ export type IHttpsRecordBuilder = IBuilder<HttpsRecordBuilderProps, HttpsRecordBuilder>;
33
+ declare class HttpsRecordBuilder implements Lifecycle<HttpsRecordBuilderResult> {
34
+ props: Partial<HttpsRecordBuilderProps>;
35
+ build(scope: IConstruct, id: string, context?: Record<string, object>): HttpsRecordBuilderResult;
36
+ }
37
+ /**
38
+ * Creates a new {@link IHttpsRecordBuilder} for configuring a Route53 HTTPS
39
+ * record.
40
+ *
41
+ * @returns A fluent builder for a Route53 HTTPS record.
42
+ */
43
+ export declare function createHttpsRecordBuilder(): IHttpsRecordBuilder;
44
+ export {};
45
+ //# sourceMappingURL=https-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"https-record-builder.d.ts","sourceRoot":"","sources":["../../src/https-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,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,uBAAwB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxF,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;GAOG;AAEH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAExF,cAAM,kBAAmB,YAAW,SAAS,CAAC,wBAAwB,CAAC;IACrE,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAE7C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,wBAAwB;CAiCjG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAG9D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"https-record-builder.js","sourceRoot":"","sources":["../../src/https-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAIZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAmCtD,MAAM,kBAAkB;IACtB,KAAK,GAAqC,EAAE,CAAC;IAE7C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,sDAAsD,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,+BAA+B;gBACtD,qFAAqF,CACxF,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC;QACvC,IAAI,SAAS,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,6DAA6D,CACvF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,MAAM,OAAO,GAAG,cAAc,EAAE,WAAW,KAAK,SAAS,CAAC;QAC1D,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;YACzC,GAAG,IAAI;YACP,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACT,CAAC;QAEtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,+GAA+G;IAC/G,OAAO,OAAO,CAA8C,kBAAkB,CAAC,CAAC;AAClF,CAAC"}
@@ -0,0 +1,20 @@
1
+ export { createHostedZoneBuilder, type HostedZoneBuilderProps, type HostedZoneBuilderResult, type IHostedZoneBuilder, } from "./hosted-zone-builder.js";
2
+ export { type QueryLoggingConfig } from "./query-logging.js";
3
+ export { createARecordBuilder, type ARecordBuilderProps, type ARecordBuilderResult, type IARecordBuilder, } from "./a-record-builder.js";
4
+ export { createAaaaRecordBuilder, type AaaaRecordBuilderProps, type AaaaRecordBuilderResult, type IAaaaRecordBuilder, } from "./aaaa-record-builder.js";
5
+ export { createCnameRecordBuilder, type CnameRecordBuilderProps, type CnameRecordBuilderResult, type ICnameRecordBuilder, } from "./cname-record-builder.js";
6
+ export { createTxtRecordBuilder, type TxtRecordBuilderProps, type TxtRecordBuilderResult, type ITxtRecordBuilder, } from "./txt-record-builder.js";
7
+ export { createMxRecordBuilder, type MxRecordBuilderProps, type MxRecordBuilderResult, type IMxRecordBuilder, } from "./mx-record-builder.js";
8
+ export { createSrvRecordBuilder, type SrvRecordBuilderProps, type SrvRecordBuilderResult, type ISrvRecordBuilder, } from "./srv-record-builder.js";
9
+ export { createCaaRecordBuilder, type CaaRecordBuilderProps, type CaaRecordBuilderResult, type ICaaRecordBuilder, } from "./caa-record-builder.js";
10
+ export { createNsRecordBuilder, type NsRecordBuilderProps, type NsRecordBuilderResult, type INsRecordBuilder, } from "./ns-record-builder.js";
11
+ export { createDsRecordBuilder, type DsRecordBuilderProps, type DsRecordBuilderResult, type IDsRecordBuilder, } from "./ds-record-builder.js";
12
+ export { createHttpsRecordBuilder, type HttpsRecordBuilderProps, type HttpsRecordBuilderResult, type IHttpsRecordBuilder, } from "./https-record-builder.js";
13
+ export { createSvcbRecordBuilder, type SvcbRecordBuilderProps, type SvcbRecordBuilderResult, type ISvcbRecordBuilder, } from "./svcb-record-builder.js";
14
+ export { createHealthCheckBuilder, type HealthCheckBuilderProps, type HealthCheckBuilderResult, type IHealthCheckBuilder, } from "./health-check-builder.js";
15
+ export { createHealthCheckAlarmBuilder, type HealthCheckAlarmBuilderProps, type HealthCheckAlarmBuilderResult, type IHealthCheckAlarmBuilder, } from "./health-check-alarm-builder.js";
16
+ export type { HealthCheckAlarmConfig } from "./health-check-alarm-config.js";
17
+ export { HEALTH_CHECK_ALARM_DEFAULTS } from "./health-check-alarm-defaults.js";
18
+ export { cloudfrontAliasTarget, apiGatewayAliasTarget, apiGatewayDomainAliasTarget, } from "./alias-targets.js";
19
+ export { HOSTED_ZONE_DEFAULTS, QUERY_LOGGING_LOG_GROUP_NAME_PREFIX, QUERY_LOGGING_RESOURCE_POLICY_NAME, A_RECORD_DEFAULTS, AAAA_RECORD_DEFAULTS, CNAME_RECORD_DEFAULTS, TXT_RECORD_DEFAULTS, MX_RECORD_DEFAULTS, SRV_RECORD_DEFAULTS, CAA_RECORD_DEFAULTS, NS_RECORD_DEFAULTS, DS_RECORD_DEFAULTS, HTTPS_RECORD_DEFAULTS, SVCB_RECORD_DEFAULTS, HEALTH_CHECK_DEFAULTS, } from "./defaults.js";
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,6BAA6B,EAC7B,KAAK,4BAA4B,EACjC,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,GAC9B,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,mCAAmC,EACnC,kCAAkC,EAClC,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
@@ -14,5 +14,5 @@ export { createHealthCheckBuilder, } from "./health-check-builder.js";
14
14
  export { createHealthCheckAlarmBuilder, } from "./health-check-alarm-builder.js";
15
15
  export { HEALTH_CHECK_ALARM_DEFAULTS } from "./health-check-alarm-defaults.js";
16
16
  export { cloudfrontAliasTarget, apiGatewayAliasTarget, apiGatewayDomainAliasTarget, } from "./alias-targets.js";
17
- export { HOSTED_ZONE_DEFAULTS, A_RECORD_DEFAULTS, AAAA_RECORD_DEFAULTS, CNAME_RECORD_DEFAULTS, TXT_RECORD_DEFAULTS, MX_RECORD_DEFAULTS, SRV_RECORD_DEFAULTS, CAA_RECORD_DEFAULTS, NS_RECORD_DEFAULTS, DS_RECORD_DEFAULTS, HTTPS_RECORD_DEFAULTS, SVCB_RECORD_DEFAULTS, HEALTH_CHECK_DEFAULTS, } from "./defaults.js";
17
+ export { HOSTED_ZONE_DEFAULTS, QUERY_LOGGING_LOG_GROUP_NAME_PREFIX, QUERY_LOGGING_RESOURCE_POLICY_NAME, A_RECORD_DEFAULTS, AAAA_RECORD_DEFAULTS, CNAME_RECORD_DEFAULTS, TXT_RECORD_DEFAULTS, MX_RECORD_DEFAULTS, SRV_RECORD_DEFAULTS, CAA_RECORD_DEFAULTS, NS_RECORD_DEFAULTS, DS_RECORD_DEFAULTS, HTTPS_RECORD_DEFAULTS, SVCB_RECORD_DEFAULTS, HEALTH_CHECK_DEFAULTS, } from "./defaults.js";
18
18
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,GAIrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,GAIzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,GAIvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,GAItB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,GAIvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,GAIvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,GAItB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,GAItB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,GAIzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,GAIzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,6BAA6B,GAI9B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,mCAAmC,EACnC,kCAAkC,EAClC,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { MxRecord, type MxRecordProps, type IHostedZone } 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 MX record builder.
6
+ *
7
+ * Extends the CDK {@link MxRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface MxRecordBuilderProps extends Omit<MxRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link IMxRecordBuilder}.
16
+ */
17
+ export interface MxRecordBuilderResult {
18
+ /** The Route53 MX record construct created by the builder. */
19
+ record: MxRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 MX record.
23
+ *
24
+ * MX records direct inbound mail to the host(s) responsible for accepting it.
25
+ * Each value pairs a priority (lower wins) with a fully-qualified mail-server
26
+ * host name. Pair with SPF/DKIM/DMARC TXT records for authenticated email.
27
+ */
28
+ export type IMxRecordBuilder = IBuilder<MxRecordBuilderProps, MxRecordBuilder>;
29
+ declare class MxRecordBuilder implements Lifecycle<MxRecordBuilderResult> {
30
+ props: Partial<MxRecordBuilderProps>;
31
+ build(scope: IConstruct, id: string, context?: Record<string, object>): MxRecordBuilderResult;
32
+ }
33
+ /**
34
+ * Creates a new {@link IMxRecordBuilder} for configuring a Route53 MX record.
35
+ *
36
+ * @returns A fluent builder for a Route53 MX record.
37
+ */
38
+ export declare function createMxRecordBuilder(): IMxRecordBuilder;
39
+ export {};
40
+ //# sourceMappingURL=mx-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mx-record-builder.d.ts","sourceRoot":"","sources":["../../src/mx-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACvE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;;;;GAMG;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAE/E,cAAM,eAAgB,YAAW,SAAS,CAAC,qBAAqB,CAAC;IAC/D,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAM;IAE1C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAqB;CAsB9F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAGxD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mx-record-builder.js","sourceRoot":"","sources":["../../src/mx-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwC,MAAM,yBAAyB,CAAC;AAEzF,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA+BnD,MAAM,eAAe;IACnB,KAAK,GAAkC,EAAE,CAAC;IAE1C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,sDAAsD,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,oBAAoB,EAAE,+BAA+B;gBACnD,iEAAiE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,kBAAkB;YACrB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACZ,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,+GAA+G;IAC/G,OAAO,OAAO,CAAwC,eAAe,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { NsRecord, type NsRecordProps, type IHostedZone } 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 NS record builder.
6
+ *
7
+ * Extends the CDK {@link NsRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface NsRecordBuilderProps extends Omit<NsRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link INsRecordBuilder}.
16
+ */
17
+ export interface NsRecordBuilderResult {
18
+ /** The Route53 NS record construct created by the builder. */
19
+ record: NsRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 NS record.
23
+ *
24
+ * Use NS records to delegate a subdomain to a different set of name servers
25
+ * (including another Route53 hosted zone). The apex NS record set is managed
26
+ * by Route53 itself and should not be recreated here.
27
+ */
28
+ export type INsRecordBuilder = IBuilder<NsRecordBuilderProps, NsRecordBuilder>;
29
+ declare class NsRecordBuilder implements Lifecycle<NsRecordBuilderResult> {
30
+ props: Partial<NsRecordBuilderProps>;
31
+ build(scope: IConstruct, id: string, context?: Record<string, object>): NsRecordBuilderResult;
32
+ }
33
+ /**
34
+ * Creates a new {@link INsRecordBuilder} for configuring a Route53 NS record.
35
+ *
36
+ * @returns A fluent builder for a Route53 NS record.
37
+ */
38
+ export declare function createNsRecordBuilder(): INsRecordBuilder;
39
+ export {};
40
+ //# sourceMappingURL=ns-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ns-record-builder.d.ts","sourceRoot":"","sources":["../../src/ns-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACvE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;;;;GAMG;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAE/E,cAAM,eAAgB,YAAW,SAAS,CAAC,qBAAqB,CAAC;IAC/D,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAM;IAE1C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAqB;CA6B9F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAGxD"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ns-record-builder.js","sourceRoot":"","sources":["../../src/ns-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwC,MAAM,yBAAyB,CAAC;AAEzF,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA+BnD,MAAM,eAAe;IACnB,KAAK,GAAkC,EAAE,CAAC;IAE1C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,sDAAsD,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,oBAAoB,EAAE,2BAA2B;gBAC/C,0FAA0F,CAC7F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,oBAAoB,EAAE,+BAA+B;gBACnD,yEAAyE,CAC5E,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,kBAAkB;YACrB,GAAG,IAAI;YACP,UAAU;YACV,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACZ,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,+GAA+G;IAC/G,OAAO,OAAO,CAAwC,eAAe,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,60 @@
1
+ import { type LogGroup, ResourcePolicy } from "aws-cdk-lib/aws-logs";
2
+ import type { IConstruct } from "constructs";
3
+ import { type ILogGroupBuilder } from "@composurecdk/logs";
4
+ /**
5
+ * Configures Route 53 public-hosted-zone DNS query logging. Pass `false` to
6
+ * disable, or an object to either customize the auto-created CloudWatch
7
+ * {@link LogGroup} sub-builder or to plug in a pre-existing log group ARN.
8
+ *
9
+ * `configure` cannot be combined with `logGroupArn` — the latter says
10
+ * "I am bringing my own log group", which leaves nothing to configure.
11
+ *
12
+ * When auto-creating, the builder also materialises a single shared
13
+ * `AWS::Logs::ResourcePolicy` per stack that grants the Route 53 service
14
+ * principal write access to every log group under `/aws/route53/*`. This
15
+ * sidesteps the 10-policy/region soft limit that the naive per-zone policy
16
+ * approach would hit at four hosted zones.
17
+ *
18
+ * @see https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html
19
+ * @see https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html
20
+ */
21
+ export type QueryLoggingConfig = false | {
22
+ /**
23
+ * Customize the auto-created LogGroup sub-builder. Receives a builder
24
+ * pre-seeded with the `/aws/route53/<zoneName>` log-group name; the
25
+ * well-architected retention/removal defaults from
26
+ * {@link createLogGroupBuilder} are merged in at `build()` time and
27
+ * are overridable by anything set on the builder here. Cannot be
28
+ * combined with {@link logGroupArn}.
29
+ */
30
+ configure?: (b: ILogGroupBuilder) => ILogGroupBuilder;
31
+ /**
32
+ * Use a pre-existing log group instead of letting the builder create
33
+ * one. The ARN must point at a log group in `us-east-1`, and the
34
+ * caller is responsible for the `route53.amazonaws.com` resource
35
+ * policy. Cannot be combined with {@link configure}.
36
+ */
37
+ logGroupArn?: string;
38
+ };
39
+ interface ResolvedQueryLogging {
40
+ /** The log group created for this hosted zone, or `undefined` when query logging is disabled or user-supplied. */
41
+ queryLogGroup?: LogGroup;
42
+ /** ARN to write into `PublicHostedZoneProps.queryLogsLogGroupArn`, or `undefined` when query logging is disabled. */
43
+ queryLogsLogGroupArn?: string;
44
+ /**
45
+ * The shared `ResourcePolicy` covering this log group, or `undefined` when
46
+ * query logging is disabled or the user supplied their own log group. The
47
+ * caller wires the hosted zone's `DependsOn` against this so Route 53 does
48
+ * not race the policy on first write.
49
+ */
50
+ policy?: ResourcePolicy;
51
+ }
52
+ /**
53
+ * Resolve the query-logging configuration for a hosted zone build, creating
54
+ * the auxiliary `LogGroup` and shared `ResourcePolicy` constructs as needed.
55
+ *
56
+ * @internal
57
+ */
58
+ export declare function resolveQueryLogging(scope: IConstruct, id: string, zoneName: string, cfg: QueryLoggingConfig | undefined): ResolvedQueryLogging;
59
+ export {};
60
+ //# sourceMappingURL=query-logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-logging.d.ts","sourceRoot":"","sources":["../../src/query-logging.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOlF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,GAC1B,KAAK,GACL;IACE;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,gBAAgB,CAAC;IAEtD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAMN,UAAU,oBAAoB;IAC5B,kHAAkH;IAClH,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,qHAAqH;IACrH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,kBAAkB,GAAG,SAAS,GAClC,oBAAoB,CA8BtB"}