@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
@@ -1,44 +1,53 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Account = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_1 = require("../../config/aws");
6
- const cloudTrail_1 = require("../../config/aws/cloudTrail");
7
- const oidcConnector_1 = require("../../config/aws/oidcConnector");
8
- const accountMonitoringRole_1 = require("../../config/aws/accountMonitoringRole");
9
- const accountAuditRole_1 = require("../../config/aws/accountAuditRole");
10
- const getConfig_1 = require("../../utils/getConfig");
11
- const disasterRecovery_1 = require("../../config/aws/disasterRecovery");
12
- class Account extends aws_cdk_lib_1.Stack {
1
+ import { CfnOutput, Stack } from "aws-cdk-lib";
2
+ import { EcrDefaultImage, DefaultEventBus, SharedAlarmTopic } from "../../config/aws/index.js";
3
+ import { ManagementEventsTrail } from "../../config/aws/cloudTrail.js";
4
+ import { OidcConnector } from "../../config/aws/oidcConnector.js";
5
+ import { AccountMonitoringRole } from "../../config/aws/accountMonitoringRole.js";
6
+ import { AccountAuditRole } from "../../config/aws/accountAuditRole.js";
7
+ import { getConfig } from "../../utils/getConfig.js";
8
+ import { DisasterRecovery } from "../../config/aws/disasterRecovery.js";
9
+ import { S3BlockPublicAccess } from "../../config/aws/s3BlockPublicAccess.js";
10
+ import { EbsDefaultEncryption } from "../../config/aws/ebsDefaultEncryption.js";
11
+ import { ConfigRulePreset } from "../../config/aws/configRulePreset.js";
12
+ import { GuardDutyDetector } from "../../config/aws/guardDutyDetector.js";
13
+ import { SecurityHubHub } from "../../config/aws/securityHubHub.js";
14
+ import { ConfigRecorder } from "../../config/aws/configRecorder.js";
15
+ import { AccountAccessAnalyser } from "../../config/aws/accessAnalyser.js";
16
+ import { InspectorEnablement } from "../../config/aws/inspectorEnablement.js";
17
+ export class Account extends Stack {
18
+ organisationType = "account";
19
+ resolvedRegion;
13
20
  constructor(scope, id, props) {
14
- const config = (0, getConfig_1.getConfig)();
21
+ const config = getConfig();
15
22
  const accountId = props.accountId ?? config.accountId;
16
23
  const region = props.region ?? config.region;
17
24
  if (!accountId) {
18
25
  throw new Error("Account requires an account ID. Provide it via accountId or ensure CDK context includes accountId.");
19
26
  }
20
- super(scope, id, props);
21
- this.organisationType = "account";
22
- this.resolvedRegion = region;
27
+ const env = props.env ?? { region, account: accountId };
28
+ super(scope, id, { ...props, env });
29
+ this.resolvedRegion = region ?? this.region;
23
30
  const orgId = this.node.tryGetContext("orgId");
24
31
  if (orgId) {
25
- new aws_cdk_lib_1.CfnOutput(this, "OrganisationIdOutput", {
32
+ new CfnOutput(this, "OrganisationIdOutput", {
26
33
  key: "OrganisationId",
27
34
  value: orgId,
28
35
  exportName: "OrganisationId"
29
36
  });
30
37
  }
31
- new aws_cdk_lib_1.CfnOutput(this, "AccountIdOutput", {
38
+ new CfnOutput(this, "AccountIdOutput", {
32
39
  key: "AccountId",
33
40
  value: this.account,
34
41
  exportName: "AccountId",
35
42
  description: "AWS Account ID for this account"
36
43
  });
37
- const eventBus = new aws_1.DefaultEventBus(this, "EventBus");
44
+ const eventBus = new DefaultEventBus(this, "EventBus");
45
+ new SharedAlarmTopic(this, "AlarmTopic");
46
+ const isStandaloneAccount = this.constructor === Account;
38
47
  const ipamPoolId = this.node.tryGetContext("ipamPoolId");
39
- if (id === "Account" && ipamPoolId) {
40
- const regionSuffix = region.replace(/-/g, "");
41
- new aws_cdk_lib_1.CfnOutput(this, "IpamPoolIdOutput", {
48
+ if (isStandaloneAccount && ipamPoolId && this.resolvedRegion) {
49
+ const regionSuffix = this.resolvedRegion.replace(/-/g, "");
50
+ new CfnOutput(this, "IpamPoolIdOutput", {
42
51
  key: `IpamPoolId${accountId}${regionSuffix}`,
43
52
  value: ipamPoolId,
44
53
  exportName: `IpamPoolId${accountId}${regionSuffix}`
@@ -46,41 +55,59 @@ class Account extends aws_cdk_lib_1.Stack {
46
55
  }
47
56
  const fjallOrgId = this.node.tryGetContext("fjallOrgId");
48
57
  const oidcAlreadyConfigured = this.node.tryGetContext("fjallOidcConfigured") === "true";
49
- if (id === "Account" && fjallOrgId && !oidcAlreadyConfigured) {
50
- new oidcConnector_1.OidcConnector(this, "OidcConnector", { fjallOrgId });
58
+ if (isStandaloneAccount && fjallOrgId && !oidcAlreadyConfigured) {
59
+ new OidcConnector(this, "OidcConnector", { fjallOrgId });
51
60
  }
52
61
  // Per-account monitoring role (unconditional; ExternalId added when orgId known)
53
- new accountMonitoringRole_1.AccountMonitoringRole(this, "MonitoringRole", fjallOrgId ? { fjallOrgId } : undefined);
62
+ new AccountMonitoringRole(this, "MonitoringRole", fjallOrgId ? { fjallOrgId } : undefined);
54
63
  // Per-account audit role (conditional on fjallOrgId)
55
64
  if (fjallOrgId) {
56
- new accountAuditRole_1.AccountAuditRole(this, "AuditRole", { fjallOrgId });
65
+ new AccountAuditRole(this, "AuditRole", { fjallOrgId });
57
66
  }
58
- new cloudTrail_1.ManagementEventsTrail(this, "CloudTrail", {
67
+ new ManagementEventsTrail(this, "CloudTrail", {
59
68
  accountId: this.account,
60
69
  region
61
70
  });
62
- new aws_1.EcrDefaultImage(this, "EcrDefaultImage", {
71
+ new EcrDefaultImage(this, "EcrDefaultImage", {
63
72
  region,
64
73
  accountId: this.account,
65
74
  eventBusArn: eventBus.defaultEventBusArn.value
66
75
  });
67
- const environment = config.environment || "unknown";
76
+ const environment = config.environment ?? "unknown";
68
77
  if (config.disasterRecoveryRegion) {
69
78
  const isComplianceAccount = environment === "compliance";
70
79
  if (environment === "production" || isComplianceAccount) {
71
- new disasterRecovery_1.DisasterRecovery(this, "DisasterRecovery", {
80
+ new DisasterRecovery(this, "DisasterRecovery", {
72
81
  region,
73
82
  accountId
74
83
  });
75
84
  }
76
85
  }
77
- new aws_cdk_lib_1.CfnOutput(this, "Environment", {
86
+ new CfnOutput(this, "Environment", {
78
87
  key: "Environment",
79
88
  value: environment,
80
89
  exportName: "Environment",
81
90
  description: "Environment type for this account (e.g., production, staging, development)"
82
91
  });
92
+ new S3BlockPublicAccess(this, "S3BlockPublicAccess");
93
+ new EbsDefaultEncryption(this, "EbsDefaultEncryption");
94
+ }
95
+ enableGuardDuty(props) {
96
+ return new GuardDutyDetector(this, "GuardDuty", props);
97
+ }
98
+ enableSecurityHub(props) {
99
+ return new SecurityHubHub(this, "SecurityHub", props);
100
+ }
101
+ enableConfigRecorder(props) {
102
+ return new ConfigRecorder(this, "ConfigRecorder", props);
103
+ }
104
+ enableAccessAnalyser() {
105
+ return new AccountAccessAnalyser(this, "AccessAnalyser");
106
+ }
107
+ enableInspector() {
108
+ return new InspectorEnablement(this, "Inspector");
109
+ }
110
+ enableConfigRules(props) {
111
+ return new ConfigRulePreset(this, "ConfigRules", props);
83
112
  }
84
113
  }
85
- exports.Account = Account;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBZ0U7QUFDaEUsMENBQW9FO0FBRXBFLDREQUFvRTtBQUNwRSxrRUFBK0Q7QUFDL0Qsa0ZBQStFO0FBQy9FLHdFQUFxRTtBQUNyRSxxREFBa0Q7QUFDbEQsd0VBQXFFO0FBUXJFLE1BQWEsT0FBUSxTQUFRLG1CQUFLO0lBSWhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBUyxHQUFFLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUU3QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxDQUNyRyxDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBZFYscUJBQWdCLEdBQXFCLFNBQVMsQ0FBQztRQWdCN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFFN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQzFDLEdBQUcsRUFBRSxnQkFBZ0I7Z0JBQ3JCLEtBQUssRUFBRSxLQUFLO2dCQUNaLFVBQVUsRUFBRSxnQkFBZ0I7YUFDN0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUks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dCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIFN0YWNrLCB0eXBlIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEVjckRlZmF1bHRJbWFnZSwgRGVmYXVsdEV2ZW50QnVzIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3NcIjtcbmltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IE1hbmFnZW1lbnRFdmVudHNUcmFpbCB9IGZyb20gXCIuLi8uLi9jb25maWcvYXdzL2Nsb3VkVHJhaWxcIjtcbmltcG9ydCB7IE9pZGNDb25uZWN0b3IgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9vaWRjQ29ubmVjdG9yXCI7XG5pbXBvcnQgeyBBY2NvdW50TW9uaXRvcmluZ1JvbGUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9hY2NvdW50TW9uaXRvcmluZ1JvbGVcIjtcbmltcG9ydCB7IEFjY291bnRBdWRpdFJvbGUgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9hY2NvdW50QXVkaXRSb2xlXCI7XG5pbXBvcnQgeyBnZXRDb25maWcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZ2V0Q29uZmlnXCI7XG5pbXBvcnQgeyBEaXNhc3RlclJlY292ZXJ5IH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvZGlzYXN0ZXJSZWNvdmVyeVwiO1xuaW1wb3J0IHR5cGUgeyBPcmdhbmlzYXRpb25UeXBlIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9vcmdhbmlzYXRpb25cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50UHJvcHMgZXh0ZW5kcyBTdGFja1Byb3BzIHtcbiAgYWNjb3VudElkPzogc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBBY2NvdW50IGV4dGVuZHMgU3RhY2sge1xuICBwdWJsaWMgcmVhZG9ubHkgb3JnYW5pc2F0aW9uVHlwZTogT3JnYW5pc2F0aW9uVHlwZSA9IFwiYWNjb3VudFwiO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzb2x2ZWRSZWdpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQWNjb3VudFByb3BzKSB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgYWNjb3VudElkID0gcHJvcHMuYWNjb3VudElkID8/IGNvbmZpZy5hY2NvdW50SWQ7XG4gICAgY29uc3QgcmVnaW9uID0gcHJvcHMucmVnaW9uID8/IGNvbmZpZy5yZWdpb247XG5cbiAgICBpZiAoIWFjY291bnRJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkFjY291bnQgcmVxdWlyZXMgYW4gYWNjb3VudCBJRC4gUHJvdmlkZSBpdCB2aWEgYWNjb3VudElkIG9yIGVuc3VyZSBDREsgY29udGV4dCBpbmNsdWRlcyBhY2NvdW50SWQuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnJlc29sdmVkUmVnaW9uID0gcmVnaW9uO1xuXG4gICAgY29uc3Qgb3JnSWQgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcIm9yZ0lkXCIpO1xuICAgIGlmIChvcmdJZCkge1xuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIk9yZ2FuaXNhdGlvbklkT3V0cHV0XCIsIHtcbiAgICAgICAga2V5OiBcIk9yZ2FuaXNhdGlvbklkXCIsXG4gICAgICAgIHZhbHVlOiBvcmdJZCxcbiAgICAgICAgZXhwb3J0TmFtZTogXCJPcmdhbmlzYXRpb25JZFwiXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiQWNjb3VudElkT3V0cHV0XCIsIHtcbiAgICAgIGtleTogXCJBY2NvdW50SWRcIixcbiAgICAgIHZhbHVlOiB0aGlzLmFjY291bnQsXG4gICAgICBleHBvcnROYW1lOiBcIkFjY291bnRJZFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiQVdTIEFjY291bnQgSUQgZm9yIHRoaXMgYWNjb3VudFwiXG4gICAgfSk7XG5cbiAgICBjb25zdCBldmVudEJ1cyA9IG5ldyBEZWZhdWx0RXZlbnRCdXModGhpcywgXCJFdmVudEJ1c1wiKTtcblxuICAgIGNvbnN0IGlwYW1Qb29sSWQgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcImlwYW1Qb29sSWRcIik7XG4gICAgaWYgKGlkID09PSBcIkFjY291bnRcIiAmJiBpcGFtUG9vbElkKSB7XG4gICAgICBjb25zdCByZWdpb25TdWZmaXggPSByZWdpb24ucmVwbGFjZSgvLS9nLCBcIlwiKTtcbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJJcGFtUG9vbElkT3V0cHV0XCIsIHtcbiAgICAgICAga2V5OiBgSXBhbVBvb2xJZCR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWAsXG4gICAgICAgIHZhbHVlOiBpcGFtUG9vbElkLFxuICAgICAgICBleHBvcnROYW1lOiBgSXBhbVBvb2xJZCR7YWNjb3VudElkfSR7cmVnaW9uU3VmZml4fWBcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGZqYWxsT3JnSWQgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcImZqYWxsT3JnSWRcIik7XG4gICAgY29uc3Qgb2lkY0FscmVhZHlDb25maWd1cmVkID1cbiAgICAgIHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFwiZmphbGxPaWRjQ29uZmlndXJlZFwiKSA9PT0gXCJ0cnVlXCI7XG4gICAgaWYgKGlkID09PSBcIkFjY291bnRcIiAmJiBmamFsbE9yZ0lkICYmICFvaWRjQWxyZWFkeUNvbmZpZ3VyZWQpIHtcbiAgICAgIG5ldyBPaWRjQ29ubmVjdG9yKHRoaXMsIFwiT2lkY0Nvbm5lY3RvclwiLCB7IGZqYWxsT3JnSWQgfSk7XG4gICAgfVxuXG4gICAgLy8gUGVyLWFjY291bnQgbW9uaXRvcmluZyByb2xlICh1bmNvbmRpdGlvbmFsOyBFeHRlcm5hbElkIGFkZGVkIHdoZW4gb3JnSWQga25vd24pXG4gICAgbmV3IEFjY291bnRNb25pdG9yaW5nUm9sZShcbiAgICAgIHRoaXMsXG4gICAgICBcIk1vbml0b3JpbmdSb2xlXCIsXG4gICAgICBmamFsbE9yZ0lkID8geyBmamFsbE9yZ0lkIH0gOiB1bmRlZmluZWRcbiAgICApO1xuXG4gICAgLy8gUGVyLWFjY291bnQgYXVkaXQgcm9sZSAoY29uZGl0aW9uYWwgb24gZmphbGxPcmdJZClcbiAgICBpZiAoZmphbGxPcmdJZCkge1xuICAgICAgbmV3IEFjY291bnRBdWRpdFJvbGUodGhpcywgXCJBdWRpdFJvbGVcIiwgeyBmamFsbE9yZ0lkIH0pO1xuICAgIH1cblxuICAgIG5ldyBNYW5hZ2VtZW50RXZlbnRzVHJhaWwodGhpcywgXCJDbG91ZFRyYWlsXCIsIHtcbiAgICAgIGFjY291bnRJZDogdGhpcy5hY2NvdW50LFxuICAgICAgcmVnaW9uXG4gICAgfSk7XG5cbiAgICBuZXcgRWNyRGVmYXVsdEltYWdlKHRoaXMsIFwiRWNyRGVmYXVsdEltYWdlXCIsIHtcbiAgICAgIHJlZ2lvbixcbiAgICAgIGFjY291bnRJZDogdGhpcy5hY2NvdW50LFxuICAgICAgZXZlbnRCdXNBcm46IGV2ZW50QnVzLmRlZmF1bHRFdmVudEJ1c0Fybi52YWx1ZVxuICAgIH0pO1xuXG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBjb25maWcuZW52aXJvbm1lbnQgfHwgXCJ1bmtub3duXCI7XG5cbiAgICBpZiAoY29uZmlnLmRpc2FzdGVyUmVjb3ZlcnlSZWdpb24pIHtcbiAgICAgIGNvbnN0IGlzQ29tcGxpYW5jZUFjY291bnQgPSBlbnZpcm9ubWVudCA9PT0gXCJjb21wbGlhbmNlXCI7XG5cbiAgICAgIGlmIChlbnZpcm9ubWVudCA9PT0gXCJwcm9kdWN0aW9uXCIgfHwgaXNDb21wbGlhbmNlQWNjb3VudCkge1xuICAgICAgICBuZXcgRGlzYXN0ZXJSZWNvdmVyeSh0aGlzLCBcIkRpc2FzdGVyUmVjb3ZlcnlcIiwge1xuICAgICAgICAgIHJlZ2lvbixcbiAgICAgICAgICBhY2NvdW50SWRcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIkVudmlyb25tZW50XCIsIHtcbiAgICAgIGtleTogXCJFbnZpcm9ubWVudFwiLFxuICAgICAgdmFsdWU6IGVudmlyb25tZW50LFxuICAgICAgZXhwb3J0TmFtZTogXCJFbnZpcm9ubWVudFwiLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiRW52aXJvbm1lbnQgdHlwZSBmb3IgdGhpcyBhY2NvdW50IChlLmcuLCBwcm9kdWN0aW9uLCBzdGFnaW5nLCBkZXZlbG9wbWVudClcIlxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import type { Construct } from "constructs";
2
+ import type { IHostedZone } from "aws-cdk-lib/aws-route53";
3
+ import type { ICertificate } from "aws-cdk-lib/aws-certificatemanager";
4
+ import type { ManualRecord, Route53ApexProps, SubdomainDelegation } from "./interfaces/domain.js";
5
+ export interface ApexDomainPatternResult {
6
+ readonly hostedZone: IHostedZone;
7
+ readonly certificates: Map<string, ICertificate>;
8
+ readonly nameServers: string[] | undefined;
9
+ readonly manualRecords: ManualRecord[];
10
+ readonly delegations: SubdomainDelegation[];
11
+ }
12
+ /**
13
+ * Composition for `registrar: "route53"`. Creates (or imports) the apex
14
+ * `HostedZone`, wires child-account delegations via `NsRecord` (pointing at
15
+ * each child's nameservers published as exports), and composes all user
16
+ * records + certificates.
17
+ *
18
+ * Delegation mechanism: the child Fjall account scaffolds its own
19
+ * `HostedZone`, and the parent simply writes NS records pointing at the
20
+ * child's nameservers (Fn.importValue of the child stack's nameservers
21
+ * output). This differs from the legacy `DomainDelegation` pattern, which
22
+ * uses `CrossAccountZoneDelegationRecord` to create the child HZ from the
23
+ * parent via IAM assume-role. Both patterns are valid for their respective
24
+ * semantics — see R10 in the Phase 1 plan.
25
+ */
26
+ export declare function composeApexDomain(scope: Construct, props: Route53ApexProps): ApexDomainPatternResult;
@@ -0,0 +1,91 @@
1
+ import { Fn } from "aws-cdk-lib";
2
+ import { getDomainExportNames } from "@fjall/util";
3
+ import { HostedZone } from "../../resources/aws/networking/hostedZone.js";
4
+ import { DomainCertificate } from "../../resources/aws/networking/domainCertificate.js";
5
+ import { NsRecord } from "../../resources/aws/networking/dnsRecord/index.js";
6
+ import { composeTypedDnsRecords } from "./dnsRecordComposer.js";
7
+ import { toPascalCase, getSafeZoneName } from "../../utils/capitaliseString.js";
8
+ /**
9
+ * Composition for `registrar: "route53"`. Creates (or imports) the apex
10
+ * `HostedZone`, wires child-account delegations via `NsRecord` (pointing at
11
+ * each child's nameservers published as exports), and composes all user
12
+ * records + certificates.
13
+ *
14
+ * Delegation mechanism: the child Fjall account scaffolds its own
15
+ * `HostedZone`, and the parent simply writes NS records pointing at the
16
+ * child's nameservers (Fn.importValue of the child stack's nameservers
17
+ * output). This differs from the legacy `DomainDelegation` pattern, which
18
+ * uses `CrossAccountZoneDelegationRecord` to create the child HZ from the
19
+ * parent via IAM assume-role. Both patterns are valid for their respective
20
+ * semantics — see R10 in the Phase 1 plan.
21
+ */
22
+ export function composeApexDomain(scope, props) {
23
+ const safeZone = toPascalCase(getSafeZoneName(props.zoneName));
24
+ const hostedZoneConstruct = new HostedZone(scope, `${safeZone}HostedZone`, {
25
+ zoneName: props.zoneName,
26
+ hostedZoneId: props.hostedZoneId,
27
+ // Only create the delegation role on the create path; imported zones do
28
+ // not manage IAM themselves.
29
+ createDelegationRole: props.hostedZoneId === undefined,
30
+ costAllocationEnvironment: props.costAllocationEnvironment,
31
+ costAllocationDomain: props.zoneName
32
+ });
33
+ const certificates = new Map();
34
+ (props.certificates ?? []).forEach((cert, index) => {
35
+ const normalised = normaliseCertificate(cert);
36
+ const safeCertName = toPascalCase(normalised.domainName.split(".").join(""));
37
+ const dc = new DomainCertificate(scope, `${safeZone}${safeCertName}Cert${index}`, {
38
+ domainName: normalised.domainName,
39
+ subjectAlternativeNames: normalised.subjectAlternativeNames,
40
+ transparencyLogging: normalised.transparencyLogging,
41
+ hostedZone: hostedZoneConstruct.hostedZone,
42
+ costAllocationEnvironment: props.costAllocationEnvironment,
43
+ costAllocationDomain: props.zoneName
44
+ });
45
+ certificates.set(normalised.domainName, dc.certificate);
46
+ });
47
+ if (props.records && props.records.length > 0) {
48
+ composeTypedDnsRecords(scope, hostedZoneConstruct.hostedZone, props.zoneName, props.records);
49
+ }
50
+ const delegations = props.delegations ?? [];
51
+ delegations.forEach((delegation, index) => {
52
+ const childZoneName = `${delegation.subdomain}.${props.zoneName}`;
53
+ const safeChild = toPascalCase(getSafeZoneName(childZoneName));
54
+ const childExports = getDomainExportNames(childZoneName);
55
+ // The child account's stack publishes the hosted-zone nameservers under a
56
+ // predictable output key (Phase 0 HostedZone emits `{safeZone}Nameservers`
57
+ // as a joined comma-separated string — we split it back at deploy time
58
+ // via Fn.split). The child HZ id import is declared as a cross-phase
59
+ // dependency — if the child stack has not deployed, CFN fails at deploy.
60
+ const nameserversExportName = childExports.hostedZoneId.replace(/-hosted-zone-id$/, "-nameservers");
61
+ const nameserversToken = Fn.importValue(nameserversExportName);
62
+ new NsRecord(scope, `${safeZone}Delegation${safeChild}${index}`, {
63
+ zone: hostedZoneConstruct.hostedZone,
64
+ zoneName: props.zoneName,
65
+ recordName: delegation.subdomain,
66
+ // Fn.split returns a list token suitable for a multi-value NS record.
67
+ values: Fn.split(",", nameserversToken)
68
+ });
69
+ });
70
+ return {
71
+ hostedZone: hostedZoneConstruct.hostedZone,
72
+ certificates,
73
+ // Name servers are only available on the create path — imported zones
74
+ // were pre-provisioned and CDK has no view of their NS set at synth.
75
+ nameServers: hostedZoneConstruct.isImported
76
+ ? undefined
77
+ : (hostedZoneConstruct.nameServers ?? undefined),
78
+ manualRecords: [],
79
+ delegations
80
+ };
81
+ }
82
+ function normaliseCertificate(cert) {
83
+ if (typeof cert === "string") {
84
+ return { domainName: cert };
85
+ }
86
+ return {
87
+ domainName: cert.domainName,
88
+ subjectAlternativeNames: cert.subjectAlternativeNames,
89
+ transparencyLogging: cert.transparencyLogging
90
+ };
91
+ }
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AuditRole = void 0;
4
- const constructs_1 = require("constructs");
5
- const app_1 = require("../../app");
6
- const auditRole_1 = require("../../resources/aws/audit/auditRole");
7
- const audit_1 = require("../../config/audit");
1
+ import { Construct } from "constructs";
2
+ import App from "../../app.js";
3
+ import AuditRoleFactory from "../../resources/aws/audit/auditRole.js";
4
+ import { FJALL_AUDIT_CONFIG } from "../../config/audit.js";
8
5
  /**
9
6
  * High-level pattern for adding CloudQuery audit capabilities to an application.
10
7
  *
@@ -24,21 +21,23 @@ const audit_1 = require("../../config/audit");
24
21
  * app.addCompute(/* ... *\/);
25
22
  * ```
26
23
  */
27
- class AuditRole extends constructs_1.Construct {
24
+ export class AuditRole extends Construct {
25
+ role;
26
+ externalId;
28
27
  constructor(scope, id, props) {
29
28
  super(scope, id);
30
29
  // Get the App instance to access the network stack
31
- const app = scope instanceof app_1.default ? scope : app_1.default.getInstance();
30
+ const app = scope instanceof App ? scope : App.getInstance();
32
31
  const networkStack = app.getDefaultNetworkStack();
33
32
  // Generate or use provided external ID
34
33
  this.externalId = props?.externalId || this.generateExternalId(app);
35
34
  // Create the audit role using the factory
36
- this.role = auditRole_1.default.build(`${app["name"]}AuditRole`, {
37
- webappAccountId: props?.webappAccountId || audit_1.FJALL_AUDIT_CONFIG.webappAwsAccountId,
35
+ this.role = AuditRoleFactory.build(`${app["name"]}AuditRole`, {
36
+ webappAccountId: props?.webappAccountId || FJALL_AUDIT_CONFIG.webappAwsAccountId,
38
37
  appName: app["name"],
39
38
  externalId: this.externalId,
40
- roleNamePrefix: audit_1.FJALL_AUDIT_CONFIG.roleNamePrefix,
41
- rolePath: audit_1.FJALL_AUDIT_CONFIG.rolePath
39
+ roleNamePrefix: FJALL_AUDIT_CONFIG.roleNamePrefix,
40
+ rolePath: FJALL_AUDIT_CONFIG.rolePath
42
41
  })(app, networkStack.getStack());
43
42
  // Register the role with the network stack
44
43
  networkStack.addConstruct(this.role);
@@ -53,6 +52,4 @@ class AuditRole extends constructs_1.Construct {
53
52
  return `fjall-audit-${appName.toLowerCase()}-${timestamp}`;
54
53
  }
55
54
  }
56
- exports.AuditRole = AuditRole;
57
- exports.default = AuditRole;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXRSb2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9hdWRpdFJvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBRXZDLG1DQUE0QjtBQUM1QixtRUFBbUU7QUFDbkUsOENBQXdEO0FBZ0J4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFJdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLG1EQUFtRDtRQUNuRCxNQUFNLEdBQUcsR0FBRyxLQUFLLFlBQVksYUFBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3RCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUVsRCx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwRSwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUM1RCxlQUFlLEVBQ2IsS0FBSyxFQUFFLGVBQWUsSUFBSSwwQkFBa0IsQ0FBQyxrQkFBa0I7WUFDakUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDcEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGNBQWMsRUFBRSwwQkFBa0IsQ0FBQyxjQUFjO1lBQ2pELFFBQVEsRUFBRSwwQkFBa0IsQ0FBQyxRQUFRO1NBQ3RDLENBQUMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFakMsMkNBQTJDO1FBQzNDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxrQkFBa0IsQ0FBQyxHQUFRO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsT0FBTyxlQUFlLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFyQ0QsOEJBcUNDO0FBRUQsa0JBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHR5cGUgUm9sZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgQXBwIGZyb20gXCIuLi8uLi9hcHBcIjtcbmltcG9ydCBBdWRpdFJvbGVGYWN0b3J5IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2F1ZGl0L2F1ZGl0Um9sZVwiO1xuaW1wb3J0IHsgRkpBTExfQVVESVRfQ09ORklHIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hdWRpdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0Um9sZVByb3BzIHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBkZWZhdWx0IEZqYWxsIHdlYmFwcCBhY2NvdW50IElEXG4gICAqIERlZmF1bHRzIHRvIHRoZSBhY2NvdW50IElEIHNwZWNpZmllZCBpbiBGSkFMTF9BVURJVF9DT05GSUdcbiAgICovXG4gIHdlYmFwcEFjY291bnRJZD86IHN0cmluZztcblxuICAvKipcbiAgICogRXh0ZXJuYWwgSUQgZm9yIGFkZGl0aW9uYWwgc2VjdXJpdHkgd2hlbiBhc3N1bWluZyB0aGUgcm9sZVxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGEgdW5pcXVlIGV4dGVybmFsIElEIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICBleHRlcm5hbElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhpZ2gtbGV2ZWwgcGF0dGVybiBmb3IgYWRkaW5nIENsb3VkUXVlcnkgYXVkaXQgY2FwYWJpbGl0aWVzIHRvIGFuIGFwcGxpY2F0aW9uLlxuICpcbiAqIFRoaXMgY3JlYXRlcyBhIGNyb3NzLWFjY291bnQgSUFNIHJvbGUgdGhhdCBncmFudHMgdGhlIEZqYWxsIHBsYXRmb3JtIHJlYWQtb25seVxuICogYWNjZXNzIHRvIGFsbCBBV1MgcmVzb3VyY2VzIGZvciBzZWN1cml0eSBhdWRpdGluZyB2aWEgQ2xvdWRRdWVyeS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQXBwLCBBdWRpdFJvbGUgfSBmcm9tIFwiQGZqYWxsL2NvbXBvbmVudHMtaW5mcmFzdHJ1Y3R1cmVcIjtcbiAqXG4gKiBjb25zdCBhcHAgPSBBcHAuZ2V0QXBwKFwiTXlBcHBcIik7XG4gKlxuICogLy8gRXhwbGljaXQgb3B0LWluIHRvIGF1ZGl0IGNhcGFiaWxpdGllc1xuICogY29uc3QgYXVkaXRSb2xlID0gbmV3IEF1ZGl0Um9sZShhcHAsIFwiQXVkaXRSb2xlXCIpO1xuICpcbiAqIC8vIENvbnRpbnVlIHdpdGggbm9ybWFsIGFwcGxpY2F0aW9uIHNldHVwXG4gKiBhcHAuYWRkQ29tcHV0ZSgvKiAuLi4gKlxcLyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEF1ZGl0Um9sZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgZXh0ZXJuYWxJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogQXVkaXRSb2xlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gR2V0IHRoZSBBcHAgaW5zdGFuY2UgdG8gYWNjZXNzIHRoZSBuZXR3b3JrIHN0YWNrXG4gICAgY29uc3QgYXBwID0gc2NvcGUgaW5zdGFuY2VvZiBBcHAgPyBzY29wZSA6IEFwcC5nZXRJbnN0YW5jZSgpO1xuICAgIGNvbnN0IG5ldHdvcmtTdGFjayA9IGFwcC5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCk7XG5cbiAgICAvLyBHZW5lcmF0ZSBvciB1c2UgcHJvdmlkZWQgZXh0ZXJuYWwgSURcbiAgICB0aGlzLmV4dGVybmFsSWQgPSBwcm9wcz8uZXh0ZXJuYWxJZCB8fCB0aGlzLmdlbmVyYXRlRXh0ZXJuYWxJZChhcHApO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBhdWRpdCByb2xlIHVzaW5nIHRoZSBmYWN0b3J5XG4gICAgdGhpcy5yb2xlID0gQXVkaXRSb2xlRmFjdG9yeS5idWlsZChgJHthcHBbXCJuYW1lXCJdfUF1ZGl0Um9sZWAsIHtcbiAgICAgIHdlYmFwcEFjY291bnRJZDpcbiAgICAgICAgcHJvcHM/LndlYmFwcEFjY291bnRJZCB8fCBGSkFMTF9BVURJVF9DT05GSUcud2ViYXBwQXdzQWNjb3VudElkLFxuICAgICAgYXBwTmFtZTogYXBwW1wibmFtZVwiXSxcbiAgICAgIGV4dGVybmFsSWQ6IHRoaXMuZXh0ZXJuYWxJZCxcbiAgICAgIHJvbGVOYW1lUHJlZml4OiBGSkFMTF9BVURJVF9DT05GSUcucm9sZU5hbWVQcmVmaXgsXG4gICAgICByb2xlUGF0aDogRkpBTExfQVVESVRfQ09ORklHLnJvbGVQYXRoXG4gICAgfSkoYXBwLCBuZXR3b3JrU3RhY2suZ2V0U3RhY2soKSk7XG5cbiAgICAvLyBSZWdpc3RlciB0aGUgcm9sZSB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrXG4gICAgbmV0d29ya1N0YWNrLmFkZENvbnN0cnVjdCh0aGlzLnJvbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgdW5pcXVlIGV4dGVybmFsIElEIGZvciB0aGlzIGFwcGxpY2F0aW9uXG4gICAqIEZvcm1hdDogZmphbGwtYXVkaXQte2FwcE5hbWV9LXt0aW1lc3RhbXB9XG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlRXh0ZXJuYWxJZChhcHA6IEFwcCk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBwTmFtZSA9IGFwcFtcIm5hbWVcIl07XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICByZXR1cm4gYGZqYWxsLWF1ZGl0LSR7YXBwTmFtZS50b0xvd2VyQ2FzZSgpfS0ke3RpbWVzdGFtcH1gO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEF1ZGl0Um9sZTtcbiJdfQ==
55
+ export default AuditRole;
@@ -1,7 +1,7 @@
1
1
  import { type StackProps, Stack } from "aws-cdk-lib";
2
2
  import { InstanceType } from "aws-cdk-lib/aws-ec2";
3
3
  import { type Construct } from "constructs";
4
- import { type KeyValue } from "../../types";
4
+ import { type KeyValue } from "../../types.js";
5
5
  declare enum agentRelease {
6
6
  STABLE = "stable",
7
7
  BETA = "beta",