@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 @@
1
+ {"version":3,"file":"a-record-builder.js","sourceRoot":"","sources":["../../src/a-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,GAIR,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAgDlD,MAAM,cAAc;IAClB,KAAK,GAAiC,EAAE,CAAC;IAEzC,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,mBAAmB,EAAE,sDAAsD,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,mBAAmB,EAAE,0DAA0D,CAChF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,KAAK,SAAS,CAAC;QACzD,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACrC,GAAG,IAAI;YACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;YAC5B,MAAM,EAAE,cAAc;SACP,CAAC;QAElB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,+GAA+G;IAC/G,OAAO,OAAO,CAAsC,cAAc,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { AaaaRecord, type AaaaRecordProps, 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 AAAA (IPv6) record builder.
6
+ *
7
+ * Extends the CDK {@link AaaaRecordProps} but replaces `zone` and `target`
8
+ * with {@link Resolvable} variants so they can be wired from other components
9
+ * in a composed system.
10
+ */
11
+ export interface AaaaRecordBuilderProps extends Omit<AaaaRecordProps, "zone" | "target"> {
12
+ /** The hosted zone in which to create the record. */
13
+ zone?: Resolvable<IHostedZone>;
14
+ /** The record target. */
15
+ target?: Resolvable<RecordTarget>;
16
+ }
17
+ /**
18
+ * The build output of an {@link IAaaaRecordBuilder}.
19
+ */
20
+ export interface AaaaRecordBuilderResult {
21
+ /** The Route53 AAAA record construct created by the builder. */
22
+ record: AaaaRecord;
23
+ }
24
+ /**
25
+ * A fluent builder for configuring and creating a Route53 AAAA (IPv6) record.
26
+ *
27
+ * Use this alongside an A record to expose a CloudFront distribution or ALB
28
+ * over both IPv4 and IPv6 — AWS alias targets support both families from a
29
+ * single resource.
30
+ */
31
+ export type IAaaaRecordBuilder = IBuilder<AaaaRecordBuilderProps, AaaaRecordBuilder>;
32
+ declare class AaaaRecordBuilder implements Lifecycle<AaaaRecordBuilderResult> {
33
+ props: Partial<AaaaRecordBuilderProps>;
34
+ build(scope: IConstruct, id: string, context?: Record<string, object>): AaaaRecordBuilderResult;
35
+ }
36
+ /**
37
+ * Creates a new {@link IAaaaRecordBuilder} for configuring a Route53 AAAA
38
+ * (IPv6) record.
39
+ *
40
+ * @returns A fluent builder for a Route53 AAAA record.
41
+ */
42
+ export declare function createAaaaRecordBuilder(): IAaaaRecordBuilder;
43
+ export {};
44
+ //# sourceMappingURL=aaaa-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aaaa-record-builder.d.ts","sourceRoot":"","sources":["../../src/aaaa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,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,sBAAuB,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC;IACtF,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/B,yBAAyB;IACzB,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;GAMG;AAEH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;AAErF,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,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,uBAAuB;CAyBhG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAG5D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aaaa-record-builder.js","sourceRoot":"","sources":["../../src/aaaa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAIX,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAkCrD,MAAM,iBAAiB;IACrB,KAAK,GAAoC,EAAE,CAAC;IAE5C,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,CACb,sBAAsB,EAAE,sDAAsD,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,sBAAsB,EAAE,0DAA0D,CACnF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,KAAK,SAAS,CAAC;QACzD,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;YACxC,GAAG,IAAI;YACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;YAC5B,MAAM,EAAE,cAAc;SACJ,CAAC;QAErB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,+GAA+G;IAC/G,OAAO,OAAO,CAA4C,iBAAiB,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type IDistribution } from "aws-cdk-lib/aws-cloudfront";
2
+ import { type IDomainName, type RestApiBase } from "aws-cdk-lib/aws-apigateway";
3
+ import { RecordTarget } from "aws-cdk-lib/aws-route53";
4
+ import { type Resolvable } from "@composurecdk/core";
5
+ /**
6
+ * Builds an alias {@link RecordTarget} for a CloudFront distribution, usable
7
+ * as the `target` of an A or AAAA record. Accepts a {@link Resolvable} so a
8
+ * distribution produced by a composed `@composurecdk/cloudfront` component
9
+ * can be wired in via {@link ref}.
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * createARecordBuilder()
14
+ * .zone(ref("zone", (r: HostedZoneBuilderResult) => r.hostedZone))
15
+ * .target(cloudfrontAliasTarget(
16
+ * ref("cdn", (r: DistributionBuilderResult) => r.distribution),
17
+ * ));
18
+ * ```
19
+ */
20
+ export declare function cloudfrontAliasTarget(distribution: Resolvable<IDistribution>): Resolvable<RecordTarget>;
21
+ /**
22
+ * Builds an alias {@link RecordTarget} for an API Gateway REST API that has a
23
+ * custom domain name configured via {@link RestApiBase}. Accepts a
24
+ * {@link Resolvable}.
25
+ */
26
+ export declare function apiGatewayAliasTarget(api: Resolvable<RestApiBase>): Resolvable<RecordTarget>;
27
+ /**
28
+ * Builds an alias {@link RecordTarget} for an API Gateway custom domain name
29
+ * (`apigateway.DomainName`). Use this when you manage the domain name resource
30
+ * separately from the REST API (e.g. to share a custom domain across multiple
31
+ * APIs). Accepts a {@link Resolvable}.
32
+ */
33
+ export declare function apiGatewayDomainAliasTarget(domain: Resolvable<IDomainName>): Resolvable<RecordTarget>;
34
+ //# sourceMappingURL=alias-targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias-targets.d.ts","sourceRoot":"","sources":["../../src/alias-targets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,UAAU,CAAC,aAAa,CAAC,GACtC,UAAU,CAAC,YAAY,CAAC,CAI1B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAI5F;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,GAC9B,UAAU,CAAC,YAAY,CAAC,CAI1B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias-targets.js","sourceRoot":"","sources":["../../src/alias-targets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,KAAK,EAAmB,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAAuC;IAEvC,OAAO,KAAK,CAAC,YAAY,CAAC;QACxB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAA4B;IAChE,OAAO,KAAK,CAAC,GAAG,CAAC;QACf,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAA+B;IAE/B,OAAO,KAAK,CAAC,MAAM,CAAC;QAClB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { CaaRecord, type CaaRecordProps, 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 CAA record builder.
6
+ *
7
+ * Extends the CDK {@link CaaRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface CaaRecordBuilderProps extends Omit<CaaRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link ICaaRecordBuilder}.
16
+ */
17
+ export interface CaaRecordBuilderResult {
18
+ /** The Route53 CAA record construct created by the builder. */
19
+ record: CaaRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 CAA record.
23
+ *
24
+ * CAA records restrict which certificate authorities may issue certificates
25
+ * for the domain — a CA that does not match any permitted `issue` / `issuewild`
26
+ * entry must refuse to issue. When issuing via ACM, see
27
+ * `createCaaAmazonRecordBuilder` (not yet implemented — use a CAA record with
28
+ * `amazon.com` / `amazontrust.com` / `awstrust.com` / `amazonaws.com` values).
29
+ *
30
+ * @see https://docs.aws.amazon.com/acm/latest/userguide/setup-caa.html
31
+ */
32
+ export type ICaaRecordBuilder = IBuilder<CaaRecordBuilderProps, CaaRecordBuilder>;
33
+ declare class CaaRecordBuilder implements Lifecycle<CaaRecordBuilderResult> {
34
+ props: Partial<CaaRecordBuilderProps>;
35
+ build(scope: IConstruct, id: string, context?: Record<string, object>): CaaRecordBuilderResult;
36
+ }
37
+ /**
38
+ * Creates a new {@link ICaaRecordBuilder} for configuring a Route53 CAA record.
39
+ *
40
+ * @returns A fluent builder for a Route53 CAA record.
41
+ */
42
+ export declare function createCaaRecordBuilder(): ICaaRecordBuilder;
43
+ export {};
44
+ //# sourceMappingURL=caa-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caa-record-builder.d.ts","sourceRoot":"","sources":["../../src/caa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3F,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,qBAAsB,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACzE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;AAElF,cAAM,gBAAiB,YAAW,SAAS,CAAC,sBAAsB,CAAC;IACjE,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAM;IAE3C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,sBAAsB;CAwB/F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,CAG1D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caa-record-builder.js","sourceRoot":"","sources":["../../src/caa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyC,MAAM,yBAAyB,CAAC;AAE3F,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAmCpD,MAAM,gBAAgB;IACpB,KAAK,GAAmC,EAAE,CAAC;IAE3C,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,CACb,qBAAqB,EAAE,sDAAsD,CAC9E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,qBAAqB,EAAE,+BAA+B;gBACpD,+DAA+D,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,mBAAmB;YACtB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACX,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,+GAA+G;IAC/G,OAAO,OAAO,CAA0C,gBAAgB,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { CnameRecord, type CnameRecordProps, 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 CNAME record builder.
6
+ *
7
+ * Extends the CDK {@link CnameRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface CnameRecordBuilderProps extends Omit<CnameRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link ICnameRecordBuilder}.
16
+ */
17
+ export interface CnameRecordBuilderResult {
18
+ /** The Route53 CNAME record construct created by the builder. */
19
+ record: CnameRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 CNAME record.
23
+ *
24
+ * Prefer {@link createARecordBuilder | A / AAAA alias records} when pointing
25
+ * at AWS resources — alias records are free, resolve in one hop, and can be
26
+ * used at the apex. Use CNAME for non-AWS targets or for sub-domain
27
+ * redirections where an alias is not available.
28
+ */
29
+ export type ICnameRecordBuilder = IBuilder<CnameRecordBuilderProps, CnameRecordBuilder>;
30
+ declare class CnameRecordBuilder implements Lifecycle<CnameRecordBuilderResult> {
31
+ props: Partial<CnameRecordBuilderProps>;
32
+ build(scope: IConstruct, id: string, context?: Record<string, object>): CnameRecordBuilderResult;
33
+ }
34
+ /**
35
+ * Creates a new {@link ICnameRecordBuilder} for configuring a Route53 CNAME
36
+ * record.
37
+ *
38
+ * @returns A fluent builder for a Route53 CNAME record.
39
+ */
40
+ export declare function createCnameRecordBuilder(): ICnameRecordBuilder;
41
+ export {};
42
+ //# sourceMappingURL=cname-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cname-record-builder.d.ts","sourceRoot":"","sources":["../../src/cname-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC/F,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,uBAAwB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC7E,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;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;CA+BjG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAG9D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cname-record-builder.js","sourceRoot":"","sources":["../../src/cname-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2C,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAgCtD,MAAM,kBAAkB;IACtB,KAAK,GAAqC,EAAE,CAAC;IAE7C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,sDAAsD,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,2BAA2B;gBAClD,qEAAqE,CACxE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,2BAA2B;gBAClD,mFAAmF,CACtF,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,qBAAqB;YACxB,GAAG,IAAI;YACP,UAAU;YACV,UAAU;YACV,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,119 @@
1
+ import type { HostedZoneBuilderProps } from "./hosted-zone-builder.js";
2
+ import type { ARecordBuilderProps } from "./a-record-builder.js";
3
+ import type { AaaaRecordBuilderProps } from "./aaaa-record-builder.js";
4
+ import type { CnameRecordBuilderProps } from "./cname-record-builder.js";
5
+ import type { TxtRecordBuilderProps } from "./txt-record-builder.js";
6
+ import type { MxRecordBuilderProps } from "./mx-record-builder.js";
7
+ import type { SrvRecordBuilderProps } from "./srv-record-builder.js";
8
+ import type { CaaRecordBuilderProps } from "./caa-record-builder.js";
9
+ import type { NsRecordBuilderProps } from "./ns-record-builder.js";
10
+ import type { DsRecordBuilderProps } from "./ds-record-builder.js";
11
+ import type { HttpsRecordBuilderProps } from "./https-record-builder.js";
12
+ import type { SvcbRecordBuilderProps } from "./svcb-record-builder.js";
13
+ import type { HealthCheckBuilderProps } from "./health-check-builder.js";
14
+ /**
15
+ * Naming prefix applied to every auto-created Route 53 query-log group. A
16
+ * single shared resource policy targets `<prefix>/*` so multiple hosted zones
17
+ * in the same stack share one `AWS::Logs::ResourcePolicy` (the per-region
18
+ * soft limit is 10). Matches the prefix the Route 53 console uses.
19
+ *
20
+ * @see https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html
21
+ */
22
+ export declare const QUERY_LOGGING_LOG_GROUP_NAME_PREFIX = "/aws/route53";
23
+ /**
24
+ * Construct id of the shared `AWS::Logs::ResourcePolicy` materialised once
25
+ * per stack when any hosted zone in that stack uses auto-managed query
26
+ * logging. Package-internal — used by the dedup helper and the unit tests, and
27
+ * intentionally not re-exported from the package barrel; consumers should not
28
+ * reference the policy directly.
29
+ */
30
+ export declare const QUERY_LOGGING_RESOURCE_POLICY_ID = "ComposureCDKRoute53QueryLoggingPolicy";
31
+ /**
32
+ * Stable resource-policy name written into CloudWatch Logs so the policy is
33
+ * deduplicated when the same stack is re-synthesised across deployments.
34
+ */
35
+ export declare const QUERY_LOGGING_RESOURCE_POLICY_NAME = "ComposureCDK-Route53QueryLogging";
36
+ /**
37
+ * Secure, AWS-recommended defaults applied to every public hosted zone built
38
+ * with {@link createHostedZoneBuilder}. Each property can be individually
39
+ * overridden via the builder's fluent API.
40
+ *
41
+ * Query logging is enabled by default: the builder auto-creates a CloudWatch
42
+ * {@link import("aws-cdk-lib/aws-logs").LogGroup} under
43
+ * `${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/<zoneName>` and a single shared
44
+ * `AWS::Logs::ResourcePolicy` granting `route53.amazonaws.com` permission to
45
+ * write log streams. Disable with `.queryLogging(false)` or supply a managed
46
+ * log group via `.queryLogging({ logGroupArn })`.
47
+ *
48
+ * @see https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html
49
+ */
50
+ export declare const HOSTED_ZONE_DEFAULTS: Partial<HostedZoneBuilderProps>;
51
+ /**
52
+ * Defaults for {@link createARecordBuilder}. Overridable via the fluent API.
53
+ * The builder skips the `ttl` default for alias targets — AWS ignores TTL on
54
+ * alias records and CDK emits a warning when one is set.
55
+ */
56
+ export declare const A_RECORD_DEFAULTS: Partial<ARecordBuilderProps>;
57
+ /**
58
+ * Defaults for {@link createAaaaRecordBuilder}. Overridable via the fluent API.
59
+ * Same alias-target caveat as {@link A_RECORD_DEFAULTS}.
60
+ */
61
+ export declare const AAAA_RECORD_DEFAULTS: Partial<AaaaRecordBuilderProps>;
62
+ /**
63
+ * Defaults for {@link createCnameRecordBuilder}. Overridable via the fluent API.
64
+ */
65
+ export declare const CNAME_RECORD_DEFAULTS: Partial<CnameRecordBuilderProps>;
66
+ /**
67
+ * Defaults for {@link createTxtRecordBuilder}. Overridable via the fluent API.
68
+ */
69
+ export declare const TXT_RECORD_DEFAULTS: Partial<TxtRecordBuilderProps>;
70
+ /**
71
+ * Defaults for {@link createMxRecordBuilder}. Overridable via the fluent API.
72
+ */
73
+ export declare const MX_RECORD_DEFAULTS: Partial<MxRecordBuilderProps>;
74
+ /**
75
+ * Defaults for {@link createSrvRecordBuilder}. Overridable via the fluent API.
76
+ */
77
+ export declare const SRV_RECORD_DEFAULTS: Partial<SrvRecordBuilderProps>;
78
+ /**
79
+ * Defaults for {@link createCaaRecordBuilder}. Overridable via the fluent API.
80
+ */
81
+ export declare const CAA_RECORD_DEFAULTS: Partial<CaaRecordBuilderProps>;
82
+ /**
83
+ * Defaults for {@link createNsRecordBuilder}. Overridable via the fluent API.
84
+ *
85
+ * A longer TTL is appropriate for delegation records — resolvers cache NS
86
+ * responses, and frequent churn forces parent-side re-delegation lookups.
87
+ */
88
+ export declare const NS_RECORD_DEFAULTS: Partial<NsRecordBuilderProps>;
89
+ /**
90
+ * Defaults for {@link createDsRecordBuilder}. Overridable via the fluent API.
91
+ *
92
+ * DS records change rarely (key-signing rollovers); a long TTL reduces
93
+ * DNSSEC validation load on resolvers.
94
+ */
95
+ export declare const DS_RECORD_DEFAULTS: Partial<DsRecordBuilderProps>;
96
+ /**
97
+ * Defaults for {@link createHttpsRecordBuilder}. Overridable via the fluent API.
98
+ * Same alias-target caveat as {@link A_RECORD_DEFAULTS}.
99
+ */
100
+ export declare const HTTPS_RECORD_DEFAULTS: Partial<HttpsRecordBuilderProps>;
101
+ /**
102
+ * Defaults for {@link createSvcbRecordBuilder}. Overridable via the fluent API.
103
+ */
104
+ export declare const SVCB_RECORD_DEFAULTS: Partial<SvcbRecordBuilderProps>;
105
+ /**
106
+ * Defaults for {@link createHealthCheckBuilder}. Overridable via the fluent API.
107
+ *
108
+ * `failureThreshold` and `requestInterval` match CDK's defaults but are set
109
+ * explicitly so the values are surfaced in the package's defaults table and
110
+ * can be reasoned about without consulting CDK source. `measureLatency` is
111
+ * defaulted ON to align with the AWS Well-Architected operational-excellence
112
+ * pillar (per-region latency visibility on the Route 53 Health Checks
113
+ * console). It carries a small additional cost — disable explicitly via
114
+ * `.measureLatency(false)` if cost is a concern.
115
+ *
116
+ * @see https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-determining-health-of-endpoints.html
117
+ */
118
+ export declare const HEALTH_CHECK_DEFAULTS: Partial<HealthCheckBuilderProps>;
119
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEzE;;;;;;;GAOG;AACH,eAAO,MAAM,mCAAmC,iBAAiB,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,0CAA0C,CAAC;AAExF;;;GAGG;AACH,eAAO,MAAM,kCAAkC,qCAAqC,CAAC;AAErF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,sBAAsB,CAahE,CAAC;AAaF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,mBAAmB,CAE1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,sBAAsB,CAEhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,CAElE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,qBAAqB,CAE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,CAE5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,qBAAqB,CAE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,qBAAqB,CAE9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,CAE5D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,CAE5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,CAElE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,sBAAsB,CAEhE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,CAIlE,CAAC"}
@@ -1,13 +1,39 @@
1
1
  import { Duration } from "aws-cdk-lib";
2
+ /**
3
+ * Naming prefix applied to every auto-created Route 53 query-log group. A
4
+ * single shared resource policy targets `<prefix>/*` so multiple hosted zones
5
+ * in the same stack share one `AWS::Logs::ResourcePolicy` (the per-region
6
+ * soft limit is 10). Matches the prefix the Route 53 console uses.
7
+ *
8
+ * @see https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html
9
+ */
10
+ export const QUERY_LOGGING_LOG_GROUP_NAME_PREFIX = "/aws/route53";
11
+ /**
12
+ * Construct id of the shared `AWS::Logs::ResourcePolicy` materialised once
13
+ * per stack when any hosted zone in that stack uses auto-managed query
14
+ * logging. Package-internal — used by the dedup helper and the unit tests, and
15
+ * intentionally not re-exported from the package barrel; consumers should not
16
+ * reference the policy directly.
17
+ */
18
+ export const QUERY_LOGGING_RESOURCE_POLICY_ID = "ComposureCDKRoute53QueryLoggingPolicy";
19
+ /**
20
+ * Stable resource-policy name written into CloudWatch Logs so the policy is
21
+ * deduplicated when the same stack is re-synthesised across deployments.
22
+ */
23
+ export const QUERY_LOGGING_RESOURCE_POLICY_NAME = "ComposureCDK-Route53QueryLogging";
2
24
  /**
3
25
  * Secure, AWS-recommended defaults applied to every public hosted zone built
4
26
  * with {@link createHostedZoneBuilder}. Each property can be individually
5
27
  * overridden via the builder's fluent API.
6
28
  *
7
- * Query logging is not enabled by default: Route53 query logs must be written
8
- * to a CloudWatch log group in `us-east-1` with a resource policy granting
9
- * `route53.amazonaws.com` write access. Opt in explicitly by calling
10
- * `.queryLogsLogGroupArn(...)` with a pre-configured log group.
29
+ * Query logging is enabled by default: the builder auto-creates a CloudWatch
30
+ * {@link import("aws-cdk-lib/aws-logs").LogGroup} under
31
+ * `${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/<zoneName>` and a single shared
32
+ * `AWS::Logs::ResourcePolicy` granting `route53.amazonaws.com` permission to
33
+ * write log streams. Disable with `.queryLogging(false)` or supply a managed
34
+ * log group via `.queryLogging({ logGroupArn })`.
35
+ *
36
+ * @see https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html
11
37
  */
12
38
  export const HOSTED_ZONE_DEFAULTS = {
13
39
  /**
@@ -15,6 +41,13 @@ export const HOSTED_ZONE_DEFAULTS = {
15
41
  * fully-qualified domain. Matches the CDK default and RFC 1035.
16
42
  */
17
43
  addTrailingDot: true,
44
+ /**
45
+ * Enable DNS query logging out of the box, with the auto-managed log
46
+ * group and shared resource policy described above. Set to `false` or to
47
+ * `{ logGroupArn: '...' }` to deviate.
48
+ * @see https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_detect_investigate_events_app_service_logging.html
49
+ */
50
+ queryLogging: {},
18
51
  };
19
52
  /**
20
53
  * Default TTL applied to records built by this package when no TTL is set.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAevC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,cAAc,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,uCAAuC,CAAC;AAExF;;;GAGG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,kCAAkC,CAAC;AAErF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE;;;OAGG;IACH,cAAc,EAAE,IAAI;IACpB;;;;;OAKG;IACH,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiC;IAC7D,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmC;IACjE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkC;IAC/D,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmC;IACjE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmC;IACjE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkC;IAC/D,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkC;IAC/D,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,cAAc,EAAE,IAAI;CACrB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { DsRecord, type DsRecordProps, 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 DS record builder.
6
+ *
7
+ * Extends the CDK {@link DsRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface DsRecordBuilderProps extends Omit<DsRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link IDsRecordBuilder}.
16
+ */
17
+ export interface DsRecordBuilderResult {
18
+ /** The Route53 DS record construct created by the builder. */
19
+ record: DsRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 DS record.
23
+ *
24
+ * DS (Delegation Signer) records establish the DNSSEC chain of trust from a
25
+ * parent zone to a delegated child zone. Each value is a rdata string of
26
+ * `keyTag algorithm digestType digest`.
27
+ *
28
+ * @see https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-configuring-dnssec-chain-of-trust.html
29
+ */
30
+ export type IDsRecordBuilder = IBuilder<DsRecordBuilderProps, DsRecordBuilder>;
31
+ declare class DsRecordBuilder implements Lifecycle<DsRecordBuilderResult> {
32
+ props: Partial<DsRecordBuilderProps>;
33
+ build(scope: IConstruct, id: string, context?: Record<string, object>): DsRecordBuilderResult;
34
+ }
35
+ /**
36
+ * Creates a new {@link IDsRecordBuilder} for configuring a Route53 DS record.
37
+ *
38
+ * @returns A fluent builder for a Route53 DS record.
39
+ */
40
+ export declare function createDsRecordBuilder(): IDsRecordBuilder;
41
+ export {};
42
+ //# sourceMappingURL=ds-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-record-builder.d.ts","sourceRoot":"","sources":["../../src/ds-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;;;;;;;;GAQG;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":"ds-record-builder.js","sourceRoot":"","sources":["../../src/ds-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;AAiCnD,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,wFAAwF,CAC3F,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,133 @@
1
+ import { 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, type Resolvable } 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
+ import type { HealthCheckBuilderResult } from "./health-check-builder.js";
9
+ /**
10
+ * Configuration properties for {@link createHealthCheckAlarmBuilder}.
11
+ *
12
+ * The standalone alarm builder mirrors the alarm surface that
13
+ * {@link createHealthCheckBuilder} creates by default. It exists so that
14
+ * alarms can be created in a different stack from the health check itself —
15
+ * specifically a `us-east-1` stack, since Route 53 emits all health check
16
+ * metrics there regardless of the health check's stack region.
17
+ *
18
+ * @see ADR-0004 — Split-alarm builder pattern for fixed-region metrics
19
+ */
20
+ export interface HealthCheckAlarmBuilderProps {
21
+ /**
22
+ * Configuration for AWS-recommended CloudWatch alarms.
23
+ *
24
+ * Mirrors {@link HealthCheckBuilderProps.recommendedAlarms}. Set to
25
+ * `false` to disable all recommended alarms. Custom alarms added via
26
+ * {@link IHealthCheckAlarmBuilder.addAlarm} are unaffected.
27
+ *
28
+ * No alarm actions are configured by default. Use `alarmActionsPolicy`
29
+ * (or an `afterBuild` hook) to wire SNS or other actions onto the
30
+ * resulting alarms.
31
+ *
32
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
33
+ */
34
+ recommendedAlarms?: HealthCheckAlarmConfig | false;
35
+ }
36
+ /**
37
+ * The build output of an {@link IHealthCheckAlarmBuilder}.
38
+ */
39
+ export interface HealthCheckAlarmBuilderResult {
40
+ /**
41
+ * The CloudWatch alarms created by this builder, keyed by alarm name.
42
+ * Uses the same key scheme as {@link HealthCheckBuilderResult.alarms}.
43
+ */
44
+ alarms: Record<string, Alarm>;
45
+ }
46
+ /**
47
+ * A fluent builder for Route 53 health-check CloudWatch alarms, decoupled
48
+ * from the health check itself. Use this when the health check lives in a
49
+ * stack outside `us-east-1` — route this component into a `us-east-1` stack
50
+ * via `compose().withStacks()` so the alarms land where Route 53 actually
51
+ * emits metrics.
52
+ *
53
+ * @see {@link createHealthCheckAlarmBuilder}
54
+ */
55
+ export type IHealthCheckAlarmBuilder = ITaggedBuilder<HealthCheckAlarmBuilderProps, HealthCheckAlarmBuilder>;
56
+ /**
57
+ * Shared alarm-assembly used by both {@link createHealthCheckBuilder} (in its
58
+ * own stack) and {@link createHealthCheckAlarmBuilder} (typically in a
59
+ * separate `us-east-1` stack). Materialises the recommended health-check
60
+ * alarm and any user-supplied custom alarms, emits the region warning if the
61
+ * resulting scope is not in `us-east-1`, and creates the alarm constructs.
62
+ *
63
+ * @internal
64
+ */
65
+ export declare function buildHealthCheckAlarms(scope: IConstruct, id: string, target: Pick<HealthCheckBuilderResult, "healthCheck">, options?: {
66
+ recommendedAlarms?: HealthCheckAlarmConfig | false;
67
+ customAlarms?: AlarmDefinitionBuilder<IHealthCheck>[];
68
+ }): Record<string, Alarm>;
69
+ declare class HealthCheckAlarmBuilder implements Lifecycle<HealthCheckAlarmBuilderResult> {
70
+ #private;
71
+ props: Partial<HealthCheckAlarmBuilderProps>;
72
+ /**
73
+ * Sets the health check to alarm on. Pass the result of
74
+ * {@link createHealthCheckBuilder} (or a {@link Ref} to it). The builder
75
+ * reads the health check from the result.
76
+ *
77
+ * Pair with `compose().withStacks()` to route this component into a
78
+ * `us-east-1` stack while the health check itself lives elsewhere — set
79
+ * `crossRegionReferences: true` on both stacks so CDK can wire the
80
+ * `HealthCheckId` reference automatically.
81
+ */
82
+ healthCheck(healthCheck: Resolvable<HealthCheckBuilderResult>): this;
83
+ /**
84
+ * Adds a custom alarm against the health check. The configure callback
85
+ * receives a fresh {@link AlarmDefinitionBuilder} pre-set with the alarm's
86
+ * key; configure metric, threshold, comparison and any other options.
87
+ *
88
+ * The created alarm is materialised in this builder's stack — useful for
89
+ * cross-region setups where you want all health-check alarms to live with
90
+ * the recommended ones.
91
+ */
92
+ addAlarm(key: string, configure: (alarm: AlarmDefinitionBuilder<IHealthCheck>) => AlarmDefinitionBuilder<IHealthCheck>): this;
93
+ /** @internal — see ADR-0005. */
94
+ [COPY_STATE](target: HealthCheckAlarmBuilder): void;
95
+ build(scope: IConstruct, id: string, context?: Record<string, object>): HealthCheckAlarmBuilderResult;
96
+ }
97
+ /**
98
+ * Creates a new {@link IHealthCheckAlarmBuilder} for materialising Route 53
99
+ * health-check alarms in a stack separate from the health check itself.
100
+ *
101
+ * The recommended use is multi-region deployments: the health check lives in
102
+ * the application's stack (in any region — Route 53 health checks are
103
+ * global), and the alarms must live in a `us-east-1` stack so they can read
104
+ * the metrics Route 53 emits there.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * compose(
109
+ * {
110
+ * api: createHealthCheckBuilder()
111
+ * .type(HealthCheckType.HTTPS)
112
+ * .fqdn("api.example.com")
113
+ * .recommendedAlarms(false), // suppress alarms in the api's own stack
114
+ *
115
+ * apiAlarms: createHealthCheckAlarmBuilder()
116
+ * .healthCheck(ref<HealthCheckBuilderResult>("api"))
117
+ * .recommendedAlarms({ healthCheckStatus: { evaluationPeriods: 2 } }),
118
+ * },
119
+ * { api: [], apiAlarms: ["api"] },
120
+ * )
121
+ * .withStacks({
122
+ * api: appStack, // any region — health checks are global
123
+ * apiAlarms: monitoringStack, // us-east-1 — where AWS/Route53 metrics live
124
+ * })
125
+ * .build(app, "App");
126
+ * ```
127
+ *
128
+ * Set `crossRegionReferences: true` on both stacks so CDK can export the
129
+ * `HealthCheckId` from the app stack and import it in the alarm stack.
130
+ */
131
+ export declare function createHealthCheckAlarmBuilder(): IHealthCheckAlarmBuilder;
132
+ export {};
133
+ //# sourceMappingURL=health-check-alarm-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarm-builder.d.ts","sourceRoot":"","sources":["../../src/health-check-alarm-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAW,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,KAAK,cAAc,EAAiB,MAAM,8BAA8B,CAAC;AAElF,OAAO,EAAE,sBAAsB,EAAgB,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE7E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAAG,cAAc,CACnD,4BAA4B,EAC5B,uBAAuB,CACxB,CAAC;AAsBF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,EACrD,OAAO,GAAE;IACP,iBAAiB,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;IACnD,YAAY,CAAC,EAAE,sBAAsB,CAAC,YAAY,CAAC,EAAE,CAAC;CAClD,GACL,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAevB;AAED,cAAM,uBAAwB,YAAW,SAAS,CAAC,6BAA6B,CAAC;;IAC/E,KAAK,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAM;IAIlD;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC,GAAG,IAAI;IAKpE;;;;;;;;OAQG;IACH,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,uBAAuB,GAAG,IAAI;IAKnD,KAAK,CACH,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,6BAA6B;CAejC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,6BAA6B,IAAI,wBAAwB,CAIxE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarm-builder.js","sourceRoot":"","sources":["../../src/health-check-alarm-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,UAAU,EAAkB,OAAO,EAAmB,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAuB,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElF,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEhF,OAAO,EAAE,kCAAkC,EAAE,MAAM,0BAA0B,CAAC;AAwD9E;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAiB;IACzC,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC;QAAE,OAAO;IACvC,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO;IACnC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY,CAChC,oCAAoC,EACpC,iFAAiF;QAC/E,gBAAgB,MAAM,8DAA8D;QACpF,yEAAyE;QACzE,6CAA6C,CAChD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAiB,EACjB,EAAU,EACV,MAAqD,EACrD,UAGI,EAAE;IAEN,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAC9C,MAAM,eAAe,GACnB,WAAW,KAAK,KAAK,IAAI,WAAW,EAAE,OAAO,KAAK,KAAK;QACrD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,kCAAkC,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAE1E,MAAM,eAAe,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9F,MAAM,YAAY,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,eAAe,CAAC,CAAC;IAE9D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,uBAAuB;IAC3B,KAAK,GAA0C,EAAE,CAAC;IAClD,YAAY,CAAwC;IAC3C,aAAa,GAA2C,EAAE,CAAC;IAEpE;;;;;;;;;OASG;IACH,WAAW,CAAC,WAAiD;QAC3D,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,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,MAA+B;QAC1C,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACxC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CACH,KAAiB,EACjB,EAAU,EACV,OAAgC;QAEhC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,4BAA4B,EAAE,6BAA6B;gBACzD,sEAAsE,CACzE,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QACzD,OAAO;YACL,MAAM,EAAE,sBAAsB,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE;gBAChD,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC/C,YAAY,EAAE,IAAI,CAAC,aAAa;aACjC,CAAC;SACH,CAAC;IACJ,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO,aAAa,CAClB,uBAAuB,CACxB,CAAC;AACJ,CAAC"}