@fjall/components-infrastructure 0.89.5 → 0.94.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/LICENSE +50 -21
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +1 -18
  4. package/dist/lib/app.d.ts +12 -12
  5. package/dist/lib/app.js +61 -56
  6. package/dist/lib/aspects/index.d.ts +1 -1
  7. package/dist/lib/aspects/index.js +1 -6
  8. package/dist/lib/aspects/resourceInventory.js +6 -13
  9. package/dist/lib/config/audit.js +1 -5
  10. package/dist/lib/config/aws/accessAnalyser.d.ts +11 -0
  11. package/dist/lib/config/aws/accessAnalyser.js +17 -0
  12. package/dist/lib/config/aws/accountAuditRole.js +11 -15
  13. package/dist/lib/config/aws/accountMonitoringRole.js +25 -29
  14. package/dist/lib/config/aws/alarmTopic.d.ts +8 -0
  15. package/dist/lib/config/aws/alarmTopic.js +19 -0
  16. package/dist/lib/config/aws/cloudTrail.js +4 -9
  17. package/dist/lib/config/aws/configRecorder.d.ts +16 -0
  18. package/dist/lib/config/aws/configRecorder.js +51 -0
  19. package/dist/lib/config/aws/configRulePreset.d.ts +13 -0
  20. package/dist/lib/config/aws/configRulePreset.js +62 -0
  21. package/dist/lib/config/aws/disasterRecovery.d.ts +1 -1
  22. package/dist/lib/config/aws/disasterRecovery.js +56 -73
  23. package/dist/lib/config/aws/ebsDefaultEncryption.d.ts +8 -0
  24. package/dist/lib/config/aws/ebsDefaultEncryption.js +41 -0
  25. package/dist/lib/config/aws/ecrDefaultImage.js +25 -30
  26. package/dist/lib/config/aws/eventBus.js +8 -11
  27. package/dist/lib/config/aws/guardDutyDetector.d.ts +16 -0
  28. package/dist/lib/config/aws/guardDutyDetector.js +26 -0
  29. package/dist/lib/config/aws/identityCenter.d.ts +1 -1
  30. package/dist/lib/config/aws/identityCenter.js +23 -25
  31. package/dist/lib/config/aws/identityCenterGroupMembership.js +18 -22
  32. package/dist/lib/config/aws/index.d.ts +19 -8
  33. package/dist/lib/config/aws/index.js +19 -25
  34. package/dist/lib/config/aws/inspectorEnablement.d.ts +9 -0
  35. package/dist/lib/config/aws/inspectorEnablement.js +51 -0
  36. package/dist/lib/config/aws/ipam.js +9 -13
  37. package/dist/lib/config/aws/oidcConnector.js +8 -12
  38. package/dist/lib/config/aws/platform.js +1 -5
  39. package/dist/lib/config/aws/s3BlockPublicAccess.d.ts +9 -0
  40. package/dist/lib/config/aws/s3BlockPublicAccess.js +55 -0
  41. package/dist/lib/config/aws/scpPreset.d.ts +21 -0
  42. package/dist/lib/config/aws/scpPreset.js +311 -0
  43. package/dist/lib/config/aws/securityBaseline.d.ts +15 -0
  44. package/dist/lib/config/aws/securityBaseline.js +27 -0
  45. package/dist/lib/config/aws/securityHubHub.d.ts +15 -0
  46. package/dist/lib/config/aws/securityHubHub.js +28 -0
  47. package/dist/lib/config/aws/securityServicesAdmin.d.ts +20 -0
  48. package/dist/lib/config/aws/securityServicesAdmin.js +115 -0
  49. package/dist/lib/config/index.d.ts +2 -2
  50. package/dist/lib/config/index.js +2 -21
  51. package/dist/lib/index.d.ts +4 -4
  52. package/dist/lib/index.js +5 -26
  53. package/dist/lib/patterns/aws/account.d.ts +17 -1
  54. package/dist/lib/patterns/aws/account.js +60 -33
  55. package/dist/lib/patterns/aws/apexDomainPattern.d.ts +26 -0
  56. package/dist/lib/patterns/aws/apexDomainPattern.js +91 -0
  57. package/dist/lib/patterns/aws/auditRole.js +13 -16
  58. package/dist/lib/patterns/aws/buildkite.d.ts +1 -1
  59. package/dist/lib/patterns/aws/buildkite.js +70 -75
  60. package/dist/lib/patterns/aws/cdn.d.ts +5 -5
  61. package/dist/lib/patterns/aws/cdn.js +22 -28
  62. package/dist/lib/patterns/aws/compute.d.ts +1 -1
  63. package/dist/lib/patterns/aws/compute.js +31 -44
  64. package/dist/lib/patterns/aws/computeEc2.d.ts +1 -1
  65. package/dist/lib/patterns/aws/computeEc2.js +11 -14
  66. package/dist/lib/patterns/aws/computeEcs.d.ts +18 -2
  67. package/dist/lib/patterns/aws/computeEcs.js +41 -31
  68. package/dist/lib/patterns/aws/computeLambda.d.ts +2 -2
  69. package/dist/lib/patterns/aws/computeLambda.js +24 -31
  70. package/dist/lib/patterns/aws/database.d.ts +16 -7
  71. package/dist/lib/patterns/aws/database.js +81 -73
  72. package/dist/lib/patterns/aws/delegatedDomainPattern.d.ts +17 -0
  73. package/dist/lib/patterns/aws/delegatedDomainPattern.js +54 -0
  74. package/dist/lib/patterns/aws/dnsRecordComposer.d.ts +25 -0
  75. package/dist/lib/patterns/aws/dnsRecordComposer.js +225 -0
  76. package/dist/lib/patterns/aws/domain.d.ts +32 -0
  77. package/dist/lib/patterns/aws/domain.js +115 -0
  78. package/dist/lib/patterns/aws/domainDelegation.d.ts +3 -3
  79. package/dist/lib/patterns/aws/domainDelegation.js +28 -37
  80. package/dist/lib/patterns/aws/domainFactory.d.ts +20 -5
  81. package/dist/lib/patterns/aws/domainFactory.js +48 -10
  82. package/dist/lib/patterns/aws/domainValidation.d.ts +11 -0
  83. package/dist/lib/patterns/aws/domainValidation.js +145 -0
  84. package/dist/lib/patterns/aws/externalRecordsPattern.d.ts +18 -0
  85. package/dist/lib/patterns/aws/externalRecordsPattern.js +141 -0
  86. package/dist/lib/patterns/aws/fivetranProxy.d.ts +1 -1
  87. package/dist/lib/patterns/aws/fivetranProxy.js +6 -11
  88. package/dist/lib/patterns/aws/index.d.ts +21 -19
  89. package/dist/lib/patterns/aws/index.js +25 -36
  90. package/dist/lib/patterns/aws/interfaces/cdn.js +1 -5
  91. package/dist/lib/patterns/aws/interfaces/compute.js +4 -11
  92. package/dist/lib/patterns/aws/interfaces/connector.js +1 -15
  93. package/dist/lib/patterns/aws/interfaces/database.d.ts +1 -1
  94. package/dist/lib/patterns/aws/interfaces/database.js +6 -15
  95. package/dist/lib/patterns/aws/interfaces/domain.d.ts +80 -2
  96. package/dist/lib/patterns/aws/interfaces/domain.js +1 -6
  97. package/dist/lib/patterns/aws/interfaces/index.js +8 -41
  98. package/dist/lib/patterns/aws/interfaces/messaging.js +4 -11
  99. package/dist/lib/patterns/aws/interfaces/organisation.d.ts +1 -1
  100. package/dist/lib/patterns/aws/interfaces/organisation.js +4 -11
  101. package/dist/lib/patterns/aws/interfaces/pattern.js +2 -7
  102. package/dist/lib/patterns/aws/interfaces/storage.js +1 -5
  103. package/dist/lib/patterns/aws/managedIdentityCenter.js +7 -12
  104. package/dist/lib/patterns/aws/messaging.d.ts +7 -7
  105. package/dist/lib/patterns/aws/messaging.js +22 -33
  106. package/dist/lib/patterns/aws/network.d.ts +2 -2
  107. package/dist/lib/patterns/aws/network.js +9 -14
  108. package/dist/lib/patterns/aws/organisation.d.ts +6 -2
  109. package/dist/lib/patterns/aws/organisation.js +34 -35
  110. package/dist/lib/patterns/aws/organisationFactory.d.ts +3 -3
  111. package/dist/lib/patterns/aws/organisationFactory.js +7 -12
  112. package/dist/lib/patterns/aws/pattern.js +6 -12
  113. package/dist/lib/patterns/aws/payload.js +73 -63
  114. package/dist/lib/patterns/aws/platform.d.ts +6 -3
  115. package/dist/lib/patterns/aws/platform.js +15 -15
  116. package/dist/lib/patterns/aws/storage.d.ts +6 -4
  117. package/dist/lib/patterns/aws/storage.js +35 -40
  118. package/dist/lib/patterns/aws/subdomainHostedZone.js +11 -16
  119. package/dist/lib/patterns/aws/targets/fjallTargets.d.ts +37 -0
  120. package/dist/lib/patterns/aws/targets/fjallTargets.js +66 -0
  121. package/dist/lib/patterns/aws/targets/index.d.ts +2 -0
  122. package/dist/lib/patterns/aws/targets/index.js +2 -0
  123. package/dist/lib/patterns/aws/targets/targetResolution.d.ts +76 -0
  124. package/dist/lib/patterns/aws/targets/targetResolution.js +119 -0
  125. package/dist/lib/patterns/index.d.ts +1 -0
  126. package/dist/lib/patterns/index.js +1 -0
  127. package/dist/lib/resources/aws/analytics/clickhouse.d.ts +15 -0
  128. package/dist/lib/resources/aws/analytics/clickhouse.js +292 -0
  129. package/dist/lib/resources/aws/analytics/clickhouseConstants.d.ts +73 -0
  130. package/dist/lib/resources/aws/analytics/clickhouseConstants.js +87 -0
  131. package/dist/lib/resources/aws/analytics/clickhouseSecurityGroup.d.ts +13 -0
  132. package/dist/lib/resources/aws/analytics/clickhouseSecurityGroup.js +28 -0
  133. package/dist/lib/resources/aws/analytics/clickhouseTypes.d.ts +47 -0
  134. package/dist/lib/resources/aws/analytics/clickhouseTypes.js +1 -0
  135. package/dist/lib/resources/aws/analytics/clickhouseUserData.d.ts +5 -0
  136. package/dist/lib/resources/aws/analytics/clickhouseUserData.js +248 -0
  137. package/dist/lib/resources/aws/analytics/index.d.ts +2 -0
  138. package/dist/lib/resources/aws/analytics/index.js +1 -0
  139. package/dist/lib/resources/aws/audit/auditRole.js +10 -15
  140. package/dist/lib/resources/aws/audit/index.d.ts +1 -1
  141. package/dist/lib/resources/aws/audit/index.js +1 -6
  142. package/dist/lib/resources/aws/backup/backupPlan.d.ts +1 -1
  143. package/dist/lib/resources/aws/backup/backupPlan.js +14 -16
  144. package/dist/lib/resources/aws/backup/backupVault.d.ts +1 -1
  145. package/dist/lib/resources/aws/backup/backupVault.js +13 -15
  146. package/dist/lib/resources/aws/backup/index.d.ts +2 -2
  147. package/dist/lib/resources/aws/backup/index.js +2 -19
  148. package/dist/lib/resources/aws/base/awsStack.js +17 -19
  149. package/dist/lib/resources/aws/base/index.d.ts +1 -1
  150. package/dist/lib/resources/aws/base/index.js +1 -18
  151. package/dist/lib/resources/aws/cdn/cloudFront.js +40 -42
  152. package/dist/lib/resources/aws/cdn/index.d.ts +1 -1
  153. package/dist/lib/resources/aws/cdn/index.js +1 -18
  154. package/dist/lib/resources/aws/compute/ec2.js +39 -39
  155. package/dist/lib/resources/aws/compute/ecs.d.ts +18 -396
  156. package/dist/lib/resources/aws/compute/ecs.js +105 -976
  157. package/dist/lib/resources/aws/compute/ecsCapacityProviderAspect.d.ts +22 -0
  158. package/dist/lib/resources/aws/compute/ecsCapacityProviderAspect.js +35 -0
  159. package/dist/lib/resources/aws/compute/ecsConstants.d.ts +20 -0
  160. package/dist/lib/resources/aws/compute/ecsConstants.js +49 -0
  161. package/dist/lib/resources/aws/compute/ecsContext.d.ts +12 -0
  162. package/dist/lib/resources/aws/compute/ecsContext.js +1 -0
  163. package/dist/lib/resources/aws/compute/ecsImages.d.ts +4 -0
  164. package/dist/lib/resources/aws/compute/ecsImages.js +35 -0
  165. package/dist/lib/resources/aws/compute/ecsNetworking.d.ts +28 -0
  166. package/dist/lib/resources/aws/compute/ecsNetworking.js +290 -0
  167. package/dist/lib/resources/aws/compute/ecsRoles.d.ts +15 -0
  168. package/dist/lib/resources/aws/compute/ecsRoles.js +110 -0
  169. package/dist/lib/resources/aws/compute/ecsServiceFactory.d.ts +33 -0
  170. package/dist/lib/resources/aws/compute/ecsServiceFactory.js +183 -0
  171. package/dist/lib/resources/aws/compute/ecsTaskDefinition.d.ts +30 -0
  172. package/dist/lib/resources/aws/compute/ecsTaskDefinition.js +168 -0
  173. package/dist/lib/resources/aws/compute/ecsTypes.d.ts +337 -0
  174. package/dist/lib/resources/aws/compute/ecsTypes.js +10 -0
  175. package/dist/lib/resources/aws/compute/ecsValidation.d.ts +18 -0
  176. package/dist/lib/resources/aws/compute/ecsValidation.js +72 -0
  177. package/dist/lib/resources/aws/compute/index.d.ts +3 -3
  178. package/dist/lib/resources/aws/compute/index.js +3 -20
  179. package/dist/lib/resources/aws/compute/lambda.d.ts +10 -2
  180. package/dist/lib/resources/aws/compute/lambda.js +81 -71
  181. package/dist/lib/resources/aws/database/dynamodb.js +24 -27
  182. package/dist/lib/resources/aws/database/index.d.ts +7 -7
  183. package/dist/lib/resources/aws/database/index.js +14 -33
  184. package/dist/lib/resources/aws/database/rdsAurora.d.ts +10 -2
  185. package/dist/lib/resources/aws/database/rdsAurora.js +76 -61
  186. package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +2 -2
  187. package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +24 -21
  188. package/dist/lib/resources/aws/database/rdsDefaults.js +3 -7
  189. package/dist/lib/resources/aws/database/rdsHelpers.d.ts +2 -2
  190. package/dist/lib/resources/aws/database/rdsHelpers.js +21 -29
  191. package/dist/lib/resources/aws/database/rdsInstance.d.ts +11 -3
  192. package/dist/lib/resources/aws/database/rdsInstance.js +101 -83
  193. package/dist/lib/resources/aws/database/rdsProxyOutput.js +5 -9
  194. package/dist/lib/resources/aws/iam/delegationRole.d.ts +18 -0
  195. package/dist/lib/resources/aws/iam/delegationRole.js +60 -0
  196. package/dist/lib/resources/aws/iam/identityCenter/assignment.js +4 -9
  197. package/dist/lib/resources/aws/iam/identityCenter/group.js +5 -9
  198. package/dist/lib/resources/aws/iam/identityCenter/index.d.ts +3 -3
  199. package/dist/lib/resources/aws/iam/identityCenter/index.js +3 -20
  200. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +1 -1
  201. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +5 -9
  202. package/dist/lib/resources/aws/iam/index.d.ts +5 -4
  203. package/dist/lib/resources/aws/iam/index.js +5 -21
  204. package/dist/lib/resources/aws/iam/instanceProfile.js +2 -7
  205. package/dist/lib/resources/aws/iam/managedPolicy.js +2 -7
  206. package/dist/lib/resources/aws/iam/policy.js +2 -7
  207. package/dist/lib/resources/aws/iam/role.js +2 -7
  208. package/dist/lib/resources/aws/index.d.ts +7 -7
  209. package/dist/lib/resources/aws/index.js +7 -24
  210. package/dist/lib/resources/aws/logging/cloudTrail.d.ts +1 -1
  211. package/dist/lib/resources/aws/logging/cloudTrail.js +18 -22
  212. package/dist/lib/resources/aws/logging/index.d.ts +2 -2
  213. package/dist/lib/resources/aws/logging/index.js +2 -19
  214. package/dist/lib/resources/aws/logging/logGroup.js +4 -10
  215. package/dist/lib/resources/aws/messaging/eventbridge.js +11 -14
  216. package/dist/lib/resources/aws/messaging/index.d.ts +4 -4
  217. package/dist/lib/resources/aws/messaging/index.js +4 -21
  218. package/dist/lib/resources/aws/messaging/sns.js +11 -14
  219. package/dist/lib/resources/aws/messaging/sqs.js +32 -34
  220. package/dist/lib/resources/aws/messaging/utils.d.ts +1 -1
  221. package/dist/lib/resources/aws/messaging/utils.js +1 -6
  222. package/dist/lib/resources/aws/monitoring/alarmDefaults.d.ts +36 -0
  223. package/dist/lib/resources/aws/monitoring/alarmDefaults.js +34 -0
  224. package/dist/lib/resources/aws/monitoring/ecsAlarms.d.ts +21 -0
  225. package/dist/lib/resources/aws/monitoring/ecsAlarms.js +88 -0
  226. package/dist/lib/resources/aws/monitoring/index.d.ts +4 -0
  227. package/dist/lib/resources/aws/monitoring/index.js +4 -5
  228. package/dist/lib/resources/aws/monitoring/lambdaAlarms.d.ts +18 -0
  229. package/dist/lib/resources/aws/monitoring/lambdaAlarms.js +44 -0
  230. package/dist/lib/resources/aws/monitoring/rdsAlarms.d.ts +20 -0
  231. package/dist/lib/resources/aws/monitoring/rdsAlarms.js +52 -0
  232. package/dist/lib/resources/aws/networking/crossAccountDelegationRecord.d.ts +17 -0
  233. package/dist/lib/resources/aws/networking/crossAccountDelegationRecord.js +26 -0
  234. package/dist/lib/resources/aws/networking/dnsRecord/aRecord.d.ts +12 -0
  235. package/dist/lib/resources/aws/networking/dnsRecord/aRecord.js +21 -0
  236. package/dist/lib/resources/aws/networking/dnsRecord/aaaaRecord.d.ts +12 -0
  237. package/dist/lib/resources/aws/networking/dnsRecord/aaaaRecord.js +22 -0
  238. package/dist/lib/resources/aws/networking/dnsRecord/aliasRecord.d.ts +12 -0
  239. package/dist/lib/resources/aws/networking/dnsRecord/aliasRecord.js +23 -0
  240. package/dist/lib/resources/aws/networking/dnsRecord/caaRecord.d.ts +17 -0
  241. package/dist/lib/resources/aws/networking/dnsRecord/caaRecord.js +21 -0
  242. package/dist/lib/resources/aws/networking/dnsRecord/cnameRecord.d.ts +12 -0
  243. package/dist/lib/resources/aws/networking/dnsRecord/cnameRecord.js +22 -0
  244. package/dist/lib/resources/aws/networking/dnsRecord/dnsRecordBase.d.ts +17 -0
  245. package/dist/lib/resources/aws/networking/dnsRecord/dnsRecordBase.js +17 -0
  246. package/dist/lib/resources/aws/networking/dnsRecord/index.d.ts +10 -0
  247. package/dist/lib/resources/aws/networking/dnsRecord/index.js +10 -0
  248. package/dist/lib/resources/aws/networking/dnsRecord/mxRecord.d.ts +16 -0
  249. package/dist/lib/resources/aws/networking/dnsRecord/mxRecord.js +21 -0
  250. package/dist/lib/resources/aws/networking/dnsRecord/nsRecord.d.ts +12 -0
  251. package/dist/lib/resources/aws/networking/dnsRecord/nsRecord.js +21 -0
  252. package/dist/lib/resources/aws/networking/dnsRecord/srvRecord.d.ts +18 -0
  253. package/dist/lib/resources/aws/networking/dnsRecord/srvRecord.js +21 -0
  254. package/dist/lib/resources/aws/networking/dnsRecord/txtRecord.d.ts +12 -0
  255. package/dist/lib/resources/aws/networking/dnsRecord/txtRecord.js +21 -0
  256. package/dist/lib/resources/aws/networking/domain.d.ts +1 -1
  257. package/dist/lib/resources/aws/networking/domain.js +32 -34
  258. package/dist/lib/resources/aws/networking/domainCertificate.d.ts +8 -3
  259. package/dist/lib/resources/aws/networking/domainCertificate.js +22 -16
  260. package/dist/lib/resources/aws/networking/hostedZone.d.ts +23 -19
  261. package/dist/lib/resources/aws/networking/hostedZone.js +70 -134
  262. package/dist/lib/resources/aws/networking/index.d.ts +8 -7
  263. package/dist/lib/resources/aws/networking/index.js +8 -24
  264. package/dist/lib/resources/aws/networking/ipam.js +2 -7
  265. package/dist/lib/resources/aws/networking/ipamPool.d.ts +1 -1
  266. package/dist/lib/resources/aws/networking/ipamPool.js +45 -55
  267. package/dist/lib/resources/aws/networking/securityGroup.js +2 -7
  268. package/dist/lib/resources/aws/networking/vpc.d.ts +1 -1
  269. package/dist/lib/resources/aws/networking/vpc.js +17 -21
  270. package/dist/lib/resources/aws/organisation/costAllocationTagActivator.d.ts +1 -1
  271. package/dist/lib/resources/aws/organisation/costAllocationTagActivator.js +11 -15
  272. package/dist/lib/resources/aws/organisation/index.d.ts +5 -5
  273. package/dist/lib/resources/aws/organisation/index.js +4 -12
  274. package/dist/lib/resources/aws/organisation/organisation.js +5 -7
  275. package/dist/lib/resources/aws/organisation/organisationAccount.js +7 -10
  276. package/dist/lib/resources/aws/organisation/organisationPolicy.js +5 -9
  277. package/dist/lib/resources/aws/organisation/organisationalUnit.js +1 -3
  278. package/dist/lib/resources/aws/secrets/alias.js +2 -7
  279. package/dist/lib/resources/aws/secrets/index.d.ts +4 -4
  280. package/dist/lib/resources/aws/secrets/index.js +4 -21
  281. package/dist/lib/resources/aws/secrets/kms.js +15 -18
  282. package/dist/lib/resources/aws/secrets/parameter.d.ts +3 -3
  283. package/dist/lib/resources/aws/secrets/parameter.js +19 -22
  284. package/dist/lib/resources/aws/secrets/secret.d.ts +2 -2
  285. package/dist/lib/resources/aws/secrets/secret.js +12 -14
  286. package/dist/lib/resources/aws/storage/ecr.d.ts +2 -2
  287. package/dist/lib/resources/aws/storage/ecr.js +7 -13
  288. package/dist/lib/resources/aws/storage/index.d.ts +2 -2
  289. package/dist/lib/resources/aws/storage/index.js +2 -19
  290. package/dist/lib/resources/aws/storage/s3.d.ts +1 -1
  291. package/dist/lib/resources/aws/storage/s3.js +24 -12
  292. package/dist/lib/resources/aws/utilities/awsCustomResource.js +3 -7
  293. package/dist/lib/resources/aws/utilities/codeBuild.js +7 -12
  294. package/dist/lib/resources/aws/utilities/customResource.js +14 -17
  295. package/dist/lib/resources/aws/utilities/customResourceProvider.js +2 -7
  296. package/dist/lib/resources/aws/utilities/index.d.ts +5 -5
  297. package/dist/lib/resources/aws/utilities/index.js +5 -22
  298. package/dist/lib/resources/aws/utilities/resourceShare.js +2 -7
  299. package/dist/lib/resources/index.d.ts +1 -1
  300. package/dist/lib/resources/index.js +1 -18
  301. package/dist/lib/types.js +1 -3
  302. package/dist/lib/utils/accountsUtils.d.ts +5 -0
  303. package/dist/lib/utils/accountsUtils.js +18 -0
  304. package/dist/lib/utils/addSuffixToEmail.js +1 -5
  305. package/dist/lib/utils/backupTierMapping.js +2 -6
  306. package/dist/lib/utils/capitaliseString.js +1 -10
  307. package/dist/lib/utils/connections.js +9 -13
  308. package/dist/lib/utils/connector.js +10 -23
  309. package/dist/lib/utils/constructMap.d.ts +33 -0
  310. package/dist/lib/utils/constructMap.js +154 -0
  311. package/dist/lib/utils/databaseTypes.js +4 -10
  312. package/dist/lib/utils/dnsRecords.d.ts +1 -1
  313. package/dist/lib/utils/dnsRecords.js +23 -27
  314. package/dist/lib/utils/domainTypes.d.ts +0 -1
  315. package/dist/lib/utils/domainTypes.js +2 -10
  316. package/dist/lib/utils/env.js +14 -26
  317. package/dist/lib/utils/getAccountId.js +3 -7
  318. package/dist/lib/utils/getAsync.js +7 -10
  319. package/dist/lib/utils/getConfig.d.ts +0 -2
  320. package/dist/lib/utils/getConfig.js +29 -47
  321. package/dist/lib/utils/getStackOutput.js +4 -8
  322. package/dist/lib/utils/index.d.ts +12 -12
  323. package/dist/lib/utils/index.js +12 -29
  324. package/dist/lib/utils/manifestWriter.d.ts +14 -3
  325. package/dist/lib/utils/manifestWriter.js +60 -43
  326. package/dist/lib/utils/orgConfigParser.d.ts +14 -0
  327. package/dist/lib/utils/orgConfigParser.js +49 -0
  328. package/dist/lib/utils/removalPolicy.js +5 -9
  329. package/dist/lib/utils/resourceNaming.js +11 -16
  330. package/dist/lib/utils/standardTagsAspect.js +9 -16
  331. package/dist/lib/utils/stripAndCamelCase.js +1 -5
  332. package/dist/lib/utils/validationLogger.js +12 -18
  333. package/dist/lib/utils/vpcUtils.js +5 -10
  334. package/package.json +25 -8
  335. package/dist/lib/config/aws/accountId.d.ts +0 -6
  336. package/dist/lib/config/aws/accountId.js +0 -32
  337. package/dist/lib/config/aws/backupGlobalSettings.d.ts +0 -29
  338. package/dist/lib/config/aws/backupGlobalSettings.js +0 -49
  339. package/dist/lib/config/aws/costAllocationTags.d.ts +0 -12
  340. package/dist/lib/config/aws/costAllocationTags.js +0 -47
  341. package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +0 -8
  342. package/dist/lib/config/aws/ipamDelegateAdmin.js +0 -57
  343. package/dist/lib/config/aws/ipamPoolId.d.ts +0 -16
  344. package/dist/lib/config/aws/ipamPoolId.js +0 -42
  345. package/dist/lib/config/aws/organisation.d.ts +0 -30
  346. package/dist/lib/config/aws/organisation.js +0 -92
  347. package/dist/lib/config/aws/organisationId.d.ts +0 -7
  348. package/dist/lib/config/aws/organisationId.js +0 -45
  349. package/dist/lib/config/aws/organisationsAccess.d.ts +0 -10
  350. package/dist/lib/config/aws/organisationsAccess.js +0 -49
  351. package/dist/lib/config/aws/ramSharing.d.ts +0 -4
  352. package/dist/lib/config/aws/ramSharing.js +0 -34
  353. package/dist/lib/config/monitoring.d.ts +0 -18
  354. package/dist/lib/config/monitoring.js +0 -22
  355. package/dist/lib/patterns/aws/connections.d.ts +0 -46
  356. package/dist/lib/patterns/aws/connections.js +0 -159
  357. package/dist/lib/patterns/aws/hostedZone.d.ts +0 -28
  358. package/dist/lib/patterns/aws/hostedZone.js +0 -150
  359. package/dist/lib/patterns/aws/managedAccount.d.ts +0 -9
  360. package/dist/lib/patterns/aws/managedAccount.js +0 -55
  361. package/dist/lib/patterns/aws/managedOrganisation.d.ts +0 -36
  362. package/dist/lib/patterns/aws/managedOrganisation.js +0 -97
  363. package/dist/lib/patterns/aws/managedPlatform.d.ts +0 -12
  364. package/dist/lib/patterns/aws/managedPlatform.js +0 -29
  365. package/dist/lib/resources/aws/database/database.d.ts +0 -14
  366. package/dist/lib/resources/aws/database/database.js +0 -28
  367. package/dist/lib/resources/aws/database/databaseInstance.d.ts +0 -15
  368. package/dist/lib/resources/aws/database/databaseInstance.js +0 -30
  369. package/dist/lib/resources/aws/database/migrationLambda.d.ts +0 -80
  370. package/dist/lib/resources/aws/database/migrationLambda.js +0 -119
  371. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +0 -13
  372. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +0 -51
  373. package/dist/lib/resources/aws/iam/securityGroup.d.ts +0 -5
  374. package/dist/lib/resources/aws/iam/securityGroup.js +0 -14
  375. package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +0 -29
  376. package/dist/lib/resources/aws/monitoring/monitoringRole.js +0 -120
  377. package/dist/lib/utils/capitalizeString.d.ts +0 -12
  378. package/dist/lib/utils/capitalizeString.js +0 -30
@@ -0,0 +1,26 @@
1
+ import { Construct } from "constructs";
2
+ import { Tags } from "aws-cdk-lib";
3
+ import { CrossAccountZoneDelegationRecord as CdkCrossAccountZoneDelegationRecord } from "aws-cdk-lib/aws-route53";
4
+ // CDK's CrossAccountZoneDelegationRecord is a custom-resource Lambda: user-level tags
5
+ // on the record itself may not reach AWS. We tag the wrapping Fjall Construct for
6
+ // assertion purposes; create-path tags still propagate to child resources (Lambda,
7
+ // log group) via CDK's standard tag propagation.
8
+ export class CrossAccountDelegationRecord extends Construct {
9
+ record;
10
+ description;
11
+ constructor(scope, id, props) {
12
+ super(scope, id);
13
+ this.description =
14
+ props.description ??
15
+ `Fjall-managed cross-account delegation for ${props.delegatedZoneName} in parent ${props.parentHostedZoneName}`;
16
+ this.record = new CdkCrossAccountZoneDelegationRecord(this, "Record", {
17
+ delegationRole: props.delegationRole,
18
+ delegatedZone: props.delegatedZone,
19
+ parentHostedZoneName: props.parentHostedZoneName
20
+ });
21
+ Tags.of(this).add("fjall:description", this.description);
22
+ Tags.of(this).add("fjall:costAllocation:environment", props.costAllocationEnvironment ?? "management");
23
+ Tags.of(this).add("fjall:costAllocation:service", "crossAccountDelegation");
24
+ Tags.of(this).add("fjall:costAllocation:domain", props.costAllocationDomain ?? props.delegatedZoneName);
25
+ }
26
+ }
@@ -0,0 +1,12 @@
1
+ import { Construct } from "constructs";
2
+ import { ARecord as CdkARecord } from "aws-cdk-lib/aws-route53";
3
+ import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
4
+ export interface ARecordProps extends DnsRecordCommonProps {
5
+ readonly values: string[];
6
+ }
7
+ export declare class ARecord extends Construct {
8
+ readonly record: CdkARecord;
9
+ readonly description: string;
10
+ readonly fqdn: string;
11
+ constructor(scope: Construct, id: string, props: ARecordProps);
12
+ }
@@ -0,0 +1,21 @@
1
+ import { Construct } from "constructs";
2
+ import { ARecord as CdkARecord, RecordTarget } from "aws-cdk-lib/aws-route53";
3
+ import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
4
+ export class ARecord extends Construct {
5
+ record;
6
+ description;
7
+ fqdn;
8
+ constructor(scope, id, props) {
9
+ super(scope, id);
10
+ this.fqdn = resolveFqdn(props.zoneName, props.recordName);
11
+ this.description = props.description ?? defaultDnsComment("A", this.fqdn);
12
+ this.record = new CdkARecord(this, "Record", {
13
+ zone: props.zone,
14
+ recordName: this.fqdn,
15
+ target: RecordTarget.fromIpAddresses(...props.values),
16
+ ttl: resolveTtl(props.ttl),
17
+ comment: this.description
18
+ });
19
+ applyDnsRecordTags(this, props);
20
+ }
21
+ }
@@ -0,0 +1,12 @@
1
+ import { Construct } from "constructs";
2
+ import { AaaaRecord as CdkAaaaRecord } from "aws-cdk-lib/aws-route53";
3
+ import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
4
+ export interface AaaaRecordProps extends DnsRecordCommonProps {
5
+ readonly values: string[];
6
+ }
7
+ export declare class AaaaRecord extends Construct {
8
+ readonly record: CdkAaaaRecord;
9
+ readonly description: string;
10
+ readonly fqdn: string;
11
+ constructor(scope: Construct, id: string, props: AaaaRecordProps);
12
+ }
@@ -0,0 +1,22 @@
1
+ import { Construct } from "constructs";
2
+ import { AaaaRecord as CdkAaaaRecord, RecordTarget } from "aws-cdk-lib/aws-route53";
3
+ import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
4
+ export class AaaaRecord extends Construct {
5
+ record;
6
+ description;
7
+ fqdn;
8
+ constructor(scope, id, props) {
9
+ super(scope, id);
10
+ this.fqdn = resolveFqdn(props.zoneName, props.recordName);
11
+ this.description =
12
+ props.description ?? defaultDnsComment("AAAA", this.fqdn);
13
+ this.record = new CdkAaaaRecord(this, "Record", {
14
+ zone: props.zone,
15
+ recordName: this.fqdn,
16
+ target: RecordTarget.fromIpAddresses(...props.values),
17
+ ttl: resolveTtl(props.ttl),
18
+ comment: this.description
19
+ });
20
+ applyDnsRecordTags(this, props);
21
+ }
22
+ }
@@ -0,0 +1,12 @@
1
+ import { Construct } from "constructs";
2
+ import { ARecord as CdkARecord, type IAliasRecordTarget } from "aws-cdk-lib/aws-route53";
3
+ import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
4
+ export interface AliasRecordProps extends DnsRecordCommonProps {
5
+ readonly target: IAliasRecordTarget;
6
+ }
7
+ export declare class AliasRecord extends Construct {
8
+ readonly record: CdkARecord;
9
+ readonly description: string;
10
+ readonly fqdn: string;
11
+ constructor(scope: Construct, id: string, props: AliasRecordProps);
12
+ }
@@ -0,0 +1,23 @@
1
+ import { Construct } from "constructs";
2
+ import { ARecord as CdkARecord, RecordTarget } from "aws-cdk-lib/aws-route53";
3
+ import { applyDnsRecordTags, defaultDnsComment, resolveFqdn } from "./dnsRecordBase.js";
4
+ export class AliasRecord extends Construct {
5
+ record;
6
+ description;
7
+ fqdn;
8
+ constructor(scope, id, props) {
9
+ super(scope, id);
10
+ this.fqdn = resolveFqdn(props.zoneName, props.recordName);
11
+ this.description =
12
+ props.description ?? defaultDnsComment("alias", this.fqdn);
13
+ // Route53 ignores TTL on ALIAS records — the target dictates caching behaviour,
14
+ // so we deliberately do not forward props.ttl to the underlying CDK resource.
15
+ this.record = new CdkARecord(this, "Record", {
16
+ zone: props.zone,
17
+ recordName: this.fqdn,
18
+ target: RecordTarget.fromAlias(props.target),
19
+ comment: this.description
20
+ });
21
+ applyDnsRecordTags(this, props);
22
+ }
23
+ }
@@ -0,0 +1,17 @@
1
+ import { Construct } from "constructs";
2
+ import { CaaRecord as CdkCaaRecord, type CaaTag } from "aws-cdk-lib/aws-route53";
3
+ import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
4
+ export interface CaaRecordValue {
5
+ readonly flag: number;
6
+ readonly tag: CaaTag;
7
+ readonly value: string;
8
+ }
9
+ export interface CaaRecordProps extends DnsRecordCommonProps {
10
+ readonly values: CaaRecordValue[];
11
+ }
12
+ export declare class CaaRecord extends Construct {
13
+ readonly record: CdkCaaRecord;
14
+ readonly description: string;
15
+ readonly fqdn: string;
16
+ constructor(scope: Construct, id: string, props: CaaRecordProps);
17
+ }
@@ -0,0 +1,21 @@
1
+ import { Construct } from "constructs";
2
+ import { CaaRecord as CdkCaaRecord } from "aws-cdk-lib/aws-route53";
3
+ import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
4
+ export class CaaRecord extends Construct {
5
+ record;
6
+ description;
7
+ fqdn;
8
+ constructor(scope, id, props) {
9
+ super(scope, id);
10
+ this.fqdn = resolveFqdn(props.zoneName, props.recordName);
11
+ this.description = props.description ?? defaultDnsComment("CAA", this.fqdn);
12
+ this.record = new CdkCaaRecord(this, "Record", {
13
+ zone: props.zone,
14
+ recordName: this.fqdn,
15
+ values: props.values,
16
+ ttl: resolveTtl(props.ttl),
17
+ comment: this.description
18
+ });
19
+ applyDnsRecordTags(this, props);
20
+ }
21
+ }
@@ -0,0 +1,12 @@
1
+ import { Construct } from "constructs";
2
+ import { CnameRecord as CdkCnameRecord } from "aws-cdk-lib/aws-route53";
3
+ import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
4
+ export interface CnameRecordProps extends DnsRecordCommonProps {
5
+ readonly domainName: string;
6
+ }
7
+ export declare class CnameRecord extends Construct {
8
+ readonly record: CdkCnameRecord;
9
+ readonly description: string;
10
+ readonly fqdn: string;
11
+ constructor(scope: Construct, id: string, props: CnameRecordProps);
12
+ }
@@ -0,0 +1,22 @@
1
+ import { Construct } from "constructs";
2
+ import { CnameRecord as CdkCnameRecord } from "aws-cdk-lib/aws-route53";
3
+ import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
4
+ export class CnameRecord extends Construct {
5
+ record;
6
+ description;
7
+ fqdn;
8
+ constructor(scope, id, props) {
9
+ super(scope, id);
10
+ this.fqdn = resolveFqdn(props.zoneName, props.recordName);
11
+ this.description =
12
+ props.description ?? defaultDnsComment("CNAME", this.fqdn);
13
+ this.record = new CdkCnameRecord(this, "Record", {
14
+ zone: props.zone,
15
+ recordName: this.fqdn,
16
+ domainName: props.domainName,
17
+ ttl: resolveTtl(props.ttl),
18
+ comment: this.description
19
+ });
20
+ applyDnsRecordTags(this, props);
21
+ }
22
+ }
@@ -0,0 +1,17 @@
1
+ import { Duration } from "aws-cdk-lib";
2
+ import { type Construct } from "constructs";
3
+ import type { IHostedZone } from "aws-cdk-lib/aws-route53";
4
+ export interface DnsRecordCommonProps {
5
+ readonly zone: IHostedZone;
6
+ readonly zoneName: string;
7
+ readonly recordName: string;
8
+ readonly ttl?: number;
9
+ readonly description?: string;
10
+ readonly costAllocationEnvironment?: string;
11
+ readonly costAllocationDomain?: string;
12
+ }
13
+ export declare const DEFAULT_DNS_TTL_SECONDS = 300;
14
+ export declare function resolveFqdn(zoneName: string, recordName: string): string;
15
+ export declare function resolveTtl(ttlSeconds: number | undefined): Duration;
16
+ export declare function defaultDnsComment(recordType: string, fqdn: string): string;
17
+ export declare function applyDnsRecordTags(construct: Construct, props: Pick<DnsRecordCommonProps, "zoneName" | "costAllocationEnvironment" | "costAllocationDomain">): void;
@@ -0,0 +1,17 @@
1
+ import { Duration, Tags } from "aws-cdk-lib";
2
+ import { DNS_APEX } from "@fjall/util";
3
+ export const DEFAULT_DNS_TTL_SECONDS = 300;
4
+ export function resolveFqdn(zoneName, recordName) {
5
+ return recordName === DNS_APEX ? zoneName : `${recordName}.${zoneName}`;
6
+ }
7
+ export function resolveTtl(ttlSeconds) {
8
+ return Duration.seconds(ttlSeconds ?? DEFAULT_DNS_TTL_SECONDS);
9
+ }
10
+ export function defaultDnsComment(recordType, fqdn) {
11
+ return `Fjall-managed ${recordType} record for ${fqdn}`;
12
+ }
13
+ export function applyDnsRecordTags(construct, props) {
14
+ Tags.of(construct).add("fjall:costAllocation:environment", props.costAllocationEnvironment ?? "management");
15
+ Tags.of(construct).add("fjall:costAllocation:service", "dnsRecord");
16
+ Tags.of(construct).add("fjall:costAllocation:domain", props.costAllocationDomain ?? props.zoneName);
17
+ }
@@ -0,0 +1,10 @@
1
+ export { ARecord, type ARecordProps } from "./aRecord.js";
2
+ export { AaaaRecord, type AaaaRecordProps } from "./aaaaRecord.js";
3
+ export { CnameRecord, type CnameRecordProps } from "./cnameRecord.js";
4
+ export { MxRecord, type MxRecordProps, type MxRecordValue } from "./mxRecord.js";
5
+ export { TxtRecord, type TxtRecordProps } from "./txtRecord.js";
6
+ export { NsRecord, type NsRecordProps } from "./nsRecord.js";
7
+ export { SrvRecord, type SrvRecordProps, type SrvRecordValue } from "./srvRecord.js";
8
+ export { CaaRecord, type CaaRecordProps, type CaaRecordValue } from "./caaRecord.js";
9
+ export { AliasRecord, type AliasRecordProps } from "./aliasRecord.js";
10
+ export { DEFAULT_DNS_TTL_SECONDS, type DnsRecordCommonProps } from "./dnsRecordBase.js";
@@ -0,0 +1,10 @@
1
+ export { ARecord } from "./aRecord.js";
2
+ export { AaaaRecord } from "./aaaaRecord.js";
3
+ export { CnameRecord } from "./cnameRecord.js";
4
+ export { MxRecord } from "./mxRecord.js";
5
+ export { TxtRecord } from "./txtRecord.js";
6
+ export { NsRecord } from "./nsRecord.js";
7
+ export { SrvRecord } from "./srvRecord.js";
8
+ export { CaaRecord } from "./caaRecord.js";
9
+ export { AliasRecord } from "./aliasRecord.js";
10
+ export { DEFAULT_DNS_TTL_SECONDS } from "./dnsRecordBase.js";
@@ -0,0 +1,16 @@
1
+ import { Construct } from "constructs";
2
+ import { MxRecord as CdkMxRecord } from "aws-cdk-lib/aws-route53";
3
+ import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
4
+ export interface MxRecordValue {
5
+ readonly hostName: string;
6
+ readonly priority: number;
7
+ }
8
+ export interface MxRecordProps extends DnsRecordCommonProps {
9
+ readonly values: MxRecordValue[];
10
+ }
11
+ export declare class MxRecord extends Construct {
12
+ readonly record: CdkMxRecord;
13
+ readonly description: string;
14
+ readonly fqdn: string;
15
+ constructor(scope: Construct, id: string, props: MxRecordProps);
16
+ }
@@ -0,0 +1,21 @@
1
+ import { Construct } from "constructs";
2
+ import { MxRecord as CdkMxRecord } from "aws-cdk-lib/aws-route53";
3
+ import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
4
+ export class MxRecord extends Construct {
5
+ record;
6
+ description;
7
+ fqdn;
8
+ constructor(scope, id, props) {
9
+ super(scope, id);
10
+ this.fqdn = resolveFqdn(props.zoneName, props.recordName);
11
+ this.description = props.description ?? defaultDnsComment("MX", this.fqdn);
12
+ this.record = new CdkMxRecord(this, "Record", {
13
+ zone: props.zone,
14
+ recordName: this.fqdn,
15
+ values: props.values,
16
+ ttl: resolveTtl(props.ttl),
17
+ comment: this.description
18
+ });
19
+ applyDnsRecordTags(this, props);
20
+ }
21
+ }
@@ -0,0 +1,12 @@
1
+ import { Construct } from "constructs";
2
+ import { NsRecord as CdkNsRecord } from "aws-cdk-lib/aws-route53";
3
+ import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
4
+ export interface NsRecordProps extends DnsRecordCommonProps {
5
+ readonly values: string[];
6
+ }
7
+ export declare class NsRecord extends Construct {
8
+ readonly record: CdkNsRecord;
9
+ readonly description: string;
10
+ readonly fqdn: string;
11
+ constructor(scope: Construct, id: string, props: NsRecordProps);
12
+ }
@@ -0,0 +1,21 @@
1
+ import { Construct } from "constructs";
2
+ import { NsRecord as CdkNsRecord } from "aws-cdk-lib/aws-route53";
3
+ import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
4
+ export class NsRecord extends Construct {
5
+ record;
6
+ description;
7
+ fqdn;
8
+ constructor(scope, id, props) {
9
+ super(scope, id);
10
+ this.fqdn = resolveFqdn(props.zoneName, props.recordName);
11
+ this.description = props.description ?? defaultDnsComment("NS", this.fqdn);
12
+ this.record = new CdkNsRecord(this, "Record", {
13
+ zone: props.zone,
14
+ recordName: this.fqdn,
15
+ values: props.values,
16
+ ttl: resolveTtl(props.ttl),
17
+ comment: this.description
18
+ });
19
+ applyDnsRecordTags(this, props);
20
+ }
21
+ }
@@ -0,0 +1,18 @@
1
+ import { Construct } from "constructs";
2
+ import { SrvRecord as CdkSrvRecord } from "aws-cdk-lib/aws-route53";
3
+ import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
4
+ export interface SrvRecordValue {
5
+ readonly hostName: string;
6
+ readonly priority: number;
7
+ readonly weight: number;
8
+ readonly port: number;
9
+ }
10
+ export interface SrvRecordProps extends DnsRecordCommonProps {
11
+ readonly values: SrvRecordValue[];
12
+ }
13
+ export declare class SrvRecord extends Construct {
14
+ readonly record: CdkSrvRecord;
15
+ readonly description: string;
16
+ readonly fqdn: string;
17
+ constructor(scope: Construct, id: string, props: SrvRecordProps);
18
+ }
@@ -0,0 +1,21 @@
1
+ import { Construct } from "constructs";
2
+ import { SrvRecord as CdkSrvRecord } from "aws-cdk-lib/aws-route53";
3
+ import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
4
+ export class SrvRecord extends Construct {
5
+ record;
6
+ description;
7
+ fqdn;
8
+ constructor(scope, id, props) {
9
+ super(scope, id);
10
+ this.fqdn = resolveFqdn(props.zoneName, props.recordName);
11
+ this.description = props.description ?? defaultDnsComment("SRV", this.fqdn);
12
+ this.record = new CdkSrvRecord(this, "Record", {
13
+ zone: props.zone,
14
+ recordName: this.fqdn,
15
+ values: props.values,
16
+ ttl: resolveTtl(props.ttl),
17
+ comment: this.description
18
+ });
19
+ applyDnsRecordTags(this, props);
20
+ }
21
+ }
@@ -0,0 +1,12 @@
1
+ import { Construct } from "constructs";
2
+ import { TxtRecord as CdkTxtRecord } from "aws-cdk-lib/aws-route53";
3
+ import { type DnsRecordCommonProps } from "./dnsRecordBase.js";
4
+ export interface TxtRecordProps extends DnsRecordCommonProps {
5
+ readonly values: string[];
6
+ }
7
+ export declare class TxtRecord extends Construct {
8
+ readonly record: CdkTxtRecord;
9
+ readonly description: string;
10
+ readonly fqdn: string;
11
+ constructor(scope: Construct, id: string, props: TxtRecordProps);
12
+ }
@@ -0,0 +1,21 @@
1
+ import { Construct } from "constructs";
2
+ import { TxtRecord as CdkTxtRecord } from "aws-cdk-lib/aws-route53";
3
+ import { applyDnsRecordTags, defaultDnsComment, resolveFqdn, resolveTtl } from "./dnsRecordBase.js";
4
+ export class TxtRecord extends Construct {
5
+ record;
6
+ description;
7
+ fqdn;
8
+ constructor(scope, id, props) {
9
+ super(scope, id);
10
+ this.fqdn = resolveFqdn(props.zoneName, props.recordName);
11
+ this.description = props.description ?? defaultDnsComment("TXT", this.fqdn);
12
+ this.record = new CdkTxtRecord(this, "Record", {
13
+ zone: props.zone,
14
+ recordName: this.fqdn,
15
+ values: props.values,
16
+ ttl: resolveTtl(props.ttl),
17
+ comment: this.description
18
+ });
19
+ applyDnsRecordTags(this, props);
20
+ }
21
+ }
@@ -1,6 +1,6 @@
1
1
  import { Construct } from "constructs";
2
2
  import { type IHostedZone } from "aws-cdk-lib/aws-route53";
3
- import type { DomainApexProps } from "../../../utils/domainTypes";
3
+ import type { DomainApexProps } from "../../../utils/domainTypes.js";
4
4
  export declare class Domain extends Construct {
5
5
  readonly hostedZoneId: string;
6
6
  readonly hostedZone: IHostedZone;
@@ -1,20 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Domain = void 0;
4
- const constructs_1 = require("constructs");
5
- const aws_cdk_lib_1 = require("aws-cdk-lib");
6
- const capitaliseString_1 = require("../../../utils/capitaliseString");
7
- const iam_1 = require("../iam");
8
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
9
- const aws_route53_1 = require("aws-cdk-lib/aws-route53");
10
- const domainTypes_1 = require("../../../utils/domainTypes");
11
- const domainCertificate_1 = require("./domainCertificate");
12
- class Domain extends constructs_1.Construct {
1
+ import { Construct } from "constructs";
2
+ import { CfnOutput, Fn } from "aws-cdk-lib";
3
+ import { toPascalCase, getSafeZoneName } from "../../../utils/capitaliseString.js";
4
+ import { Role } from "../iam/index.js";
5
+ import { OrganizationPrincipal, PolicyDocument, PolicyStatement } from "aws-cdk-lib/aws-iam";
6
+ import { HostedZone as AWSHostedZone } from "aws-cdk-lib/aws-route53";
7
+ import { getDomainExportNames, addDnsRecords } from "../../../utils/domainTypes.js";
8
+ import { DomainCertificate } from "./domainCertificate.js";
9
+ export class Domain extends Construct {
10
+ hostedZoneId;
11
+ hostedZone;
12
+ zoneName;
13
13
  constructor(scope, id, props) {
14
14
  super(scope, id);
15
15
  this.zoneName = props.zoneName;
16
16
  if (!props.hostedZoneId) {
17
- const createdZone = new aws_route53_1.HostedZone(this, `${(0, capitaliseString_1.getSafeZoneName)(props.zoneName)}HostedZone`, {
17
+ const createdZone = new AWSHostedZone(this, `${getSafeZoneName(props.zoneName)}HostedZone`, {
18
18
  zoneName: props.zoneName,
19
19
  comment: `Hosted Zone for ${props.zoneName}`
20
20
  });
@@ -25,14 +25,14 @@ class Domain extends constructs_1.Construct {
25
25
  }
26
26
  else {
27
27
  this.hostedZoneId = props.hostedZoneId;
28
- this.hostedZone = aws_route53_1.HostedZone.fromHostedZoneAttributes(this, `${(0, capitaliseString_1.getSafeZoneName)(props.zoneName)}ImportedHostedZone`, {
28
+ this.hostedZone = AWSHostedZone.fromHostedZoneAttributes(this, `${getSafeZoneName(props.zoneName)}ImportedHostedZone`, {
29
29
  hostedZoneId: props.hostedZoneId,
30
30
  zoneName: props.zoneName
31
31
  });
32
32
  }
33
33
  this.addZoneIdOutput();
34
34
  if (props.records) {
35
- (0, domainTypes_1.addDnsRecords)(this, this.hostedZone, this.zoneName, props.records);
35
+ addDnsRecords(this, this.hostedZone, this.zoneName, props.records);
36
36
  }
37
37
  if (props.certificates) {
38
38
  this.addCertificates(props.certificates);
@@ -40,22 +40,22 @@ class Domain extends constructs_1.Construct {
40
40
  }
41
41
  addDelegationRole(zone) {
42
42
  const domainLabel = this.zoneName.split(".")[0] ?? "default";
43
- const safeDomainLabel = (0, capitaliseString_1.toPascalCase)(domainLabel);
44
- const role = new iam_1.Role(this, `${safeDomainLabel}DelegateHostedZoneRole`, {
45
- assumedBy: new aws_iam_1.OrganizationPrincipal(aws_cdk_lib_1.Fn.importValue("OrganisationId")),
43
+ const safeDomainLabel = toPascalCase(domainLabel);
44
+ const role = new Role(this, `${safeDomainLabel}DelegateHostedZoneRole`, {
45
+ assumedBy: new OrganizationPrincipal(Fn.importValue("OrganisationId")),
46
46
  roleName: `${domainLabel}DelegateHostedZoneRole`,
47
47
  inlinePolicies: {
48
- ["listHostedZones"]: new aws_iam_1.PolicyDocument({
48
+ ["listHostedZones"]: new PolicyDocument({
49
49
  statements: [
50
- new aws_iam_1.PolicyStatement({
50
+ new PolicyStatement({
51
51
  actions: ["route53:ListHostedZonesByName"],
52
52
  resources: ["*"]
53
53
  })
54
54
  ]
55
55
  }),
56
- ["changeResourceRecordSets"]: new aws_iam_1.PolicyDocument({
56
+ ["changeResourceRecordSets"]: new PolicyDocument({
57
57
  statements: [
58
- new aws_iam_1.PolicyStatement({
58
+ new PolicyStatement({
59
59
  actions: ["route53:ChangeResourceRecordSets"],
60
60
  resources: [`arn:aws:route53:::hostedzone/${zone.hostedZoneId}`]
61
61
  })
@@ -64,33 +64,33 @@ class Domain extends constructs_1.Construct {
64
64
  }
65
65
  });
66
66
  zone.grantDelegation(role);
67
- new aws_cdk_lib_1.CfnOutput(this, `${safeDomainLabel}DelegateHostedZoneRoleArn`, {
67
+ new CfnOutput(this, `${safeDomainLabel}DelegateHostedZoneRoleArn`, {
68
68
  key: `${safeDomainLabel}DelegateHostedZoneRoleArn`,
69
69
  value: role.roleArn,
70
70
  exportName: `${domainLabel}DelegateHostedZoneRoleArn`
71
71
  });
72
72
  }
73
73
  addZoneIdOutput() {
74
- const safeKey = (0, capitaliseString_1.toPascalCase)((0, capitaliseString_1.getSafeZoneName)(this.zoneName));
75
- const exports = (0, domainTypes_1.getDomainExportNames)(this.zoneName);
76
- new aws_cdk_lib_1.CfnOutput(this, `${safeKey}HostedZoneId`, {
74
+ const safeKey = toPascalCase(getSafeZoneName(this.zoneName));
75
+ const exports = getDomainExportNames(this.zoneName);
76
+ new CfnOutput(this, `${safeKey}HostedZoneId`, {
77
77
  key: `${safeKey}HostedZoneId`,
78
78
  value: this.hostedZoneId,
79
79
  exportName: exports.hostedZoneId
80
80
  });
81
81
  }
82
82
  addNameserverOutput(zone) {
83
- const safeKey = (0, capitaliseString_1.toPascalCase)((0, capitaliseString_1.getSafeZoneName)(this.zoneName));
84
- new aws_cdk_lib_1.CfnOutput(this, `${safeKey}Nameservers`, {
83
+ const safeKey = toPascalCase(getSafeZoneName(this.zoneName));
84
+ new CfnOutput(this, `${safeKey}Nameservers`, {
85
85
  key: `${safeKey}Nameservers`,
86
- value: aws_cdk_lib_1.Fn.join(",", zone.hostedZoneNameServers ?? [])
86
+ value: Fn.join(",", zone.hostedZoneNameServers ?? [])
87
87
  });
88
88
  }
89
89
  addCertificates(certificates) {
90
- const safeZone = (0, capitaliseString_1.toPascalCase)((0, capitaliseString_1.getSafeZoneName)(this.zoneName));
90
+ const safeZone = toPascalCase(getSafeZoneName(this.zoneName));
91
91
  certificates.forEach((cert, index) => {
92
- const safeCertName = (0, capitaliseString_1.toPascalCase)(cert.domainName.split(".").join(""));
93
- new domainCertificate_1.DomainCertificate(this, `${safeZone}${safeCertName}Cert${index}`, {
92
+ const safeCertName = toPascalCase(cert.domainName.split(".").join(""));
93
+ new DomainCertificate(this, `${safeZone}${safeCertName}Cert${index}`, {
94
94
  domainName: cert.domainName,
95
95
  subjectAlternativeNames: cert.subjectAlternativeNames,
96
96
  hostedZone: this.hostedZone
@@ -98,5 +98,3 @@ class Domain extends constructs_1.Construct {
98
98
  });
99
99
  }
100
100
  }
101
- exports.Domain = Domain;
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy9kb21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUE0QztBQUM1QyxzRUFBZ0Y7QUFDaEYsZ0NBQThCO0FBQzlCLGlEQUk2QjtBQUM3Qix5REFHaUM7QUFLakMsNERBR29DO0FBQ3BDLDJEQUF3RDtBQUV4RCxNQUFhLE1BQU8sU0FBUSxzQkFBUztJQUtuQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXNCO1FBQzlELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRS9CLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSx3QkFBYSxDQUNuQyxJQUFJLEVBQ0osR0FBRyxJQUFBLGtDQUFlLEVBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQzlDO2dCQUNFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxFQUFFLG1CQUFtQixLQUFLLENBQUMsUUFBUSxFQUFFO2FBQzdDLENBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsd0JBQWEsQ0FBQyx3QkFBd0IsQ0FDdEQsSUFBSSxFQUNKLEdBQUcsSUFBQSxrQ0FBZSxFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQ3REO2dCQUNFLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDaEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ3pCLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFdkIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsSUFBQSwyQkFBYSxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQW1CO1FBQzNDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUM3RCxNQUFNLGVBQWUsR0FBRyxJQUFBLCtCQUFZLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsZUFBZSx3QkFBd0IsRUFBRTtZQUN0RSxTQUFTLEVBQUUsSUFBSSwrQkFBcUIsQ0FBQyxnQkFBRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3RFLFFBQVEsRUFBRSxHQUFHLFdBQVcsd0JBQXdCO1lBQ2hELGNBQWMsRUFBRTtnQkFDZCxDQUFDLGlCQUFpQixDQUFDLEVBQUUsSUFBSSx3QkFBYyxDQUFDO29CQUN0QyxVQUFVLEVBQUU7d0JBQ1YsSUFBSSx5QkFBZSxDQUFDOzRCQUNsQixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQzs0QkFDMUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3lCQUNqQixDQUFDO3FCQUNIO2lCQUNGLENBQUM7Z0JBQ0YsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLElBQUksd0JBQWMsQ0FBQztvQkFDL0MsVUFBVSxFQUFFO3dCQUNWLElBQUkseUJBQWUsQ0FBQzs0QkFDbEIsT0FBTyxFQUFFLENBQUMsa0NBQWtDLENBQUM7NEJBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7eUJBQ2pFLENBQUM7cUJBQ0g7aUJBQ0YsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsZUFBZSwyQkFBMkIsRUFBRTtZQUNqRSxHQUFHLEVBQUUsR0FBRyxlQUFlLDJCQUEyQjtZQUNsRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDbkIsVUFBVSxFQUFFLEdBQUcsV0FBVywyQkFBMkI7U0FDdEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWU7UUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBWSxFQUFDLElBQUEsa0NBQWUsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM3RCxNQUFNLE9BQU8sR0FBRyxJQUFBLGtDQUFvQixFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVwRCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsT0FBTyxjQUFjLEVBQUU7WUFDNUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxjQUFjO1lBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN4QixVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQVk7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQixDQUFDLElBQW1CO1FBQzdDLE1BQU0sT0FBTyxHQUFHLElBQUEsK0JBQVksRUFBQyxJQUFBLGtDQUFlLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFN0QsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sYUFBYSxFQUFFO1lBQzNDLEdBQUcsRUFBRSxHQUFHLE9BQU8sYUFBYTtZQUM1QixLQUFLLEVBQUUsZ0JBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLENBQUM7U0FDdEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFnQztRQUN0RCxNQUFNLFFBQVEsR0FBRyxJQUFBLCtCQUFZLEVBQUMsSUFBQSxrQ0FBZSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTlELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBQSwrQkFBWSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZFLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxHQUFHLFlBQVksT0FBTyxLQUFLLEVBQUUsRUFBRTtnQkFDcEUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQix1QkFBdUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCO2dCQUNyRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFsSEQsd0JBa0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRm4gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHRvUGFzY2FsQ2FzZSwgZ2V0U2FmZVpvbmVOYW1lIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2NhcGl0YWxpc2VTdHJpbmdcIjtcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiLi4vaWFtXCI7XG5pbXBvcnQge1xuICBPcmdhbml6YXRpb25QcmluY2lwYWwsXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnRcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIEhvc3RlZFpvbmUgYXMgQVdTSG9zdGVkWm9uZSxcbiAgdHlwZSBJSG9zdGVkWm9uZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB0eXBlIHtcbiAgRG9tYWluQXBleFByb3BzLFxuICBDZXJ0aWZpY2F0ZUlucHV0XG59IGZyb20gXCIuLi8uLi8uLi91dGlscy9kb21haW5UeXBlc1wiO1xuaW1wb3J0IHtcbiAgZ2V0RG9tYWluRXhwb3J0TmFtZXMsXG4gIGFkZERuc1JlY29yZHNcbn0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2RvbWFpblR5cGVzXCI7XG5pbXBvcnQgeyBEb21haW5DZXJ0aWZpY2F0ZSB9IGZyb20gXCIuL2RvbWFpbkNlcnRpZmljYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBEb21haW4gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBob3N0ZWRab25lOiBJSG9zdGVkWm9uZTtcbiAgcHJpdmF0ZSByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEb21haW5BcGV4UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy56b25lTmFtZSA9IHByb3BzLnpvbmVOYW1lO1xuXG4gICAgaWYgKCFwcm9wcy5ob3N0ZWRab25lSWQpIHtcbiAgICAgIGNvbnN0IGNyZWF0ZWRab25lID0gbmV3IEFXU0hvc3RlZFpvbmUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke2dldFNhZmVab25lTmFtZShwcm9wcy56b25lTmFtZSl9SG9zdGVkWm9uZWAsXG4gICAgICAgIHtcbiAgICAgICAgICB6b25lTmFtZTogcHJvcHMuem9uZU5hbWUsXG4gICAgICAgICAgY29tbWVudDogYEhvc3RlZCBab25lIGZvciAke3Byb3BzLnpvbmVOYW1lfWBcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZSA9IGNyZWF0ZWRab25lO1xuICAgICAgdGhpcy5ob3N0ZWRab25lSWQgPSBjcmVhdGVkWm9uZS5ob3N0ZWRab25lSWQ7XG4gICAgICB0aGlzLmFkZERlbGVnYXRpb25Sb2xlKGNyZWF0ZWRab25lKTtcbiAgICAgIHRoaXMuYWRkTmFtZXNlcnZlck91dHB1dChjcmVhdGVkWm9uZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gcHJvcHMuaG9zdGVkWm9uZUlkO1xuICAgICAgdGhpcy5ob3N0ZWRab25lID0gQVdTSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIGAke2dldFNhZmVab25lTmFtZShwcm9wcy56b25lTmFtZSl9SW1wb3J0ZWRIb3N0ZWRab25lYCxcbiAgICAgICAge1xuICAgICAgICAgIGhvc3RlZFpvbmVJZDogcHJvcHMuaG9zdGVkWm9uZUlkLFxuICAgICAgICAgIHpvbmVOYW1lOiBwcm9wcy56b25lTmFtZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYWRkWm9uZUlkT3V0cHV0KCk7XG5cbiAgICBpZiAocHJvcHMucmVjb3Jkcykge1xuICAgICAgYWRkRG5zUmVjb3Jkcyh0aGlzLCB0aGlzLmhvc3RlZFpvbmUsIHRoaXMuem9uZU5hbWUsIHByb3BzLnJlY29yZHMpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5jZXJ0aWZpY2F0ZXMpIHtcbiAgICAgIHRoaXMuYWRkQ2VydGlmaWNhdGVzKHByb3BzLmNlcnRpZmljYXRlcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWxlZ2F0aW9uUm9sZSh6b25lOiBBV1NIb3N0ZWRab25lKSB7XG4gICAgY29uc3QgZG9tYWluTGFiZWwgPSB0aGlzLnpvbmVOYW1lLnNwbGl0KFwiLlwiKVswXSA/PyBcImRlZmF1bHRcIjtcbiAgICBjb25zdCBzYWZlRG9tYWluTGFiZWwgPSB0b1Bhc2NhbENhc2UoZG9tYWluTGFiZWwpO1xuXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBSb2xlKHRoaXMsIGAke3NhZmVEb21haW5MYWJlbH1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlYCwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgT3JnYW5pemF0aW9uUHJpbmNpcGFsKEZuLmltcG9ydFZhbHVlKFwiT3JnYW5pc2F0aW9uSWRcIikpLFxuICAgICAgcm9sZU5hbWU6IGAke2RvbWFpbkxhYmVsfURlbGVnYXRlSG9zdGVkWm9uZVJvbGVgLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgW1wibGlzdEhvc3RlZFpvbmVzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJyb3V0ZTUzOkxpc3RIb3N0ZWRab25lc0J5TmFtZVwiXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgfSksXG4gICAgICAgIFtcImNoYW5nZVJlc291cmNlUmVjb3JkU2V0c1wiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1wicm91dGU1MzpDaGFuZ2VSZXNvdXJjZVJlY29yZFNldHNcIl0sXG4gICAgICAgICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7em9uZS5ob3N0ZWRab25lSWR9YF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgem9uZS5ncmFudERlbGVnYXRpb24ocm9sZSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVEb21haW5MYWJlbH1EZWxlZ2F0ZUhvc3RlZFpvbmVSb2xlQXJuYCwge1xuICAgICAga2V5OiBgJHtzYWZlRG9tYWluTGFiZWx9RGVsZWdhdGVIb3N0ZWRab25lUm9sZUFybmAsXG4gICAgICB2YWx1ZTogcm9sZS5yb2xlQXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7ZG9tYWluTGFiZWx9RGVsZWdhdGVIb3N0ZWRab25lUm9sZUFybmBcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkWm9uZUlkT3V0cHV0KCkge1xuICAgIGNvbnN0IHNhZmVLZXkgPSB0b1Bhc2NhbENhc2UoZ2V0U2FmZVpvbmVOYW1lKHRoaXMuem9uZU5hbWUpKTtcbiAgICBjb25zdCBleHBvcnRzID0gZ2V0RG9tYWluRXhwb3J0TmFtZXModGhpcy56b25lTmFtZSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVLZXl9SG9zdGVkWm9uZUlkYCwge1xuICAgICAga2V5OiBgJHtzYWZlS2V5fUhvc3RlZFpvbmVJZGAsXG4gICAgICB2YWx1ZTogdGhpcy5ob3N0ZWRab25lSWQsXG4gICAgICBleHBvcnROYW1lOiBleHBvcnRzLmhvc3RlZFpvbmVJZFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGROYW1lc2VydmVyT3V0cHV0KHpvbmU6IEFXU0hvc3RlZFpvbmUpIHtcbiAgICBjb25zdCBzYWZlS2V5ID0gdG9QYXNjYWxDYXNlKGdldFNhZmVab25lTmFtZSh0aGlzLnpvbmVOYW1lKSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke3NhZmVLZXl9TmFtZXNlcnZlcnNgLCB7XG4gICAgICBrZXk6IGAke3NhZmVLZXl9TmFtZXNlcnZlcnNgLFxuICAgICAgdmFsdWU6IEZuLmpvaW4oXCIsXCIsIHpvbmUuaG9zdGVkWm9uZU5hbWVTZXJ2ZXJzID8/IFtdKVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRDZXJ0aWZpY2F0ZXMoY2VydGlmaWNhdGVzOiBDZXJ0aWZpY2F0ZUlucHV0W10pIHtcbiAgICBjb25zdCBzYWZlWm9uZSA9IHRvUGFzY2FsQ2FzZShnZXRTYWZlWm9uZU5hbWUodGhpcy56b25lTmFtZSkpO1xuXG4gICAgY2VydGlmaWNhdGVzLmZvckVhY2goKGNlcnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzYWZlQ2VydE5hbWUgPSB0b1Bhc2NhbENhc2UoY2VydC5kb21haW5OYW1lLnNwbGl0KFwiLlwiKS5qb2luKFwiXCIpKTtcbiAgICAgIG5ldyBEb21haW5DZXJ0aWZpY2F0ZSh0aGlzLCBgJHtzYWZlWm9uZX0ke3NhZmVDZXJ0TmFtZX1DZXJ0JHtpbmRleH1gLCB7XG4gICAgICAgIGRvbWFpbk5hbWU6IGNlcnQuZG9tYWluTmFtZSxcbiAgICAgICAgc3ViamVjdEFsdGVybmF0aXZlTmFtZXM6IGNlcnQuc3ViamVjdEFsdGVybmF0aXZlTmFtZXMsXG4gICAgICAgIGhvc3RlZFpvbmU6IHRoaXMuaG9zdGVkWm9uZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -2,12 +2,17 @@ import { Construct } from "constructs";
2
2
  import { Certificate } from "aws-cdk-lib/aws-certificatemanager";
3
3
  import { type IHostedZone } from "aws-cdk-lib/aws-route53";
4
4
  export interface DomainCertificateProps {
5
- domainName: string;
6
- subjectAlternativeNames?: string[];
7
- hostedZone: IHostedZone;
5
+ readonly domainName: string;
6
+ readonly subjectAlternativeNames?: string[];
7
+ readonly hostedZone: IHostedZone;
8
+ readonly description?: string;
9
+ readonly transparencyLogging?: boolean;
10
+ readonly costAllocationEnvironment?: string;
11
+ readonly costAllocationDomain?: string;
8
12
  }
9
13
  export declare class DomainCertificate extends Construct {
10
14
  readonly certificate: Certificate;
11
15
  readonly certificateArn: string;
16
+ readonly description: string;
12
17
  constructor(scope: Construct, id: string, props: DomainCertificateProps);
13
18
  }