@composurecdk/route53 0.3.4 → 0.3.5

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 (50) hide show
  1. package/README.md +19 -10
  2. package/dist/a-record-builder.d.ts.map +1 -1
  3. package/dist/a-record-builder.js +2 -3
  4. package/dist/a-record-builder.js.map +1 -1
  5. package/dist/aaaa-record-builder.d.ts.map +1 -1
  6. package/dist/aaaa-record-builder.js +2 -3
  7. package/dist/aaaa-record-builder.js.map +1 -1
  8. package/dist/caa-record-builder.d.ts +44 -0
  9. package/dist/caa-record-builder.d.ts.map +1 -0
  10. package/dist/caa-record-builder.js +33 -0
  11. package/dist/caa-record-builder.js.map +1 -0
  12. package/dist/cname-record-builder.d.ts.map +1 -1
  13. package/dist/cname-record-builder.js +1 -2
  14. package/dist/cname-record-builder.js.map +1 -1
  15. package/dist/defaults.d.ts +42 -0
  16. package/dist/defaults.d.ts.map +1 -1
  17. package/dist/defaults.js +49 -0
  18. package/dist/defaults.js.map +1 -1
  19. package/dist/ds-record-builder.d.ts +42 -0
  20. package/dist/ds-record-builder.d.ts.map +1 -0
  21. package/dist/ds-record-builder.js +33 -0
  22. package/dist/ds-record-builder.js.map +1 -0
  23. package/dist/https-record-builder.d.ts +45 -0
  24. package/dist/https-record-builder.d.ts.map +1 -0
  25. package/dist/https-record-builder.js +41 -0
  26. package/dist/https-record-builder.js.map +1 -0
  27. package/dist/index.d.ts +8 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +8 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/mx-record-builder.d.ts +40 -0
  32. package/dist/mx-record-builder.d.ts.map +1 -0
  33. package/dist/mx-record-builder.js +33 -0
  34. package/dist/mx-record-builder.js.map +1 -0
  35. package/dist/ns-record-builder.d.ts +40 -0
  36. package/dist/ns-record-builder.d.ts.map +1 -0
  37. package/dist/ns-record-builder.js +38 -0
  38. package/dist/ns-record-builder.js.map +1 -0
  39. package/dist/srv-record-builder.d.ts +40 -0
  40. package/dist/srv-record-builder.d.ts.map +1 -0
  41. package/dist/srv-record-builder.js +33 -0
  42. package/dist/srv-record-builder.js.map +1 -0
  43. package/dist/svcb-record-builder.d.ts +41 -0
  44. package/dist/svcb-record-builder.d.ts.map +1 -0
  45. package/dist/svcb-record-builder.js +34 -0
  46. package/dist/svcb-record-builder.js.map +1 -0
  47. package/dist/txt-record-builder.d.ts.map +1 -1
  48. package/dist/txt-record-builder.js +1 -2
  49. package/dist/txt-record-builder.js.map +1 -1
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Route 53 hosted zone and record builders for [ComposureCDK](../../README.md).
4
4
 
5
- This package provides fluent builders for Route 53 public hosted zones and for the record types most commonly needed when fronting an AWS workload (A/AAAA alias, CNAME, TXT). It wraps the CDK [aws-route53](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53-readme.html) constructs — refer to the CDK documentation for the full set of configurable properties.
5
+ This package provides fluent builders for Route 53 public hosted zones and for the record types most commonly needed when fronting an AWS workload (A/AAAA alias, CNAME, TXT, MX, SRV, CAA, NS, DS, HTTPS, SVCB). It wraps the CDK [aws-route53](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53-readme.html) constructs — refer to the CDK documentation for the full set of configurable properties.
6
6
 
7
7
  ## Hosted Zone Builder
8
8
 
@@ -73,15 +73,24 @@ Each helper accepts a `Resolvable`, so targets produced by other composed compon
73
73
 
74
74
  ## Secure Defaults
75
75
 
76
- | Builder | Property | Default | Rationale |
77
- | -------------------------- | ---------------- | --------------------- | ------------------------------------------------------- |
78
- | `createHostedZoneBuilder` | `addTrailingDot` | `true` | Matches RFC 1035 and the CDK default; unambiguous apex. |
79
- | `createARecordBuilder` | `ttl` | `Duration.minutes(5)` | Balances propagation latency against DNS cache churn. |
80
- | `createAaaaRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same rationale as A records. |
81
- | `createCnameRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same rationale as A records. |
82
- | `createTxtRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same rationale as A records. |
83
-
84
- The defaults are exported as `HOSTED_ZONE_DEFAULTS`, `A_RECORD_DEFAULTS`, `AAAA_RECORD_DEFAULTS`, `CNAME_RECORD_DEFAULTS`, and `TXT_RECORD_DEFAULTS` for visibility and testing.
76
+ | Builder | Property | Default | Rationale |
77
+ | -------------------------- | ---------------- | --------------------- | ---------------------------------------------------------------------------------------- |
78
+ | `createHostedZoneBuilder` | `addTrailingDot` | `true` | Matches RFC 1035 and the CDK default; unambiguous apex. |
79
+ | `createARecordBuilder` | `ttl` | `Duration.minutes(5)` | Balances propagation latency against DNS cache churn; skipped for alias targets.[^alias] |
80
+ | `createAaaaRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same as A records; skipped for alias targets.[^alias] |
81
+ | `createCnameRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same rationale as A records. |
82
+ | `createTxtRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same rationale as A records. |
83
+ | `createMxRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same rationale as A records. |
84
+ | `createSrvRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same rationale as A records. |
85
+ | `createCaaRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same rationale as A records. |
86
+ | `createNsRecordBuilder` | `ttl` | `Duration.hours(24)` | Delegation records change rarely; long TTL cuts lookups. |
87
+ | `createDsRecordBuilder` | `ttl` | `Duration.hours(24)` | DNSSEC trust anchors change on key rollover only. |
88
+ | `createHttpsRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same as A records; skipped for alias targets.[^alias] |
89
+ | `createSvcbRecordBuilder` | `ttl` | `Duration.minutes(5)` | Same rationale as A records. |
90
+
91
+ The defaults are exported as `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`, and `SVCB_RECORD_DEFAULTS` for visibility and testing.
92
+
93
+ [^alias]: AWS ignores TTL on alias records and CDK emits a warning when one is set, so `A`, `AAAA`, and `HTTPS` builders skip the default TTL whenever the target is an alias.
85
94
 
86
95
  ## Recommended Alarms
87
96
 
@@ -1 +1 @@
1
- {"version":3,"file":"a-record-builder.d.ts","sourceRoot":"","sources":["../src/a-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,YAAY,EACjB,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,mBAAoB,SAAQ,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC;IAChF;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAE/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;AAE5E,cAAM,cAAe,YAAW,SAAS,CAAC,oBAAoB,CAAC;IAC7D,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAM;IAEzC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,oBAAoB;CAwB7F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAEtD"}
1
+ {"version":3,"file":"a-record-builder.d.ts","sourceRoot":"","sources":["../src/a-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,YAAY,EACjB,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,mBAAoB,SAAQ,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC;IAChF;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAE/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;AAE5E,cAAM,cAAe,YAAW,SAAS,CAAC,oBAAoB,CAAC;IAC7D,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAM;IAEzC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,oBAAoB;CAuB7F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAEtD"}
@@ -11,13 +11,12 @@ class ARecordBuilder {
11
11
  if (!target) {
12
12
  throw new Error(`ARecordBuilder "${id}" requires a target. Call .target() with a RecordTarget.`);
13
13
  }
14
- const resolvedContext = context ?? {};
15
- const resolvedTarget = resolve(target, resolvedContext);
14
+ const resolvedTarget = resolve(target, context);
16
15
  const isAlias = resolvedTarget.aliasTarget !== undefined;
17
16
  const mergedProps = {
18
17
  ...(isAlias ? {} : A_RECORD_DEFAULTS),
19
18
  ...rest,
20
- zone: resolve(zone, resolvedContext),
19
+ zone: resolve(zone, context),
21
20
  target: resolvedTarget,
22
21
  };
23
22
  const record = new ARecord(scope, id, mergedProps);
@@ -1 +1 @@
1
- {"version":3,"file":"a-record-builder.js","sourceRoot":"","sources":["../src/a-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,GAIR,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA+ClD,MAAM,cAAc;IAClB,KAAK,GAAiC,EAAE,CAAC;IAEzC,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,sDAAsD,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,mBAAmB,EAAE,0DAA0D,CAChF,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,KAAK,SAAS,CAAC;QACzD,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACrC,GAAG,IAAI;YACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;YACpC,MAAM,EAAE,cAAc;SACP,CAAC;QAElB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAsC,cAAc,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"a-record-builder.js","sourceRoot":"","sources":["../src/a-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,GAIR,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA+ClD,MAAM,cAAc;IAClB,KAAK,GAAiC,EAAE,CAAC;IAEzC,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,EAAE,sDAAsD,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,mBAAmB,EAAE,0DAA0D,CAChF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,KAAK,SAAS,CAAC;QACzD,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACrC,GAAG,IAAI;YACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;YAC5B,MAAM,EAAE,cAAc;SACP,CAAC;QAElB,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAsC,cAAc,CAAC,CAAC;AACtE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"aaaa-record-builder.d.ts","sourceRoot":"","sources":["../src/aaaa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;GAMG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC;IACtF,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/B,yBAAyB;IACzB,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;GAMG;AACH,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;CA0BhG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAE5D"}
1
+ {"version":3,"file":"aaaa-record-builder.d.ts","sourceRoot":"","sources":["../src/aaaa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;GAMG;AACH,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC;IACtF,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/B,yBAAyB;IACzB,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gEAAgE;IAChE,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;AAErF,cAAM,iBAAkB,YAAW,SAAS,CAAC,uBAAuB,CAAC;IACnE,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAM;IAE5C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,uBAAuB;CAyBhG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAE5D"}
@@ -11,13 +11,12 @@ class AaaaRecordBuilder {
11
11
  if (!target) {
12
12
  throw new Error(`AaaaRecordBuilder "${id}" requires a target. Call .target() with a RecordTarget.`);
13
13
  }
14
- const resolvedContext = context ?? {};
15
- const resolvedTarget = resolve(target, resolvedContext);
14
+ const resolvedTarget = resolve(target, context);
16
15
  const isAlias = resolvedTarget.aliasTarget !== undefined;
17
16
  const mergedProps = {
18
17
  ...(isAlias ? {} : AAAA_RECORD_DEFAULTS),
19
18
  ...rest,
20
- zone: resolve(zone, resolvedContext),
19
+ zone: resolve(zone, context),
21
20
  target: resolvedTarget,
22
21
  };
23
22
  const record = new AaaaRecord(scope, id, mergedProps);
@@ -1 +1 @@
1
- {"version":3,"file":"aaaa-record-builder.js","sourceRoot":"","sources":["../src/aaaa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAIX,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAiCrD,MAAM,iBAAiB;IACrB,KAAK,GAAoC,EAAE,CAAC;IAE5C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,sBAAsB,EAAE,sDAAsD,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,sBAAsB,EAAE,0DAA0D,CACnF,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,KAAK,SAAS,CAAC;QACzD,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;YACxC,GAAG,IAAI;YACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;YACpC,MAAM,EAAE,cAAc;SACJ,CAAC;QAErB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,OAAO,CAA4C,iBAAiB,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"aaaa-record-builder.js","sourceRoot":"","sources":["../src/aaaa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAIX,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAiCrD,MAAM,iBAAiB;IACrB,KAAK,GAAoC,EAAE,CAAC;IAE5C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,sBAAsB,EAAE,sDAAsD,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,sBAAsB,EAAE,0DAA0D,CACnF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,KAAK,SAAS,CAAC;QACzD,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC;YACxC,GAAG,IAAI;YACP,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;YAC5B,MAAM,EAAE,cAAc;SACJ,CAAC;QAErB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,OAAO,CAA4C,iBAAiB,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { CaaRecord, type CaaRecordProps, type IHostedZone } from "aws-cdk-lib/aws-route53";
2
+ import { type IConstruct } from "constructs";
3
+ import { type IBuilder, type Lifecycle, type Resolvable } from "@composurecdk/core";
4
+ /**
5
+ * Configuration properties for the Route53 CAA record builder.
6
+ *
7
+ * Extends the CDK {@link CaaRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface CaaRecordBuilderProps extends Omit<CaaRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link ICaaRecordBuilder}.
16
+ */
17
+ export interface CaaRecordBuilderResult {
18
+ /** The Route53 CAA record construct created by the builder. */
19
+ record: CaaRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 CAA record.
23
+ *
24
+ * CAA records restrict which certificate authorities may issue certificates
25
+ * for the domain — a CA that does not match any permitted `issue` / `issuewild`
26
+ * entry must refuse to issue. When issuing via ACM, see
27
+ * `createCaaAmazonRecordBuilder` (not yet implemented — use a CAA record with
28
+ * `amazon.com` / `amazontrust.com` / `awstrust.com` / `amazonaws.com` values).
29
+ *
30
+ * @see https://docs.aws.amazon.com/acm/latest/userguide/setup-caa.html
31
+ */
32
+ export type ICaaRecordBuilder = IBuilder<CaaRecordBuilderProps, CaaRecordBuilder>;
33
+ declare class CaaRecordBuilder implements Lifecycle<CaaRecordBuilderResult> {
34
+ props: Partial<CaaRecordBuilderProps>;
35
+ build(scope: IConstruct, id: string, context?: Record<string, object>): CaaRecordBuilderResult;
36
+ }
37
+ /**
38
+ * Creates a new {@link ICaaRecordBuilder} for configuring a Route53 CAA record.
39
+ *
40
+ * @returns A fluent builder for a Route53 CAA record.
41
+ */
42
+ export declare function createCaaRecordBuilder(): ICaaRecordBuilder;
43
+ export {};
44
+ //# sourceMappingURL=caa-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caa-record-builder.d.ts","sourceRoot":"","sources":["../src/caa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACzE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,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,CAE1D"}
@@ -0,0 +1,33 @@
1
+ import { CaaRecord } from "aws-cdk-lib/aws-route53";
2
+ import { Builder, resolve, } from "@composurecdk/core";
3
+ import { CAA_RECORD_DEFAULTS } from "./defaults.js";
4
+ class CaaRecordBuilder {
5
+ props = {};
6
+ build(scope, id, context) {
7
+ const { zone, values, ...rest } = this.props;
8
+ if (!zone) {
9
+ throw new Error(`CaaRecordBuilder "${id}" requires a zone. Call .zone() with an IHostedZone.`);
10
+ }
11
+ if (!values || values.length === 0) {
12
+ throw new Error(`CaaRecordBuilder "${id}" requires non-empty values. ` +
13
+ `Call .values() with one or more { flag, tag, value } entries.`);
14
+ }
15
+ const mergedProps = {
16
+ ...CAA_RECORD_DEFAULTS,
17
+ ...rest,
18
+ values,
19
+ zone: resolve(zone, context),
20
+ };
21
+ const record = new CaaRecord(scope, id, mergedProps);
22
+ return { record };
23
+ }
24
+ }
25
+ /**
26
+ * Creates a new {@link ICaaRecordBuilder} for configuring a Route53 CAA record.
27
+ *
28
+ * @returns A fluent builder for a Route53 CAA record.
29
+ */
30
+ export function createCaaRecordBuilder() {
31
+ return Builder(CaaRecordBuilder);
32
+ }
33
+ //# sourceMappingURL=caa-record-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caa-record-builder.js","sourceRoot":"","sources":["../src/caa-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyC,MAAM,yBAAyB,CAAC;AAE3F,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAkCpD,MAAM,gBAAgB;IACpB,KAAK,GAAmC,EAAE,CAAC;IAE3C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,qBAAqB,EAAE,sDAAsD,CAC9E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,qBAAqB,EAAE,+BAA+B;gBACpD,+DAA+D,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,mBAAmB;YACtB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACX,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,OAAO,CAA0C,gBAAgB,CAAC,CAAC;AAC5E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cname-record-builder.d.ts","sourceRoot":"","sources":["../src/cname-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC7E,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,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;CAgCjG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D"}
1
+ {"version":3,"file":"cname-record-builder.d.ts","sourceRoot":"","sources":["../src/cname-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC7E,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,CAAC;AAExF,cAAM,kBAAmB,YAAW,SAAS,CAAC,wBAAwB,CAAC;IACrE,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAM;IAE7C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,wBAAwB;CA+BjG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAE9D"}
@@ -16,13 +16,12 @@ class CnameRecordBuilder {
16
16
  throw new Error(`CnameRecordBuilder "${id}" requires a recordName. ` +
17
17
  `Call .recordName() with the subdomain — CNAME records cannot be at the zone apex.`);
18
18
  }
19
- const resolvedContext = context ?? {};
20
19
  const mergedProps = {
21
20
  ...CNAME_RECORD_DEFAULTS,
22
21
  ...rest,
23
22
  domainName,
24
23
  recordName,
25
- zone: resolve(zone, resolvedContext),
24
+ zone: resolve(zone, context),
26
25
  };
27
26
  const record = new CnameRecord(scope, id, mergedProps);
28
27
  return { record };
@@ -1 +1 @@
1
- {"version":3,"file":"cname-record-builder.js","sourceRoot":"","sources":["../src/cname-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2C,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA+BtD,MAAM,kBAAkB;IACtB,KAAK,GAAqC,EAAE,CAAC;IAE7C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,sDAAsD,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,2BAA2B;gBAClD,qEAAqE,CACxE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,2BAA2B;gBAClD,mFAAmF,CACtF,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG;YAClB,GAAG,qBAAqB;YACxB,GAAG,IAAI;YACP,UAAU;YACV,UAAU;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;SACjB,CAAC;QAEtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,OAAO,CAA8C,kBAAkB,CAAC,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"cname-record-builder.js","sourceRoot":"","sources":["../src/cname-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2C,MAAM,yBAAyB,CAAC;AAE/F,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA+BtD,MAAM,kBAAkB;IACtB,KAAK,GAAqC,EAAE,CAAC;IAE7C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,sDAAsD,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,2BAA2B;gBAClD,qEAAqE,CACxE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,2BAA2B;gBAClD,mFAAmF,CACtF,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,qBAAqB;YACxB,GAAG,IAAI;YACP,UAAU;YACV,UAAU;YACV,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACT,CAAC;QAEtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,OAAO,CAA8C,kBAAkB,CAAC,CAAC;AAClF,CAAC"}
@@ -3,6 +3,13 @@ import type { ARecordBuilderProps } from "./a-record-builder.js";
3
3
  import type { AaaaRecordBuilderProps } from "./aaaa-record-builder.js";
4
4
  import type { CnameRecordBuilderProps } from "./cname-record-builder.js";
5
5
  import type { TxtRecordBuilderProps } from "./txt-record-builder.js";
6
+ import type { MxRecordBuilderProps } from "./mx-record-builder.js";
7
+ import type { SrvRecordBuilderProps } from "./srv-record-builder.js";
8
+ import type { CaaRecordBuilderProps } from "./caa-record-builder.js";
9
+ import type { NsRecordBuilderProps } from "./ns-record-builder.js";
10
+ import type { DsRecordBuilderProps } from "./ds-record-builder.js";
11
+ import type { HttpsRecordBuilderProps } from "./https-record-builder.js";
12
+ import type { SvcbRecordBuilderProps } from "./svcb-record-builder.js";
6
13
  /**
7
14
  * Secure, AWS-recommended defaults applied to every public hosted zone built
8
15
  * with {@link createHostedZoneBuilder}. Each property can be individually
@@ -33,4 +40,39 @@ export declare const CNAME_RECORD_DEFAULTS: Partial<CnameRecordBuilderProps>;
33
40
  * Defaults for {@link createTxtRecordBuilder}. Overridable via the fluent API.
34
41
  */
35
42
  export declare const TXT_RECORD_DEFAULTS: Partial<TxtRecordBuilderProps>;
43
+ /**
44
+ * Defaults for {@link createMxRecordBuilder}. Overridable via the fluent API.
45
+ */
46
+ export declare const MX_RECORD_DEFAULTS: Partial<MxRecordBuilderProps>;
47
+ /**
48
+ * Defaults for {@link createSrvRecordBuilder}. Overridable via the fluent API.
49
+ */
50
+ export declare const SRV_RECORD_DEFAULTS: Partial<SrvRecordBuilderProps>;
51
+ /**
52
+ * Defaults for {@link createCaaRecordBuilder}. Overridable via the fluent API.
53
+ */
54
+ export declare const CAA_RECORD_DEFAULTS: Partial<CaaRecordBuilderProps>;
55
+ /**
56
+ * Defaults for {@link createNsRecordBuilder}. Overridable via the fluent API.
57
+ *
58
+ * A longer TTL is appropriate for delegation records — resolvers cache NS
59
+ * responses, and frequent churn forces parent-side re-delegation lookups.
60
+ */
61
+ export declare const NS_RECORD_DEFAULTS: Partial<NsRecordBuilderProps>;
62
+ /**
63
+ * Defaults for {@link createDsRecordBuilder}. Overridable via the fluent API.
64
+ *
65
+ * DS records change rarely (key-signing rollovers); a long TTL reduces
66
+ * DNSSEC validation load on resolvers.
67
+ */
68
+ export declare const DS_RECORD_DEFAULTS: Partial<DsRecordBuilderProps>;
69
+ /**
70
+ * Defaults for {@link createHttpsRecordBuilder}. Overridable via the fluent API.
71
+ * Same alias-target caveat as {@link A_RECORD_DEFAULTS}.
72
+ */
73
+ export declare const HTTPS_RECORD_DEFAULTS: Partial<HttpsRecordBuilderProps>;
74
+ /**
75
+ * Defaults for {@link createSvcbRecordBuilder}. Overridable via the fluent API.
76
+ */
77
+ export declare const SVCB_RECORD_DEFAULTS: Partial<SvcbRecordBuilderProps>;
36
78
  //# sourceMappingURL=defaults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,sBAAsB,CAMhE,CAAC;AAaF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,mBAAmB,CAE1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,sBAAsB,CAEhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,CAElE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,qBAAqB,CAE9D,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,sBAAsB,CAMhE,CAAC;AAaF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,mBAAmB,CAE1D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,sBAAsB,CAEhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,CAElE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,qBAAqB,CAE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,CAE5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,qBAAqB,CAE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,CAAC,qBAAqB,CAE9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,CAE5D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,oBAAoB,CAE5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,CAElE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,sBAAsB,CAEhE,CAAC"}
package/dist/defaults.js CHANGED
@@ -53,4 +53,53 @@ export const CNAME_RECORD_DEFAULTS = {
53
53
  export const TXT_RECORD_DEFAULTS = {
54
54
  ttl: DEFAULT_RECORD_TTL,
55
55
  };
56
+ /**
57
+ * Defaults for {@link createMxRecordBuilder}. Overridable via the fluent API.
58
+ */
59
+ export const MX_RECORD_DEFAULTS = {
60
+ ttl: DEFAULT_RECORD_TTL,
61
+ };
62
+ /**
63
+ * Defaults for {@link createSrvRecordBuilder}. Overridable via the fluent API.
64
+ */
65
+ export const SRV_RECORD_DEFAULTS = {
66
+ ttl: DEFAULT_RECORD_TTL,
67
+ };
68
+ /**
69
+ * Defaults for {@link createCaaRecordBuilder}. Overridable via the fluent API.
70
+ */
71
+ export const CAA_RECORD_DEFAULTS = {
72
+ ttl: DEFAULT_RECORD_TTL,
73
+ };
74
+ /**
75
+ * Defaults for {@link createNsRecordBuilder}. Overridable via the fluent API.
76
+ *
77
+ * A longer TTL is appropriate for delegation records — resolvers cache NS
78
+ * responses, and frequent churn forces parent-side re-delegation lookups.
79
+ */
80
+ export const NS_RECORD_DEFAULTS = {
81
+ ttl: Duration.hours(24),
82
+ };
83
+ /**
84
+ * Defaults for {@link createDsRecordBuilder}. Overridable via the fluent API.
85
+ *
86
+ * DS records change rarely (key-signing rollovers); a long TTL reduces
87
+ * DNSSEC validation load on resolvers.
88
+ */
89
+ export const DS_RECORD_DEFAULTS = {
90
+ ttl: Duration.hours(24),
91
+ };
92
+ /**
93
+ * Defaults for {@link createHttpsRecordBuilder}. Overridable via the fluent API.
94
+ * Same alias-target caveat as {@link A_RECORD_DEFAULTS}.
95
+ */
96
+ export const HTTPS_RECORD_DEFAULTS = {
97
+ ttl: DEFAULT_RECORD_TTL,
98
+ };
99
+ /**
100
+ * Defaults for {@link createSvcbRecordBuilder}. Overridable via the fluent API.
101
+ */
102
+ export const SVCB_RECORD_DEFAULTS = {
103
+ ttl: DEFAULT_RECORD_TTL,
104
+ };
56
105
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOvC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE;;;OAGG;IACH,cAAc,EAAE,IAAI;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiC;IAC7D,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmC;IACjE,GAAG,EAAE,kBAAkB;CACxB,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAcvC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE;;;OAGG;IACH,cAAc,EAAE,IAAI;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiC;IAC7D,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmC;IACjE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkC;IAC/D,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmC;IACjE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAmC;IACjE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkC;IAC/D,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkC;IAC/D,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,GAAG,EAAE,kBAAkB;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoC;IACnE,GAAG,EAAE,kBAAkB;CACxB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { DsRecord, type DsRecordProps, type IHostedZone } from "aws-cdk-lib/aws-route53";
2
+ import { type IConstruct } from "constructs";
3
+ import { type IBuilder, type Lifecycle, type Resolvable } from "@composurecdk/core";
4
+ /**
5
+ * Configuration properties for the Route53 DS record builder.
6
+ *
7
+ * Extends the CDK {@link DsRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface DsRecordBuilderProps extends Omit<DsRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link IDsRecordBuilder}.
16
+ */
17
+ export interface DsRecordBuilderResult {
18
+ /** The Route53 DS record construct created by the builder. */
19
+ record: DsRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 DS record.
23
+ *
24
+ * DS (Delegation Signer) records establish the DNSSEC chain of trust from a
25
+ * parent zone to a delegated child zone. Each value is a rdata string of
26
+ * `keyTag algorithm digestType digest`.
27
+ *
28
+ * @see https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-configuring-dnssec-chain-of-trust.html
29
+ */
30
+ export type IDsRecordBuilder = IBuilder<DsRecordBuilderProps, DsRecordBuilder>;
31
+ declare class DsRecordBuilder implements Lifecycle<DsRecordBuilderResult> {
32
+ props: Partial<DsRecordBuilderProps>;
33
+ build(scope: IConstruct, id: string, context?: Record<string, object>): DsRecordBuilderResult;
34
+ }
35
+ /**
36
+ * Creates a new {@link IDsRecordBuilder} for configuring a Route53 DS record.
37
+ *
38
+ * @returns A fluent builder for a Route53 DS record.
39
+ */
40
+ export declare function createDsRecordBuilder(): IDsRecordBuilder;
41
+ export {};
42
+ //# sourceMappingURL=ds-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-record-builder.d.ts","sourceRoot":"","sources":["../src/ds-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACvE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAE/E,cAAM,eAAgB,YAAW,SAAS,CAAC,qBAAqB,CAAC;IAC/D,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAM;IAE1C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAqB;CAsB9F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAExD"}
@@ -0,0 +1,33 @@
1
+ import { DsRecord } from "aws-cdk-lib/aws-route53";
2
+ import { Builder, resolve, } from "@composurecdk/core";
3
+ import { DS_RECORD_DEFAULTS } from "./defaults.js";
4
+ class DsRecordBuilder {
5
+ props = {};
6
+ build(scope, id, context) {
7
+ const { zone, values, ...rest } = this.props;
8
+ if (!zone) {
9
+ throw new Error(`DsRecordBuilder "${id}" requires a zone. Call .zone() with an IHostedZone.`);
10
+ }
11
+ if (!values || values.length === 0) {
12
+ throw new Error(`DsRecordBuilder "${id}" requires non-empty values. ` +
13
+ `Call .values() with one or more DS rdata strings (keyTag algorithm digestType digest).`);
14
+ }
15
+ const mergedProps = {
16
+ ...DS_RECORD_DEFAULTS,
17
+ ...rest,
18
+ values,
19
+ zone: resolve(zone, context),
20
+ };
21
+ const record = new DsRecord(scope, id, mergedProps);
22
+ return { record };
23
+ }
24
+ }
25
+ /**
26
+ * Creates a new {@link IDsRecordBuilder} for configuring a Route53 DS record.
27
+ *
28
+ * @returns A fluent builder for a Route53 DS record.
29
+ */
30
+ export function createDsRecordBuilder() {
31
+ return Builder(DsRecordBuilder);
32
+ }
33
+ //# sourceMappingURL=ds-record-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-record-builder.js","sourceRoot":"","sources":["../src/ds-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwC,MAAM,yBAAyB,CAAC;AAEzF,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAgCnD,MAAM,eAAe;IACnB,KAAK,GAAkC,EAAE,CAAC;IAE1C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,sDAAsD,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,oBAAoB,EAAE,+BAA+B;gBACnD,wFAAwF,CAC3F,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,kBAAkB;YACrB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACZ,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAwC,eAAe,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { HttpsRecord, type HttpsRecordProps, type IHostedZone, type RecordTarget } from "aws-cdk-lib/aws-route53";
2
+ import { type IConstruct } from "constructs";
3
+ import { type IBuilder, type Lifecycle, type Resolvable } from "@composurecdk/core";
4
+ /**
5
+ * Configuration properties for the Route53 HTTPS record builder.
6
+ *
7
+ * Extends the CDK {@link HttpsRecordProps} but replaces `zone` and `target`
8
+ * with {@link Resolvable} variants so they can be wired from composed
9
+ * components (e.g. a CloudFront distribution used as an alias target).
10
+ */
11
+ export interface HttpsRecordBuilderProps extends Omit<HttpsRecordProps, "zone" | "target"> {
12
+ /** The hosted zone in which to create the record. */
13
+ zone?: Resolvable<IHostedZone>;
14
+ /** The record target — mutually exclusive with `values`. */
15
+ target?: Resolvable<RecordTarget>;
16
+ }
17
+ /**
18
+ * The build output of an {@link IHttpsRecordBuilder}.
19
+ */
20
+ export interface HttpsRecordBuilderResult {
21
+ /** The Route53 HTTPS record construct created by the builder. */
22
+ record: HttpsRecord;
23
+ }
24
+ /**
25
+ * A fluent builder for configuring and creating a Route53 HTTPS record.
26
+ *
27
+ * HTTPS records (RFC 9460) advertise protocol hints — ALPN, port, IP hints —
28
+ * that clients can use before opening a connection, enabling one-round-trip
29
+ * HTTP/3 upgrades. Specify exactly one of `values` (explicit parameter list)
30
+ * or `target` (alias, typically a CloudFront distribution).
31
+ */
32
+ export type IHttpsRecordBuilder = IBuilder<HttpsRecordBuilderProps, HttpsRecordBuilder>;
33
+ declare class HttpsRecordBuilder implements Lifecycle<HttpsRecordBuilderResult> {
34
+ props: Partial<HttpsRecordBuilderProps>;
35
+ build(scope: IConstruct, id: string, context?: Record<string, object>): HttpsRecordBuilderResult;
36
+ }
37
+ /**
38
+ * Creates a new {@link IHttpsRecordBuilder} for configuring a Route53 HTTPS
39
+ * record.
40
+ *
41
+ * @returns A fluent builder for a Route53 HTTPS record.
42
+ */
43
+ export declare function createHttpsRecordBuilder(): IHttpsRecordBuilder;
44
+ export {};
45
+ //# sourceMappingURL=https-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"https-record-builder.d.ts","sourceRoot":"","sources":["../src/https-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;;GAMG;AACH,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxF,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iEAAiE;IACjE,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,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,CAE9D"}
@@ -0,0 +1,41 @@
1
+ import { HttpsRecord, } from "aws-cdk-lib/aws-route53";
2
+ import { Builder, resolve, } from "@composurecdk/core";
3
+ import { HTTPS_RECORD_DEFAULTS } from "./defaults.js";
4
+ class HttpsRecordBuilder {
5
+ props = {};
6
+ build(scope, id, context) {
7
+ const { zone, target, values, ...rest } = this.props;
8
+ if (!zone) {
9
+ throw new Error(`HttpsRecordBuilder "${id}" requires a zone. Call .zone() with an IHostedZone.`);
10
+ }
11
+ if (values?.length === 0) {
12
+ throw new Error(`HttpsRecordBuilder "${id}" requires non-empty values. ` +
13
+ `Call .values() with one or more HttpsRecordValue entries, or use .target() instead.`);
14
+ }
15
+ const hasValues = values !== undefined;
16
+ if (hasValues === (target !== undefined)) {
17
+ throw new Error(`HttpsRecordBuilder "${id}" requires exactly one of .values() or .target(), not both.`);
18
+ }
19
+ const resolvedTarget = target ? resolve(target, context) : undefined;
20
+ const isAlias = resolvedTarget?.aliasTarget !== undefined;
21
+ const mergedProps = {
22
+ ...(isAlias ? {} : HTTPS_RECORD_DEFAULTS),
23
+ ...rest,
24
+ ...(hasValues ? { values } : {}),
25
+ ...(resolvedTarget ? { target: resolvedTarget } : {}),
26
+ zone: resolve(zone, context),
27
+ };
28
+ const record = new HttpsRecord(scope, id, mergedProps);
29
+ return { record };
30
+ }
31
+ }
32
+ /**
33
+ * Creates a new {@link IHttpsRecordBuilder} for configuring a Route53 HTTPS
34
+ * record.
35
+ *
36
+ * @returns A fluent builder for a Route53 HTTPS record.
37
+ */
38
+ export function createHttpsRecordBuilder() {
39
+ return Builder(HttpsRecordBuilder);
40
+ }
41
+ //# 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":"AAAA,OAAO,EACL,WAAW,GAIZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAkCtD,MAAM,kBAAkB;IACtB,KAAK,GAAqC,EAAE,CAAC;IAE7C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,sDAAsD,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,+BAA+B;gBACtD,qFAAqF,CACxF,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC;QACvC,IAAI,SAAS,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,uBAAuB,EAAE,6DAA6D,CACvF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,MAAM,OAAO,GAAG,cAAc,EAAE,WAAW,KAAK,SAAS,CAAC;QAC1D,MAAM,WAAW,GAAG;YAClB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;YACzC,GAAG,IAAI;YACP,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACT,CAAC;QAEtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,OAAO,CAA8C,kBAAkB,CAAC,CAAC;AAClF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,13 @@ export { createARecordBuilder, type ARecordBuilderResult, type IARecordBuilder,
3
3
  export { createAaaaRecordBuilder, type AaaaRecordBuilderResult, type IAaaaRecordBuilder, } from "./aaaa-record-builder.js";
4
4
  export { createCnameRecordBuilder, type CnameRecordBuilderResult, type ICnameRecordBuilder, } from "./cname-record-builder.js";
5
5
  export { createTxtRecordBuilder, type TxtRecordBuilderResult, type ITxtRecordBuilder, } from "./txt-record-builder.js";
6
+ export { createMxRecordBuilder, type MxRecordBuilderResult, type IMxRecordBuilder, } from "./mx-record-builder.js";
7
+ export { createSrvRecordBuilder, type SrvRecordBuilderResult, type ISrvRecordBuilder, } from "./srv-record-builder.js";
8
+ export { createCaaRecordBuilder, type CaaRecordBuilderResult, type ICaaRecordBuilder, } from "./caa-record-builder.js";
9
+ export { createNsRecordBuilder, type NsRecordBuilderResult, type INsRecordBuilder, } from "./ns-record-builder.js";
10
+ export { createDsRecordBuilder, type DsRecordBuilderResult, type IDsRecordBuilder, } from "./ds-record-builder.js";
11
+ export { createHttpsRecordBuilder, type HttpsRecordBuilderResult, type IHttpsRecordBuilder, } from "./https-record-builder.js";
12
+ export { createSvcbRecordBuilder, type SvcbRecordBuilderResult, type ISvcbRecordBuilder, } from "./svcb-record-builder.js";
6
13
  export { cloudfrontAliasTarget, apiGatewayAliasTarget, apiGatewayDomainAliasTarget, } from "./alias-targets.js";
7
- export { HOSTED_ZONE_DEFAULTS, A_RECORD_DEFAULTS, AAAA_RECORD_DEFAULTS, CNAME_RECORD_DEFAULTS, TXT_RECORD_DEFAULTS, } from "./defaults.js";
14
+ 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, } from "./defaults.js";
8
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -3,6 +3,13 @@ export { createARecordBuilder, } from "./a-record-builder.js";
3
3
  export { createAaaaRecordBuilder, } from "./aaaa-record-builder.js";
4
4
  export { createCnameRecordBuilder, } from "./cname-record-builder.js";
5
5
  export { createTxtRecordBuilder, } from "./txt-record-builder.js";
6
+ export { createMxRecordBuilder, } from "./mx-record-builder.js";
7
+ export { createSrvRecordBuilder, } from "./srv-record-builder.js";
8
+ export { createCaaRecordBuilder, } from "./caa-record-builder.js";
9
+ export { createNsRecordBuilder, } from "./ns-record-builder.js";
10
+ export { createDsRecordBuilder, } from "./ds-record-builder.js";
11
+ export { createHttpsRecordBuilder, } from "./https-record-builder.js";
12
+ export { createSvcbRecordBuilder, } from "./svcb-record-builder.js";
6
13
  export { cloudfrontAliasTarget, apiGatewayAliasTarget, apiGatewayDomainAliasTarget, } from "./alias-targets.js";
7
- export { HOSTED_ZONE_DEFAULTS, A_RECORD_DEFAULTS, AAAA_RECORD_DEFAULTS, CNAME_RECORD_DEFAULTS, TXT_RECORD_DEFAULTS, } from "./defaults.js";
14
+ 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, } from "./defaults.js";
8
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,GAGzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,GAGvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,GAGzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,GAGvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,GAGtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,GAGvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,GAGvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,GAGtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,GAGtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,GAGzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { MxRecord, type MxRecordProps, type IHostedZone } from "aws-cdk-lib/aws-route53";
2
+ import { type IConstruct } from "constructs";
3
+ import { type IBuilder, type Lifecycle, type Resolvable } from "@composurecdk/core";
4
+ /**
5
+ * Configuration properties for the Route53 MX record builder.
6
+ *
7
+ * Extends the CDK {@link MxRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface MxRecordBuilderProps extends Omit<MxRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link IMxRecordBuilder}.
16
+ */
17
+ export interface MxRecordBuilderResult {
18
+ /** The Route53 MX record construct created by the builder. */
19
+ record: MxRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 MX record.
23
+ *
24
+ * MX records direct inbound mail to the host(s) responsible for accepting it.
25
+ * Each value pairs a priority (lower wins) with a fully-qualified mail-server
26
+ * host name. Pair with SPF/DKIM/DMARC TXT records for authenticated email.
27
+ */
28
+ export type IMxRecordBuilder = IBuilder<MxRecordBuilderProps, MxRecordBuilder>;
29
+ declare class MxRecordBuilder implements Lifecycle<MxRecordBuilderResult> {
30
+ props: Partial<MxRecordBuilderProps>;
31
+ build(scope: IConstruct, id: string, context?: Record<string, object>): MxRecordBuilderResult;
32
+ }
33
+ /**
34
+ * Creates a new {@link IMxRecordBuilder} for configuring a Route53 MX record.
35
+ *
36
+ * @returns A fluent builder for a Route53 MX record.
37
+ */
38
+ export declare function createMxRecordBuilder(): IMxRecordBuilder;
39
+ export {};
40
+ //# sourceMappingURL=mx-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mx-record-builder.d.ts","sourceRoot":"","sources":["../src/mx-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACvE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AAE/E,cAAM,eAAgB,YAAW,SAAS,CAAC,qBAAqB,CAAC;IAC/D,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAM;IAE1C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAqB;CAsB9F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAExD"}
@@ -0,0 +1,33 @@
1
+ import { MxRecord } from "aws-cdk-lib/aws-route53";
2
+ import { Builder, resolve, } from "@composurecdk/core";
3
+ import { MX_RECORD_DEFAULTS } from "./defaults.js";
4
+ class MxRecordBuilder {
5
+ props = {};
6
+ build(scope, id, context) {
7
+ const { zone, values, ...rest } = this.props;
8
+ if (!zone) {
9
+ throw new Error(`MxRecordBuilder "${id}" requires a zone. Call .zone() with an IHostedZone.`);
10
+ }
11
+ if (!values || values.length === 0) {
12
+ throw new Error(`MxRecordBuilder "${id}" requires non-empty values. ` +
13
+ `Call .values() with one or more { priority, hostName } entries.`);
14
+ }
15
+ const mergedProps = {
16
+ ...MX_RECORD_DEFAULTS,
17
+ ...rest,
18
+ values,
19
+ zone: resolve(zone, context),
20
+ };
21
+ const record = new MxRecord(scope, id, mergedProps);
22
+ return { record };
23
+ }
24
+ }
25
+ /**
26
+ * Creates a new {@link IMxRecordBuilder} for configuring a Route53 MX record.
27
+ *
28
+ * @returns A fluent builder for a Route53 MX record.
29
+ */
30
+ export function createMxRecordBuilder() {
31
+ return Builder(MxRecordBuilder);
32
+ }
33
+ //# sourceMappingURL=mx-record-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mx-record-builder.js","sourceRoot":"","sources":["../src/mx-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwC,MAAM,yBAAyB,CAAC;AAEzF,OAAO,EACL,OAAO,EAGP,OAAO,GAER,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA8BnD,MAAM,eAAe;IACnB,KAAK,GAAkC,EAAE,CAAC;IAE1C,KAAK,CAAC,KAAiB,EAAE,EAAU,EAAE,OAAgC;QACnE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,sDAAsD,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,oBAAoB,EAAE,+BAA+B;gBACnD,iEAAiE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG;YAClB,GAAG,kBAAkB;YACrB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACZ,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CAAwC,eAAe,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { NsRecord, type NsRecordProps, type IHostedZone } from "aws-cdk-lib/aws-route53";
2
+ import { type IConstruct } from "constructs";
3
+ import { type IBuilder, type Lifecycle, type Resolvable } from "@composurecdk/core";
4
+ /**
5
+ * Configuration properties for the Route53 NS record builder.
6
+ *
7
+ * Extends the CDK {@link NsRecordProps} but replaces `zone` with a
8
+ * {@link Resolvable} so it can be wired from composed components.
9
+ */
10
+ export interface NsRecordBuilderProps extends Omit<NsRecordProps, "zone"> {
11
+ /** The hosted zone in which to create the record. */
12
+ zone?: Resolvable<IHostedZone>;
13
+ }
14
+ /**
15
+ * The build output of an {@link INsRecordBuilder}.
16
+ */
17
+ export interface NsRecordBuilderResult {
18
+ /** The Route53 NS record construct created by the builder. */
19
+ record: NsRecord;
20
+ }
21
+ /**
22
+ * A fluent builder for configuring and creating a Route53 NS record.
23
+ *
24
+ * Use NS records to delegate a subdomain to a different set of name servers
25
+ * (including another Route53 hosted zone). The apex NS record set is managed
26
+ * by Route53 itself and should not be recreated here.
27
+ */
28
+ export type INsRecordBuilder = IBuilder<NsRecordBuilderProps, NsRecordBuilder>;
29
+ declare class NsRecordBuilder implements Lifecycle<NsRecordBuilderResult> {
30
+ props: Partial<NsRecordBuilderProps>;
31
+ build(scope: IConstruct, id: string, context?: Record<string, object>): NsRecordBuilderResult;
32
+ }
33
+ /**
34
+ * Creates a new {@link INsRecordBuilder} for configuring a Route53 NS record.
35
+ *
36
+ * @returns A fluent builder for a Route53 NS record.
37
+ */
38
+ export declare function createNsRecordBuilder(): INsRecordBuilder;
39
+ export {};
40
+ //# sourceMappingURL=ns-record-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ns-record-builder.d.ts","sourceRoot":"","sources":["../src/ns-record-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACvE,qDAAqD;IACrD,IAAI,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED;;;;;;GAMG;AACH,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,CAExD"}
@@ -0,0 +1,38 @@
1
+ import { NsRecord } from "aws-cdk-lib/aws-route53";
2
+ import { Builder, resolve, } from "@composurecdk/core";
3
+ import { NS_RECORD_DEFAULTS } from "./defaults.js";
4
+ class NsRecordBuilder {
5
+ props = {};
6
+ build(scope, id, context) {
7
+ const { zone, values, recordName, ...rest } = this.props;
8
+ if (!zone) {
9
+ throw new Error(`NsRecordBuilder "${id}" requires a zone. Call .zone() with an IHostedZone.`);
10
+ }
11
+ if (!recordName) {
12
+ throw new Error(`NsRecordBuilder "${id}" requires a recordName. ` +
13
+ `Call .recordName() with the delegated subdomain — the apex NS set is managed by Route53.`);
14
+ }
15
+ if (!values || values.length === 0) {
16
+ throw new Error(`NsRecordBuilder "${id}" requires non-empty values. ` +
17
+ `Call .values() with one or more fully-qualified name-server host names.`);
18
+ }
19
+ const mergedProps = {
20
+ ...NS_RECORD_DEFAULTS,
21
+ ...rest,
22
+ recordName,
23
+ values,
24
+ zone: resolve(zone, context),
25
+ };
26
+ const record = new NsRecord(scope, id, mergedProps);
27
+ return { record };
28
+ }
29
+ }
30
+ /**
31
+ * Creates a new {@link INsRecordBuilder} for configuring a Route53 NS record.
32
+ *
33
+ * @returns A fluent builder for a Route53 NS record.
34
+ */
35
+ export function createNsRecordBuilder() {
36
+ return Builder(NsRecordBuilder);
37
+ }
38
+ //# 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;AA8BnD,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,OAAO,OAAO,CAAwC,eAAe,CAAC,CAAC;AACzE,CAAC"}
@@ -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;AACH,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,CAE1D"}
@@ -0,0 +1,33 @@
1
+ import { SrvRecord } from "aws-cdk-lib/aws-route53";
2
+ import { Builder, resolve, } from "@composurecdk/core";
3
+ import { SRV_RECORD_DEFAULTS } from "./defaults.js";
4
+ class SrvRecordBuilder {
5
+ props = {};
6
+ build(scope, id, context) {
7
+ const { zone, values, ...rest } = this.props;
8
+ if (!zone) {
9
+ throw new Error(`SrvRecordBuilder "${id}" requires a zone. Call .zone() with an IHostedZone.`);
10
+ }
11
+ if (!values || values.length === 0) {
12
+ throw new Error(`SrvRecordBuilder "${id}" requires non-empty values. ` +
13
+ `Call .values() with one or more { priority, weight, port, hostName } entries.`);
14
+ }
15
+ const mergedProps = {
16
+ ...SRV_RECORD_DEFAULTS,
17
+ ...rest,
18
+ values,
19
+ zone: resolve(zone, context),
20
+ };
21
+ const record = new SrvRecord(scope, id, mergedProps);
22
+ return { record };
23
+ }
24
+ }
25
+ /**
26
+ * Creates a new {@link ISrvRecordBuilder} for configuring a Route53 SRV record.
27
+ *
28
+ * @returns A fluent builder for a Route53 SRV record.
29
+ */
30
+ export function createSrvRecordBuilder() {
31
+ return Builder(SrvRecordBuilder);
32
+ }
33
+ //# 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;AA8BpD,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,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;AACH,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,CAE5D"}
@@ -0,0 +1,34 @@
1
+ import { SvcbRecord } from "aws-cdk-lib/aws-route53";
2
+ import { Builder, resolve, } from "@composurecdk/core";
3
+ import { SVCB_RECORD_DEFAULTS } from "./defaults.js";
4
+ class SvcbRecordBuilder {
5
+ props = {};
6
+ build(scope, id, context) {
7
+ const { zone, values, ...rest } = this.props;
8
+ if (!zone) {
9
+ throw new Error(`SvcbRecordBuilder "${id}" requires a zone. Call .zone() with an IHostedZone.`);
10
+ }
11
+ if (!values || values.length === 0) {
12
+ throw new Error(`SvcbRecordBuilder "${id}" requires non-empty values. ` +
13
+ `Call .values() with one or more SvcbRecordValue entries.`);
14
+ }
15
+ const mergedProps = {
16
+ ...SVCB_RECORD_DEFAULTS,
17
+ ...rest,
18
+ values,
19
+ zone: resolve(zone, context),
20
+ };
21
+ const record = new SvcbRecord(scope, id, mergedProps);
22
+ return { record };
23
+ }
24
+ }
25
+ /**
26
+ * Creates a new {@link ISvcbRecordBuilder} for configuring a Route53 SVCB
27
+ * record.
28
+ *
29
+ * @returns A fluent builder for a Route53 SVCB record.
30
+ */
31
+ export function createSvcbRecordBuilder() {
32
+ return Builder(SvcbRecordBuilder);
33
+ }
34
+ //# 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;AA8BrD,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,OAAO,OAAO,CAA4C,iBAAiB,CAAC,CAAC;AAC/E,CAAC"}
@@ -1 +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;AACH,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;CAyB/F;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,CAE1D"}
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;AACH,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,CAE1D"}
@@ -12,12 +12,11 @@ class TxtRecordBuilder {
12
12
  throw new Error(`TxtRecordBuilder "${id}" requires non-empty values. ` +
13
13
  `Call .values() with one or more TXT record strings.`);
14
14
  }
15
- const resolvedContext = context ?? {};
16
15
  const mergedProps = {
17
16
  ...TXT_RECORD_DEFAULTS,
18
17
  ...rest,
19
18
  values,
20
- zone: resolve(zone, resolvedContext),
19
+ zone: resolve(zone, context),
21
20
  };
22
21
  const record = new TxtRecord(scope, id, mergedProps);
23
22
  return { record };
@@ -1 +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;AA4BpD,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,eAAe,GAAG,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG;YAClB,GAAG,mBAAmB;YACtB,GAAG,IAAI;YACP,MAAM;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC;SACnB,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,OAAO,OAAO,CAA0C,gBAAgB,CAAC,CAAC;AAC5E,CAAC"}
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;AA4BpD,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,OAAO,OAAO,CAA0C,gBAAgB,CAAC,CAAC;AAC5E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@composurecdk/route53",
3
- "version": "0.3.4",
3
+ "version": "0.3.5",
4
4
  "description": "Composable Route53 hosted zone and record builders with well-architected defaults",
5
5
  "repository": {
6
6
  "type": "git",