@composurecdk/route53 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/README.md +54 -4
  2. package/dist/commonjs/a-record-builder.d.ts.map +1 -0
  3. package/dist/commonjs/a-record-builder.js +38 -0
  4. package/dist/commonjs/a-record-builder.js.map +1 -0
  5. package/dist/commonjs/aaaa-record-builder.d.ts.map +1 -0
  6. package/dist/commonjs/aaaa-record-builder.js +39 -0
  7. package/dist/commonjs/aaaa-record-builder.js.map +1 -0
  8. package/dist/commonjs/alias-targets.d.ts.map +1 -0
  9. package/dist/commonjs/alias-targets.js +50 -0
  10. package/dist/commonjs/alias-targets.js.map +1 -0
  11. package/dist/commonjs/caa-record-builder.d.ts.map +1 -0
  12. package/dist/commonjs/caa-record-builder.js +37 -0
  13. package/dist/commonjs/caa-record-builder.js.map +1 -0
  14. package/dist/commonjs/cname-record-builder.d.ts.map +1 -0
  15. package/dist/commonjs/cname-record-builder.js +43 -0
  16. package/dist/commonjs/cname-record-builder.js.map +1 -0
  17. package/dist/{defaults.d.ts → commonjs/defaults.d.ts} +30 -4
  18. package/dist/commonjs/defaults.d.ts.map +1 -0
  19. package/dist/commonjs/defaults.js +159 -0
  20. package/dist/commonjs/defaults.js.map +1 -0
  21. package/dist/commonjs/ds-record-builder.d.ts.map +1 -0
  22. package/dist/commonjs/ds-record-builder.js +37 -0
  23. package/dist/commonjs/ds-record-builder.js.map +1 -0
  24. package/dist/commonjs/health-check-alarm-builder.d.ts.map +1 -0
  25. package/dist/commonjs/health-check-alarm-builder.js +136 -0
  26. package/dist/commonjs/health-check-alarm-builder.js.map +1 -0
  27. package/dist/commonjs/health-check-alarm-config.d.ts.map +1 -0
  28. package/dist/commonjs/health-check-alarm-config.js +3 -0
  29. package/dist/commonjs/health-check-alarm-config.js.map +1 -0
  30. package/dist/commonjs/health-check-alarm-defaults.d.ts.map +1 -0
  31. package/dist/commonjs/health-check-alarm-defaults.js +29 -0
  32. package/dist/commonjs/health-check-alarm-defaults.js.map +1 -0
  33. package/dist/commonjs/health-check-alarms.d.ts.map +1 -0
  34. package/dist/commonjs/health-check-alarms.js +45 -0
  35. package/dist/commonjs/health-check-alarms.js.map +1 -0
  36. package/dist/commonjs/health-check-builder.d.ts.map +1 -0
  37. package/dist/commonjs/health-check-builder.js +56 -0
  38. package/dist/commonjs/health-check-builder.js.map +1 -0
  39. package/dist/{hosted-zone-builder.d.ts → commonjs/hosted-zone-builder.d.ts} +26 -7
  40. package/dist/commonjs/hosted-zone-builder.d.ts.map +1 -0
  41. package/dist/commonjs/hosted-zone-builder.js +60 -0
  42. package/dist/commonjs/hosted-zone-builder.js.map +1 -0
  43. package/dist/commonjs/https-record-builder.d.ts.map +1 -0
  44. package/dist/commonjs/https-record-builder.js +45 -0
  45. package/dist/commonjs/https-record-builder.js.map +1 -0
  46. package/dist/{index.d.ts → commonjs/index.d.ts} +2 -1
  47. package/dist/commonjs/index.d.ts.map +1 -0
  48. package/dist/commonjs/index.js +54 -0
  49. package/dist/commonjs/index.js.map +1 -0
  50. package/dist/commonjs/mx-record-builder.d.ts.map +1 -0
  51. package/dist/commonjs/mx-record-builder.js +37 -0
  52. package/dist/commonjs/mx-record-builder.js.map +1 -0
  53. package/dist/commonjs/ns-record-builder.d.ts.map +1 -0
  54. package/dist/commonjs/ns-record-builder.js +42 -0
  55. package/dist/commonjs/ns-record-builder.js.map +1 -0
  56. package/dist/commonjs/package.json +3 -0
  57. package/dist/commonjs/query-logging.d.ts +60 -0
  58. package/dist/commonjs/query-logging.d.ts.map +1 -0
  59. package/dist/commonjs/query-logging.js +136 -0
  60. package/dist/commonjs/query-logging.js.map +1 -0
  61. package/dist/commonjs/srv-record-builder.d.ts.map +1 -0
  62. package/dist/commonjs/srv-record-builder.js +37 -0
  63. package/dist/commonjs/srv-record-builder.js.map +1 -0
  64. package/dist/commonjs/svcb-record-builder.d.ts.map +1 -0
  65. package/dist/commonjs/svcb-record-builder.js +38 -0
  66. package/dist/commonjs/svcb-record-builder.js.map +1 -0
  67. package/dist/commonjs/txt-record-builder.d.ts.map +1 -0
  68. package/dist/commonjs/txt-record-builder.js +37 -0
  69. package/dist/commonjs/txt-record-builder.js.map +1 -0
  70. package/dist/commonjs/zone/index.d.ts.map +1 -0
  71. package/dist/commonjs/zone/index.js +23 -0
  72. package/dist/commonjs/zone/index.js.map +1 -0
  73. package/dist/commonjs/zone/zone-dsl.d.ts.map +1 -0
  74. package/dist/commonjs/zone/zone-dsl.js +247 -0
  75. package/dist/commonjs/zone/zone-dsl.js.map +1 -0
  76. package/dist/commonjs/zone/zone-records.d.ts.map +1 -0
  77. package/dist/commonjs/zone/zone-records.js +322 -0
  78. package/dist/commonjs/zone/zone-records.js.map +1 -0
  79. package/dist/esm/a-record-builder.d.ts +56 -0
  80. package/dist/esm/a-record-builder.d.ts.map +1 -0
  81. package/dist/esm/a-record-builder.js.map +1 -0
  82. package/dist/esm/aaaa-record-builder.d.ts +44 -0
  83. package/dist/esm/aaaa-record-builder.d.ts.map +1 -0
  84. package/dist/esm/aaaa-record-builder.js.map +1 -0
  85. package/dist/esm/alias-targets.d.ts +34 -0
  86. package/dist/esm/alias-targets.d.ts.map +1 -0
  87. package/dist/esm/alias-targets.js.map +1 -0
  88. package/dist/esm/caa-record-builder.d.ts +44 -0
  89. package/dist/esm/caa-record-builder.d.ts.map +1 -0
  90. package/dist/esm/caa-record-builder.js.map +1 -0
  91. package/dist/esm/cname-record-builder.d.ts +42 -0
  92. package/dist/esm/cname-record-builder.d.ts.map +1 -0
  93. package/dist/esm/cname-record-builder.js.map +1 -0
  94. package/dist/esm/defaults.d.ts +119 -0
  95. package/dist/esm/defaults.d.ts.map +1 -0
  96. package/dist/{defaults.js → esm/defaults.js} +37 -4
  97. package/dist/esm/defaults.js.map +1 -0
  98. package/dist/esm/ds-record-builder.d.ts +42 -0
  99. package/dist/esm/ds-record-builder.d.ts.map +1 -0
  100. package/dist/esm/ds-record-builder.js.map +1 -0
  101. package/dist/esm/health-check-alarm-builder.d.ts +133 -0
  102. package/dist/esm/health-check-alarm-builder.d.ts.map +1 -0
  103. package/dist/esm/health-check-alarm-builder.js.map +1 -0
  104. package/dist/esm/health-check-alarm-config.d.ts +39 -0
  105. package/dist/esm/health-check-alarm-config.d.ts.map +1 -0
  106. package/dist/esm/health-check-alarm-config.js.map +1 -0
  107. package/dist/esm/health-check-alarm-defaults.d.ts +13 -0
  108. package/dist/esm/health-check-alarm-defaults.d.ts.map +1 -0
  109. package/dist/esm/health-check-alarm-defaults.js.map +1 -0
  110. package/dist/esm/health-check-alarms.d.ts +15 -0
  111. package/dist/esm/health-check-alarms.d.ts.map +1 -0
  112. package/dist/esm/health-check-alarms.js.map +1 -0
  113. package/dist/esm/health-check-builder.d.ts +103 -0
  114. package/dist/esm/health-check-builder.d.ts.map +1 -0
  115. package/dist/esm/health-check-builder.js.map +1 -0
  116. package/dist/esm/hosted-zone-builder.d.ts +95 -0
  117. package/dist/esm/hosted-zone-builder.d.ts.map +1 -0
  118. package/dist/{hosted-zone-builder.js → esm/hosted-zone-builder.js} +11 -3
  119. package/dist/esm/hosted-zone-builder.js.map +1 -0
  120. package/dist/esm/https-record-builder.d.ts +45 -0
  121. package/dist/esm/https-record-builder.d.ts.map +1 -0
  122. package/dist/esm/https-record-builder.js.map +1 -0
  123. package/dist/esm/index.d.ts +20 -0
  124. package/dist/esm/index.d.ts.map +1 -0
  125. package/dist/{index.js → esm/index.js} +1 -1
  126. package/dist/esm/index.js.map +1 -0
  127. package/dist/esm/mx-record-builder.d.ts +40 -0
  128. package/dist/esm/mx-record-builder.d.ts.map +1 -0
  129. package/dist/esm/mx-record-builder.js.map +1 -0
  130. package/dist/esm/ns-record-builder.d.ts +40 -0
  131. package/dist/esm/ns-record-builder.d.ts.map +1 -0
  132. package/dist/esm/ns-record-builder.js.map +1 -0
  133. package/dist/esm/package.json +3 -0
  134. package/dist/esm/query-logging.d.ts +60 -0
  135. package/dist/esm/query-logging.d.ts.map +1 -0
  136. package/dist/esm/query-logging.js +133 -0
  137. package/dist/esm/query-logging.js.map +1 -0
  138. package/dist/esm/srv-record-builder.d.ts +40 -0
  139. package/dist/esm/srv-record-builder.d.ts.map +1 -0
  140. package/dist/esm/srv-record-builder.js.map +1 -0
  141. package/dist/esm/svcb-record-builder.d.ts +41 -0
  142. package/dist/esm/svcb-record-builder.d.ts.map +1 -0
  143. package/dist/esm/svcb-record-builder.js.map +1 -0
  144. package/dist/esm/txt-record-builder.d.ts +38 -0
  145. package/dist/esm/txt-record-builder.d.ts.map +1 -0
  146. package/dist/esm/txt-record-builder.js.map +1 -0
  147. package/dist/esm/zone/index.d.ts +3 -0
  148. package/dist/esm/zone/index.d.ts.map +1 -0
  149. package/dist/esm/zone/index.js.map +1 -0
  150. package/dist/esm/zone/zone-dsl.d.ts +296 -0
  151. package/dist/esm/zone/zone-dsl.d.ts.map +1 -0
  152. package/dist/esm/zone/zone-dsl.js.map +1 -0
  153. package/dist/esm/zone/zone-records.d.ts +67 -0
  154. package/dist/esm/zone/zone-records.d.ts.map +1 -0
  155. package/dist/esm/zone/zone-records.js.map +1 -0
  156. package/package.json +48 -22
  157. package/dist/a-record-builder.d.ts.map +0 -1
  158. package/dist/a-record-builder.js.map +0 -1
  159. package/dist/aaaa-record-builder.d.ts.map +0 -1
  160. package/dist/aaaa-record-builder.js.map +0 -1
  161. package/dist/alias-targets.d.ts.map +0 -1
  162. package/dist/alias-targets.js.map +0 -1
  163. package/dist/caa-record-builder.d.ts.map +0 -1
  164. package/dist/caa-record-builder.js.map +0 -1
  165. package/dist/cname-record-builder.d.ts.map +0 -1
  166. package/dist/cname-record-builder.js.map +0 -1
  167. package/dist/defaults.d.ts.map +0 -1
  168. package/dist/defaults.js.map +0 -1
  169. package/dist/ds-record-builder.d.ts.map +0 -1
  170. package/dist/ds-record-builder.js.map +0 -1
  171. package/dist/health-check-alarm-builder.d.ts.map +0 -1
  172. package/dist/health-check-alarm-builder.js.map +0 -1
  173. package/dist/health-check-alarm-config.d.ts.map +0 -1
  174. package/dist/health-check-alarm-config.js.map +0 -1
  175. package/dist/health-check-alarm-defaults.d.ts.map +0 -1
  176. package/dist/health-check-alarm-defaults.js.map +0 -1
  177. package/dist/health-check-alarms.d.ts.map +0 -1
  178. package/dist/health-check-alarms.js.map +0 -1
  179. package/dist/health-check-builder.d.ts.map +0 -1
  180. package/dist/health-check-builder.js.map +0 -1
  181. package/dist/hosted-zone-builder.d.ts.map +0 -1
  182. package/dist/hosted-zone-builder.js.map +0 -1
  183. package/dist/https-record-builder.d.ts.map +0 -1
  184. package/dist/https-record-builder.js.map +0 -1
  185. package/dist/index.d.ts.map +0 -1
  186. package/dist/index.js.map +0 -1
  187. package/dist/mx-record-builder.d.ts.map +0 -1
  188. package/dist/mx-record-builder.js.map +0 -1
  189. package/dist/ns-record-builder.d.ts.map +0 -1
  190. package/dist/ns-record-builder.js.map +0 -1
  191. package/dist/srv-record-builder.d.ts.map +0 -1
  192. package/dist/srv-record-builder.js.map +0 -1
  193. package/dist/svcb-record-builder.d.ts.map +0 -1
  194. package/dist/svcb-record-builder.js.map +0 -1
  195. package/dist/txt-record-builder.d.ts.map +0 -1
  196. package/dist/txt-record-builder.js.map +0 -1
  197. package/dist/zone/index.d.ts.map +0 -1
  198. package/dist/zone/index.js.map +0 -1
  199. package/dist/zone/zone-dsl.d.ts.map +0 -1
  200. package/dist/zone/zone-dsl.js.map +0 -1
  201. package/dist/zone/zone-records.d.ts.map +0 -1
  202. package/dist/zone/zone-records.js.map +0 -1
  203. /package/dist/{a-record-builder.d.ts → commonjs/a-record-builder.d.ts} +0 -0
  204. /package/dist/{aaaa-record-builder.d.ts → commonjs/aaaa-record-builder.d.ts} +0 -0
  205. /package/dist/{alias-targets.d.ts → commonjs/alias-targets.d.ts} +0 -0
  206. /package/dist/{caa-record-builder.d.ts → commonjs/caa-record-builder.d.ts} +0 -0
  207. /package/dist/{cname-record-builder.d.ts → commonjs/cname-record-builder.d.ts} +0 -0
  208. /package/dist/{ds-record-builder.d.ts → commonjs/ds-record-builder.d.ts} +0 -0
  209. /package/dist/{health-check-alarm-builder.d.ts → commonjs/health-check-alarm-builder.d.ts} +0 -0
  210. /package/dist/{health-check-alarm-config.d.ts → commonjs/health-check-alarm-config.d.ts} +0 -0
  211. /package/dist/{health-check-alarm-defaults.d.ts → commonjs/health-check-alarm-defaults.d.ts} +0 -0
  212. /package/dist/{health-check-alarms.d.ts → commonjs/health-check-alarms.d.ts} +0 -0
  213. /package/dist/{health-check-builder.d.ts → commonjs/health-check-builder.d.ts} +0 -0
  214. /package/dist/{https-record-builder.d.ts → commonjs/https-record-builder.d.ts} +0 -0
  215. /package/dist/{mx-record-builder.d.ts → commonjs/mx-record-builder.d.ts} +0 -0
  216. /package/dist/{ns-record-builder.d.ts → commonjs/ns-record-builder.d.ts} +0 -0
  217. /package/dist/{srv-record-builder.d.ts → commonjs/srv-record-builder.d.ts} +0 -0
  218. /package/dist/{svcb-record-builder.d.ts → commonjs/svcb-record-builder.d.ts} +0 -0
  219. /package/dist/{txt-record-builder.d.ts → commonjs/txt-record-builder.d.ts} +0 -0
  220. /package/dist/{zone → commonjs/zone}/index.d.ts +0 -0
  221. /package/dist/{zone → commonjs/zone}/zone-dsl.d.ts +0 -0
  222. /package/dist/{zone → commonjs/zone}/zone-records.d.ts +0 -0
  223. /package/dist/{a-record-builder.js → esm/a-record-builder.js} +0 -0
  224. /package/dist/{aaaa-record-builder.js → esm/aaaa-record-builder.js} +0 -0
  225. /package/dist/{alias-targets.js → esm/alias-targets.js} +0 -0
  226. /package/dist/{caa-record-builder.js → esm/caa-record-builder.js} +0 -0
  227. /package/dist/{cname-record-builder.js → esm/cname-record-builder.js} +0 -0
  228. /package/dist/{ds-record-builder.js → esm/ds-record-builder.js} +0 -0
  229. /package/dist/{health-check-alarm-builder.js → esm/health-check-alarm-builder.js} +0 -0
  230. /package/dist/{health-check-alarm-config.js → esm/health-check-alarm-config.js} +0 -0
  231. /package/dist/{health-check-alarm-defaults.js → esm/health-check-alarm-defaults.js} +0 -0
  232. /package/dist/{health-check-alarms.js → esm/health-check-alarms.js} +0 -0
  233. /package/dist/{health-check-builder.js → esm/health-check-builder.js} +0 -0
  234. /package/dist/{https-record-builder.js → esm/https-record-builder.js} +0 -0
  235. /package/dist/{mx-record-builder.js → esm/mx-record-builder.js} +0 -0
  236. /package/dist/{ns-record-builder.js → esm/ns-record-builder.js} +0 -0
  237. /package/dist/{srv-record-builder.js → esm/srv-record-builder.js} +0 -0
  238. /package/dist/{svcb-record-builder.js → esm/svcb-record-builder.js} +0 -0
  239. /package/dist/{txt-record-builder.js → esm/txt-record-builder.js} +0 -0
  240. /package/dist/{zone → esm/zone}/index.js +0 -0
  241. /package/dist/{zone → esm/zone}/zone-dsl.js +0 -0
  242. /package/dist/{zone → esm/zone}/zone-records.js +0 -0
@@ -0,0 +1,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"}
@@ -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"}
@@ -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"}
@@ -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"}
@@ -0,0 +1,296 @@
1
+ import type { Duration } from "aws-cdk-lib";
2
+ import { CaaTag, type HttpsRecordValue, type RecordTarget, type SvcbRecordValue } from "aws-cdk-lib/aws-route53";
3
+ import type { Resolvable } from "@composurecdk/core";
4
+ /**
5
+ * Sentinel name representing the zone apex (the zone-file `@`).
6
+ *
7
+ * Translated to an undefined CDK `recordName` when bound to a CDK construct.
8
+ */
9
+ export declare const APEX = "@";
10
+ /**
11
+ * Per-record options applied to the underlying CDK construct.
12
+ *
13
+ * Mirrors the optional fields shared by every Route 53 record builder. Each
14
+ * record-type DSL helper accepts these as a trailing options argument.
15
+ */
16
+ export interface RecordOptions {
17
+ /** TTL for the record set. Falls back to the underlying builder's default. */
18
+ readonly ttl?: Duration;
19
+ /** Optional comment passed through to the CDK construct. */
20
+ readonly comment?: string;
21
+ }
22
+ export interface ARecordSpec extends RecordOptions {
23
+ readonly type: "A";
24
+ readonly name: string;
25
+ readonly addresses: readonly string[];
26
+ }
27
+ export interface AaaaRecordSpec extends RecordOptions {
28
+ readonly type: "AAAA";
29
+ readonly name: string;
30
+ readonly addresses: readonly string[];
31
+ }
32
+ export interface CnameRecordSpec extends RecordOptions {
33
+ readonly type: "CNAME";
34
+ readonly name: string;
35
+ readonly target: string;
36
+ }
37
+ export interface TxtRecordSpec extends RecordOptions {
38
+ readonly type: "TXT";
39
+ readonly name: string;
40
+ readonly values: readonly string[];
41
+ }
42
+ export interface MxRecordSpec extends RecordOptions {
43
+ readonly type: "MX";
44
+ readonly name: string;
45
+ readonly values: readonly {
46
+ readonly priority: number;
47
+ readonly hostName: string;
48
+ }[];
49
+ }
50
+ export interface SrvRecordSpec extends RecordOptions {
51
+ readonly type: "SRV";
52
+ readonly name: string;
53
+ readonly values: readonly {
54
+ readonly priority: number;
55
+ readonly weight: number;
56
+ readonly port: number;
57
+ readonly hostName: string;
58
+ }[];
59
+ }
60
+ export interface CaaRecordSpec extends RecordOptions {
61
+ readonly type: "CAA";
62
+ readonly name: string;
63
+ readonly values: readonly {
64
+ readonly flag: number;
65
+ readonly tag: CaaTag;
66
+ readonly value: string;
67
+ }[];
68
+ }
69
+ export interface NsRecordSpec extends RecordOptions {
70
+ readonly type: "NS";
71
+ readonly name: string;
72
+ readonly values: readonly string[];
73
+ }
74
+ export interface DsRecordSpec extends RecordOptions {
75
+ readonly type: "DS";
76
+ readonly name: string;
77
+ readonly values: readonly string[];
78
+ }
79
+ export interface HttpsRecordSpec extends RecordOptions {
80
+ readonly type: "HTTPS";
81
+ readonly name: string;
82
+ readonly values: readonly HttpsRecordValue[];
83
+ }
84
+ export interface SvcbRecordSpec extends RecordOptions {
85
+ readonly type: "SVCB";
86
+ readonly name: string;
87
+ readonly values: readonly SvcbRecordValue[];
88
+ }
89
+ export interface AliasRecordSpec extends RecordOptions {
90
+ readonly type: "ALIAS";
91
+ readonly name: string;
92
+ readonly target: Resolvable<RecordTarget>;
93
+ /** `false` emits an A alias (default); `true` emits an AAAA alias. */
94
+ readonly ipv6: boolean;
95
+ }
96
+ export type RecordSpec = ARecordSpec | AaaaRecordSpec | CnameRecordSpec | TxtRecordSpec | MxRecordSpec | SrvRecordSpec | CaaRecordSpec | NsRecordSpec | DsRecordSpec | HttpsRecordSpec | SvcbRecordSpec | AliasRecordSpec;
97
+ /** Record type discriminators surfaced by {@link RecordSpec}. */
98
+ export type RecordType = RecordSpec["type"];
99
+ /**
100
+ * IPv4 address record. Use {@link APEX} (`"@"`) as `name` for the zone apex.
101
+ *
102
+ * Multiple `A` calls for the same `name` are merged into a single CDK record
103
+ * set with all addresses; alternatively, pass an array as the second argument.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * A("@", "1.2.3.4")
108
+ * A("ha", ["1.2.3.4", "5.6.7.8"])
109
+ * A("www", "1.2.3.4", { ttl: Duration.minutes(10) })
110
+ * ```
111
+ */
112
+ export declare function A(name: string, address: string | readonly string[], options?: RecordOptions): ARecordSpec;
113
+ /**
114
+ * IPv6 address record. See {@link A} for the merging / array semantics — they
115
+ * are identical.
116
+ */
117
+ export declare function AAAA(name: string, address: string | readonly string[], options?: RecordOptions): AaaaRecordSpec;
118
+ /**
119
+ * Canonical-name record. DNS forbids more than one CNAME per name, so a second
120
+ * `CNAME(name, …)` for the same name is a configuration error and is rejected
121
+ * when the records are bound to the zone.
122
+ *
123
+ * CNAMEs also cannot live at the zone apex — use an A/AAAA alias instead.
124
+ *
125
+ * Targets containing dots should be fully qualified (trailing `.`).
126
+ *
127
+ * @example
128
+ * ```ts
129
+ * CNAME("dkim1", "dkim1.39769.dkim.example.")
130
+ * ```
131
+ */
132
+ export declare function CNAME(name: string, target: string, options?: RecordOptions): CnameRecordSpec;
133
+ /**
134
+ * Text record. Pass a single string or an array of strings; multiple `TXT`
135
+ * calls for the same `name` are merged into one CDK record set.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * TXT("@", "v=spf1 mx -all")
140
+ * TXT("_dmarc", "v=DMARC1; p=none;")
141
+ * TXT("multi", ["one", "two"])
142
+ * ```
143
+ */
144
+ export declare function TXT(name: string, value: string | readonly string[], options?: RecordOptions): TxtRecordSpec;
145
+ /**
146
+ * Mail-exchanger record. The argument order matches BIND zone files
147
+ * (`name priority target`); multiple `MX(name, …)` calls for the same name are
148
+ * merged into one CDK record set with all `(priority, hostName)` pairs.
149
+ *
150
+ * Targets containing dots should be fully qualified (trailing `.`).
151
+ *
152
+ * @example
153
+ * ```ts
154
+ * MX("@", 10, "mail.example.com.")
155
+ * MX("@", 20, "backup.example.com.")
156
+ * ```
157
+ */
158
+ export declare function MX(name: string, priority: number, hostName: string, options?: RecordOptions): MxRecordSpec;
159
+ /**
160
+ * Service-locator record. The argument order matches BIND zone files
161
+ * (`name priority weight port target`); multiple `SRV(name, …)` calls for the
162
+ * same name are merged into one CDK record set.
163
+ *
164
+ * Record names typically follow the `_service._proto` convention (e.g.
165
+ * `_sip._tcp`). Lower priority wins; weight distributes load across peers.
166
+ *
167
+ * @example
168
+ * ```ts
169
+ * SRV("_sip._tcp", 10, 60, 5060, "sip1.example.com.")
170
+ * SRV("_sip._tcp", 10, 40, 5060, "sip2.example.com.")
171
+ * ```
172
+ */
173
+ export declare function SRV(name: string, priority: number, weight: number, port: number, hostName: string, options?: RecordOptions): SrvRecordSpec;
174
+ /**
175
+ * Certification-authority authorization record. Argument order matches BIND
176
+ * zone files (`name flag tag value`); multiple `CAA(name, …)` calls for the
177
+ * same name are merged into one CDK record set.
178
+ *
179
+ * For the common cases, prefer {@link CAA_ISSUE}, {@link CAA_ISSUEWILD}, or
180
+ * {@link CAA_IODEF}.
181
+ *
182
+ * @example
183
+ * ```ts
184
+ * CAA("@", 0, CaaTag.ISSUE, "amazon.com")
185
+ * ```
186
+ */
187
+ export declare function CAA(name: string, flag: number, tag: CaaTag, value: string, options?: RecordOptions): CaaRecordSpec;
188
+ /**
189
+ * CAA `issue` record — authorizes a specific certificate authority to issue
190
+ * certificates for the name. Merges with other CAA records at the same name.
191
+ *
192
+ * @example
193
+ * ```ts
194
+ * CAA_ISSUE("@", "amazon.com")
195
+ * CAA_ISSUE("@", "amazontrust.com")
196
+ * ```
197
+ */
198
+ export declare function CAA_ISSUE(name: string, authority: string, options?: RecordOptions): CaaRecordSpec;
199
+ /**
200
+ * CAA `issuewild` record — authorizes a specific CA to issue wildcard
201
+ * certificates for the name. Merges with other CAA records at the same name.
202
+ */
203
+ export declare function CAA_ISSUEWILD(name: string, authority: string, options?: RecordOptions): CaaRecordSpec;
204
+ /**
205
+ * CAA `iodef` record — reports policy violations to a URL. Merges with other
206
+ * CAA records at the same name.
207
+ *
208
+ * @example
209
+ * ```ts
210
+ * CAA_IODEF("@", "mailto:security@example.com")
211
+ * ```
212
+ */
213
+ export declare function CAA_IODEF(name: string, url: string, options?: RecordOptions): CaaRecordSpec;
214
+ /**
215
+ * Name-server delegation record. Delegates a subdomain to the supplied name
216
+ * servers. NS records cannot live at the zone apex — the apex NS set is
217
+ * managed by Route 53 itself.
218
+ *
219
+ * Multiple `NS(name, …)` calls for the same name are merged; alternatively,
220
+ * pass an array of host names.
221
+ *
222
+ * @example
223
+ * ```ts
224
+ * NS("internal", ["ns-1.awsdns-00.co.uk.", "ns-2.awsdns-00.com."])
225
+ * ```
226
+ */
227
+ export declare function NS(name: string, hostName: string | readonly string[], options?: RecordOptions): NsRecordSpec;
228
+ /**
229
+ * DNSSEC delegation-signer record. Each value is a full rdata string
230
+ * (`keyTag algorithm digestType digest`). Multiple `DS(name, …)` calls for the
231
+ * same name are merged.
232
+ *
233
+ * @example
234
+ * ```ts
235
+ * DS("secure", "60485 5 1 2BB183AF5F22588179A53B0A98631FAD1A292118")
236
+ * ```
237
+ */
238
+ export declare function DS(name: string, rdata: string | readonly string[], options?: RecordOptions): DsRecordSpec;
239
+ /**
240
+ * HTTPS service-binding record (RFC 9460). Accepts pre-constructed
241
+ * {@link HttpsRecordValue} instances from the CDK. For alias-mode HTTPS
242
+ * records (typically pointing at a CloudFront distribution), use
243
+ * `createHttpsRecordBuilder` directly — the DSL supports value-mode only.
244
+ *
245
+ * Multiple `HTTPS(name, …)` calls for the same name are merged.
246
+ *
247
+ * @example
248
+ * ```ts
249
+ * HTTPS("@", HttpsRecordValue.service({ alpn: [Alpn.H3, Alpn.H2] }))
250
+ * ```
251
+ */
252
+ export declare function HTTPS(name: string, value: HttpsRecordValue | readonly HttpsRecordValue[], options?: RecordOptions): HttpsRecordSpec;
253
+ /**
254
+ * Generic service-binding record (RFC 9460). For HTTPS specifically, prefer
255
+ * {@link HTTPS} — most clients only consult HTTPS records for web traffic.
256
+ *
257
+ * Multiple `SVCB(name, …)` calls for the same name are merged.
258
+ */
259
+ export declare function SVCB(name: string, value: SvcbRecordValue | readonly SvcbRecordValue[], options?: RecordOptions): SvcbRecordSpec;
260
+ /**
261
+ * Options for {@link ALIAS}. Extends {@link RecordOptions} with `ipv6` to pick
262
+ * between A-alias (default) and AAAA-alias output.
263
+ */
264
+ export interface AliasRecordOptions extends RecordOptions {
265
+ /** When `true`, emit an AAAA alias record instead of an A alias. */
266
+ readonly ipv6?: boolean;
267
+ }
268
+ /**
269
+ * Route 53 alias record — compiles to an A record (or AAAA when
270
+ * `options.ipv6` is `true`) whose target is an `aliasTarget` rather than a
271
+ * list of IP addresses. Use {@link APEX} (`"@"`) as `name` for the zone apex.
272
+ *
273
+ * Pair with the alias-target helpers in `@composurecdk/route53` —
274
+ * `cloudfrontAliasTarget`, `apiGatewayAliasTarget`, or
275
+ * `apiGatewayDomainAliasTarget` — which return `Resolvable<RecordTarget>`.
276
+ *
277
+ * Because DNS permits only one record set per `(type, name)`, an `ALIAS`
278
+ * cannot coexist with address-mode `A`/`AAAA` at the same name, and two
279
+ * `ALIAS` calls for the same `(type, name)` are a configuration error. Both
280
+ * cases are rejected at build time.
281
+ *
282
+ * TTL defaults do not apply to alias records — AWS ignores TTL on aliases and
283
+ * CDK warns if one is set — so the underlying builder suppresses them.
284
+ *
285
+ * @example
286
+ * ```ts
287
+ * ALIAS("@", cloudfrontAliasTarget(
288
+ * ref<DistributionBuilderResult>("cdn").get("distribution"),
289
+ * ))
290
+ * ALIAS("@", cloudfrontAliasTarget(
291
+ * ref<DistributionBuilderResult>("cdn").get("distribution"),
292
+ * ), { ipv6: true })
293
+ * ```
294
+ */
295
+ export declare function ALIAS(name: string, target: Resolvable<RecordTarget>, options?: AliasRecordOptions): AliasRecordSpec;
296
+ //# sourceMappingURL=zone-dsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zone-dsl.d.ts","sourceRoot":"","sources":["../../../src/zone/zone-dsl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zone-dsl.js","sourceRoot":"","sources":["../../../src/zone/zone-dsl.ts"],"names":[],"mappings":"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"}