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,148 @@
1
+ import { lambdaAlias } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { Architecture } from "./architecture";
4
+ import { EventInvokeConfigOptions } from "./event-invoke-config";
5
+ import { IFunction, QualifiedFunctionBase } from "./function-base";
6
+ /**
7
+ * Outputs that can be exposed through the grid
8
+ */
9
+ export interface AliasOutputs {
10
+ /**
11
+ * The Amazon Resource Name (ARN) identifying your Lambda function alias.
12
+ */
13
+ readonly name: string;
14
+ /**
15
+ * The ARN to be used for invoking Lambda Function from API Gateway - to be used in `aws_api_gateway_integration`'s uri
16
+ */
17
+ readonly invokeArn: string;
18
+ }
19
+ export interface IAlias extends IFunction {
20
+ /** strongly typed aliasOutputs */
21
+ readonly aliasOutputs: AliasOutputs;
22
+ /**
23
+ * Name of this alias.
24
+ *
25
+ * @attribute
26
+ */
27
+ readonly aliasName: string;
28
+ /**
29
+ * The underlying Lambda function
30
+ */
31
+ readonly lambda: IFunction;
32
+ /**
33
+ * The underlying Lambda function version.
34
+ */
35
+ readonly version: string;
36
+ }
37
+ /**
38
+ * Options for `lambda.Alias`.
39
+ */
40
+ export interface AliasOptions extends EventInvokeConfigOptions {
41
+ /**
42
+ * Description for the alias
43
+ *
44
+ * @default No description
45
+ */
46
+ readonly description?: string;
47
+ /**
48
+ * Additional versions with individual weights this alias points to
49
+ *
50
+ * Individual additional version weights specified here should add up to
51
+ * (less than) one. All remaining weight is routed to the default
52
+ * version.
53
+ *
54
+ * For example, the config is
55
+ *
56
+ * version: "1"
57
+ * additionalVersions: [{ version: "2", weight: 0.05 }]
58
+ *
59
+ * Then 5% of traffic will be routed to function version 2, while
60
+ * the remaining 95% of traffic will be routed to function version 1.
61
+ *
62
+ * @default No additional versions
63
+ */
64
+ readonly additionalVersions?: VersionWeight[];
65
+ }
66
+ /**
67
+ * Properties for a new Lambda alias
68
+ */
69
+ export interface AliasProps extends AliasOptions {
70
+ /**
71
+ * Name of this alias
72
+ *
73
+ * Minimum length of 1. Maximum length of 128.
74
+ * Pattern: (?!^[0-9]+$)([a-zA-Z0-9-_]+)
75
+ *
76
+ */
77
+ readonly aliasName: string;
78
+ /**
79
+ * Function this alias refers to
80
+ */
81
+ readonly function: IFunction;
82
+ /**
83
+ * Function version this alias refers to
84
+ *
85
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/lambda_alias#function_version LambdaAlias#function_version}
86
+ * pattern (\$LATEST|[0-9]+)
87
+ */
88
+ readonly version: string;
89
+ }
90
+ export interface AliasAttributes {
91
+ readonly aliasName: string;
92
+ readonly function: IFunction;
93
+ }
94
+ /**
95
+ * A new alias to a particular version of a Lambda function.
96
+ */
97
+ export declare class Alias extends QualifiedFunctionBase implements IAlias {
98
+ static fromAliasAttributes(scope: Construct, id: string, attrs: AliasAttributes): IAlias;
99
+ readonly resource: lambdaAlias.LambdaAlias;
100
+ private readonly _aliasOutputs;
101
+ get aliasOutputs(): AliasOutputs;
102
+ get outputs(): Record<string, any>;
103
+ /**
104
+ * Name of this alias.
105
+ *
106
+ * @attribute
107
+ */
108
+ readonly aliasName: string;
109
+ /**
110
+ * Name of this alias
111
+ *
112
+ * Used to be able to use Alias in place of a regular Lambda. Lambda accepts
113
+ * ARNs everywhere it accepts function names.
114
+ */
115
+ readonly functionName: string;
116
+ readonly lambda: IFunction;
117
+ readonly architecture: Architecture;
118
+ readonly version: string;
119
+ /**
120
+ * ARN of this alias
121
+ *
122
+ * Used to be able to use Alias in place of a regular Lambda. Lambda accepts
123
+ * ARNs everywhere it accepts function names.
124
+ */
125
+ readonly functionArn: string;
126
+ protected readonly qualifier: string;
127
+ protected readonly canCreatePermissions: boolean;
128
+ constructor(scope: Construct, id: string, props: AliasProps);
129
+ get grantPrincipal(): import("../iam").IPrincipal;
130
+ get role(): import("../iam").IRole | undefined;
131
+ /**
132
+ * Calculate the routingConfig parameter from the input props
133
+ */
134
+ private determineRoutingConfig;
135
+ }
136
+ /**
137
+ * A version/weight pair for routing traffic to Lambda functions
138
+ */
139
+ export interface VersionWeight {
140
+ /**
141
+ * The version to route traffic to
142
+ */
143
+ readonly version: string;
144
+ /**
145
+ * How much weight to assign to this version (0..1)
146
+ */
147
+ readonly weight: number;
148
+ }
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Alias = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const provider_aws_1 = require("@cdktf/provider-aws");
7
+ const function_base_1 = require("./function-base");
8
+ /**
9
+ * A new alias to a particular version of a Lambda function.
10
+ */
11
+ class Alias extends function_base_1.QualifiedFunctionBase {
12
+ static fromAliasAttributes(scope, id, attrs) {
13
+ class Imported extends function_base_1.QualifiedFunctionBase {
14
+ /**
15
+ * Lambda function version which the alias uses.
16
+ */
17
+ get version() {
18
+ return this.resource.functionVersion;
19
+ }
20
+ get aliasOutputs() {
21
+ return {
22
+ name: attrs.aliasName,
23
+ invokeArn: this.resource.invokeArn,
24
+ };
25
+ }
26
+ get outputs() {
27
+ return this.aliasOutputs;
28
+ }
29
+ constructor(s, i) {
30
+ super(s, i);
31
+ this.aliasName = attrs.aliasName;
32
+ this.lambda = attrs.function;
33
+ this.functionArn = `${attrs.function.functionArn}:${attrs.aliasName}`;
34
+ this.functionName = `${attrs.function.functionName}:${attrs.aliasName}`;
35
+ this.grantPrincipal = attrs.function.grantPrincipal;
36
+ this.role = attrs.function.role;
37
+ this.architecture = attrs.function.architecture;
38
+ this.canCreatePermissions = this._isStackAccount();
39
+ this.qualifier = attrs.aliasName;
40
+ this.resource = new provider_aws_1.dataAwsLambdaAlias.DataAwsLambdaAlias(this, "Resource", {
41
+ name: this.aliasName,
42
+ functionName: attrs.function.functionName,
43
+ });
44
+ }
45
+ }
46
+ return new Imported(scope, id);
47
+ }
48
+ get aliasOutputs() {
49
+ return this._aliasOutputs;
50
+ }
51
+ get outputs() {
52
+ return this._aliasOutputs;
53
+ }
54
+ // // TODO: Re-Add scalable functions
55
+ // private scalableAlias?: ScalableFunctionAttribute;
56
+ // private readonly scalingRole: iam.IRole;
57
+ constructor(scope, id, props) {
58
+ super(scope, id, props);
59
+ this.canCreatePermissions = true;
60
+ this.lambda = props.function;
61
+ // TODO: Does it make sense to just prefix aliasName with GridUUID?
62
+ // should use this.stack.uniqueResourceName instead?
63
+ this.aliasName = `${this.gridUUID}-${props.aliasName}`;
64
+ this.version = props.version;
65
+ this.architecture = this.lambda.architecture;
66
+ this.resource = new provider_aws_1.lambdaAlias.LambdaAlias(this, "Resource", {
67
+ name: this.aliasName,
68
+ description: props.description,
69
+ functionName: this.lambda.functionName,
70
+ functionVersion: props.version,
71
+ routingConfig: this.determineRoutingConfig(props),
72
+ });
73
+ // TODO: Add aws_lambda_provisioned_concurrency_config
74
+ // // Use a Service Linked Role
75
+ // // https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html
76
+ // this.scalingRole = iam.Role.fromRoleArn(
77
+ // this,
78
+ // "ScalingRole",
79
+ // this.stack.formatArn({
80
+ // service: "iam",
81
+ // region: "",
82
+ // resource:
83
+ // "role/aws-service-role/lambda.application-autoscaling.amazonaws.com",
84
+ // resourceName:
85
+ // "AWSServiceRoleForApplicationAutoScaling_LambdaConcurrency",
86
+ // }),
87
+ // );
88
+ // includes qualifier
89
+ this.functionArn = this.resource.invokeArn;
90
+ // this.getResourceArnAttribute(alias.ref, {
91
+ // service: "lambda",
92
+ // resource: "function",
93
+ // resourceName: `${this.lambda.functionName}:${this.aliasName}`,
94
+ // arnFormat: ArnFormat.COLON_RESOURCE_NAME,
95
+ // });
96
+ this.qualifier = this.aliasName;
97
+ if (props.onFailure ||
98
+ props.onSuccess ||
99
+ props.maxEventAge ||
100
+ props.retryAttempts !== undefined) {
101
+ this.configureAsyncInvoke({
102
+ onFailure: props.onFailure,
103
+ onSuccess: props.onSuccess,
104
+ maxEventAge: props.maxEventAge,
105
+ retryAttempts: props.retryAttempts,
106
+ });
107
+ }
108
+ // ARN parsing splits on `:`, so we can only get the function's name from the ARN as resourceName...
109
+ // And we're parsing it out (instead of using the underlying function directly) in order to have use of it incur
110
+ // an implicit dependency on the resource.
111
+ //`${this.stack.splitArn(this.functionArn, ArnFormat.COLON_RESOURCE_NAME).resourceName!}:${this.aliasName}`;
112
+ this.functionName = this.resource.functionName;
113
+ this._aliasOutputs = {
114
+ invokeArn: this.resource.invokeArn,
115
+ name: this.aliasName,
116
+ };
117
+ }
118
+ get grantPrincipal() {
119
+ return this.lambda.grantPrincipal;
120
+ }
121
+ get role() {
122
+ return this.lambda.role;
123
+ }
124
+ // /**
125
+ // * Configure provisioned concurrency autoscaling on a function alias. Returns a scalable attribute that can call
126
+ // * `scaleOnUtilization()` and `scaleOnSchedule()`.
127
+ // *
128
+ // * @param options Autoscaling options
129
+ // */
130
+ // public addAutoScaling(
131
+ // options: AutoScalingOptions,
132
+ // ): IScalableFunctionAttribute {
133
+ // if (this.scalableAlias) {
134
+ // throw new Error("AutoScaling already enabled for this alias");
135
+ // }
136
+ // return (this.scalableAlias = new ScalableFunctionAttribute(
137
+ // this,
138
+ // "AliasScaling",
139
+ // {
140
+ // minCapacity: options.minCapacity ?? 1,
141
+ // maxCapacity: options.maxCapacity,
142
+ // resourceId: `function:${this.functionName}`,
143
+ // dimension: "lambda:function:ProvisionedConcurrency",
144
+ // serviceNamespace: appscaling.ServiceNamespace.LAMBDA,
145
+ // role: this.scalingRole,
146
+ // },
147
+ // ));
148
+ // }
149
+ /**
150
+ * Calculate the routingConfig parameter from the input props
151
+ */
152
+ determineRoutingConfig(props) {
153
+ if (!props.additionalVersions || props.additionalVersions.length === 0) {
154
+ return undefined;
155
+ }
156
+ let total = 0;
157
+ const additionalVersionWeights = {};
158
+ for (const vw of props.additionalVersions) {
159
+ if (vw.weight < 0 || vw.weight > 1) {
160
+ throw new Error(`Additional version weight must be between 0 and 1, got: ${vw.weight}`);
161
+ }
162
+ total += vw.weight;
163
+ additionalVersionWeights[vw.version] = vw.weight;
164
+ }
165
+ if (total > 1) {
166
+ throw new Error(`Sum of additional version weights must not exceed 1, got: ${total}`);
167
+ }
168
+ return {
169
+ additionalVersionWeights,
170
+ };
171
+ }
172
+ }
173
+ exports.Alias = Alias;
174
+ _a = JSII_RTTI_SYMBOL_1;
175
+ Alias[_a] = { fqn: "terraconstructs.aws.compute.Alias", version: "0.0.8" };
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tYWxpYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0U7QUFJdEUsbURBQW1FO0FBb0huRTs7R0FFRztBQUNILE1BQWEsS0FBTSxTQUFRLHFDQUFxQjtJQUN2QyxNQUFNLENBQUMsbUJBQW1CLENBQy9CLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFzQjtRQUV0QixNQUFNLFFBQVMsU0FBUSxxQ0FBcUI7WUFHMUM7O2VBRUc7WUFDSCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDdkMsQ0FBQztZQVFELElBQVcsWUFBWTtnQkFDckIsT0FBTztvQkFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQ3JCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVM7aUJBQ25DLENBQUM7WUFDSixDQUFDO1lBQ0QsSUFBVyxPQUFPO2dCQUNoQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDM0IsQ0FBQztZQUdELFlBQVksQ0FBWSxFQUFFLENBQVM7Z0JBQ2pDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBMUJFLGNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO2dCQU81QixXQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDeEIsZ0JBQVcsR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakUsaUJBQVksR0FBRyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkUsbUJBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztnQkFD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QyxDQUFDO1FBQ2QsTUFBTSx3QkFBd0IsR0FBOEIsRUFBRSxDQUFDO1FBQy9ELEtBQUssTUFBTSxFQUFFLElBQUksS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQ3ZFLENBQUM7WUFDSixDQUFDO1lBQ0QsS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDbkIsd0JBQXdCLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FDYiw2REFBNkQsS0FBSyxFQUFFLENBQ3JFLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTztZQUNMLHdCQUF3QjtTQUN6QixDQUFDO0lBQ0osQ0FBQzs7QUF4T0gsc0JBa1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGFtYmRhQWxpYXMsIGRhdGFBd3NMYW1iZGFBbGlhcyB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXJjaGl0ZWN0dXJlIH0gZnJvbSBcIi4vYXJjaGl0ZWN0dXJlXCI7XG5pbXBvcnQgeyBFdmVudEludm9rZUNvbmZpZ09wdGlvbnMgfSBmcm9tIFwiLi9ldmVudC1pbnZva2UtY29uZmlnXCI7XG5pbXBvcnQgeyBJRnVuY3Rpb24sIFF1YWxpZmllZEZ1bmN0aW9uQmFzZSB9IGZyb20gXCIuL2Z1bmN0aW9uLWJhc2VcIjtcbi8vIGltcG9ydCB7IFNjYWxhYmxlRnVuY3Rpb25BdHRyaWJ1dGUgfSBmcm9tIFwiLi9wcml2YXRlL3NjYWxhYmxlLWZ1bmN0aW9uLWF0dHJpYnV0ZVwiO1xuLy8gaW1wb3J0IHtcbi8vICAgQXV0b1NjYWxpbmdPcHRpb25zLFxuLy8gICBJU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZSxcbi8vIH0gZnJvbSBcIi4vc2NhbGFibGUtYXR0cmlidXRlLWFwaVwiO1xuLy8gaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uL1wiO1xuXG4vKipcbiAqIE91dHB1dHMgdGhhdCBjYW4gYmUgZXhwb3NlZCB0aHJvdWdoIHRoZSBncmlkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNPdXRwdXRzIHtcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSBpZGVudGlmeWluZyB5b3VyIExhbWJkYSBmdW5jdGlvbiBhbGlhcy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiB0byBiZSB1c2VkIGZvciBpbnZva2luZyBMYW1iZGEgRnVuY3Rpb24gZnJvbSBBUEkgR2F0ZXdheSAtIHRvIGJlIHVzZWQgaW4gYGF3c19hcGlfZ2F0ZXdheV9pbnRlZ3JhdGlvbmAncyB1cmlcbiAgICovXG4gIHJlYWRvbmx5IGludm9rZUFybjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBbGlhcyBleHRlbmRzIElGdW5jdGlvbiB7XG4gIC8qKiBzdHJvbmdseSB0eXBlZCBhbGlhc091dHB1dHMgKi9cbiAgcmVhZG9ubHkgYWxpYXNPdXRwdXRzOiBBbGlhc091dHB1dHM7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyBhbGlhcy5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIExhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIExhbWJkYSBmdW5jdGlvbiB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBsYW1iZGEuQWxpYXNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsaWFzT3B0aW9ucyBleHRlbmRzIEV2ZW50SW52b2tlQ29uZmlnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIGFsaWFzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCB2ZXJzaW9ucyB3aXRoIGluZGl2aWR1YWwgd2VpZ2h0cyB0aGlzIGFsaWFzIHBvaW50cyB0b1xuICAgKlxuICAgKiBJbmRpdmlkdWFsIGFkZGl0aW9uYWwgdmVyc2lvbiB3ZWlnaHRzIHNwZWNpZmllZCBoZXJlIHNob3VsZCBhZGQgdXAgdG9cbiAgICogKGxlc3MgdGhhbikgb25lLiBBbGwgcmVtYWluaW5nIHdlaWdodCBpcyByb3V0ZWQgdG8gdGhlIGRlZmF1bHRcbiAgICogdmVyc2lvbi5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHRoZSBjb25maWcgaXNcbiAgICpcbiAgICogICAgdmVyc2lvbjogXCIxXCJcbiAgICogICAgYWRkaXRpb25hbFZlcnNpb25zOiBbeyB2ZXJzaW9uOiBcIjJcIiwgd2VpZ2h0OiAwLjA1IH1dXG4gICAqXG4gICAqIFRoZW4gNSUgb2YgdHJhZmZpYyB3aWxsIGJlIHJvdXRlZCB0byBmdW5jdGlvbiB2ZXJzaW9uIDIsIHdoaWxlXG4gICAqIHRoZSByZW1haW5pbmcgOTUlIG9mIHRyYWZmaWMgd2lsbCBiZSByb3V0ZWQgdG8gZnVuY3Rpb24gdmVyc2lvbiAxLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhZGRpdGlvbmFsIHZlcnNpb25zXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVmVyc2lvbnM/OiBWZXJzaW9uV2VpZ2h0W107XG5cbiAgLy8gVE9ETzogcmUtYWRkIHN1cHBvcnQgZm9yIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5XG4gIC8vIC8qKlxuICAvLyAgKiBTcGVjaWZpZXMgYSBwcm92aXNpb25lZCBjb25jdXJyZW5jeSBjb25maWd1cmF0aW9uIGZvciBhIGZ1bmN0aW9uJ3MgYWxpYXMuXG4gIC8vICAqXG4gIC8vICAqIEBkZWZhdWx0IE5vIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5XG4gIC8vICAqL1xuICAvLyByZWFkb25seSBwcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IExhbWJkYSBhbGlhc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsaWFzUHJvcHMgZXh0ZW5kcyBBbGlhc09wdGlvbnMge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIGFsaWFzXG4gICAqXG4gICAqIE1pbmltdW0gbGVuZ3RoIG9mIDEuIE1heGltdW0gbGVuZ3RoIG9mIDEyOC5cbiAgICogUGF0dGVybjogKD8hXlswLTldKyQpKFthLXpBLVowLTktX10rKVxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRoaXMgYWxpYXMgcmVmZXJzIHRvXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB2ZXJzaW9uIHRoaXMgYWxpYXMgcmVmZXJzIHRvXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42OC4wL2RvY3MvcmVzb3VyY2VzL2xhbWJkYV9hbGlhcyNmdW5jdGlvbl92ZXJzaW9uIExhbWJkYUFsaWFzI2Z1bmN0aW9uX3ZlcnNpb259XG4gICAqIHBhdHRlcm4gKFxcJExBVEVTVHxbMC05XSspXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNBdHRyaWJ1dGVzIHtcbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBJRnVuY3Rpb247XG59XG5cbi8qKlxuICogQSBuZXcgYWxpYXMgdG8gYSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgYSBMYW1iZGEgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGlhcyBleHRlbmRzIFF1YWxpZmllZEZ1bmN0aW9uQmFzZSBpbXBsZW1lbnRzIElBbGlhcyB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFsaWFzQXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IEFsaWFzQXR0cmlidXRlcyxcbiAgKTogSUFsaWFzIHtcbiAgICBjbGFzcyBJbXBvcnRlZCBleHRlbmRzIFF1YWxpZmllZEZ1bmN0aW9uQmFzZSBpbXBsZW1lbnRzIElBbGlhcyB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGRhdGFBd3NMYW1iZGFBbGlhcy5EYXRhQXdzTGFtYmRhQWxpYXM7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYWxpYXNOYW1lID0gYXR0cnMuYWxpYXNOYW1lO1xuICAgICAgLyoqXG4gICAgICAgKiBMYW1iZGEgZnVuY3Rpb24gdmVyc2lvbiB3aGljaCB0aGUgYWxpYXMgdXNlcy5cbiAgICAgICAqL1xuICAgICAgcHVibGljIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5mdW5jdGlvblZlcnNpb247XG4gICAgICB9XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhID0gYXR0cnMuZnVuY3Rpb247XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25Bcm4gPSBgJHthdHRycy5mdW5jdGlvbi5mdW5jdGlvbkFybn06JHthdHRycy5hbGlhc05hbWV9YDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbk5hbWUgPSBgJHthdHRycy5mdW5jdGlvbi5mdW5jdGlvbk5hbWV9OiR7YXR0cnMuYWxpYXNOYW1lfWA7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWwgPSBhdHRycy5mdW5jdGlvbi5ncmFudFByaW5jaXBhbDtcbiAgICAgIHB1YmxpYyByZWFkb25seSByb2xlID0gYXR0cnMuZnVuY3Rpb24ucm9sZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhcmNoaXRlY3R1cmUgPSBhdHRycy5mdW5jdGlvbi5hcmNoaXRlY3R1cmU7XG5cbiAgICAgIHB1YmxpYyBnZXQgYWxpYXNPdXRwdXRzKCk6IEFsaWFzT3V0cHV0cyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogYXR0cnMuYWxpYXNOYW1lLFxuICAgICAgICAgIGludm9rZUFybjogdGhpcy5yZXNvdXJjZS5pbnZva2VBcm4sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsaWFzT3V0cHV0cztcbiAgICAgIH1cbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBjYW5DcmVhdGVQZXJtaXNzaW9ucyA9IHRoaXMuX2lzU3RhY2tBY2NvdW50KCk7XG4gICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcXVhbGlmaWVyID0gYXR0cnMuYWxpYXNOYW1lO1xuICAgICAgY29uc3RydWN0b3IoczogQ29uc3RydWN0LCBpOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocywgaSk7XG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgZGF0YUF3c0xhbWJkYUFsaWFzLkRhdGFBd3NMYW1iZGFBbGlhcyhcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLmFsaWFzTmFtZSxcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogYXR0cnMuZnVuY3Rpb24uZnVuY3Rpb25OYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZChzY29wZSwgaWQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBsYW1iZGFBbGlhcy5MYW1iZGFBbGlhcztcbiAgcHJpdmF0ZSByZWFkb25seSBfYWxpYXNPdXRwdXRzOiBBbGlhc091dHB1dHM7XG4gIHB1YmxpYyBnZXQgYWxpYXNPdXRwdXRzKCk6IEFsaWFzT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX2FsaWFzT3V0cHV0cztcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsaWFzT3V0cHV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgYWxpYXMuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIGFsaWFzXG4gICAqXG4gICAqIFVzZWQgdG8gYmUgYWJsZSB0byB1c2UgQWxpYXMgaW4gcGxhY2Ugb2YgYSByZWd1bGFyIExhbWJkYS4gTGFtYmRhIGFjY2VwdHNcbiAgICogQVJOcyBldmVyeXdoZXJlIGl0IGFjY2VwdHMgZnVuY3Rpb24gbmFtZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYTogSUZ1bmN0aW9uO1xuXG4gIHB1YmxpYyByZWFkb25seSBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgdGhpcyBhbGlhc1xuICAgKlxuICAgKiBVc2VkIHRvIGJlIGFibGUgdG8gdXNlIEFsaWFzIGluIHBsYWNlIG9mIGEgcmVndWxhciBMYW1iZGEuIExhbWJkYSBhY2NlcHRzXG4gICAqIEFSTnMgZXZlcnl3aGVyZSBpdCBhY2NlcHRzIGZ1bmN0aW9uIG5hbWVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uQXJuOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHF1YWxpZmllcjogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjYW5DcmVhdGVQZXJtaXNzaW9uczogYm9vbGVhbiA9IHRydWU7XG5cbiAgLy8gLy8gVE9ETzogUmUtQWRkIHNjYWxhYmxlIGZ1bmN0aW9uc1xuICAvLyBwcml2YXRlIHNjYWxhYmxlQWxpYXM/OiBTY2FsYWJsZUZ1bmN0aW9uQXR0cmlidXRlO1xuICAvLyBwcml2YXRlIHJlYWRvbmx5IHNjYWxpbmdSb2xlOiBpYW0uSVJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFsaWFzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMubGFtYmRhID0gcHJvcHMuZnVuY3Rpb247XG4gICAgLy8gVE9ETzogRG9lcyBpdCBtYWtlIHNlbnNlIHRvIGp1c3QgcHJlZml4IGFsaWFzTmFtZSB3aXRoIEdyaWRVVUlEP1xuICAgIC8vIHNob3VsZCB1c2UgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUgaW5zdGVhZD9cbiAgICB0aGlzLmFsaWFzTmFtZSA9IGAke3RoaXMuZ3JpZFVVSUR9LSR7cHJvcHMuYWxpYXNOYW1lfWA7XG4gICAgdGhpcy52ZXJzaW9uID0gcHJvcHMudmVyc2lvbjtcbiAgICB0aGlzLmFyY2hpdGVjdHVyZSA9IHRoaXMubGFtYmRhLmFyY2hpdGVjdHVyZTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgbGFtYmRhQWxpYXMuTGFtYmRhQWxpYXModGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuYW1lOiB0aGlzLmFsaWFzTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGZ1bmN0aW9uTmFtZTogdGhpcy5sYW1iZGEuZnVuY3Rpb25OYW1lLFxuICAgICAgZnVuY3Rpb25WZXJzaW9uOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgcm91dGluZ0NvbmZpZzogdGhpcy5kZXRlcm1pbmVSb3V0aW5nQ29uZmlnKHByb3BzKSxcbiAgICB9KTtcblxuICAgIC8vIFRPRE86IEFkZCBhd3NfbGFtYmRhX3Byb3Zpc2lvbmVkX2NvbmN1cnJlbmN5X2NvbmZpZ1xuXG4gICAgLy8gLy8gVXNlIGEgU2VydmljZSBMaW5rZWQgUm9sZVxuICAgIC8vIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9hcHBsaWNhdGlvbi91c2VyZ3VpZGUvYXBwbGljYXRpb24tYXV0by1zY2FsaW5nLXNlcnZpY2UtbGlua2VkLXJvbGVzLmh0bWxcbiAgICAvLyB0aGlzLnNjYWxpbmdSb2xlID0gaWFtLlJvbGUuZnJvbVJvbGVBcm4oXG4gICAgLy8gICB0aGlzLFxuICAgIC8vICAgXCJTY2FsaW5nUm9sZVwiLFxuICAgIC8vICAgdGhpcy5zdGFjay5mb3JtYXRBcm4oe1xuICAgIC8vICAgICBzZXJ2aWNlOiBcImlhbVwiLFxuICAgIC8vICAgICByZWdpb246IFwiXCIsXG4gICAgLy8gICAgIHJlc291cmNlOlxuICAgIC8vICAgICAgIFwicm9sZS9hd3Mtc2VydmljZS1yb2xlL2xhbWJkYS5hcHBsaWNhdGlvbi1hdXRvc2NhbGluZy5hbWF6b25hd3MuY29tXCIsXG4gICAgLy8gICAgIHJlc291cmNlTmFtZTpcbiAgICAvLyAgICAgICBcIkFXU1NlcnZpY2VSb2xlRm9yQXBwbGljYXRpb25BdXRvU2NhbGluZ19MYW1iZGFDb25jdXJyZW5jeVwiLFxuICAgIC8vICAgfSksXG4gICAgLy8gKTtcblxuICAgIC8vIGluY2x1ZGVzIHF1YWxpZmllclxuICAgIHRoaXMuZnVuY3Rpb25Bcm4gPSB0aGlzLnJlc291cmNlLmludm9rZUFybjtcblxuICAgIC8vIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUoYWxpYXMucmVmLCB7XG4gICAgLy8gICBzZXJ2aWNlOiBcImxhbWJkYVwiLFxuICAgIC8vICAgcmVzb3VyY2U6IFwiZnVuY3Rpb25cIixcbiAgICAvLyAgIHJlc291cmNlTmFtZTogYCR7dGhpcy5sYW1iZGEuZnVuY3Rpb25OYW1lfToke3RoaXMuYWxpYXNOYW1lfWAsXG4gICAgLy8gICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgIC8vIH0pO1xuXG4gICAgdGhpcy5xdWFsaWZpZXIgPSB0aGlzLmFsaWFzTmFtZTtcblxuICAgIGlmIChcbiAgICAgIHByb3BzLm9uRmFpbHVyZSB8fFxuICAgICAgcHJvcHMub25TdWNjZXNzIHx8XG4gICAgICBwcm9wcy5tYXhFdmVudEFnZSB8fFxuICAgICAgcHJvcHMucmV0cnlBdHRlbXB0cyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyZUFzeW5jSW52b2tlKHtcbiAgICAgICAgb25GYWlsdXJlOiBwcm9wcy5vbkZhaWx1cmUsXG4gICAgICAgIG9uU3VjY2VzczogcHJvcHMub25TdWNjZXNzLFxuICAgICAgICBtYXhFdmVudEFnZTogcHJvcHMubWF4RXZlbnRBZ2UsXG4gICAgICAgIHJldHJ5QXR0ZW1wdHM6IHByb3BzLnJldHJ5QXR0ZW1wdHMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBUk4gcGFyc2luZyBzcGxpdHMgb24gYDpgLCBzbyB3ZSBjYW4gb25seSBnZXQgdGhlIGZ1bmN0aW9uJ3MgbmFtZSBmcm9tIHRoZSBBUk4gYXMgcmVzb3VyY2VOYW1lLi4uXG4gICAgLy8gQW5kIHdlJ3JlIHBhcnNpbmcgaXQgb3V0IChpbnN0ZWFkIG9mIHVzaW5nIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIGRpcmVjdGx5KSBpbiBvcmRlciB0byBoYXZlIHVzZSBvZiBpdCBpbmN1clxuICAgIC8vIGFuIGltcGxpY2l0IGRlcGVuZGVuY3kgb24gdGhlIHJlc291cmNlLlxuXG4gICAgLy9gJHt0aGlzLnN0YWNrLnNwbGl0QXJuKHRoaXMuZnVuY3Rpb25Bcm4sIEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWUhfToke3RoaXMuYWxpYXNOYW1lfWA7XG4gICAgdGhpcy5mdW5jdGlvbk5hbWUgPSB0aGlzLnJlc291cmNlLmZ1bmN0aW9uTmFtZTtcbiAgICB0aGlzLl9hbGlhc091dHB1dHMgPSB7XG4gICAgICBpbnZva2VBcm46IHRoaXMucmVzb3VyY2UuaW52b2tlQXJuLFxuICAgICAgbmFtZTogdGhpcy5hbGlhc05hbWUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ3JhbnRQcmluY2lwYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFtYmRhLmdyYW50UHJpbmNpcGFsO1xuICB9XG5cbiAgcHVibGljIGdldCByb2xlKCkge1xuICAgIHJldHVybiB0aGlzLmxhbWJkYS5yb2xlO1xuICB9XG5cbiAgLy8gLyoqXG4gIC8vICAqIENvbmZpZ3VyZSBwcm92aXNpb25lZCBjb25jdXJyZW5jeSBhdXRvc2NhbGluZyBvbiBhIGZ1bmN0aW9uIGFsaWFzLiBSZXR1cm5zIGEgc2NhbGFibGUgYXR0cmlidXRlIHRoYXQgY2FuIGNhbGxcbiAgLy8gICogYHNjYWxlT25VdGlsaXphdGlvbigpYCBhbmQgYHNjYWxlT25TY2hlZHVsZSgpYC5cbiAgLy8gICpcbiAgLy8gICogQHBhcmFtIG9wdGlvbnMgQXV0b3NjYWxpbmcgb3B0aW9uc1xuICAvLyAgKi9cbiAgLy8gcHVibGljIGFkZEF1dG9TY2FsaW5nKFxuICAvLyAgIG9wdGlvbnM6IEF1dG9TY2FsaW5nT3B0aW9ucyxcbiAgLy8gKTogSVNjYWxhYmxlRnVuY3Rpb25BdHRyaWJ1dGUge1xuICAvLyAgIGlmICh0aGlzLnNjYWxhYmxlQWxpYXMpIHtcbiAgLy8gICAgIHRocm93IG5ldyBFcnJvcihcIkF1dG9TY2FsaW5nIGFscmVhZHkgZW5hYmxlZCBmb3IgdGhpcyBhbGlhc1wiKTtcbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuICh0aGlzLnNjYWxhYmxlQWxpYXMgPSBuZXcgU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZShcbiAgLy8gICAgIHRoaXMsXG4gIC8vICAgICBcIkFsaWFzU2NhbGluZ1wiLFxuICAvLyAgICAge1xuICAvLyAgICAgICBtaW5DYXBhY2l0eTogb3B0aW9ucy5taW5DYXBhY2l0eSA/PyAxLFxuICAvLyAgICAgICBtYXhDYXBhY2l0eTogb3B0aW9ucy5tYXhDYXBhY2l0eSxcbiAgLy8gICAgICAgcmVzb3VyY2VJZDogYGZ1bmN0aW9uOiR7dGhpcy5mdW5jdGlvbk5hbWV9YCxcbiAgLy8gICAgICAgZGltZW5zaW9uOiBcImxhbWJkYTpmdW5jdGlvbjpQcm92aXNpb25lZENvbmN1cnJlbmN5XCIsXG4gIC8vICAgICAgIHNlcnZpY2VOYW1lc3BhY2U6IGFwcHNjYWxpbmcuU2VydmljZU5hbWVzcGFjZS5MQU1CREEsXG4gIC8vICAgICAgIHJvbGU6IHRoaXMuc2NhbGluZ1JvbGUsXG4gIC8vICAgICB9LFxuICAvLyAgICkpO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSB0aGUgcm91dGluZ0NvbmZpZyBwYXJhbWV0ZXIgZnJvbSB0aGUgaW5wdXQgcHJvcHNcbiAgICovXG4gIHByaXZhdGUgZGV0ZXJtaW5lUm91dGluZ0NvbmZpZyhcbiAgICBwcm9wczogQWxpYXNQcm9wcyxcbiAgKTogbGFtYmRhQWxpYXMuTGFtYmRhQWxpYXNSb3V0aW5nQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXByb3BzLmFkZGl0aW9uYWxWZXJzaW9ucyB8fCBwcm9wcy5hZGRpdGlvbmFsVmVyc2lvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgY29uc3QgYWRkaXRpb25hbFZlcnNpb25XZWlnaHRzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gICAgZm9yIChjb25zdCB2dyBvZiBwcm9wcy5hZGRpdGlvbmFsVmVyc2lvbnMpIHtcbiAgICAgIGlmICh2dy53ZWlnaHQgPCAwIHx8IHZ3LndlaWdodCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBBZGRpdGlvbmFsIHZlcnNpb24gd2VpZ2h0IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxLCBnb3Q6ICR7dncud2VpZ2h0fWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0b3RhbCArPSB2dy53ZWlnaHQ7XG4gICAgICBhZGRpdGlvbmFsVmVyc2lvbldlaWdodHNbdncudmVyc2lvbl0gPSB2dy53ZWlnaHQ7XG4gICAgfVxuICAgIGlmICh0b3RhbCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFN1bSBvZiBhZGRpdGlvbmFsIHZlcnNpb24gd2VpZ2h0cyBtdXN0IG5vdCBleGNlZWQgMSwgZ290OiAke3RvdGFsfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhZGRpdGlvbmFsVmVyc2lvbldlaWdodHMsXG4gICAgfTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBWYWxpZGF0ZSB0aGF0IHRoZSBwcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zIG1ha2VzIHNlbnNlXG4gIC8vICAqXG4gIC8vICAqIE1lbWJlciBtdXN0IGhhdmUgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDFcbiAgLy8gICovXG4gIC8vIHByaXZhdGUgZGV0ZXJtaW5lUHJvdmlzaW9uZWRDb25jdXJyZW5jeShcbiAgLy8gICBwcm9wczogQWxpYXNQcm9wcyxcbiAgLy8gKTpcbiAgLy8gICB8IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzLlByb3Zpc2lvbmVkQ29uY3VycmVuY3lDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgLy8gICB8IHVuZGVmaW5lZCB7XG4gIC8vICAgaWYgKCFwcm9wcy5wcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zKSB7XG4gIC8vICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAvLyAgIH1cblxuICAvLyAgIGlmIChwcm9wcy5wcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zIDw9IDApIHtcbiAgLy8gICAgIHRocm93IG5ldyBFcnJvcihcbiAgLy8gICAgICAgXCJwcm92aXNpb25lZENvbmN1cnJlbnRFeGVjdXRpb25zIG11c3QgaGF2ZSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMVwiLFxuICAvLyAgICAgKTtcbiAgLy8gICB9XG5cbiAgLy8gICByZXR1cm4ge1xuICAvLyAgICAgcHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9uczogcHJvcHMucHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyxcbiAgLy8gICB9O1xuICAvLyB9XG59XG5cbi8qKlxuICogQSB2ZXJzaW9uL3dlaWdodCBwYWlyIGZvciByb3V0aW5nIHRyYWZmaWMgdG8gTGFtYmRhIGZ1bmN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25XZWlnaHQge1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gdG8gcm91dGUgdHJhZmZpYyB0b1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIb3cgbXVjaCB3ZWlnaHQgdG8gYXNzaWduIHRvIHRoaXMgdmVyc2lvbiAoMC4uMSlcbiAgICovXG4gIHJlYWRvbmx5IHdlaWdodDogbnVtYmVyO1xufVxuIl19
@@ -0,0 +1,314 @@
1
+ import { IResolvable } from "cdktf";
2
+ import { Node } from "constructs";
3
+ import { AwsConstructBase, IAwsConstruct } from "../aws-construct";
4
+ import { Architecture } from "./architecture";
5
+ import { EventInvokeConfigOptions } from "./event-invoke-config";
6
+ import { EventSourceMapping, EventSourceMappingOptions } from "./event-source-mapping";
7
+ import { Permission } from "./function-permission";
8
+ import { FunctionUrlOptions, FunctionUrl } from "./function-url";
9
+ import * as iam from "../iam";
10
+ /**
11
+ * Represents a Lambda function defined outside of this stack.
12
+ */
13
+ export interface FunctionAttributes {
14
+ /**
15
+ * The ARN of the Lambda function.
16
+ *
17
+ * Format: arn:<partition>:lambda:<region>:<account-id>:function:<function-name>
18
+ */
19
+ readonly functionArn: string;
20
+ /**
21
+ * The IAM execution role associated with this function.
22
+ *
23
+ * If the role is not specified, any role-related operations will no-op.
24
+ */
25
+ readonly role?: iam.IRole;
26
+ /**
27
+ * The security group of this Lambda, if in a VPC.
28
+ *
29
+ * This needs to be given in order to support allowing connections
30
+ * to this Lambda.
31
+ */
32
+ readonly securityGroup?: string | IResolvable;
33
+ /**
34
+ * Setting this property informs the CDK that the imported function is in the same environment as the stack.
35
+ * This affects certain behaviours such as, whether this function's permission can be modified.
36
+ * When not configured, the CDK attempts to auto-determine this. For environment agnostic stacks, i.e., stacks
37
+ * where the account is not specified with the `env` property, this is determined to be false.
38
+ *
39
+ * Set this to property *ONLY IF* the imported function is in the same account as the stack
40
+ * it's imported in.
41
+ * @default - depends: true, if the Stack is configured with an explicit `env` (account and region) and the account is the same as this function.
42
+ * For environment-agnostic stacks this will default to `false`.
43
+ */
44
+ readonly sameEnvironment?: boolean;
45
+ /**
46
+ * Setting this property informs the TerraConstruct that the imported function ALREADY HAS the necessary permissions
47
+ * for what you are trying to do. When not configured, E.T, attempts to auto-determine whether or not
48
+ * additional permissions are necessary on the function when grant APIs are used. If TerraConstruct tried to add
49
+ * permissions on an imported lambda, it will fail.
50
+ *
51
+ * Set this property *ONLY IF* you are committing to manage the imported function's permissions outside of
52
+ * this TerraConstruct stack. You are acknowledging that your TerraConstruct code alone will have insufficient permissions to access the
53
+ * imported function.
54
+ *
55
+ * @default false
56
+ */
57
+ readonly skipPermissions?: boolean;
58
+ /**
59
+ * The architecture of this Lambda Function (this is an optional attribute and defaults to X86_64).
60
+ * @default - Architecture.X86_64
61
+ */
62
+ readonly architecture?: Architecture;
63
+ }
64
+ /**
65
+ * A Lambda function.
66
+ */
67
+ export interface IFunction extends IAwsConstruct, iam.IGrantable {
68
+ /**
69
+ * The name of the function.
70
+ *
71
+ * @attribute
72
+ */
73
+ readonly functionName: string;
74
+ /**
75
+ * The ARN of the function.
76
+ *
77
+ * @attribute
78
+ */
79
+ readonly functionArn: string;
80
+ /**
81
+ * The IAM role associated with this function.
82
+ */
83
+ readonly role?: iam.IRole;
84
+ /**
85
+ * The construct node where permissions are attached.
86
+ */
87
+ readonly permissionsNode: Node;
88
+ /**
89
+ * The system architectures compatible with this lambda function.
90
+ */
91
+ readonly architecture: Architecture;
92
+ /**
93
+ * Adds an event source that maps to this AWS Lambda function.
94
+ * @param id construct ID
95
+ * @param options mapping options
96
+ */
97
+ addEventSourceMapping(id: string, options: EventSourceMappingOptions): EventSourceMapping;
98
+ /**
99
+ * Adds an event source to this function.
100
+ *
101
+ * The following example adds an SQS Queue as an event source:
102
+ * ```
103
+ * import { compute } from 'terraconstructs';
104
+ * myFunction.addEventSource(new compute.SqsEventSource(myQueue));
105
+ * ```
106
+ */
107
+ addEventSource(source: IEventSource): void;
108
+ /**
109
+ * Adds a permission to the Lambda resource policy.
110
+ * @param id The id for the permission construct
111
+ * @param permission The permission to grant to this Lambda function. @see Permission for details.
112
+ */
113
+ addPermission(id: string, permission: Permission): void;
114
+ /**
115
+ * Adds a statement to the IAM role assumed by the instance.
116
+ */
117
+ addToRolePolicy(statement: iam.PolicyStatement): void;
118
+ /**
119
+ * Grant the given identity permissions to invoke this Lambda
120
+ */
121
+ grantInvoke(identity: iam.IGrantable): iam.Grant;
122
+ /**
123
+ * Grant the given identity permissions to invoke the $LATEST version or
124
+ * unqualified version of this Lambda
125
+ */
126
+ grantInvokeLatestVersion(identity: iam.IGrantable): iam.Grant;
127
+ /**
128
+ * Grant the given identity permissions to invoke the given (or latest) version of this Lambda
129
+ */
130
+ grantInvokeVersion(identity: iam.IGrantable, version: string): iam.Grant;
131
+ /**
132
+ * Grant the given identity permissions to invoke this Lambda Function URL
133
+ */
134
+ grantInvokeUrl(identity: iam.IGrantable): iam.Grant;
135
+ /**
136
+ * Grant multiple principals the ability to invoke this Lambda via CompositePrincipal
137
+ */
138
+ grantInvokeCompositePrincipal(compositePrincipal: iam.CompositePrincipal): iam.Grant[];
139
+ /**
140
+ * Configures options for asynchronous invocation.
141
+ */
142
+ configureAsyncInvoke(options: EventInvokeConfigOptions): void;
143
+ /**
144
+ * Adds a url to this lambda function.
145
+ */
146
+ addFunctionUrl(options?: FunctionUrlOptions): FunctionUrl;
147
+ }
148
+ export declare abstract class LambdaFunctionBase extends AwsConstructBase implements IFunction {
149
+ /**
150
+ * The name of the function.
151
+ */
152
+ abstract readonly functionName: string;
153
+ /**
154
+ * The principal this Lambda Function is running as
155
+ */
156
+ abstract readonly grantPrincipal: iam.IPrincipal;
157
+ /**
158
+ * The ARN fo the function.
159
+ *
160
+ * Should include version (if versioning is enabled via publish = true)
161
+ */
162
+ abstract readonly functionArn: string;
163
+ /**
164
+ * Latest published version of your Lambda Function.
165
+ *
166
+ * Used as qualifier of the version or alias of this function.
167
+ * A qualifier is the identifier that's appended to a version or alias ARN.
168
+ * @see https://docs.aws.amazon.com/lambda/latest/dg/API_GetFunctionConfiguration.html#API_GetFunctionConfiguration_RequestParameters
169
+ */
170
+ abstract readonly version: string;
171
+ /**
172
+ * The qualifier of the version or alias of this function.
173
+ * A qualifier is the identifier that's appended to a version or alias ARN.
174
+ * @see https://docs.aws.amazon.com/lambda/latest/dg/API_GetFunctionConfiguration.html#API_GetFunctionConfiguration_RequestParameters
175
+ */
176
+ /**
177
+ * The IAM role associated with this function.
178
+ *
179
+ * Undefined if the function was imported without a role.
180
+ */
181
+ abstract readonly role?: iam.IRole;
182
+ /**
183
+ * The construct node where permissions are attached.
184
+ */
185
+ abstract readonly permissionsNode: Node;
186
+ /**
187
+ * The architecture of this Lambda Function.
188
+ */
189
+ abstract readonly architecture: Architecture;
190
+ /**
191
+ * Whether the addPermission() call adds any permissions
192
+ *
193
+ * True for new Lambdas, false for version $LATEST and imported Lambdas
194
+ * from different accounts.
195
+ */
196
+ protected abstract readonly canCreatePermissions: boolean;
197
+ /**
198
+ * The ARN(s) to put into the resource field of the generated IAM policy for grantInvoke()
199
+ */
200
+ abstract readonly resourceArnsForGrantInvoke: string[];
201
+ /**
202
+ * Whether the user decides to skip adding permissions.
203
+ * The only use case is for cross-account, imported lambdas
204
+ * where the user commits to modifying the permisssions
205
+ * on the imported lambda outside this TerraConstruct Spec.
206
+ * @internal
207
+ */
208
+ protected readonly _skipPermissions?: boolean;
209
+ /**
210
+ * Mapping of invocation principals to grants. Used to de-dupe `grantInvoke()` calls.
211
+ * @internal
212
+ */
213
+ protected _invocationGrants: Record<string, iam.Grant>;
214
+ /**
215
+ * Mapping of fucntion URL invocation principals to grants. Used to de-dupe `grantInvokeUrl()` calls.
216
+ * @internal
217
+ */
218
+ protected _functionUrlInvocationGrants: Record<string, iam.Grant>;
219
+ /**
220
+ * Adds a permission to the Lambda resource policy.
221
+ * @param id The id for the permission construct
222
+ * @param permission The permission to grant to this Lambda function. @see Permission for details.
223
+ */
224
+ addPermission(id: string, permission: Permission): void;
225
+ /**
226
+ * Adds a statement to the IAM role assumed by the instance.
227
+ */
228
+ addToRolePolicy(statement: iam.PolicyStatement): void;
229
+ addEventSourceMapping(id: string, options: EventSourceMappingOptions): EventSourceMapping;
230
+ /**
231
+ * Grant the given identity permissions to invoke this Lambda
232
+ */
233
+ grantInvoke(grantee: iam.IGrantable): iam.Grant;
234
+ /**
235
+ * Grant the given identity permissions to invoke the $LATEST version or
236
+ * unqualified version of this Lambda
237
+ */
238
+ grantInvokeLatestVersion(grantee: iam.IGrantable): iam.Grant;
239
+ /**
240
+ * Grant the given identity permissions to invoke the given version of this Lambda
241
+ */
242
+ grantInvokeVersion(grantee: iam.IGrantable, version: string): iam.Grant;
243
+ /**
244
+ * Grant the given identity permissions to invoke this Lambda Function URL
245
+ */
246
+ grantInvokeUrl(grantee: iam.IGrantable): iam.Grant;
247
+ /**
248
+ * Grant multiple principals the ability to invoke this Lambda via CompositePrincipal
249
+ */
250
+ grantInvokeCompositePrincipal(compositePrincipal: iam.CompositePrincipal): iam.Grant[];
251
+ addEventSource(source: IEventSource): void;
252
+ configureAsyncInvoke(options: EventInvokeConfigOptions): void;
253
+ /**
254
+ * A function URL is a dedicated HTTP(S) endpoint for a Lambda function.
255
+ */
256
+ addFunctionUrl(options?: FunctionUrlOptions): FunctionUrl;
257
+ /**
258
+ * Returns the construct tree node that corresponds to the lambda function.
259
+ * For use internally for constructs, when the tree is set up in non-standard ways. Ex: SingletonFunction.
260
+ * @internal
261
+ */
262
+ protected _functionNode(): Node;
263
+ /**
264
+ * Given the function arn, check if the account id matches this account
265
+ *
266
+ * Function ARNs look like this:
267
+ *
268
+ * arn:aws:lambda:region:account-id:function:function-name
269
+ *
270
+ * ..which means that in order to extract the `account-id` component from the ARN, we can
271
+ * split the ARN using ":" and select the component in index 4.
272
+ *
273
+ * @returns true if account id of function matches the account specified on the stack, false otherwise.
274
+ *
275
+ * @internal
276
+ */
277
+ protected _isStackAccount(): boolean;
278
+ private grant;
279
+ /**
280
+ * Translate IPrincipal to something we can pass to aws_lambda_permission
281
+ * https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html#lambda-AddPermission-request-Principal
282
+ * https://registry.terraform.io/providers/hashicorp/aws/5.68.0/docs/resources/lambda_permission#principal
283
+ *
284
+ * Do some nasty things because `Permission` supports a subset of what the
285
+ * full IAM principal language supports, and we may not be able to parse strings
286
+ * outright because they may be tokens.
287
+ *
288
+ * Try to recognize some specific Principal classes first, then try a generic
289
+ * fallback.
290
+ */
291
+ private parsePermissionPrincipal;
292
+ private validateConditionCombinations;
293
+ private validateConditions;
294
+ private isPrincipalWithConditions;
295
+ }
296
+ export declare abstract class QualifiedFunctionBase extends LambdaFunctionBase {
297
+ /** The underlying `IFunction` */
298
+ abstract readonly lambda: IFunction;
299
+ readonly permissionsNode: Node;
300
+ get resourceArnsForGrantInvoke(): string[];
301
+ configureAsyncInvoke(options: EventInvokeConfigOptions): void;
302
+ }
303
+ /**
304
+ * An abstract class which represents an AWS Lambda event source.
305
+ */
306
+ export interface IEventSource {
307
+ /**
308
+ * Called by `lambda.addEventSource` to allow the event source to bind to this
309
+ * function.
310
+ *
311
+ * @param target That lambda function to bind to.
312
+ */
313
+ bind(target: IFunction): void;
314
+ }