@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":"ns-record-builder.d.ts","sourceRoot":"","sources":["../../src/ns-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACvE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;;;;GAMG;AAEH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAE/E,cAAM,eAAgB,YAAW,SAAS,CAAC,qBAAqB,CAAC;IAC/D,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAM;IAE1C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAqB;CA6B9F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAGxD"}
@@ -33,6 +33,7 @@ class NsRecordBuilder {
33
33
  * @returns A fluent builder for a Route53 NS record.
34
34
  */
35
35
  export function createNsRecordBuilder() {
36
+ // eslint-disable-next-line composurecdk/builder-must-be-tagged -- AWS::Route53::RecordSet has no Tags property
36
37
  return Builder(NsRecordBuilder);
37
38
  }
38
39
  //# sourceMappingURL=ns-record-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ns-record-builder.js","sourceRoot":"","sources":["../../src/ns-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwC,MAAM,yBAAyB,CAAC;AAEzF,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA+BnD,MAAM,eAAe;IACnB,KAAK,GAAkC,EAAE,CAAC;IAE1C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACzD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,sDAAsD,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,oBAAoB,EAAE,2BAA2B;gBAC/C,0FAA0F,CAC7F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,oBAAoB,EAAE,+BAA+B;gBACnD,yEAAyE,CAC5E,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,kBAAkB;YACrB,GAAG,IAAI;YACP,UAAU;YACV,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACZ,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,+GAA+G;IAC/G,OAAO,OAAO,CAAwC,eAAe,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,60 @@
1
+ import { type LogGroup, ResourcePolicy } from "aws-cdk-lib/aws-logs";
2
+ import type { IConstruct } from "constructs";
3
+ import { type ILogGroupBuilder } from "@composurecdk/logs";
4
+ /**
5
+ * Configures Route 53 public-hosted-zone DNS query logging. Pass `false` to
6
+ * disable, or an object to either customize the auto-created CloudWatch
7
+ * {@link LogGroup} sub-builder or to plug in a pre-existing log group ARN.
8
+ *
9
+ * `configure` cannot be combined with `logGroupArn` — the latter says
10
+ * "I am bringing my own log group", which leaves nothing to configure.
11
+ *
12
+ * When auto-creating, the builder also materialises a single shared
13
+ * `AWS::Logs::ResourcePolicy` per stack that grants the Route 53 service
14
+ * principal write access to every log group under `/aws/route53/*`. This
15
+ * sidesteps the 10-policy/region soft limit that the naive per-zone policy
16
+ * approach would hit at four hosted zones.
17
+ *
18
+ * @see https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/query-logs.html
19
+ * @see https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateQueryLoggingConfig.html
20
+ */
21
+ export type QueryLoggingConfig = false | {
22
+ /**
23
+ * Customize the auto-created LogGroup sub-builder. Receives a builder
24
+ * pre-seeded with the `/aws/route53/<zoneName>` log-group name; the
25
+ * well-architected retention/removal defaults from
26
+ * {@link createLogGroupBuilder} are merged in at `build()` time and
27
+ * are overridable by anything set on the builder here. Cannot be
28
+ * combined with {@link logGroupArn}.
29
+ */
30
+ configure?: (b: ILogGroupBuilder) => ILogGroupBuilder;
31
+ /**
32
+ * Use a pre-existing log group instead of letting the builder create
33
+ * one. The ARN must point at a log group in `us-east-1`, and the
34
+ * caller is responsible for the `route53.amazonaws.com` resource
35
+ * policy. Cannot be combined with {@link configure}.
36
+ */
37
+ logGroupArn?: string;
38
+ };
39
+ interface ResolvedQueryLogging {
40
+ /** The log group created for this hosted zone, or `undefined` when query logging is disabled or user-supplied. */
41
+ queryLogGroup?: LogGroup;
42
+ /** ARN to write into `PublicHostedZoneProps.queryLogsLogGroupArn`, or `undefined` when query logging is disabled. */
43
+ queryLogsLogGroupArn?: string;
44
+ /**
45
+ * The shared `ResourcePolicy` covering this log group, or `undefined` when
46
+ * query logging is disabled or the user supplied their own log group. The
47
+ * caller wires the hosted zone's `DependsOn` against this so Route 53 does
48
+ * not race the policy on first write.
49
+ */
50
+ policy?: ResourcePolicy;
51
+ }
52
+ /**
53
+ * Resolve the query-logging configuration for a hosted zone build, creating
54
+ * the auxiliary `LogGroup` and shared `ResourcePolicy` constructs as needed.
55
+ *
56
+ * @internal
57
+ */
58
+ export declare function resolveQueryLogging(scope: IConstruct, id: string, zoneName: string, cfg: QueryLoggingConfig | undefined): ResolvedQueryLogging;
59
+ export {};
60
+ //# sourceMappingURL=query-logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-logging.d.ts","sourceRoot":"","sources":["../../src/query-logging.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOlF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,GAC1B,KAAK,GACL;IACE;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,gBAAgB,CAAC;IAEtD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAMN,UAAU,oBAAoB;IAC5B,kHAAkH;IAClH,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,qHAAqH;IACrH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,kBAAkB,GAAG,SAAS,GAClC,oBAAoB,CA8BtB"}
@@ -0,0 +1,133 @@
1
+ import { Annotations, Aws, Stack, Token } from "aws-cdk-lib";
2
+ import { Effect, PolicyStatement, ServicePrincipal } from "aws-cdk-lib/aws-iam";
3
+ import { ResourcePolicy } from "aws-cdk-lib/aws-logs";
4
+ import { createLogGroupBuilder } from "@composurecdk/logs";
5
+ import { QUERY_LOGGING_LOG_GROUP_NAME_PREFIX, QUERY_LOGGING_RESOURCE_POLICY_ID, QUERY_LOGGING_RESOURCE_POLICY_NAME, } from "./defaults.js";
6
+ const QUERY_LOG_REGION = "us-east-1";
7
+ const QUERY_LOGGING_REGION_ANNOTATION = "@composurecdk/route53:query-logging-region";
8
+ const QUERY_LOGGING_NAME_ANNOTATION = "@composurecdk/route53:query-logging-name";
9
+ /**
10
+ * Resolve the query-logging configuration for a hosted zone build, creating
11
+ * the auxiliary `LogGroup` and shared `ResourcePolicy` constructs as needed.
12
+ *
13
+ * @internal
14
+ */
15
+ export function resolveQueryLogging(scope, id, zoneName, cfg) {
16
+ if (cfg === false)
17
+ return {};
18
+ if (cfg?.logGroupArn !== undefined) {
19
+ if (cfg.configure !== undefined) {
20
+ throw new Error(`queryLogging: 'configure' cannot be combined with 'logGroupArn' — ` +
21
+ `the log group is user-managed and not built by this builder.`);
22
+ }
23
+ warnIfArnNotUsEast1(scope, cfg.logGroupArn);
24
+ return { queryLogsLogGroupArn: cfg.logGroupArn };
25
+ }
26
+ errorIfStackNotUsEast1(scope);
27
+ const defaultLogGroupName = `${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/${stripTrailingDot(zoneName)}`;
28
+ let subBuilder = createLogGroupBuilder().logGroupName(defaultLogGroupName);
29
+ if (cfg?.configure) {
30
+ subBuilder = cfg.configure(subBuilder);
31
+ }
32
+ const queryLogGroup = subBuilder.build(scope, `${id}QueryLogs`).logGroup;
33
+ warnIfLogGroupNameOutsidePrefix(scope, id, subBuilder.logGroupName());
34
+ return {
35
+ queryLogGroup,
36
+ queryLogsLogGroupArn: queryLogGroup.logGroupArn,
37
+ policy: ensureSharedResourcePolicy(scope),
38
+ };
39
+ }
40
+ function stripTrailingDot(name) {
41
+ return name.endsWith(".") ? name.slice(0, -1) : name;
42
+ }
43
+ function ensureSharedResourcePolicy(scope) {
44
+ const stack = Stack.of(scope);
45
+ const existing = stack.node.tryFindChild(QUERY_LOGGING_RESOURCE_POLICY_ID);
46
+ if (existing instanceof ResourcePolicy)
47
+ return existing;
48
+ return new ResourcePolicy(stack, QUERY_LOGGING_RESOURCE_POLICY_ID, {
49
+ resourcePolicyName: QUERY_LOGGING_RESOURCE_POLICY_NAME,
50
+ policyStatements: [
51
+ new PolicyStatement({
52
+ sid: "AllowRoute53QueryLogging",
53
+ effect: Effect.ALLOW,
54
+ principals: [new ServicePrincipal("route53.amazonaws.com")],
55
+ actions: ["logs:CreateLogStream", "logs:PutLogEvents"],
56
+ resources: [
57
+ `arn:${Aws.PARTITION}:logs:${QUERY_LOG_REGION}:${Aws.ACCOUNT_ID}:log-group:${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/*:*`,
58
+ ],
59
+ conditions: {
60
+ StringEquals: { "aws:SourceAccount": Aws.ACCOUNT_ID },
61
+ },
62
+ }),
63
+ ],
64
+ });
65
+ }
66
+ function errorIfStackNotUsEast1(scope) {
67
+ const region = Stack.of(scope).region;
68
+ if (Token.isUnresolved(region)) {
69
+ checkEnvAgnosticRegion(scope);
70
+ return;
71
+ }
72
+ if (region === QUERY_LOG_REGION)
73
+ return;
74
+ throw new Error(buildRegionErrorMessage(region));
75
+ }
76
+ // Env-agnostic stacks have no concrete region in the synthesised template, so
77
+ // fall back to CDK_DEFAULT_REGION — the same env var the CDK toolkit uses to
78
+ // fill the deploy region. Unset means we can't verify at synth time and warn
79
+ // instead, so deploying outside us-east-1 still surfaces a clear synth-time
80
+ // signal rather than the obscure CFN error.
81
+ function checkEnvAgnosticRegion(scope) {
82
+ const envRegion = process.env.CDK_DEFAULT_REGION;
83
+ if (envRegion === undefined || envRegion === "") {
84
+ Annotations.of(scope).addWarningV2(QUERY_LOGGING_REGION_ANNOTATION, `Route 53 query logging is enabled by default and requires the CloudWatch log ` +
85
+ `group to live in ${QUERY_LOG_REGION}. This stack is env-agnostic and CDK_DEFAULT_REGION ` +
86
+ `is not set, so the deploy region cannot be verified at synth time. Deploying ` +
87
+ `outside ${QUERY_LOG_REGION} will fail with "InvalidInputException - The ARN for the ` +
88
+ `CloudWatch Logs log group is invalid". To silence this warning, either pin ` +
89
+ `env: { region: '${QUERY_LOG_REGION}' } on the stack, pass queryLogging({ logGroupArn }) ` +
90
+ `referencing a log group you own in ${QUERY_LOG_REGION}, or queryLogging(false) to opt out.`);
91
+ return;
92
+ }
93
+ if (envRegion === QUERY_LOG_REGION)
94
+ return;
95
+ throw new Error(buildRegionErrorMessage(envRegion));
96
+ }
97
+ function buildRegionErrorMessage(region) {
98
+ return (`Route 53 accepts DNS query logs only in ${QUERY_LOG_REGION}, but this stack is deployed in "${region}". ` +
99
+ `Without this check, the deploy fails late with "InvalidInputException - The ARN for the ` +
100
+ `CloudWatch Logs log group is invalid" after CloudFormation has already started rolling forward. ` +
101
+ `Either:\n` +
102
+ ` 1. Deploy the stack containing this hosted zone in ${QUERY_LOG_REGION}, or\n` +
103
+ ` 2. Pass queryLogging({ logGroupArn: 'arn:aws:logs:${QUERY_LOG_REGION}:...' }) referencing a log group ` +
104
+ `you own in ${QUERY_LOG_REGION}, or\n` +
105
+ ` 3. Set queryLogging(false) to opt out.`);
106
+ }
107
+ function warnIfArnNotUsEast1(scope, arn) {
108
+ if (Token.isUnresolved(arn))
109
+ return;
110
+ const region = parseLogGroupArnRegion(arn);
111
+ if (region === undefined || region === QUERY_LOG_REGION)
112
+ return;
113
+ Annotations.of(scope).addWarningV2(QUERY_LOGGING_REGION_ANNOTATION, `queryLogging.logGroupArn references a log group in "${region}", but Route 53 query logs ` +
114
+ `are accepted only in ${QUERY_LOG_REGION}. The deploy will fail unless this ARN is corrected.`);
115
+ }
116
+ function warnIfLogGroupNameOutsidePrefix(scope, id, logGroupName) {
117
+ if (logGroupName === undefined || Token.isUnresolved(logGroupName))
118
+ return;
119
+ if (logGroupName.startsWith(`${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/`))
120
+ return;
121
+ Annotations.of(scope).addWarningV2(QUERY_LOGGING_NAME_ANNOTATION, `Hosted zone "${id}" query log group is named "${logGroupName}", which is outside the ` +
122
+ `"${QUERY_LOGGING_LOG_GROUP_NAME_PREFIX}/*" prefix that the auto-managed resource policy ` +
123
+ `covers. Add a resource policy on this log group granting route53.amazonaws.com permission ` +
124
+ `to logs:CreateLogStream and logs:PutLogEvents, or change the name back to the default prefix.`);
125
+ }
126
+ function parseLogGroupArnRegion(arn) {
127
+ // arn:partition:logs:region:account:log-group:name
128
+ const parts = arn.split(":");
129
+ if (parts.length < 6 || parts[0] !== "arn" || parts[2] !== "logs")
130
+ return undefined;
131
+ return parts[3];
132
+ }
133
+ //# sourceMappingURL=query-logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-logging.js","sourceRoot":"","sources":["../../src/query-logging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { SrvRecord, type SrvRecordProps, 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 SRV record builder.
6
+ *
7
+ * Extends the CDK {@link SrvRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface SrvRecordBuilderProps extends Omit<SrvRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link ISrvRecordBuilder}.
16
+ */
17
+ export interface SrvRecordBuilderResult {
18
+ /** The Route53 SRV record construct created by the builder. */
19
+ record: SrvRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 SRV record.
23
+ *
24
+ * SRV records advertise the location (host + port) of a named service, and
25
+ * the record name typically follows the `_service._proto` convention (e.g.
26
+ * `_sip._tcp`). Lower priority wins; weight distributes load across peers.
27
+ */
28
+ export type ISrvRecordBuilder = IBuilder<SrvRecordBuilderProps, SrvRecordBuilder>;
29
+ declare class SrvRecordBuilder implements Lifecycle<SrvRecordBuilderResult> {
30
+ props: Partial<SrvRecordBuilderProps>;
31
+ build(scope: IConstruct, id: string, context?: Record<string, object>): SrvRecordBuilderResult;
32
+ }
33
+ /**
34
+ * Creates a new {@link ISrvRecordBuilder} for configuring a Route53 SRV record.
35
+ *
36
+ * @returns A fluent builder for a Route53 SRV record.
37
+ */
38
+ export declare function createSrvRecordBuilder(): ISrvRecordBuilder;
39
+ export {};
40
+ //# sourceMappingURL=srv-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"srv-record-builder.d.ts","sourceRoot":"","sources":["../../src/srv-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;;;;;;GAMG;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"}
@@ -28,6 +28,7 @@ class SrvRecordBuilder {
28
28
  * @returns A fluent builder for a Route53 SRV record.
29
29
  */
30
30
  export function createSrvRecordBuilder() {
31
+ // eslint-disable-next-line composurecdk/builder-must-be-tagged -- AWS::Route53::RecordSet has no Tags property
31
32
  return Builder(SrvRecordBuilder);
32
33
  }
33
34
  //# sourceMappingURL=srv-record-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"srv-record-builder.js","sourceRoot":"","sources":["../../src/srv-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;AA+BpD,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,+EAA+E,CAClF,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,41 @@
1
+ import { SvcbRecord, type SvcbRecordProps, 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 SVCB record builder.
6
+ *
7
+ * Extends the CDK {@link SvcbRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface SvcbRecordBuilderProps extends Omit<SvcbRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link ISvcbRecordBuilder}.
16
+ */
17
+ export interface SvcbRecordBuilderResult {
18
+ /** The Route53 SVCB record construct created by the builder. */
19
+ record: SvcbRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 SVCB record.
23
+ *
24
+ * SVCB is the generic service-binding record type (RFC 9460). For HTTPS
25
+ * specifically, prefer {@link createHttpsRecordBuilder} — most clients only
26
+ * consult HTTPS records for web traffic.
27
+ */
28
+ export type ISvcbRecordBuilder = IBuilder<SvcbRecordBuilderProps, SvcbRecordBuilder>;
29
+ declare class SvcbRecordBuilder implements Lifecycle<SvcbRecordBuilderResult> {
30
+ props: Partial<SvcbRecordBuilderProps>;
31
+ build(scope: IConstruct, id: string, context?: Record<string, object>): SvcbRecordBuilderResult;
32
+ }
33
+ /**
34
+ * Creates a new {@link ISvcbRecordBuilder} for configuring a Route53 SVCB
35
+ * record.
36
+ *
37
+ * @returns A fluent builder for a Route53 SVCB record.
38
+ */
39
+ export declare function createSvcbRecordBuilder(): ISvcbRecordBuilder;
40
+ export {};
41
+ //# sourceMappingURL=svcb-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svcb-record-builder.d.ts","sourceRoot":"","sources":["../../src/svcb-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC7F,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,sBAAuB,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;IAC3E,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;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;CAwBhG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAG5D"}
@@ -29,6 +29,7 @@ class SvcbRecordBuilder {
29
29
  * @returns A fluent builder for a Route53 SVCB record.
30
30
  */
31
31
  export function createSvcbRecordBuilder() {
32
+ // eslint-disable-next-line composurecdk/builder-must-be-tagged -- AWS::Route53::RecordSet has no Tags property
32
33
  return Builder(SvcbRecordBuilder);
33
34
  }
34
35
  //# sourceMappingURL=svcb-record-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svcb-record-builder.js","sourceRoot":"","sources":["../../src/svcb-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0C,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AA+BrD,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,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,sBAAsB,EAAE,+BAA+B;gBACrD,0DAA0D,CAC7D,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,oBAAoB;YACvB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACV,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,38 @@
1
+ import { TxtRecord, type TxtRecordProps, 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 TXT record builder.
6
+ *
7
+ * Extends the CDK {@link TxtRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface TxtRecordBuilderProps extends Omit<TxtRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link ITxtRecordBuilder}.
16
+ */
17
+ export interface TxtRecordBuilderResult {
18
+ /** The Route53 TXT record construct created by the builder. */
19
+ record: TxtRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 TXT record.
23
+ *
24
+ * Commonly used for SPF, DKIM, DMARC, and domain-verification tokens.
25
+ */
26
+ export type ITxtRecordBuilder = IBuilder<TxtRecordBuilderProps, TxtRecordBuilder>;
27
+ declare class TxtRecordBuilder implements Lifecycle<TxtRecordBuilderResult> {
28
+ props: Partial<TxtRecordBuilderProps>;
29
+ build(scope: IConstruct, id: string, context?: Record<string, object>): TxtRecordBuilderResult;
30
+ }
31
+ /**
32
+ * Creates a new {@link ITxtRecordBuilder} for configuring a Route53 TXT record.
33
+ *
34
+ * @returns A fluent builder for a Route53 TXT record.
35
+ */
36
+ export declare function createTxtRecordBuilder(): ITxtRecordBuilder;
37
+ export {};
38
+ //# sourceMappingURL=txt-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"txt-record-builder.d.ts","sourceRoot":"","sources":["../../src/txt-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;;;;GAIG;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"}
@@ -28,6 +28,7 @@ class TxtRecordBuilder {
28
28
  * @returns A fluent builder for a Route53 TXT record.
29
29
  */
30
30
  export function createTxtRecordBuilder() {
31
+ // eslint-disable-next-line composurecdk/builder-must-be-tagged -- AWS::Route53::RecordSet has no Tags property
31
32
  return Builder(TxtRecordBuilder);
32
33
  }
33
34
  //# sourceMappingURL=txt-record-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"txt-record-builder.js","sourceRoot":"","sources":["../../src/txt-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;AA6BpD,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,qDAAqD,CACxD,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,3 @@
1
+ export { APEX, A, AAAA, ALIAS, CNAME, TXT, MX, SRV, CAA, CAA_ISSUE, CAA_ISSUEWILD, CAA_IODEF, NS, DS, HTTPS, SVCB, type AliasRecordOptions, type RecordOptions, type RecordSpec, type RecordType, type ARecordSpec, type AaaaRecordSpec, type AliasRecordSpec, type CnameRecordSpec, type TxtRecordSpec, type MxRecordSpec, type SrvRecordSpec, type CaaRecordSpec, type NsRecordSpec, type DsRecordSpec, type HttpsRecordSpec, type SvcbRecordSpec, } from "./zone-dsl.js";
2
+ export { zoneRecords, type IZoneRecordsBuilder, type ZoneRecordsBuilderResult, } from "./zone-records.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/zone/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,KAAK,EACL,KAAK,EACL,GAAG,EACH,EAAE,EACF,GAAG,EACH,GAAG,EACH,SAAS,EACT,aAAa,EACb,SAAS,EACT,EAAE,EACF,EAAE,EACF,KAAK,EACL,IAAI,EACJ,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/zone/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,CAAC,EACD,IAAI,EACJ,KAAK,EACL,KAAK,EACL,GAAG,EACH,EAAE,EACF,GAAG,EACH,GAAG,EACH,SAAS,EACT,aAAa,EACb,SAAS,EACT,EAAE,EACF,EAAE,EACF,KAAK,EACL,IAAI,GAiBL,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,WAAW,GAGZ,MAAM,mBAAmB,CAAC"}