@fjall/components-infrastructure 0.89.4 → 0.89.6

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 +61 -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 +82 -70
  181. package/dist/lib/resources/aws/database/dynamodb.js +27 -28
  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,20 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LambdaFunction = exports.SingletonFunction = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
6
- const region_info_1 = require("aws-cdk-lib/region-info");
7
- const path = require("path");
8
- const aws_lambda_event_sources_1 = require("aws-cdk-lib/aws-lambda-event-sources");
9
- const aws_s3_1 = require("aws-cdk-lib/aws-s3");
10
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
11
- const aws_events_1 = require("aws-cdk-lib/aws-events");
12
- const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
13
- const aws_logs_1 = require("aws-cdk-lib/aws-logs");
14
- const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
15
- const uuid_1 = require("uuid");
16
- const capitaliseString_1 = require("../../../utils/capitaliseString");
17
- const vpcUtils_1 = require("../../../utils/vpcUtils");
1
+ import { CfnOutput, Duration, Stack, Size } from "aws-cdk-lib";
2
+ import { SingletonFunction as singletonFunction, Function, Code, Architecture, FunctionUrlAuthType, StartingPosition, LayerVersion } from "aws-cdk-lib/aws-lambda";
3
+ import { FactName } from "aws-cdk-lib/region-info";
4
+ import path from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { SqsEventSource, DynamoEventSource, S3EventSource } from "aws-cdk-lib/aws-lambda-event-sources";
7
+ import { EventType } from "aws-cdk-lib/aws-s3";
8
+ import { PolicyStatement, Effect } from "aws-cdk-lib/aws-iam";
9
+ import { Rule, Schedule } from "aws-cdk-lib/aws-events";
10
+ import { LambdaFunction as LambdaTarget } from "aws-cdk-lib/aws-events-targets";
11
+ import { LogGroup, RetentionDays } from "aws-cdk-lib/aws-logs";
12
+ import { Secret } from "aws-cdk-lib/aws-secretsmanager";
13
+ import { v4 as uuid } from "uuid";
14
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
15
+ import { toPascalCase } from "../../../utils/capitaliseString.js";
16
+ import { resolvePrivateSubnetType } from "../../../utils/vpcUtils.js";
17
+ import { createLambdaAlarms } from "../monitoring/index.js";
18
18
  function addPoliciesToRole(target, statements) {
19
19
  for (const statement of statements) {
20
20
  target.addToRolePolicy(statement);
@@ -30,16 +30,16 @@ const SECRETS_EXTENSION = {
30
30
  /** Cache TTL in seconds - 60s supports secret rotation while reducing API calls */
31
31
  CACHE_TTL_SECONDS: "60"
32
32
  };
33
- class SingletonFunction extends aws_lambda_1.SingletonFunction {
33
+ export class SingletonFunction extends singletonFunction {
34
34
  constructor(scope, id, props) {
35
35
  super(scope, id, {
36
36
  ...props,
37
- uuid: props.uuid ?? (0, uuid_1.v4)(),
38
- timeout: aws_cdk_lib_1.Duration.seconds(300),
37
+ uuid: props.uuid ?? uuid(),
38
+ timeout: Duration.seconds(300),
39
39
  description: props.lambdaDescription || `${id} singleton lambda`,
40
40
  runtime: props.runtime,
41
41
  ephemeralStorageSize: props.ephemeralStorageSize
42
- ? aws_cdk_lib_1.Size.mebibytes(props.ephemeralStorageSize)
42
+ ? Size.mebibytes(props.ephemeralStorageSize)
43
43
  : undefined
44
44
  });
45
45
  addPoliciesToRole(this, props.inlinePolicy);
@@ -51,53 +51,67 @@ class SingletonFunction extends aws_lambda_1.SingletonFunction {
51
51
  return this.role;
52
52
  }
53
53
  }
54
- exports.SingletonFunction = SingletonFunction;
55
- class LambdaFunction extends aws_lambda_1.Function {
54
+ export class LambdaFunction extends Function {
55
+ functionUrlValue;
56
56
  constructor(scope, id, props) {
57
57
  const vpcSubnets = props.vpc
58
- ? { subnetType: (0, vpcUtils_1.resolvePrivateSubnetType)(props.vpc) }
58
+ ? { subnetType: resolvePrivateSubnetType(props.vpc) }
59
59
  : undefined;
60
60
  super(scope, id, {
61
61
  ...props,
62
62
  vpcSubnets,
63
63
  timeout: props.timeout
64
- ? aws_cdk_lib_1.Duration.seconds(props.timeout)
65
- : aws_cdk_lib_1.Duration.seconds(300),
64
+ ? Duration.seconds(props.timeout)
65
+ : Duration.seconds(300),
66
66
  memorySize: props.memorySize || 128,
67
67
  ephemeralStorageSize: props.ephemeralStorageSize
68
- ? aws_cdk_lib_1.Size.mebibytes(props.ephemeralStorageSize)
68
+ ? Size.mebibytes(props.ephemeralStorageSize)
69
69
  : undefined,
70
70
  description: props.lambdaDescription || `${id} Lambda`,
71
71
  environment: props.environment,
72
- logRetention: aws_logs_1.RetentionDays.ONE_WEEK
72
+ logGroup: new LogGroup(scope, `${id}LogGroup`, {
73
+ retention: RetentionDays.ONE_WEEK
74
+ })
73
75
  });
74
76
  addPoliciesToRole(this, props.inlinePolicy);
75
77
  this.addSecretsSupport(props.secrets, props.ssmSecretsPath, props.secretsImport, props.appName, props.functionName, props.architecture);
76
78
  // Sanitise id for CloudFormation output keys (must be alphanumeric)
77
- const outputName = (0, capitaliseString_1.toPascalCase)(id);
79
+ const outputName = toPascalCase(id);
78
80
  if (props.enableFunctionUrl) {
79
81
  const functionUrl = this.addFunctionUrl({
80
- authType: props.functionUrlAuthType || aws_lambda_1.FunctionUrlAuthType.AWS_IAM,
82
+ authType: props.functionUrlAuthType || FunctionUrlAuthType.AWS_IAM,
81
83
  cors: props.functionUrlCors,
82
84
  invokeMode: props.functionUrlInvokeMode
83
85
  });
84
86
  this.functionUrlValue = functionUrl.url;
85
- new aws_cdk_lib_1.CfnOutput(this, `${outputName}FunctionUrl`, {
87
+ new CfnOutput(this, `${outputName}FunctionUrl`, {
86
88
  key: `${outputName}FunctionUrl`,
87
89
  value: functionUrl.url,
88
90
  description: `${id} Function URL`
89
91
  });
90
92
  }
91
- new aws_cdk_lib_1.CfnOutput(this, `${outputName}FunctionArn`, {
93
+ new CfnOutput(this, `${outputName}FunctionArn`, {
92
94
  key: `${outputName}FunctionArn`,
93
95
  value: this.functionArn,
94
96
  description: `${id} Function ARN`
95
97
  });
96
98
  if (props.scheduleExpression) {
97
- const rule = new aws_events_1.Rule(this, `${id}ScheduleRule`, {
98
- schedule: aws_events_1.Schedule.expression(props.scheduleExpression)
99
+ const rule = new Rule(this, `${id}ScheduleRule`, {
100
+ schedule: Schedule.expression(props.scheduleExpression)
101
+ });
102
+ rule.addTarget(new LambdaTarget(this));
103
+ }
104
+ if (props.alertsTopic && props.alarms !== false) {
105
+ const timeoutSeconds = props.timeout ?? 300;
106
+ createLambdaAlarms({
107
+ scope: this,
108
+ functionName: id,
109
+ lambdaFunction: this,
110
+ timeoutSeconds,
111
+ config: typeof props.alarms === "object" ? props.alarms : {},
112
+ alarmTopic: props.alertsTopic,
113
+ applicationId: props.applicationId
99
114
  });
100
- rule.addTarget(new aws_events_targets_1.LambdaFunction(this));
101
115
  }
102
116
  }
103
117
  /**
@@ -117,10 +131,10 @@ class LambdaFunction extends aws_lambda_1.Function {
117
131
  * This will trigger the Lambda when messages arrive in the queue.
118
132
  */
119
133
  addSqsEventSource(queue, options) {
120
- const eventSource = new aws_lambda_event_sources_1.SqsEventSource(queue, {
134
+ const eventSource = new SqsEventSource(queue, {
121
135
  batchSize: options?.batchSize ?? 10,
122
136
  maxBatchingWindow: options?.maxBatchingWindow
123
- ? aws_cdk_lib_1.Duration.seconds(options.maxBatchingWindow)
137
+ ? Duration.seconds(options.maxBatchingWindow)
124
138
  : undefined,
125
139
  reportBatchItemFailures: options?.reportBatchItemFailures ?? true
126
140
  });
@@ -133,13 +147,13 @@ class LambdaFunction extends aws_lambda_1.Function {
133
147
  */
134
148
  addDynamoDbEventSource(table, options) {
135
149
  const startingPosition = options?.startingPosition === "TRIM_HORIZON"
136
- ? aws_lambda_1.StartingPosition.TRIM_HORIZON
137
- : aws_lambda_1.StartingPosition.LATEST;
138
- const eventSource = new aws_lambda_event_sources_1.DynamoEventSource(table, {
150
+ ? StartingPosition.TRIM_HORIZON
151
+ : StartingPosition.LATEST;
152
+ const eventSource = new DynamoEventSource(table, {
139
153
  startingPosition,
140
154
  batchSize: options?.batchSize ?? 100,
141
155
  maxBatchingWindow: options?.maxBatchingWindow
142
- ? aws_cdk_lib_1.Duration.seconds(options.maxBatchingWindow)
156
+ ? Duration.seconds(options.maxBatchingWindow)
143
157
  : undefined,
144
158
  retryAttempts: options?.retryAttempts,
145
159
  parallelizationFactor: options?.parallelizationFactor,
@@ -156,17 +170,17 @@ class LambdaFunction extends aws_lambda_1.Function {
156
170
  const eventTypes = (options?.events ?? ["OBJECT_CREATED"]).map((event) => {
157
171
  switch (event) {
158
172
  case "OBJECT_CREATED":
159
- return aws_s3_1.EventType.OBJECT_CREATED;
173
+ return EventType.OBJECT_CREATED;
160
174
  case "OBJECT_REMOVED":
161
- return aws_s3_1.EventType.OBJECT_REMOVED;
175
+ return EventType.OBJECT_REMOVED;
162
176
  case "OBJECT_CREATED_PUT":
163
- return aws_s3_1.EventType.OBJECT_CREATED_PUT;
177
+ return EventType.OBJECT_CREATED_PUT;
164
178
  case "OBJECT_CREATED_POST":
165
- return aws_s3_1.EventType.OBJECT_CREATED_POST;
179
+ return EventType.OBJECT_CREATED_POST;
166
180
  case "OBJECT_CREATED_COPY":
167
- return aws_s3_1.EventType.OBJECT_CREATED_COPY;
181
+ return EventType.OBJECT_CREATED_COPY;
168
182
  case "OBJECT_REMOVED_DELETE":
169
- return aws_s3_1.EventType.OBJECT_REMOVED_DELETE;
183
+ return EventType.OBJECT_REMOVED_DELETE;
170
184
  default: {
171
185
  const _exhaustive = event;
172
186
  throw new Error(`Unknown S3 event type: ${_exhaustive}`);
@@ -177,7 +191,7 @@ class LambdaFunction extends aws_lambda_1.Function {
177
191
  events: eventTypes,
178
192
  filters: options?.filters
179
193
  };
180
- const eventSource = new aws_lambda_event_sources_1.S3EventSource(bucket, s3EventSourceProps);
194
+ const eventSource = new S3EventSource(bucket, s3EventSourceProps);
181
195
  this.addEventSource(eventSource);
182
196
  }
183
197
  /**
@@ -189,14 +203,14 @@ class LambdaFunction extends aws_lambda_1.Function {
189
203
  if (!options.schedule && !options.eventPattern) {
190
204
  throw new Error("EventBridge rule requires either schedule or eventPattern");
191
205
  }
192
- const rule = new aws_events_1.Rule(this, ruleId, {
206
+ const rule = new Rule(this, ruleId, {
193
207
  schedule: options.schedule
194
- ? aws_events_1.Schedule.expression(options.schedule)
208
+ ? Schedule.expression(options.schedule)
195
209
  : undefined,
196
210
  eventPattern: options.eventPattern,
197
211
  description: options.description
198
212
  });
199
- rule.addTarget(new aws_events_targets_1.LambdaFunction(this));
213
+ rule.addTarget(new LambdaTarget(this));
200
214
  return rule;
201
215
  }
202
216
  /**
@@ -230,11 +244,11 @@ class LambdaFunction extends aws_lambda_1.Function {
230
244
  * Configures cache TTL for rotation support.
231
245
  */
232
246
  addSecretsExtensionLayer(architecture) {
233
- const stack = aws_cdk_lib_1.Stack.of(this);
234
- const archString = architecture === aws_lambda_1.Architecture.ARM_64 ? "arm64" : "x86_64";
235
- const factName = region_info_1.FactName.paramsAndSecretsLambdaLayer(SECRETS_EXTENSION.VERSION, archString);
247
+ const stack = Stack.of(this);
248
+ const archString = architecture === Architecture.ARM_64 ? "arm64" : "x86_64";
249
+ const factName = FactName.paramsAndSecretsLambdaLayer(SECRETS_EXTENSION.VERSION, archString);
236
250
  const layerArn = stack.regionalFact(factName);
237
- this.addLayers(aws_lambda_1.LayerVersion.fromLayerVersionArn(this, `${this.node.id}SecretsExtension`, layerArn));
251
+ this.addLayers(LayerVersion.fromLayerVersionArn(this, `${this.node.id}SecretsExtension`, layerArn));
238
252
  this.addEnvironment("SECRETS_MANAGER_TTL", SECRETS_EXTENSION.CACHE_TTL_SECONDS);
239
253
  this.addEnvironment("SSM_PARAMETER_STORE_TTL", SECRETS_EXTENSION.CACHE_TTL_SECONDS);
240
254
  }
@@ -244,20 +258,20 @@ class LambdaFunction extends aws_lambda_1.Function {
244
258
  */
245
259
  addSecretsManagerSupport(secretsImport) {
246
260
  for (const [key, secretImport] of Object.entries(secretsImport)) {
247
- const secret = aws_secretsmanager_1.Secret.fromSecretNameV2(this, `${this.node.id}ImportedSecret${key}`, secretImport.name);
261
+ const secret = Secret.fromSecretNameV2(this, `${this.node.id}ImportedSecret${key}`, secretImport.name);
248
262
  this.addEnvironment(`${key}_SECRET_ARN`, secret.secretArn);
249
263
  if (secretImport.field) {
250
264
  this.addEnvironment(`${key}_SECRET_FIELD`, secretImport.field);
251
265
  }
252
266
  secret.grantRead(this);
253
267
  }
254
- this.addToRolePolicy(new aws_iam_1.PolicyStatement({
255
- effect: aws_iam_1.Effect.ALLOW,
268
+ this.addToRolePolicy(new PolicyStatement({
269
+ effect: Effect.ALLOW,
256
270
  actions: ["kms:Decrypt", "kms:DescribeKey"],
257
271
  resources: ["*"],
258
272
  conditions: {
259
273
  StringEquals: {
260
- "kms:ViaService": `secretsmanager.${aws_cdk_lib_1.Stack.of(this).region}.amazonaws.com`
274
+ "kms:ViaService": `secretsmanager.${Stack.of(this).region}.amazonaws.com`
261
275
  }
262
276
  }
263
277
  }));
@@ -271,20 +285,20 @@ class LambdaFunction extends aws_lambda_1.Function {
271
285
  this.addEnvironment("SSM_SECRETS_PATH", basePath);
272
286
  this.addEnvironment("SSM_SECRET_NAMES", secrets.join(","));
273
287
  const scopedPath = `${basePath}/*`;
274
- this.addToRolePolicy(new aws_iam_1.PolicyStatement({
275
- effect: aws_iam_1.Effect.ALLOW,
288
+ this.addToRolePolicy(new PolicyStatement({
289
+ effect: Effect.ALLOW,
276
290
  actions: ["ssm:GetParameter", "ssm:GetParameters"],
277
291
  resources: [
278
- `arn:aws:ssm:${aws_cdk_lib_1.Stack.of(this).region}:*:parameter${scopedPath}`
292
+ `arn:aws:ssm:${Stack.of(this).region}:*:parameter${scopedPath}`
279
293
  ]
280
294
  }));
281
- this.addToRolePolicy(new aws_iam_1.PolicyStatement({
282
- effect: aws_iam_1.Effect.ALLOW,
295
+ this.addToRolePolicy(new PolicyStatement({
296
+ effect: Effect.ALLOW,
283
297
  actions: ["kms:Decrypt"],
284
298
  resources: ["*"],
285
299
  conditions: {
286
300
  StringEquals: {
287
- "kms:ViaService": `ssm.${aws_cdk_lib_1.Stack.of(this).region}.amazonaws.com`
301
+ "kms:ViaService": `ssm.${Stack.of(this).region}.amazonaws.com`
288
302
  }
289
303
  }
290
304
  }));
@@ -300,12 +314,12 @@ class LambdaFunction extends aws_lambda_1.Function {
300
314
  * The layer is created once per stack and shared across all Lambda functions.
301
315
  */
302
316
  addSecretsResolverLayer() {
303
- const stack = aws_cdk_lib_1.Stack.of(this);
317
+ const stack = Stack.of(this);
304
318
  const layerId = "FjallSecretsResolverLayer";
305
319
  let resolverLayer = stack.node.tryFindChild(layerId);
306
320
  if (!resolverLayer) {
307
- resolverLayer = new aws_lambda_1.LayerVersion(stack, layerId, {
308
- code: aws_lambda_1.Code.fromAsset(path.join(__dirname, "..", "..", "..", "layers", "secrets-resolver")),
321
+ resolverLayer = new LayerVersion(stack, layerId, {
322
+ code: Code.fromAsset(path.join(__dirname, "..", "..", "..", "layers", "secrets-resolver")),
309
323
  description: "Fjall secrets resolver — resolves SSM and SM secrets before handler"
310
324
  });
311
325
  }
@@ -328,5 +342,3 @@ class LambdaFunction extends aws_lambda_1.Function {
328
342
  return `/${appName}/lambda/${functionName}`;
329
343
  }
330
344
  }
331
- exports.LambdaFunction = LambdaFunction;
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQStEO0FBQy9ELHVEQVdnQztBQUNoQyx5REFBbUQ7QUFDbkQsNkJBQTZCO0FBQzdCLG1GQUs4QztBQUM5QywrQ0FBNEQ7QUFDNUQsaURBQTBFO0FBRTFFLHVEQUEyRTtBQUMzRSx1RUFBZ0Y7QUFDaEYsbURBQXFEO0FBQ3JELHVFQUF3RDtBQUl4RCwrQkFBa0M7QUFHbEMsc0VBQStEO0FBQy9ELHNEQUFtRTtBQUVuRSxTQUFTLGlCQUFpQixDQUN4QixNQUFpRSxFQUNqRSxVQUE2QjtJQUU3QixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLDBGQUEwRjtJQUMxRixPQUFPLEVBQUUsU0FBUztJQUNsQixtRkFBbUY7SUFDbkYsaUJBQWlCLEVBQUUsSUFBSTtDQUNmLENBQUM7QUF5Q1gsTUFBYSxpQkFBa0IsU0FBUSw4QkFBaUI7SUFDdEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUEsU0FBSSxHQUFFO1lBQzFCLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDOUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxHQUFHLEVBQUUsbUJBQW1CO1lBQ2hFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixvQkFBb0IsRUFBRSxL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LE9BQU8sV0FBVyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUF4YUQsd0NBd2FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBEdXJhdGlvbiwgU3RhY2ssIFNpemUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIFNpbmdsZXRvbkZ1bmN0aW9uIGFzIHNpbmdsZXRvbkZ1bmN0aW9uLFxuICBGdW5jdGlvbixcbiAgQ29kZSxcbiAgdHlwZSBSdW50aW1lLFxuICBBcmNoaXRlY3R1cmUsXG4gIEZ1bmN0aW9uVXJsQXV0aFR5cGUsXG4gIHR5cGUgRnVuY3Rpb25VcmxDb3JzT3B0aW9ucyxcbiAgdHlwZSBJbnZva2VNb2RlLFxuICBTdGFydGluZ1Bvc2l0aW9uLFxuICBMYXllclZlcnNpb25cbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IEZhY3ROYW1lIH0gZnJvbSBcImF3cy1jZGstbGliL3JlZ2lvbi1pbmZvXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQge1xuICBTcXNFdmVudFNvdXJjZSxcbiAgRHluYW1vRXZlbnRTb3VyY2UsXG4gIFMzRXZlbnRTb3VyY2UsXG4gIHR5cGUgUzNFdmVudFNvdXJjZVByb3BzXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLWV2ZW50LXNvdXJjZXNcIjtcbmltcG9ydCB7IHR5cGUgQnVja2V0LCBFdmVudFR5cGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIHR5cGUgSVJvbGUsIEVmZmVjdCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyB0eXBlIElWcGMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgUnVsZSwgU2NoZWR1bGUsIHR5cGUgRXZlbnRQYXR0ZXJuIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1ldmVudHNcIjtcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIGFzIExhbWJkYVRhcmdldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHNcIjtcbmltcG9ydCB7IFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IFNlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgSVF1ZXVlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zcXNcIjtcbmltcG9ydCB7IHR5cGUgSVRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyB0eXBlIEtleVZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIFNlY3JldEltcG9ydCB9IGZyb20gXCIuLi9zZWNyZXRzXCI7XG5pbXBvcnQgeyB0b1Bhc2NhbENhc2UgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY2FwaXRhbGlzZVN0cmluZ1wiO1xuaW1wb3J0IHsgcmVzb2x2ZVByaXZhdGVTdWJuZXRUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3ZwY1V0aWxzXCI7XG5cbmZ1bmN0aW9uIGFkZFBvbGljaWVzVG9Sb2xlKFxuICB0YXJnZXQ6IHsgYWRkVG9Sb2xlUG9saWN5OiAoc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpID0+IHZvaWQgfSxcbiAgc3RhdGVtZW50czogUG9saWN5U3RhdGVtZW50W11cbikge1xuICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiBzdGF0ZW1lbnRzKSB7XG4gICAgdGFyZ2V0LmFkZFRvUm9sZVBvbGljeShzdGF0ZW1lbnQpO1xuICB9XG59XG5cbi8qKlxuICogQVdTIFBhcmFtZXRlcnMgYW5kIFNlY3JldHMgTGFtYmRhIEV4dGVuc2lvbiBjb25maWd1cmF0aW9uLlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc3lzdGVtcy1tYW5hZ2VyL2xhdGVzdC91c2VyZ3VpZGUvcHMtaW50ZWdyYXRpb24tbGFtYmRhLWV4dGVuc2lvbnMuaHRtbFxuICovXG5jb25zdCBTRUNSRVRTX0VYVEVOU0lPTiA9IHtcbiAgLyoqIEV4dGVuc2lvbiB2ZXJzaW9uIGZvciBSZWdpb25JbmZvIGxvb2t1cCAobWF0Y2hlcyBQYXJhbXNBbmRTZWNyZXRzVmVyc2lvbnMuVjFfMF8xMDMpICovXG4gIFZFUlNJT046IFwiMS4wLjEwM1wiLFxuICAvKiogQ2FjaGUgVFRMIGluIHNlY29uZHMgLSA2MHMgc3VwcG9ydHMgc2VjcmV0IHJvdGF0aW9uIHdoaWxlIHJlZHVjaW5nIEFQSSBjYWxscyAqL1xuICBDQUNIRV9UVExfU0VDT05EUzogXCI2MFwiXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUZ1bmN0aW9uUHJvcHMge1xuICBjb2RlOiBDb2RlO1xuICBoYW5kbGVyOiBzdHJpbmc7XG4gIGxhbWJkYURlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByb2xlRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHJ1bnRpbWU6IFJ1bnRpbWU7XG4gIC8qKiBMYW1iZGEgQ1BVIGFyY2hpdGVjdHVyZS4gRGVmYXVsdDogeDg2XzY0ICovXG4gIGFyY2hpdGVjdHVyZT86IEFyY2hpdGVjdHVyZTtcbiAgdnBjPzogSVZwYztcbiAgdGltZW91dD86IG51bWJlcjtcbiAgbWVtb3J5U2l6ZT86IG51bWJlcjtcbiAgLyoqIEVwaGVtZXJhbCBzdG9yYWdlIHNpemUgaW4gTWlCICovXG4gIGVwaGVtZXJhbFN0b3JhZ2VTaXplPzogbnVtYmVyO1xuICBpbmxpbmVQb2xpY3k6IFBvbGljeVN0YXRlbWVudFtdO1xuXG4gIGVuYWJsZUZ1bmN0aW9uVXJsPzogYm9vbGVhbjtcbiAgZnVuY3Rpb25VcmxBdXRoVHlwZT86IEZ1bmN0aW9uVXJsQXV0aFR5cGU7XG4gIGZ1bmN0aW9uVXJsQ29ycz86IEZ1bmN0aW9uVXJsQ29yc09wdGlvbnM7XG4gIC8qKiBJbnZva2UgbW9kZSBmb3IgRnVuY3Rpb24gVVJMLiBVc2UgUkVTUE9OU0VfU1RSRUFNIGZvciBMYW1iZGEgc3RyZWFtaW5nLiAqL1xuICBmdW5jdGlvblVybEludm9rZU1vZGU/OiBJbnZva2VNb2RlO1xuXG4gIGVudmlyb25tZW50PzogS2V5VmFsdWU7XG5cbiAgdGFncz86IEtleVZhbHVlO1xuXG4gIHNjaGVkdWxlRXhwcmVzc2lvbj86IHN0cmluZztcblxuICBzZWNyZXRzPzogc3RyaW5nW107XG4gIHNzbVNlY3JldHNQYXRoPzogc3RyaW5nO1xuICBzZWNyZXRzSW1wb3J0PzogUmVjb3JkPHN0cmluZywgU2VjcmV0SW1wb3J0PjtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgZnVuY3Rpb25OYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpbmdsZXRvbkZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBMYW1iZGFGdW5jdGlvblByb3BzIHtcbiAgdXVpZD86IHN0cmluZztcbiAgZXBoZW1lcmFsU3RvcmFnZVNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBTaW5nbGV0b25GdW5jdGlvbiBleHRlbmRzIHNpbmdsZXRvbkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNpbmdsZXRvbkZ1bmN0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgdXVpZDogcHJvcHMudXVpZCA/PyB1dWlkKCksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMubGFtYmRhRGVzY3JpcHRpb24gfHwgYCR7aWR9IHNpbmdsZXRvbiBsYW1iZGFgLFxuICAgICAgcnVudGltZTogcHJvcHMucnVudGltZSxcbiAgICAgIGVwaGVtZXJhbFN0b3JhZ2VTaXplOiBwcm9wcy5lcGhlbWVyYWxTdG9yYWdlU2l6ZVxuICAgICAgICA/IFNpemUubWViaWJ5dGVzKHByb3BzLmVwaGVtZXJhbFN0b3JhZ2VTaXplKVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgYWRkUG9saWNpZXNUb1JvbGUodGhpcywgcHJvcHMuaW5saW5lUG9saWN5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhJ3MgZXhlY3V0aW9uIHJvbGUgKGF1dG8tZ2VuZXJhdGVkIGJ5IENESylcbiAgICovXG4gIHB1YmxpYyBnZXQgZXhlY3V0aW9uUm9sZSgpOiBJUm9sZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucm9sZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGFtYmRhRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIHByaXZhdGUgZnVuY3Rpb25VcmxWYWx1ZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTGFtYmRhRnVuY3Rpb25Qcm9wcykge1xuICAgIGNvbnN0IHZwY1N1Ym5ldHMgPSBwcm9wcy52cGNcbiAgICAgID8geyBzdWJuZXRUeXBlOiByZXNvbHZlUHJpdmF0ZVN1Ym5ldFR5cGUocHJvcHMudnBjKSB9XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB2cGNTdWJuZXRzLFxuICAgICAgdGltZW91dDogcHJvcHMudGltZW91dFxuICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMocHJvcHMudGltZW91dClcbiAgICAgICAgOiBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICBtZW1vcnlTaXplOiBwcm9wcy5tZW1vcnlTaXplIHx8IDEyOCxcbiAgICAgIGVwaGVtZXJhbFN0b3JhZ2VTaXplOiBwcm9wcy5lcGhlbWVyYWxTdG9yYWdlU2l6ZVxuICAgICAgICA/IFNpemUubWViaWJ5dGVzKHByb3BzLmVwaGVtZXJhbFN0b3JhZ2VTaXplKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5sYW1iZGFEZXNjcmlwdGlvbiB8fCBgJHtpZH0gTGFtYmRhYCxcbiAgICAgIGVudmlyb25tZW50OiBwcm9wcy5lbnZpcm9ubWVudCxcbiAgICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5PTkVfV0VFS1xuICAgIH0pO1xuXG4gICAgYWRkUG9saWNpZXNUb1JvbGUodGhpcywgcHJvcHMuaW5saW5lUG9saWN5KTtcblxuICAgIHRoaXMuYWRkU2VjcmV0c1N1cHBvcnQoXG4gICAgICBwcm9wcy5zZWNyZXRzLFxuICAgICAgcHJvcHMuc3NtU2VjcmV0c1BhdGgsXG4gICAgICBwcm9wcy5zZWNyZXRzSW1wb3J0LFxuICAgICAgcHJvcHMuYXBwTmFtZSxcbiAgICAgIHByb3BzLmZ1bmN0aW9uTmFtZSxcbiAgICAgIHByb3BzLmFyY2hpdGVjdHVyZVxuICAgICk7XG5cbiAgICAvLyBTYW5pdGlzZSBpZCBmb3IgQ2xvdWRGb3JtYXRpb24gb3V0cHV0IGtleXMgKG11c3QgYmUgYWxwaGFudW1lcmljKVxuICAgIGNvbnN0IG91dHB1dE5hbWUgPSB0b1Bhc2NhbENhc2UoaWQpO1xuXG4gICAgaWYgKHByb3BzLmVuYWJsZUZ1bmN0aW9uVXJsKSB7XG4gICAgICBjb25zdCBmdW5jdGlvblVybCA9IHRoaXMuYWRkRnVuY3Rpb25Vcmwoe1xuICAgICAgICBhdXRoVHlwZTogcHJvcHMuZnVuY3Rpb25VcmxBdXRoVHlwZSB8fCBGdW5jdGlvblVybEF1dGhUeXBlLkFXU19JQU0sXG4gICAgICAgIGNvcnM6IHByb3BzLmZ1bmN0aW9uVXJsQ29ycyxcbiAgICAgICAgaW52b2tlTW9kZTogcHJvcHMuZnVuY3Rpb25VcmxJbnZva2VNb2RlXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5mdW5jdGlvblVybFZhbHVlID0gZnVuY3Rpb25VcmwudXJsO1xuXG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke291dHB1dE5hbWV9RnVuY3Rpb25VcmxgLCB7XG4gICAgICAgIGtleTogYCR7b3V0cHV0TmFtZX1GdW5jdGlvblVybGAsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvblVybC51cmwsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgJHtpZH0gRnVuY3Rpb24gVVJMYFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtvdXRwdXROYW1lfUZ1bmN0aW9uQXJuYCwge1xuICAgICAga2V5OiBgJHtvdXRwdXROYW1lfUZ1bmN0aW9uQXJuYCxcbiAgICAgIHZhbHVlOiB0aGlzLmZ1bmN0aW9uQXJuLFxuICAgICAgZGVzY3JpcHRpb246IGAke2lkfSBGdW5jdGlvbiBBUk5gXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuc2NoZWR1bGVFeHByZXNzaW9uKSB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFJ1bGUodGhpcywgYCR7aWR9U2NoZWR1bGVSdWxlYCwge1xuICAgICAgICBzY2hlZHVsZTogU2NoZWR1bGUuZXhwcmVzc2lvbihwcm9wcy5zY2hlZHVsZUV4cHJlc3Npb24pXG4gICAgICB9KTtcbiAgICAgIHJ1bGUuYWRkVGFyZ2V0KG5ldyBMYW1iZGFUYXJnZXQodGhpcykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhJ3MgZXhlY3V0aW9uIHJvbGUgKGF1dG8tZ2VuZXJhdGVkIGJ5IENESylcbiAgICovXG4gIHB1YmxpYyBnZXQgZXhlY3V0aW9uUm9sZSgpOiBJUm9sZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucm9sZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIExhbWJkYSBmdW5jdGlvbiBVUkwgaWYgZW5hYmxlZC5cbiAgICovXG4gIHB1YmxpYyBnZXRGdW5jdGlvblVybCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uVXJsVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIFNRUyBxdWV1ZSBhcyBhbiBldmVudCBzb3VyY2UgZm9yIHRoaXMgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKiBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgTGFtYmRhIHdoZW4gbWVzc2FnZXMgYXJyaXZlIGluIHRoZSBxdWV1ZS5cbiAgICovXG4gIHB1YmxpYyBhZGRTcXNFdmVudFNvdXJjZShcbiAgICBxdWV1ZTogSVF1ZXVlLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBiYXRjaFNpemU/OiBudW1iZXI7XG4gICAgICBtYXhCYXRjaGluZ1dpbmRvdz86IG51bWJlcjtcbiAgICAgIHJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzPzogYm9vbGVhbjtcbiAgICB9XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50U291cmNlID0gbmV3IFNxc0V2ZW50U291cmNlKHF1ZXVlLCB7XG4gICAgICBiYXRjaFNpemU6IG9wdGlvbnM/LmJhdGNoU2l6ZSA/PyAxMCxcbiAgICAgIG1heEJhdGNoaW5nV2luZG93OiBvcHRpb25zPy5tYXhCYXRjaGluZ1dpbmRvd1xuICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMob3B0aW9ucy5tYXhCYXRjaGluZ1dpbmRvdylcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByZXBvcnRCYXRjaEl0ZW1GYWlsdXJlczogb3B0aW9ucz8ucmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXMgPz8gdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRTb3VyY2UoZXZlbnRTb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIER5bmFtb0RCIHRhYmxlIHN0cmVhbSBhcyBhbiBldmVudCBzb3VyY2UgZm9yIHRoaXMgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKiBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgTGFtYmRhIHdoZW4gaXRlbXMgYXJlIG1vZGlmaWVkIGluIHRoZSB0YWJsZS5cbiAgICogUmVxdWlyZXMgRHluYW1vREIgU3RyZWFtcyB0byBiZSBlbmFibGVkIG9uIHRoZSB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyBhZGREeW5hbW9EYkV2ZW50U291cmNlKFxuICAgIHRhYmxlOiBJVGFibGUsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGJhdGNoU2l6ZT86IG51bWJlcjtcbiAgICAgIHN0YXJ0aW5nUG9zaXRpb24/OiBcIlRSSU1fSE9SSVpPTlwiIHwgXCJMQVRFU1RcIjtcbiAgICAgIG1heEJhdGNoaW5nV2luZG93PzogbnVtYmVyO1xuICAgICAgcmV0cnlBdHRlbXB0cz86IG51bWJlcjtcbiAgICAgIHBhcmFsbGVsaXphdGlvbkZhY3Rvcj86IG51bWJlcjtcbiAgICAgIHJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzPzogYm9vbGVhbjtcbiAgICB9XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXJ0aW5nUG9zaXRpb24gPVxuICAgICAgb3B0aW9ucz8uc3RhcnRpbmdQb3NpdGlvbiA9PT0gXCJUUklNX0hPUklaT05cIlxuICAgICAgICA/IFN0YXJ0aW5nUG9zaXRpb24uVFJJTV9IT1JJWk9OXG4gICAgICAgIDogU3RhcnRpbmdQb3NpdGlvbi5MQVRFU1Q7XG5cbiAgICBjb25zdCBldmVudFNvdXJjZSA9IG5ldyBEeW5hbW9FdmVudFNvdXJjZSh0YWJsZSwge1xuICAgICAgc3RhcnRpbmdQb3NpdGlvbixcbiAgICAgIGJhdGNoU2l6ZTogb3B0aW9ucz8uYmF0Y2hTaXplID8/IDEwMCxcbiAgICAgIG1heEJhdGNoaW5nV2luZG93OiBvcHRpb25zPy5tYXhCYXRjaGluZ1dpbmRvd1xuICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMob3B0aW9ucy5tYXhCYXRjaGluZ1dpbmRvdylcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByZXRyeUF0dGVtcHRzOiBvcHRpb25zPy5yZXRyeUF0dGVtcHRzLFxuICAgICAgcGFyYWxsZWxpemF0aW9uRmFjdG9yOiBvcHRpb25zPy5wYXJhbGxlbGl6YXRpb25GYWN0b3IsXG4gICAgICByZXBvcnRCYXRjaEl0ZW1GYWlsdXJlczogb3B0aW9ucz8ucmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXMgPz8gdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRTb3VyY2UoZXZlbnRTb3VyY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBTMyBidWNrZXQgYXMgYW4gZXZlbnQgc291cmNlIGZvciB0aGlzIExhbWJkYSBmdW5jdGlvbi5cbiAgICogVGhpcyB3aWxsIHRyaWdnZXIgdGhlIExhbWJkYSB3aGVuIG9iamVjdHMgYXJlIGNyZWF0ZWQsIG1vZGlmaWVkLCBvciBkZWxldGVkLlxuICAgKiBVc2VmdWwgZm9yIElTUiBjYWNoZSBpbnZhbGlkYXRpb24gYW5kIGZpbGUgcHJvY2Vzc2luZyB3b3JrZmxvd3MuXG4gICAqL1xuICBwdWJsaWMgYWRkUzNFdmVudFNvdXJjZShcbiAgICBidWNrZXQ6IEJ1Y2tldCxcbiAgICBvcHRpb25zPzoge1xuICAgICAgZXZlbnRzPzogQXJyYXk8XG4gICAgICAgIHwgXCJPQkpFQ1RfQ1JFQVRFRFwiXG4gICAgICAgIHwgXCJPQkpFQ1RfUkVNT1ZFRFwiXG4gICAgICAgIHwgXCJPQkpFQ1RfQ1JFQVRFRF9QVVRcIlxuICAgICAgICB8IFwiT0JKRUNUX0NSRUFURURfUE9TVFwiXG4gICAgICAgIHwgXCJPQkpFQ1RfQ1JFQVRFRF9DT1BZXCJcbiAgICAgICAgfCBcIk9CSkVDVF9SRU1PVkVEX0RFTEVURVwiXG4gICAgICA+O1xuICAgICAgZmlsdGVycz86IEFycmF5PHsgcHJlZml4Pzogc3RyaW5nOyBzdWZmaXg/OiBzdHJpbmcgfT47XG4gICAgfVxuICApOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFR5cGVzID0gKG9wdGlvbnM/LmV2ZW50cyA/PyBbXCJPQkpFQ1RfQ1JFQVRFRFwiXSkubWFwKChldmVudCkgPT4ge1xuICAgICAgc3dpdGNoIChldmVudCkge1xuICAgICAgICBjYXNlIFwiT0JKRUNUX0NSRUFURURcIjpcbiAgICAgICAgICByZXR1cm4gRXZlbnRUeXBlLk9CSkVDVF9DUkVBVEVEO1xuICAgICAgICBjYXNlIFwiT0JKRUNUX1JFTU9WRURcIjpcbiAgICAgICAgICByZXR1cm4gRXZlbnRUeXBlLk9CSkVDVF9SRU1PVkVEO1xuICAgICAgICBjYXNlIFwiT0JKRUNUX0NSRUFURURfUFVUXCI6XG4gICAgICAgICAgcmV0dXJuIEV2ZW50VHlwZS5PQkpFQ1RfQ1JFQVRFRF9QVVQ7XG4gICAgICAgIGNhc2UgXCJPQkpFQ1RfQ1JFQVRFRF9QT1NUXCI6XG4gICAgICAgICAgcmV0dXJuIEV2ZW50VHlwZS5PQkpFQ1RfQ1JFQVRFRF9QT1NUO1xuICAgICAgICBjYXNlIFwiT0JKRUNUX0NSRUFURURfQ09QWVwiOlxuICAgICAgICAgIHJldHVybiBFdmVudFR5cGUuT0JKRUNUX0NSRUFURURfQ09QWTtcbiAgICAgICAgY2FzZSBcIk9CSkVDVF9SRU1PVkVEX0RFTEVURVwiOlxuICAgICAgICAgIHJldHVybiBFdmVudFR5cGUuT0JKRUNUX1JFTU9WRURfREVMRVRFO1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gZXZlbnQ7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIFMzIGV2ZW50IHR5cGU6ICR7X2V4aGF1c3RpdmV9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHMzRXZlbnRTb3VyY2VQcm9wczogUzNFdmVudFNvdXJjZVByb3BzID0ge1xuICAgICAgZXZlbnRzOiBldmVudFR5cGVzLFxuICAgICAgZmlsdGVyczogb3B0aW9ucz8uZmlsdGVyc1xuICAgIH07XG5cbiAgICBjb25zdCBldmVudFNvdXJjZSA9IG5ldyBTM0V2ZW50U291cmNlKGJ1Y2tldCwgczNFdmVudFNvdXJjZVByb3BzKTtcbiAgICB0aGlzLmFkZEV2ZW50U291cmNlKGV2ZW50U291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gRXZlbnRCcmlkZ2UgcnVsZSBhcyBhbiBldmVudCBzb3VyY2UgZm9yIHRoaXMgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKiBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgTGFtYmRhIHdoZW4gZXZlbnRzIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIGFyZSBwdWJsaXNoZWQuXG4gICAqIFVzZWZ1bCBmb3Igc2NoZWR1bGVkIGpvYnMsIGNyb3NzLXNlcnZpY2UgZXZlbnQgaGFuZGxpbmcsIGFuZCBjdXN0b20gZXZlbnQgcGF0dGVybnMuXG4gICAqL1xuICBwdWJsaWMgYWRkRXZlbnRCcmlkZ2VFdmVudFNvdXJjZShcbiAgICBydWxlSWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBzY2hlZHVsZT86IHN0cmluZztcbiAgICAgIGV2ZW50UGF0dGVybj86IEV2ZW50UGF0dGVybjtcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH1cbiAgKTogUnVsZSB7XG4gICAgaWYgKCFvcHRpb25zLnNjaGVkdWxlICYmICFvcHRpb25zLmV2ZW50UGF0dGVybikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkV2ZW50QnJpZGdlIHJ1bGUgcmVxdWlyZXMgZWl0aGVyIHNjaGVkdWxlIG9yIGV2ZW50UGF0dGVyblwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bGUgPSBuZXcgUnVsZSh0aGlzLCBydWxlSWQsIHtcbiAgICAgIHNjaGVkdWxlOiBvcHRpb25zLnNjaGVkdWxlXG4gICAgICAgID8gU2NoZWR1bGUuZXhwcmVzc2lvbihvcHRpb25zLnNjaGVkdWxlKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGV2ZW50UGF0dGVybjogb3B0aW9ucy5ldmVudFBhdHRlcm4sXG4gICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvblxuICAgIH0pO1xuXG4gICAgcnVsZS5hZGRUYXJnZXQobmV3IExhbWJkYVRhcmdldCh0aGlzKSk7XG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHNlY3JldHMgc3VwcG9ydCB1c2luZyBBV1MgUGFyYW1ldGVycyBhbmQgU2VjcmV0cyBMYW1iZGEgRXh0ZW5zaW9uLlxuICAgKlxuICAgKiBUaGUgZXh0ZW5zaW9uIGZldGNoZXMgc2VjcmV0cyBhdCBydW50aW1lIGZyb206XG4gICAqIC0gU1NNIFBhcmFtZXRlciBTdG9yZTogdmlhIGh0dHA6Ly9sb2NhbGhvc3Q6Mjc3My9zeXN0ZW1zbWFuYWdlci9wYXJhbWV0ZXJzL2dldFxuICAgKiAtIFNlY3JldHMgTWFuYWdlcjogdmlhIGh0dHA6Ly9sb2NhbGhvc3Q6Mjc3My9zZWNyZXRzbWFuYWdlci9nZXRcbiAgICpcbiAgICogVGhpcyByZXBsYWNlcyB0aGUgaW5zZWN1cmUgdW5zYWZlVW53cmFwKCkgcGF0dGVybiB3aGljaCByZXNvbHZlZCBzZWNyZXRzIGF0XG4gICAqIGRlcGxveSB0aW1lIGFuZCBleHBvc2VkIHRoZW0gaW4gTGFtYmRhIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGFkZFNlY3JldHNTdXBwb3J0KFxuICAgIHNlY3JldHM/OiBzdHJpbmdbXSxcbiAgICBzc21TZWNyZXRzUGF0aD86IHN0cmluZyxcbiAgICBzZWNyZXRzSW1wb3J0PzogUmVjb3JkPHN0cmluZywgU2VjcmV0SW1wb3J0PixcbiAgICBhcHBOYW1lPzogc3RyaW5nLFxuICAgIGZ1bmN0aW9uTmFtZT86IHN0cmluZyxcbiAgICBhcmNoaXRlY3R1cmU/OiBBcmNoaXRlY3R1cmVcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgaGFzU2VjcmV0c01hbmFnZXIgPVxuICAgICAgc2VjcmV0c0ltcG9ydCAmJiBPYmplY3Qua2V5cyhzZWNyZXRzSW1wb3J0KS5sZW5ndGggPiAwO1xuXG4gICAgaWYgKCFoYXNTZWNyZXRzTWFuYWdlciAmJiAhKHNlY3JldHMgJiYgc2VjcmV0cy5sZW5ndGggPiAwKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5hZGRTZWNyZXRzRXh0ZW5zaW9uTGF5ZXIoYXJjaGl0ZWN0dXJlKTtcblxuICAgIGlmIChoYXNTZWNyZXRzTWFuYWdlcikge1xuICAgICAgdGhpcy5hZGRTZWNyZXRzTWFuYWdlclN1cHBvcnQoc2VjcmV0c0ltcG9ydCk7XG4gICAgfVxuXG4gICAgaWYgKHNlY3JldHMgJiYgc2VjcmV0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFkZFNzbVNlY3JldHNTdXBwb3J0KHNlY3JldHMsIHNzbVNlY3JldHNQYXRoLCBhcHBOYW1lLCBmdW5jdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkU2VjcmV0c1Jlc29sdmVyTGF5ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgdGhlIEFXUyBQYXJhbWV0ZXJzIGFuZCBTZWNyZXRzIExhbWJkYSBFeHRlbnNpb24gbGF5ZXIuXG4gICAqIFVzZXMgQ0RLJ3MgcmVnaW9uYWxGYWN0KCkgdG8gcmVzb2x2ZSB0aGUgY29ycmVjdCBBUk4gYXQgZGVwbG95IHRpbWUsXG4gICAqIGhhbmRsaW5nIHRoZSBmYWN0IHRoYXQgQVdTIHB1Ymxpc2hlcyB0aGUgbGF5ZXIgZnJvbSBkaWZmZXJlbnQgYWNjb3VudHNcbiAgICogaW4gZGlmZmVyZW50IHJlZ2lvbnMuIFRoaXMgYXBwcm9hY2ggd29ya3Mgd2l0aCBDREsgdG9rZW5zLlxuICAgKiBDb25maWd1cmVzIGNhY2hlIFRUTCBmb3Igcm90YXRpb24gc3VwcG9ydC5cbiAgICovXG4gIHByaXZhdGUgYWRkU2VjcmV0c0V4dGVuc2lvbkxheWVyKGFyY2hpdGVjdHVyZT86IEFyY2hpdGVjdHVyZSk6IHZvaWQge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgYXJjaFN0cmluZyA9XG4gICAgICBhcmNoaXRlY3R1cmUgPT09IEFyY2hpdGVjdHVyZS5BUk1fNjQgPyBcImFybTY0XCIgOiBcIng4Nl82NFwiO1xuXG4gICAgY29uc3QgZmFjdE5hbWUgPSBGYWN0TmFtZS5wYXJhbXNBbmRTZWNyZXRzTGFtYmRhTGF5ZXIoXG4gICAgICBTRUNSRVRTX0VYVEVOU0lPTi5WRVJTSU9OLFxuICAgICAgYXJjaFN0cmluZ1xuICAgICk7XG5cbiAgICBjb25zdCBsYXllckFybiA9IHN0YWNrLnJlZ2lvbmFsRmFjdChmYWN0TmFtZSk7XG5cbiAgICB0aGlzLmFkZExheWVycyhcbiAgICAgIExheWVyVmVyc2lvbi5mcm9tTGF5ZXJWZXJzaW9uQXJuKFxuICAgICAgICB0aGlzLFxuICAgICAgICBgJHt0aGlzLm5vZGUuaWR9U2VjcmV0c0V4dGVuc2lvbmAsXG4gICAgICAgIGxheWVyQXJuXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXG4gICAgICBcIlNFQ1JFVFNfTUFOQUdFUl9UVExcIixcbiAgICAgIFNFQ1JFVFNfRVhURU5TSU9OLkNBQ0hFX1RUTF9TRUNPTkRTXG4gICAgKTtcbiAgICB0aGlzLmFkZEVudmlyb25tZW50KFxuICAgICAgXCJTU01fUEFSQU1FVEVSX1NUT1JFX1RUTFwiLFxuICAgICAgU0VDUkVUU19FWFRFTlNJT04uQ0FDSEVfVFRMX1NFQ09ORFNcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBTZWNyZXRzIE1hbmFnZXIgc3VwcG9ydCBmb3IgQ0RLLW1hbmFnZWQgc2VjcmV0cyAoZS5nLiwgZGF0YWJhc2UgY3JlZGVudGlhbHMpLlxuICAgKiBTdG9yZXMgQVJOICsgZmllbGQgYXMgZW52IHZhcnMgLSB0aGUgTGFtYmRhIEV4dGVuc2lvbiBmZXRjaGVzIGFjdHVhbCB2YWx1ZXMgYXQgcnVudGltZS5cbiAgICovXG4gIHByaXZhdGUgYWRkU2VjcmV0c01hbmFnZXJTdXBwb3J0KFxuICAgIHNlY3JldHNJbXBvcnQ6IFJlY29yZDxzdHJpbmcsIFNlY3JldEltcG9ydD5cbiAgKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBba2V5LCBzZWNyZXRJbXBvcnRdIG9mIE9iamVjdC5lbnRyaWVzKHNlY3JldHNJbXBvcnQpKSB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYCR7dGhpcy5ub2RlLmlkfUltcG9ydGVkU2VjcmV0JHtrZXl9YCxcbiAgICAgICAgc2VjcmV0SW1wb3J0Lm5hbWVcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoYCR7a2V5fV9TRUNSRVRfQVJOYCwgc2VjcmV0LnNlY3JldEFybik7XG4gICAgICBpZiAoc2VjcmV0SW1wb3J0LmZpZWxkKSB7XG4gICAgICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoYCR7a2V5fV9TRUNSRVRfRklFTERgLCBzZWNyZXRJbXBvcnQuZmllbGQpO1xuICAgICAgfVxuXG4gICAgICBzZWNyZXQuZ3JhbnRSZWFkKHRoaXMpO1xuICAgIH1cblxuICAgIHRoaXMuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXCJrbXM6RGVjcnlwdFwiLCBcImttczpEZXNjcmliZUtleVwiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgICBcImttczpWaWFTZXJ2aWNlXCI6IGBzZWNyZXRzbWFuYWdlci4ke1N0YWNrLm9mKHRoaXMpLnJlZ2lvbn0uYW1hem9uYXdzLmNvbWBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgU1NNIFBhcmFtZXRlciBTdG9yZSBzdXBwb3J0IGZvciB1c2VyLW1hbmFnZWQgc2VjcmV0cyAodmlhIGZqYWxsIHNlY3JldCBhZGQpLlxuICAgKiBTdG9yZXMgYmFzZSBwYXRoIGFuZCBzZWNyZXQgbmFtZXMgYXMgZW52IHZhcnMgZm9yIGNvbnN1bWVyIGNvZGUuXG4gICAqL1xuICBwcml2YXRlIGFkZFNzbVNlY3JldHNTdXBwb3J0KFxuICAgIHNlY3JldHM6IHN0cmluZ1tdLFxuICAgIHNzbVNlY3JldHNQYXRoPzogc3RyaW5nLFxuICAgIGFwcE5hbWU/OiBzdHJpbmcsXG4gICAgZnVuY3Rpb25OYW1lPzogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGJhc2VQYXRoID0gdGhpcy5kZXJpdmVTc21TZWNyZXRzUGF0aChcbiAgICAgIHNzbVNlY3JldHNQYXRoLFxuICAgICAgYXBwTmFtZSxcbiAgICAgIGZ1bmN0aW9uTmFtZVxuICAgICk7XG5cbiAgICB0aGlzLmFkZEVudmlyb25tZW50KFwiU1NNX1NFQ1JFVFNfUEFUSFwiLCBiYXNlUGF0aCk7XG4gICAgdGhpcy5hZGRFbnZpcm9ubWVudChcIlNTTV9TRUNSRVRfTkFNRVNcIiwgc2VjcmV0cy5qb2luKFwiLFwiKSk7XG5cbiAgICBjb25zdCBzY29wZWRQYXRoID0gYCR7YmFzZVBhdGh9LypgO1xuICAgIHRoaXMuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXCJzc206R2V0UGFyYW1ldGVyXCIsIFwic3NtOkdldFBhcmFtZXRlcnNcIl0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGBhcm46YXdzOnNzbToke1N0YWNrLm9mKHRoaXMpLnJlZ2lvbn06KjpwYXJhbWV0ZXIke3Njb3BlZFBhdGh9YFxuICAgICAgICBdXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1wia21zOkRlY3J5cHRcIl0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgXCJrbXM6VmlhU2VydmljZVwiOiBgc3NtLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25hd3MuY29tYFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgRmphbGwgc2VjcmV0cyByZXNvbHZlciBsYXllciBhbmQgc2V0IEFXU19MQU1CREFfRVhFQ19XUkFQUEVSLlxuICAgKlxuICAgKiBUaGUgcmVzb2x2ZXIgaXMgYSBiYXNoIHdyYXBwZXIgKyBOb2RlLmpzIHNjcmlwdCB0aGF0IHJ1bnMgYmVmb3JlIHRoZSBMYW1iZGFcbiAgICogcnVudGltZS4gSXQgY2FsbHMgdGhlIEV4dGVuc2lvbiBIVFRQIEFQSSAobG9jYWxob3N0OjI3NzMpIHRvIHJlc29sdmUgU1NNXG4gICAqIHBhcmFtZXRlcnMgYW5kIFNlY3JldHMgTWFuYWdlciBzZWNyZXRzLCBleHBvcnRpbmcgdGhlbSBhcyBwbGFpbiBlbnZpcm9ubWVudFxuICAgKiB2YXJpYWJsZXMgc28gaGFuZGxlciBjb2RlIGNhbiBzaW1wbHkgcmVhZCBwcm9jZXNzLmVudi5cbiAgICpcbiAgICogVGhlIGxheWVyIGlzIGNyZWF0ZWQgb25jZSBwZXIgc3RhY2sgYW5kIHNoYXJlZCBhY3Jvc3MgYWxsIExhbWJkYSBmdW5jdGlvbnMuXG4gICAqL1xuICBwcml2YXRlIGFkZFNlY3JldHNSZXNvbHZlckxheWVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgbGF5ZXJJZCA9IFwiRmphbGxTZWNyZXRzUmVzb2x2ZXJMYXllclwiO1xuICAgIGxldCByZXNvbHZlckxheWVyID0gc3RhY2subm9kZS50cnlGaW5kQ2hpbGQobGF5ZXJJZCkgYXNcbiAgICAgIHwgTGF5ZXJWZXJzaW9uXG4gICAgICB8IHVuZGVmaW5lZDtcblxuICAgIGlmICghcmVzb2x2ZXJMYXllcikge1xuICAgICAgcmVzb2x2ZXJMYXllciA9IG5ldyBMYXllclZlcnNpb24oc3RhY2ssIGxheWVySWQsIHtcbiAgICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiLi5cIiwgXCJsYXllcnNcIiwgXCJzZWNyZXRzLXJlc29sdmVyXCIpXG4gICAgICAgICksXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIFwiRmphbGwgc2VjcmV0cyByZXNvbHZlciDigJQgcmVzb2x2ZXMgU1NNIGFuZCBTTSBzZWNyZXRzIGJlZm9yZSBoYW5kbGVyXCJcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuYWRkTGF5ZXJzKHJlc29sdmVyTGF5ZXIpO1xuICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoXCJBV1NfTEFNQkRBX0VYRUNfV1JBUFBFUlwiLCBcIi9vcHQvYmluL3Jlc29sdmUtc2VjcmV0c1wiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXJpdmUgU1NNIHNlY3JldHMgcGF0aCBmb3IgTGFtYmRhIGZ1bmN0aW9ucy5cbiAgICogUGF0dGVybjogLzxhcHBOYW1lPi9sYW1iZGEvPGZ1bmN0aW9uTmFtZT5cbiAgICovXG4gIHByaXZhdGUgZGVyaXZlU3NtU2VjcmV0c1BhdGgoXG4gICAgZXhwbGljaXRQYXRoPzogc3RyaW5nLFxuICAgIGFwcE5hbWU/OiBzdHJpbmcsXG4gICAgZnVuY3Rpb25OYW1lPzogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGV4cGxpY2l0UGF0aCkge1xuICAgICAgcmV0dXJuIGV4cGxpY2l0UGF0aDtcbiAgICB9XG5cbiAgICBpZiAoIWFwcE5hbWUgfHwgIWZ1bmN0aW9uTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkxhbWJkYSBmdW5jdGlvbiBoYXMgc2VjcmV0cyBkZWZpbmVkIGJ1dCBubyBzc21TZWNyZXRzUGF0aCBpcyBzZXQgXCIgK1xuICAgICAgICAgIFwiYW5kIGFwcE5hbWUvZnVuY3Rpb25OYW1lIGFyZSBub3QgYXZhaWxhYmxlLiBcIiArXG4gICAgICAgICAgXCJFaXRoZXIgc2V0IHNzbVNlY3JldHNQYXRoIGV4cGxpY2l0bHksIG9yIGVuc3VyZSBBcHAuZ2V0TmFtZSgpIHJldHVybnMgYSB2YWx1ZS5cIlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYC8ke2FwcE5hbWV9L2xhbWJkYS8ke2Z1bmN0aW9uTmFtZX1gO1xuICB9XG59XG4iXX0=
@@ -1,39 +1,36 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DynamoDBTable = void 0;
4
- const constructs_1 = require("constructs");
5
- const aws_cdk_lib_1 = require("aws-cdk-lib");
6
- const removalPolicy_1 = require("../../../utils/removalPolicy");
7
- const aws_dynamodb_1 = require("aws-cdk-lib/aws-dynamodb");
1
+ import { Construct } from "constructs";
2
+ import { CfnOutput } from "aws-cdk-lib";
3
+ import { toRemovalPolicy } from "../../../utils/removalPolicy.js";
4
+ import { Table, AttributeType, BillingMode, StreamViewType, ProjectionType } from "aws-cdk-lib/aws-dynamodb";
8
5
  function toAttributeType(type) {
9
6
  switch (type) {
10
7
  case "S":
11
- return aws_dynamodb_1.AttributeType.STRING;
8
+ return AttributeType.STRING;
12
9
  case "N":
13
- return aws_dynamodb_1.AttributeType.NUMBER;
10
+ return AttributeType.NUMBER;
14
11
  case "B":
15
- return aws_dynamodb_1.AttributeType.BINARY;
12
+ return AttributeType.BINARY;
16
13
  }
17
14
  }
18
15
  function toBillingMode(mode) {
19
16
  switch (mode) {
20
17
  case "PROVISIONED":
21
- return aws_dynamodb_1.BillingMode.PROVISIONED;
18
+ return BillingMode.PROVISIONED;
22
19
  case "PAY_PER_REQUEST":
23
20
  default:
24
- return aws_dynamodb_1.BillingMode.PAY_PER_REQUEST;
21
+ return BillingMode.PAY_PER_REQUEST;
25
22
  }
26
23
  }
27
24
  function toStreamViewType(stream) {
28
25
  switch (stream) {
29
26
  case "NEW_IMAGE":
30
- return aws_dynamodb_1.StreamViewType.NEW_IMAGE;
27
+ return StreamViewType.NEW_IMAGE;
31
28
  case "OLD_IMAGE":
32
- return aws_dynamodb_1.StreamViewType.OLD_IMAGE;
29
+ return StreamViewType.OLD_IMAGE;
33
30
  case "NEW_AND_OLD_IMAGES":
34
- return aws_dynamodb_1.StreamViewType.NEW_AND_OLD_IMAGES;
31
+ return StreamViewType.NEW_AND_OLD_IMAGES;
35
32
  case "KEYS_ONLY":
36
- return aws_dynamodb_1.StreamViewType.KEYS_ONLY;
33
+ return StreamViewType.KEYS_ONLY;
37
34
  default:
38
35
  return undefined;
39
36
  }
@@ -41,20 +38,22 @@ function toStreamViewType(stream) {
41
38
  function toProjectionType(type) {
42
39
  switch (type) {
43
40
  case "ALL":
44
- return aws_dynamodb_1.ProjectionType.ALL;
41
+ return ProjectionType.ALL;
45
42
  case "KEYS_ONLY":
46
- return aws_dynamodb_1.ProjectionType.KEYS_ONLY;
43
+ return ProjectionType.KEYS_ONLY;
47
44
  case "INCLUDE":
48
- return aws_dynamodb_1.ProjectionType.INCLUDE;
45
+ return ProjectionType.INCLUDE;
49
46
  default:
50
47
  return undefined;
51
48
  }
52
49
  }
53
- class DynamoDBTable extends constructs_1.Construct {
50
+ export class DynamoDBTable extends Construct {
51
+ id;
52
+ table;
54
53
  constructor(scope, id, props) {
55
54
  super(scope, id);
56
55
  this.id = id;
57
- this.table = new aws_dynamodb_1.Table(this, `${id}Table`, {
56
+ this.table = new Table(this, `${id}Table`, {
58
57
  tableName: props.tableName,
59
58
  partitionKey: {
60
59
  name: props.partitionKey.name,
@@ -70,8 +69,10 @@ class DynamoDBTable extends constructs_1.Construct {
70
69
  readCapacity: props.billingMode === "PROVISIONED" ? props.readCapacity : undefined,
71
70
  writeCapacity: props.billingMode === "PROVISIONED" ? props.writeCapacity : undefined,
72
71
  stream: toStreamViewType(props.stream),
73
- pointInTimeRecovery: props.pointInTimeRecovery ?? true,
74
- removalPolicy: (0, removalPolicy_1.toRemovalPolicy)(props.removalPolicy),
72
+ pointInTimeRecoverySpecification: {
73
+ pointInTimeRecoveryEnabled: props.pointInTimeRecovery ?? true
74
+ },
75
+ removalPolicy: toRemovalPolicy(props.removalPolicy),
75
76
  timeToLiveAttribute: props.timeToLiveAttribute
76
77
  });
77
78
  if (props.globalSecondaryIndexes) {
@@ -94,18 +95,18 @@ class DynamoDBTable extends constructs_1.Construct {
94
95
  this.table.addGlobalSecondaryIndex(gsiProps);
95
96
  }
96
97
  }
97
- new aws_cdk_lib_1.CfnOutput(this, `${id}TableName`, {
98
+ new CfnOutput(this, `${id}TableName`, {
98
99
  key: `${id}TableName`,
99
100
  value: this.table.tableName,
100
101
  description: `DynamoDB table name for ${id}`
101
102
  });
102
- new aws_cdk_lib_1.CfnOutput(this, `${id}TableArn`, {
103
+ new CfnOutput(this, `${id}TableArn`, {
103
104
  key: `${id}TableArn`,
104
105
  value: this.table.tableArn,
105
106
  description: `DynamoDB table ARN for ${id}`
106
107
  });
107
108
  if (props.stream) {
108
- new aws_cdk_lib_1.CfnOutput(this, `${id}TableStreamArn`, {
109
+ new CfnOutput(this, `${id}TableStreamArn`, {
109
110
  key: `${id}TableStreamArn`,
110
111
  value: this.table.tableStreamArn || "",
111
112
  description: `DynamoDB table stream ARN for ${id}`
@@ -167,5 +168,3 @@ class DynamoDBTable extends constructs_1.Construct {
167
168
  return this.table.grantStreamRead(grantee);
168
169
  }
169
170
  }
170
- exports.DynamoDBTable = DynamoDBTable;
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1vZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9kYXRhYmFzZS9keW5hbW9kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQXdDO0FBQ3hDLGdFQUErRDtBQUMvRCwyREFRa0M7QUFpQ2xDLFNBQVMsZUFBZSxDQUFDLElBQTJCO0lBQ2xELFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLEdBQUc7WUFDTixPQUFPLDRCQUFhLENBQUMsTUFBTSxDQUFDO1FBQzlCLEtBQUssR0FBRztZQUNOLE9BQU8sNEJBQWEsQ0FBQyxNQUFNLENBQUM7UUFDOUIsS0FBSyxHQUFHO1lBQ04sT0FBTyw0QkFBYSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQXdDO0lBQzdELFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLGFBQWE7WUFDaEIsT0FBTywwQkFBVyxDQUFDLFdBQVcsQ0FBQztRQUNqQyxLQUFLLGlCQUFpQixDQUFDO1FBQ3ZCO1lBQ0UsT0FBTywwQkFBVyxDQUFDLGVBQWUsQ0FBQztJQUN2QyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQ3ZCLE1BQXVFO0lBRXZFLFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLFdBQVc7WUFDZCxPQUFPLDZCQUFjLENBQUMsU0FBUyxDQUFDO1FBQ2xDLEtBQUssV0FBVztZQUNkLE9BQU8sNkJBQWMsQ0FBQyxTQUFTLENBQUM7UUFDbEMsS0FBSyxvQkFBb0I7WUFDdkIsT0FBTyw2QkFBYyxDQUFDLGtCQUFrQixDQUFDO1FBQzNDLEtBQUssV0FBVztZQUNkLE9BQU8sNkJBQWMsQ0FBQyxTQUFTLENBQUM7UUFDbEM7WUFDRSxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0JBQWdC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UUFDbEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxVQUFVLENBQUMsT0FBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxjQUFjLENBQUMsT0FBbUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWUsQ0FBQyxPQUFtQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWUsQ0FBQyxPQUFtQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQXZJRCxzQ0F1SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyB0b1JlbW92YWxQb2xpY3kgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvcmVtb3ZhbFBvbGljeVwiO1xuaW1wb3J0IHtcbiAgVGFibGUsXG4gIEF0dHJpYnV0ZVR5cGUsXG4gIEJpbGxpbmdNb2RlLFxuICBTdHJlYW1WaWV3VHlwZSxcbiAgUHJvamVjdGlvblR5cGUsXG4gIHR5cGUgR2xvYmFsU2Vjb25kYXJ5SW5kZXhQcm9wcyxcbiAgdHlwZSBJVGFibGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1keW5hbW9kYlwiO1xuaW1wb3J0IHsgdHlwZSBJR3JhbnRhYmxlLCB0eXBlIEdyYW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcblxuZXhwb3J0IHR5cGUgRHluYW1vREJBdHRyaWJ1dGVUeXBlID0gXCJTXCIgfCBcIk5cIiB8IFwiQlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtb0RCS2V5U2NoZW1hIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBEeW5hbW9EQkF0dHJpYnV0ZVR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1vREJHbG9iYWxTZWNvbmRhcnlJbmRleCB7XG4gIGluZGV4TmFtZTogc3RyaW5nO1xuICBwYXJ0aXRpb25LZXk6IER5bmFtb0RCS2V5U2NoZW1hO1xuICBzb3J0S2V5PzogRHluYW1vREJLZXlTY2hlbWE7XG4gIHByb2plY3Rpb25UeXBlPzogXCJBTExcIiB8IFwiS0VZU19PTkxZXCIgfCBcIklOQ0xVREVcIjtcbiAgbm9uS2V5QXR0cmlidXRlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtb0RCVGFibGVQcm9wcyB7XG4gIHRhYmxlTmFtZT86IHN0cmluZztcbiAgcGFydGl0aW9uS2V5OiBEeW5hbW9EQktleVNjaGVtYTtcbiAgc29ydEtleT86IER5bmFtb0RCS2V5U2NoZW1hO1xuICBiaWxsaW5nTW9kZT86IFwiUEFZX1BFUl9SRVFVRVNUXCIgfCBcIlBST1ZJU0lPTkVEXCI7XG4gIHJlYWRDYXBhY2l0eT86IG51bWJlcjtcbiAgd3JpdGVDYXBhY2l0eT86IG51bWJlcjtcbiAgZ2xvYmFsU2Vjb25kYXJ5SW5kZXhlcz86IER5bmFtb0RCR2xvYmFsU2Vjb25kYXJ5SW5kZXhbXTtcbiAgdGltZVRvTGl2ZUF0dHJpYnV0ZT86IHN0cmluZztcbiAgc3RyZWFtPzogXCJORVdfSU1BR0VcIiB8IFwiT0xEX0lNQUdFXCIgfCBcIk5FV19BTkRfT0xEX0lNQUdFU1wiIHwgXCJLRVlTX09OTFlcIjtcbiAgcG9pbnRJblRpbWVSZWNvdmVyeT86IGJvb2xlYW47XG4gIGVuY3J5cHRpb24/OiBcIkFXU19PV05FRFwiIHwgXCJBV1NfTUFOQUdFRFwiIHwgXCJDVVNUT01FUl9NQU5BR0VEXCI7XG4gIHJlbW92YWxQb2xpY3k/OiBcIkRFU1RST1lcIiB8IFwiUkVUQUlOXCIgfCBcIlNOQVBTSE9UXCI7XG59XG5cbmZ1bmN0aW9uIHRvQXR0cmlidXRlVHlwZSh0eXBlOiBEeW5hbW9EQkF0dHJpYnV0ZVR5cGUpOiBBdHRyaWJ1dGVUeXBlIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBcIlNcIjpcbiAgICAgIHJldHVybiBBdHRyaWJ1dGVUeXBlLlNUUklORztcbiAgICBjYXNlIFwiTlwiOlxuICAgICAgcmV0dXJuIEF0dHJpYnV0ZVR5cGUuTlVNQkVSO1xuICAgIGNhc2UgXCJCXCI6XG4gICAgICByZXR1cm4gQXR0cmlidXRlVHlwZS5CSU5BUlk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9CaWxsaW5nTW9kZShtb2RlPzogXCJQQVlfUEVSX1JFUVVFU1RcIiB8IFwiUFJPVklTSU9ORURcIik6IEJpbGxpbmdNb2RlIHtcbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSBcIlBST1ZJU0lPTkVEXCI6XG4gICAgICByZXR1cm4gQmlsbGluZ01vZGUuUFJPVklTSU9ORUQ7XG4gICAgY2FzZSBcIlBBWV9QRVJfUkVRVUVTVFwiOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gQmlsbGluZ01vZGUuUEFZX1BFUl9SRVFVRVNUO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvU3RyZWFtVmlld1R5cGUoXG4gIHN0cmVhbT86IFwiTkVXX0lNQUdFXCIgfCBcIk9MRF9JTUFHRVwiIHwgXCJORVdfQU5EX09MRF9JTUFHRVNcIiB8IFwiS0VZU19PTkxZXCJcbik6IFN0cmVhbVZpZXdUeXBlIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChzdHJlYW0pIHtcbiAgICBjYXNlIFwiTkVXX0lNQUdFXCI6XG4gICAgICByZXR1cm4gU3RyZWFtVmlld1R5cGUuTkVXX0lNQUdFO1xuICAgIGNhc2UgXCJPTERfSU1BR0VcIjpcbiAgICAgIHJldHVybiBTdHJlYW1WaWV3VHlwZS5PTERfSU1BR0U7XG4gICAgY2FzZSBcIk5FV19BTkRfT0xEX0lNQUdFU1wiOlxuICAgICAgcmV0dXJuIFN0cmVhbVZpZXdUeXBlLk5FV19BTkRfT0xEX0lNQUdFUztcbiAgICBjYXNlIFwiS0VZU19PTkxZXCI6XG4gICAgICByZXR1cm4gU3RyZWFtVmlld1R5cGUuS0VZU19PTkxZO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvUHJvamVjdGlvblR5cGUoXG4gIHR5cGU/OiBcIkFMTFwiIHwgXCJLRVlTX09OTFlcIiB8IFwiSU5DTFVERVwiXG4pOiBQcm9qZWN0aW9uVHlwZSB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJBTExcIjpcbiAgICAgIHJldHVybiBQcm9qZWN0aW9uVHlwZS5BTEw7XG4gICAgY2FzZSBcIktFWVNfT05MWVwiOlxuICAgICAgcmV0dXJuIFByb2plY3Rpb25UeXBlLktFWVNfT05MWTtcbiAgICBjYXNlIFwiSU5DTFVERVwiOlxuICAgICAgcmV0dXJuIFByb2plY3Rpb25UeXBlLklOQ0xVREU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtb0RCVGFibGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcHJpdmF0ZSB0YWJsZTogVGFibGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IER5bmFtb0RCVGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5pZCA9IGlkO1xuXG4gICAgdGhpcy50YWJsZSA9IG5ldyBUYWJsZSh0aGlzLCBgJHtpZH1UYWJsZWAsIHtcbiAgICAgIHRhYmxlTmFtZTogcHJvcHMudGFibGVOYW1lLFxuICAgICAgcGFydGl0aW9uS2V5OiB7XG4gICAgICAgIG5hbWU6IHByb3BzLnBhcnRpdGlvbktleS5uYW1lLFxuICAgICAgICB0eXBlOiB0b0F0dHJpYnV0ZVR5cGUocHJvcHMucGFydGl0aW9uS2V5LnR5cGUpXG4gICAgICB9LFxuICAgICAgc29ydEtleTogcHJvcHMuc29ydEtleVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIG5hbWU6IHByb3BzLnNvcnRLZXkubmFtZSxcbiAgICAgICAgICAgIHR5cGU6IHRvQXR0cmlidXRlVHlwZShwcm9wcy5zb3J0S2V5LnR5cGUpXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGJpbGxpbmdNb2RlOiB0b0JpbGxpbmdNb2RlKHByb3BzLmJpbGxpbmdNb2RlKSxcbiAgICAgIHJlYWRDYXBhY2l0eTpcbiAgICAgICAgcHJvcHMuYmlsbGluZ01vZGUgPT09IFwiUFJPVklTSU9ORURcIiA/IHByb3BzLnJlYWRDYXBhY2l0eSA6IHVuZGVmaW5lZCxcbiAgICAgIHdyaXRlQ2FwYWNpdHk6XG4gICAgICAgIHByb3BzLmJpbGxpbmdNb2RlID09PSBcIlBST1ZJU0lPTkVEXCIgPyBwcm9wcy53cml0ZUNhcGFjaXR5IDogdW5kZWZpbmVkLFxuICAgICAgc3RyZWFtOiB0b1N0cmVhbVZpZXdUeXBlKHByb3BzLnN0cmVhbSksXG4gICAgICBwb2ludEluVGltZVJlY292ZXJ5OiBwcm9wcy5wb2ludEluVGltZVJlY292ZXJ5ID8/IHRydWUsXG4gICAgICByZW1vdmFsUG9saWN5OiB0b1JlbW92YWxQb2xpY3kocHJvcHMucmVtb3ZhbFBvbGljeSksXG4gICAgICB0aW1lVG9MaXZlQXR0cmlidXRlOiBwcm9wcy50aW1lVG9MaXZlQXR0cmlidXRlXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuZ2xvYmFsU2Vjb25kYXJ5SW5kZXhlcykge1xuICAgICAgZm9yIChjb25zdCBnc2kgb2YgcHJvcHMuZ2xvYmFsU2Vjb25kYXJ5SW5kZXhlcykge1xuICAgICAgICBjb25zdCBnc2lQcm9wczogR2xvYmFsU2Vjb25kYXJ5SW5kZXhQcm9wcyA9IHtcbiAgICAgICAgICBpbmRleE5hbWU6IGdzaS5pbmRleE5hbWUsXG4gICAgICAgICAgcGFydGl0aW9uS2V5OiB7XG4gICAgICAgICAgICBuYW1lOiBnc2kucGFydGl0aW9uS2V5Lm5hbWUsXG4gICAgICAgICAgICB0eXBlOiB0b0F0dHJpYnV0ZVR5cGUoZ3NpLnBhcnRpdGlvbktleS50eXBlKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc29ydEtleTogZ3NpLnNvcnRLZXlcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGdzaS5zb3J0S2V5Lm5hbWUsXG4gICAgICAgICAgICAgICAgdHlwZTogdG9BdHRyaWJ1dGVUeXBlKGdzaS5zb3J0S2V5LnR5cGUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHByb2plY3Rpb25UeXBlOiB0b1Byb2plY3Rpb25UeXBlKGdzaS5wcm9qZWN0aW9uVHlwZSksXG4gICAgICAgICAgbm9uS2V5QXR0cmlidXRlczogZ3NpLm5vbktleUF0dHJpYnV0ZXNcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50YWJsZS5hZGRHbG9iYWxTZWNvbmRhcnlJbmRleChnc2lQcm9wcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1UYWJsZU5hbWVgLCB7XG4gICAgICBrZXk6IGAke2lkfVRhYmxlTmFtZWAsXG4gICAgICB2YWx1ZTogdGhpcy50YWJsZS50YWJsZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYER5bmFtb0RCIHRhYmxlIG5hbWUgZm9yICR7aWR9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1UYWJsZUFybmAsIHtcbiAgICAgIGtleTogYCR7aWR9VGFibGVBcm5gLFxuICAgICAgdmFsdWU6IHRoaXMudGFibGUudGFibGVBcm4sXG4gICAgICBkZXNjcmlwdGlvbjogYER5bmFtb0RCIHRhYmxlIEFSTiBmb3IgJHtpZH1gXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuc3RyZWFtKSB7XG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfVRhYmxlU3RyZWFtQXJuYCwge1xuICAgICAgICBrZXk6IGAke2lkfVRhYmxlU3RyZWFtQXJuYCxcbiAgICAgICAgdmFsdWU6IHRoaXMudGFibGUudGFibGVTdHJlYW1Bcm4gfHwgXCJcIixcbiAgICAgICAgZGVzY3JpcHRpb246IGBEeW5hbW9EQiB0YWJsZSBzdHJlYW0gQVJOIGZvciAke2lkfWBcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIER5bmFtb0RCIHRhYmxlIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0VGFibGVOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUudGFibGVOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgRHluYW1vREIgdGFibGUgQVJOLlxuICAgKi9cbiAgcHVibGljIGdldFRhYmxlQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUudGFibGVBcm47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBEeW5hbW9EQiB0YWJsZSBzdHJlYW0gQVJOIChpZiBzdHJlYW1pbmcgaXMgZW5hYmxlZCkuXG4gICAqL1xuICBwdWJsaWMgZ2V0VGFibGVTdHJlYW1Bcm4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS50YWJsZVN0cmVhbUFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVuZGVybHlpbmcgQ0RLIFRhYmxlIGNvbnN0cnVjdC5cbiAgICovXG4gIHB1YmxpYyBnZXRUYWJsZSgpOiBJVGFibGUge1xuICAgIHJldHVybiB0aGlzLnRhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdyYW50ZWUuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuZ3JhbnRSZWFkRGF0YShncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGUgZ3JhbnRlZS5cbiAgICovXG4gIHB1YmxpYyBncmFudFdyaXRlKGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUuZ3JhbnRXcml0ZURhdGEoZ3JhbnRlZSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhlIGdyYW50ZWUuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkV3JpdGUoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5ncmFudFJlYWRXcml0ZURhdGEoZ3JhbnRlZSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgZnVsbCBhY2Nlc3MgKHJlYWQsIHdyaXRlLCBkZWxldGUpIHRvIHRoZSBncmFudGVlLlxuICAgKi9cbiAgcHVibGljIGdyYW50RnVsbEFjY2VzcyhncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLmdyYW50RnVsbEFjY2VzcyhncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBzdHJlYW0gcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ3JhbnRlZS5cbiAgICovXG4gIHB1YmxpYyBncmFudFN0cmVhbVJlYWQoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5ncmFudFN0cmVhbVJlYWQoZ3JhbnRlZSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,10 +1,10 @@
1
1
  import { DatabaseInsightsMode, PerformanceInsightRetention } from "aws-cdk-lib/aws-rds";
2
- export * from "./dynamodb";
3
- export * from "./rdsAurora";
4
- export * from "./rdsAuroraGlobal";
5
- export * from "./rdsDefaults";
6
- export * from "./rdsHelpers";
7
- export * from "./rdsInstance";
8
- export * from "./rdsProxyOutput";
2
+ export * from "./dynamodb.js";
3
+ export * from "./rdsAurora.js";
4
+ export * from "./rdsAuroraGlobal.js";
5
+ export * from "./rdsDefaults.js";
6
+ export * from "./rdsHelpers.js";
7
+ export * from "./rdsInstance.js";
8
+ export * from "./rdsProxyOutput.js";
9
9
  export declare function getDatabaseInsightsRetention(mode: "standard" | "advanced"): PerformanceInsightRetention;
10
10
  export declare function getCdkDatabaseInsightsMode(mode: "standard" | "advanced"): DatabaseInsightsMode;
@@ -1,37 +1,18 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.getDatabaseInsightsRetention = getDatabaseInsightsRetention;
18
- exports.getCdkDatabaseInsightsMode = getCdkDatabaseInsightsMode;
19
- const aws_rds_1 = require("aws-cdk-lib/aws-rds");
20
- __exportStar(require("./dynamodb"), exports);
21
- __exportStar(require("./rdsAurora"), exports);
22
- __exportStar(require("./rdsAuroraGlobal"), exports);
23
- __exportStar(require("./rdsDefaults"), exports);
24
- __exportStar(require("./rdsHelpers"), exports);
25
- __exportStar(require("./rdsInstance"), exports);
26
- __exportStar(require("./rdsProxyOutput"), exports);
27
- function getDatabaseInsightsRetention(mode) {
1
+ import { DatabaseInsightsMode, PerformanceInsightRetention } from "aws-cdk-lib/aws-rds";
2
+ export * from "./dynamodb.js";
3
+ export * from "./rdsAurora.js";
4
+ export * from "./rdsAuroraGlobal.js";
5
+ export * from "./rdsDefaults.js";
6
+ export * from "./rdsHelpers.js";
7
+ export * from "./rdsInstance.js";
8
+ export * from "./rdsProxyOutput.js";
9
+ export function getDatabaseInsightsRetention(mode) {
28
10
  return mode === "advanced"
29
- ? aws_rds_1.PerformanceInsightRetention.MONTHS_15
30
- : aws_rds_1.PerformanceInsightRetention.DEFAULT;
11
+ ? PerformanceInsightRetention.MONTHS_15
12
+ : PerformanceInsightRetention.DEFAULT;
31
13
  }
32
- function getCdkDatabaseInsightsMode(mode) {
14
+ export function getCdkDatabaseInsightsMode(mode) {
33
15
  return mode === "advanced"
34
- ? aws_rds_1.DatabaseInsightsMode.ADVANCED
35
- : aws_rds_1.DatabaseInsightsMode.STANDARD;
16
+ ? DatabaseInsightsMode.ADVANCED
17
+ : DatabaseInsightsMode.STANDARD;
36
18
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9kYXRhYmFzZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBYUEsb0VBTUM7QUFFRCxnRUFNQztBQTNCRCxpREFHNkI7QUFFN0IsNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1QixvREFBa0M7QUFDbEMsZ0RBQThCO0FBQzlCLCtDQUE2QjtBQUM3QixnREFBOEI7QUFDOUIsbURBQWlDO0FBRWpDLFNBQWdCLDRCQUE0QixDQUMxQyxJQUE2QjtJQUU3QixPQUFPLElBQUksS0FBSyxVQUFVO1FBQ3hCLENBQUMsQ0FBQyxxQ0FBMkIsQ0FBQyxTQUFTO1FBQ3ZDLENBQUMsQ0FBQyxxQ0FBMkIsQ0FBQyxPQUFPLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQWdCLDBCQUEwQixDQUN4QyxJQUE2QjtJQUU3QixPQUFPLElBQUksS0FBSyxVQUFVO1FBQ3hCLENBQUMsQ0FBQyw4QkFBb0IsQ0FBQyxRQUFRO1FBQy9CLENBQUMsQ0FBQyw4QkFBb0IsQ0FBQyxRQUFRLENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERhdGFiYXNlSW5zaWdodHNNb2RlLFxuICBQZXJmb3JtYW5jZUluc2lnaHRSZXRlbnRpb25cbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vZHluYW1vZGJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jkc0F1cm9yYVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmRzQXVyb3JhR2xvYmFsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZHNEZWZhdWx0c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmRzSGVscGVyc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmRzSW5zdGFuY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jkc1Byb3h5T3V0cHV0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhYmFzZUluc2lnaHRzUmV0ZW50aW9uKFxuICBtb2RlOiBcInN0YW5kYXJkXCIgfCBcImFkdmFuY2VkXCJcbik6IFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbiB7XG4gIHJldHVybiBtb2RlID09PSBcImFkdmFuY2VkXCJcbiAgICA/IFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5NT05USFNfMTVcbiAgICA6IFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbi5ERUZBVUxUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2RrRGF0YWJhc2VJbnNpZ2h0c01vZGUoXG4gIG1vZGU6IFwic3RhbmRhcmRcIiB8IFwiYWR2YW5jZWRcIlxuKTogRGF0YWJhc2VJbnNpZ2h0c01vZGUge1xuICByZXR1cm4gbW9kZSA9PT0gXCJhZHZhbmNlZFwiXG4gICAgPyBEYXRhYmFzZUluc2lnaHRzTW9kZS5BRFZBTkNFRFxuICAgIDogRGF0YWJhc2VJbnNpZ2h0c01vZGUuU1RBTkRBUkQ7XG59XG4iXX0=