terraconstructs 0.0.8

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 (680) hide show
  1. package/.envrc +5 -0
  2. package/.jsii +79780 -0
  3. package/.mise.toml +8 -0
  4. package/.nvmrc +1 -0
  5. package/.terraform-version +1 -0
  6. package/.terraform.d/plugin-cache/.gitignore +5 -0
  7. package/LICENSE +674 -0
  8. package/NOTICE.txt +12 -0
  9. package/README.md +42 -0
  10. package/bun.lockb +0 -0
  11. package/go.mod +158 -0
  12. package/go.sum +1206 -0
  13. package/lib/aws/arn.d.ts +187 -0
  14. package/lib/aws/arn.js +383 -0
  15. package/lib/aws/aws-construct.d.ts +76 -0
  16. package/lib/aws/aws-construct.js +38 -0
  17. package/lib/aws/aws-stack.d.ts +201 -0
  18. package/lib/aws/aws-stack.js +303 -0
  19. package/lib/aws/cloudwatch/actions/ec2.d.ts +35 -0
  20. package/lib/aws/cloudwatch/actions/ec2.js +48 -0
  21. package/lib/aws/cloudwatch/actions/index.d.ts +2 -0
  22. package/lib/aws/cloudwatch/actions/index.js +24 -0
  23. package/lib/aws/cloudwatch/actions/lambda.d.ts +16 -0
  24. package/lib/aws/cloudwatch/actions/lambda.js +48 -0
  25. package/lib/aws/cloudwatch/alarm-action.d.ts +23 -0
  26. package/lib/aws/cloudwatch/alarm-action.js +4 -0
  27. package/lib/aws/cloudwatch/alarm-base.d.ts +84 -0
  28. package/lib/aws/cloudwatch/alarm-base.js +64 -0
  29. package/lib/aws/cloudwatch/alarm-rule.d.ts +61 -0
  30. package/lib/aws/cloudwatch/alarm-rule.js +116 -0
  31. package/lib/aws/cloudwatch/alarm-status-widget.d.ts +77 -0
  32. package/lib/aws/cloudwatch/alarm-status-widget.js +62 -0
  33. package/lib/aws/cloudwatch/alarm.d.ts +158 -0
  34. package/lib/aws/cloudwatch/alarm.js +410 -0
  35. package/lib/aws/cloudwatch/composite-alarm.d.ts +88 -0
  36. package/lib/aws/cloudwatch/composite-alarm.js +98 -0
  37. package/lib/aws/cloudwatch/dashboard.d.ts +137 -0
  38. package/lib/aws/cloudwatch/dashboard.js +141 -0
  39. package/lib/aws/cloudwatch/data-protection-policy.d.ts +184 -0
  40. package/lib/aws/cloudwatch/data-protection-policy.js +246 -0
  41. package/lib/aws/cloudwatch/graph.d.ts +792 -0
  42. package/lib/aws/cloudwatch/graph.js +537 -0
  43. package/lib/aws/cloudwatch/index.d.ts +26 -0
  44. package/lib/aws/cloudwatch/index.js +49 -0
  45. package/lib/aws/cloudwatch/layout.d.ts +89 -0
  46. package/lib/aws/cloudwatch/layout.js +147 -0
  47. package/lib/aws/cloudwatch/log-destinations/index.d.ts +2 -0
  48. package/lib/aws/cloudwatch/log-destinations/index.js +20 -0
  49. package/lib/aws/cloudwatch/log-destinations/kinesis.d.ts +29 -0
  50. package/lib/aws/cloudwatch/log-destinations/kinesis.js +52 -0
  51. package/lib/aws/cloudwatch/log-destinations/lambda.d.ts +22 -0
  52. package/lib/aws/cloudwatch/log-destinations/lambda.js +46 -0
  53. package/lib/aws/cloudwatch/log-group.d.ts +453 -0
  54. package/lib/aws/cloudwatch/log-group.js +350 -0
  55. package/lib/aws/cloudwatch/log-query.d.ts +91 -0
  56. package/lib/aws/cloudwatch/log-query.js +85 -0
  57. package/lib/aws/cloudwatch/log-stream.d.ts +57 -0
  58. package/lib/aws/cloudwatch/log-stream.js +57 -0
  59. package/lib/aws/cloudwatch/metric-filter.d.ts +30 -0
  60. package/lib/aws/cloudwatch/metric-filter.js +69 -0
  61. package/lib/aws/cloudwatch/metric-types.d.ts +407 -0
  62. package/lib/aws/cloudwatch/metric-types.js +151 -0
  63. package/lib/aws/cloudwatch/metric.d.ts +492 -0
  64. package/lib/aws/cloudwatch/metric.js +493 -0
  65. package/lib/aws/cloudwatch/pattern.d.ts +195 -0
  66. package/lib/aws/cloudwatch/pattern.js +412 -0
  67. package/lib/aws/cloudwatch/policy.d.ts +43 -0
  68. package/lib/aws/cloudwatch/policy.js +50 -0
  69. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.d.ts +14 -0
  70. package/lib/aws/cloudwatch/private/drop-empty-object-at-the-end-of-an-array-token.js +37 -0
  71. package/lib/aws/cloudwatch/private/env-tokens.d.ts +8 -0
  72. package/lib/aws/cloudwatch/private/env-tokens.js +48 -0
  73. package/lib/aws/cloudwatch/private/metric-util.d.ts +60 -0
  74. package/lib/aws/cloudwatch/private/metric-util.js +132 -0
  75. package/lib/aws/cloudwatch/private/object.d.ts +1 -0
  76. package/lib/aws/cloudwatch/private/object.js +18 -0
  77. package/lib/aws/cloudwatch/private/rendering.d.ts +60 -0
  78. package/lib/aws/cloudwatch/private/rendering.js +181 -0
  79. package/lib/aws/cloudwatch/private/statistic.d.ts +51 -0
  80. package/lib/aws/cloudwatch/private/statistic.js +176 -0
  81. package/lib/aws/cloudwatch/query-definition.d.ts +150 -0
  82. package/lib/aws/cloudwatch/query-definition.js +114 -0
  83. package/lib/aws/cloudwatch/stats.d.ts +150 -0
  84. package/lib/aws/cloudwatch/stats.js +207 -0
  85. package/lib/aws/cloudwatch/subscription-filter.d.ts +75 -0
  86. package/lib/aws/cloudwatch/subscription-filter.js +51 -0
  87. package/lib/aws/cloudwatch/text.d.ts +52 -0
  88. package/lib/aws/cloudwatch/text.js +53 -0
  89. package/lib/aws/cloudwatch/variable.d.ts +156 -0
  90. package/lib/aws/cloudwatch/variable.js +156 -0
  91. package/lib/aws/cloudwatch/widget.d.ts +62 -0
  92. package/lib/aws/cloudwatch/widget.js +45 -0
  93. package/lib/aws/compute/activity.d.ts +81 -0
  94. package/lib/aws/compute/activity.js +132 -0
  95. package/lib/aws/compute/architecture.d.ts +33 -0
  96. package/lib/aws/compute/architecture.js +42 -0
  97. package/lib/aws/compute/chain.d.ts +52 -0
  98. package/lib/aws/compute/chain.js +68 -0
  99. package/lib/aws/compute/condition.d.ts +202 -0
  100. package/lib/aws/compute/condition.js +409 -0
  101. package/lib/aws/compute/event-invoke-config.d.ts +74 -0
  102. package/lib/aws/compute/event-invoke-config.js +63 -0
  103. package/lib/aws/compute/event-source-filter.d.ts +64 -0
  104. package/lib/aws/compute/event-source-filter.js +86 -0
  105. package/lib/aws/compute/event-source-mapping.d.ts +310 -0
  106. package/lib/aws/compute/event-source-mapping.js +267 -0
  107. package/lib/aws/compute/event-sources/index.d.ts +4 -0
  108. package/lib/aws/compute/event-sources/index.js +28 -0
  109. package/lib/aws/compute/event-sources/s3-onfailure-destination.d.ts +13 -0
  110. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +26 -0
  111. package/lib/aws/compute/event-sources/s3.d.ts +24 -0
  112. package/lib/aws/compute/event-sources/s3.js +25 -0
  113. package/lib/aws/compute/event-sources/sqs-dlq.d.ts +13 -0
  114. package/lib/aws/compute/event-sources/sqs-dlq.js +26 -0
  115. package/lib/aws/compute/event-sources/sqs.d.ts +75 -0
  116. package/lib/aws/compute/event-sources/sqs.js +84 -0
  117. package/lib/aws/compute/fields.d.ts +367 -0
  118. package/lib/aws/compute/fields.js +546 -0
  119. package/lib/aws/compute/function-alias.d.ts +148 -0
  120. package/lib/aws/compute/function-alias.js +176 -0
  121. package/lib/aws/compute/function-base.d.ts +314 -0
  122. package/lib/aws/compute/function-base.js +421 -0
  123. package/lib/aws/compute/function-destination.d.ts +42 -0
  124. package/lib/aws/compute/function-destination.js +18 -0
  125. package/lib/aws/compute/function-destinations/event-bridge.d.ts +19 -0
  126. package/lib/aws/compute/function-destinations/event-bridge.js +46 -0
  127. package/lib/aws/compute/function-destinations/function.d.ts +34 -0
  128. package/lib/aws/compute/function-destinations/function.js +55 -0
  129. package/lib/aws/compute/function-destinations/index.d.ts +3 -0
  130. package/lib/aws/compute/function-destinations/index.js +22 -0
  131. package/lib/aws/compute/function-destinations/sqs.d.ts +14 -0
  132. package/lib/aws/compute/function-destinations/sqs.js +27 -0
  133. package/lib/aws/compute/function-nodejs.d.ts +55 -0
  134. package/lib/aws/compute/function-nodejs.js +70 -0
  135. package/lib/aws/compute/function-permission.d.ts +83 -0
  136. package/lib/aws/compute/function-permission.js +3 -0
  137. package/lib/aws/compute/function-url.d.ts +210 -0
  138. package/lib/aws/compute/function-url.js +148 -0
  139. package/lib/aws/compute/function-vpc-config.generated.d.ts +36 -0
  140. package/lib/aws/compute/function-vpc-config.generated.js +3 -0
  141. package/lib/aws/compute/function.d.ts +492 -0
  142. package/lib/aws/compute/function.js +692 -0
  143. package/lib/aws/compute/index.d.ts +42 -0
  144. package/lib/aws/compute/index.js +64 -0
  145. package/lib/aws/compute/private/intrinstics.d.ts +86 -0
  146. package/lib/aws/compute/private/intrinstics.js +220 -0
  147. package/lib/aws/compute/private/json-path.d.ts +57 -0
  148. package/lib/aws/compute/private/json-path.js +351 -0
  149. package/lib/aws/compute/private/util.d.ts +1 -0
  150. package/lib/aws/compute/private/util.js +38 -0
  151. package/lib/aws/compute/state-graph.d.ts +100 -0
  152. package/lib/aws/compute/state-graph.js +177 -0
  153. package/lib/aws/compute/state-machine-fragment.d.ts +61 -0
  154. package/lib/aws/compute/state-machine-fragment.js +56 -0
  155. package/lib/aws/compute/state-machine.d.ts +323 -0
  156. package/lib/aws/compute/state-machine.js +392 -0
  157. package/lib/aws/compute/states/choice.d.ts +94 -0
  158. package/lib/aws/compute/states/choice.js +81 -0
  159. package/lib/aws/compute/states/custom-state.d.ts +55 -0
  160. package/lib/aws/compute/states/custom-state.js +114 -0
  161. package/lib/aws/compute/states/distributed-map/item-batcher.d.ts +64 -0
  162. package/lib/aws/compute/states/distributed-map/item-batcher.js +58 -0
  163. package/lib/aws/compute/states/distributed-map/item-reader.d.ts +256 -0
  164. package/lib/aws/compute/states/distributed-map/item-reader.js +253 -0
  165. package/lib/aws/compute/states/distributed-map/result-writer.d.ts +41 -0
  166. package/lib/aws/compute/states/distributed-map/result-writer.js +66 -0
  167. package/lib/aws/compute/states/distributed-map.d.ts +153 -0
  168. package/lib/aws/compute/states/distributed-map.js +207 -0
  169. package/lib/aws/compute/states/fail.d.ts +74 -0
  170. package/lib/aws/compute/states/fail.js +83 -0
  171. package/lib/aws/compute/states/map-base.d.ts +145 -0
  172. package/lib/aws/compute/states/map-base.js +109 -0
  173. package/lib/aws/compute/states/map.d.ts +76 -0
  174. package/lib/aws/compute/states/map.js +110 -0
  175. package/lib/aws/compute/states/parallel.d.ts +113 -0
  176. package/lib/aws/compute/states/parallel.js +100 -0
  177. package/lib/aws/compute/states/pass.d.ts +122 -0
  178. package/lib/aws/compute/states/pass.js +99 -0
  179. package/lib/aws/compute/states/private/state-type.d.ts +13 -0
  180. package/lib/aws/compute/states/private/state-type.js +19 -0
  181. package/lib/aws/compute/states/state.d.ts +276 -0
  182. package/lib/aws/compute/states/state.js +482 -0
  183. package/lib/aws/compute/states/succeed.d.ts +51 -0
  184. package/lib/aws/compute/states/succeed.js +32 -0
  185. package/lib/aws/compute/states/task-base.d.ts +225 -0
  186. package/lib/aws/compute/states/task-base.js +160 -0
  187. package/lib/aws/compute/states/task.d.ts +127 -0
  188. package/lib/aws/compute/states/task.js +92 -0
  189. package/lib/aws/compute/states/wait.d.ts +78 -0
  190. package/lib/aws/compute/states/wait.js +90 -0
  191. package/lib/aws/compute/step-functions-task.d.ts +78 -0
  192. package/lib/aws/compute/step-functions-task.js +27 -0
  193. package/lib/aws/compute/task-credentials.d.ts +45 -0
  194. package/lib/aws/compute/task-credentials.js +52 -0
  195. package/lib/aws/compute/task-input.d.ts +86 -0
  196. package/lib/aws/compute/task-input.js +107 -0
  197. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.d.ts +73 -0
  198. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +69 -0
  199. package/lib/aws/compute/tasks/eventbridge/put-events.d.ts +74 -0
  200. package/lib/aws/compute/tasks/eventbridge/put-events.js +94 -0
  201. package/lib/aws/compute/tasks/http/invoke.d.ts +104 -0
  202. package/lib/aws/compute/tasks/http/invoke.js +117 -0
  203. package/lib/aws/compute/tasks/index.d.ts +7 -0
  204. package/lib/aws/compute/tasks/index.js +42 -0
  205. package/lib/aws/compute/tasks/lambda/invoke.d.ts +106 -0
  206. package/lib/aws/compute/tasks/lambda/invoke.js +125 -0
  207. package/lib/aws/compute/tasks/private/task-utils.d.ts +8 -0
  208. package/lib/aws/compute/tasks/private/task-utils.js +36 -0
  209. package/lib/aws/compute/tasks/resource-arn-suffix.d.ts +3 -0
  210. package/lib/aws/compute/tasks/resource-arn-suffix.js +25 -0
  211. package/lib/aws/compute/tasks/sqs/send-message.d.ts +62 -0
  212. package/lib/aws/compute/tasks/sqs/send-message.js +70 -0
  213. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.d.ts +36 -0
  214. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +45 -0
  215. package/lib/aws/compute/tasks/stepfunctions/start-execution.d.ts +63 -0
  216. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +123 -0
  217. package/lib/aws/compute/types.d.ts +214 -0
  218. package/lib/aws/compute/types.js +103 -0
  219. package/lib/aws/compute/util.d.ts +12 -0
  220. package/lib/aws/compute/util.js +29 -0
  221. package/lib/aws/edge/certificate.d.ts +144 -0
  222. package/lib/aws/edge/certificate.js +191 -0
  223. package/lib/aws/edge/distribution.d.ts +505 -0
  224. package/lib/aws/edge/distribution.js +444 -0
  225. package/lib/aws/edge/dns-alias-record-targets.d.ts +29 -0
  226. package/lib/aws/edge/dns-alias-record-targets.js +46 -0
  227. package/lib/aws/edge/dns-record.d.ts +536 -0
  228. package/lib/aws/edge/dns-record.js +532 -0
  229. package/lib/aws/edge/dns-zone.d.ts +169 -0
  230. package/lib/aws/edge/dns-zone.js +149 -0
  231. package/lib/aws/edge/function.d.ts +185 -0
  232. package/lib/aws/edge/function.js +141 -0
  233. package/lib/aws/edge/index.d.ts +8 -0
  234. package/lib/aws/edge/index.js +25 -0
  235. package/lib/aws/edge/key-value-store.d.ts +162 -0
  236. package/lib/aws/edge/key-value-store.js +163 -0
  237. package/lib/aws/edge/origin.d.ts +160 -0
  238. package/lib/aws/edge/origin.js +245 -0
  239. package/lib/aws/encryption/alias.d.ts +137 -0
  240. package/lib/aws/encryption/alias.js +216 -0
  241. package/lib/aws/encryption/index.d.ts +4 -0
  242. package/lib/aws/encryption/index.js +21 -0
  243. package/lib/aws/encryption/key-lookup.d.ts +11 -0
  244. package/lib/aws/encryption/key-lookup.js +4 -0
  245. package/lib/aws/encryption/key.d.ts +461 -0
  246. package/lib/aws/encryption/key.js +586 -0
  247. package/lib/aws/encryption/private/perms.d.ts +5 -0
  248. package/lib/aws/encryption/private/perms.js +30 -0
  249. package/lib/aws/encryption/via-service-principal.d.ts +11 -0
  250. package/lib/aws/encryption/via-service-principal.js +39 -0
  251. package/lib/aws/iam/grant.d.ts +221 -0
  252. package/lib/aws/iam/grant.js +239 -0
  253. package/lib/aws/iam/identity-base.d.ts +20 -0
  254. package/lib/aws/iam/identity-base.js +3 -0
  255. package/lib/aws/iam/index.d.ts +16 -0
  256. package/lib/aws/iam/index.js +34 -0
  257. package/lib/aws/iam/managed-policy.d.ts +227 -0
  258. package/lib/aws/iam/managed-policy.js +237 -0
  259. package/lib/aws/iam/oidc-provider.d.ts +120 -0
  260. package/lib/aws/iam/oidc-provider.js +82 -0
  261. package/lib/aws/iam/policy-document-config.generated.d.ts +78 -0
  262. package/lib/aws/iam/policy-document-config.generated.js +3 -0
  263. package/lib/aws/iam/policy-document.d.ts +150 -0
  264. package/lib/aws/iam/policy-document.js +172 -0
  265. package/lib/aws/iam/policy-statement-props.generated.d.ts +55 -0
  266. package/lib/aws/iam/policy-statement-props.generated.js +3 -0
  267. package/lib/aws/iam/policy-statement.d.ts +451 -0
  268. package/lib/aws/iam/policy-statement.js +947 -0
  269. package/lib/aws/iam/policy.d.ts +122 -0
  270. package/lib/aws/iam/policy.js +192 -0
  271. package/lib/aws/iam/principals.d.ts +668 -0
  272. package/lib/aws/iam/principals.js +1032 -0
  273. package/lib/aws/iam/private/adapter.d.ts +21 -0
  274. package/lib/aws/iam/private/adapter.js +51 -0
  275. package/lib/aws/iam/private/assume-role-policy.d.ts +8 -0
  276. package/lib/aws/iam/private/assume-role-policy.js +27 -0
  277. package/lib/aws/iam/private/comparable-principal.d.ts +6 -0
  278. package/lib/aws/iam/private/comparable-principal.js +20 -0
  279. package/lib/aws/iam/private/immutable-role.d.ts +43 -0
  280. package/lib/aws/iam/private/immutable-role.js +76 -0
  281. package/lib/aws/iam/private/imported-role.d.ts +49 -0
  282. package/lib/aws/iam/private/imported-role.js +103 -0
  283. package/lib/aws/iam/private/merge-statements.d.ts +44 -0
  284. package/lib/aws/iam/private/merge-statements.js +214 -0
  285. package/lib/aws/iam/private/postprocess-policy-document.d.ts +15 -0
  286. package/lib/aws/iam/private/postprocess-policy-document.js +102 -0
  287. package/lib/aws/iam/private/util.d.ts +37 -0
  288. package/lib/aws/iam/private/util.js +87 -0
  289. package/lib/aws/iam/role.d.ts +425 -0
  290. package/lib/aws/iam/role.js +407 -0
  291. package/lib/aws/iam/saml-provider.d.ts +79 -0
  292. package/lib/aws/iam/saml-provider.js +79 -0
  293. package/lib/aws/iam/unknown-principal.d.ts +32 -0
  294. package/lib/aws/iam/unknown-principal.js +45 -0
  295. package/lib/aws/iam/utils.d.ts +12 -0
  296. package/lib/aws/iam/utils.js +41 -0
  297. package/lib/aws/index.d.ts +13 -0
  298. package/lib/aws/index.js +34 -0
  299. package/lib/aws/log-retention.d.ts +97 -0
  300. package/lib/aws/log-retention.js +103 -0
  301. package/lib/aws/network/index.d.ts +4 -0
  302. package/lib/aws/network/index.js +21 -0
  303. package/lib/aws/network/network.d.ts +77 -0
  304. package/lib/aws/network/network.js +3 -0
  305. package/lib/aws/network/simple-ipv4-vpc.d.ts +84 -0
  306. package/lib/aws/network/simple-ipv4-vpc.js +236 -0
  307. package/lib/aws/network/subnet-group.d.ts +42 -0
  308. package/lib/aws/network/subnet-group.js +72 -0
  309. package/lib/aws/network/subnet.d.ts +95 -0
  310. package/lib/aws/network/subnet.js +123 -0
  311. package/lib/aws/notify/archive.d.ts +77 -0
  312. package/lib/aws/notify/archive.js +62 -0
  313. package/lib/aws/notify/connection.d.ts +276 -0
  314. package/lib/aws/notify/connection.js +261 -0
  315. package/lib/aws/notify/event-bus.d.ts +298 -0
  316. package/lib/aws/notify/event-bus.js +326 -0
  317. package/lib/aws/notify/event-pattern.d.ts +220 -0
  318. package/lib/aws/notify/event-pattern.js +197 -0
  319. package/lib/aws/notify/index.d.ts +15 -0
  320. package/lib/aws/notify/index.js +35 -0
  321. package/lib/aws/notify/input.d.ts +126 -0
  322. package/lib/aws/notify/input.js +282 -0
  323. package/lib/aws/notify/kinesis-canned-metrics.generated.d.ts +68 -0
  324. package/lib/aws/notify/kinesis-canned-metrics.generated.js +103 -0
  325. package/lib/aws/notify/kinesis-fixed-canned-metrics.d.ts +195 -0
  326. package/lib/aws/notify/kinesis-fixed-canned-metrics.js +155 -0
  327. package/lib/aws/notify/kinesis-stream.d.ts +705 -0
  328. package/lib/aws/notify/kinesis-stream.js +541 -0
  329. package/lib/aws/notify/on-event-options.d.ts +54 -0
  330. package/lib/aws/notify/on-event-options.js +3 -0
  331. package/lib/aws/notify/queue-config.generated.d.ts +85 -0
  332. package/lib/aws/notify/queue-config.generated.js +3 -0
  333. package/lib/aws/notify/queue-policy.d.ts +35 -0
  334. package/lib/aws/notify/queue-policy.js +39 -0
  335. package/lib/aws/notify/queue.d.ts +355 -0
  336. package/lib/aws/notify/queue.js +305 -0
  337. package/lib/aws/notify/resource-policy.d.ts +41 -0
  338. package/lib/aws/notify/resource-policy.js +43 -0
  339. package/lib/aws/notify/rule.d.ts +153 -0
  340. package/lib/aws/notify/rule.js +227 -0
  341. package/lib/aws/notify/schedule.d.ts +83 -0
  342. package/lib/aws/notify/schedule.js +116 -0
  343. package/lib/aws/notify/target.d.ts +102 -0
  344. package/lib/aws/notify/target.js +3 -0
  345. package/lib/aws/notify/targets/event-bus.d.ts +39 -0
  346. package/lib/aws/notify/targets/event-bus.js +40 -0
  347. package/lib/aws/notify/targets/function.d.ts +31 -0
  348. package/lib/aws/notify/targets/function.js +36 -0
  349. package/lib/aws/notify/targets/index.d.ts +6 -0
  350. package/lib/aws/notify/targets/index.js +37 -0
  351. package/lib/aws/notify/targets/log-group.d.ts +89 -0
  352. package/lib/aws/notify/targets/log-group.js +110 -0
  353. package/lib/aws/notify/targets/sqs.d.ts +45 -0
  354. package/lib/aws/notify/targets/sqs.js +73 -0
  355. package/lib/aws/notify/targets/state-machine.d.ts +36 -0
  356. package/lib/aws/notify/targets/state-machine.js +39 -0
  357. package/lib/aws/notify/targets/util.d.ts +71 -0
  358. package/lib/aws/notify/targets/util.js +130 -0
  359. package/lib/aws/notify/util.d.ts +13 -0
  360. package/lib/aws/notify/util.js +69 -0
  361. package/lib/aws/provider-config.generated.d.ts +220 -0
  362. package/lib/aws/provider-config.generated.js +3 -0
  363. package/lib/aws/storage/bucket-destination.d.ts +41 -0
  364. package/lib/aws/storage/bucket-destination.js +13 -0
  365. package/lib/aws/storage/bucket-notifications.d.ts +58 -0
  366. package/lib/aws/storage/bucket-notifications.js +169 -0
  367. package/lib/aws/storage/bucket-perms.d.ts +9 -0
  368. package/lib/aws/storage/bucket-perms.js +33 -0
  369. package/lib/aws/storage/bucket-policy.d.ts +51 -0
  370. package/lib/aws/storage/bucket-policy.js +53 -0
  371. package/lib/aws/storage/bucket-source.d.ts +41 -0
  372. package/lib/aws/storage/bucket-source.js +79 -0
  373. package/lib/aws/storage/bucket.d.ts +941 -0
  374. package/lib/aws/storage/bucket.js +869 -0
  375. package/lib/aws/storage/cors-config.generated.d.ts +57 -0
  376. package/lib/aws/storage/cors-config.generated.js +3 -0
  377. package/lib/aws/storage/cors-rule-config.generated.d.ts +38 -0
  378. package/lib/aws/storage/cors-rule-config.generated.js +3 -0
  379. package/lib/aws/storage/index.d.ts +12 -0
  380. package/lib/aws/storage/index.js +31 -0
  381. package/lib/aws/storage/lifecycle-config.generated.d.ts +55 -0
  382. package/lib/aws/storage/lifecycle-config.generated.js +3 -0
  383. package/lib/aws/storage/notification-targets/function.d.ts +11 -0
  384. package/lib/aws/storage/notification-targets/function.js +48 -0
  385. package/lib/aws/storage/notification-targets/index.d.ts +2 -0
  386. package/lib/aws/storage/notification-targets/index.js +21 -0
  387. package/lib/aws/storage/notification-targets/queue.d.ts +15 -0
  388. package/lib/aws/storage/notification-targets/queue.js +58 -0
  389. package/lib/aws/storage/origin-access-identity.d.ts +91 -0
  390. package/lib/aws/storage/origin-access-identity.js +76 -0
  391. package/lib/aws/storage/util.d.ts +40 -0
  392. package/lib/aws/storage/util.js +85 -0
  393. package/lib/aws/storage/website-config.generated.d.ts +73 -0
  394. package/lib/aws/storage/website-config.generated.js +3 -0
  395. package/lib/aws/util.d.ts +4 -0
  396. package/lib/aws/util.js +25 -0
  397. package/lib/construct-base.d.ts +69 -0
  398. package/lib/construct-base.js +89 -0
  399. package/lib/duration.d.ts +160 -0
  400. package/lib/duration.js +327 -0
  401. package/lib/index.d.ts +5 -0
  402. package/lib/index.js +24 -0
  403. package/lib/private/index.d.ts +2 -0
  404. package/lib/private/index.js +19 -0
  405. package/lib/private/terraform-dependables-aspect.d.ts +20 -0
  406. package/lib/private/terraform-dependables-aspect.js +95 -0
  407. package/lib/private/unique-resource-name.d.ts +9 -0
  408. package/lib/private/unique-resource-name.js +145 -0
  409. package/lib/size.d.ts +146 -0
  410. package/lib/size.js +220 -0
  411. package/lib/stack-base.d.ts +188 -0
  412. package/lib/stack-base.js +183 -0
  413. package/lib/token.d.ts +32 -0
  414. package/lib/token.js +54 -0
  415. package/node_modules/camel-case/LICENSE +21 -0
  416. package/node_modules/camel-case/README.md +47 -0
  417. package/node_modules/camel-case/dist/index.d.ts +5 -0
  418. package/node_modules/camel-case/dist/index.js +23 -0
  419. package/node_modules/camel-case/dist/index.js.map +1 -0
  420. package/node_modules/camel-case/dist/index.spec.d.ts +1 -0
  421. package/node_modules/camel-case/dist/index.spec.js +26 -0
  422. package/node_modules/camel-case/dist/index.spec.js.map +1 -0
  423. package/node_modules/camel-case/dist.es2015/index.d.ts +5 -0
  424. package/node_modules/camel-case/dist.es2015/index.js +17 -0
  425. package/node_modules/camel-case/dist.es2015/index.js.map +1 -0
  426. package/node_modules/camel-case/dist.es2015/index.spec.d.ts +1 -0
  427. package/node_modules/camel-case/dist.es2015/index.spec.js +24 -0
  428. package/node_modules/camel-case/dist.es2015/index.spec.js.map +1 -0
  429. package/node_modules/camel-case/package.json +89 -0
  430. package/node_modules/capital-case/LICENSE +21 -0
  431. package/node_modules/capital-case/README.md +37 -0
  432. package/node_modules/capital-case/dist/index.d.ts +4 -0
  433. package/node_modules/capital-case/dist/index.js +16 -0
  434. package/node_modules/capital-case/dist/index.js.map +1 -0
  435. package/node_modules/capital-case/dist/index.spec.d.ts +1 -0
  436. package/node_modules/capital-case/dist/index.spec.js +24 -0
  437. package/node_modules/capital-case/dist/index.spec.js.map +1 -0
  438. package/node_modules/capital-case/dist.es2015/index.d.ts +4 -0
  439. package/node_modules/capital-case/dist.es2015/index.js +11 -0
  440. package/node_modules/capital-case/dist.es2015/index.js.map +1 -0
  441. package/node_modules/capital-case/dist.es2015/index.spec.d.ts +1 -0
  442. package/node_modules/capital-case/dist.es2015/index.spec.js +22 -0
  443. package/node_modules/capital-case/dist.es2015/index.spec.js.map +1 -0
  444. package/node_modules/capital-case/package.json +90 -0
  445. package/node_modules/change-case/LICENSE +21 -0
  446. package/node_modules/change-case/README.md +44 -0
  447. package/node_modules/change-case/dist/index.d.ts +11 -0
  448. package/node_modules/change-case/dist/index.js +15 -0
  449. package/node_modules/change-case/dist/index.js.map +1 -0
  450. package/node_modules/change-case/dist/index.spec.d.ts +1 -0
  451. package/node_modules/change-case/dist/index.spec.js +9 -0
  452. package/node_modules/change-case/dist/index.spec.js.map +1 -0
  453. package/node_modules/change-case/dist.es2015/index.d.ts +11 -0
  454. package/node_modules/change-case/dist.es2015/index.js +12 -0
  455. package/node_modules/change-case/dist.es2015/index.js.map +1 -0
  456. package/node_modules/change-case/dist.es2015/index.spec.d.ts +1 -0
  457. package/node_modules/change-case/dist.es2015/index.spec.js +7 -0
  458. package/node_modules/change-case/dist.es2015/index.spec.js.map +1 -0
  459. package/node_modules/change-case/package.json +101 -0
  460. package/node_modules/constant-case/LICENSE +21 -0
  461. package/node_modules/constant-case/README.md +37 -0
  462. package/node_modules/constant-case/dist/index.d.ts +3 -0
  463. package/node_modules/constant-case/dist/index.js +12 -0
  464. package/node_modules/constant-case/dist/index.js.map +1 -0
  465. package/node_modules/constant-case/dist/index.spec.d.ts +1 -0
  466. package/node_modules/constant-case/dist/index.spec.js +26 -0
  467. package/node_modules/constant-case/dist/index.spec.js.map +1 -0
  468. package/node_modules/constant-case/dist.es2015/index.d.ts +3 -0
  469. package/node_modules/constant-case/dist.es2015/index.js +8 -0
  470. package/node_modules/constant-case/dist.es2015/index.js.map +1 -0
  471. package/node_modules/constant-case/dist.es2015/index.spec.d.ts +1 -0
  472. package/node_modules/constant-case/dist.es2015/index.spec.js +24 -0
  473. package/node_modules/constant-case/dist.es2015/index.spec.js.map +1 -0
  474. package/node_modules/constant-case/package.json +90 -0
  475. package/node_modules/dot-case/LICENSE +21 -0
  476. package/node_modules/dot-case/README.md +37 -0
  477. package/node_modules/dot-case/dist/index.d.ts +3 -0
  478. package/node_modules/dot-case/dist/index.js +11 -0
  479. package/node_modules/dot-case/dist/index.js.map +1 -0
  480. package/node_modules/dot-case/dist/index.spec.d.ts +1 -0
  481. package/node_modules/dot-case/dist/index.spec.js +26 -0
  482. package/node_modules/dot-case/dist/index.spec.js.map +1 -0
  483. package/node_modules/dot-case/dist.es2015/index.d.ts +3 -0
  484. package/node_modules/dot-case/dist.es2015/index.js +7 -0
  485. package/node_modules/dot-case/dist.es2015/index.js.map +1 -0
  486. package/node_modules/dot-case/dist.es2015/index.spec.d.ts +1 -0
  487. package/node_modules/dot-case/dist.es2015/index.spec.js +24 -0
  488. package/node_modules/dot-case/dist.es2015/index.spec.js.map +1 -0
  489. package/node_modules/dot-case/package.json +89 -0
  490. package/node_modules/esbuild-wasm/LICENSE.md +21 -0
  491. package/node_modules/esbuild-wasm/README.md +3 -0
  492. package/node_modules/esbuild-wasm/bin/esbuild +91 -0
  493. package/node_modules/esbuild-wasm/esbuild.wasm +0 -0
  494. package/node_modules/esbuild-wasm/esm/browser.d.ts +705 -0
  495. package/node_modules/esbuild-wasm/esm/browser.js +2370 -0
  496. package/node_modules/esbuild-wasm/esm/browser.min.js +20 -0
  497. package/node_modules/esbuild-wasm/lib/browser.d.ts +705 -0
  498. package/node_modules/esbuild-wasm/lib/browser.js +2415 -0
  499. package/node_modules/esbuild-wasm/lib/browser.min.js +22 -0
  500. package/node_modules/esbuild-wasm/lib/main.d.ts +705 -0
  501. package/node_modules/esbuild-wasm/lib/main.js +2051 -0
  502. package/node_modules/esbuild-wasm/package.json +19 -0
  503. package/node_modules/esbuild-wasm/wasm_exec.js +561 -0
  504. package/node_modules/esbuild-wasm/wasm_exec_node.js +39 -0
  505. package/node_modules/header-case/LICENSE +21 -0
  506. package/node_modules/header-case/README.md +37 -0
  507. package/node_modules/header-case/dist/index.d.ts +3 -0
  508. package/node_modules/header-case/dist/index.js +11 -0
  509. package/node_modules/header-case/dist/index.js.map +1 -0
  510. package/node_modules/header-case/dist/index.spec.d.ts +1 -0
  511. package/node_modules/header-case/dist/index.spec.js +24 -0
  512. package/node_modules/header-case/dist/index.spec.js.map +1 -0
  513. package/node_modules/header-case/dist.es2015/index.d.ts +3 -0
  514. package/node_modules/header-case/dist.es2015/index.js +7 -0
  515. package/node_modules/header-case/dist.es2015/index.js.map +1 -0
  516. package/node_modules/header-case/dist.es2015/index.spec.d.ts +1 -0
  517. package/node_modules/header-case/dist.es2015/index.spec.js +22 -0
  518. package/node_modules/header-case/dist.es2015/index.spec.js.map +1 -0
  519. package/node_modules/header-case/package.json +89 -0
  520. package/node_modules/lower-case/LICENSE +21 -0
  521. package/node_modules/lower-case/README.md +35 -0
  522. package/node_modules/lower-case/dist/index.d.ts +8 -0
  523. package/node_modules/lower-case/dist/index.js +53 -0
  524. package/node_modules/lower-case/dist/index.js.map +1 -0
  525. package/node_modules/lower-case/dist/index.spec.d.ts +1 -0
  526. package/node_modules/lower-case/dist/index.spec.js +36 -0
  527. package/node_modules/lower-case/dist/index.spec.js.map +1 -0
  528. package/node_modules/lower-case/dist.es2015/index.d.ts +8 -0
  529. package/node_modules/lower-case/dist.es2015/index.js +48 -0
  530. package/node_modules/lower-case/dist.es2015/index.js.map +1 -0
  531. package/node_modules/lower-case/dist.es2015/index.spec.d.ts +1 -0
  532. package/node_modules/lower-case/dist.es2015/index.spec.js +34 -0
  533. package/node_modules/lower-case/dist.es2015/index.spec.js.map +1 -0
  534. package/node_modules/lower-case/package.json +87 -0
  535. package/node_modules/mime-db/HISTORY.md +507 -0
  536. package/node_modules/mime-db/LICENSE +23 -0
  537. package/node_modules/mime-db/README.md +100 -0
  538. package/node_modules/mime-db/db.json +8519 -0
  539. package/node_modules/mime-db/index.js +12 -0
  540. package/node_modules/mime-db/package.json +60 -0
  541. package/node_modules/mime-types/HISTORY.md +397 -0
  542. package/node_modules/mime-types/LICENSE +23 -0
  543. package/node_modules/mime-types/README.md +113 -0
  544. package/node_modules/mime-types/index.js +188 -0
  545. package/node_modules/mime-types/package.json +44 -0
  546. package/node_modules/no-case/LICENSE +21 -0
  547. package/node_modules/no-case/README.md +37 -0
  548. package/node_modules/no-case/dist/index.d.ts +10 -0
  549. package/node_modules/no-case/dist/index.js +35 -0
  550. package/node_modules/no-case/dist/index.js.map +1 -0
  551. package/node_modules/no-case/dist/index.spec.d.ts +1 -0
  552. package/node_modules/no-case/dist/index.spec.js +59 -0
  553. package/node_modules/no-case/dist/index.spec.js.map +1 -0
  554. package/node_modules/no-case/dist.es2015/index.d.ts +10 -0
  555. package/node_modules/no-case/dist.es2015/index.js +31 -0
  556. package/node_modules/no-case/dist.es2015/index.js.map +1 -0
  557. package/node_modules/no-case/dist.es2015/index.spec.d.ts +1 -0
  558. package/node_modules/no-case/dist.es2015/index.spec.js +57 -0
  559. package/node_modules/no-case/dist.es2015/index.spec.js.map +1 -0
  560. package/node_modules/no-case/package.json +85 -0
  561. package/node_modules/param-case/LICENSE +21 -0
  562. package/node_modules/param-case/README.md +37 -0
  563. package/node_modules/param-case/dist/index.d.ts +3 -0
  564. package/node_modules/param-case/dist/index.js +11 -0
  565. package/node_modules/param-case/dist/index.js.map +1 -0
  566. package/node_modules/param-case/dist/index.spec.d.ts +1 -0
  567. package/node_modules/param-case/dist/index.spec.js +24 -0
  568. package/node_modules/param-case/dist/index.spec.js.map +1 -0
  569. package/node_modules/param-case/dist.es2015/index.d.ts +3 -0
  570. package/node_modules/param-case/dist.es2015/index.js +7 -0
  571. package/node_modules/param-case/dist.es2015/index.js.map +1 -0
  572. package/node_modules/param-case/dist.es2015/index.spec.d.ts +1 -0
  573. package/node_modules/param-case/dist.es2015/index.spec.js +22 -0
  574. package/node_modules/param-case/dist.es2015/index.spec.js.map +1 -0
  575. package/node_modules/param-case/package.json +91 -0
  576. package/node_modules/pascal-case/LICENSE +21 -0
  577. package/node_modules/pascal-case/README.md +47 -0
  578. package/node_modules/pascal-case/dist/index.d.ts +5 -0
  579. package/node_modules/pascal-case/dist/index.js +24 -0
  580. package/node_modules/pascal-case/dist/index.js.map +1 -0
  581. package/node_modules/pascal-case/dist/index.spec.d.ts +1 -0
  582. package/node_modules/pascal-case/dist/index.spec.js +25 -0
  583. package/node_modules/pascal-case/dist/index.spec.js.map +1 -0
  584. package/node_modules/pascal-case/dist.es2015/index.d.ts +5 -0
  585. package/node_modules/pascal-case/dist.es2015/index.js +18 -0
  586. package/node_modules/pascal-case/dist.es2015/index.js.map +1 -0
  587. package/node_modules/pascal-case/dist.es2015/index.spec.d.ts +1 -0
  588. package/node_modules/pascal-case/dist.es2015/index.spec.js +23 -0
  589. package/node_modules/pascal-case/dist.es2015/index.spec.js.map +1 -0
  590. package/node_modules/pascal-case/package.json +90 -0
  591. package/node_modules/path-case/LICENSE +21 -0
  592. package/node_modules/path-case/README.md +37 -0
  593. package/node_modules/path-case/dist/index.d.ts +3 -0
  594. package/node_modules/path-case/dist/index.js +11 -0
  595. package/node_modules/path-case/dist/index.js.map +1 -0
  596. package/node_modules/path-case/dist/index.spec.d.ts +1 -0
  597. package/node_modules/path-case/dist/index.spec.js +24 -0
  598. package/node_modules/path-case/dist/index.spec.js.map +1 -0
  599. package/node_modules/path-case/dist.es2015/index.d.ts +3 -0
  600. package/node_modules/path-case/dist.es2015/index.js +7 -0
  601. package/node_modules/path-case/dist.es2015/index.js.map +1 -0
  602. package/node_modules/path-case/dist.es2015/index.spec.d.ts +1 -0
  603. package/node_modules/path-case/dist.es2015/index.spec.js +22 -0
  604. package/node_modules/path-case/dist.es2015/index.spec.js.map +1 -0
  605. package/node_modules/path-case/package.json +88 -0
  606. package/node_modules/sentence-case/LICENSE +21 -0
  607. package/node_modules/sentence-case/README.md +37 -0
  608. package/node_modules/sentence-case/dist/index.d.ts +4 -0
  609. package/node_modules/sentence-case/dist/index.js +19 -0
  610. package/node_modules/sentence-case/dist/index.js.map +1 -0
  611. package/node_modules/sentence-case/dist/index.spec.d.ts +1 -0
  612. package/node_modules/sentence-case/dist/index.spec.js +24 -0
  613. package/node_modules/sentence-case/dist/index.spec.js.map +1 -0
  614. package/node_modules/sentence-case/dist.es2015/index.d.ts +4 -0
  615. package/node_modules/sentence-case/dist.es2015/index.js +14 -0
  616. package/node_modules/sentence-case/dist.es2015/index.js.map +1 -0
  617. package/node_modules/sentence-case/dist.es2015/index.spec.d.ts +1 -0
  618. package/node_modules/sentence-case/dist.es2015/index.spec.js +22 -0
  619. package/node_modules/sentence-case/dist.es2015/index.spec.js.map +1 -0
  620. package/node_modules/sentence-case/package.json +89 -0
  621. package/node_modules/snake-case/LICENSE +21 -0
  622. package/node_modules/snake-case/README.md +37 -0
  623. package/node_modules/snake-case/dist/index.d.ts +3 -0
  624. package/node_modules/snake-case/dist/index.js +11 -0
  625. package/node_modules/snake-case/dist/index.js.map +1 -0
  626. package/node_modules/snake-case/dist/index.spec.d.ts +1 -0
  627. package/node_modules/snake-case/dist/index.spec.js +25 -0
  628. package/node_modules/snake-case/dist/index.spec.js.map +1 -0
  629. package/node_modules/snake-case/dist.es2015/index.d.ts +3 -0
  630. package/node_modules/snake-case/dist.es2015/index.js +7 -0
  631. package/node_modules/snake-case/dist.es2015/index.js.map +1 -0
  632. package/node_modules/snake-case/dist.es2015/index.spec.d.ts +1 -0
  633. package/node_modules/snake-case/dist.es2015/index.spec.js +23 -0
  634. package/node_modules/snake-case/dist.es2015/index.spec.js.map +1 -0
  635. package/node_modules/snake-case/package.json +90 -0
  636. package/node_modules/tslib/CopyrightNotice.txt +15 -0
  637. package/node_modules/tslib/LICENSE.txt +12 -0
  638. package/node_modules/tslib/README.md +164 -0
  639. package/node_modules/tslib/SECURITY.md +41 -0
  640. package/node_modules/tslib/modules/index.d.ts +37 -0
  641. package/node_modules/tslib/modules/index.js +68 -0
  642. package/node_modules/tslib/modules/package.json +3 -0
  643. package/node_modules/tslib/package.json +47 -0
  644. package/node_modules/tslib/tslib.d.ts +453 -0
  645. package/node_modules/tslib/tslib.es6.html +1 -0
  646. package/node_modules/tslib/tslib.es6.js +374 -0
  647. package/node_modules/tslib/tslib.es6.mjs +373 -0
  648. package/node_modules/tslib/tslib.html +1 -0
  649. package/node_modules/tslib/tslib.js +424 -0
  650. package/node_modules/upper-case/README.md +34 -0
  651. package/node_modules/upper-case/dist/index.d.ts +8 -0
  652. package/node_modules/upper-case/dist/index.js +49 -0
  653. package/node_modules/upper-case/dist/index.js.map +1 -0
  654. package/node_modules/upper-case/dist/index.spec.d.ts +1 -0
  655. package/node_modules/upper-case/dist/index.spec.js +34 -0
  656. package/node_modules/upper-case/dist/index.spec.js.map +1 -0
  657. package/node_modules/upper-case/dist.es2015/index.d.ts +8 -0
  658. package/node_modules/upper-case/dist.es2015/index.js +44 -0
  659. package/node_modules/upper-case/dist.es2015/index.js.map +1 -0
  660. package/node_modules/upper-case/dist.es2015/index.spec.d.ts +1 -0
  661. package/node_modules/upper-case/dist.es2015/index.spec.js +32 -0
  662. package/node_modules/upper-case/dist.es2015/index.spec.js.map +1 -0
  663. package/node_modules/upper-case/package.json +86 -0
  664. package/node_modules/upper-case-first/LICENSE +21 -0
  665. package/node_modules/upper-case-first/README.md +32 -0
  666. package/node_modules/upper-case-first/dist/index.d.ts +4 -0
  667. package/node_modules/upper-case-first/dist/index.js +11 -0
  668. package/node_modules/upper-case-first/dist/index.js.map +1 -0
  669. package/node_modules/upper-case-first/dist/index.spec.d.ts +1 -0
  670. package/node_modules/upper-case-first/dist/index.spec.js +20 -0
  671. package/node_modules/upper-case-first/dist/index.spec.js.map +1 -0
  672. package/node_modules/upper-case-first/dist.es2015/index.d.ts +4 -0
  673. package/node_modules/upper-case-first/dist.es2015/index.js +7 -0
  674. package/node_modules/upper-case-first/dist.es2015/index.js.map +1 -0
  675. package/node_modules/upper-case-first/dist.es2015/index.spec.d.ts +1 -0
  676. package/node_modules/upper-case-first/dist.es2015/index.spec.js +18 -0
  677. package/node_modules/upper-case-first/dist.es2015/index.spec.js.map +1 -0
  678. package/node_modules/upper-case-first/package.json +87 -0
  679. package/package.json +152 -0
  680. package/setup.js +2 -0
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CompositeAlarm = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const provider_aws_1 = require("@cdktf/provider-aws");
7
+ const cdktf_1 = require("cdktf");
8
+ const arn_1 = require("../arn");
9
+ const aws_stack_1 = require("../aws-stack");
10
+ const alarm_base_1 = require("./alarm-base");
11
+ const duration_1 = require("../../duration");
12
+ /**
13
+ * A Composite Alarm based on Alarm Rule.
14
+ */
15
+ class CompositeAlarm extends alarm_base_1.AlarmBase {
16
+ /**
17
+ * Import an existing CloudWatch composite alarm provided an Name.
18
+ *
19
+ * @param scope The parent creating construct (usually `this`)
20
+ * @param id The construct's name
21
+ * @param compositeAlarmName Composite Alarm Name
22
+ */
23
+ static fromCompositeAlarmName(scope, id, compositeAlarmName) {
24
+ const stack = aws_stack_1.AwsStack.ofAwsConstruct(scope);
25
+ return this.fromCompositeAlarmArn(scope, id, stack.formatArn({
26
+ service: "cloudwatch",
27
+ resource: "alarm",
28
+ resourceName: compositeAlarmName,
29
+ arnFormat: arn_1.ArnFormat.COLON_RESOURCE_NAME,
30
+ }));
31
+ }
32
+ /**
33
+ * Import an existing CloudWatch composite alarm provided an ARN.
34
+ *
35
+ * @param scope The parent creating construct (usually `this`)
36
+ * @param id The construct's name
37
+ * @param compositeAlarmArn Composite Alarm ARN (i.e. arn:aws:cloudwatch:<region>:<account-id>:alarm:CompositeAlarmName)
38
+ */
39
+ static fromCompositeAlarmArn(scope, id, compositeAlarmArn) {
40
+ class Import extends alarm_base_1.AlarmBase {
41
+ constructor() {
42
+ super(...arguments);
43
+ this.alarmArn = compositeAlarmArn;
44
+ this.alarmName = aws_stack_1.AwsStack.ofAwsConstruct(scope).splitArn(compositeAlarmArn, arn_1.ArnFormat.COLON_RESOURCE_NAME).resourceName;
45
+ }
46
+ }
47
+ return new Import(scope, id);
48
+ }
49
+ constructor(scope, id, props) {
50
+ super(scope, id);
51
+ const alarmName = props.compositeAlarmName ||
52
+ this.stack.uniqueResourceName(this, {
53
+ prefix: this.gridUUID,
54
+ maxLength: 255,
55
+ });
56
+ if (props.alarmRule.renderAlarmRule().length > 10240) {
57
+ throw new Error("Alarm Rule expression cannot be greater than 10240 characters, please reduce the conditions in the Alarm Rule");
58
+ }
59
+ let extensionPeriod = props.actionsSuppressorExtensionPeriod;
60
+ let waitPeriod = props.actionsSuppressorWaitPeriod;
61
+ if (props.actionsSuppressor === undefined) {
62
+ if (extensionPeriod !== undefined || waitPeriod !== undefined) {
63
+ throw new Error("ActionsSuppressor Extension/Wait Periods require an ActionsSuppressor to be set.");
64
+ }
65
+ }
66
+ else {
67
+ extensionPeriod = extensionPeriod ?? duration_1.Duration.minutes(1);
68
+ waitPeriod = waitPeriod ?? duration_1.Duration.minutes(1);
69
+ }
70
+ this.alarmRule = props.alarmRule.renderAlarmRule();
71
+ this.resource = new provider_aws_1.cloudwatchCompositeAlarm.CloudwatchCompositeAlarm(this, "Resource", {
72
+ alarmName,
73
+ alarmRule: this.alarmRule,
74
+ alarmDescription: props.alarmDescription,
75
+ actionsEnabled: props.actionsEnabled,
76
+ alarmActions: cdktf_1.Lazy.listValue({ produce: () => this.alarmActionArns }),
77
+ insufficientDataActions: cdktf_1.Lazy.listValue({
78
+ produce: () => this.insufficientDataActionArns,
79
+ }),
80
+ okActions: cdktf_1.Lazy.listValue({ produce: () => this.okActionArns }),
81
+ ...(props.actionsSuppressor
82
+ ? {
83
+ actionsSuppressor: {
84
+ alarm: props.actionsSuppressor?.alarmArn,
85
+ extensionPeriod: extensionPeriod.toSeconds(),
86
+ waitPeriod: waitPeriod.toSeconds(),
87
+ },
88
+ }
89
+ : undefined),
90
+ });
91
+ this.alarmName = this.resource.id;
92
+ this.alarmArn = this.resource.arn;
93
+ }
94
+ }
95
+ exports.CompositeAlarm = CompositeAlarm;
96
+ _a = JSII_RTTI_SYMBOL_1;
97
+ CompositeAlarm[_a] = { fqn: "terraconstructs.aws.cloudwatch.CompositeAlarm", version: "0.0.8" };
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLWFsYXJtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jbG91ZHdhdGNoL2NvbXBvc2l0ZS1hbGFybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNEQUErRDtBQUMvRCxpQ0FBNkI7QUFFN0IsZ0NBQW1DO0FBRW5DLDRDQUF3QztBQUN4Qyw2Q0FBNkQ7QUFDN0QsNkNBQTBDO0FBd0QxQzs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLHNCQUFTO0lBQzNDOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDbEMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGtCQUEwQjtRQUUxQixNQUFNLEtBQUssR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FDL0IsS0FBSyxFQUNMLEVBQUUsRUFDRixLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ2QsT0FBTyxFQUFFLFlBQVk7WUFDckIsUUFBUSxFQUFFLE9BQU87WUFDakIsWUFBWSxFQUFFLGtCQUFrQjtZQUNoQyxTQUFTLEVBQUUsZUFBUyxDQUFDLG1CQUFtQjtTQUN6QyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQ2pDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixpQkFBeUI7UUFFekIsTUFBTSxNQUFPLFNBQVEsc0JBQVM7WUFBOUI7O2dCQUNrQixhQUFRLEdBQUcsaUJBQWlCLENBQUM7Z0JBQzdCLGNBQVMsR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQ2pFLGlCQUFpQixFQUNqQixlQUFTLENBQUMsbUJBQW1CLENBQzlCLENBQUMsWUFBYSxDQUFDO1lBQ2xCLENBQUM7U0FBQTtRQUNELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFtQkQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEwQjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sU0FBUyxHQUNiLEtBQUssQ0FBQyxrQkFBa0I7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDckIsU0FBUyxFQUFFLEdBQUc7YUFDZixDQUFDLENBQUM7UUFFTCxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO1lBQ3JELE1BQU0sSUFBSSxLQUFLLENBQ2IsK0dBQStHLENBQ2hILENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDLGdDQUFnQyxDQUFDO1FBQzdELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQywyQkFBMkIsQ0FBQztRQUNuRCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxJQUFJLGVBQWUsS0FBSyxTQUFTLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM5RCxNQUFNLElBQUksS0FBSyxDQUNiLGtGQUFrRixDQUNuRixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sZUFBZSxHQUFHLGVBQWUsSUFBSSxtQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RCxVQUFVLEdBQUcsVUFBVSxJQUFJLG1CQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVDQUF3QixDQUFDLHdCQUF3QixDQUNuRSxJQUFJLEVBQ0osVUFBVSxFQUNWO1lBQ0UsU0FBUztZQUNULFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztZQUNwQyxZQUFZLEVBQUUsWUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckUsdUJBQXVCLEVBQUUsWUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywwQkFBMEI7YUFDL0MsQ0FBQztZQUNGLFNBQVMsRUFBRSxZQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMvRCxHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtnQkFDekIsQ0FBQyxDQUFDO29CQUNFLGlCQUFpQixFQUFFO3dCQUNqQixLQUFLLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLFFBQVE7d0JBQ3hDLGVBQWUsRUFBRSxlQUFnQixDQUFDLFNBQVMsRUFBRTt3QkFDN0MsVUFBVSxFQUFFLFVBQVcsQ0FBQyxTQUFTLEVBQUU7cUJBQ3BDO2lCQUNGO2dCQUNILENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDZixDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDcEMsQ0FBQzs7QUEzSEgsd0NBNEhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvdWR3YXRjaENvbXBvc2l0ZUFsYXJtIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IExhenkgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBcm5Gb3JtYXQgfSBmcm9tIFwiLi4vYXJuXCI7XG5pbXBvcnQgeyBBd3NDb25zdHJ1Y3RQcm9wcyB9IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7IEFsYXJtQmFzZSwgSUFsYXJtLCBJQWxhcm1SdWxlIH0gZnJvbSBcIi4vYWxhcm0tYmFzZVwiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiLi4vLi4vZHVyYXRpb25cIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIENvbXBvc2l0ZSBBbGFybVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvc2l0ZUFsYXJtUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3Rpb25zIGZvciB0aGlzIGFsYXJtIGFyZSBlbmFibGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbnNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVzY3JpcHRpb24gZm9yIHRoZSBhbGFybVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGRlc2NyaXB0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1EZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYWxhcm1cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9zaXRlQWxhcm1OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFeHByZXNzaW9uIHRoYXQgc3BlY2lmaWVzIHdoaWNoIG90aGVyIGFsYXJtcyBhcmUgdG8gYmUgZXZhbHVhdGVkIHRvIGRldGVybWluZSB0aGlzIGNvbXBvc2l0ZSBhbGFybSdzIHN0YXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1SdWxlOiBJQWxhcm1SdWxlO1xuXG4gIC8qKlxuICAgKiBBY3Rpb25zIHdpbGwgYmUgc3VwcHJlc3NlZCBpZiB0aGUgc3VwcHJlc3NvciBhbGFybSBpcyBpbiB0aGUgQUxBUk0gc3RhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWxhcm0gd2lsbCBub3QgYmUgc3VwcHJlc3NlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbnNTdXBwcmVzc29yPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBkdXJhdGlvbiB0aGF0IHRoZSBjb21wb3NpdGUgYWxhcm0gd2FpdHMgYWZ0ZXIgc3VwcHJlc3NvciBhbGFybSBnb2VzIG91dCBvZiB0aGUgQUxBUk0gc3RhdGUuXG4gICAqIEFmdGVyIHRoaXMgdGltZSwgdGhlIGNvbXBvc2l0ZSBhbGFybSBwZXJmb3JtcyBpdHMgYWN0aW9ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSAxIG1pbnV0ZSBleHRlbnNpb24gcGVyaW9kIHdpbGwgYmUgc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uc1N1cHByZXNzb3JFeHRlbnNpb25QZXJpb2Q/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gZHVyYXRpb24gdGhhdCB0aGUgY29tcG9zaXRlIGFsYXJtIHdhaXRzIGZvciB0aGUgc3VwcHJlc3NvciBhbGFybSB0byBnbyBpbnRvIHRoZSBBTEFSTSBzdGF0ZS5cbiAgICogQWZ0ZXIgdGhpcyB0aW1lLCB0aGUgY29tcG9zaXRlIGFsYXJtIHBlcmZvcm1zIGl0cyBhY3Rpb25zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDEgbWludXRlIHdhaXQgcGVyaW9kIHdpbGwgYmUgc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uc1N1cHByZXNzb3JXYWl0UGVyaW9kPzogRHVyYXRpb247XG59XG5cbi8qKlxuICogQSBDb21wb3NpdGUgQWxhcm0gYmFzZWQgb24gQWxhcm0gUnVsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZUFsYXJtIGV4dGVuZHMgQWxhcm1CYXNlIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBDbG91ZFdhdGNoIGNvbXBvc2l0ZSBhbGFybSBwcm92aWRlZCBhbiBOYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKVxuICAgKiBAcGFyYW0gaWQgVGhlIGNvbnN0cnVjdCdzIG5hbWVcbiAgICogQHBhcmFtIGNvbXBvc2l0ZUFsYXJtTmFtZSBDb21wb3NpdGUgQWxhcm0gTmFtZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQ29tcG9zaXRlQWxhcm1OYW1lKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBjb21wb3NpdGVBbGFybU5hbWU6IHN0cmluZyxcbiAgKTogSUFsYXJtIHtcbiAgICBjb25zdCBzdGFjayA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHNjb3BlKTtcblxuICAgIHJldHVybiB0aGlzLmZyb21Db21wb3NpdGVBbGFybUFybihcbiAgICAgIHNjb3BlLFxuICAgICAgaWQsXG4gICAgICBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiBcImNsb3Vkd2F0Y2hcIixcbiAgICAgICAgcmVzb3VyY2U6IFwiYWxhcm1cIixcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBjb21wb3NpdGVBbGFybU5hbWUsXG4gICAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBDbG91ZFdhdGNoIGNvbXBvc2l0ZSBhbGFybSBwcm92aWRlZCBhbiBBUk4uXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IGNyZWF0aW5nIGNvbnN0cnVjdCAodXN1YWxseSBgdGhpc2ApXG4gICAqIEBwYXJhbSBpZCBUaGUgY29uc3RydWN0J3MgbmFtZVxuICAgKiBAcGFyYW0gY29tcG9zaXRlQWxhcm1Bcm4gQ29tcG9zaXRlIEFsYXJtIEFSTiAoaS5lLiBhcm46YXdzOmNsb3Vkd2F0Y2g6PHJlZ2lvbj46PGFjY291bnQtaWQ+OmFsYXJtOkNvbXBvc2l0ZUFsYXJtTmFtZSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbXBvc2l0ZUFsYXJtQXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBjb21wb3NpdGVBbGFybUFybjogc3RyaW5nLFxuICApOiBJQWxhcm0ge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEFsYXJtQmFzZSBpbXBsZW1lbnRzIElBbGFybSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWxhcm1Bcm4gPSBjb21wb3NpdGVBbGFybUFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhbGFybU5hbWUgPSBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChzY29wZSkuc3BsaXRBcm4oXG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtQXJuLFxuICAgICAgICBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAgICkucmVzb3VyY2VOYW1lITtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGNsb3Vkd2F0Y2hDb21wb3NpdGVBbGFybS5DbG91ZHdhdGNoQ29tcG9zaXRlQWxhcm07XG5cbiAgLyoqXG4gICAqIEFSTiBvZiB0aGlzIGFsYXJtXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgYWxhcm0uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybU5hbWU6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IGFsYXJtUnVsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb21wb3NpdGVBbGFybVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBhbGFybU5hbWUgPVxuICAgICAgcHJvcHMuY29tcG9zaXRlQWxhcm1OYW1lIHx8XG4gICAgICB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgIHByZWZpeDogdGhpcy5ncmlkVVVJRCxcbiAgICAgICAgbWF4TGVuZ3RoOiAyNTUsXG4gICAgICB9KTtcblxuICAgIGlmIChwcm9wcy5hbGFybVJ1bGUucmVuZGVyQWxhcm1SdWxlKCkubGVuZ3RoID4gMTAyNDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBbGFybSBSdWxlIGV4cHJlc3Npb24gY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAxMDI0MCBjaGFyYWN0ZXJzLCBwbGVhc2UgcmVkdWNlIHRoZSBjb25kaXRpb25zIGluIHRoZSBBbGFybSBSdWxlXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBleHRlbnNpb25QZXJpb2QgPSBwcm9wcy5hY3Rpb25zU3VwcHJlc3NvckV4dGVuc2lvblBlcmlvZDtcbiAgICBsZXQgd2FpdFBlcmlvZCA9IHByb3BzLmFjdGlvbnNTdXBwcmVzc29yV2FpdFBlcmlvZDtcbiAgICBpZiAocHJvcHMuYWN0aW9uc1N1cHByZXNzb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGV4dGVuc2lvblBlcmlvZCAhPT0gdW5kZWZpbmVkIHx8IHdhaXRQZXJpb2QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJBY3Rpb25zU3VwcHJlc3NvciBFeHRlbnNpb24vV2FpdCBQZXJpb2RzIHJlcXVpcmUgYW4gQWN0aW9uc1N1cHByZXNzb3IgdG8gYmUgc2V0LlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBleHRlbnNpb25QZXJpb2QgPSBleHRlbnNpb25QZXJpb2QgPz8gRHVyYXRpb24ubWludXRlcygxKTtcbiAgICAgIHdhaXRQZXJpb2QgPSB3YWl0UGVyaW9kID8/IER1cmF0aW9uLm1pbnV0ZXMoMSk7XG4gICAgfVxuXG4gICAgdGhpcy5hbGFybVJ1bGUgPSBwcm9wcy5hbGFybVJ1bGUucmVuZGVyQWxhcm1SdWxlKCk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGNsb3Vkd2F0Y2hDb21wb3NpdGVBbGFybS5DbG91ZHdhdGNoQ29tcG9zaXRlQWxhcm0oXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBhbGFybU5hbWUsXG4gICAgICAgIGFsYXJtUnVsZTogdGhpcy5hbGFybVJ1bGUsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246IHByb3BzLmFsYXJtRGVzY3JpcHRpb24sXG4gICAgICAgIGFjdGlvbnNFbmFibGVkOiBwcm9wcy5hY3Rpb25zRW5hYmxlZCxcbiAgICAgICAgYWxhcm1BY3Rpb25zOiBMYXp5Lmxpc3RWYWx1ZSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuYWxhcm1BY3Rpb25Bcm5zIH0pLFxuICAgICAgICBpbnN1ZmZpY2llbnREYXRhQWN0aW9uczogTGF6eS5saXN0VmFsdWUoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+IHRoaXMuaW5zdWZmaWNpZW50RGF0YUFjdGlvbkFybnMsXG4gICAgICAgIH0pLFxuICAgICAgICBva0FjdGlvbnM6IExhenkubGlzdFZhbHVlKHsgcHJvZHVjZTogKCkgPT4gdGhpcy5va0FjdGlvbkFybnMgfSksXG4gICAgICAgIC4uLihwcm9wcy5hY3Rpb25zU3VwcHJlc3NvclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBhY3Rpb25zU3VwcHJlc3Nvcjoge1xuICAgICAgICAgICAgICAgIGFsYXJtOiBwcm9wcy5hY3Rpb25zU3VwcHJlc3Nvcj8uYWxhcm1Bcm4sXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uUGVyaW9kOiBleHRlbnNpb25QZXJpb2QhLnRvU2Vjb25kcygpLFxuICAgICAgICAgICAgICAgIHdhaXRQZXJpb2Q6IHdhaXRQZXJpb2QhLnRvU2Vjb25kcygpLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogdW5kZWZpbmVkKSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMuYWxhcm1OYW1lID0gdGhpcy5yZXNvdXJjZS5pZDtcbiAgICB0aGlzLmFsYXJtQXJuID0gdGhpcy5yZXNvdXJjZS5hcm47XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,137 @@
1
+ import { cloudwatchDashboard } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { AwsConstructBase, AwsConstructProps } from "../aws-construct";
4
+ import { IVariable } from "./variable";
5
+ import { IWidget } from "./widget";
6
+ import { Duration } from "../../duration";
7
+ /**
8
+ * Specify the period for graphs when the CloudWatch dashboard loads
9
+ */
10
+ export declare enum PeriodOverride {
11
+ /**
12
+ * Period of all graphs on the dashboard automatically adapt to the time range of the dashboard.
13
+ */
14
+ AUTO = "auto",
15
+ /**
16
+ * Period set for each graph will be used
17
+ */
18
+ INHERIT = "inherit"
19
+ }
20
+ /**
21
+ * Properties for defining a CloudWatch Dashboard
22
+ */
23
+ export interface DashboardProps extends AwsConstructProps {
24
+ /**
25
+ * Name of the dashboard.
26
+ *
27
+ * If set, must only contain alphanumerics, dash (-) and underscore (_)
28
+ *
29
+ * @default - automatically generated name
30
+ */
31
+ readonly dashboardName?: string;
32
+ /**
33
+ * Interval duration for metrics.
34
+ * You can specify defaultInterval with the relative time(eg. cdk.Duration.days(7)).
35
+ *
36
+ * Both properties `defaultInterval` and `start` cannot be set at once.
37
+ *
38
+ * @default When the dashboard loads, the defaultInterval time will be the default time range.
39
+ */
40
+ readonly defaultInterval?: Duration;
41
+ /**
42
+ * The start of the time range to use for each widget on the dashboard.
43
+ * You can specify start without specifying end to specify a relative time range that ends with the current time.
44
+ * In this case, the value of start must begin with -P, and you can use M, H, D, W and M as abbreviations for
45
+ * minutes, hours, days, weeks and months. For example, -PT8H shows the last 8 hours and -P3M shows the last three months.
46
+ * You can also use start along with an end field, to specify an absolute time range.
47
+ * When specifying an absolute time range, use the ISO 8601 format. For example, 2018-12-17T06:00:00.000Z.
48
+ *
49
+ * Both properties `defaultInterval` and `start` cannot be set at once.
50
+ *
51
+ * @default When the dashboard loads, the start time will be the default time range.
52
+ */
53
+ readonly start?: string;
54
+ /**
55
+ * The end of the time range to use for each widget on the dashboard when the dashboard loads.
56
+ * If you specify a value for end, you must also specify a value for start.
57
+ * Specify an absolute time in the ISO 8601 format. For example, 2018-12-17T06:00:00.000Z.
58
+ *
59
+ * @default When the dashboard loads, the end date will be the current time.
60
+ */
61
+ readonly end?: string;
62
+ /**
63
+ * Use this field to specify the period for the graphs when the dashboard loads.
64
+ * Specifying `Auto` causes the period of all graphs on the dashboard to automatically adapt to the time range of the dashboard.
65
+ * Specifying `Inherit` ensures that the period set for each graph is always obeyed.
66
+ *
67
+ * @default Auto
68
+ */
69
+ readonly periodOverride?: PeriodOverride;
70
+ /**
71
+ * Initial set of widgets on the dashboard
72
+ *
73
+ * One array represents a row of widgets.
74
+ *
75
+ * @default - No widgets
76
+ */
77
+ readonly widgets?: IWidget[][];
78
+ /**
79
+ * A list of dashboard variables
80
+ *
81
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_dashboard_variables.html#cloudwatch_dashboard_variables_types
82
+ *
83
+ * @default - No variables
84
+ */
85
+ readonly variables?: IVariable[];
86
+ }
87
+ export interface DashboardOutputs {
88
+ /**
89
+ * The name of this dashboard
90
+ * @attribute
91
+ */
92
+ readonly dashboardName: string;
93
+ /**
94
+ * ARN of this dashboard
95
+ * @attribute
96
+ */
97
+ readonly dashboardArn: string;
98
+ }
99
+ /**
100
+ * A CloudWatch dashboard
101
+ */
102
+ export declare class Dashboard extends AwsConstructBase {
103
+ readonly resource: cloudwatchDashboard.CloudwatchDashboard;
104
+ /**
105
+ * The name of this dashboard
106
+ *
107
+ * @attribute
108
+ */
109
+ readonly dashboardName: string;
110
+ /**
111
+ * ARN of this dashboard
112
+ *
113
+ * @attribute
114
+ */
115
+ readonly dashboardArn: string;
116
+ get dashboardOutputs(): DashboardOutputs;
117
+ get outputs(): Record<string, any>;
118
+ private readonly rows;
119
+ private readonly variables;
120
+ constructor(scope: Construct, id: string, props?: DashboardProps);
121
+ /**
122
+ * Add a widget to the dashboard.
123
+ *
124
+ * Widgets given in multiple calls to add() will be laid out stacked on
125
+ * top of each other.
126
+ *
127
+ * Multiple widgets added in the same call to add() will be laid out next
128
+ * to each other.
129
+ */
130
+ addWidgets(...widgets: IWidget[]): void;
131
+ /**
132
+ * Add a variable to the dashboard.
133
+ *
134
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_dashboard_variables.html
135
+ */
136
+ addVariable(variable: IVariable): void;
137
+ }
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Dashboard = exports.PeriodOverride = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ // https://github.com/aws/aws-cdk/blob/v2.170.0/packages/aws-cdk-lib/aws-cloudwatch/lib/dashboard.ts
7
+ const provider_aws_1 = require("@cdktf/provider-aws");
8
+ const cdktf_1 = require("cdktf");
9
+ const aws_construct_1 = require("../aws-construct");
10
+ const aws_stack_1 = require("../aws-stack");
11
+ const layout_1 = require("./layout");
12
+ /**
13
+ * Specify the period for graphs when the CloudWatch dashboard loads
14
+ */
15
+ var PeriodOverride;
16
+ (function (PeriodOverride) {
17
+ /**
18
+ * Period of all graphs on the dashboard automatically adapt to the time range of the dashboard.
19
+ */
20
+ PeriodOverride["AUTO"] = "auto";
21
+ /**
22
+ * Period set for each graph will be used
23
+ */
24
+ PeriodOverride["INHERIT"] = "inherit";
25
+ })(PeriodOverride || (exports.PeriodOverride = PeriodOverride = {}));
26
+ /**
27
+ * A CloudWatch dashboard
28
+ */
29
+ class Dashboard extends aws_construct_1.AwsConstructBase {
30
+ get dashboardOutputs() {
31
+ return {
32
+ dashboardName: this.dashboardName,
33
+ dashboardArn: this.dashboardArn,
34
+ };
35
+ }
36
+ get outputs() {
37
+ return this.dashboardOutputs;
38
+ }
39
+ constructor(scope, id, props = {}) {
40
+ super(scope, id, props);
41
+ this.rows = [];
42
+ this.variables = [];
43
+ const dashboardName = props.dashboardName ||
44
+ this.stack.uniqueResourceName(this, {
45
+ prefix: this.gridUUID,
46
+ allowedSpecialCharacters: "-_",
47
+ });
48
+ if (dashboardName &&
49
+ !cdktf_1.Token.isUnresolved(dashboardName) &&
50
+ !dashboardName.match(/^[\w-]+$/)) {
51
+ throw new Error([
52
+ `The value ${dashboardName} for field dashboardName contains invalid characters.`,
53
+ "It can only contain alphanumerics, dash (-) and underscore (_).",
54
+ ].join(" "));
55
+ }
56
+ if (props.start !== undefined && props.defaultInterval !== undefined) {
57
+ throw new Error("both properties defaultInterval and start cannot be set at once");
58
+ }
59
+ if (props.end !== undefined && props.start === undefined) {
60
+ throw new Error("If you specify a value for end, you must also specify a value for start.");
61
+ }
62
+ this.resource = new provider_aws_1.cloudwatchDashboard.CloudwatchDashboard(this, "Resource", {
63
+ dashboardName,
64
+ dashboardBody: cdktf_1.Lazy.stringValue({
65
+ produce: () => {
66
+ const column = new layout_1.Column(...this.rows);
67
+ column.position(0, 0);
68
+ return aws_stack_1.AwsStack.ofAwsConstruct(this).toJsonString({
69
+ start: props.defaultInterval !== undefined
70
+ ? `-${props.defaultInterval?.toIsoString()}`
71
+ : props.start,
72
+ end: props.defaultInterval !== undefined ? undefined : props.end,
73
+ periodOverride: props.periodOverride,
74
+ widgets: column.toJson(),
75
+ variables: this.variables.length > 0
76
+ ? this.variables.map((variable) => variable.toJson())
77
+ : undefined,
78
+ });
79
+ },
80
+ }),
81
+ });
82
+ this.dashboardName = this.resource.dashboardName;
83
+ (props.widgets || []).forEach((row) => {
84
+ this.addWidgets(...row);
85
+ });
86
+ (props.variables || []).forEach((variable) => this.addVariable(variable));
87
+ this.dashboardArn = this.resource.dashboardArn;
88
+ }
89
+ /**
90
+ * Add a widget to the dashboard.
91
+ *
92
+ * Widgets given in multiple calls to add() will be laid out stacked on
93
+ * top of each other.
94
+ *
95
+ * Multiple widgets added in the same call to add() will be laid out next
96
+ * to each other.
97
+ */
98
+ addWidgets(...widgets) {
99
+ if (widgets.length === 0) {
100
+ return;
101
+ }
102
+ const warnings = allWidgetsDeep(widgets).reduce((prev, curr) => {
103
+ return {
104
+ ...prev,
105
+ ...curr.warningsV2,
106
+ };
107
+ }, {});
108
+ for (const [_, message] of Object.entries(warnings ?? {})) {
109
+ // TODO: v2 warning with message id
110
+ cdktf_1.Annotations.of(this).addWarning(message);
111
+ }
112
+ const w = widgets.length > 1 ? new layout_1.Row(...widgets) : widgets[0];
113
+ this.rows.push(w);
114
+ }
115
+ /**
116
+ * Add a variable to the dashboard.
117
+ *
118
+ * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_dashboard_variables.html
119
+ */
120
+ addVariable(variable) {
121
+ this.variables.push(variable);
122
+ }
123
+ }
124
+ exports.Dashboard = Dashboard;
125
+ _a = JSII_RTTI_SYMBOL_1;
126
+ Dashboard[_a] = { fqn: "terraconstructs.aws.cloudwatch.Dashboard", version: "0.0.8" };
127
+ function allWidgetsDeep(ws) {
128
+ const ret = new Array();
129
+ ws.forEach(recurse);
130
+ return ret;
131
+ function recurse(w) {
132
+ ret.push(w);
133
+ if (hasSubWidgets(w)) {
134
+ w.widgets.forEach(recurse);
135
+ }
136
+ }
137
+ }
138
+ function hasSubWidgets(w) {
139
+ return "widgets" in w;
140
+ }
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jbG91ZHdhdGNoL2Rhc2hib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9HQUFvRztBQUVwRyxzREFBMEQ7QUFDMUQsaUNBQWlEO0FBRWpELG9EQUF1RTtBQUN2RSw0Q0FBd0M7QUFDeEMscUNBQXVDO0FBS3ZDOztHQUVHO0FBQ0gsSUFBWSxjQVVYO0FBVkQsV0FBWSxjQUFjO0lBQ3hCOztPQUVHO0lBQ0gsK0JBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVZXLGNBQWMsOEJBQWQsY0FBYyxRQVV6QjtBQTBGRDs7R0FFRztBQUNILE1BQWEsU0FBVSxTQUFRLGdDQUFnQjtJQWdCN0MsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTztZQUNMLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQU1ELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBd0IsRUFBRTtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUxULFNBQUksR0FBYyxFQUFFLENBQUM7UUFFckIsY0FBUyxHQUFnQixFQUFFLENBQUM7UUFJM0MsTUFBTSxhQUFhLEdBQ2pCLEtBQUssQ0FBQyxhQUFhO1lBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO2dCQUNsQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3JCLHdCQUF3QixFQUFFLElBQUk7YUFDL0IsQ0FBQyxDQUFDO1FBRUwsSUFDRSxhQUFhO1lBQ2IsQ0FBQyxhQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztZQUNsQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQ2hDLENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUNiO2dCQUNFLGFBQWEsYUFBYSx1REFBdUQ7Z0JBQ2pGLGlFQUFpRTthQUNsRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FDWixDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyRSxNQUFNLElBQUksS0FBSyxDQUNiLGlFQUFpRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN6RCxNQUFNLElBQUksS0FBSyxDQUNiLDBFQUEwRSxDQUMzRSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxrQ0FBbUIsQ0FBQyxtQkFBbUIsQ0FDekQsSUFBSSxFQUNKLFVBQVUsRUFDVjtZQUNFLGFBQWE7WUFDYixhQUFhLEVBQUUsWUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDOUIsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3RCLE9BQU8sb0JBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDO3dCQUNoRCxLQUFLLEVBQ0gsS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTOzRCQUNqQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLFdBQVcsRUFBRSxFQUFFOzRCQUM1QyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUs7d0JBQ2pCLEdBQUcsRUFBRSxLQUFLLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRzt3QkFDaEUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO3dCQUNwQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRTt3QkFDeEIsU0FBUyxFQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7NEJBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUNyRCxDQUFDLENBQUMsU0FBUztxQkFDaEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7YUFDRixDQUFDO1NBQ0gsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUVqRCxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBRUgsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksVUFBVSxDQUFDLEdBQUcsT0FBa0I7UUFDckMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDN0MsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDYixPQUFPO2dCQUNMLEdBQUcsSUFBSTtnQkFDUCxHQUFHLElBQUksQ0FBQyxVQUFVO2FBQ25CLENBQUM7UUFDSixDQUFDLEVBQ0QsRUFBOEIsQ0FDL0IsQ0FBQztRQUNGLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzFELG1DQUFtQztZQUNuQyxtQkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsUUFBbUI7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7QUE3SUgsOEJBOElDOzs7QUFFRCxTQUFTLGNBQWMsQ0FBQyxFQUFhO0lBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFXLENBQUM7SUFDakMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwQixPQUFPLEdBQUcsQ0FBQztJQUVYLFNBQVMsT0FBTyxDQUFDLENBQVU7UUFDekIsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNaLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsQ0FBVTtJQUMvQixPQUFPLFNBQVMsSUFBSSxDQUFDLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3MC4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoL2xpYi9kYXNoYm9hcmQudHNcblxuaW1wb3J0IHsgY2xvdWR3YXRjaERhc2hib2FyZCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBMYXp5LCBUb2tlbiwgQW5ub3RhdGlvbnMgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDb25zdHJ1Y3RCYXNlLCBBd3NDb25zdHJ1Y3RQcm9wcyB9IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7IENvbHVtbiwgUm93IH0gZnJvbSBcIi4vbGF5b3V0XCI7XG5pbXBvcnQgeyBJVmFyaWFibGUgfSBmcm9tIFwiLi92YXJpYWJsZVwiO1xuaW1wb3J0IHsgSVdpZGdldCB9IGZyb20gXCIuL3dpZGdldFwiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiLi4vLi4vZHVyYXRpb25cIjtcblxuLyoqXG4gKiBTcGVjaWZ5IHRoZSBwZXJpb2QgZm9yIGdyYXBocyB3aGVuIHRoZSBDbG91ZFdhdGNoIGRhc2hib2FyZCBsb2Fkc1xuICovXG5leHBvcnQgZW51bSBQZXJpb2RPdmVycmlkZSB7XG4gIC8qKlxuICAgKiBQZXJpb2Qgb2YgYWxsIGdyYXBocyBvbiB0aGUgZGFzaGJvYXJkIGF1dG9tYXRpY2FsbHkgYWRhcHQgdG8gdGhlIHRpbWUgcmFuZ2Ugb2YgdGhlIGRhc2hib2FyZC5cbiAgICovXG4gIEFVVE8gPSBcImF1dG9cIixcblxuICAvKipcbiAgICogUGVyaW9kIHNldCBmb3IgZWFjaCBncmFwaCB3aWxsIGJlIHVzZWRcbiAgICovXG4gIElOSEVSSVQgPSBcImluaGVyaXRcIixcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIENsb3VkV2F0Y2ggRGFzaGJvYXJkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGFzaGJvYXJkUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBkYXNoYm9hcmQuXG4gICAqXG4gICAqIElmIHNldCwgbXVzdCBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljcywgZGFzaCAoLSkgYW5kIHVuZGVyc2NvcmUgKF8pXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZGFzaGJvYXJkTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW50ZXJ2YWwgZHVyYXRpb24gZm9yIG1ldHJpY3MuXG4gICAqIFlvdSBjYW4gc3BlY2lmeSBkZWZhdWx0SW50ZXJ2YWwgd2l0aCB0aGUgcmVsYXRpdmUgdGltZShlZy4gY2RrLkR1cmF0aW9uLmRheXMoNykpLlxuICAgKlxuICAgKiBCb3RoIHByb3BlcnRpZXMgYGRlZmF1bHRJbnRlcnZhbGAgYW5kIGBzdGFydGAgY2Fubm90IGJlIHNldCBhdCBvbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBXaGVuIHRoZSBkYXNoYm9hcmQgbG9hZHMsIHRoZSBkZWZhdWx0SW50ZXJ2YWwgdGltZSB3aWxsIGJlIHRoZSBkZWZhdWx0IHRpbWUgcmFuZ2UuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0SW50ZXJ2YWw/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHN0YXJ0IG9mIHRoZSB0aW1lIHJhbmdlIHRvIHVzZSBmb3IgZWFjaCB3aWRnZXQgb24gdGhlIGRhc2hib2FyZC5cbiAgICogWW91IGNhbiBzcGVjaWZ5IHN0YXJ0IHdpdGhvdXQgc3BlY2lmeWluZyBlbmQgdG8gc3BlY2lmeSBhIHJlbGF0aXZlIHRpbWUgcmFuZ2UgdGhhdCBlbmRzIHdpdGggdGhlIGN1cnJlbnQgdGltZS5cbiAgICogSW4gdGhpcyBjYXNlLCB0aGUgdmFsdWUgb2Ygc3RhcnQgbXVzdCBiZWdpbiB3aXRoIC1QLCBhbmQgeW91IGNhbiB1c2UgTSwgSCwgRCwgVyBhbmQgTSBhcyBhYmJyZXZpYXRpb25zIGZvclxuICAgKiBtaW51dGVzLCBob3VycywgZGF5cywgd2Vla3MgYW5kIG1vbnRocy4gRm9yIGV4YW1wbGUsIC1QVDhIIHNob3dzIHRoZSBsYXN0IDggaG91cnMgYW5kIC1QM00gc2hvd3MgdGhlIGxhc3QgdGhyZWUgbW9udGhzLlxuICAgKiBZb3UgY2FuIGFsc28gdXNlIHN0YXJ0IGFsb25nIHdpdGggYW4gZW5kIGZpZWxkLCB0byBzcGVjaWZ5IGFuIGFic29sdXRlIHRpbWUgcmFuZ2UuXG4gICAqIFdoZW4gc3BlY2lmeWluZyBhbiBhYnNvbHV0ZSB0aW1lIHJhbmdlLCB1c2UgdGhlIElTTyA4NjAxIGZvcm1hdC4gRm9yIGV4YW1wbGUsIDIwMTgtMTItMTdUMDY6MDA6MDAuMDAwWi5cbiAgICpcbiAgICogQm90aCBwcm9wZXJ0aWVzIGBkZWZhdWx0SW50ZXJ2YWxgIGFuZCBgc3RhcnRgIGNhbm5vdCBiZSBzZXQgYXQgb25jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgV2hlbiB0aGUgZGFzaGJvYXJkIGxvYWRzLCB0aGUgc3RhcnQgdGltZSB3aWxsIGJlIHRoZSBkZWZhdWx0IHRpbWUgcmFuZ2UuXG4gICAqL1xuICByZWFkb25seSBzdGFydD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVuZCBvZiB0aGUgdGltZSByYW5nZSB0byB1c2UgZm9yIGVhY2ggd2lkZ2V0IG9uIHRoZSBkYXNoYm9hcmQgd2hlbiB0aGUgZGFzaGJvYXJkIGxvYWRzLlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBhIHZhbHVlIGZvciBlbmQsIHlvdSBtdXN0IGFsc28gc3BlY2lmeSBhIHZhbHVlIGZvciBzdGFydC5cbiAgICogU3BlY2lmeSBhbiBhYnNvbHV0ZSB0aW1lIGluIHRoZSBJU08gODYwMSBmb3JtYXQuIEZvciBleGFtcGxlLCAyMDE4LTEyLTE3VDA2OjAwOjAwLjAwMFouXG4gICAqXG4gICAqIEBkZWZhdWx0IFdoZW4gdGhlIGRhc2hib2FyZCBsb2FkcywgdGhlIGVuZCBkYXRlIHdpbGwgYmUgdGhlIGN1cnJlbnQgdGltZS5cbiAgICovXG4gIHJlYWRvbmx5IGVuZD86IHN0cmluZztcblxuICAvKipcbiAgICogVXNlIHRoaXMgZmllbGQgdG8gc3BlY2lmeSB0aGUgcGVyaW9kIGZvciB0aGUgZ3JhcGhzIHdoZW4gdGhlIGRhc2hib2FyZCBsb2Fkcy5cbiAgICogU3BlY2lmeWluZyBgQXV0b2AgY2F1c2VzIHRoZSBwZXJpb2Qgb2YgYWxsIGdyYXBocyBvbiB0aGUgZGFzaGJvYXJkIHRvIGF1dG9tYXRpY2FsbHkgYWRhcHQgdG8gdGhlIHRpbWUgcmFuZ2Ugb2YgdGhlIGRhc2hib2FyZC5cbiAgICogU3BlY2lmeWluZyBgSW5oZXJpdGAgZW5zdXJlcyB0aGF0IHRoZSBwZXJpb2Qgc2V0IGZvciBlYWNoIGdyYXBoIGlzIGFsd2F5cyBvYmV5ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF1dG9cbiAgICovXG4gIHJlYWRvbmx5IHBlcmlvZE92ZXJyaWRlPzogUGVyaW9kT3ZlcnJpZGU7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2V0IG9mIHdpZGdldHMgb24gdGhlIGRhc2hib2FyZFxuICAgKlxuICAgKiBPbmUgYXJyYXkgcmVwcmVzZW50cyBhIHJvdyBvZiB3aWRnZXRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHdpZGdldHNcbiAgICovXG4gIHJlYWRvbmx5IHdpZGdldHM/OiBJV2lkZ2V0W11bXTtcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGRhc2hib2FyZCB2YXJpYWJsZXNcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9jbG91ZHdhdGNoX2Rhc2hib2FyZF92YXJpYWJsZXMuaHRtbCNjbG91ZHdhdGNoX2Rhc2hib2FyZF92YXJpYWJsZXNfdHlwZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB2YXJpYWJsZXNcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhYmxlcz86IElWYXJpYWJsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhc2hib2FyZE91dHB1dHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBkYXNoYm9hcmRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGFzaGJvYXJkTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgdGhpcyBkYXNoYm9hcmRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGFzaGJvYXJkQXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBDbG91ZFdhdGNoIGRhc2hib2FyZFxuICovXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogY2xvdWR3YXRjaERhc2hib2FyZC5DbG91ZHdhdGNoRGFzaGJvYXJkO1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBkYXNoYm9hcmRcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRhc2hib2FyZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIG9mIHRoaXMgZGFzaGJvYXJkXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkYXNoYm9hcmRBcm46IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZE91dHB1dHMoKTogRGFzaGJvYXJkT3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhc2hib2FyZE5hbWU6IHRoaXMuZGFzaGJvYXJkTmFtZSxcbiAgICAgIGRhc2hib2FyZEFybjogdGhpcy5kYXNoYm9hcmRBcm4sXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkT3V0cHV0cztcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm93czogSVdpZGdldFtdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSB2YXJpYWJsZXM6IElWYXJpYWJsZVtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhc2hib2FyZFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICBjb25zdCBkYXNoYm9hcmROYW1lID1cbiAgICAgIHByb3BzLmRhc2hib2FyZE5hbWUgfHxcbiAgICAgIHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgcHJlZml4OiB0aGlzLmdyaWRVVUlELFxuICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6IFwiLV9cIixcbiAgICAgIH0pO1xuXG4gICAgaWYgKFxuICAgICAgZGFzaGJvYXJkTmFtZSAmJlxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChkYXNoYm9hcmROYW1lKSAmJlxuICAgICAgIWRhc2hib2FyZE5hbWUubWF0Y2goL15bXFx3LV0rJC8pXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFtcbiAgICAgICAgICBgVGhlIHZhbHVlICR7ZGFzaGJvYXJkTmFtZX0gZm9yIGZpZWxkIGRhc2hib2FyZE5hbWUgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzLmAsXG4gICAgICAgICAgXCJJdCBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpY3MsIGRhc2ggKC0pIGFuZCB1bmRlcnNjb3JlIChfKS5cIixcbiAgICAgICAgXS5qb2luKFwiIFwiKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnN0YXJ0ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdEludGVydmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJib3RoIHByb3BlcnRpZXMgZGVmYXVsdEludGVydmFsIGFuZCBzdGFydCBjYW5ub3QgYmUgc2V0IGF0IG9uY2VcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmVuZCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLnN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJJZiB5b3Ugc3BlY2lmeSBhIHZhbHVlIGZvciBlbmQsIHlvdSBtdXN0IGFsc28gc3BlY2lmeSBhIHZhbHVlIGZvciBzdGFydC5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZHdhdGNoRGFzaGJvYXJkLkNsb3Vkd2F0Y2hEYXNoYm9hcmQoXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBkYXNoYm9hcmROYW1lLFxuICAgICAgICBkYXNoYm9hcmRCb2R5OiBMYXp5LnN0cmluZ1ZhbHVlKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uKC4uLnRoaXMucm93cyk7XG4gICAgICAgICAgICBjb2x1bW4ucG9zaXRpb24oMCwgMCk7XG4gICAgICAgICAgICByZXR1cm4gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcykudG9Kc29uU3RyaW5nKHtcbiAgICAgICAgICAgICAgc3RhcnQ6XG4gICAgICAgICAgICAgICAgcHJvcHMuZGVmYXVsdEludGVydmFsICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgID8gYC0ke3Byb3BzLmRlZmF1bHRJbnRlcnZhbD8udG9Jc29TdHJpbmcoKX1gXG4gICAgICAgICAgICAgICAgICA6IHByb3BzLnN0YXJ0LFxuICAgICAgICAgICAgICBlbmQ6IHByb3BzLmRlZmF1bHRJbnRlcnZhbCAhPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcHJvcHMuZW5kLFxuICAgICAgICAgICAgICBwZXJpb2RPdmVycmlkZTogcHJvcHMucGVyaW9kT3ZlcnJpZGUsXG4gICAgICAgICAgICAgIHdpZGdldHM6IGNvbHVtbi50b0pzb24oKSxcbiAgICAgICAgICAgICAgdmFyaWFibGVzOlxuICAgICAgICAgICAgICAgIHRoaXMudmFyaWFibGVzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy52YXJpYWJsZXMubWFwKCh2YXJpYWJsZSkgPT4gdmFyaWFibGUudG9Kc29uKCkpXG4gICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5kYXNoYm9hcmROYW1lID0gdGhpcy5yZXNvdXJjZS5kYXNoYm9hcmROYW1lO1xuXG4gICAgKHByb3BzLndpZGdldHMgfHwgW10pLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgdGhpcy5hZGRXaWRnZXRzKC4uLnJvdyk7XG4gICAgfSk7XG5cbiAgICAocHJvcHMudmFyaWFibGVzIHx8IFtdKS5mb3JFYWNoKCh2YXJpYWJsZSkgPT4gdGhpcy5hZGRWYXJpYWJsZSh2YXJpYWJsZSkpO1xuXG4gICAgdGhpcy5kYXNoYm9hcmRBcm4gPSB0aGlzLnJlc291cmNlLmRhc2hib2FyZEFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB3aWRnZXQgdG8gdGhlIGRhc2hib2FyZC5cbiAgICpcbiAgICogV2lkZ2V0cyBnaXZlbiBpbiBtdWx0aXBsZSBjYWxscyB0byBhZGQoKSB3aWxsIGJlIGxhaWQgb3V0IHN0YWNrZWQgb25cbiAgICogdG9wIG9mIGVhY2ggb3RoZXIuXG4gICAqXG4gICAqIE11bHRpcGxlIHdpZGdldHMgYWRkZWQgaW4gdGhlIHNhbWUgY2FsbCB0byBhZGQoKSB3aWxsIGJlIGxhaWQgb3V0IG5leHRcbiAgICogdG8gZWFjaCBvdGhlci5cbiAgICovXG4gIHB1YmxpYyBhZGRXaWRnZXRzKC4uLndpZGdldHM6IElXaWRnZXRbXSkge1xuICAgIGlmICh3aWRnZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHdhcm5pbmdzID0gYWxsV2lkZ2V0c0RlZXAod2lkZ2V0cykucmVkdWNlKFxuICAgICAgKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIC4uLmN1cnIud2FybmluZ3NWMixcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICB7fSBhcyB7IFtpZDogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IFtfLCBtZXNzYWdlXSBvZiBPYmplY3QuZW50cmllcyh3YXJuaW5ncyA/PyB7fSkpIHtcbiAgICAgIC8vIFRPRE86IHYyIHdhcm5pbmcgd2l0aCBtZXNzYWdlIGlkXG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGNvbnN0IHcgPSB3aWRnZXRzLmxlbmd0aCA+IDEgPyBuZXcgUm93KC4uLndpZGdldHMpIDogd2lkZ2V0c1swXTtcbiAgICB0aGlzLnJvd3MucHVzaCh3KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB2YXJpYWJsZSB0byB0aGUgZGFzaGJvYXJkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9tb25pdG9yaW5nL2Nsb3Vkd2F0Y2hfZGFzaGJvYXJkX3ZhcmlhYmxlcy5odG1sXG4gICAqL1xuICBwdWJsaWMgYWRkVmFyaWFibGUodmFyaWFibGU6IElWYXJpYWJsZSkge1xuICAgIHRoaXMudmFyaWFibGVzLnB1c2godmFyaWFibGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFsbFdpZGdldHNEZWVwKHdzOiBJV2lkZ2V0W10pIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PElXaWRnZXQ+KCk7XG4gIHdzLmZvckVhY2gocmVjdXJzZSk7XG4gIHJldHVybiByZXQ7XG5cbiAgZnVuY3Rpb24gcmVjdXJzZSh3OiBJV2lkZ2V0KSB7XG4gICAgcmV0LnB1c2godyk7XG4gICAgaWYgKGhhc1N1YldpZGdldHModykpIHtcbiAgICAgIHcud2lkZ2V0cy5mb3JFYWNoKHJlY3Vyc2UpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNTdWJXaWRnZXRzKHc6IElXaWRnZXQpOiB3IGlzIElXaWRnZXQgJiB7IHdpZGdldHM6IElXaWRnZXRbXSB9IHtcbiAgcmV0dXJuIFwid2lkZ2V0c1wiIGluIHc7XG59XG4iXX0=
@@ -0,0 +1,184 @@
1
+ import { cloudwatchLogDataProtectionPolicy } from "@cdktf/provider-aws";
2
+ import { ILogGroup } from "./log-group";
3
+ import { IBucket } from "../storage";
4
+ /**
5
+ * Creates a data protection policy for CloudWatch Logs log groups.
6
+ */
7
+ export declare class DataProtectionPolicy {
8
+ private readonly dataProtectionPolicyProps;
9
+ constructor(props: DataProtectionPolicyProps);
10
+ /**
11
+ * @internal
12
+ */
13
+ _bind(_scope: ILogGroup): cloudwatchLogDataProtectionPolicy.CloudwatchLogDataProtectionPolicy;
14
+ }
15
+ /**
16
+ * Properties for creating a data protection policy
17
+ */
18
+ export interface DataProtectionPolicyProps {
19
+ /**
20
+ * Name of the data protection policy
21
+ *
22
+ * @default - 'data-protection-policy-cdk'
23
+ */
24
+ readonly name?: string;
25
+ /**
26
+ * Description of the data protection policy
27
+ *
28
+ * @default - 'cdk generated data protection policy'
29
+ */
30
+ readonly description?: string;
31
+ /**
32
+ * List of data protection identifiers.
33
+ *
34
+ * Managed data identifiers must be in the following list: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL-managed-data-identifiers.html
35
+ * Custom data identifiers must have a valid regex defined: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL-custom-data-identifiers.html#custom-data-identifiers-constraints
36
+ */
37
+ readonly identifiers: DataIdentifier[];
38
+ /**
39
+ * CloudWatch Logs log group to send audit findings to. The log group must already exist prior to creating the data protection policy.
40
+ *
41
+ * @default - no CloudWatch Logs audit destination
42
+ */
43
+ readonly logGroupAuditDestination?: ILogGroup;
44
+ /**
45
+ * S3 bucket to send audit findings to. The bucket must already exist.
46
+ *
47
+ * @default - no S3 bucket audit destination
48
+ */
49
+ readonly s3BucketAuditDestination?: IBucket;
50
+ /**
51
+ * Amazon Kinesis Data Firehose delivery stream to send audit findings to. The delivery stream must already exist.
52
+ *
53
+ * @default - no firehose delivery stream audit destination
54
+ */
55
+ readonly deliveryStreamNameAuditDestination?: string;
56
+ }
57
+ /**
58
+ * A data protection identifier. If an identifier is supported but not in this class, it can be passed in the constructor instead.
59
+ */
60
+ export declare class DataIdentifier {
61
+ readonly name: string;
62
+ static readonly ADDRESS: DataIdentifier;
63
+ static readonly AWSSECRETKEY: DataIdentifier;
64
+ static readonly BANKACCOUNTNUMBER_DE: DataIdentifier;
65
+ static readonly BANKACCOUNTNUMBER_ES: DataIdentifier;
66
+ static readonly BANKACCOUNTNUMBER_FR: DataIdentifier;
67
+ static readonly BANKACCOUNTNUMBER_GB: DataIdentifier;
68
+ static readonly BANKACCOUNTNUMBER_IT: DataIdentifier;
69
+ static readonly BANKACCOUNTNUMBER_US: DataIdentifier;
70
+ static readonly CEPCODE_BR: DataIdentifier;
71
+ static readonly CNPJ_BR: DataIdentifier;
72
+ static readonly CPFCODE_BR: DataIdentifier;
73
+ static readonly CREDITCARDEXPIRATION: DataIdentifier;
74
+ static readonly CREDITCARDNUMBER: DataIdentifier;
75
+ static readonly CREDITCARDSECURITYCODE: DataIdentifier;
76
+ static readonly DRIVERSLICENSE_AT: DataIdentifier;
77
+ static readonly DRIVERSLICENSE_AU: DataIdentifier;
78
+ static readonly DRIVERSLICENSE_BE: DataIdentifier;
79
+ static readonly DRIVERSLICENSE_BG: DataIdentifier;
80
+ static readonly DRIVERSLICENSE_CA: DataIdentifier;
81
+ static readonly DRIVERSLICENSE_CY: DataIdentifier;
82
+ static readonly DRIVERSLICENSE_CZ: DataIdentifier;
83
+ static readonly DRIVERSLICENSE_DE: DataIdentifier;
84
+ static readonly DRIVERSLICENSE_DK: DataIdentifier;
85
+ static readonly DRIVERSLICENSE_EE: DataIdentifier;
86
+ static readonly DRIVERSLICENSE_ES: DataIdentifier;
87
+ static readonly DRIVERSLICENSE_FI: DataIdentifier;
88
+ static readonly DRIVERSLICENSE_FR: DataIdentifier;
89
+ static readonly DRIVERSLICENSE_GB: DataIdentifier;
90
+ static readonly DRIVERSLICENSE_GR: DataIdentifier;
91
+ static readonly DRIVERSLICENSE_HR: DataIdentifier;
92
+ static readonly DRIVERSLICENSE_HU: DataIdentifier;
93
+ static readonly DRIVERSLICENSE_IE: DataIdentifier;
94
+ static readonly DRIVERSLICENSE_IT: DataIdentifier;
95
+ static readonly DRIVERSLICENSE_LT: DataIdentifier;
96
+ static readonly DRIVERSLICENSE_LU: DataIdentifier;
97
+ static readonly DRIVERSLICENSE_LV: DataIdentifier;
98
+ static readonly DRIVERSLICENSE_MT: DataIdentifier;
99
+ static readonly DRIVERSLICENSE_NL: DataIdentifier;
100
+ static readonly DRIVERSLICENSE_PL: DataIdentifier;
101
+ static readonly DRIVERSLICENSE_PT: DataIdentifier;
102
+ static readonly DRIVERSLICENSE_RO: DataIdentifier;
103
+ static readonly DRIVERSLICENSE_SE: DataIdentifier;
104
+ static readonly DRIVERSLICENSE_SI: DataIdentifier;
105
+ static readonly DRIVERSLICENSE_SK: DataIdentifier;
106
+ static readonly DRIVERSLICENSE_US: DataIdentifier;
107
+ static readonly DRUGENFORCEMENTAGENCYNUMBER_US: DataIdentifier;
108
+ static readonly ELECTORALROLLNUMBER_GB: DataIdentifier;
109
+ static readonly EMAILADDRESS: DataIdentifier;
110
+ static readonly HEALTHINSURANCECARDNUMBER_EU: DataIdentifier;
111
+ static readonly HEALTHINSURANCECLAIMNUMBER_US: DataIdentifier;
112
+ static readonly HEALTHINSURANCENUMBER_FR: DataIdentifier;
113
+ static readonly HEALTHCAREPROCEDURECODE_US: DataIdentifier;
114
+ static readonly INDIVIDUALTAXIDENTIFICATIONNUMBER_US: DataIdentifier;
115
+ static readonly INSEECODE_FR: DataIdentifier;
116
+ static readonly IPADDRESS: DataIdentifier;
117
+ static readonly LATLONG: DataIdentifier;
118
+ static readonly MEDICAREBENEFICIARYNUMBER_US: DataIdentifier;
119
+ static readonly NAME: DataIdentifier;
120
+ static readonly NATIONALDRUGCODE_US: DataIdentifier;
121
+ static readonly NATIONALIDENTIFICATIONNUMBER_DE: DataIdentifier;
122
+ static readonly NATIONALIDENTIFICATIONNUMBER_ES: DataIdentifier;
123
+ static readonly NATIONALIDENTIFICATIONNUMBER_IT: DataIdentifier;
124
+ static readonly NATIONALINSURANCENUMBER_GB: DataIdentifier;
125
+ static readonly NATIONALPROVIDERID_US: DataIdentifier;
126
+ static readonly NHSNUMBER_GB: DataIdentifier;
127
+ static readonly NIENUMBER_ES: DataIdentifier;
128
+ static readonly NIFNUMBER_ES: DataIdentifier;
129
+ static readonly OPENSSHPRIVATEKEY: DataIdentifier;
130
+ static readonly PASSPORTNUMBER_CA: DataIdentifier;
131
+ static readonly PASSPORTNUMBER_DE: DataIdentifier;
132
+ static readonly PASSPORTNUMBER_ES: DataIdentifier;
133
+ static readonly PASSPORTNUMBER_FR: DataIdentifier;
134
+ static readonly PASSPORTNUMBER_GB: DataIdentifier;
135
+ static readonly PASSPORTNUMBER_IT: DataIdentifier;
136
+ static readonly PASSPORTNUMBER_US: DataIdentifier;
137
+ static readonly PERMANENTRESIDENCENUMBER_CA: DataIdentifier;
138
+ static readonly PERSONALHEALTHNUMBER_CA: DataIdentifier;
139
+ static readonly PGPPRIVATEKEY: DataIdentifier;
140
+ static readonly PHONENUMBER_BR: DataIdentifier;
141
+ static readonly PHONENUMBER_DE: DataIdentifier;
142
+ static readonly PHONENUMBER_ES: DataIdentifier;
143
+ static readonly PHONENUMBER_FR: DataIdentifier;
144
+ static readonly PHONENUMBER_GB: DataIdentifier;
145
+ static readonly PHONENUMBER_IT: DataIdentifier;
146
+ static readonly PHONENUMBER_US: DataIdentifier;
147
+ static readonly PKCSPRIVATEKEY: DataIdentifier;
148
+ static readonly POSTALCODE_CA: DataIdentifier;
149
+ static readonly PUTTYPRIVATEKEY: DataIdentifier;
150
+ static readonly RGNUMBER_BR: DataIdentifier;
151
+ static readonly SOCIALINSURANCENUMBER_CA: DataIdentifier;
152
+ static readonly SSN_ES: DataIdentifier;
153
+ static readonly SSN_US: DataIdentifier;
154
+ static readonly TAXID_DE: DataIdentifier;
155
+ static readonly TAXID_ES: DataIdentifier;
156
+ static readonly TAXID_FR: DataIdentifier;
157
+ static readonly TAXID_GB: DataIdentifier;
158
+ static readonly VEHICLEIDENTIFICATIONNUMBER: DataIdentifier;
159
+ static readonly ZIPCODE_US: DataIdentifier;
160
+ /**
161
+ * Create a managed data identifier not in the list of static members. This is used to maintain forward compatibility, in case a new managed identifier is supported but not updated in CDK yet.
162
+ * @param name - name of the identifier.
163
+ */
164
+ constructor(name: string);
165
+ toString(): string;
166
+ }
167
+ /**
168
+ * A custom data identifier. Include a custom data identifier name and regular expression in the JSON policy used to define the data protection policy.
169
+ */
170
+ export declare class CustomDataIdentifier extends DataIdentifier {
171
+ readonly name: string;
172
+ readonly regex: string;
173
+ /**
174
+ * Create a custom data identifier.
175
+ * @param name - the name of the custom data identifier. This cannot share the same name as a managed data identifier.
176
+ * @param regex - the regular expression to detect and mask log events for.
177
+ */
178
+ constructor(name: string, regex: string);
179
+ /**
180
+ * String representation of a CustomDataIdentifier
181
+ * @returns the name and RegEx of the custom data identifier
182
+ */
183
+ toString(): string;
184
+ }