terraconstructs 0.0.10 → 0.0.12

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 (410) hide show
  1. package/.jsii +104486 -34582
  2. package/lib/aws/arn.js +1 -1
  3. package/lib/aws/aws-construct.d.ts +1 -1
  4. package/lib/aws/aws-construct.js +28 -2
  5. package/lib/aws/aws-stack.d.ts +2 -4
  6. package/lib/aws/aws-stack.js +21 -8
  7. package/lib/aws/aws-tags.d.ts +58 -0
  8. package/lib/aws/aws-tags.js +77 -0
  9. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  10. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  11. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  12. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  13. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  14. package/lib/aws/cloudwatch/alarm.js +1 -1
  15. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  16. package/lib/aws/cloudwatch/dashboard.js +1 -1
  17. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  18. package/lib/aws/cloudwatch/graph.js +8 -8
  19. package/lib/aws/cloudwatch/layout.js +3 -3
  20. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  21. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  22. package/lib/aws/cloudwatch/log-group.js +1 -1
  23. package/lib/aws/cloudwatch/log-query.js +1 -1
  24. package/lib/aws/cloudwatch/log-stream.js +1 -1
  25. package/lib/aws/cloudwatch/metric-filter.d.ts +1 -1
  26. package/lib/aws/cloudwatch/metric-filter.js +4 -4
  27. package/lib/aws/cloudwatch/metric.js +2 -2
  28. package/lib/aws/cloudwatch/pattern.js +3 -3
  29. package/lib/aws/cloudwatch/policy.js +1 -1
  30. package/lib/aws/cloudwatch/private/env-tokens.js +5 -6
  31. package/lib/aws/cloudwatch/private/metric-util.js +4 -5
  32. package/lib/aws/cloudwatch/private/object.js +2 -3
  33. package/lib/aws/cloudwatch/private/rendering.js +3 -3
  34. package/lib/aws/cloudwatch/private/statistic.js +6 -7
  35. package/lib/aws/cloudwatch/query-definition.js +2 -2
  36. package/lib/aws/cloudwatch/stats.js +1 -1
  37. package/lib/aws/cloudwatch/subscription-filter.d.ts +1 -1
  38. package/lib/aws/cloudwatch/subscription-filter.js +4 -4
  39. package/lib/aws/cloudwatch/text.js +1 -1
  40. package/lib/aws/cloudwatch/variable.js +3 -3
  41. package/lib/aws/cloudwatch/widget.d.ts +1 -1
  42. package/lib/aws/cloudwatch/widget.js +4 -4
  43. package/lib/aws/compute/activity.js +3 -2
  44. package/lib/aws/compute/alb/application-listener-action.d.ts +334 -0
  45. package/lib/aws/compute/alb/application-listener-action.js +281 -0
  46. package/lib/aws/compute/alb/application-listener-certificate.d.ts +35 -0
  47. package/lib/aws/compute/alb/application-listener-certificate.js +35 -0
  48. package/lib/aws/compute/alb/application-listener-rule.d.ts +233 -0
  49. package/lib/aws/compute/alb/application-listener-rule.js +220 -0
  50. package/lib/aws/compute/alb/application-listener.d.ts +574 -0
  51. package/lib/aws/compute/alb/application-listener.js +538 -0
  52. package/lib/aws/compute/alb/application-load-balancer.d.ts +715 -0
  53. package/lib/aws/compute/alb/application-load-balancer.js +780 -0
  54. package/lib/aws/compute/alb/application-target-group.d.ts +339 -0
  55. package/lib/aws/compute/alb/application-target-group.js +427 -0
  56. package/lib/aws/compute/alb/conditions.d.ts +61 -0
  57. package/lib/aws/compute/alb/conditions.js +164 -0
  58. package/lib/aws/compute/alb/trust-store-revocation.d.ts +59 -0
  59. package/lib/aws/compute/alb/trust-store-revocation.js +46 -0
  60. package/lib/aws/compute/alb/trust-store.d.ts +86 -0
  61. package/lib/aws/compute/alb/trust-store.js +79 -0
  62. package/lib/aws/compute/architecture.js +1 -1
  63. package/lib/aws/compute/aspects/require-imdsv2-aspect.d.ts +75 -0
  64. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +106 -0
  65. package/lib/aws/compute/bastion-host.d.ts +172 -0
  66. package/lib/aws/compute/bastion-host.js +114 -0
  67. package/lib/aws/compute/chain.js +1 -1
  68. package/lib/aws/compute/cidr-splits.d.ts +49 -0
  69. package/lib/aws/compute/cidr-splits.js +59 -0
  70. package/lib/aws/compute/client-vpn-authorization-rule.d.ts +43 -0
  71. package/lib/aws/compute/client-vpn-authorization-rule.js +30 -0
  72. package/lib/aws/compute/client-vpn-endpoint-types.d.ts +62 -0
  73. package/lib/aws/compute/client-vpn-endpoint-types.js +25 -0
  74. package/lib/aws/compute/client-vpn-endpoint.d.ts +239 -0
  75. package/lib/aws/compute/client-vpn-endpoint.js +259 -0
  76. package/lib/aws/compute/client-vpn-route.d.ts +67 -0
  77. package/lib/aws/compute/client-vpn-route.js +57 -0
  78. package/lib/aws/compute/condition.js +1 -1
  79. package/lib/aws/compute/connections.d.ts +137 -0
  80. package/lib/aws/compute/connections.js +208 -0
  81. package/lib/aws/compute/ec2-augmentations.generated.d.ts +53 -0
  82. package/lib/aws/compute/ec2-augmentations.generated.js +35 -0
  83. package/lib/aws/compute/ec2-canned-metrics.generated.d.ts +555 -0
  84. package/lib/aws/compute/ec2-canned-metrics.generated.js +681 -0
  85. package/lib/aws/compute/ec2-util-v2.d.ts +141 -0
  86. package/lib/aws/compute/ec2-util-v2.js +286 -0
  87. package/lib/aws/compute/ec2-util.d.ts +52 -0
  88. package/lib/aws/compute/ec2-util.js +138 -0
  89. package/lib/aws/compute/elasticloadbalancing-canned-metrics.generated.d.ts +176 -0
  90. package/lib/aws/compute/elasticloadbalancing-canned-metrics.generated.js +119 -0
  91. package/lib/aws/compute/elasticloadbalancingv2-canned-metrics.generated.d.ts +860 -0
  92. package/lib/aws/compute/elasticloadbalancingv2-canned-metrics.generated.js +597 -0
  93. package/lib/aws/compute/event-invoke-config.js +1 -1
  94. package/lib/aws/compute/event-source-filter.js +2 -2
  95. package/lib/aws/compute/event-source-mapping.js +1 -1
  96. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  97. package/lib/aws/compute/event-sources/s3.js +1 -1
  98. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  99. package/lib/aws/compute/event-sources/sqs.js +1 -1
  100. package/lib/aws/compute/fields.js +4 -4
  101. package/lib/aws/compute/function-alias.js +1 -1
  102. package/lib/aws/compute/function-base.js +2 -2
  103. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  104. package/lib/aws/compute/function-destinations/function.js +1 -1
  105. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  106. package/lib/aws/compute/function-nodejs.js +1 -1
  107. package/lib/aws/compute/function-url.js +1 -1
  108. package/lib/aws/compute/function-vpc-config.generated.d.ts +3 -3
  109. package/lib/aws/compute/function-vpc-config.generated.js +1 -1
  110. package/lib/aws/compute/function.d.ts +1 -1
  111. package/lib/aws/compute/function.js +5 -5
  112. package/lib/aws/compute/index-alpha.d.ts +5 -0
  113. package/lib/aws/compute/index-alpha.js +22 -0
  114. package/lib/aws/compute/index.d.ts +60 -0
  115. package/lib/aws/compute/index.js +70 -2
  116. package/lib/aws/compute/instance-types.d.ts +1354 -0
  117. package/lib/aws/compute/instance-types.js +1683 -0
  118. package/lib/aws/compute/instance.d.ts +436 -0
  119. package/lib/aws/compute/instance.js +262 -0
  120. package/lib/aws/compute/ip-addresses.d.ts +249 -0
  121. package/lib/aws/compute/ip-addresses.js +248 -0
  122. package/lib/aws/compute/ipam.d.ts +309 -0
  123. package/lib/aws/compute/ipam.js +306 -0
  124. package/lib/aws/compute/key-pair.d.ts +178 -0
  125. package/lib/aws/compute/key-pair.js +194 -0
  126. package/lib/aws/compute/lambda-augmentations.generated.d.ts +65 -0
  127. package/lib/aws/compute/lambda-augmentations.generated.js +41 -0
  128. package/lib/aws/compute/lambda-canned-metrics.generated.d.ts +316 -0
  129. package/lib/aws/compute/lambda-canned-metrics.generated.js +119 -0
  130. package/lib/aws/compute/launch-template.d.ts +540 -0
  131. package/lib/aws/compute/launch-template.js +468 -0
  132. package/lib/aws/compute/lb-shared/access-logs-accounts.d.ts +7 -0
  133. package/lib/aws/compute/lb-shared/access-logs-accounts.js +46 -0
  134. package/lib/aws/compute/lb-shared/base-listener.d.ts +113 -0
  135. package/lib/aws/compute/lb-shared/base-listener.js +181 -0
  136. package/lib/aws/compute/lb-shared/base-load-balancer.d.ts +212 -0
  137. package/lib/aws/compute/lb-shared/base-load-balancer.js +290 -0
  138. package/lib/aws/compute/lb-shared/base-target-group.d.ts +382 -0
  139. package/lib/aws/compute/lb-shared/base-target-group.js +364 -0
  140. package/lib/aws/compute/lb-shared/enums.d.ts +282 -0
  141. package/lib/aws/compute/lb-shared/enums.js +301 -0
  142. package/lib/aws/compute/lb-shared/grid-lookup-types.d.ts +42 -0
  143. package/lib/aws/compute/lb-shared/grid-lookup-types.js +53 -0
  144. package/lib/aws/compute/lb-shared/imported.d.ts +24 -0
  145. package/lib/aws/compute/lb-shared/imported.js +27 -0
  146. package/lib/aws/compute/lb-shared/lb-listener-config.generated.d.ts +194 -0
  147. package/lib/aws/compute/lb-shared/lb-listener-config.generated.js +3 -0
  148. package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.d.ts +56 -0
  149. package/lib/aws/compute/lb-shared/lb-target-group-attachment-config.generated.js +3 -0
  150. package/lib/aws/compute/lb-shared/listener-action.d.ts +14 -0
  151. package/lib/aws/compute/lb-shared/listener-action.js +4 -0
  152. package/lib/aws/compute/lb-shared/listener-certificate.d.ts +28 -0
  153. package/lib/aws/compute/lb-shared/listener-certificate.js +29 -0
  154. package/lib/aws/compute/lb-shared/load-balancer-targets.d.ts +93 -0
  155. package/lib/aws/compute/lb-shared/load-balancer-targets.js +127 -0
  156. package/lib/aws/compute/lb-shared/util.d.ts +113 -0
  157. package/lib/aws/compute/lb-shared/util.js +264 -0
  158. package/lib/aws/compute/lb-targets/alb-target.d.ts +67 -0
  159. package/lib/aws/compute/lb-targets/alb-target.js +100 -0
  160. package/lib/aws/compute/lb-targets/index.d.ts +4 -0
  161. package/lib/aws/compute/lb-targets/index.js +22 -0
  162. package/lib/aws/compute/lb-targets/instance-target.d.ts +42 -0
  163. package/lib/aws/compute/lb-targets/instance-target.js +67 -0
  164. package/lib/aws/compute/lb-targets/ip-target.d.ts +55 -0
  165. package/lib/aws/compute/lb-targets/ip-target.js +79 -0
  166. package/lib/aws/compute/lb-targets/lambda-target.d.ts +25 -0
  167. package/lib/aws/compute/lb-targets/lambda-target.js +50 -0
  168. package/lib/aws/compute/load-balancer.d.ts +336 -0
  169. package/lib/aws/compute/load-balancer.js +287 -0
  170. package/lib/aws/compute/machine-image/amazon-linux-2022.d.ts +63 -0
  171. package/lib/aws/compute/machine-image/amazon-linux-2022.js +84 -0
  172. package/lib/aws/compute/machine-image/amazon-linux-2023.d.ts +63 -0
  173. package/lib/aws/compute/machine-image/amazon-linux-2023.js +84 -0
  174. package/lib/aws/compute/machine-image/amazon-linux2.d.ts +76 -0
  175. package/lib/aws/compute/machine-image/amazon-linux2.js +87 -0
  176. package/lib/aws/compute/machine-image/common.d.ts +181 -0
  177. package/lib/aws/compute/machine-image/common.js +122 -0
  178. package/lib/aws/compute/machine-image/index.d.ts +5 -0
  179. package/lib/aws/compute/machine-image/index.js +22 -0
  180. package/lib/aws/compute/machine-image/machine-image.d.ts +463 -0
  181. package/lib/aws/compute/machine-image/machine-image.js +566 -0
  182. package/lib/aws/compute/machine-image/utils.d.ts +2 -0
  183. package/lib/aws/compute/machine-image/utils.js +17 -0
  184. package/lib/aws/compute/nat.d.ts +325 -0
  185. package/lib/aws/compute/nat.js +455 -0
  186. package/lib/aws/compute/network-acl-types.d.ts +152 -0
  187. package/lib/aws/compute/network-acl-types.js +156 -0
  188. package/lib/aws/compute/network-acl.d.ts +285 -0
  189. package/lib/aws/compute/network-acl.js +207 -0
  190. package/lib/aws/compute/network-util.d.ts +116 -0
  191. package/lib/aws/compute/network-util.js +241 -0
  192. package/lib/aws/compute/nlb/network-listener-action.d.ts +92 -0
  193. package/lib/aws/compute/nlb/network-listener-action.js +146 -0
  194. package/lib/aws/compute/nlb/network-listener-certificate.d.ts +24 -0
  195. package/lib/aws/compute/nlb/network-listener-certificate.js +25 -0
  196. package/lib/aws/compute/nlb/network-listener.d.ts +248 -0
  197. package/lib/aws/compute/nlb/network-listener.js +217 -0
  198. package/lib/aws/compute/nlb/network-load-balancer.d.ts +315 -0
  199. package/lib/aws/compute/nlb/network-load-balancer.js +360 -0
  200. package/lib/aws/compute/nlb/network-target-group.d.ts +153 -0
  201. package/lib/aws/compute/nlb/network-target-group.js +223 -0
  202. package/lib/aws/compute/peer.d.ts +64 -0
  203. package/lib/aws/compute/peer.js +235 -0
  204. package/lib/aws/compute/placement-group.d.ts +161 -0
  205. package/lib/aws/compute/placement-group.js +133 -0
  206. package/lib/aws/compute/port.d.ts +287 -0
  207. package/lib/aws/compute/port.js +390 -0
  208. package/lib/aws/compute/prefix-list.d.ts +131 -0
  209. package/lib/aws/compute/prefix-list.js +114 -0
  210. package/lib/aws/compute/private/context-stub.d.ts +7 -0
  211. package/lib/aws/compute/private/context-stub.js +43 -0
  212. package/lib/aws/compute/private/ebs-util.d.ts +14 -0
  213. package/lib/aws/compute/private/ebs-util.js +145 -0
  214. package/lib/aws/compute/private/intrinstics.js +2 -1
  215. package/lib/aws/compute/private/json-path.js +8 -8
  216. package/lib/aws/compute/private/util.js +2 -3
  217. package/lib/aws/compute/route.d.ts +547 -0
  218. package/lib/aws/compute/route.js +469 -0
  219. package/lib/aws/compute/security-group.d.ts +414 -0
  220. package/lib/aws/compute/security-group.js +538 -0
  221. package/lib/aws/compute/state-graph.js +1 -1
  222. package/lib/aws/compute/state-machine-fragment.js +1 -1
  223. package/lib/aws/compute/state-machine.d.ts +2 -2
  224. package/lib/aws/compute/state-machine.js +14 -12
  225. package/lib/aws/compute/states/choice.js +1 -1
  226. package/lib/aws/compute/states/custom-state.js +1 -1
  227. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  228. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  229. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  230. package/lib/aws/compute/states/distributed-map.js +1 -1
  231. package/lib/aws/compute/states/fail.js +1 -1
  232. package/lib/aws/compute/states/map-base.js +1 -1
  233. package/lib/aws/compute/states/map.js +1 -1
  234. package/lib/aws/compute/states/parallel.js +1 -1
  235. package/lib/aws/compute/states/pass.js +2 -2
  236. package/lib/aws/compute/states/state.js +5 -5
  237. package/lib/aws/compute/states/succeed.js +1 -1
  238. package/lib/aws/compute/states/task-base.js +2 -2
  239. package/lib/aws/compute/states/task.js +1 -1
  240. package/lib/aws/compute/states/wait.js +2 -2
  241. package/lib/aws/compute/stepfunctions-canned-metrics.generated.d.ts +83 -0
  242. package/lib/aws/compute/stepfunctions-canned-metrics.generated.js +127 -0
  243. package/lib/aws/compute/subnet-v2.d.ts +213 -0
  244. package/lib/aws/compute/subnet-v2.js +405 -0
  245. package/lib/aws/compute/subnet.d.ts +37 -0
  246. package/lib/aws/compute/subnet.js +181 -0
  247. package/lib/aws/compute/task-credentials.js +1 -1
  248. package/lib/aws/compute/task-input.js +1 -1
  249. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  250. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  251. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  252. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  253. package/lib/aws/compute/tasks/private/task-utils.js +3 -4
  254. package/lib/aws/compute/tasks/resource-arn-suffix.js +2 -3
  255. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  256. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  257. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  258. package/lib/aws/compute/types.js +2 -2
  259. package/lib/aws/compute/user-data.d.ts +270 -0
  260. package/lib/aws/compute/user-data.js +487 -0
  261. package/lib/aws/compute/util.d.ts +1 -1
  262. package/lib/aws/compute/util.js +4 -5
  263. package/lib/aws/compute/volume.d.ts +480 -0
  264. package/lib/aws/compute/volume.js +426 -0
  265. package/lib/aws/compute/vpc-endpoint-service.d.ts +149 -0
  266. package/lib/aws/compute/vpc-endpoint-service.js +90 -0
  267. package/lib/aws/compute/vpc-endpoint.d.ts +742 -0
  268. package/lib/aws/compute/vpc-endpoint.js +811 -0
  269. package/lib/aws/compute/vpc-flow-logs.d.ts +551 -0
  270. package/lib/aws/compute/vpc-flow-logs.js +693 -0
  271. package/lib/aws/compute/vpc-lookup.d.ts +73 -0
  272. package/lib/aws/compute/vpc-lookup.js +3 -0
  273. package/lib/aws/compute/vpc-v2-base.d.ts +353 -0
  274. package/lib/aws/compute/vpc-v2-base.js +493 -0
  275. package/lib/aws/compute/vpc-v2.d.ts +385 -0
  276. package/lib/aws/compute/vpc-v2.js +408 -0
  277. package/lib/aws/compute/vpc.d.ts +1448 -0
  278. package/lib/aws/compute/vpc.js +1495 -0
  279. package/lib/aws/compute/vpn.d.ts +443 -0
  280. package/lib/aws/compute/vpn.js +397 -0
  281. package/lib/aws/compute/windows-versions.d.ts +418 -0
  282. package/lib/aws/compute/windows-versions.js +426 -0
  283. package/lib/aws/edge/certificate-base.d.ts +20 -0
  284. package/lib/aws/edge/certificate-base.js +28 -0
  285. package/lib/aws/edge/certificate.d.ts +23 -2
  286. package/lib/aws/edge/certificate.js +54 -4
  287. package/lib/aws/edge/distribution.js +3 -3
  288. package/lib/aws/edge/dns-alias-record-targets.js +2 -2
  289. package/lib/aws/edge/dns-record.js +16 -16
  290. package/lib/aws/edge/dns-zone.d.ts +20 -2
  291. package/lib/aws/edge/dns-zone.js +25 -10
  292. package/lib/aws/edge/function.js +2 -2
  293. package/lib/aws/edge/index.d.ts +1 -0
  294. package/lib/aws/edge/index.js +2 -1
  295. package/lib/aws/edge/key-value-store.js +4 -4
  296. package/lib/aws/edge/origin.js +8 -6
  297. package/lib/aws/edge/response-headers-policy.js +1 -1
  298. package/lib/aws/encryption/alias.js +1 -1
  299. package/lib/aws/encryption/key.js +1 -1
  300. package/lib/aws/encryption/via-service-principal.js +1 -1
  301. package/lib/aws/iam/grant.js +2 -2
  302. package/lib/aws/iam/index.d.ts +1 -0
  303. package/lib/aws/iam/index.js +2 -1
  304. package/lib/aws/iam/instance-profile.d.ts +155 -0
  305. package/lib/aws/iam/instance-profile.js +124 -0
  306. package/lib/aws/iam/managed-policy.js +1 -1
  307. package/lib/aws/iam/oidc-provider.js +1 -1
  308. package/lib/aws/iam/policy-document-config.generated.d.ts +8 -8
  309. package/lib/aws/iam/policy-document-config.generated.js +1 -1
  310. package/lib/aws/iam/policy-document.js +1 -1
  311. package/lib/aws/iam/policy-statement-props.generated.d.ts +8 -8
  312. package/lib/aws/iam/policy-statement-props.generated.js +1 -1
  313. package/lib/aws/iam/policy-statement.js +9 -9
  314. package/lib/aws/iam/policy.js +1 -1
  315. package/lib/aws/iam/principals.js +26 -26
  316. package/lib/aws/iam/private/assume-role-policy.js +2 -3
  317. package/lib/aws/iam/private/comparable-principal.js +2 -3
  318. package/lib/aws/iam/private/immutable-role.d.ts +2 -1
  319. package/lib/aws/iam/private/immutable-role.js +3 -3
  320. package/lib/aws/iam/private/imported-role.d.ts +1 -1
  321. package/lib/aws/iam/private/imported-role.js +3 -3
  322. package/lib/aws/iam/private/merge-statements.js +2 -3
  323. package/lib/aws/iam/private/util.js +4 -4
  324. package/lib/aws/iam/role.js +1 -1
  325. package/lib/aws/iam/saml-provider.d.ts +1 -1
  326. package/lib/aws/iam/saml-provider.js +6 -6
  327. package/lib/aws/iam/unknown-principal.js +1 -1
  328. package/lib/aws/iam/utils.js +2 -3
  329. package/lib/aws/index.d.ts +1 -0
  330. package/lib/aws/index.js +4 -1
  331. package/lib/aws/network/simple-ipv4-vpc.js +5 -5
  332. package/lib/aws/network/subnet-group.js +3 -3
  333. package/lib/aws/network/subnet.d.ts +1 -1
  334. package/lib/aws/network/subnet.js +7 -7
  335. package/lib/aws/notify/archive.js +3 -2
  336. package/lib/aws/notify/connection.js +5 -4
  337. package/lib/aws/notify/event-bus.js +5 -4
  338. package/lib/aws/notify/event-pattern.js +3 -3
  339. package/lib/aws/notify/index.js +3 -1
  340. package/lib/aws/notify/input.js +4 -3
  341. package/lib/aws/notify/kinesis-stream.js +3 -2
  342. package/lib/aws/notify/on-event-options.js +2 -1
  343. package/lib/aws/notify/queue-config.generated.d.ts +18 -11
  344. package/lib/aws/notify/queue-config.generated.js +1 -1
  345. package/lib/aws/notify/queue-policy.js +1 -1
  346. package/lib/aws/notify/queue.js +1 -1
  347. package/lib/aws/notify/resource-policy.js +1 -1
  348. package/lib/aws/notify/rule.js +3 -2
  349. package/lib/aws/notify/schedule.js +2 -2
  350. package/lib/aws/notify/sqs-augmentations.generated.d.ts +125 -0
  351. package/lib/aws/notify/sqs-augmentations.generated.js +74 -0
  352. package/lib/aws/notify/target.js +2 -1
  353. package/lib/aws/notify/targets/event-bus.js +1 -1
  354. package/lib/aws/notify/targets/function.js +1 -1
  355. package/lib/aws/notify/targets/log-group.js +2 -2
  356. package/lib/aws/notify/targets/sqs.js +1 -1
  357. package/lib/aws/notify/targets/state-machine.js +1 -1
  358. package/lib/aws/notify/targets/util.d.ts +1 -1
  359. package/lib/aws/notify/targets/util.js +10 -11
  360. package/lib/aws/notify/util.js +4 -4
  361. package/lib/aws/provider-config.generated.d.ts +33 -33
  362. package/lib/aws/provider-config.generated.js +1 -1
  363. package/lib/aws/storage/bucket-notifications.js +1 -1
  364. package/lib/aws/storage/bucket-policy.js +1 -1
  365. package/lib/aws/storage/bucket-source.js +1 -1
  366. package/lib/aws/storage/bucket.d.ts +298 -65
  367. package/lib/aws/storage/bucket.js +548 -225
  368. package/lib/aws/storage/cors-config.generated.d.ts +3 -3
  369. package/lib/aws/storage/cors-config.generated.js +1 -1
  370. package/lib/aws/storage/cors-rule-config.generated.d.ts +5 -5
  371. package/lib/aws/storage/cors-rule-config.generated.js +1 -1
  372. package/lib/aws/storage/index.d.ts +1 -0
  373. package/lib/aws/storage/index.js +2 -1
  374. package/lib/aws/storage/lifecycle-config.generated.d.ts +11 -11
  375. package/lib/aws/storage/lifecycle-config.generated.js +1 -1
  376. package/lib/aws/storage/notification-targets/function.js +6 -6
  377. package/lib/aws/storage/notification-targets/queue.js +1 -1
  378. package/lib/aws/storage/origin-access-identity.d.ts +1 -1
  379. package/lib/aws/storage/origin-access-identity.js +5 -4
  380. package/lib/aws/storage/parameter-util.d.ts +12 -0
  381. package/lib/aws/storage/parameter-util.js +65 -0
  382. package/lib/aws/storage/parameter.d.ts +526 -0
  383. package/lib/aws/storage/parameter.js +606 -0
  384. package/lib/aws/storage/s3-canned-metrics.generated.d.ts +22 -0
  385. package/lib/aws/storage/s3-canned-metrics.generated.js +23 -0
  386. package/lib/aws/storage/util.d.ts +25 -3
  387. package/lib/aws/storage/util.js +84 -17
  388. package/lib/aws/storage/website-config.generated.d.ts +5 -5
  389. package/lib/aws/storage/website-config.generated.js +1 -1
  390. package/lib/aws/util.js +2 -3
  391. package/lib/construct-base.d.ts +10 -1
  392. package/lib/construct-base.js +9 -6
  393. package/lib/duration.js +1 -1
  394. package/lib/expiration.d.ts +48 -0
  395. package/lib/expiration.js +68 -0
  396. package/lib/helpers-internal/index.d.ts +1 -0
  397. package/lib/helpers-internal/index.js +7 -0
  398. package/lib/index.d.ts +2 -0
  399. package/lib/index.js +3 -1
  400. package/lib/private/md5.d.ts +4 -0
  401. package/lib/private/md5.js +14 -0
  402. package/lib/private/unique-resource-name.js +3 -4
  403. package/lib/size.js +2 -2
  404. package/lib/stack-base.d.ts +4 -23
  405. package/lib/stack-base.js +9 -30
  406. package/lib/terra-func.d.ts +103 -0
  407. package/lib/terra-func.js +170 -0
  408. package/lib/token.js +5 -5
  409. package/package.json +15 -8
  410. package/bun.lockb +0 -0
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Ipv6Addresses = exports.IpAddresses = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ // https://github.com/aws/aws-cdk/blob/v2.175.1/packages/aws-cdk-lib/aws-ec2/lib/ip-addresses.ts
7
+ const provider_aws_1 = require("@cdktf/provider-aws");
8
+ const cdktf_1 = require("cdktf");
9
+ const cidr_splits_1 = require("./cidr-splits");
10
+ const network_util_1 = require("./network-util");
11
+ /**
12
+ * An abstract Provider of IpAddresses
13
+ *
14
+ * Note this is specific to the IPv4 CIDR.
15
+ */
16
+ class IpAddresses {
17
+ /**
18
+ * Used to provide local Ip Address Management services for your VPC
19
+ *
20
+ * VPC CIDR is supplied at creation and subnets are calculated locally
21
+ *
22
+ * Note this is specific to the IPv4 CIDR.
23
+ *
24
+ */
25
+ static cidr(cidrBlock) {
26
+ return new Cidr(cidrBlock);
27
+ }
28
+ /**
29
+ * Used to provide centralized Ip Address Management services for your VPC
30
+ *
31
+ * Uses VPC CIDR allocations from AWS IPAM
32
+ *
33
+ * Note this is specific to the IPv4 CIDR.
34
+ *
35
+ * @see https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html
36
+ */
37
+ static awsIpamAllocation(props) {
38
+ return new AwsIpam(props);
39
+ }
40
+ constructor() { }
41
+ }
42
+ exports.IpAddresses = IpAddresses;
43
+ _a = JSII_RTTI_SYMBOL_1;
44
+ IpAddresses[_a] = { fqn: "terraconstructs.aws.compute.IpAddresses", version: "0.0.12" };
45
+ /**
46
+ * Implements integration with Amazon VPC IP Address Manager (IPAM).
47
+ *
48
+ * See the package-level documentation of this package for an overview
49
+ * of the various dimensions in which you can configure your VPC.
50
+ *
51
+ * For example:
52
+ *
53
+ * ```ts
54
+ * new compute.Vpc(stack, 'TheVPC', {
55
+ * ipAddresses: IpAddresses.awsIpamAllocation({
56
+ * ipv4IpamPoolId: pool.ref,
57
+ * ipv4NetmaskLength: 18,
58
+ * defaultSubnetIpv4NetmaskLength: 24
59
+ * })
60
+ * });
61
+ * ```
62
+ *
63
+ */
64
+ class AwsIpam {
65
+ constructor(props) {
66
+ this.props = props;
67
+ }
68
+ /**
69
+ * Allocates Vpc CIDR. called when creating a Vpc using AwsIpam.
70
+ */
71
+ allocateVpcCidr() {
72
+ return {
73
+ ipv4NetmaskLength: this.props.ipv4NetmaskLength,
74
+ ipv4IpamPoolId: this.props.ipv4IpamPoolId,
75
+ };
76
+ }
77
+ /**
78
+ * Allocates Subnets CIDRs. Called by VPC when creating subnets.
79
+ */
80
+ allocateSubnetsCidr(input) {
81
+ const cidrSplit = (0, cidr_splits_1.calculateCidrSplits)(this.props.ipv4NetmaskLength, input.requestedSubnets.map((mask) => {
82
+ if (mask.configuration.cidrMask === undefined &&
83
+ this.props.defaultSubnetIpv4NetmaskLength === undefined) {
84
+ throw new Error("If you have not set a cidr for all subnets in this case you must set a defaultCidrMask in AwsIpam Options");
85
+ }
86
+ const cidrMask = mask.configuration.cidrMask ??
87
+ this.props.defaultSubnetIpv4NetmaskLength;
88
+ if (cidrMask === undefined) {
89
+ throw new Error("Should not have happened, but satisfies the type checker");
90
+ }
91
+ return cidrMask;
92
+ }));
93
+ const allocatedSubnets = cidrSplit.map((subnet) => {
94
+ return {
95
+ cidr: cdktf_1.Fn.cidrsubnet(input.vpcCidr, subnet.newbits, subnet.index),
96
+ };
97
+ });
98
+ return {
99
+ allocatedSubnets: allocatedSubnets,
100
+ };
101
+ }
102
+ }
103
+ /**
104
+ * Implements static Ip assignment locally.
105
+ *
106
+ * See the package-level documentation of this package for an overview
107
+ * of the various dimensions in which you can configure your VPC.
108
+ *
109
+ * For example:
110
+ *
111
+ * ```ts
112
+ * new compute.Vpc(stack, 'TheVPC', {
113
+ * ipAddresses: compute.IpAddresses.cidr('10.0.1.0/20')
114
+ * });
115
+ * ```
116
+ *
117
+ */
118
+ class Cidr {
119
+ constructor(cidrBlock) {
120
+ this.cidrBlock = cidrBlock;
121
+ if (cdktf_1.Token.isUnresolved(cidrBlock)) {
122
+ throw new Error("'cidr' property must be a concrete CIDR string, got a Token (we need to parse it for automatic subdivision)");
123
+ }
124
+ this.networkBuilder = new network_util_1.NetworkBuilder(this.cidrBlock);
125
+ }
126
+ /**
127
+ * Allocates Vpc CIDR. Called when creating a Vpc using IpAddresses.cidr.
128
+ */
129
+ allocateVpcCidr() {
130
+ return {
131
+ cidrBlock: this.networkBuilder.networkCidr.cidr,
132
+ };
133
+ }
134
+ /**
135
+ * Allocates Subnets Cidrs. Called by VPC when creating subnets.
136
+ */
137
+ allocateSubnetsCidr(input) {
138
+ const allocatedSubnets = [];
139
+ const subnetsWithoutDefinedCidr = [];
140
+ //default: Available IP space is evenly divided across subnets if no cidr is given.
141
+ input.requestedSubnets.forEach((requestedSubnet, index) => {
142
+ if (requestedSubnet.configuration.cidrMask === undefined) {
143
+ subnetsWithoutDefinedCidr.push({
144
+ index,
145
+ requestedSubnet,
146
+ });
147
+ }
148
+ else {
149
+ allocatedSubnets.push({
150
+ cidr: this.networkBuilder.addSubnet(requestedSubnet.configuration.cidrMask),
151
+ });
152
+ }
153
+ });
154
+ const cidrMaskForRemaining = this.networkBuilder.maskForRemainingSubnets(subnetsWithoutDefinedCidr.length);
155
+ subnetsWithoutDefinedCidr.forEach((subnet) => {
156
+ allocatedSubnets.splice(subnet.index, 0, {
157
+ cidr: this.networkBuilder.addSubnet(cidrMaskForRemaining),
158
+ });
159
+ });
160
+ return {
161
+ allocatedSubnets: allocatedSubnets,
162
+ };
163
+ }
164
+ }
165
+ /**
166
+ * An abstract Provider of Ipv6Addresses.
167
+ *
168
+ * Note this is specific to the IPv6 CIDR.
169
+ */
170
+ class Ipv6Addresses {
171
+ /**
172
+ * Used for IPv6 address management with Amazon provided CIDRs.
173
+ *
174
+ * Note this is specific to the IPv6 CIDR.
175
+ */
176
+ static amazonProvided() {
177
+ return new AmazonProvided();
178
+ }
179
+ constructor() { }
180
+ }
181
+ exports.Ipv6Addresses = Ipv6Addresses;
182
+ _b = JSII_RTTI_SYMBOL_1;
183
+ Ipv6Addresses[_b] = { fqn: "terraconstructs.aws.compute.Ipv6Addresses", version: "0.0.12" };
184
+ /**
185
+ * Implements integration with Amazon provided IPv6 CIDRs.
186
+ *
187
+ * Note this is specific to the IPv6 CIDR.
188
+ */
189
+ class AmazonProvided {
190
+ constructor() {
191
+ this.amazonProvided = true;
192
+ }
193
+ /**
194
+ * Called by VPC to allocate IPv6 CIDR.
195
+ *
196
+ * Creates an Amazon provided CIDR block.
197
+ *
198
+ * Note this is specific to the IPv6 CIDR.
199
+ */
200
+ allocateVpcIpv6Cidr(input) {
201
+ //throw new Error(`vpcId not found, got ${(scope as any).vpcId}`);
202
+ return new provider_aws_1.vpcIpv6CidrBlockAssociation.VpcIpv6CidrBlockAssociation(input.scope, "ipv6cidr", {
203
+ vpcId: input.vpcId,
204
+ assignGeneratedIpv6CidrBlock: this.amazonProvided,
205
+ });
206
+ }
207
+ /**
208
+ * Split IPv6 CIDR block up for subnets.
209
+ *
210
+ * Called by VPC when creating subnets with IPv6 enabled.
211
+ *
212
+ * Note this is specific to the IPv6 CIDR.
213
+ */
214
+ createIpv6CidrBlocks(input) {
215
+ let parentMask = input.parentMask ?? 56;
216
+ if (!cdktf_1.Token.isUnresolved(input.ipv6SelectedCidr)) {
217
+ parentMask = parseInt(input.ipv6SelectedCidr.split("/")[1], 10);
218
+ if (Number.isNaN(parentMask)) {
219
+ throw new Error(`Parent CIDR must include a valid mask, got: '${input.ipv6SelectedCidr}'`);
220
+ }
221
+ }
222
+ const sizeMask = parseInt(input.sizeMask ?? "64"); // 128 - 64
223
+ const newbits = sizeMask - parentMask;
224
+ return cdktf_1.Fn.cidrsubnets(input.ipv6SelectedCidr, Array.from({ length: input.subnetCount }, () => newbits));
225
+ }
226
+ /**
227
+ * Allocates Subnets IPv6 CIDRs. Called by VPC when creating subnets with IPv6 enabled.
228
+ *
229
+ * This function takes the list of allocated subnets,
230
+ * and copies the IPv4 CIDRs while also assigning the IPv6 CIDR.
231
+ *
232
+ * Note this is specific to the IPv6 CIDR.
233
+ */
234
+ allocateSubnetsIpv6Cidr(input) {
235
+ const allocatedSubnets = [];
236
+ input.allocatedSubnets.forEach((allocated, i) => {
237
+ const allocatedIpv6 = {
238
+ cidr: allocated.cidr,
239
+ ipv6Cidr: cdktf_1.Fn.element(input.ipv6Cidrs, i),
240
+ };
241
+ allocatedSubnets.push(allocatedIpv6);
242
+ });
243
+ return {
244
+ allocatedSubnets: allocatedSubnets,
245
+ };
246
+ }
247
+ }
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXAtYWRkcmVzc2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL2lwLWFkZHJlc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdHQUFnRztBQUVoRyxzREFHNkI7QUFDN0IsaUNBQWtDO0FBRWxDLCtDQUFvRDtBQUNwRCxpREFBZ0Q7QUFHaEQ7Ozs7R0FJRztBQUNILE1BQWEsV0FBVztJQUN0Qjs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFpQjtRQUNsQyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFtQjtRQUNqRCxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBdUIsQ0FBQzs7QUExQjFCLGtDQTJCQzs7O0FBdU5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFNLE9BQU87SUFDWCxZQUE2QixLQUFtQjtRQUFuQixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBQUcsQ0FBQztJQUVwRDs7T0FFRztJQUNILGVBQWU7UUFDYixPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUI7WUFDL0MsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYztTQUMxQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsS0FBMEI7UUFDNUMsTUFBTSxTQUFTLEdBQUcsSUFBQSxpQ0FBbUIsRUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFDNUIsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xDLElBQ0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEtBQUssU0FBUztnQkFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsS0FBSyxTQUFTLEVBQ3ZELENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwyR0FBMkcsQ0FDNUcsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FDWixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVE7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUM7WUFFNUMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxLQUFLLENBQ2IsMERBQTBELENBQzNELENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLE1BQU0sZ0JBQWdCLEdBQXNCLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNuRSxPQUFPO2dCQUNMLElBQUksRUFBRSxVQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ2pFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxnQkFBZ0IsRUFBRSxnQkFBZ0I7U0FDbkMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxJQUFJO0lBR1IsWUFBNkIsU0FBaUI7UUFBakIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUM1QyxJQUFJLGFBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLDZHQUE2RyxDQUM5RyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSw2QkFBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTztZQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJO1NBQ2hELENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxLQUEwQjtRQUM1QyxNQUFNLGdCQUFnQixHQUFzQixFQUFFLENBQUM7UUFDL0MsTUFBTSx5QkFBeUIsR0FBK0IsRUFBRSxDQUFDO1FBQ2pFLG1GQUFtRjtRQUVuRixLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3hELElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3pELHlCQUF5QixDQUFDLElBQUksQ0FBQztvQkFDN0IsS0FBSztvQkFDTCxlQUFlO2lCQUNoQixDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZ0JBQWdCLENBQUMsSUFBSSxDQUFDO29CQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQ2pDLGVBQWUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUN2QztpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQ3RFLHlCQUF5QixDQUFDLE1BQU0sQ0FDakMsQ0FBQztRQUNGLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzNDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtnQkFDdkMsSUFBSSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDO2FBQzFELENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLGdCQUFnQixFQUFFLGdCQUFnQjtTQUNuQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsYUFBYTtJQUN4Qjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLGNBQWM7UUFDMUIsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQkFBdUIsQ0FBQzs7QUFWMUIsc0NBV0M7OztBQXVDRDs7OztHQUlHO0FBQ0gsTUFBTSxjQUFjO0lBU2xCO1FBQ0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILG1CQUFtQixDQUNqQixLQUFpQztRQUVqQyxrRUFBa0U7UUFDbEUsT0FBTyxJQUFJLDBDQUEyQixDQUFDLDJCQUEyQixDQUNoRSxLQUFLLENBQUMsS0FBSyxFQUNYLFVBQVUsRUFDVjtZQUNFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQiw0QkFBNEIsRUFBRSxJQUFJLENBQUMsY0FBYztTQUNsRCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsb0JBQW9CLENBQUMsS0FBa0M7UUFDckQsSUFBSSxVQUFVLEdBQVcsS0FBSyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUNoRCxVQUFVLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0RBQWdELEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxDQUMxRSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDOUQsTUFBTSxPQUFPLEdBQUcsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUV0QyxPQUFPLFVBQUUsQ0FBQyxXQUFXLENBQ25CLEtBQUssQ0FBQyxnQkFBZ0IsRUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQ3pELENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILHVCQUF1QixDQUFDLEtBQThCO1FBQ3BELE1BQU0sZ0JBQWdCLEdBQXNCLEVBQUUsQ0FBQztRQUUvQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sYUFBYSxHQUFvQjtnQkFDckMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO2dCQUNwQixRQUFRLEVBQUUsVUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUN6QyxDQUFDO1lBQ0YsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLGdCQUFnQixFQUFFLGdCQUFnQjtTQUNuQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTc1LjEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWVjMi9saWIvaXAtYWRkcmVzc2VzLnRzXG5cbmltcG9ydCB7XG4gIC8vIHZwY0lwdjRDaWRyQmxvY2tBc3NvY2lhdGlvbixcbiAgdnBjSXB2NkNpZHJCbG9ja0Fzc29jaWF0aW9uLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgRm4sIFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgY2FsY3VsYXRlQ2lkclNwbGl0cyB9IGZyb20gXCIuL2NpZHItc3BsaXRzXCI7XG5pbXBvcnQgeyBOZXR3b3JrQnVpbGRlciB9IGZyb20gXCIuL25ldHdvcmstdXRpbFwiO1xuaW1wb3J0IHsgU3VibmV0Q29uZmlndXJhdGlvbiB9IGZyb20gXCIuL3ZwY1wiO1xuXG4vKipcbiAqIEFuIGFic3RyYWN0IFByb3ZpZGVyIG9mIElwQWRkcmVzc2VzXG4gKlxuICogTm90ZSB0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBJUHY0IENJRFIuXG4gKi9cbmV4cG9ydCBjbGFzcyBJcEFkZHJlc3NlcyB7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHByb3ZpZGUgbG9jYWwgSXAgQWRkcmVzcyBNYW5hZ2VtZW50IHNlcnZpY2VzIGZvciB5b3VyIFZQQ1xuICAgKlxuICAgKiBWUEMgQ0lEUiBpcyBzdXBwbGllZCBhdCBjcmVhdGlvbiBhbmQgc3VibmV0cyBhcmUgY2FsY3VsYXRlZCBsb2NhbGx5XG4gICAqXG4gICAqIE5vdGUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgSVB2NCBDSURSLlxuICAgKlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjaWRyKGNpZHJCbG9jazogc3RyaW5nKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IENpZHIoY2lkckJsb2NrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHByb3ZpZGUgY2VudHJhbGl6ZWQgSXAgQWRkcmVzcyBNYW5hZ2VtZW50IHNlcnZpY2VzIGZvciB5b3VyIFZQQ1xuICAgKlxuICAgKiBVc2VzIFZQQyBDSURSIGFsbG9jYXRpb25zIGZyb20gQVdTIElQQU1cbiAgICpcbiAgICogTm90ZSB0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBJUHY0IENJRFIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvaXBhbS93aGF0LWl0LWlzLWlwYW0uaHRtbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhd3NJcGFtQWxsb2NhdGlvbihwcm9wczogQXdzSXBhbVByb3BzKTogSUlwQWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IEF3c0lwYW0ocHJvcHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG59XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb25zIGZvciBpcCBhZGRyZXNzIG1hbmFnZW1lbnQuXG4gKlxuICogTm90ZSB0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBJUHY0IENJRFIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUlwQWRkcmVzc2VzIHtcbiAgLyoqXG4gICAqIENhbGxlZCBieSB0aGUgVlBDIHRvIHJldHJpZXZlIFZQQyBvcHRpb25zIGZyb20gdGhlIElwYW1cbiAgICpcbiAgICogRG9uJ3QgY2FsbCB0aGlzIGRpcmVjdGx5LCB0aGUgVlBDIHdpbGwgY2FsbCBpdCBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgYWxsb2NhdGVWcGNDaWRyKCk6IFZwY0lwYW1PcHRpb25zO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgdGhlIFZQQyB0byByZXRyaWV2ZSBTdWJuZXQgb3B0aW9ucyBmcm9tIHRoZSBJcGFtXG4gICAqXG4gICAqIERvbid0IGNhbGwgdGhpcyBkaXJlY3RseSwgdGhlIFZQQyB3aWxsIGNhbGwgaXQgYXV0b21hdGljYWxseS5cbiAgICovXG4gIGFsbG9jYXRlU3VibmV0c0NpZHIoaW5wdXQ6IEFsbG9jYXRlQ2lkclJlcXVlc3QpOiBTdWJuZXRJcGFtT3B0aW9ucztcbn1cblxuLyoqXG4gKiBDSURSIEFsbG9jYXRlZCBWcGNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWcGNJcGFtT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDSURSIEJsb2NrIGZvciBWcGNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBPbmx5IHJlcXVpcmVkIHdoZW4gSXBhbSBoYXMgY29uY3JldGUgYWxsb2NhdGlvbiBhdmFpbGFibGUgZm9yIHN0YXRpYyBWcGNcbiAgICovXG4gIHJlYWRvbmx5IGNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogQ0lEUiBNYXNrIGZvciBWcGNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBPbmx5IHJlcXVpcmVkIHdoZW4gdXNpbmcgQVdTIElwYW1cbiAgICovXG4gIHJlYWRvbmx5IGlwdjROZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBpcHY0IElQQU0gUG9vbCBJZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyBBV1MgSXBhbVxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NElwYW1Qb29sSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU3VibmV0IHJlcXVlc3RlZCBmb3IgYWxsb2NhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RlZFN1Ym5ldCB7XG4gIC8qKlxuICAgKiBUaGUgYXZhaWxhYmlsaXR5IHpvbmUgZm9yIHRoZSBzdWJuZXRcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmeSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGEgc2luZ2xlIHN1Ym5ldCBncm91cCBpbiBhIFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlndXJhdGlvbjogU3VibmV0Q29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogSWQgZm9yIHRoZSBTdWJuZXQgY29uc3RydWN0XG4gICAqL1xuICByZWFkb25seSBzdWJuZXRDb25zdHJ1Y3RJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGluc3RhbmNlIG9mIGEgU3VibmV0IHJlcXVlc3RlZCBmb3IgYWxsb2NhdGlvblxuICovXG5pbnRlcmZhY2UgSVJlcXVlc3RlZFN1Ym5ldEluc3RhbmNlIHtcbiAgLyoqXG4gICAqIEluZGV4IGxvY2F0aW9uIG9mIFN1Ym5ldCByZXF1ZXN0ZWQgZm9yIGFsbG9jYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldCByZXF1ZXN0ZWQgZm9yIGFsbG9jYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RlZFN1Ym5ldDogUmVxdWVzdGVkU3VibmV0O1xufVxuXG4vKipcbiAqIFJlcXVlc3QgZm9yIHN1Ym5ldHMgQ0lEUiB0byBiZSBhbGxvY2F0ZWQgZm9yIGEgVnBjXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxsb2NhdGVDaWRyUmVxdWVzdCB7XG4gIC8qKlxuICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGZvciB0aGlzIFZwY1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjQ2lkcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgU3VibmV0cyB0byBiZSBhbGxvY2F0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RlZFN1Ym5ldHM6IFJlcXVlc3RlZFN1Ym5ldFtdO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgZm9yIGFsbG9jYXRpb24gb2YgdGhlIFZQQyBJUHY2IENJRFIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxsb2NhdGVWcGNJcHY2Q2lkclJlcXVlc3Qge1xuICAvKipcbiAgICogVGhlIFZQQyBjb25zdHJ1Y3QgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IENvbnN0cnVjdDtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBWUEMuXG4gICAqL1xuICByZWFkb25seSB2cGNJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgZm9yIElQdjYgQ0lEUiBibG9jayB0byBiZSBzcGxpdCB1cC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVJcHY2Q2lkckJsb2Nrc1JlcXVlc3Qge1xuICAvKipcbiAgICogVGhlIElQdjYgQ0lEUiBibG9jayBzdHJpbmcgcmVwcmVzZW50YXRpb24uXG4gICAqL1xuICByZWFkb25seSBpcHY2U2VsZWN0ZWRDaWRyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc3VibmV0cyB0byBhc3NpZ24gQ0lEUnMgdG8uXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIHRoZSBjb3ZlcmVkIGJpdHMgaW4gdGhlIENJRFIuXG4gICAqIEBkZWZhdWx0IC0gMTI4IC0gNjQgPSAvNjQgQ0lEUi5cbiAgICovXG4gIHJlYWRvbmx5IHNpemVNYXNrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyZW50IG1hc2sgb2YgdGhlIENJRFIuXG4gICAqXG4gICAqIFZhbGlkIHZhbHVlcyBhcmUgZnJvbSA0NCB0byA2MCBpbiBpbmNyZW1lbnRzIG9mIDQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gNTZcbiAgICovXG4gIHJlYWRvbmx5IHBhcmVudE1hc2s/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVxdWVzdCBmb3Igc3VibmV0IElQdjYgQ0lEUnMgdG8gYmUgYWxsb2NhdGVkIGZvciBhIFZQQy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGxvY2F0ZUlwdjZDaWRyUmVxdWVzdCB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHN1Ym5ldHMgYWxsb2NhdGVkIHdpdGggSVB2NCBDSURSc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb2NhdGVkU3VibmV0czogQWxsb2NhdGVkU3VibmV0W107XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY2IENJRFJzIHRvIGJlIGFsbG9jYXRlZCB0byB0aGUgc3VibmV0c1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NkNpZHJzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDSURSIEFsbG9jYXRlZCBTdWJuZXRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0SXBhbU9wdGlvbnMge1xuICAvKipcbiAgICogQ0lEUiBBbGxvY2F0aW9ucyBmb3IgU3VibmV0c1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb2NhdGVkU3VibmV0czogQWxsb2NhdGVkU3VibmV0W107XG59XG5cbi8qKlxuICogQ0lEUiBBbGxvY2F0ZWQgU3VibmV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxsb2NhdGVkU3VibmV0IHtcbiAgLyoqXG4gICAqIElQdjQgQ0lEUiBBbGxvY2F0aW9ucyBmb3IgYSBTdWJuZXQuXG4gICAqXG4gICAqIE5vdGUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgSVB2NCBDSURSLlxuICAgKi9cbiAgcmVhZG9ubHkgY2lkcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY2IENJRFIgQWxsb2NhdGlvbnMgZm9yIGEgU3VibmV0LlxuICAgKlxuICAgKiBOb3RlIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIElQdjYgQ0lEUi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBJUFY2IENJRFJcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZDaWRyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIEF3c0lwYW1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBd3NJcGFtUHJvcHMge1xuICAvKipcbiAgICogTmV0bWFzayBsZW5ndGggZm9yIFZwY1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NE5ldG1hc2tMZW5ndGg6IG51bWJlcjtcblxuICAvKipcbiAgICogSXBhbSBQb29sIElkIGZvciBpcHY0IGFsbG9jYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRJcGFtUG9vbElkOiBzdHJpbmc7IC8vIHRvZG86IHNob3VsZCBiZSBhIHR5cGVcblxuICAvKipcbiAgICogRGVmYXVsdCBsZW5ndGggZm9yIFN1Ym5ldCBpcHY0IE5ldHdvcmsgbWFza1xuICAgKlxuICAgKiBTcGVjaWZ5IHRoaXMgb3B0aW9uIG9ubHkgaWYgeW91IGRvIG5vdCBzcGVjaWZ5IGFsbCBTdWJuZXRzIHVzaW5nIFN1Ym5ldENvbmZpZ3VyYXRpb24gd2l0aCBhIGNpZHJNYXNrXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBpcHY0IFN1Ym5ldCBNYXNrIGZvciBzdWJuZXRzIGluIFZwY1xuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFN1Ym5ldElwdjROZXRtYXNrTGVuZ3RoPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEltcGxlbWVudHMgaW50ZWdyYXRpb24gd2l0aCBBbWF6b24gVlBDIElQIEFkZHJlc3MgTWFuYWdlciAoSVBBTSkuXG4gKlxuICogU2VlIHRoZSBwYWNrYWdlLWxldmVsIGRvY3VtZW50YXRpb24gb2YgdGhpcyBwYWNrYWdlIGZvciBhbiBvdmVydmlld1xuICogb2YgdGhlIHZhcmlvdXMgZGltZW5zaW9ucyBpbiB3aGljaCB5b3UgY2FuIGNvbmZpZ3VyZSB5b3VyIFZQQy5cbiAqXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogIG5ldyBjb21wdXRlLlZwYyhzdGFjaywgJ1RoZVZQQycsIHtcbiAqICAgaXBBZGRyZXNzZXM6IElwQWRkcmVzc2VzLmF3c0lwYW1BbGxvY2F0aW9uKHtcbiAqICAgICBpcHY0SXBhbVBvb2xJZDogcG9vbC5yZWYsXG4gKiAgICAgaXB2NE5ldG1hc2tMZW5ndGg6IDE4LFxuICogICAgIGRlZmF1bHRTdWJuZXRJcHY0TmV0bWFza0xlbmd0aDogMjRcbiAqICAgfSlcbiAqIH0pO1xuICogYGBgXG4gKlxuICovXG5jbGFzcyBBd3NJcGFtIGltcGxlbWVudHMgSUlwQWRkcmVzc2VzIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQXdzSXBhbVByb3BzKSB7fVxuXG4gIC8qKlxuICAgKiBBbGxvY2F0ZXMgVnBjIENJRFIuIGNhbGxlZCB3aGVuIGNyZWF0aW5nIGEgVnBjIHVzaW5nIEF3c0lwYW0uXG4gICAqL1xuICBhbGxvY2F0ZVZwY0NpZHIoKTogVnBjSXBhbU9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICBpcHY0TmV0bWFza0xlbmd0aDogdGhpcy5wcm9wcy5pcHY0TmV0bWFza0xlbmd0aCxcbiAgICAgIGlwdjRJcGFtUG9vbElkOiB0aGlzLnByb3BzLmlwdjRJcGFtUG9vbElkLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWxsb2NhdGVzIFN1Ym5ldHMgQ0lEUnMuIENhbGxlZCBieSBWUEMgd2hlbiBjcmVhdGluZyBzdWJuZXRzLlxuICAgKi9cbiAgYWxsb2NhdGVTdWJuZXRzQ2lkcihpbnB1dDogQWxsb2NhdGVDaWRyUmVxdWVzdCk6IFN1Ym5ldElwYW1PcHRpb25zIHtcbiAgICBjb25zdCBjaWRyU3BsaXQgPSBjYWxjdWxhdGVDaWRyU3BsaXRzKFxuICAgICAgdGhpcy5wcm9wcy5pcHY0TmV0bWFza0xlbmd0aCxcbiAgICAgIGlucHV0LnJlcXVlc3RlZFN1Ym5ldHMubWFwKChtYXNrKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBtYXNrLmNvbmZpZ3VyYXRpb24uY2lkck1hc2sgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMucHJvcHMuZGVmYXVsdFN1Ym5ldElwdjROZXRtYXNrTGVuZ3RoID09PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgXCJJZiB5b3UgaGF2ZSBub3Qgc2V0IGEgY2lkciBmb3IgYWxsIHN1Ym5ldHMgaW4gdGhpcyBjYXNlIHlvdSBtdXN0IHNldCBhIGRlZmF1bHRDaWRyTWFzayBpbiBBd3NJcGFtIE9wdGlvbnNcIixcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2lkck1hc2sgPVxuICAgICAgICAgIG1hc2suY29uZmlndXJhdGlvbi5jaWRyTWFzayA/P1xuICAgICAgICAgIHRoaXMucHJvcHMuZGVmYXVsdFN1Ym5ldElwdjROZXRtYXNrTGVuZ3RoO1xuXG4gICAgICAgIGlmIChjaWRyTWFzayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgXCJTaG91bGQgbm90IGhhdmUgaGFwcGVuZWQsIGJ1dCBzYXRpc2ZpZXMgdGhlIHR5cGUgY2hlY2tlclwiLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2lkck1hc2s7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgYWxsb2NhdGVkU3VibmV0czogQWxsb2NhdGVkU3VibmV0W10gPSBjaWRyU3BsaXQubWFwKChzdWJuZXQpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNpZHI6IEZuLmNpZHJzdWJuZXQoaW5wdXQudnBjQ2lkciwgc3VibmV0Lm5ld2JpdHMsIHN1Ym5ldC5pbmRleCksXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFsbG9jYXRlZFN1Ym5ldHM6IGFsbG9jYXRlZFN1Ym5ldHMsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEltcGxlbWVudHMgc3RhdGljIElwIGFzc2lnbm1lbnQgbG9jYWxseS5cbiAqXG4gKiBTZWUgdGhlIHBhY2thZ2UtbGV2ZWwgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIHBhY2thZ2UgZm9yIGFuIG92ZXJ2aWV3XG4gKiBvZiB0aGUgdmFyaW91cyBkaW1lbnNpb25zIGluIHdoaWNoIHlvdSBjYW4gY29uZmlndXJlIHlvdXIgVlBDLlxuICpcbiAqIEZvciBleGFtcGxlOlxuICpcbiAqIGBgYHRzXG4gKiAgbmV3IGNvbXB1dGUuVnBjKHN0YWNrLCAnVGhlVlBDJywge1xuICogICBpcEFkZHJlc3NlczogY29tcHV0ZS5JcEFkZHJlc3Nlcy5jaWRyKCcxMC4wLjEuMC8yMCcpXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqL1xuY2xhc3MgQ2lkciBpbXBsZW1lbnRzIElJcEFkZHJlc3NlcyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmV0d29ya0J1aWxkZXI6IE5ldHdvcmtCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2lkckJsb2NrOiBzdHJpbmcpIHtcbiAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKGNpZHJCbG9jaykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCInY2lkcicgcHJvcGVydHkgbXVzdCBiZSBhIGNvbmNyZXRlIENJRFIgc3RyaW5nLCBnb3QgYSBUb2tlbiAod2UgbmVlZCB0byBwYXJzZSBpdCBmb3IgYXV0b21hdGljIHN1YmRpdmlzaW9uKVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLm5ldHdvcmtCdWlsZGVyID0gbmV3IE5ldHdvcmtCdWlsZGVyKHRoaXMuY2lkckJsb2NrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvY2F0ZXMgVnBjIENJRFIuIENhbGxlZCB3aGVuIGNyZWF0aW5nIGEgVnBjIHVzaW5nIElwQWRkcmVzc2VzLmNpZHIuXG4gICAqL1xuICBhbGxvY2F0ZVZwY0NpZHIoKTogVnBjSXBhbU9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICBjaWRyQmxvY2s6IHRoaXMubmV0d29ya0J1aWxkZXIubmV0d29ya0NpZHIuY2lkcixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRlcyBTdWJuZXRzIENpZHJzLiBDYWxsZWQgYnkgVlBDIHdoZW4gY3JlYXRpbmcgc3VibmV0cy5cbiAgICovXG4gIGFsbG9jYXRlU3VibmV0c0NpZHIoaW5wdXQ6IEFsbG9jYXRlQ2lkclJlcXVlc3QpOiBTdWJuZXRJcGFtT3B0aW9ucyB7XG4gICAgY29uc3QgYWxsb2NhdGVkU3VibmV0czogQWxsb2NhdGVkU3VibmV0W10gPSBbXTtcbiAgICBjb25zdCBzdWJuZXRzV2l0aG91dERlZmluZWRDaWRyOiBJUmVxdWVzdGVkU3VibmV0SW5zdGFuY2VbXSA9IFtdO1xuICAgIC8vZGVmYXVsdDogQXZhaWxhYmxlIElQIHNwYWNlIGlzIGV2ZW5seSBkaXZpZGVkIGFjcm9zcyBzdWJuZXRzIGlmIG5vIGNpZHIgaXMgZ2l2ZW4uXG5cbiAgICBpbnB1dC5yZXF1ZXN0ZWRTdWJuZXRzLmZvckVhY2goKHJlcXVlc3RlZFN1Ym5ldCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChyZXF1ZXN0ZWRTdWJuZXQuY29uZmlndXJhdGlvbi5jaWRyTWFzayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHN1Ym5ldHNXaXRob3V0RGVmaW5lZENpZHIucHVzaCh7XG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgcmVxdWVzdGVkU3VibmV0LFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsbG9jYXRlZFN1Ym5ldHMucHVzaCh7XG4gICAgICAgICAgY2lkcjogdGhpcy5uZXR3b3JrQnVpbGRlci5hZGRTdWJuZXQoXG4gICAgICAgICAgICByZXF1ZXN0ZWRTdWJuZXQuY29uZmlndXJhdGlvbi5jaWRyTWFzayxcbiAgICAgICAgICApLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGNpZHJNYXNrRm9yUmVtYWluaW5nID0gdGhpcy5uZXR3b3JrQnVpbGRlci5tYXNrRm9yUmVtYWluaW5nU3VibmV0cyhcbiAgICAgIHN1Ym5ldHNXaXRob3V0RGVmaW5lZENpZHIubGVuZ3RoLFxuICAgICk7XG4gICAgc3VibmV0c1dpdGhvdXREZWZpbmVkQ2lkci5mb3JFYWNoKChzdWJuZXQpID0+IHtcbiAgICAgIGFsbG9jYXRlZFN1Ym5ldHMuc3BsaWNlKHN1Ym5ldC5pbmRleCwgMCwge1xuICAgICAgICBjaWRyOiB0aGlzLm5ldHdvcmtCdWlsZGVyLmFkZFN1Ym5ldChjaWRyTWFza0ZvclJlbWFpbmluZyksXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBhbGxvY2F0ZWRTdWJuZXRzOiBhbGxvY2F0ZWRTdWJuZXRzLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBbiBhYnN0cmFjdCBQcm92aWRlciBvZiBJcHY2QWRkcmVzc2VzLlxuICpcbiAqIE5vdGUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgSVB2NiBDSURSLlxuICovXG5leHBvcnQgY2xhc3MgSXB2NkFkZHJlc3NlcyB7XG4gIC8qKlxuICAgKiBVc2VkIGZvciBJUHY2IGFkZHJlc3MgbWFuYWdlbWVudCB3aXRoIEFtYXpvbiBwcm92aWRlZCBDSURScy5cbiAgICpcbiAgICogTm90ZSB0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBJUHY2IENJRFIuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFtYXpvblByb3ZpZGVkKCk6IElJcHY2QWRkcmVzc2VzIHtcbiAgICByZXR1cm4gbmV3IEFtYXpvblByb3ZpZGVkKCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbnMgZm9yIElQdjYgYWRkcmVzcyBtYW5hZ2VtZW50LlxuICpcbiAqIE5vdGUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgSVB2NiBDSURSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElJcHY2QWRkcmVzc2VzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIElQdjYgQ0lEUiBpcyBBbWF6b24gcHJvdmlkZWQgb3Igbm90LlxuICAgKlxuICAgKiBOb3RlIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIElQdjYgQ0lEUi5cbiAgICovXG4gIGFtYXpvblByb3ZpZGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYnkgVlBDIHRvIGFsbG9jYXRlIElQdjYgQ0lEUi5cbiAgICpcbiAgICogTm90ZSB0aGlzIGlzIHNwZWNpZmljIHRvIHRoZSBJUHY2IENJRFIuXG4gICAqL1xuICBhbGxvY2F0ZVZwY0lwdjZDaWRyKFxuICAgIGlucHV0OiBBbGxvY2F0ZVZwY0lwdjZDaWRyUmVxdWVzdCxcbiAgKTogdnBjSXB2NkNpZHJCbG9ja0Fzc29jaWF0aW9uLlZwY0lwdjZDaWRyQmxvY2tBc3NvY2lhdGlvbjtcblxuICAvKipcbiAgICogU3BsaXQgSVB2NiBDSURSIGJsb2NrIHVwIGZvciBzdWJuZXRzLlxuICAgKlxuICAgKiBOb3RlIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIElQdjYgQ0lEUi5cbiAgICovXG4gIGNyZWF0ZUlwdjZDaWRyQmxvY2tzKGlucHV0OiBDcmVhdGVJcHY2Q2lkckJsb2Nrc1JlcXVlc3QpOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQWxsb2NhdGVzIFN1Ym5ldHMgSVB2NiBDSURScy4gQ2FsbGVkIGJ5IFZQQyB3aGVuIGNyZWF0aW5nIHN1Ym5ldHMgd2l0aCBJUHY2IGVuYWJsZWQuXG4gICAqXG4gICAqIE5vdGUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgSVB2NiBDSURSLlxuICAgKi9cbiAgYWxsb2NhdGVTdWJuZXRzSXB2NkNpZHIoaW5wdXQ6IEFsbG9jYXRlSXB2NkNpZHJSZXF1ZXN0KTogU3VibmV0SXBhbU9wdGlvbnM7XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBpbnRlZ3JhdGlvbiB3aXRoIEFtYXpvbiBwcm92aWRlZCBJUHY2IENJRFJzLlxuICpcbiAqIE5vdGUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgSVB2NiBDSURSLlxuICovXG5jbGFzcyBBbWF6b25Qcm92aWRlZCBpbXBsZW1lbnRzIElJcHY2QWRkcmVzc2VzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIElQdjYgQ0lEUiBpcyBBbWF6b24gcHJvdmlkZWQgb3Igbm90LlxuICAgKlxuICAgKiBlcXVlc3RzIGFuIEFtYXpvbi1wcm92aWRlZCBJUHY2IENJRFIgYmxvY2sgd2l0aCBhIC81NiBwcmVmaXggbGVuZ3RoIGZvciB0aGUgVlBDLlxuICAgKiBZb3UgY2Fubm90IHNwZWNpZnkgdGhlIHJhbmdlIG9mIElQdjYgYWRkcmVzc2VzLCBvciB0aGUgc2l6ZSBvZiB0aGUgQ0lEUiBibG9ja1xuICAgKi9cbiAgYW1hem9uUHJvdmlkZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hbWF6b25Qcm92aWRlZCA9IHRydWU7XG4gIH1cbiAgLyoqXG4gICAqIENhbGxlZCBieSBWUEMgdG8gYWxsb2NhdGUgSVB2NiBDSURSLlxuICAgKlxuICAgKiBDcmVhdGVzIGFuIEFtYXpvbiBwcm92aWRlZCBDSURSIGJsb2NrLlxuICAgKlxuICAgKiBOb3RlIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIElQdjYgQ0lEUi5cbiAgICovXG4gIGFsbG9jYXRlVnBjSXB2NkNpZHIoXG4gICAgaW5wdXQ6IEFsbG9jYXRlVnBjSXB2NkNpZHJSZXF1ZXN0LFxuICApOiB2cGNJcHY2Q2lkckJsb2NrQXNzb2NpYXRpb24uVnBjSXB2NkNpZHJCbG9ja0Fzc29jaWF0aW9uIHtcbiAgICAvL3Rocm93IG5ldyBFcnJvcihgdnBjSWQgbm90IGZvdW5kLCBnb3QgJHsoc2NvcGUgYXMgYW55KS52cGNJZH1gKTtcbiAgICByZXR1cm4gbmV3IHZwY0lwdjZDaWRyQmxvY2tBc3NvY2lhdGlvbi5WcGNJcHY2Q2lkckJsb2NrQXNzb2NpYXRpb24oXG4gICAgICBpbnB1dC5zY29wZSxcbiAgICAgIFwiaXB2NmNpZHJcIixcbiAgICAgIHtcbiAgICAgICAgdnBjSWQ6IGlucHV0LnZwY0lkLFxuICAgICAgICBhc3NpZ25HZW5lcmF0ZWRJcHY2Q2lkckJsb2NrOiB0aGlzLmFtYXpvblByb3ZpZGVkLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0IElQdjYgQ0lEUiBibG9jayB1cCBmb3Igc3VibmV0cy5cbiAgICpcbiAgICogQ2FsbGVkIGJ5IFZQQyB3aGVuIGNyZWF0aW5nIHN1Ym5ldHMgd2l0aCBJUHY2IGVuYWJsZWQuXG4gICAqXG4gICAqIE5vdGUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgSVB2NiBDSURSLlxuICAgKi9cbiAgY3JlYXRlSXB2NkNpZHJCbG9ja3MoaW5wdXQ6IENyZWF0ZUlwdjZDaWRyQmxvY2tzUmVxdWVzdCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcGFyZW50TWFzazogbnVtYmVyID0gaW5wdXQucGFyZW50TWFzayA/PyA1NjtcbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChpbnB1dC5pcHY2U2VsZWN0ZWRDaWRyKSkge1xuICAgICAgcGFyZW50TWFzayA9IHBhcnNlSW50KGlucHV0LmlwdjZTZWxlY3RlZENpZHIuc3BsaXQoXCIvXCIpWzFdLCAxMCk7XG4gICAgICBpZiAoTnVtYmVyLmlzTmFOKHBhcmVudE1hc2spKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUGFyZW50IENJRFIgbXVzdCBpbmNsdWRlIGEgdmFsaWQgbWFzaywgZ290OiAnJHtpbnB1dC5pcHY2U2VsZWN0ZWRDaWRyfSdgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzaXplTWFzayA9IHBhcnNlSW50KGlucHV0LnNpemVNYXNrID8/IFwiNjRcIik7IC8vIDEyOCAtIDY0XG4gICAgY29uc3QgbmV3Yml0cyA9IHNpemVNYXNrIC0gcGFyZW50TWFzaztcblxuICAgIHJldHVybiBGbi5jaWRyc3VibmV0cyhcbiAgICAgIGlucHV0LmlwdjZTZWxlY3RlZENpZHIsXG4gICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBpbnB1dC5zdWJuZXRDb3VudCB9LCAoKSA9PiBuZXdiaXRzKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRlcyBTdWJuZXRzIElQdjYgQ0lEUnMuIENhbGxlZCBieSBWUEMgd2hlbiBjcmVhdGluZyBzdWJuZXRzIHdpdGggSVB2NiBlbmFibGVkLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBsaXN0IG9mIGFsbG9jYXRlZCBzdWJuZXRzLFxuICAgKiBhbmQgY29waWVzIHRoZSBJUHY0IENJRFJzIHdoaWxlIGFsc28gYXNzaWduaW5nIHRoZSBJUHY2IENJRFIuXG4gICAqXG4gICAqIE5vdGUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgSVB2NiBDSURSLlxuICAgKi9cbiAgYWxsb2NhdGVTdWJuZXRzSXB2NkNpZHIoaW5wdXQ6IEFsbG9jYXRlSXB2NkNpZHJSZXF1ZXN0KTogU3VibmV0SXBhbU9wdGlvbnMge1xuICAgIGNvbnN0IGFsbG9jYXRlZFN1Ym5ldHM6IEFsbG9jYXRlZFN1Ym5ldFtdID0gW107XG5cbiAgICBpbnB1dC5hbGxvY2F0ZWRTdWJuZXRzLmZvckVhY2goKGFsbG9jYXRlZCwgaSkgPT4ge1xuICAgICAgY29uc3QgYWxsb2NhdGVkSXB2NjogQWxsb2NhdGVkU3VibmV0ID0ge1xuICAgICAgICBjaWRyOiBhbGxvY2F0ZWQuY2lkcixcbiAgICAgICAgaXB2NkNpZHI6IEZuLmVsZW1lbnQoaW5wdXQuaXB2NkNpZHJzLCBpKSxcbiAgICAgIH07XG4gICAgICBhbGxvY2F0ZWRTdWJuZXRzLnB1c2goYWxsb2NhdGVkSXB2Nik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsb2NhdGVkU3VibmV0czogYWxsb2NhdGVkU3VibmV0cyxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,309 @@
1
+ import { vpcIpamPoolCidr as tfIpamPoolCidr } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { IAwsConstruct, AwsConstructBase } from "../aws-construct";
4
+ /**
5
+ * Represents the address family for IP addresses in an IPAM pool.
6
+ * IP_V4 - Represents the IPv4 address family.
7
+ * IP_V6 - Represents the IPv6 address family.
8
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-addressfamily
9
+ */
10
+ export declare enum AddressFamily {
11
+ /**
12
+ * Represents the IPv4 address family.
13
+ * Allowed under public and private pool.
14
+ */
15
+ IP_V4 = "ipv4",
16
+ /**
17
+ * Represents the IPv6 address family.
18
+ * Only allowed under public pool.
19
+ */
20
+ IP_V6 = "ipv6"
21
+ }
22
+ /**
23
+ * The IP address source for pools in the public scope.
24
+ * Only used for provisioning IP address CIDRs to pools in the public scope.
25
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-publicipsource
26
+ */
27
+ export declare enum IpamPoolPublicIpSource {
28
+ /**
29
+ * BYOIP Ipv6 to be registered under IPAM
30
+ */
31
+ BYOIP = "byoip",
32
+ /**
33
+ * Amazon Provided Ipv6 range
34
+ */
35
+ AMAZON = "amazon"
36
+ }
37
+ /**
38
+ * Limits which service in AWS that the pool can be used in
39
+ */
40
+ export declare enum AwsServiceName {
41
+ /**
42
+ * Allows users to use space for Elastic IP addresses and VPCs
43
+ */
44
+ EC2 = "ec2"
45
+ }
46
+ /**
47
+ * Options to create a new Ipam in the account
48
+ */
49
+ export interface IpamProps {
50
+ /**
51
+ * The operating Regions for an IPAM.
52
+ * Operating Regions are AWS Regions where the IPAM is allowed to manage IP address CIDRs
53
+ * For more information about operating Regions, see [Create an IPAM](https://docs.aws.amazon.com//vpc/latest/ipam/create-ipam.html) in the *Amazon VPC IPAM User Guide* .
54
+ * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html#cfn-ec2-ipam-operatingregions
55
+ *
56
+ * @default - Stack.region if defined in the stack
57
+ */
58
+ readonly operatingRegion?: string[];
59
+ /**
60
+ * Name of IPAM that can be used for tagging resource
61
+ *
62
+ * @default - If no name provided, no tags will be added to the IPAM
63
+ */
64
+ readonly ipamName?: string;
65
+ }
66
+ /**
67
+ * Refers to two possible scope types under IPAM
68
+ */
69
+ export declare enum IpamScopeType {
70
+ /**
71
+ * Default scopes created by IPAM
72
+ */
73
+ DEFAULT = "default",
74
+ /**
75
+ * Custom scope created using method
76
+ */
77
+ CUSTOM = "custom"
78
+ }
79
+ /**
80
+ * Options for configuring an IPAM pool.
81
+ *
82
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html
83
+ */
84
+ export interface PoolOptions {
85
+ /**
86
+ * addressFamily - The address family of the pool (ipv4 or ipv6).
87
+ */
88
+ readonly addressFamily: AddressFamily;
89
+ /**
90
+ * Information about the CIDRs provisioned to the pool.
91
+ *
92
+ * @default - No CIDRs are provisioned
93
+ */
94
+ readonly ipv4ProvisionedCidrs?: string[];
95
+ /**
96
+ * The locale (AWS Region) of the pool. Should be one of the IPAM operating region.
97
+ * Only resources in the same Region as the locale of the pool can get IP address allocations from the pool.
98
+ * You can only allocate a CIDR for a VPC, for example, from an IPAM pool that shares a locale with the VPC’s Region.
99
+ * Note that once you choose a Locale for a pool, you cannot modify it. If you choose an AWS Region for locale that has not been configured as an operating Region for the IPAM, you'll get an error.
100
+ * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-locale
101
+ *
102
+ * @default - Current operating region of IPAM
103
+ */
104
+ readonly locale?: string;
105
+ /**
106
+ * The IP address source for pools in the public scope.
107
+ * Only used for IPv6 address
108
+ * Only allowed values to this are 'byoip' or 'amazon'
109
+ *
110
+ * @default amazon
111
+ */
112
+ readonly publicIpSource?: IpamPoolPublicIpSource;
113
+ /**
114
+ * Limits which service in AWS that the pool can be used in.
115
+ *
116
+ * "ec2", for example, allows users to use space for Elastic IP addresses and VPCs.
117
+ *
118
+ * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampool.html#cfn-ec2-ipampool-awsservice
119
+ *
120
+ * @default - required in case of an IPv6, throws an error if not provided.
121
+ */
122
+ readonly awsService?: AwsServiceName;
123
+ /**
124
+ * IPAM Pool resource name to be used for tagging
125
+ *
126
+ * @default - autogenerated by CDK if not provided
127
+ */
128
+ readonly ipamPoolName?: string;
129
+ }
130
+ /**
131
+ * Options to provision CIDRs to an IPAM pool.
132
+ * Used to create a new IpamPoolCidr
133
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipampoolcidr.html
134
+ */
135
+ export interface IpamPoolCidrProvisioningOptions {
136
+ /**
137
+ * Ipv6 Netmask length for the CIDR
138
+ *
139
+ * @default - pool provisioned without netmask length, need cidr range in this case
140
+ */
141
+ readonly netmaskLength?: number;
142
+ /**
143
+ * Ipv6 CIDR block for the IPAM pool
144
+ *
145
+ * @default - pool provisioned without netmask length, need netmask length in this case
146
+ */
147
+ readonly cidr?: string;
148
+ }
149
+ /**
150
+ * Outputs which may be registered for output via the Grid.
151
+ */
152
+ export interface IpamPoolOutputs {
153
+ /**
154
+ * Pool ID to be passed to the VPC construct
155
+ * @attribute IpamPoolId
156
+ */
157
+ readonly ipamPoolId: string;
158
+ }
159
+ /**
160
+ * Definition used to add or create a new IPAM pool
161
+ */
162
+ export interface IIpamPool extends IAwsConstruct {
163
+ /** strongly typed outputs */
164
+ readonly ipamPoolOutputs: IpamPoolOutputs;
165
+ /**
166
+ * Pool ID to be passed to the VPC construct
167
+ * @attribute IpamPoolId
168
+ */
169
+ readonly ipamPoolId: string;
170
+ /**
171
+ * Pool CIDR for IPv6 to be provisioned with Public IP source set to 'Amazon'
172
+ */
173
+ readonly ipamCidrs: tfIpamPoolCidr.VpcIpamPoolCidr[];
174
+ /**
175
+ * Pool CIDR for IPv4 to be provisioned using IPAM
176
+ * Required to check for subnet IP range is within the VPC range
177
+ */
178
+ readonly ipamIpv4Cidrs?: string[];
179
+ /**
180
+ * Function to associate a IPv6 address with IPAM pool
181
+ */
182
+ provisionCidr(id: string, options: IpamPoolCidrProvisioningOptions): tfIpamPoolCidr.VpcIpamPoolCidr;
183
+ }
184
+ /**
185
+ * Being used in IPAM class to add pools to default scope created by IPAM.
186
+ */
187
+ export interface IpamScopeOptions {
188
+ /**
189
+ * IPAM scope name that will be used for tagging
190
+ *
191
+ * @default - no tags will be added to the scope
192
+ */
193
+ readonly ipamScopeName?: string;
194
+ }
195
+ /**
196
+ * Options for configuring an IP Address Manager (IPAM).
197
+ *
198
+ * For more information, see the {@link https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipam.html}.
199
+ */
200
+ export interface IpamOptions {
201
+ /**
202
+ * CIDR Mask for Vpc
203
+ * Only required when using AWS Ipam
204
+ *
205
+ * @default - no netmask length for IPAM attached to VPC secondary address
206
+ */
207
+ readonly netmaskLength?: number;
208
+ /**
209
+ * Ipv4 or an Ipv6 IPAM pool
210
+ * Only required when using AWS Ipam
211
+ *
212
+ * @default - no pool attached to VPC secondary address
213
+ */
214
+ readonly ipamPool?: IIpamPool;
215
+ /**
216
+ * Required to set Secondary cidr block resource name
217
+ * in order to generate unique logical id for the resource.
218
+ */
219
+ readonly cidrBlockName: string;
220
+ }
221
+ /**
222
+ * Outputs which may be registered for output via the Grid.
223
+ */
224
+ export interface IpamScopeOutputs {
225
+ /**
226
+ * Scope ID to be passed to the VPC construct
227
+ * @attribute IpamScopeId
228
+ */
229
+ readonly ipamScopeId: string;
230
+ }
231
+ /**
232
+ * Interface for IpamScope Class
233
+ */
234
+ export interface IIpamScopeBase {
235
+ /** strongly typed outputs */
236
+ readonly ipamScopeOutputs: IpamScopeOutputs;
237
+ /**
238
+ * Reference to the current scope of stack to be passed in order to create
239
+ * a new IPAM pool
240
+ */
241
+ readonly scope: Construct;
242
+ /**
243
+ * Default Scope ids created by the IPAM or a new Resource id
244
+ */
245
+ readonly scopeId: string;
246
+ /**
247
+ * Defines scope type can be either default or custom
248
+ */
249
+ readonly scopeType?: IpamScopeType;
250
+ /**
251
+ * Function to add a new pool to an IPAM scope
252
+ */
253
+ addPool(id: string, options: PoolOptions): IIpamPool;
254
+ }
255
+ export interface IpamOutputs {
256
+ /**
257
+ * Ipam ID to be passed to the VPC construct
258
+ * @attribute IpamId
259
+ */
260
+ readonly ipamId: string;
261
+ }
262
+ /**
263
+ * Creates new IPAM with default public and private scope
264
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamscope.html
265
+ * @see https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/vpc_ipam
266
+ * @resource aws_vpc_ipam
267
+ */
268
+ export declare class Ipam extends AwsConstructBase {
269
+ get ipamOutputs(): IpamOutputs;
270
+ get outputs(): Record<string, any>;
271
+ /**
272
+ * Provides access to default public IPAM scope through add pool method.
273
+ * Usage: To add an Ipam Pool to a default public scope
274
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamscope.html
275
+ */
276
+ readonly publicScope: IIpamScopeBase;
277
+ /**
278
+ * Provides access to default private IPAM scope through add pool method.
279
+ * Usage: To add an Ipam Pool to a default private scope
280
+ * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ipamscope.html
281
+ * */
282
+ readonly privateScope: IIpamScopeBase;
283
+ private readonly _ipam;
284
+ /**
285
+ * Access to Ipam resource id that can be used later to add a custom private scope to this IPAM
286
+ * @attribute IpamId
287
+ */
288
+ readonly ipamId: string;
289
+ /**
290
+ * List of operating regions for IPAM
291
+ */
292
+ readonly operatingRegions: string[];
293
+ /**
294
+ * List of scopes created under this IPAM
295
+ */
296
+ readonly scopes: IIpamScopeBase[];
297
+ /**
298
+ * IPAM name to be used for tagging
299
+ * @default no tag specified
300
+ * @attribute IpamName
301
+ */
302
+ readonly ipamName?: string;
303
+ constructor(scope: Construct, id: string, props?: IpamProps);
304
+ /**
305
+ * Function to add custom scope to an existing IPAM
306
+ * Custom scopes can only be private
307
+ */
308
+ addScope(scope: Construct, id: string, options: IpamScopeOptions): IIpamScopeBase;
309
+ }