@composurecdk/route53 0.6.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/{health-check-alarm-builder.d.ts → commonjs/health-check-alarm-builder.d.ts} +5 -2
  25. package/dist/commonjs/health-check-alarm-builder.d.ts.map +1 -0
  26. package/dist/commonjs/health-check-alarm-builder.js +136 -0
  27. package/dist/commonjs/health-check-alarm-builder.js.map +1 -0
  28. package/dist/commonjs/health-check-alarm-config.d.ts.map +1 -0
  29. package/dist/commonjs/health-check-alarm-config.js +3 -0
  30. package/dist/commonjs/health-check-alarm-config.js.map +1 -0
  31. package/dist/commonjs/health-check-alarm-defaults.d.ts.map +1 -0
  32. package/dist/commonjs/health-check-alarm-defaults.js +29 -0
  33. package/dist/commonjs/health-check-alarm-defaults.js.map +1 -0
  34. package/dist/commonjs/health-check-alarms.d.ts.map +1 -0
  35. package/dist/commonjs/health-check-alarms.js +45 -0
  36. package/dist/commonjs/health-check-alarms.js.map +1 -0
  37. package/dist/{health-check-builder.d.ts → commonjs/health-check-builder.d.ts} +5 -2
  38. package/dist/commonjs/health-check-builder.d.ts.map +1 -0
  39. package/dist/commonjs/health-check-builder.js +56 -0
  40. package/dist/commonjs/health-check-builder.js.map +1 -0
  41. package/dist/{hosted-zone-builder.d.ts → commonjs/hosted-zone-builder.d.ts} +29 -9
  42. package/dist/commonjs/hosted-zone-builder.d.ts.map +1 -0
  43. package/dist/commonjs/hosted-zone-builder.js +60 -0
  44. package/dist/commonjs/hosted-zone-builder.js.map +1 -0
  45. package/dist/commonjs/https-record-builder.d.ts.map +1 -0
  46. package/dist/commonjs/https-record-builder.js +45 -0
  47. package/dist/commonjs/https-record-builder.js.map +1 -0
  48. package/dist/{index.d.ts → commonjs/index.d.ts} +2 -1
  49. package/dist/commonjs/index.d.ts.map +1 -0
  50. package/dist/commonjs/index.js +54 -0
  51. package/dist/commonjs/index.js.map +1 -0
  52. package/dist/commonjs/mx-record-builder.d.ts.map +1 -0
  53. package/dist/commonjs/mx-record-builder.js +37 -0
  54. package/dist/commonjs/mx-record-builder.js.map +1 -0
  55. package/dist/commonjs/ns-record-builder.d.ts.map +1 -0
  56. package/dist/commonjs/ns-record-builder.js +42 -0
  57. package/dist/commonjs/ns-record-builder.js.map +1 -0
  58. package/dist/commonjs/package.json +3 -0
  59. package/dist/commonjs/query-logging.d.ts +60 -0
  60. package/dist/commonjs/query-logging.d.ts.map +1 -0
  61. package/dist/commonjs/query-logging.js +136 -0
  62. package/dist/commonjs/query-logging.js.map +1 -0
  63. package/dist/commonjs/srv-record-builder.d.ts.map +1 -0
  64. package/dist/commonjs/srv-record-builder.js +37 -0
  65. package/dist/commonjs/srv-record-builder.js.map +1 -0
  66. package/dist/commonjs/svcb-record-builder.d.ts.map +1 -0
  67. package/dist/commonjs/svcb-record-builder.js +38 -0
  68. package/dist/commonjs/svcb-record-builder.js.map +1 -0
  69. package/dist/commonjs/txt-record-builder.d.ts.map +1 -0
  70. package/dist/commonjs/txt-record-builder.js +37 -0
  71. package/dist/commonjs/txt-record-builder.js.map +1 -0
  72. package/dist/commonjs/zone/index.d.ts.map +1 -0
  73. package/dist/commonjs/zone/index.js +23 -0
  74. package/dist/commonjs/zone/index.js.map +1 -0
  75. package/dist/commonjs/zone/zone-dsl.d.ts.map +1 -0
  76. package/dist/commonjs/zone/zone-dsl.js +247 -0
  77. package/dist/commonjs/zone/zone-dsl.js.map +1 -0
  78. package/dist/commonjs/zone/zone-records.d.ts.map +1 -0
  79. package/dist/commonjs/zone/zone-records.js +322 -0
  80. package/dist/commonjs/zone/zone-records.js.map +1 -0
  81. package/dist/esm/a-record-builder.d.ts +56 -0
  82. package/dist/esm/a-record-builder.d.ts.map +1 -0
  83. package/dist/{a-record-builder.js → esm/a-record-builder.js} +1 -0
  84. package/dist/esm/a-record-builder.js.map +1 -0
  85. package/dist/esm/aaaa-record-builder.d.ts +44 -0
  86. package/dist/esm/aaaa-record-builder.d.ts.map +1 -0
  87. package/dist/{aaaa-record-builder.js → esm/aaaa-record-builder.js} +1 -0
  88. package/dist/esm/aaaa-record-builder.js.map +1 -0
  89. package/dist/esm/alias-targets.d.ts +34 -0
  90. package/dist/esm/alias-targets.d.ts.map +1 -0
  91. package/dist/esm/alias-targets.js.map +1 -0
  92. package/dist/esm/caa-record-builder.d.ts +44 -0
  93. package/dist/esm/caa-record-builder.d.ts.map +1 -0
  94. package/dist/{caa-record-builder.js → esm/caa-record-builder.js} +1 -0
  95. package/dist/esm/caa-record-builder.js.map +1 -0
  96. package/dist/esm/cname-record-builder.d.ts +42 -0
  97. package/dist/esm/cname-record-builder.d.ts.map +1 -0
  98. package/dist/{cname-record-builder.js → esm/cname-record-builder.js} +1 -0
  99. package/dist/esm/cname-record-builder.js.map +1 -0
  100. package/dist/esm/defaults.d.ts +119 -0
  101. package/dist/esm/defaults.d.ts.map +1 -0
  102. package/dist/{defaults.js → esm/defaults.js} +37 -4
  103. package/dist/esm/defaults.js.map +1 -0
  104. package/dist/esm/ds-record-builder.d.ts +42 -0
  105. package/dist/esm/ds-record-builder.d.ts.map +1 -0
  106. package/dist/{ds-record-builder.js → esm/ds-record-builder.js} +1 -0
  107. package/dist/esm/ds-record-builder.js.map +1 -0
  108. package/dist/esm/health-check-alarm-builder.d.ts +133 -0
  109. package/dist/esm/health-check-alarm-builder.d.ts.map +1 -0
  110. package/dist/{health-check-alarm-builder.js → esm/health-check-alarm-builder.js} +8 -2
  111. package/dist/esm/health-check-alarm-builder.js.map +1 -0
  112. package/dist/esm/health-check-alarm-config.d.ts +39 -0
  113. package/dist/esm/health-check-alarm-config.d.ts.map +1 -0
  114. package/dist/esm/health-check-alarm-config.js.map +1 -0
  115. package/dist/esm/health-check-alarm-defaults.d.ts +13 -0
  116. package/dist/esm/health-check-alarm-defaults.d.ts.map +1 -0
  117. package/dist/esm/health-check-alarm-defaults.js.map +1 -0
  118. package/dist/esm/health-check-alarms.d.ts +15 -0
  119. package/dist/esm/health-check-alarms.d.ts.map +1 -0
  120. package/dist/esm/health-check-alarms.js.map +1 -0
  121. package/dist/esm/health-check-builder.d.ts +103 -0
  122. package/dist/esm/health-check-builder.d.ts.map +1 -0
  123. package/dist/{health-check-builder.js → esm/health-check-builder.js} +7 -2
  124. package/dist/esm/health-check-builder.js.map +1 -0
  125. package/dist/esm/hosted-zone-builder.d.ts +95 -0
  126. package/dist/esm/hosted-zone-builder.d.ts.map +1 -0
  127. package/dist/{hosted-zone-builder.js → esm/hosted-zone-builder.js} +13 -5
  128. package/dist/esm/hosted-zone-builder.js.map +1 -0
  129. package/dist/esm/https-record-builder.d.ts +45 -0
  130. package/dist/esm/https-record-builder.d.ts.map +1 -0
  131. package/dist/{https-record-builder.js → esm/https-record-builder.js} +1 -0
  132. package/dist/esm/https-record-builder.js.map +1 -0
  133. package/dist/esm/index.d.ts +20 -0
  134. package/dist/esm/index.d.ts.map +1 -0
  135. package/dist/{index.js → esm/index.js} +1 -1
  136. package/dist/esm/index.js.map +1 -0
  137. package/dist/esm/mx-record-builder.d.ts +40 -0
  138. package/dist/esm/mx-record-builder.d.ts.map +1 -0
  139. package/dist/{mx-record-builder.js → esm/mx-record-builder.js} +1 -0
  140. package/dist/esm/mx-record-builder.js.map +1 -0
  141. package/dist/esm/ns-record-builder.d.ts +40 -0
  142. package/dist/esm/ns-record-builder.d.ts.map +1 -0
  143. package/dist/{ns-record-builder.js → esm/ns-record-builder.js} +1 -0
  144. package/dist/esm/ns-record-builder.js.map +1 -0
  145. package/dist/esm/package.json +3 -0
  146. package/dist/esm/query-logging.d.ts +60 -0
  147. package/dist/esm/query-logging.d.ts.map +1 -0
  148. package/dist/esm/query-logging.js +133 -0
  149. package/dist/esm/query-logging.js.map +1 -0
  150. package/dist/esm/srv-record-builder.d.ts +40 -0
  151. package/dist/esm/srv-record-builder.d.ts.map +1 -0
  152. package/dist/{srv-record-builder.js → esm/srv-record-builder.js} +1 -0
  153. package/dist/esm/srv-record-builder.js.map +1 -0
  154. package/dist/esm/svcb-record-builder.d.ts +41 -0
  155. package/dist/esm/svcb-record-builder.d.ts.map +1 -0
  156. package/dist/{svcb-record-builder.js → esm/svcb-record-builder.js} +1 -0
  157. package/dist/esm/svcb-record-builder.js.map +1 -0
  158. package/dist/esm/txt-record-builder.d.ts +38 -0
  159. package/dist/esm/txt-record-builder.d.ts.map +1 -0
  160. package/dist/{txt-record-builder.js → esm/txt-record-builder.js} +1 -0
  161. package/dist/esm/txt-record-builder.js.map +1 -0
  162. package/dist/esm/zone/index.d.ts +3 -0
  163. package/dist/esm/zone/index.d.ts.map +1 -0
  164. package/dist/esm/zone/index.js.map +1 -0
  165. package/dist/esm/zone/zone-dsl.d.ts +296 -0
  166. package/dist/esm/zone/zone-dsl.d.ts.map +1 -0
  167. package/dist/esm/zone/zone-dsl.js.map +1 -0
  168. package/dist/esm/zone/zone-records.d.ts +67 -0
  169. package/dist/esm/zone/zone-records.d.ts.map +1 -0
  170. package/dist/esm/zone/zone-records.js.map +1 -0
  171. package/package.json +47 -20
  172. package/dist/a-record-builder.d.ts.map +0 -1
  173. package/dist/a-record-builder.js.map +0 -1
  174. package/dist/aaaa-record-builder.d.ts.map +0 -1
  175. package/dist/aaaa-record-builder.js.map +0 -1
  176. package/dist/alias-targets.d.ts.map +0 -1
  177. package/dist/alias-targets.js.map +0 -1
  178. package/dist/caa-record-builder.d.ts.map +0 -1
  179. package/dist/caa-record-builder.js.map +0 -1
  180. package/dist/cname-record-builder.d.ts.map +0 -1
  181. package/dist/cname-record-builder.js.map +0 -1
  182. package/dist/defaults.d.ts.map +0 -1
  183. package/dist/defaults.js.map +0 -1
  184. package/dist/ds-record-builder.d.ts.map +0 -1
  185. package/dist/ds-record-builder.js.map +0 -1
  186. package/dist/health-check-alarm-builder.d.ts.map +0 -1
  187. package/dist/health-check-alarm-builder.js.map +0 -1
  188. package/dist/health-check-alarm-config.d.ts.map +0 -1
  189. package/dist/health-check-alarm-config.js.map +0 -1
  190. package/dist/health-check-alarm-defaults.d.ts.map +0 -1
  191. package/dist/health-check-alarm-defaults.js.map +0 -1
  192. package/dist/health-check-alarms.d.ts.map +0 -1
  193. package/dist/health-check-alarms.js.map +0 -1
  194. package/dist/health-check-builder.d.ts.map +0 -1
  195. package/dist/health-check-builder.js.map +0 -1
  196. package/dist/hosted-zone-builder.d.ts.map +0 -1
  197. package/dist/hosted-zone-builder.js.map +0 -1
  198. package/dist/https-record-builder.d.ts.map +0 -1
  199. package/dist/https-record-builder.js.map +0 -1
  200. package/dist/index.d.ts.map +0 -1
  201. package/dist/index.js.map +0 -1
  202. package/dist/mx-record-builder.d.ts.map +0 -1
  203. package/dist/mx-record-builder.js.map +0 -1
  204. package/dist/ns-record-builder.d.ts.map +0 -1
  205. package/dist/ns-record-builder.js.map +0 -1
  206. package/dist/srv-record-builder.d.ts.map +0 -1
  207. package/dist/srv-record-builder.js.map +0 -1
  208. package/dist/svcb-record-builder.d.ts.map +0 -1
  209. package/dist/svcb-record-builder.js.map +0 -1
  210. package/dist/txt-record-builder.d.ts.map +0 -1
  211. package/dist/txt-record-builder.js.map +0 -1
  212. package/dist/zone/index.d.ts.map +0 -1
  213. package/dist/zone/index.js.map +0 -1
  214. package/dist/zone/zone-dsl.d.ts.map +0 -1
  215. package/dist/zone/zone-dsl.js.map +0 -1
  216. package/dist/zone/zone-records.d.ts.map +0 -1
  217. package/dist/zone/zone-records.js.map +0 -1
  218. /package/dist/{a-record-builder.d.ts → commonjs/a-record-builder.d.ts} +0 -0
  219. /package/dist/{aaaa-record-builder.d.ts → commonjs/aaaa-record-builder.d.ts} +0 -0
  220. /package/dist/{alias-targets.d.ts → commonjs/alias-targets.d.ts} +0 -0
  221. /package/dist/{caa-record-builder.d.ts → commonjs/caa-record-builder.d.ts} +0 -0
  222. /package/dist/{cname-record-builder.d.ts → commonjs/cname-record-builder.d.ts} +0 -0
  223. /package/dist/{ds-record-builder.d.ts → commonjs/ds-record-builder.d.ts} +0 -0
  224. /package/dist/{health-check-alarm-config.d.ts → commonjs/health-check-alarm-config.d.ts} +0 -0
  225. /package/dist/{health-check-alarm-defaults.d.ts → commonjs/health-check-alarm-defaults.d.ts} +0 -0
  226. /package/dist/{health-check-alarms.d.ts → commonjs/health-check-alarms.d.ts} +0 -0
  227. /package/dist/{https-record-builder.d.ts → commonjs/https-record-builder.d.ts} +0 -0
  228. /package/dist/{mx-record-builder.d.ts → commonjs/mx-record-builder.d.ts} +0 -0
  229. /package/dist/{ns-record-builder.d.ts → commonjs/ns-record-builder.d.ts} +0 -0
  230. /package/dist/{srv-record-builder.d.ts → commonjs/srv-record-builder.d.ts} +0 -0
  231. /package/dist/{svcb-record-builder.d.ts → commonjs/svcb-record-builder.d.ts} +0 -0
  232. /package/dist/{txt-record-builder.d.ts → commonjs/txt-record-builder.d.ts} +0 -0
  233. /package/dist/{zone → commonjs/zone}/index.d.ts +0 -0
  234. /package/dist/{zone → commonjs/zone}/zone-dsl.d.ts +0 -0
  235. /package/dist/{zone → commonjs/zone}/zone-records.d.ts +0 -0
  236. /package/dist/{alias-targets.js → esm/alias-targets.js} +0 -0
  237. /package/dist/{health-check-alarm-config.js → esm/health-check-alarm-config.js} +0 -0
  238. /package/dist/{health-check-alarm-defaults.js → esm/health-check-alarm-defaults.js} +0 -0
  239. /package/dist/{health-check-alarms.js → esm/health-check-alarms.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":"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,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildHealthCheckAlarms = buildHealthCheckAlarms;
4
+ exports.createHealthCheckAlarmBuilder = createHealthCheckAlarmBuilder;
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const core_1 = require("@composurecdk/core");
7
+ const cloudformation_1 = require("@composurecdk/cloudformation");
8
+ const cloudwatch_1 = require("@composurecdk/cloudwatch");
9
+ const health_check_alarms_js_1 = require("./health-check-alarms.js");
10
+ /**
11
+ * Route 53 health-check metrics are emitted in `us-east-1` only. CloudWatch
12
+ * alarms are regional, so alarms created in any other region will never
13
+ * receive data. Warn (don't error) when alarms are being created outside
14
+ * `us-east-1`, unless the region is an unresolved token (env-agnostic stack
15
+ * — user knows best).
16
+ */
17
+ function warnIfNotUsEast1(scope) {
18
+ const region = aws_cdk_lib_1.Stack.of(scope).region;
19
+ if (aws_cdk_lib_1.Token.isUnresolved(region))
20
+ return;
21
+ if (region === "us-east-1")
22
+ return;
23
+ aws_cdk_lib_1.Annotations.of(scope).addWarningV2("@composurecdk/route53:alarm-region", `Route 53 health-check metrics are emitted in us-east-1 only, but this stack is ` +
24
+ `deployed in "${region}". CloudWatch alarms created here will not fire. Deploy the ` +
25
+ `stack in us-east-1, or use createHealthCheckAlarmBuilder() routed to a ` +
26
+ `us-east-1 stack via compose().withStacks().`);
27
+ }
28
+ /**
29
+ * Shared alarm-assembly used by both {@link createHealthCheckBuilder} (in its
30
+ * own stack) and {@link createHealthCheckAlarmBuilder} (typically in a
31
+ * separate `us-east-1` stack). Materialises the recommended health-check
32
+ * alarm and any user-supplied custom alarms, emits the region warning if the
33
+ * resulting scope is not in `us-east-1`, and creates the alarm constructs.
34
+ *
35
+ * @internal
36
+ */
37
+ function buildHealthCheckAlarms(scope, id, target, options = {}) {
38
+ const recommended = options.recommendedAlarms;
39
+ const recommendedDefs = recommended === false || recommended?.enabled === false
40
+ ? []
41
+ : (0, health_check_alarms_js_1.resolveHealthCheckAlarmDefinitions)(target.healthCheck, recommended);
42
+ const customAlarmDefs = options.customAlarms?.map((b) => b.resolve(target.healthCheck)) ?? [];
43
+ const allAlarmDefs = [...recommendedDefs, ...customAlarmDefs];
44
+ if (allAlarmDefs.length > 0) {
45
+ warnIfNotUsEast1(scope);
46
+ }
47
+ return (0, cloudwatch_1.createAlarms)(scope, id, allAlarmDefs);
48
+ }
49
+ class HealthCheckAlarmBuilder {
50
+ props = {};
51
+ #healthCheck;
52
+ #customAlarms = [];
53
+ /**
54
+ * Sets the health check to alarm on. Pass the result of
55
+ * {@link createHealthCheckBuilder} (or a {@link Ref} to it). The builder
56
+ * reads the health check from the result.
57
+ *
58
+ * Pair with `compose().withStacks()` to route this component into a
59
+ * `us-east-1` stack while the health check itself lives elsewhere — set
60
+ * `crossRegionReferences: true` on both stacks so CDK can wire the
61
+ * `HealthCheckId` reference automatically.
62
+ */
63
+ healthCheck(healthCheck) {
64
+ this.#healthCheck = healthCheck;
65
+ return this;
66
+ }
67
+ /**
68
+ * Adds a custom alarm against the health check. The configure callback
69
+ * receives a fresh {@link AlarmDefinitionBuilder} pre-set with the alarm's
70
+ * key; configure metric, threshold, comparison and any other options.
71
+ *
72
+ * The created alarm is materialised in this builder's stack — useful for
73
+ * cross-region setups where you want all health-check alarms to live with
74
+ * the recommended ones.
75
+ */
76
+ addAlarm(key, configure) {
77
+ this.#customAlarms.push(configure(new cloudwatch_1.AlarmDefinitionBuilder(key)));
78
+ return this;
79
+ }
80
+ /** @internal — see ADR-0005. */
81
+ [core_1.COPY_STATE](target) {
82
+ target.#healthCheck = this.#healthCheck;
83
+ target.#customAlarms.push(...this.#customAlarms);
84
+ }
85
+ build(scope, id, context) {
86
+ if (!this.#healthCheck) {
87
+ throw new Error(`HealthCheckAlarmBuilder "${id}" requires a health check. ` +
88
+ `Call .healthCheck() with a HealthCheckBuilderResult or a Ref to one.`);
89
+ }
90
+ const target = (0, core_1.resolve)(this.#healthCheck, context ?? {});
91
+ return {
92
+ alarms: buildHealthCheckAlarms(scope, id, target, {
93
+ recommendedAlarms: this.props.recommendedAlarms,
94
+ customAlarms: this.#customAlarms,
95
+ }),
96
+ };
97
+ }
98
+ }
99
+ /**
100
+ * Creates a new {@link IHealthCheckAlarmBuilder} for materialising Route 53
101
+ * health-check alarms in a stack separate from the health check itself.
102
+ *
103
+ * The recommended use is multi-region deployments: the health check lives in
104
+ * the application's stack (in any region — Route 53 health checks are
105
+ * global), and the alarms must live in a `us-east-1` stack so they can read
106
+ * the metrics Route 53 emits there.
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * compose(
111
+ * {
112
+ * api: createHealthCheckBuilder()
113
+ * .type(HealthCheckType.HTTPS)
114
+ * .fqdn("api.example.com")
115
+ * .recommendedAlarms(false), // suppress alarms in the api's own stack
116
+ *
117
+ * apiAlarms: createHealthCheckAlarmBuilder()
118
+ * .healthCheck(ref<HealthCheckBuilderResult>("api"))
119
+ * .recommendedAlarms({ healthCheckStatus: { evaluationPeriods: 2 } }),
120
+ * },
121
+ * { api: [], apiAlarms: ["api"] },
122
+ * )
123
+ * .withStacks({
124
+ * api: appStack, // any region — health checks are global
125
+ * apiAlarms: monitoringStack, // us-east-1 — where AWS/Route53 metrics live
126
+ * })
127
+ * .build(app, "App");
128
+ * ```
129
+ *
130
+ * Set `crossRegionReferences: true` on both stacks so CDK can export the
131
+ * `HealthCheckId` from the app stack and import it in the alarm stack.
132
+ */
133
+ function createHealthCheckAlarmBuilder() {
134
+ return (0, cloudformation_1.taggedBuilder)(HealthCheckAlarmBuilder);
135
+ }
136
+ //# sourceMappingURL=health-check-alarm-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarm-builder.js","sourceRoot":"","sources":["../../src/health-check-alarm-builder.ts"],"names":[],"mappings":";;AA8FA,wDAuBC;AAsGD,sEAIC;AA7ND,6CAAwD;AAExD,6CAA0F;AAC1F,iEAAkF;AAElF,yDAAgF;AAEhF,qEAA8E;AAwD9E;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAiB;IACzC,MAAM,MAAM,GAAG,mBAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,mBAAK,CAAC,YAAY,CAAC,MAAM,CAAC;QAAE,OAAO;IACvC,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO;IACnC,yBAAW,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,SAAgB,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,IAAA,2DAAkC,EAAC,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,IAAA,yBAAY,EAAC,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,mCAAsB,CAAe,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,CAAC,iBAAU,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,IAAA,cAAO,EAAC,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,SAAgB,6BAA6B;IAC3C,OAAO,IAAA,8BAAa,EAClB,uBAAuB,CACxB,CAAC;AACJ,CAAC"}
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=health-check-alarm-config.js.map
@@ -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 @@
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,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HEALTH_CHECK_ALARM_DEFAULTS = void 0;
4
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
5
+ /**
6
+ * AWS-recommended default alarm configuration for Route 53 health checks.
7
+ *
8
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Best_Practice_Recommended_Alarms_AWS_Services.html#Route53
9
+ */
10
+ exports.HEALTH_CHECK_ALARM_DEFAULTS = {
11
+ enabled: true,
12
+ /**
13
+ * Alarm when `HealthCheckStatus < 1` for one consecutive 1-minute period.
14
+ * The metric is 0 (unhealthy) or 1 (healthy) per Route 53 checker, so the
15
+ * `Minimum` statistic surfaces "at least one checker reports unhealthy."
16
+ *
17
+ * `treatMissingData: breaching` matches AWS's recommendation — missing
18
+ * datapoints are treated as unhealthy. This guards against situations
19
+ * where the metric stops emitting (e.g. health check deletion) while the
20
+ * downstream system still depends on it.
21
+ */
22
+ healthCheckStatus: {
23
+ threshold: 1,
24
+ evaluationPeriods: 1,
25
+ datapointsToAlarm: 1,
26
+ treatMissingData: aws_cloudwatch_1.TreatMissingData.BREACHING,
27
+ },
28
+ };
29
+ //# sourceMappingURL=health-check-alarm-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarm-defaults.js","sourceRoot":"","sources":["../../src/health-check-alarm-defaults.ts"],"names":[],"mappings":";;;AAAA,+DAA8D;AAQ9D;;;;GAIG;AACU,QAAA,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,iCAAgB,CAAC,SAAS;KAC7C;CACF,CAAC"}
@@ -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,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveHealthCheckAlarmDefinitions = resolveHealthCheckAlarmDefinitions;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
6
+ const cloudwatch_1 = require("@composurecdk/cloudwatch");
7
+ const health_check_alarm_defaults_js_1 = require("./health-check-alarm-defaults.js");
8
+ const METRIC_PERIOD = aws_cdk_lib_1.Duration.minutes(1);
9
+ /**
10
+ * Resolves the recommended alarm configuration into fully-resolved
11
+ * {@link AlarmDefinition}s for a Route 53 health check.
12
+ *
13
+ * Period and statistic are fixed at the AWS-recommended values
14
+ * (1 minute, Minimum) and not exposed as configuration knobs — they are
15
+ * load-bearing for the recommended semantics ("the worst checker reading
16
+ * per minute"). Threshold, evaluation periods, datapoints, and missing-data
17
+ * behaviour remain user-configurable via {@link HealthCheckAlarmConfig}.
18
+ */
19
+ function resolveHealthCheckAlarmDefinitions(healthCheck, config) {
20
+ if (config?.enabled === false)
21
+ return [];
22
+ const definitions = [];
23
+ if (config?.healthCheckStatus !== false) {
24
+ const cfg = (0, cloudwatch_1.resolveAlarmConfig)(config?.healthCheckStatus, health_check_alarm_defaults_js_1.HEALTH_CHECK_ALARM_DEFAULTS.healthCheckStatus);
25
+ definitions.push({
26
+ key: "healthCheckStatus",
27
+ alarmName: cfg.alarmName,
28
+ metric: new aws_cloudwatch_1.Metric({
29
+ namespace: "AWS/Route53",
30
+ metricName: "HealthCheckStatus",
31
+ dimensionsMap: { HealthCheckId: healthCheck.healthCheckId },
32
+ statistic: aws_cloudwatch_1.Stats.MINIMUM,
33
+ period: METRIC_PERIOD,
34
+ }),
35
+ threshold: cfg.threshold,
36
+ comparisonOperator: aws_cloudwatch_1.ComparisonOperator.LESS_THAN_THRESHOLD,
37
+ evaluationPeriods: cfg.evaluationPeriods,
38
+ datapointsToAlarm: cfg.datapointsToAlarm,
39
+ treatMissingData: cfg.treatMissingData,
40
+ description: `Route 53 health check is reporting unhealthy. Threshold: HealthCheckStatus < ${String(cfg.threshold)} (Minimum, 1 minute).`,
41
+ });
42
+ }
43
+ return definitions;
44
+ }
45
+ //# sourceMappingURL=health-check-alarms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-alarms.js","sourceRoot":"","sources":["../../src/health-check-alarms.ts"],"names":[],"mappings":";;AAoBA,gFAiCC;AArDD,6CAAuC;AACvC,+DAA+E;AAG/E,yDAA8D;AAE9D,qFAA+E;AAE/E,MAAM,aAAa,GAAG,sBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE1C;;;;;;;;;GASG;AACH,SAAgB,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,IAAA,+BAAkB,EAC5B,MAAM,EAAE,iBAAiB,EACzB,4DAA2B,CAAC,iBAAiB,CAC9C,CAAC;QACF,WAAW,CAAC,IAAI,CAAC;YACf,GAAG,EAAE,mBAAmB;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,IAAI,uBAAM,CAAC;gBACjB,SAAS,EAAE,aAAa;gBACxB,UAAU,EAAE,mBAAmB;gBAC/B,aAAa,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE;gBAC3D,SAAS,EAAE,sBAAK,CAAC,OAAO;gBACxB,MAAM,EAAE,aAAa;aACtB,CAAC;YACF,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,kBAAkB,EAAE,mCAAkB,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"}
@@ -1,7 +1,8 @@
1
1
  import { HealthCheck, type HealthCheckProps, type IHealthCheck } from "aws-cdk-lib/aws-route53";
2
2
  import { type Alarm } from "aws-cdk-lib/aws-cloudwatch";
3
3
  import { type IConstruct } from "constructs";
4
- import { type IBuilder, type Lifecycle } from "@composurecdk/core";
4
+ import { COPY_STATE, type Lifecycle } from "@composurecdk/core";
5
+ import { type ITaggedBuilder } from "@composurecdk/cloudformation";
5
6
  import { AlarmDefinitionBuilder } from "@composurecdk/cloudwatch";
6
7
  import type { HealthCheckAlarmConfig } from "./health-check-alarm-config.js";
7
8
  /**
@@ -73,11 +74,13 @@ export interface HealthCheckBuilderResult {
73
74
  * .resourcePath("/health");
74
75
  * ```
75
76
  */
76
- export type IHealthCheckBuilder = IBuilder<HealthCheckBuilderProps, HealthCheckBuilder>;
77
+ export type IHealthCheckBuilder = ITaggedBuilder<HealthCheckBuilderProps, HealthCheckBuilder>;
77
78
  declare class HealthCheckBuilder implements Lifecycle<HealthCheckBuilderResult> {
78
79
  #private;
79
80
  props: Partial<HealthCheckBuilderProps>;
80
81
  addAlarm(key: string, configure: (alarm: AlarmDefinitionBuilder<IHealthCheck>) => AlarmDefinitionBuilder<IHealthCheck>): this;
82
+ /** @internal — see ADR-0005. */
83
+ [COPY_STATE](target: HealthCheckBuilder): void;
81
84
  build(scope: IConstruct, id: string): HealthCheckBuilderResult;
82
85
  }
83
86
  /**
@@ -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,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createHealthCheckBuilder = createHealthCheckBuilder;
4
+ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
5
+ const core_1 = require("@composurecdk/core");
6
+ const cloudformation_1 = require("@composurecdk/cloudformation");
7
+ const cloudwatch_1 = require("@composurecdk/cloudwatch");
8
+ const health_check_alarm_builder_js_1 = require("./health-check-alarm-builder.js");
9
+ const defaults_js_1 = require("./defaults.js");
10
+ class HealthCheckBuilder {
11
+ props = {};
12
+ #customAlarms = [];
13
+ addAlarm(key, configure) {
14
+ this.#customAlarms.push(configure(new cloudwatch_1.AlarmDefinitionBuilder(key)));
15
+ return this;
16
+ }
17
+ /** @internal — see ADR-0005. */
18
+ [core_1.COPY_STATE](target) {
19
+ target.#customAlarms.push(...this.#customAlarms);
20
+ }
21
+ build(scope, id) {
22
+ const { recommendedAlarms, ...rest } = this.props;
23
+ if (!rest.type) {
24
+ throw new Error(`HealthCheckBuilder "${id}" requires a type. Call .type() with a HealthCheckType value.`);
25
+ }
26
+ const mergedProps = {
27
+ ...defaults_js_1.HEALTH_CHECK_DEFAULTS,
28
+ ...rest,
29
+ };
30
+ const healthCheck = new aws_route53_1.HealthCheck(scope, id, mergedProps);
31
+ const alarms = (0, health_check_alarm_builder_js_1.buildHealthCheckAlarms)(scope, id, { healthCheck }, {
32
+ recommendedAlarms,
33
+ customAlarms: this.#customAlarms,
34
+ });
35
+ return { healthCheck, alarms };
36
+ }
37
+ }
38
+ /**
39
+ * Creates a new {@link IHealthCheckBuilder} for configuring a Route 53
40
+ * health check.
41
+ *
42
+ * @returns A fluent builder for a Route 53 health check.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const hc = createHealthCheckBuilder()
47
+ * .type(HealthCheckType.HTTPS)
48
+ * .fqdn("api.example.com");
49
+ *
50
+ * const result = hc.build(stack, "ApiHealthCheck");
51
+ * ```
52
+ */
53
+ function createHealthCheckBuilder() {
54
+ return (0, cloudformation_1.taggedBuilder)(HealthCheckBuilder);
55
+ }
56
+ //# sourceMappingURL=health-check-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-check-builder.js","sourceRoot":"","sources":["../../src/health-check-builder.ts"],"names":[],"mappings":";;AAoJA,4DAEC;AAtJD,yDAAgG;AAGhG,6CAAgE;AAChE,iEAAkF;AAClF,yDAAkE;AAElE,mFAAyE;AACzE,+CAAsD;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,mCAAsB,CAAe,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAgC;IAChC,CAAC,iBAAU,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,mCAAqB;YACxB,GAAG,IAAI;SACY,CAAC;QAEtB,MAAM,WAAW,GAAG,IAAI,yBAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,IAAA,sDAAsB,EACnC,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,SAAgB,wBAAwB;IACtC,OAAO,IAAA,8BAAa,EAA8C,kBAAkB,CAAC,CAAC;AACxF,CAAC"}
@@ -1,16 +1,26 @@
1
1
  import { PublicHostedZone, type PublicHostedZoneProps } from "aws-cdk-lib/aws-route53";
2
+ import { type LogGroup } from "aws-cdk-lib/aws-logs";
2
3
  import { type IConstruct } from "constructs";
3
- import { type IBuilder, type Lifecycle } from "@composurecdk/core";
4
+ import { type Lifecycle } from "@composurecdk/core";
5
+ import { type ITaggedBuilder } from "@composurecdk/cloudformation";
6
+ import { type QueryLoggingConfig } from "./query-logging.js";
4
7
  /**
5
8
  * Configuration properties for the Route53 public hosted zone builder.
6
9
  *
7
- * Aliases the CDK {@link PublicHostedZoneProps} so every zone property is
8
- * available as a fluent setter on the builder. No additional builder-specific
9
- * options are defined today query logging requires a pre-configured log
10
- * group (see {@link PublicHostedZoneProps.queryLogsLogGroupArn | queryLogsLogGroupArn})
11
- * which the user supplies directly.
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.
12
14
  */
13
- export type HostedZoneBuilderProps = PublicHostedZoneProps;
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
+ }
14
24
  /**
15
25
  * The build output of an {@link IHostedZoneBuilder}. Contains the CDK
16
26
  * constructs created during {@link Lifecycle.build}, keyed by role.
@@ -18,6 +28,15 @@ export type HostedZoneBuilderProps = PublicHostedZoneProps;
18
28
  export interface HostedZoneBuilderResult {
19
29
  /** The Route53 public hosted zone construct created by the builder. */
20
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;
21
40
  }
22
41
  /**
23
42
  * A fluent builder for configuring and creating a Route53 public hosted zone.
@@ -28,7 +47,8 @@ export interface HostedZoneBuilderResult {
28
47
  *
29
48
  * The builder implements {@link Lifecycle}, so it can be used directly as a
30
49
  * component in a {@link compose | composed system}. When built, it creates a
31
- * public hosted zone with the configured properties and returns 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
32
52
  * {@link HostedZoneBuilderResult}.
33
53
  *
34
54
  * @example
@@ -38,7 +58,7 @@ export interface HostedZoneBuilderResult {
38
58
  * .comment("Primary customer-facing domain");
39
59
  * ```
40
60
  */
41
- export type IHostedZoneBuilder = IBuilder<HostedZoneBuilderProps, HostedZoneBuilder>;
61
+ export type IHostedZoneBuilder = ITaggedBuilder<HostedZoneBuilderProps, HostedZoneBuilder>;
42
62
  declare class HostedZoneBuilder implements Lifecycle<HostedZoneBuilderResult> {
43
63
  props: Partial<HostedZoneBuilderProps>;
44
64
  build(scope: IConstruct, id: string): HostedZoneBuilderResult;
@@ -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"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createHostedZoneBuilder = createHostedZoneBuilder;
4
+ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
5
+ const cloudformation_1 = require("@composurecdk/cloudformation");
6
+ const defaults_js_1 = require("./defaults.js");
7
+ const query_logging_js_1 = require("./query-logging.js");
8
+ class HostedZoneBuilder {
9
+ props = {};
10
+ build(scope, id) {
11
+ if (!this.props.zoneName) {
12
+ throw new Error(`HostedZoneBuilder "${id}" requires a zoneName. ` +
13
+ `Call .zoneName() with a fully-qualified domain.`);
14
+ }
15
+ const { queryLogging, ...zoneProps } = {
16
+ ...defaults_js_1.HOSTED_ZONE_DEFAULTS,
17
+ ...this.props,
18
+ };
19
+ const { queryLogGroup, queryLogsLogGroupArn, policy } = (0, query_logging_js_1.resolveQueryLogging)(scope, id, this.props.zoneName, queryLogging);
20
+ const hostedZone = new aws_route53_1.PublicHostedZone(scope, id, {
21
+ ...zoneProps,
22
+ zoneName: this.props.zoneName,
23
+ queryLogsLogGroupArn,
24
+ });
25
+ if (policy)
26
+ hostedZone.node.addDependency(policy);
27
+ return { hostedZone, queryLogGroup };
28
+ }
29
+ }
30
+ /**
31
+ * Creates a new {@link IHostedZoneBuilder} for configuring a Route53 public
32
+ * hosted zone.
33
+ *
34
+ * This is the entry point for defining a public hosted zone component. The
35
+ * returned builder exposes every {@link HostedZoneBuilderProps} property as a
36
+ * fluent setter/getter and implements {@link Lifecycle} for use with
37
+ * {@link compose}.
38
+ *
39
+ * @returns A fluent builder for a Route53 public hosted zone.
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * const zone = createHostedZoneBuilder().zoneName("example.com");
44
+ *
45
+ * // Use standalone:
46
+ * const result = zone.build(stack, "SiteZone");
47
+ *
48
+ * // Or compose into a system:
49
+ * const system = compose(
50
+ * { zone, cert: createCertificateBuilder()
51
+ * .domainName("example.com")
52
+ * .validationZone(ref("zone", (r: HostedZoneBuilderResult) => r.hostedZone)) },
53
+ * { zone: [], cert: ["zone"] },
54
+ * );
55
+ * ```
56
+ */
57
+ function createHostedZoneBuilder() {
58
+ return (0, cloudformation_1.taggedBuilder)(HostedZoneBuilder);
59
+ }
60
+ //# sourceMappingURL=hosted-zone-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-zone-builder.js","sourceRoot":"","sources":["../../src/hosted-zone-builder.ts"],"names":[],"mappings":";;AAmIA,0DAEC;AArID,yDAAuF;AAIvF,iEAAkF;AAClF,+CAAqD;AACrD,yDAAkF;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,kCAAoB;YACvB,GAAG,IAAI,CAAC,KAAK;SACd,CAAC;QAEF,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,GAAG,IAAA,sCAAmB,EACzE,KAAK,EACL,EAAE,EACF,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,YAAY,CACb,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,8BAAgB,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,SAAgB,uBAAuB;IACrC,OAAO,IAAA,8BAAa,EAA4C,iBAAiB,CAAC,CAAC;AACrF,CAAC"}
@@ -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,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createHttpsRecordBuilder = createHttpsRecordBuilder;
4
+ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
5
+ const core_1 = require("@composurecdk/core");
6
+ const defaults_js_1 = require("./defaults.js");
7
+ class HttpsRecordBuilder {
8
+ props = {};
9
+ build(scope, id, context) {
10
+ const { zone, target, values, ...rest } = this.props;
11
+ if (!zone) {
12
+ throw new Error(`HttpsRecordBuilder "${id}" requires a zone. Call .zone() with an IHostedZone.`);
13
+ }
14
+ if (values?.length === 0) {
15
+ throw new Error(`HttpsRecordBuilder "${id}" requires non-empty values. ` +
16
+ `Call .values() with one or more HttpsRecordValue entries, or use .target() instead.`);
17
+ }
18
+ const hasValues = values !== undefined;
19
+ if (hasValues === (target !== undefined)) {
20
+ throw new Error(`HttpsRecordBuilder "${id}" requires exactly one of .values() or .target(), not both.`);
21
+ }
22
+ const resolvedTarget = target ? (0, core_1.resolve)(target, context) : undefined;
23
+ const isAlias = resolvedTarget?.aliasTarget !== undefined;
24
+ const mergedProps = {
25
+ ...(isAlias ? {} : defaults_js_1.HTTPS_RECORD_DEFAULTS),
26
+ ...rest,
27
+ ...(hasValues ? { values } : {}),
28
+ ...(resolvedTarget ? { target: resolvedTarget } : {}),
29
+ zone: (0, core_1.resolve)(zone, context),
30
+ };
31
+ const record = new aws_route53_1.HttpsRecord(scope, id, mergedProps);
32
+ return { record };
33
+ }
34
+ }
35
+ /**
36
+ * Creates a new {@link IHttpsRecordBuilder} for configuring a Route53 HTTPS
37
+ * record.
38
+ *
39
+ * @returns A fluent builder for a Route53 HTTPS record.
40
+ */
41
+ function createHttpsRecordBuilder() {
42
+ // eslint-disable-next-line composurecdk/builder-must-be-tagged -- AWS::Route53::RecordSet has no Tags property
43
+ return (0, core_1.Builder)(HttpsRecordBuilder);
44
+ }
45
+ //# sourceMappingURL=https-record-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"https-record-builder.js","sourceRoot":"","sources":["../../src/https-record-builder.ts"],"names":[],"mappings":";;AA6FA,4DAGC;AAhGD,yDAKiC;AAEjC,6CAM4B;AAC5B,+CAAsD;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,IAAA,cAAO,EAAC,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,mCAAqB,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,IAAA,cAAO,EAAC,IAAI,EAAE,OAAO,CAAC;SACT,CAAC;QAEtB,MAAM,MAAM,GAAG,IAAI,yBAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAgB,wBAAwB;IACtC,+GAA+G;IAC/G,OAAO,IAAA,cAAO,EAA8C,kBAAkB,CAAC,CAAC;AAClF,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { createHostedZoneBuilder, type HostedZoneBuilderProps, type HostedZoneBuilderResult, type IHostedZoneBuilder, } from "./hosted-zone-builder.js";
2
+ export { type QueryLoggingConfig } from "./query-logging.js";
2
3
  export { createARecordBuilder, type ARecordBuilderProps, type ARecordBuilderResult, type IARecordBuilder, } from "./a-record-builder.js";
3
4
  export { createAaaaRecordBuilder, type AaaaRecordBuilderProps, type AaaaRecordBuilderResult, type IAaaaRecordBuilder, } from "./aaaa-record-builder.js";
4
5
  export { createCnameRecordBuilder, type CnameRecordBuilderProps, type CnameRecordBuilderResult, type ICnameRecordBuilder, } from "./cname-record-builder.js";
@@ -15,5 +16,5 @@ export { createHealthCheckAlarmBuilder, type HealthCheckAlarmBuilderProps, type
15
16
  export type { HealthCheckAlarmConfig } from "./health-check-alarm-config.js";
16
17
  export { HEALTH_CHECK_ALARM_DEFAULTS } from "./health-check-alarm-defaults.js";
17
18
  export { cloudfrontAliasTarget, apiGatewayAliasTarget, apiGatewayDomainAliasTarget, } from "./alias-targets.js";
18
- 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";
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";
19
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"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HEALTH_CHECK_DEFAULTS = exports.SVCB_RECORD_DEFAULTS = exports.HTTPS_RECORD_DEFAULTS = exports.DS_RECORD_DEFAULTS = exports.NS_RECORD_DEFAULTS = exports.CAA_RECORD_DEFAULTS = exports.SRV_RECORD_DEFAULTS = exports.MX_RECORD_DEFAULTS = exports.TXT_RECORD_DEFAULTS = exports.CNAME_RECORD_DEFAULTS = exports.AAAA_RECORD_DEFAULTS = exports.A_RECORD_DEFAULTS = exports.QUERY_LOGGING_RESOURCE_POLICY_NAME = exports.QUERY_LOGGING_LOG_GROUP_NAME_PREFIX = exports.HOSTED_ZONE_DEFAULTS = exports.apiGatewayDomainAliasTarget = exports.apiGatewayAliasTarget = exports.cloudfrontAliasTarget = exports.HEALTH_CHECK_ALARM_DEFAULTS = exports.createHealthCheckAlarmBuilder = exports.createHealthCheckBuilder = exports.createSvcbRecordBuilder = exports.createHttpsRecordBuilder = exports.createDsRecordBuilder = exports.createNsRecordBuilder = exports.createCaaRecordBuilder = exports.createSrvRecordBuilder = exports.createMxRecordBuilder = exports.createTxtRecordBuilder = exports.createCnameRecordBuilder = exports.createAaaaRecordBuilder = exports.createARecordBuilder = exports.createHostedZoneBuilder = void 0;
4
+ var hosted_zone_builder_js_1 = require("./hosted-zone-builder.js");
5
+ Object.defineProperty(exports, "createHostedZoneBuilder", { enumerable: true, get: function () { return hosted_zone_builder_js_1.createHostedZoneBuilder; } });
6
+ var a_record_builder_js_1 = require("./a-record-builder.js");
7
+ Object.defineProperty(exports, "createARecordBuilder", { enumerable: true, get: function () { return a_record_builder_js_1.createARecordBuilder; } });
8
+ var aaaa_record_builder_js_1 = require("./aaaa-record-builder.js");
9
+ Object.defineProperty(exports, "createAaaaRecordBuilder", { enumerable: true, get: function () { return aaaa_record_builder_js_1.createAaaaRecordBuilder; } });
10
+ var cname_record_builder_js_1 = require("./cname-record-builder.js");
11
+ Object.defineProperty(exports, "createCnameRecordBuilder", { enumerable: true, get: function () { return cname_record_builder_js_1.createCnameRecordBuilder; } });
12
+ var txt_record_builder_js_1 = require("./txt-record-builder.js");
13
+ Object.defineProperty(exports, "createTxtRecordBuilder", { enumerable: true, get: function () { return txt_record_builder_js_1.createTxtRecordBuilder; } });
14
+ var mx_record_builder_js_1 = require("./mx-record-builder.js");
15
+ Object.defineProperty(exports, "createMxRecordBuilder", { enumerable: true, get: function () { return mx_record_builder_js_1.createMxRecordBuilder; } });
16
+ var srv_record_builder_js_1 = require("./srv-record-builder.js");
17
+ Object.defineProperty(exports, "createSrvRecordBuilder", { enumerable: true, get: function () { return srv_record_builder_js_1.createSrvRecordBuilder; } });
18
+ var caa_record_builder_js_1 = require("./caa-record-builder.js");
19
+ Object.defineProperty(exports, "createCaaRecordBuilder", { enumerable: true, get: function () { return caa_record_builder_js_1.createCaaRecordBuilder; } });
20
+ var ns_record_builder_js_1 = require("./ns-record-builder.js");
21
+ Object.defineProperty(exports, "createNsRecordBuilder", { enumerable: true, get: function () { return ns_record_builder_js_1.createNsRecordBuilder; } });
22
+ var ds_record_builder_js_1 = require("./ds-record-builder.js");
23
+ Object.defineProperty(exports, "createDsRecordBuilder", { enumerable: true, get: function () { return ds_record_builder_js_1.createDsRecordBuilder; } });
24
+ var https_record_builder_js_1 = require("./https-record-builder.js");
25
+ Object.defineProperty(exports, "createHttpsRecordBuilder", { enumerable: true, get: function () { return https_record_builder_js_1.createHttpsRecordBuilder; } });
26
+ var svcb_record_builder_js_1 = require("./svcb-record-builder.js");
27
+ Object.defineProperty(exports, "createSvcbRecordBuilder", { enumerable: true, get: function () { return svcb_record_builder_js_1.createSvcbRecordBuilder; } });
28
+ var health_check_builder_js_1 = require("./health-check-builder.js");
29
+ Object.defineProperty(exports, "createHealthCheckBuilder", { enumerable: true, get: function () { return health_check_builder_js_1.createHealthCheckBuilder; } });
30
+ var health_check_alarm_builder_js_1 = require("./health-check-alarm-builder.js");
31
+ Object.defineProperty(exports, "createHealthCheckAlarmBuilder", { enumerable: true, get: function () { return health_check_alarm_builder_js_1.createHealthCheckAlarmBuilder; } });
32
+ var health_check_alarm_defaults_js_1 = require("./health-check-alarm-defaults.js");
33
+ Object.defineProperty(exports, "HEALTH_CHECK_ALARM_DEFAULTS", { enumerable: true, get: function () { return health_check_alarm_defaults_js_1.HEALTH_CHECK_ALARM_DEFAULTS; } });
34
+ var alias_targets_js_1 = require("./alias-targets.js");
35
+ Object.defineProperty(exports, "cloudfrontAliasTarget", { enumerable: true, get: function () { return alias_targets_js_1.cloudfrontAliasTarget; } });
36
+ Object.defineProperty(exports, "apiGatewayAliasTarget", { enumerable: true, get: function () { return alias_targets_js_1.apiGatewayAliasTarget; } });
37
+ Object.defineProperty(exports, "apiGatewayDomainAliasTarget", { enumerable: true, get: function () { return alias_targets_js_1.apiGatewayDomainAliasTarget; } });
38
+ var defaults_js_1 = require("./defaults.js");
39
+ Object.defineProperty(exports, "HOSTED_ZONE_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.HOSTED_ZONE_DEFAULTS; } });
40
+ Object.defineProperty(exports, "QUERY_LOGGING_LOG_GROUP_NAME_PREFIX", { enumerable: true, get: function () { return defaults_js_1.QUERY_LOGGING_LOG_GROUP_NAME_PREFIX; } });
41
+ Object.defineProperty(exports, "QUERY_LOGGING_RESOURCE_POLICY_NAME", { enumerable: true, get: function () { return defaults_js_1.QUERY_LOGGING_RESOURCE_POLICY_NAME; } });
42
+ Object.defineProperty(exports, "A_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.A_RECORD_DEFAULTS; } });
43
+ Object.defineProperty(exports, "AAAA_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.AAAA_RECORD_DEFAULTS; } });
44
+ Object.defineProperty(exports, "CNAME_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.CNAME_RECORD_DEFAULTS; } });
45
+ Object.defineProperty(exports, "TXT_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.TXT_RECORD_DEFAULTS; } });
46
+ Object.defineProperty(exports, "MX_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.MX_RECORD_DEFAULTS; } });
47
+ Object.defineProperty(exports, "SRV_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.SRV_RECORD_DEFAULTS; } });
48
+ Object.defineProperty(exports, "CAA_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.CAA_RECORD_DEFAULTS; } });
49
+ Object.defineProperty(exports, "NS_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.NS_RECORD_DEFAULTS; } });
50
+ Object.defineProperty(exports, "DS_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.DS_RECORD_DEFAULTS; } });
51
+ Object.defineProperty(exports, "HTTPS_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.HTTPS_RECORD_DEFAULTS; } });
52
+ Object.defineProperty(exports, "SVCB_RECORD_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.SVCB_RECORD_DEFAULTS; } });
53
+ Object.defineProperty(exports, "HEALTH_CHECK_DEFAULTS", { enumerable: true, get: function () { return defaults_js_1.HEALTH_CHECK_DEFAULTS; } });
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mEAKkC;AAJhC,iIAAA,uBAAuB,OAAA;AAMzB,6DAK+B;AAJ7B,2HAAA,oBAAoB,OAAA;AAKtB,mEAKkC;AAJhC,iIAAA,uBAAuB,OAAA;AAKzB,qEAKmC;AAJjC,mIAAA,wBAAwB,OAAA;AAK1B,iEAKiC;AAJ/B,+HAAA,sBAAsB,OAAA;AAKxB,+DAKgC;AAJ9B,6HAAA,qBAAqB,OAAA;AAKvB,iEAKiC;AAJ/B,+HAAA,sBAAsB,OAAA;AAKxB,iEAKiC;AAJ/B,+HAAA,sBAAsB,OAAA;AAKxB,+DAKgC;AAJ9B,6HAAA,qBAAqB,OAAA;AAKvB,+DAKgC;AAJ9B,6HAAA,qBAAqB,OAAA;AAKvB,qEAKmC;AAJjC,mIAAA,wBAAwB,OAAA;AAK1B,mEAKkC;AAJhC,iIAAA,uBAAuB,OAAA;AAKzB,qEAKmC;AAJjC,mIAAA,wBAAwB,OAAA;AAK1B,iFAKyC;AAJvC,8IAAA,6BAA6B,OAAA;AAM/B,mFAA+E;AAAtE,6IAAA,2BAA2B,OAAA;AACpC,uDAI4B;AAH1B,yHAAA,qBAAqB,OAAA;AACrB,yHAAA,qBAAqB,OAAA;AACrB,+HAAA,2BAA2B,OAAA;AAE7B,6CAgBuB;AAfrB,mHAAA,oBAAoB,OAAA;AACpB,kIAAA,mCAAmC,OAAA;AACnC,iIAAA,kCAAkC,OAAA;AAClC,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AACpB,oHAAA,qBAAqB,OAAA;AACrB,kHAAA,mBAAmB,OAAA;AACnB,iHAAA,kBAAkB,OAAA;AAClB,kHAAA,mBAAmB,OAAA;AACnB,kHAAA,mBAAmB,OAAA;AACnB,iHAAA,kBAAkB,OAAA;AAClB,iHAAA,kBAAkB,OAAA;AAClB,oHAAA,qBAAqB,OAAA;AACrB,mHAAA,oBAAoB,OAAA;AACpB,oHAAA,qBAAqB,OAAA"}