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,169 @@
1
+ import { route53Zone } from "@cdktf/provider-aws";
2
+ import { IResolvable } from "cdktf";
3
+ import { Construct } from "constructs";
4
+ import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "../";
5
+ import { INetwork } from "../network";
6
+ /**
7
+ * Common properties to create a Route 53 hosted zone
8
+ */
9
+ export interface CommonDnsZoneProps extends AwsConstructProps {
10
+ /**
11
+ * The name of the domain. For resource record types that include a domain
12
+ * name, specify a fully qualified domain name.
13
+ */
14
+ readonly zoneName: string;
15
+ /**
16
+ * Whether to add a trailing dot to the zone name.
17
+ *
18
+ * @default true
19
+ */
20
+ readonly addTrailingDot?: boolean;
21
+ /**
22
+ * Any comments that you want to include about the hosted zone.
23
+ *
24
+ * @default none
25
+ */
26
+ readonly comment?: string;
27
+ /**
28
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/5.60.0/docs/resources/route53_zone#force_destroy Route53Zone#force_destroy}
29
+ */
30
+ readonly forceDestroy?: boolean | IResolvable;
31
+ }
32
+ /**
33
+ * Properties of a new hosted zone
34
+ */
35
+ export interface DnsZoneProps extends CommonDnsZoneProps {
36
+ /**
37
+ * Networks that you want to associate with this hosted zone. When you specify
38
+ * this property, a private hosted zone will be created.
39
+ *
40
+ * Conflicts with the `delegationSetId` and any `aws_route53_zone_association`
41
+ * resource specifying the same zone ID.
42
+ *
43
+ * You can associate additional networks to this private zone using `addNetwork(network)`.
44
+ *
45
+ * @default public (no networks associated)
46
+ */
47
+ readonly networks?: INetwork[];
48
+ /**
49
+ * Delegation set ID for the private hosted zone.
50
+ *
51
+ * The ID of the reusable delegation set whose NS records you want to assign to the hosted zone.
52
+ *
53
+ * Conflicts with vpc as delegation sets can only be used for public zones.
54
+ */
55
+ readonly delegationSetId?: string;
56
+ }
57
+ /**
58
+ * Outputs which may be registered for output via the Grid.
59
+ */
60
+ export interface DnsZoneOutputs {
61
+ /**
62
+ * Identifier of the hosted zone
63
+ */
64
+ readonly zoneId: string;
65
+ /**
66
+ * Name of the hosted zone
67
+ */
68
+ readonly zoneName: string;
69
+ /**
70
+ * Returns the set of name servers for the specific hosted zone. For example:
71
+ * ns1.example.com.
72
+ *
73
+ * This attribute will be undefined for private hosted zones or hosted zones imported from another stack.
74
+ *
75
+ * @attribute
76
+ */
77
+ readonly nameServers: string[];
78
+ /**
79
+ * The Route 53 name server that created the SOA record.
80
+ */
81
+ readonly primaryNameServer: string;
82
+ }
83
+ /**
84
+ * Imported or created DNS zone attributes
85
+ */
86
+ export interface IDnsZone extends IAwsConstruct {
87
+ /** Strongly typed outputs */
88
+ readonly dnsZoneOutputs: DnsZoneOutputs;
89
+ /**
90
+ * ID of this hosted zone, such as "Z23ABC4XYZL05B"
91
+ *
92
+ * @attribute
93
+ */
94
+ readonly zoneId: string;
95
+ /**
96
+ * FQDN of this hosted zone
97
+ */
98
+ readonly zoneName: string;
99
+ /**
100
+ * ARN of this hosted zone, such as arn:${Partition}:route53:::hostedzone/${Id}
101
+ *
102
+ * @attribute
103
+ */
104
+ readonly arn: string;
105
+ /**
106
+ * A list of name servers in associated (or default) delegation set.
107
+ * Find more about delegation sets in [AWS docs][delegation set docs].
108
+ *
109
+ * Returns the set of name servers for the specific hosted zone. For example:
110
+ * ns1.example.com.
111
+ *
112
+ * [delegation set docs]: https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-configuring-delegation-set.html
113
+ * @attribute
114
+ */
115
+ readonly nameServers: string[];
116
+ /**
117
+ * The Route 53 name server that created the SOA record.
118
+ */
119
+ readonly primaryNameServer: string;
120
+ }
121
+ /**
122
+ * Container for records, and records contain information about how to route traffic for a
123
+ * specific domain, such as example.com and its subdomains (acme.example.com, zenith.example.com)
124
+ */
125
+ export declare class DnsZone extends AwsConstructBase implements IDnsZone {
126
+ /**
127
+ * Import a Route 53 hosted zone defined either outside of TerraConstruct, or from Grid Lookup
128
+ *
129
+ * Use when hosted zone ID is known.
130
+ *
131
+ * @param scope the parent Construct for this Construct
132
+ * @param id the logical name of this Construct
133
+ * @param zoneId the ID of the hosted zone to import
134
+ */
135
+ static fromZoneId(scope: Construct, id: string, zoneId: string): IDnsZone;
136
+ private readonly _outputs;
137
+ get dnsZoneOutputs(): DnsZoneOutputs;
138
+ get outputs(): Record<string, any>;
139
+ readonly zoneId: string;
140
+ readonly arn: string;
141
+ readonly zoneName: string;
142
+ readonly nameServers: string[];
143
+ readonly primaryNameServer: string;
144
+ /**
145
+ * Networks to which this hosted zone will be added
146
+ */
147
+ protected readonly networks: route53Zone.Route53ZoneVpc[];
148
+ protected readonly resource: route53Zone.Route53Zone;
149
+ constructor(scope: Construct, id: string, props: DnsZoneProps);
150
+ /**
151
+ * Add another Network to this private hosted zone.
152
+ *
153
+ * This conflicts with the `delegationSetId` and any
154
+ * `aws_route53_zone_association` created outside this spec.
155
+ *
156
+ * @param network the other Network to add.
157
+ */
158
+ addNetwork(network: INetwork): void;
159
+ }
160
+ export declare function makeHostedZoneArn(construct: Construct, hostedZoneId: string): string;
161
+ /**
162
+ * Validates a zone name is valid by Route53 specifc naming rules,
163
+ * and that there is no trailing dot in the name.
164
+ *
165
+ * @param zoneName the zone name to be validated.
166
+ * @returns +zoneName+
167
+ * @throws ValidationError if the name is not valid.
168
+ */
169
+ export declare function validateZoneName(zoneName: string): void;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.validateZoneName = exports.makeHostedZoneArn = exports.DnsZone = 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 __1 = require("../");
9
+ /**
10
+ * Container for records, and records contain information about how to route traffic for a
11
+ * specific domain, such as example.com and its subdomains (acme.example.com, zenith.example.com)
12
+ */
13
+ class DnsZone extends __1.AwsConstructBase {
14
+ // TODO: Add "from Grid Lookup" static methods?
15
+ /**
16
+ * Import a Route 53 hosted zone defined either outside of TerraConstruct, or from Grid Lookup
17
+ *
18
+ * Use when hosted zone ID is known.
19
+ *
20
+ * @param scope the parent Construct for this Construct
21
+ * @param id the logical name of this Construct
22
+ * @param zoneId the ID of the hosted zone to import
23
+ */
24
+ static fromZoneId(scope, id, zoneId) {
25
+ class Import extends __1.AwsConstructBase {
26
+ get dnsZoneOutputs() {
27
+ return this._outputs;
28
+ }
29
+ get outputs() {
30
+ return this.dnsZoneOutputs;
31
+ }
32
+ get zoneName() {
33
+ return this.datasource.name;
34
+ }
35
+ get arn() {
36
+ return this.datasource.arn;
37
+ }
38
+ get nameServers() {
39
+ return this.datasource.nameServers;
40
+ }
41
+ get primaryNameServer() {
42
+ return this.datasource.primaryNameServer;
43
+ }
44
+ constructor(_scope, _id) {
45
+ super(_scope, _id, {});
46
+ this.zoneId = zoneId;
47
+ this.datasource = new provider_aws_1.dataAwsRoute53Zone.DataAwsRoute53Zone(this, "Resource", {
48
+ zoneId,
49
+ });
50
+ this._outputs = {
51
+ zoneId: zoneId,
52
+ zoneName: this.datasource.name,
53
+ nameServers: this.datasource.nameServers,
54
+ primaryNameServer: this.datasource.primaryNameServer,
55
+ };
56
+ }
57
+ }
58
+ return new Import(scope, id);
59
+ }
60
+ get dnsZoneOutputs() {
61
+ return this._outputs;
62
+ }
63
+ get outputs() {
64
+ return this.dnsZoneOutputs;
65
+ }
66
+ constructor(scope, id, props) {
67
+ super(scope, id, props);
68
+ /**
69
+ * Networks to which this hosted zone will be added
70
+ */
71
+ this.networks = new Array();
72
+ validateZoneName(props.zoneName);
73
+ // Add a dot at the end if the addTrailingDot property is not false.
74
+ const zoneName = props.addTrailingDot === false || props.zoneName.endsWith(".")
75
+ ? props.zoneName
76
+ : `${props.zoneName}.`;
77
+ this.resource = new provider_aws_1.route53Zone.Route53Zone(this, "Resource", {
78
+ name: zoneName,
79
+ comment: props.comment,
80
+ vpc: cdktf_1.Lazy.anyValue({
81
+ produce: () => this.networks.length === 0
82
+ ? undefined
83
+ : this.networks.map((n) => provider_aws_1.route53Zone.route53ZoneVpcToTerraform(n)),
84
+ }),
85
+ });
86
+ this.zoneId = this.resource.id;
87
+ this.arn = this.resource.arn;
88
+ this.nameServers = this.resource.nameServers;
89
+ this.primaryNameServer = this.resource.primaryNameServer;
90
+ this.zoneName = props.zoneName;
91
+ for (const vpc of props.networks || []) {
92
+ this.addNetwork(vpc);
93
+ }
94
+ this._outputs = {
95
+ zoneId: this.zoneId,
96
+ zoneName: this.zoneName,
97
+ nameServers: this.nameServers,
98
+ primaryNameServer: this.resource.primaryNameServer,
99
+ };
100
+ }
101
+ /**
102
+ * Add another Network to this private hosted zone.
103
+ *
104
+ * This conflicts with the `delegationSetId` and any
105
+ * `aws_route53_zone_association` created outside this spec.
106
+ *
107
+ * @param network the other Network to add.
108
+ */
109
+ addNetwork(network) {
110
+ this.networks.push({
111
+ vpcId: network.vpcId,
112
+ vpcRegion: network.env.region ?? __1.AwsStack.ofAwsConstruct(network).region,
113
+ });
114
+ }
115
+ }
116
+ exports.DnsZone = DnsZone;
117
+ _a = JSII_RTTI_SYMBOL_1;
118
+ DnsZone[_a] = { fqn: "terraconstructs.aws.edge.DnsZone", version: "0.0.8" };
119
+ function makeHostedZoneArn(construct, hostedZoneId) {
120
+ return __1.AwsStack.ofAwsConstruct(construct).formatArn({
121
+ account: "",
122
+ region: "",
123
+ service: "route53",
124
+ resource: "hostedzone",
125
+ resourceName: hostedZoneId,
126
+ });
127
+ }
128
+ exports.makeHostedZoneArn = makeHostedZoneArn;
129
+ /**
130
+ * Validates a zone name is valid by Route53 specifc naming rules,
131
+ * and that there is no trailing dot in the name.
132
+ *
133
+ * @param zoneName the zone name to be validated.
134
+ * @returns +zoneName+
135
+ * @throws ValidationError if the name is not valid.
136
+ */
137
+ function validateZoneName(zoneName) {
138
+ if (zoneName.length > 255) {
139
+ throw new Error("zone name cannot be more than 255 bytes long");
140
+ }
141
+ if (zoneName.split(".").find((label) => label.length > 63)) {
142
+ throw new Error("zone name labels cannot be more than 63 bytes long");
143
+ }
144
+ if (!zoneName.match(/^[a-z0-9!"#$%&'()*+,/:;<=>?@[\\\]^_`{|}~.-]+$/i)) {
145
+ throw new Error("zone names can only contain a-z, 0-9, -, ! \" # $ % & ' ( ) * + , - / : ; < = > ? @ [ ] ^ _ ` { | } ~ .");
146
+ }
147
+ }
148
+ exports.validateZoneName = validateZoneName;
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLXpvbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2VkZ2UvZG5zLXpvbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0U7QUFDdEUsaUNBQTBDO0FBRTFDLDJCQUthO0FBd0liOzs7R0FHRztBQUNILE1BQWEsT0FBUSxTQUFRLG9CQUFnQjtJQUMzQywrQ0FBK0M7SUFDL0M7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUN0QixLQUFnQixFQUNoQixFQUFVLEVBQ1YsTUFBYztRQUVkLE1BQU0sTUFBTyxTQUFRLG9CQUFnQjtZQUVuQyxJQUFXLGNBQWM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN2QixDQUFDO1lBQ0QsSUFBVyxPQUFPO2dCQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDN0IsQ0FBQztZQUVELElBQVcsUUFBUTtnQkFDakIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUM5QixDQUFDO1lBQ0QsSUFBVyxHQUFHO2dCQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7WUFDN0IsQ0FBQztZQUNELElBQVcsV0FBVztnQkFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUNyQyxDQUFDO1lBQ0QsSUFBVyxpQkFBaUI7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztZQUMzQyxDQUFDO1lBRUQsWUFBWSxNQUFpQixFQUFFLEdBQVc7Z0JBQ3hDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQWZULFdBQU0sR0FBRyxNQUFNLENBQUM7Z0JBZ0I5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksaUNBQWtCLENBQUMsa0JBQWtCLENBQ3pELElBQUksRUFDSixVQUFVLEVBQ1Y7b0JBQ0UsTUFBTTtpQkFDUCxDQUNGLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRztvQkFDZCxNQUFNLEVBQUUsTUFBTTtvQkFDZCxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJO29CQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXO29CQUN4QyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQjtpQkFDckQsQ0FBQztZQUNKLENBQUM7U0FDRjtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFHRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFjRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1CO1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBUjFCOztXQUVHO1FBQ2dCLGFBQVEsR0FBRyxJQUFJLEtBQUssRUFBOEIsQ0FBQztRQU9wRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFakMsb0VBQW9FO1FBQ3BFLE1BQU0sUUFBUSxHQUNaLEtBQUssQ0FBQyxjQUFjLEtBQUssS0FBSyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUM1RCxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDaEIsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsR0FBRyxDQUFDO1FBRTNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSwwQkFBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQzVELElBQUksRUFBRSxRQUFRO1lBQ2QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLEdBQUcsRUFBRSxZQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNqQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFDeEIsQ0FBQyxDQUFDLFNBQVM7b0JBQ1gsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEIsMEJBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FDekM7YUFDUixDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRS9CLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7U0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksVUFBVSxDQUFDLE9BQWlCO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztZQUNwQixTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksWUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNO1NBQ3pFLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBdElILDBCQXVJQzs7O0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLFNBQW9CLEVBQ3BCLFlBQW9CO0lBRXBCLE9BQU8sWUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbEQsT0FBTyxFQUFFLEVBQUU7UUFDWCxNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxTQUFTO1FBQ2xCLFFBQVEsRUFBRSxZQUFZO1FBQ3RCLFlBQVksRUFBRSxZQUFZO0tBQzNCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFYRCw4Q0FXQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxRQUFnQjtJQUMvQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxFQUFFLENBQUM7UUFDdEUsTUFBTSxJQUFJLEtBQUssQ0FDYiwwR0FBMEcsQ0FDM0csQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBWkQsNENBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByb3V0ZTUzWm9uZSwgZGF0YUF3c1JvdXRlNTNab25lIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IExhenksIElSZXNvbHZhYmxlIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQXdzU3RhY2ssXG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vXCI7XG5pbXBvcnQgeyBJTmV0d29yayB9IGZyb20gXCIuLi9uZXR3b3JrXCI7XG5cbi8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLXJvdXRlNTMvbGliL2hvc3RlZC16b25lLnRzXG5cbi8qKlxuICogQ29tbW9uIHByb3BlcnRpZXMgdG8gY3JlYXRlIGEgUm91dGUgNTMgaG9zdGVkIHpvbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25EbnNab25lUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZG9tYWluLiBGb3IgcmVzb3VyY2UgcmVjb3JkIHR5cGVzIHRoYXQgaW5jbHVkZSBhIGRvbWFpblxuICAgKiBuYW1lLCBzcGVjaWZ5IGEgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgem9uZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgYSB0cmFpbGluZyBkb3QgdG8gdGhlIHpvbmUgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkVHJhaWxpbmdEb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbnkgY29tbWVudHMgdGhhdCB5b3Ugd2FudCB0byBpbmNsdWRlIGFib3V0IHRoZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudD86IHN0cmluZztcblxuICAvKipcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjYwLjAvZG9jcy9yZXNvdXJjZXMvcm91dGU1M196b25lI2ZvcmNlX2Rlc3Ryb3kgUm91dGU1M1pvbmUjZm9yY2VfZGVzdHJveX1cbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlRGVzdHJveT86IGJvb2xlYW4gfCBJUmVzb2x2YWJsZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIG9mIGEgbmV3IGhvc3RlZCB6b25lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG5zWm9uZVByb3BzIGV4dGVuZHMgQ29tbW9uRG5zWm9uZVByb3BzIHtcbiAgLyoqXG4gICAqIE5ldHdvcmtzIHRoYXQgeW91IHdhbnQgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBob3N0ZWQgem9uZS4gV2hlbiB5b3Ugc3BlY2lmeVxuICAgKiB0aGlzIHByb3BlcnR5LCBhIHByaXZhdGUgaG9zdGVkIHpvbmUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKlxuICAgKiBDb25mbGljdHMgd2l0aCB0aGUgYGRlbGVnYXRpb25TZXRJZGAgYW5kIGFueSBgYXdzX3JvdXRlNTNfem9uZV9hc3NvY2lhdGlvbmBcbiAgICogcmVzb3VyY2Ugc3BlY2lmeWluZyB0aGUgc2FtZSB6b25lIElELlxuICAgKlxuICAgKiBZb3UgY2FuIGFzc29jaWF0ZSBhZGRpdGlvbmFsIG5ldHdvcmtzIHRvIHRoaXMgcHJpdmF0ZSB6b25lIHVzaW5nIGBhZGROZXR3b3JrKG5ldHdvcmspYC5cbiAgICpcbiAgICogQGRlZmF1bHQgcHVibGljIChubyBuZXR3b3JrcyBhc3NvY2lhdGVkKVxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya3M/OiBJTmV0d29ya1tdO1xuXG4gIC8qKlxuICAgKiBEZWxlZ2F0aW9uIHNldCBJRCBmb3IgdGhlIHByaXZhdGUgaG9zdGVkIHpvbmUuXG4gICAqXG4gICAqIFRoZSBJRCBvZiB0aGUgcmV1c2FibGUgZGVsZWdhdGlvbiBzZXQgd2hvc2UgTlMgcmVjb3JkcyB5b3Ugd2FudCB0byBhc3NpZ24gdG8gdGhlIGhvc3RlZCB6b25lLlxuICAgKlxuICAgKiBDb25mbGljdHMgd2l0aCB2cGMgYXMgZGVsZWdhdGlvbiBzZXRzIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHB1YmxpYyB6b25lcy5cbiAgICovXG4gIHJlYWRvbmx5IGRlbGVnYXRpb25TZXRJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERuc1pvbmVPdXRwdXRzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIGhvc3RlZCB6b25lXG4gICAqL1xuICByZWFkb25seSB6b25lSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgaG9zdGVkIHpvbmVcbiAgICovXG4gIHJlYWRvbmx5IHpvbmVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNldCBvZiBuYW1lIHNlcnZlcnMgZm9yIHRoZSBzcGVjaWZpYyBob3N0ZWQgem9uZS4gRm9yIGV4YW1wbGU6XG4gICAqIG5zMS5leGFtcGxlLmNvbS5cbiAgICpcbiAgICogVGhpcyBhdHRyaWJ1dGUgd2lsbCBiZSB1bmRlZmluZWQgZm9yIHByaXZhdGUgaG9zdGVkIHpvbmVzIG9yIGhvc3RlZCB6b25lcyBpbXBvcnRlZCBmcm9tIGFub3RoZXIgc3RhY2suXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWVTZXJ2ZXJzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIFJvdXRlIDUzIG5hbWUgc2VydmVyIHRoYXQgY3JlYXRlZCB0aGUgU09BIHJlY29yZC5cbiAgICovXG4gIHJlYWRvbmx5IHByaW1hcnlOYW1lU2VydmVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW1wb3J0ZWQgb3IgY3JlYXRlZCBETlMgem9uZSBhdHRyaWJ1dGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURuc1pvbmUgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHMgKi9cbiAgcmVhZG9ubHkgZG5zWm9uZU91dHB1dHM6IERuc1pvbmVPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBJRCBvZiB0aGlzIGhvc3RlZCB6b25lLCBzdWNoIGFzIFwiWjIzQUJDNFhZWkwwNUJcIlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB6b25lSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogRlFETiBvZiB0aGlzIGhvc3RlZCB6b25lXG4gICAqL1xuICByZWFkb25seSB6b25lTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgdGhpcyBob3N0ZWQgem9uZSwgc3VjaCBhcyBhcm46JHtQYXJ0aXRpb259OnJvdXRlNTM6Ojpob3N0ZWR6b25lLyR7SWR9XG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgbmFtZSBzZXJ2ZXJzIGluIGFzc29jaWF0ZWQgKG9yIGRlZmF1bHQpIGRlbGVnYXRpb24gc2V0LlxuICAgKiBGaW5kIG1vcmUgYWJvdXQgZGVsZWdhdGlvbiBzZXRzIGluIFtBV1MgZG9jc11bZGVsZWdhdGlvbiBzZXQgZG9jc10uXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHNldCBvZiBuYW1lIHNlcnZlcnMgZm9yIHRoZSBzcGVjaWZpYyBob3N0ZWQgem9uZS4gRm9yIGV4YW1wbGU6XG4gICAqIG5zMS5leGFtcGxlLmNvbS5cbiAgICpcbiAgICogW2RlbGVnYXRpb24gc2V0IGRvY3NdOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vUm91dGU1My9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvZG5zLWNvbmZpZ3VyaW5nLWRlbGVnYXRpb24tc2V0Lmh0bWxcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZVNlcnZlcnM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgUm91dGUgNTMgbmFtZSBzZXJ2ZXIgdGhhdCBjcmVhdGVkIHRoZSBTT0EgcmVjb3JkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpbWFyeU5hbWVTZXJ2ZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb250YWluZXIgZm9yIHJlY29yZHMsIGFuZCByZWNvcmRzIGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIHJvdXRlIHRyYWZmaWMgZm9yIGFcbiAqIHNwZWNpZmljIGRvbWFpbiwgc3VjaCBhcyBleGFtcGxlLmNvbSBhbmQgaXRzIHN1YmRvbWFpbnMgKGFjbWUuZXhhbXBsZS5jb20sIHplbml0aC5leGFtcGxlLmNvbSlcbiAqL1xuZXhwb3J0IGNsYXNzIERuc1pvbmUgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSURuc1pvbmUge1xuICAvLyBUT0RPOiBBZGQgXCJmcm9tIEdyaWQgTG9va3VwXCIgc3RhdGljIG1ldGhvZHM/XG4gIC8qKlxuICAgKiBJbXBvcnQgYSBSb3V0ZSA1MyBob3N0ZWQgem9uZSBkZWZpbmVkIGVpdGhlciBvdXRzaWRlIG9mIFRlcnJhQ29uc3RydWN0LCBvciBmcm9tIEdyaWQgTG9va3VwXG4gICAqXG4gICAqIFVzZSB3aGVuIGhvc3RlZCB6b25lIElEIGlzIGtub3duLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHBhcmVudCBDb25zdHJ1Y3QgZm9yIHRoaXMgQ29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCAgdGhlIGxvZ2ljYWwgbmFtZSBvZiB0aGlzIENvbnN0cnVjdFxuICAgKiBAcGFyYW0gem9uZUlkIHRoZSBJRCBvZiB0aGUgaG9zdGVkIHpvbmUgdG8gaW1wb3J0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21ab25lSWQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHpvbmVJZDogc3RyaW5nLFxuICApOiBJRG5zWm9uZSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElEbnNab25lIHtcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgX291dHB1dHM6IERuc1pvbmVPdXRwdXRzO1xuICAgICAgcHVibGljIGdldCBkbnNab25lT3V0cHV0cygpOiBEbnNab25lT3V0cHV0cyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vdXRwdXRzO1xuICAgICAgfVxuICAgICAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kbnNab25lT3V0cHV0cztcbiAgICAgIH1cbiAgICAgIHB1YmxpYyByZWFkb25seSB6b25lSWQgPSB6b25lSWQ7XG4gICAgICBwdWJsaWMgZ2V0IHpvbmVOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2UubmFtZTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgYXJuKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2UuYXJuO1xuICAgICAgfVxuICAgICAgcHVibGljIGdldCBuYW1lU2VydmVycygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2UubmFtZVNlcnZlcnM7XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IHByaW1hcnlOYW1lU2VydmVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2UucHJpbWFyeU5hbWVTZXJ2ZXI7XG4gICAgICB9XG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFzb3VyY2U6IGRhdGFBd3NSb3V0ZTUzWm9uZS5EYXRhQXdzUm91dGU1M1pvbmU7XG4gICAgICBjb25zdHJ1Y3Rvcihfc2NvcGU6IENvbnN0cnVjdCwgX2lkOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoX3Njb3BlLCBfaWQsIHt9KTtcbiAgICAgICAgdGhpcy5kYXRhc291cmNlID0gbmV3IGRhdGFBd3NSb3V0ZTUzWm9uZS5EYXRhQXdzUm91dGU1M1pvbmUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBcIlJlc291cmNlXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgem9uZUlkLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICAgICAgem9uZUlkOiB6b25lSWQsXG4gICAgICAgICAgem9uZU5hbWU6IHRoaXMuZGF0YXNvdXJjZS5uYW1lLFxuICAgICAgICAgIG5hbWVTZXJ2ZXJzOiB0aGlzLmRhdGFzb3VyY2UubmFtZVNlcnZlcnMsXG4gICAgICAgICAgcHJpbWFyeU5hbWVTZXJ2ZXI6IHRoaXMuZGF0YXNvdXJjZS5wcmltYXJ5TmFtZVNlcnZlcixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3V0cHV0czogRG5zWm9uZU91dHB1dHM7XG4gIHB1YmxpYyBnZXQgZG5zWm9uZU91dHB1dHMoKTogRG5zWm9uZU91dHB1dHMge1xuICAgIHJldHVybiB0aGlzLl9vdXRwdXRzO1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kbnNab25lT3V0cHV0cztcbiAgfVxuICBwdWJsaWMgcmVhZG9ubHkgem9uZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBhcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHpvbmVOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lU2VydmVyczogc3RyaW5nW107XG4gIHB1YmxpYyByZWFkb25seSBwcmltYXJ5TmFtZVNlcnZlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOZXR3b3JrcyB0byB3aGljaCB0aGlzIGhvc3RlZCB6b25lIHdpbGwgYmUgYWRkZWRcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBuZXR3b3JrcyA9IG5ldyBBcnJheTxyb3V0ZTUzWm9uZS5Sb3V0ZTUzWm9uZVZwYz4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzb3VyY2U6IHJvdXRlNTNab25lLlJvdXRlNTNab25lO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEbnNab25lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHZhbGlkYXRlWm9uZU5hbWUocHJvcHMuem9uZU5hbWUpO1xuXG4gICAgLy8gQWRkIGEgZG90IGF0IHRoZSBlbmQgaWYgdGhlIGFkZFRyYWlsaW5nRG90IHByb3BlcnR5IGlzIG5vdCBmYWxzZS5cbiAgICBjb25zdCB6b25lTmFtZSA9XG4gICAgICBwcm9wcy5hZGRUcmFpbGluZ0RvdCA9PT0gZmFsc2UgfHwgcHJvcHMuem9uZU5hbWUuZW5kc1dpdGgoXCIuXCIpXG4gICAgICAgID8gcHJvcHMuem9uZU5hbWVcbiAgICAgICAgOiBgJHtwcm9wcy56b25lTmFtZX0uYDtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgcm91dGU1M1pvbmUuUm91dGU1M1pvbmUodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuYW1lOiB6b25lTmFtZSxcbiAgICAgIGNvbW1lbnQ6IHByb3BzLmNvbW1lbnQsXG4gICAgICB2cGM6IExhenkuYW55VmFsdWUoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgIHRoaXMubmV0d29ya3MubGVuZ3RoID09PSAwXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiB0aGlzLm5ldHdvcmtzLm1hcCgobikgPT5cbiAgICAgICAgICAgICAgICByb3V0ZTUzWm9uZS5yb3V0ZTUzWm9uZVZwY1RvVGVycmFmb3JtKG4pLFxuICAgICAgICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLnpvbmVJZCA9IHRoaXMucmVzb3VyY2UuaWQ7XG4gICAgdGhpcy5hcm4gPSB0aGlzLnJlc291cmNlLmFybjtcbiAgICB0aGlzLm5hbWVTZXJ2ZXJzID0gdGhpcy5yZXNvdXJjZS5uYW1lU2VydmVycztcbiAgICB0aGlzLnByaW1hcnlOYW1lU2VydmVyID0gdGhpcy5yZXNvdXJjZS5wcmltYXJ5TmFtZVNlcnZlcjtcbiAgICB0aGlzLnpvbmVOYW1lID0gcHJvcHMuem9uZU5hbWU7XG5cbiAgICBmb3IgKGNvbnN0IHZwYyBvZiBwcm9wcy5uZXR3b3JrcyB8fCBbXSkge1xuICAgICAgdGhpcy5hZGROZXR3b3JrKHZwYyk7XG4gICAgfVxuXG4gICAgdGhpcy5fb3V0cHV0cyA9IHtcbiAgICAgIHpvbmVJZDogdGhpcy56b25lSWQsXG4gICAgICB6b25lTmFtZTogdGhpcy56b25lTmFtZSxcbiAgICAgIG5hbWVTZXJ2ZXJzOiB0aGlzLm5hbWVTZXJ2ZXJzLFxuICAgICAgcHJpbWFyeU5hbWVTZXJ2ZXI6IHRoaXMucmVzb3VyY2UucHJpbWFyeU5hbWVTZXJ2ZXIsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW5vdGhlciBOZXR3b3JrIHRvIHRoaXMgcHJpdmF0ZSBob3N0ZWQgem9uZS5cbiAgICpcbiAgICogVGhpcyBjb25mbGljdHMgd2l0aCB0aGUgYGRlbGVnYXRpb25TZXRJZGAgYW5kIGFueVxuICAgKiBgYXdzX3JvdXRlNTNfem9uZV9hc3NvY2lhdGlvbmAgY3JlYXRlZCBvdXRzaWRlIHRoaXMgc3BlYy5cbiAgICpcbiAgICogQHBhcmFtIG5ldHdvcmsgdGhlIG90aGVyIE5ldHdvcmsgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZE5ldHdvcmsobmV0d29yazogSU5ldHdvcmspIHtcbiAgICB0aGlzLm5ldHdvcmtzLnB1c2goe1xuICAgICAgdnBjSWQ6IG5ldHdvcmsudnBjSWQsXG4gICAgICB2cGNSZWdpb246IG5ldHdvcmsuZW52LnJlZ2lvbiA/PyBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChuZXR3b3JrKS5yZWdpb24sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VIb3N0ZWRab25lQXJuKFxuICBjb25zdHJ1Y3Q6IENvbnN0cnVjdCxcbiAgaG9zdGVkWm9uZUlkOiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QoY29uc3RydWN0KS5mb3JtYXRBcm4oe1xuICAgIGFjY291bnQ6IFwiXCIsXG4gICAgcmVnaW9uOiBcIlwiLFxuICAgIHNlcnZpY2U6IFwicm91dGU1M1wiLFxuICAgIHJlc291cmNlOiBcImhvc3RlZHpvbmVcIixcbiAgICByZXNvdXJjZU5hbWU6IGhvc3RlZFpvbmVJZCxcbiAgfSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgem9uZSBuYW1lIGlzIHZhbGlkIGJ5IFJvdXRlNTMgc3BlY2lmYyBuYW1pbmcgcnVsZXMsXG4gKiBhbmQgdGhhdCB0aGVyZSBpcyBubyB0cmFpbGluZyBkb3QgaW4gdGhlIG5hbWUuXG4gKlxuICogQHBhcmFtIHpvbmVOYW1lIHRoZSB6b25lIG5hbWUgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMgK3pvbmVOYW1lK1xuICogQHRocm93cyBWYWxpZGF0aW9uRXJyb3IgaWYgdGhlIG5hbWUgaXMgbm90IHZhbGlkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVab25lTmFtZSh6b25lTmFtZTogc3RyaW5nKSB7XG4gIGlmICh6b25lTmFtZS5sZW5ndGggPiAyNTUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6b25lIG5hbWUgY2Fubm90IGJlIG1vcmUgdGhhbiAyNTUgYnl0ZXMgbG9uZ1wiKTtcbiAgfVxuICBpZiAoem9uZU5hbWUuc3BsaXQoXCIuXCIpLmZpbmQoKGxhYmVsKSA9PiBsYWJlbC5sZW5ndGggPiA2MykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6b25lIG5hbWUgbGFiZWxzIGNhbm5vdCBiZSBtb3JlIHRoYW4gNjMgYnl0ZXMgbG9uZ1wiKTtcbiAgfVxuICBpZiAoIXpvbmVOYW1lLm1hdGNoKC9eW2EtejAtOSFcIiMkJSYnKCkqKywvOjs8PT4/QFtcXFxcXFxdXl9ge3x9fi4tXSskL2kpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJ6b25lIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gYS16LCAwLTksIC0sICEgXFxcIiAjICQgJSAmICcgKCApICogKyAsIC0gLyA6IDsgPCA9ID4gPyBAIFsgIF0gXiBfIGAgeyB8IH0gfiAuXCIsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,185 @@
1
+ import { cloudfrontFunction } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { IKeyValueStore } from ".";
4
+ import { AwsConstructBase, IAwsConstruct, AwsConstructProps } from "../aws-construct";
5
+ /**
6
+ * Represents the function's source code
7
+ */
8
+ export declare abstract class FunctionCode {
9
+ /**
10
+ * Inline code for function
11
+ * @returns code object with inline code.
12
+ * @param code The actual function code
13
+ */
14
+ static fromInline(code: string): FunctionCode;
15
+ /**
16
+ * Code from external file for function
17
+ * @returns code object with contents from file.
18
+ * @param options the options for the external file
19
+ */
20
+ static fromFile(options: FileCodeOptions): FunctionCode;
21
+ /**
22
+ * renders the function code
23
+ */
24
+ abstract render(): string;
25
+ }
26
+ /**
27
+ * Options when reading the function's code from an external file
28
+ */
29
+ export interface FileCodeOptions {
30
+ /**
31
+ * The path of the file to read the code from
32
+ */
33
+ readonly filePath: string;
34
+ }
35
+ /**
36
+ * Represents a CloudFront Function
37
+ *
38
+ * @resource aws_cloudfront_function
39
+ */
40
+ export interface IFunction extends IAwsConstruct {
41
+ /** Strongly typed outputs
42
+ *
43
+ * @attribute
44
+ */
45
+ readonly functionOutputs: FunctionOutputs;
46
+ /**
47
+ * The name of the function.
48
+ * @attribute
49
+ */
50
+ readonly functionName: string;
51
+ /**
52
+ * The ARN of the function.
53
+ * @attribute
54
+ */
55
+ readonly functionArn: string;
56
+ }
57
+ /**
58
+ * Outputs of an existing CloudFront Function to import it
59
+ */
60
+ export interface FunctionOutputs {
61
+ /**
62
+ * The name of the function.
63
+ */
64
+ readonly name: string;
65
+ /**
66
+ * The ARN of the function.
67
+ */
68
+ readonly arn: string;
69
+ /**
70
+ * The Runtime of the function.
71
+ * @default FunctionRuntime.JS_1_0
72
+ */
73
+ readonly functionRuntime?: string;
74
+ }
75
+ /**
76
+ * Properties for creating a CloudFront Function
77
+ */
78
+ export interface FunctionProps extends AwsConstructProps {
79
+ /**
80
+ * A name to identify the function.
81
+ */
82
+ readonly nameSuffix: string;
83
+ /**
84
+ * A comment to describe the function.
85
+ * @default - same as `functionName`
86
+ */
87
+ readonly comment?: string;
88
+ /**
89
+ * The source code of the function.
90
+ */
91
+ readonly code: FunctionCode;
92
+ /**
93
+ * The runtime environment for the function.
94
+ * @default FunctionRuntime.JS_1_0 (unless `keyValueStore` is specified, then `FunctionRuntime.JS_2_0`)
95
+ */
96
+ readonly runtime?: FunctionRuntime;
97
+ /**
98
+ * The Key Value Store to associate with this function.
99
+ *
100
+ * In order to associate a Key Value Store, the `runtime` must be
101
+ * `cloudfront-js-2.0` or newer.
102
+ *
103
+ * Note: AWS limits associations to one key value store per function.
104
+ *
105
+ * @default - no key value store is associated
106
+ */
107
+ readonly keyValueStore?: IKeyValueStore;
108
+ /**
109
+ * A flag that determines whether to automatically publish the function to the LIVE stage when it’s created.
110
+ *
111
+ * @default - true
112
+ */
113
+ readonly autoPublish?: boolean;
114
+ }
115
+ /**
116
+ * A CloudFront Function
117
+ *
118
+ * @resource aws_cloudfront_function
119
+ */
120
+ export declare class Function extends AwsConstructBase implements IFunction {
121
+ readonly resource: cloudfrontFunction.CloudfrontFunction;
122
+ private readonly _outputs;
123
+ get functionOutputs(): FunctionOutputs;
124
+ get outputs(): Record<string, any>;
125
+ /**
126
+ * the name of the CloudFront function
127
+ * @attribute
128
+ */
129
+ readonly functionName: string;
130
+ /**
131
+ * the ARN of the CloudFront function
132
+ * @attribute
133
+ */
134
+ readonly functionArn: string;
135
+ /**
136
+ * the deployment stage of the CloudFront function
137
+ * @attribute
138
+ */
139
+ readonly functionStage: string;
140
+ /**
141
+ * the runtime of the CloudFront function
142
+ * @attribute
143
+ */
144
+ readonly functionRuntime: string;
145
+ constructor(scope: Construct, id: string, props: FunctionProps);
146
+ }
147
+ /**
148
+ * The type of events that a CloudFront function can be invoked in response to.
149
+ */
150
+ export declare enum FunctionEventType {
151
+ /**
152
+ * The viewer-request specifies the incoming request
153
+ */
154
+ VIEWER_REQUEST = "viewer-request",
155
+ /**
156
+ * The viewer-response specifies the outgoing response
157
+ */
158
+ VIEWER_RESPONSE = "viewer-response"
159
+ }
160
+ /**
161
+ * Represents a CloudFront function and event type when using CF Functions.
162
+ * The type of the `AddBehaviorOptions.functionAssociations` property.
163
+ */
164
+ export interface FunctionAssociation {
165
+ /**
166
+ * The CloudFront function that will be invoked.
167
+ */
168
+ readonly function: IFunction;
169
+ /** The type of event which should invoke the function. */
170
+ readonly eventType: FunctionEventType;
171
+ }
172
+ /**
173
+ * https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/functions-javascript-runtime-features.html
174
+ * https://registry.terraform.io/providers/hashicorp/aws/5.60.0/docs/resources/cloudfront_function#runtime
175
+ */
176
+ export declare enum FunctionRuntime {
177
+ /**
178
+ * cloudfront-js-1.0
179
+ */
180
+ JS_1_0 = "cloudfront-js-1.0",
181
+ /**
182
+ * cloudfront-js-2.0
183
+ */
184
+ JS_2_0 = "cloudfront-js-2.0"
185
+ }