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,34 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./grant"), exports);
18
+ __exportStar(require("./identity-base"), exports);
19
+ __exportStar(require("./managed-policy"), exports);
20
+ __exportStar(require("./oidc-provider"), exports);
21
+ __exportStar(require("./policy-document-config.generated"), exports);
22
+ __exportStar(require("./policy-document"), exports);
23
+ __exportStar(require("./policy-statement-props.generated"), exports);
24
+ __exportStar(require("./policy-statement"), exports);
25
+ __exportStar(require("./policy"), exports);
26
+ __exportStar(require("./principals"), exports);
27
+ __exportStar(require("./role"), exports);
28
+ __exportStar(require("./saml-provider"), exports);
29
+ __exportStar(require("./unknown-principal"), exports);
30
+ __exportStar(require("./utils"), exports);
31
+ // auto generated by struct-builder
32
+ __exportStar(require("./policy-statement-props.generated"), exports);
33
+ __exportStar(require("./policy-document-config.generated"), exports);
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2lhbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLGtEQUFnQztBQUNoQyxtREFBaUM7QUFDakMsa0RBQWdDO0FBQ2hDLHFFQUFtRDtBQUNuRCxvREFBa0M7QUFDbEMscUVBQW1EO0FBQ25ELHFEQUFtQztBQUNuQywyQ0FBeUI7QUFDekIsK0NBQTZCO0FBQzdCLHlDQUF1QjtBQUN2QixrREFBZ0M7QUFDaEMsc0RBQW9DO0FBQ3BDLDBDQUF3QjtBQUV4QixtQ0FBbUM7QUFDbkMscUVBQW1EO0FBQ25ELHFFQUFtRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2dyYW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pZGVudGl0eS1iYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYW5hZ2VkLXBvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vb2lkYy1wcm92aWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LWRvY3VtZW50LWNvbmZpZy5nZW5lcmF0ZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1kb2N1bWVudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LXN0YXRlbWVudC1wcm9wcy5nZW5lcmF0ZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeS1zdGF0ZW1lbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BvbGljeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJpbmNpcGFsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcm9sZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2FtbC1wcm92aWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdW5rbm93bi1wcmluY2lwYWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8vIGF1dG8gZ2VuZXJhdGVkIGJ5IHN0cnVjdC1idWlsZGVyXG5leHBvcnQgKiBmcm9tIFwiLi9wb2xpY3ktc3RhdGVtZW50LXByb3BzLmdlbmVyYXRlZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcG9saWN5LWRvY3VtZW50LWNvbmZpZy5nZW5lcmF0ZWRcIjtcbiJdfQ==
@@ -0,0 +1,227 @@
1
+ import { iamPolicy, dataAwsIamPolicy } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { PolicyDocument } from "./policy-document";
4
+ import { PolicyStatement } from "./policy-statement";
5
+ import { IGrantable, IPrincipal } from "./principals";
6
+ import { IRole } from "./role";
7
+ import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "../aws-construct";
8
+ /**
9
+ * Outputs which may be registered for output via the Grid.
10
+ */
11
+ export interface ManagedPolicyOutputs {
12
+ readonly arn: string;
13
+ }
14
+ /**
15
+ * A managed policy
16
+ */
17
+ export interface IManagedPolicy extends IAwsConstruct {
18
+ /**
19
+ * Strongly typed managed policy outputs
20
+ *
21
+ * @attribute
22
+ */
23
+ readonly managedPolicyOutputs: ManagedPolicyOutputs;
24
+ /**
25
+ * The ARN of the managed policy
26
+ * @attribute
27
+ */
28
+ readonly managedPolicyArn: string;
29
+ /**
30
+ * Attaches this policy to a role.
31
+ *
32
+ * NOTE: Using this method will conflict with a role that has
33
+ * exclusive management of the role's policy attachments.
34
+ *
35
+ * If you attempt to manage a role's policies by multiple means,
36
+ * you will get resource cycling and/or errors.
37
+ */
38
+ attachToRole(role: IRole): void;
39
+ }
40
+ /**
41
+ * Properties for defining an IAM managed policy
42
+ */
43
+ export interface ManagedPolicyProps extends AwsConstructProps {
44
+ /**
45
+ * The name of the managed policy. If you specify multiple policies for an entity,
46
+ * specify unique names. For example, if you specify a list of policies for
47
+ * an IAM role, each policy must have a unique name.
48
+ *
49
+ * Forces new resource
50
+ *
51
+ * @default - If omitted, Refer to `managedPolicyNamePrefix`.
52
+ */
53
+ readonly managedPolicyName?: string;
54
+ /**
55
+ * Creates a unique name beginning with the specified prefix.
56
+ * Conflicts with `managedPolicyName`.
57
+ *
58
+ * The name of the managed policy. If you specify multiple policies for an entity,
59
+ * specify unique names. For example, if you specify a list of policies for
60
+ * an IAM role, each policy must have a unique name.
61
+ *
62
+ * Forces new resource
63
+ *
64
+ * @default - If omitted, ET will assign a random, unique name prefixed by GridUUID.
65
+ */
66
+ readonly managedPolicyNamePrefix?: string;
67
+ /**
68
+ * A description of the managed policy. Typically used to store information about the
69
+ * permissions defined in the policy. For example, "Grants access to production DynamoDB tables."
70
+ * The policy description is immutable. After a value is assigned, it cannot be changed.
71
+ *
72
+ * Forces new resource
73
+ *
74
+ * @default - Terraform will generate a description
75
+ */
76
+ readonly description?: string;
77
+ /**
78
+ * The path for the policy. This parameter allows (through its regex pattern) a string of characters
79
+ * consisting of either a forward slash (/) by itself or a string that must begin and end with forward slashes.
80
+ * In addition, it can contain any ASCII character from the ! (\u0021) through the DEL character (\u007F),
81
+ * including most punctuation characters, digits, and upper and lowercased letters.
82
+ *
83
+ * For more information about paths, see IAM Identifiers in the IAM User Guide.
84
+ *
85
+ * @default - "/"
86
+ */
87
+ readonly path?: string;
88
+ /**
89
+ * Roles to attach this policy to.
90
+ * You can also use `attachToRole(role)` to attach this policy to a role.
91
+ *
92
+ * @default - No roles.
93
+ */
94
+ readonly roles?: IRole[];
95
+ /**
96
+ * Initial set of permissions to add to this policy document.
97
+ * You can also use `addPermission(statement)` to add permissions later.
98
+ *
99
+ * @default - No statements.
100
+ */
101
+ readonly statements?: PolicyStatement[];
102
+ /**
103
+ * Initial PolicyDocument to use for this ManagedPolicy. If omited, any
104
+ * `PolicyStatement` provided in the `statements` property will be applied
105
+ * against the empty default `PolicyDocument`.
106
+ *
107
+ * @default - An empty policy.
108
+ */
109
+ readonly document?: PolicyDocument;
110
+ }
111
+ /**
112
+ * Attributes to reference ManagedPolicy for plan time failures and strict external dependencies.
113
+ */
114
+ export interface ManagedPolicyAttributes extends dataAwsIamPolicy.DataAwsIamPolicyConfig {
115
+ }
116
+ /**
117
+ * Managed policy base
118
+ */
119
+ declare abstract class ManagedPolicyBase extends AwsConstructBase implements IManagedPolicy {
120
+ /**
121
+ * Returns the ARN of this managed policy.
122
+ *
123
+ * @attribute
124
+ */
125
+ abstract get managedPolicyArn(): string;
126
+ get managedPolicyOutputs(): ManagedPolicyOutputs;
127
+ get outputs(): Record<string, any>;
128
+ private readonly roles;
129
+ constructor(scope: Construct, id: string, props?: ManagedPolicyProps);
130
+ attachToRole(role: IRole): void;
131
+ /**
132
+ * Adds resource to the terraform JSON output.
133
+ *
134
+ * called by TerraformStack.prepareStack()
135
+ */
136
+ toTerraform(): any;
137
+ }
138
+ /**
139
+ * Managed policy
140
+ */
141
+ export declare class ManagedPolicy extends ManagedPolicyBase implements IManagedPolicy, IGrantable {
142
+ /**
143
+ * Import a customer managed policy from the managedPolicyName.
144
+ *
145
+ * For this managed policy, you only need to know the name to be able to use it.
146
+ *
147
+ */
148
+ static fromManagedPolicyName(scope: Construct, id: string, managedPolicyName: string): IManagedPolicy;
149
+ /**
150
+ * Import an external managed policy by ARN.
151
+ *
152
+ * For this managed policy, you only need to know the ARN to be able to use it.
153
+ * This can be useful if you got the ARN from the Grid.
154
+ *
155
+ * If the imported Managed Policy ARN is a Token (such as a
156
+ * `dataAwsSsmParameter.value` *and* the referenced
157
+ * managed policy has a `path` (like `arn:...:policy/AdminPolicy/AdminAllow`), the
158
+ * `managedPolicyName` property will not resolve to the correct value. Instead it
159
+ * will resolve to the first path component.
160
+ * In this scenario the Managed Policy ARN should be supplied without the
161
+ * `path` in order to resolve the correct managed policy resource.
162
+ *
163
+ * @param scope construct scope
164
+ * @param id construct id
165
+ * @param managedPolicyArn the ARN of the managed policy to import
166
+ */
167
+ static fromManagedPolicyArn(scope: Construct, id: string, // TODO: remove this, use managedPolicyArn as id?
168
+ managedPolicyArn: string): IManagedPolicy;
169
+ /**
170
+ * Import a managed policy from one of the policies that AWS manages.
171
+ *
172
+ * For this managed policy, you only need to know the name and scope
173
+ * to be able to use it.
174
+ *
175
+ * Some managed policy names start with "service-role/", some start with
176
+ * "job-function/", and some don't start with anything. Include the
177
+ * prefix when constructing this object.
178
+ */
179
+ static fromAwsManagedPolicyName(scope: Construct, id: string, //TODO: use managedPolicyName as id instead?
180
+ managedPolicyName: string): IManagedPolicy;
181
+ /**
182
+ * Reference a ManagedPolicy for plan time failures and external dependencies.
183
+ */
184
+ static fromPolicyAttributes(parentScope: Construct, parentId: string, attr: ManagedPolicyAttributes): IManagedPolicy;
185
+ /**
186
+ * Returns the ARN of this managed policy.
187
+ *
188
+ * @attribute
189
+ */
190
+ get managedPolicyArn(): string;
191
+ /**
192
+ * The policy document.
193
+ */
194
+ readonly document: PolicyDocument;
195
+ /**
196
+ * The name of this policy.
197
+ *
198
+ * @attribute
199
+ */
200
+ get managedPolicyName(): string;
201
+ /**
202
+ * The description of this policy.
203
+ *
204
+ * @attribute
205
+ */
206
+ readonly description?: string;
207
+ /**
208
+ * The path of this policy.
209
+ *
210
+ * @attribute
211
+ */
212
+ readonly path: string;
213
+ readonly grantPrincipal: IPrincipal;
214
+ /**
215
+ * Direct access to the underlying Terraform resource.
216
+ *
217
+ * Use to define dependencies on this ManagedPolicy.
218
+ */
219
+ resource: iamPolicy.IamPolicy;
220
+ constructor(scope: Construct, id: string, props?: ManagedPolicyProps);
221
+ /**
222
+ * Adds a statement to the policy document.
223
+ */
224
+ addStatements(...statement: PolicyStatement[]): void;
225
+ private validateManagedPolicy;
226
+ }
227
+ export {};
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ManagedPolicy = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const provider_aws_1 = require("@cdktf/provider-aws");
7
+ const policy_document_1 = require("./policy-document");
8
+ const arn_1 = require("../arn");
9
+ const aws_construct_1 = require("../aws-construct");
10
+ const aws_stack_1 = require("../aws-stack");
11
+ /**
12
+ * Managed policy base
13
+ */
14
+ class ManagedPolicyBase extends aws_construct_1.AwsConstructBase {
15
+ get managedPolicyOutputs() {
16
+ return { arn: this.managedPolicyArn };
17
+ }
18
+ get outputs() {
19
+ return this.managedPolicyOutputs;
20
+ }
21
+ constructor(scope, id, props = {}) {
22
+ super(scope, id, props);
23
+ this.roles = new Array();
24
+ }
25
+ attachToRole(role) {
26
+ if (this.roles.find((r) => r.roleArn === role.roleArn)) {
27
+ return;
28
+ }
29
+ this.roles.push(role);
30
+ }
31
+ /**
32
+ * Adds resource to the terraform JSON output.
33
+ *
34
+ * called by TerraformStack.prepareStack()
35
+ */
36
+ toTerraform() {
37
+ // add iamRolePolicy resource for each referenced role
38
+ for (let i = 0; i < this.roles.length; i++) {
39
+ const id = `Roles${i}`;
40
+ // TODO: Ideally we should have used IResolvable.resolve and use the IResolveContext.preparing flag
41
+ // ref: https://github.com/aws/aws-cdk/blob/v2.170.0/packages/aws-cdk-lib/aws-iam/lib/policy-document.ts#L48
42
+ if (this.node.tryFindChild(id))
43
+ continue; // ignore if already generated
44
+ new provider_aws_1.iamRolePolicyAttachment.IamRolePolicyAttachment(this, id, {
45
+ policyArn: this.managedPolicyArn,
46
+ role: this.roles[i].roleName,
47
+ });
48
+ }
49
+ return {};
50
+ }
51
+ }
52
+ /**
53
+ * Managed policy
54
+ */
55
+ class ManagedPolicy extends ManagedPolicyBase {
56
+ /**
57
+ * Import a customer managed policy from the managedPolicyName.
58
+ *
59
+ * For this managed policy, you only need to know the name to be able to use it.
60
+ *
61
+ */
62
+ static fromManagedPolicyName(scope, id, managedPolicyName) {
63
+ class Import extends ManagedPolicyBase {
64
+ constructor() {
65
+ super(...arguments);
66
+ this.managedPolicyArn = aws_stack_1.AwsStack.ofAwsConstruct(scope).formatArn({
67
+ service: "iam",
68
+ region: "", // no region for managed policy
69
+ account: this.env.account,
70
+ resource: "policy",
71
+ resourceName: managedPolicyName,
72
+ });
73
+ }
74
+ }
75
+ return new Import(scope, id, {});
76
+ }
77
+ /**
78
+ * Import an external managed policy by ARN.
79
+ *
80
+ * For this managed policy, you only need to know the ARN to be able to use it.
81
+ * This can be useful if you got the ARN from the Grid.
82
+ *
83
+ * If the imported Managed Policy ARN is a Token (such as a
84
+ * `dataAwsSsmParameter.value` *and* the referenced
85
+ * managed policy has a `path` (like `arn:...:policy/AdminPolicy/AdminAllow`), the
86
+ * `managedPolicyName` property will not resolve to the correct value. Instead it
87
+ * will resolve to the first path component.
88
+ * In this scenario the Managed Policy ARN should be supplied without the
89
+ * `path` in order to resolve the correct managed policy resource.
90
+ *
91
+ * @param scope construct scope
92
+ * @param id construct id
93
+ * @param managedPolicyArn the ARN of the managed policy to import
94
+ */
95
+ static fromManagedPolicyArn(scope, id, // TODO: remove this, use managedPolicyArn as id?
96
+ managedPolicyArn) {
97
+ // TODO: Check scope if child already exist and return that?
98
+ class Import extends ManagedPolicyBase {
99
+ constructor() {
100
+ super(...arguments);
101
+ this.managedPolicyArn = managedPolicyArn;
102
+ }
103
+ }
104
+ return new Import(scope, id);
105
+ }
106
+ /**
107
+ * Import a managed policy from one of the policies that AWS manages.
108
+ *
109
+ * For this managed policy, you only need to know the name and scope
110
+ * to be able to use it.
111
+ *
112
+ * Some managed policy names start with "service-role/", some start with
113
+ * "job-function/", and some don't start with anything. Include the
114
+ * prefix when constructing this object.
115
+ */
116
+ static fromAwsManagedPolicyName(scope, id, //TODO: use managedPolicyName as id instead?
117
+ managedPolicyName) {
118
+ class AwsManagedPolicy extends ManagedPolicyBase {
119
+ constructor() {
120
+ super(...arguments);
121
+ this.managedPolicyArn = arn_1.Arn.format({
122
+ partition: this.env.partition,
123
+ service: "iam",
124
+ region: "", // no region for managed policy
125
+ account: "aws", // the account for a managed policy is 'aws'
126
+ resource: "policy",
127
+ resourceName: managedPolicyName,
128
+ });
129
+ }
130
+ }
131
+ return new AwsManagedPolicy(scope, id);
132
+ }
133
+ /**
134
+ * Reference a ManagedPolicy for plan time failures and external dependencies.
135
+ */
136
+ static fromPolicyAttributes(parentScope, parentId, attr) {
137
+ class Import extends ManagedPolicyBase {
138
+ constructor(scope, id) {
139
+ super(scope, id, attr);
140
+ this.resource = new provider_aws_1.dataAwsIamPolicy.DataAwsIamPolicy(this, "Resource", attr);
141
+ this.managedPolicyArn = this.resource.arn;
142
+ }
143
+ }
144
+ return new Import(parentScope, parentId);
145
+ }
146
+ /**
147
+ * Returns the ARN of this managed policy.
148
+ *
149
+ * @attribute
150
+ */
151
+ get managedPolicyArn() {
152
+ return this.resource.arn;
153
+ }
154
+ /**
155
+ * The name of this policy.
156
+ *
157
+ * @attribute
158
+ */
159
+ get managedPolicyName() {
160
+ return this.resource.name;
161
+ }
162
+ // TODO: Add support for pre-created policies?
163
+ // NOTE: in TerraConstruct pre-created policies are passed in through the Grid, so this seems not needed.
164
+ // private readonly _precreatedPolicy?: IManagedPolicy;
165
+ constructor(scope, id, props = {}) {
166
+ super(scope, id, props);
167
+ this.description = props.description;
168
+ this.path = props.path || "/";
169
+ this.document = props.document ?? new policy_document_1.PolicyDocument(this, "Policy");
170
+ if (props.managedPolicyName && props.managedPolicyNamePrefix) {
171
+ throw new Error("Cannot specify both 'managedPolicyName' and 'managedPolicyNamePrefix'. Use only one.");
172
+ }
173
+ const managedPolicyNamePrefix = this.stack.uniqueResourceNamePrefix(this, {
174
+ prefix: props.managedPolicyNamePrefix ?? this.gridUUID + "-",
175
+ allowedSpecialCharacters: "_+=,.@-",
176
+ maxLength: 128,
177
+ });
178
+ this.resource = new provider_aws_1.iamPolicy.IamPolicy(this, "Resource", {
179
+ ...props, // copy over Terraform Meta Arguments from ConstructProps
180
+ name: props.managedPolicyName,
181
+ namePrefix: !props.managedPolicyName
182
+ ? managedPolicyNamePrefix
183
+ : undefined,
184
+ description: this.description,
185
+ path: this.path,
186
+ policy: this.document.json,
187
+ });
188
+ if (props.roles) {
189
+ props.roles.forEach((r) => this.attachToRole(r));
190
+ }
191
+ if (props.statements) {
192
+ props.statements.forEach((p) => this.addStatements(p));
193
+ }
194
+ this.grantPrincipal = new ManagedPolicyGrantPrincipal(this);
195
+ this.node.addValidation({ validate: () => this.validateManagedPolicy() });
196
+ }
197
+ /**
198
+ * Adds a statement to the policy document.
199
+ */
200
+ addStatements(...statement) {
201
+ this.document.addStatements(...statement);
202
+ }
203
+ validateManagedPolicy() {
204
+ const result = new Array();
205
+ // validate that the policy document is not empty
206
+ if (this.document.isEmpty) {
207
+ result.push("Managed Policy is empty. You must add statements to the policy");
208
+ }
209
+ result.push(...this.document.validateForIdentityPolicy());
210
+ return result;
211
+ }
212
+ }
213
+ exports.ManagedPolicy = ManagedPolicy;
214
+ _a = JSII_RTTI_SYMBOL_1;
215
+ ManagedPolicy[_a] = { fqn: "terraconstructs.aws.iam.ManagedPolicy", version: "0.0.8" };
216
+ class ManagedPolicyGrantPrincipal {
217
+ constructor(_managedPolicy) {
218
+ this._managedPolicy = _managedPolicy;
219
+ this.assumeRoleAction = "sts:AssumeRole";
220
+ this.grantPrincipal = this;
221
+ this.principalAccount = _managedPolicy.env.account;
222
+ }
223
+ get policyFragment() {
224
+ // This property is referenced to add policy statements as a resource-based policy.
225
+ // We should fail because a managed policy cannot be used as a principal of a policy document.
226
+ // cf. https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying
227
+ throw new Error(`Cannot use a ManagedPolicy '${this._managedPolicy.node.path}' as the 'Principal' or 'NotPrincipal' in an IAM Policy`);
228
+ }
229
+ addToPolicy(statement) {
230
+ return this.addToPrincipalPolicy(statement).statementAdded;
231
+ }
232
+ addToPrincipalPolicy(statement) {
233
+ this._managedPolicy.addStatements(statement);
234
+ return { statementAdded: true, policyDependable: this._managedPolicy };
235
+ }
236
+ }
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1wb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2lhbS9tYW5hZ2VkLXBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHNEQUk2QjtBQUU3Qix1REFBbUQ7QUFTbkQsZ0NBQTZCO0FBQzdCLG9EQUkwQjtBQUMxQiw0Q0FBd0M7QUEwSHhDOztHQUVHO0FBQ0gsTUFBZSxpQkFDYixTQUFRLGdDQUFnQjtJQVN4QixJQUFXLG9CQUFvQjtRQUM3QixPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBNEIsRUFBRTtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUZULFVBQUssR0FBRyxJQUFJLEtBQUssRUFBUyxDQUFDO0lBRzVDLENBQUM7SUFDTSxZQUFZLENBQUMsSUFBVztRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3ZELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxXQUFXO1FBQ2hCLHNEQUFzRDtRQUN0RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENB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b2xpY3ksXG4gIGlhbVJvbGVQb2xpY3lBdHRhY2htZW50LFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFBvbGljeURvY3VtZW50IH0gZnJvbSBcIi4vcG9saWN5LWRvY3VtZW50XCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiLi9wb2xpY3ktc3RhdGVtZW50XCI7XG5pbXBvcnQge1xuICBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCxcbiAgSUdyYW50YWJsZSxcbiAgSVByaW5jaXBhbCxcbiAgUHJpbmNpcGFsUG9saWN5RnJhZ21lbnQsXG59IGZyb20gXCIuL3ByaW5jaXBhbHNcIjtcbmltcG9ydCB7IElSb2xlIH0gZnJvbSBcIi4vcm9sZVwiO1xuaW1wb3J0IHsgQXJuIH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHtcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZWRQb2xpY3lPdXRwdXRzIHtcbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBtYW5hZ2VkIHBvbGljeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElNYW5hZ2VkUG9saWN5IGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBTdHJvbmdseSB0eXBlZCBtYW5hZ2VkIHBvbGljeSBvdXRwdXRzXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZWRQb2xpY3lPdXRwdXRzOiBNYW5hZ2VkUG9saWN5T3V0cHV0cztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIG1hbmFnZWQgcG9saWN5XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZWRQb2xpY3lBcm46IHN0cmluZztcbiAgLyoqXG4gICAqIEF0dGFjaGVzIHRoaXMgcG9saWN5IHRvIGEgcm9sZS5cbiAgICpcbiAgICogTk9URTogVXNpbmcgdGhpcyBtZXRob2Qgd2lsbCBjb25mbGljdCB3aXRoIGEgcm9sZSB0aGF0IGhhc1xuICAgKiBleGNsdXNpdmUgbWFuYWdlbWVudCBvZiB0aGUgcm9sZSdzIHBvbGljeSBhdHRhY2htZW50cy5cbiAgICpcbiAgICogSWYgeW91IGF0dGVtcHQgdG8gbWFuYWdlIGEgcm9sZSdzIHBvbGljaWVzIGJ5IG11bHRpcGxlIG1lYW5zLFxuICAgKiB5b3Ugd2lsbCBnZXQgcmVzb3VyY2UgY3ljbGluZyBhbmQvb3IgZXJyb3JzLlxuICAgKi9cbiAgYXR0YWNoVG9Sb2xlKHJvbGU6IElSb2xlKTogdm9pZDtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhbiBJQU0gbWFuYWdlZCBwb2xpY3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYW5hZ2VkUG9saWN5UHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWFuYWdlZCBwb2xpY3kuIElmIHlvdSBzcGVjaWZ5IG11bHRpcGxlIHBvbGljaWVzIGZvciBhbiBlbnRpdHksXG4gICAqIHNwZWNpZnkgdW5pcXVlIG5hbWVzLiBGb3IgZXhhbXBsZSwgaWYgeW91IHNwZWNpZnkgYSBsaXN0IG9mIHBvbGljaWVzIGZvclxuICAgKiBhbiBJQU0gcm9sZSwgZWFjaCBwb2xpY3kgbXVzdCBoYXZlIGEgdW5pcXVlIG5hbWUuXG4gICAqXG4gICAqIEZvcmNlcyBuZXcgcmVzb3VyY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiBvbWl0dGVkLCBSZWZlciB0byBgbWFuYWdlZFBvbGljeU5hbWVQcmVmaXhgLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlZFBvbGljeU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB1bmlxdWUgbmFtZSBiZWdpbm5pbmcgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeC5cbiAgICogQ29uZmxpY3RzIHdpdGggYG1hbmFnZWRQb2xpY3lOYW1lYC5cbiAgICpcbiAgICogVGhlIG5hbWUgb2YgdGhlIG1hbmFnZWQgcG9saWN5LiBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBwb2xpY2llcyBmb3IgYW4gZW50aXR5LFxuICAgKiBzcGVjaWZ5IHVuaXF1ZSBuYW1lcy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzcGVjaWZ5IGEgbGlzdCBvZiBwb2xpY2llcyBmb3JcbiAgICogYW4gSUFNIHJvbGUsIGVhY2ggcG9saWN5IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lLlxuICAgKlxuICAgKiBGb3JjZXMgbmV3IHJlc291cmNlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgb21pdHRlZCwgRVQgd2lsbCBhc3NpZ24gYSByYW5kb20sIHVuaXF1ZSBuYW1lIHByZWZpeGVkIGJ5IEdyaWRVVUlELlxuICAgKi9cbiAgcmVhZG9ubHkgbWFuYWdlZFBvbGljeU5hbWVQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIG1hbmFnZWQgcG9saWN5LiBUeXBpY2FsbHkgdXNlZCB0byBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiAgICogcGVybWlzc2lvbnMgZGVmaW5lZCBpbiB0aGUgcG9saWN5LiBGb3IgZXhhbXBsZSwgXCJHcmFudHMgYWNjZXNzIHRvIHByb2R1Y3Rpb24gRHluYW1vREIgdGFibGVzLlwiXG4gICAqIFRoZSBwb2xpY3kgZGVzY3JpcHRpb24gaXMgaW1tdXRhYmxlLiBBZnRlciBhIHZhbHVlIGlzIGFzc2lnbmVkLCBpdCBjYW5ub3QgYmUgY2hhbmdlZC5cbiAgICpcbiAgICogRm9yY2VzIG5ldyByZXNvdXJjZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRlcnJhZm9ybSB3aWxsIGdlbmVyYXRlIGEgZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8vVE9ETzogQ29uZmlybSB0ZXJyYWZvcm0gZ2VuZXJhdGVzIGEgZGVzY3JpcHRpb24gZm9yIGlhbV9wb2xpY3k/XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIGZvciB0aGUgcG9saWN5LiBUaGlzIHBhcmFtZXRlciBhbGxvd3MgKHRocm91Z2ggaXRzIHJlZ2V4IHBhdHRlcm4pIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnNcbiAgICogY29uc2lzdGluZyBvZiBlaXRoZXIgYSBmb3J3YXJkIHNsYXNoICgvKSBieSBpdHNlbGYgb3IgYSBzdHJpbmcgdGhhdCBtdXN0IGJlZ2luIGFuZCBlbmQgd2l0aCBmb3J3YXJkIHNsYXNoZXMuXG4gICAqIEluIGFkZGl0aW9uLCBpdCBjYW4gY29udGFpbiBhbnkgQVNDSUkgY2hhcmFjdGVyIGZyb20gdGhlICEgKFxcdTAwMjEpIHRocm91Z2ggdGhlIERFTCBjaGFyYWN0ZXIgKFxcdTAwN0YpLFxuICAgKiBpbmNsdWRpbmcgbW9zdCBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLCBkaWdpdHMsIGFuZCB1cHBlciBhbmQgbG93ZXJjYXNlZCBsZXR0ZXJzLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBwYXRocywgc2VlIElBTSBJZGVudGlmaWVycyBpbiB0aGUgSUFNIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gXCIvXCJcbiAgICovXG4gIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJvbGVzIHRvIGF0dGFjaCB0aGlzIHBvbGljeSB0by5cbiAgICogWW91IGNhbiBhbHNvIHVzZSBgYXR0YWNoVG9Sb2xlKHJvbGUpYCB0byBhdHRhY2ggdGhpcyBwb2xpY3kgdG8gYSByb2xlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZXM/OiBJUm9sZVtdO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHNldCBvZiBwZXJtaXNzaW9ucyB0byBhZGQgdG8gdGhpcyBwb2xpY3kgZG9jdW1lbnQuXG4gICAqIFlvdSBjYW4gYWxzbyB1c2UgYGFkZFBlcm1pc3Npb24oc3RhdGVtZW50KWAgdG8gYWRkIHBlcm1pc3Npb25zIGxhdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHN0YXRlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBzdGF0ZW1lbnRzPzogUG9saWN5U3RhdGVtZW50W107XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgUG9saWN5RG9jdW1lbnQgdG8gdXNlIGZvciB0aGlzIE1hbmFnZWRQb2xpY3kuIElmIG9taXRlZCwgYW55XG4gICAqIGBQb2xpY3lTdGF0ZW1lbnRgIHByb3ZpZGVkIGluIHRoZSBgc3RhdGVtZW50c2AgcHJvcGVydHkgd2lsbCBiZSBhcHBsaWVkXG4gICAqIGFnYWluc3QgdGhlIGVtcHR5IGRlZmF1bHQgYFBvbGljeURvY3VtZW50YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbiBlbXB0eSBwb2xpY3kuXG4gICAqL1xuICByZWFkb25seSBkb2N1bWVudD86IFBvbGljeURvY3VtZW50O1xufVxuXG4vKipcbiAqIEF0dHJpYnV0ZXMgdG8gcmVmZXJlbmNlIE1hbmFnZWRQb2xpY3kgZm9yIHBsYW4gdGltZSBmYWlsdXJlcyBhbmQgc3RyaWN0IGV4dGVybmFsIGRlcGVuZGVuY2llcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYW5hZ2VkUG9saWN5QXR0cmlidXRlc1xuICBleHRlbmRzIGRhdGFBd3NJYW1Qb2xpY3kuRGF0YUF3c0lhbVBvbGljeUNvbmZpZyB7fVxuXG4vKipcbiAqIE1hbmFnZWQgcG9saWN5IGJhc2VcbiAqL1xuYWJzdHJhY3QgY2xhc3MgTWFuYWdlZFBvbGljeUJhc2VcbiAgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlXG4gIGltcGxlbWVudHMgSU1hbmFnZWRQb2xpY3lcbntcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIEFSTiBvZiB0aGlzIG1hbmFnZWQgcG9saWN5LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IG1hbmFnZWRQb2xpY3lBcm4oKTogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IG1hbmFnZWRQb2xpY3lPdXRwdXRzKCk6IE1hbmFnZWRQb2xpY3lPdXRwdXRzIHtcbiAgICByZXR1cm4geyBhcm46IHRoaXMubWFuYWdlZFBvbGljeUFybiB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5tYW5hZ2VkUG9saWN5T3V0cHV0cztcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IHJvbGVzID0gbmV3IEFycmF5PElSb2xlPigpO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWFuYWdlZFBvbGljeVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgfVxuICBwdWJsaWMgYXR0YWNoVG9Sb2xlKHJvbGU6IElSb2xlKSB7XG4gICAgaWYgKHRoaXMucm9sZXMuZmluZCgocikgPT4gci5yb2xlQXJuID09PSByb2xlLnJvbGVBcm4pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm9sZXMucHVzaChyb2xlKTtcbiAgfVxuICAvKipcbiAgICogQWRkcyByZXNvdXJjZSB0byB0aGUgdGVycmFmb3JtIEpTT04gb3V0cHV0LlxuICAgKlxuICAgKiBjYWxsZWQgYnkgVGVycmFmb3JtU3RhY2sucHJlcGFyZVN0YWNrKClcbiAgICovXG4gIHB1YmxpYyB0b1RlcnJhZm9ybSgpOiBhbnkge1xuICAgIC8vIGFkZCBpYW1Sb2xlUG9saWN5IHJlc291cmNlIGZvciBlYWNoIHJlZmVyZW5jZWQgcm9sZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb2xlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaWQgPSBgUm9sZXMke2l9YDtcbiAgICAgIC8vIFRPRE86IElkZWFsbHkgd2Ugc2hvdWxkIGhhdmUgdXNlZCBJUmVzb2x2YWJsZS5yZXNvbHZlIGFuZCB1c2UgdGhlIElSZXNvbHZlQ29udGV4dC5wcmVwYXJpbmcgZmxhZ1xuICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtaWFtL2xpYi9wb2xpY3ktZG9jdW1lbnQudHMjTDQ4XG4gICAgICBpZiAodGhpcy5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIGNvbnRpbnVlOyAvLyBpZ25vcmUgaWYgYWxyZWFkeSBnZW5lcmF0ZWRcblxuICAgICAgbmV3IGlhbVJvbGVQb2xpY3lBdHRhY2htZW50LklhbVJvbGVQb2xpY3lBdHRhY2htZW50KHRoaXMsIGlkLCB7XG4gICAgICAgIHBvbGljeUFybjogdGhpcy5tYW5hZ2VkUG9saWN5QXJuLFxuICAgICAgICByb2xlOiB0aGlzLnJvbGVzW2ldLnJvbGVOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG4vKipcbiAqIE1hbmFnZWQgcG9saWN5XG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5hZ2VkUG9saWN5XG4gIGV4dGVuZHMgTWFuYWdlZFBvbGljeUJhc2VcbiAgaW1wbGVtZW50cyBJTWFuYWdlZFBvbGljeSwgSUdyYW50YWJsZVxue1xuICAvKipcbiAgICogSW1wb3J0IGEgY3VzdG9tZXIgbWFuYWdlZCBwb2xpY3kgZnJvbSB0aGUgbWFuYWdlZFBvbGljeU5hbWUuXG4gICAqXG4gICAqIEZvciB0aGlzIG1hbmFnZWQgcG9saWN5LCB5b3Ugb25seSBuZWVkIHRvIGtub3cgdGhlIG5hbWUgdG8gYmUgYWJsZSB0byB1c2UgaXQuXG4gICAqXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21NYW5hZ2VkUG9saWN5TmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbWFuYWdlZFBvbGljeU5hbWU6IHN0cmluZyxcbiAgKTogSU1hbmFnZWRQb2xpY3kge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIE1hbmFnZWRQb2xpY3lCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBtYW5hZ2VkUG9saWN5QXJuID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QoXG4gICAgICAgIHNjb3BlLFxuICAgICAgKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiBcImlhbVwiLFxuICAgICAgICByZWdpb246IFwiXCIsIC8vIG5vIHJlZ2lvbiBmb3IgbWFuYWdlZCBwb2xpY3lcbiAgICAgICAgYWNjb3VudDogdGhpcy5lbnYuYWNjb3VudCxcbiAgICAgICAgcmVzb3VyY2U6IFwicG9saWN5XCIsXG4gICAgICAgIHJlc291cmNlTmFtZTogbWFuYWdlZFBvbGljeU5hbWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7fSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4dGVybmFsIG1hbmFnZWQgcG9saWN5IGJ5IEFSTi5cbiAgICpcbiAgICogRm9yIHRoaXMgbWFuYWdlZCBwb2xpY3ksIHlvdSBvbmx5IG5lZWQgdG8ga25vdyB0aGUgQVJOIHRvIGJlIGFibGUgdG8gdXNlIGl0LlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91IGdvdCB0aGUgQVJOIGZyb20gdGhlIEdyaWQuXG4gICAqXG4gICAqIElmIHRoZSBpbXBvcnRlZCBNYW5hZ2VkIFBvbGljeSBBUk4gaXMgYSBUb2tlbiAoc3VjaCBhcyBhXG4gICAqIGBkYXRhQXdzU3NtUGFyYW1ldGVyLnZhbHVlYCAqYW5kKiB0aGUgcmVmZXJlbmNlZFxuICAgKiBtYW5hZ2VkIHBvbGljeSBoYXMgYSBgcGF0aGAgKGxpa2UgYGFybjouLi46cG9saWN5L0FkbWluUG9saWN5L0FkbWluQWxsb3dgKSwgdGhlXG4gICAqIGBtYW5hZ2VkUG9saWN5TmFtZWAgcHJvcGVydHkgd2lsbCBub3QgcmVzb2x2ZSB0byB0aGUgY29ycmVjdCB2YWx1ZS4gSW5zdGVhZCBpdFxuICAgKiB3aWxsIHJlc29sdmUgdG8gdGhlIGZpcnN0IHBhdGggY29tcG9uZW50LlxuICAgKiBJbiB0aGlzIHNjZW5hcmlvIHRoZSBNYW5hZ2VkIFBvbGljeSBBUk4gc2hvdWxkIGJlIHN1cHBsaWVkIHdpdGhvdXQgdGhlXG4gICAqIGBwYXRoYCBpbiBvcmRlciB0byByZXNvbHZlIHRoZSBjb3JyZWN0IG1hbmFnZWQgcG9saWN5IHJlc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgY29uc3RydWN0IHNjb3BlXG4gICAqIEBwYXJhbSBpZCBjb25zdHJ1Y3QgaWRcbiAgICogQHBhcmFtIG1hbmFnZWRQb2xpY3lBcm4gdGhlIEFSTiBvZiB0aGUgbWFuYWdlZCBwb2xpY3kgdG8gaW1wb3J0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21NYW5hZ2VkUG9saWN5QXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZywgLy8gVE9ETzogcmVtb3ZlIHRoaXMsIHVzZSBtYW5hZ2VkUG9saWN5QXJuIGFzIGlkP1xuICAgIG1hbmFnZWRQb2xpY3lBcm46IHN0cmluZyxcbiAgKTogSU1hbmFnZWRQb2xpY3kge1xuICAgIC8vIFRPRE86IENoZWNrIHNjb3BlIGlmIGNoaWxkIGFscmVhZHkgZXhpc3QgYW5kIHJldHVybiB0aGF0P1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIE1hbmFnZWRQb2xpY3lCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBtYW5hZ2VkUG9saWN5QXJuID0gbWFuYWdlZFBvbGljeUFybjtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYSBtYW5hZ2VkIHBvbGljeSBmcm9tIG9uZSBvZiB0aGUgcG9saWNpZXMgdGhhdCBBV1MgbWFuYWdlcy5cbiAgICpcbiAgICogRm9yIHRoaXMgbWFuYWdlZCBwb2xpY3ksIHlvdSBvbmx5IG5lZWQgdG8ga25vdyB0aGUgbmFtZSBhbmQgc2NvcGVcbiAgICogdG8gYmUgYWJsZSB0byB1c2UgaXQuXG4gICAqXG4gICAqIFNvbWUgbWFuYWdlZCBwb2xpY3kgbmFtZXMgc3RhcnQgd2l0aCBcInNlcnZpY2Utcm9sZS9cIiwgc29tZSBzdGFydCB3aXRoXG4gICAqIFwiam9iLWZ1bmN0aW9uL1wiLCBhbmQgc29tZSBkb24ndCBzdGFydCB3aXRoIGFueXRoaW5nLiBJbmNsdWRlIHRoZVxuICAgKiBwcmVmaXggd2hlbiBjb25zdHJ1Y3RpbmcgdGhpcyBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsIC8vVE9ETzogdXNlIG1hbmFnZWRQb2xpY3lOYW1lIGFzIGlkIGluc3RlYWQ/XG4gICAgbWFuYWdlZFBvbGljeU5hbWU6IHN0cmluZyxcbiAgKTogSU1hbmFnZWRQb2xpY3kge1xuICAgIGNsYXNzIEF3c01hbmFnZWRQb2xpY3kgZXh0ZW5kcyBNYW5hZ2VkUG9saWN5QmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlZFBvbGljeUFybiA9IEFybi5mb3JtYXQoe1xuICAgICAgICBwYXJ0aXRpb246IHRoaXMuZW52LnBhcnRpdGlvbixcbiAgICAgICAgc2VydmljZTogXCJpYW1cIixcbiAgICAgICAgcmVnaW9uOiBcIlwiLCAvLyBubyByZWdpb24gZm9yIG1hbmFnZWQgcG9saWN5XG4gICAgICAgIGFjY291bnQ6IFwiYXdzXCIsIC8vIHRoZSBhY2NvdW50IGZvciBhIG1hbmFnZWQgcG9saWN5IGlzICdhd3MnXG4gICAgICAgIHJlc291cmNlOiBcInBvbGljeVwiLFxuICAgICAgICByZXNvdXJjZU5hbWU6IG1hbmFnZWRQb2xpY3lOYW1lLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQXdzTWFuYWdlZFBvbGljeShzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSBhIE1hbmFnZWRQb2xpY3kgZm9yIHBsYW4gdGltZSBmYWlsdXJlcyBhbmQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUG9saWN5QXR0cmlidXRlcyhcbiAgICBwYXJlbnRTY29wZTogQ29uc3RydWN0LFxuICAgIHBhcmVudElkOiBzdHJpbmcsXG4gICAgYXR0cjogTWFuYWdlZFBvbGljeUF0dHJpYnV0ZXMsXG4gICk6IElNYW5hZ2VkUG9saWN5IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBNYW5hZ2VkUG9saWN5QmFzZSB7XG4gICAgICAvKipcbiAgICAgICAqIERpcmVjdCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgVGVycmFmb3JtIHJlc291cmNlLlxuICAgICAgICpcbiAgICAgICAqIFVzZSB0byBkZWZpbmUgZGVwZW5kZW5jaWVzIG9uIHRoaXMgTWFuYWdlZFBvbGljeS5cbiAgICAgICAqL1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBkYXRhQXdzSWFtUG9saWN5LkRhdGFBd3NJYW1Qb2xpY3k7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlZFBvbGljeUFybjogc3RyaW5nO1xuICAgICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIGF0dHIpO1xuICAgICAgICB0aGlzLnJlc291cmNlID0gbmV3IGRhdGFBd3NJYW1Qb2xpY3kuRGF0YUF3c0lhbVBvbGljeShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgICAgICBhdHRyLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY3lBcm4gPSB0aGlzLnJlc291cmNlLmFybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChwYXJlbnRTY29wZSwgcGFyZW50SWQpO1xuICB9XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBBUk4gb2YgdGhpcyBtYW5hZ2VkIHBvbGljeS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGdldCBtYW5hZ2VkUG9saWN5QXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuYXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwb2xpY3kgZG9jdW1lbnQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnQ6IFBvbGljeURvY3VtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIHBvbGljeS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGdldCBtYW5hZ2VkUG9saWN5TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgcG9saWN5LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoaXMgcG9saWN5LlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbDogSVByaW5jaXBhbDtcblxuICAvKipcbiAgICogRGlyZWN0IGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBUZXJyYWZvcm0gcmVzb3VyY2UuXG4gICAqXG4gICAqIFVzZSB0byBkZWZpbmUgZGVwZW5kZW5jaWVzIG9uIHRoaXMgTWFuYWdlZFBvbGljeS5cbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZTogaWFtUG9saWN5LklhbVBvbGljeTtcblxuICAvLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgcHJlLWNyZWF0ZWQgcG9saWNpZXM/XG4gIC8vIE5PVEU6IGluIFRlcnJhQ29uc3RydWN0IHByZS1jcmVhdGVkIHBvbGljaWVzIGFyZSBwYXNzZWQgaW4gdGhyb3VnaCB0aGUgR3JpZCwgc28gdGhpcyBzZWVtcyBub3QgbmVlZGVkLlxuICAvLyBwcml2YXRlIHJlYWRvbmx5IF9wcmVjcmVhdGVkUG9saWN5PzogSU1hbmFnZWRQb2xpY3k7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRQb2xpY3lQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgdGhpcy5wYXRoID0gcHJvcHMucGF0aCB8fCBcIi9cIjtcblxuICAgIHRoaXMuZG9jdW1lbnQgPSBwcm9wcy5kb2N1bWVudCA/PyBuZXcgUG9saWN5RG9jdW1lbnQodGhpcywgXCJQb2xpY3lcIik7XG5cbiAgICBpZiAocHJvcHMubWFuYWdlZFBvbGljeU5hbWUgJiYgcHJvcHMubWFuYWdlZFBvbGljeU5hbWVQcmVmaXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDYW5ub3Qgc3BlY2lmeSBib3RoICdtYW5hZ2VkUG9saWN5TmFtZScgYW5kICdtYW5hZ2VkUG9saWN5TmFtZVByZWZpeCcuIFVzZSBvbmx5IG9uZS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbWFuYWdlZFBvbGljeU5hbWVQcmVmaXggPSB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZVByZWZpeCh0aGlzLCB7XG4gICAgICBwcmVmaXg6IHByb3BzLm1hbmFnZWRQb2xpY3lOYW1lUHJlZml4ID8/IHRoaXMuZ3JpZFVVSUQgKyBcIi1cIixcbiAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogXCJfKz0sLkAtXCIsXG4gICAgICBtYXhMZW5ndGg6IDEyOCxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgaWFtUG9saWN5LklhbVBvbGljeSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIC4uLnByb3BzLCAvLyBjb3B5IG92ZXIgVGVycmFmb3JtIE1ldGEgQXJndW1lbnRzIGZyb20gQ29uc3RydWN0UHJvcHNcbiAgICAgIG5hbWU6IHByb3BzLm1hbmFnZWRQb2xpY3lOYW1lLFxuICAgICAgbmFtZVByZWZpeDogIXByb3BzLm1hbmFnZWRQb2xpY3lOYW1lXG4gICAgICAgID8gbWFuYWdlZFBvbGljeU5hbWVQcmVmaXhcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcbiAgICAgIHBhdGg6IHRoaXMucGF0aCxcbiAgICAgIHBvbGljeTogdGhpcy5kb2N1bWVudC5qc29uLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLnJvbGVzKSB7XG4gICAgICBwcm9wcy5yb2xlcy5mb3JFYWNoKChyKSA9PiB0aGlzLmF0dGFjaFRvUm9sZShyKSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnN0YXRlbWVudHMpIHtcbiAgICAgIHByb3BzLnN0YXRlbWVudHMuZm9yRWFjaCgocCkgPT4gdGhpcy5hZGRTdGF0ZW1lbnRzKHApKTtcbiAgICB9XG5cbiAgICB0aGlzLmdyYW50UHJpbmNpcGFsID0gbmV3IE1hbmFnZWRQb2xpY3lHcmFudFByaW5jaXBhbCh0aGlzKTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKHsgdmFsaWRhdGU6ICgpID0+IHRoaXMudmFsaWRhdGVNYW5hZ2VkUG9saWN5KCkgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgcG9saWN5IGRvY3VtZW50LlxuICAgKi9cbiAgcHVibGljIGFkZFN0YXRlbWVudHMoLi4uc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnRbXSkge1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkU3RhdGVtZW50cyguLi5zdGF0ZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1hbmFnZWRQb2xpY3koKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgICAvLyB2YWxpZGF0ZSB0aGF0IHRoZSBwb2xpY3kgZG9jdW1lbnQgaXMgbm90IGVtcHR5XG4gICAgaWYgKHRoaXMuZG9jdW1lbnQuaXNFbXB0eSkge1xuICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgIFwiTWFuYWdlZCBQb2xpY3kgaXMgZW1wdHkuIFlvdSBtdXN0IGFkZCBzdGF0ZW1lbnRzIHRvIHRoZSBwb2xpY3lcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVzdWx0LnB1c2goLi4udGhpcy5kb2N1bWVudC52YWxpZGF0ZUZvcklkZW50aXR5UG9saWN5KCkpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cblxuY2xhc3MgTWFuYWdlZFBvbGljeUdyYW50UHJpbmNpcGFsIGltcGxlbWVudHMgSVByaW5jaXBhbCB7XG4gIHB1YmxpYyByZWFkb25seSBhc3N1bWVSb2xlQWN0aW9uID0gXCJzdHM6QXNzdW1lUm9sZVwiO1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IElQcmluY2lwYWw7XG4gIHB1YmxpYyByZWFkb25seSBwcmluY2lwYWxBY2NvdW50Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21hbmFnZWRQb2xpY3k6IE1hbmFnZWRQb2xpY3kpIHtcbiAgICB0aGlzLmdyYW50UHJpbmNpcGFsID0gdGhpcztcbiAgICB0aGlzLnByaW5jaXBhbEFjY291bnQgPSBfbWFuYWdlZFBvbGljeS5lbnYuYWNjb3VudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcG9saWN5RnJhZ21lbnQoKTogUHJpbmNpcGFsUG9saWN5RnJhZ21lbnQge1xuICAgIC8vIFRoaXMgcHJvcGVydHkgaXMgcmVmZXJlbmNlZCB0byBhZGQgcG9saWN5IHN0YXRlbWVudHMgYXMgYSByZXNvdXJjZS1iYXNlZCBwb2xpY3kuXG4gICAgLy8gV2Ugc2hvdWxkIGZhaWwgYmVjYXVzZSBhIG1hbmFnZWQgcG9saWN5IGNhbm5vdCBiZSB1c2VkIGFzIGEgcHJpbmNpcGFsIG9mIGEgcG9saWN5IGRvY3VtZW50LlxuICAgIC8vIGNmLiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX3ByaW5jaXBhbC5odG1sI1ByaW5jaXBhbF9zcGVjaWZ5aW5nXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbm5vdCB1c2UgYSBNYW5hZ2VkUG9saWN5ICcke3RoaXMuX21hbmFnZWRQb2xpY3kubm9kZS5wYXRofScgYXMgdGhlICdQcmluY2lwYWwnIG9yICdOb3RQcmluY2lwYWwnIGluIGFuIElBTSBQb2xpY3lgLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9Qb2xpY3koc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpLnN0YXRlbWVudEFkZGVkO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICAgIHN0YXRlbWVudDogUG9saWN5U3RhdGVtZW50LFxuICApOiBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCB7XG4gICAgdGhpcy5fbWFuYWdlZFBvbGljeS5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgcmV0dXJuIHsgc3RhdGVtZW50QWRkZWQ6IHRydWUsIHBvbGljeURlcGVuZGFibGU6IHRoaXMuX21hbmFnZWRQb2xpY3kgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,120 @@
1
+ import { iamOpenidConnectProvider } from "@cdktf/provider-aws";
2
+ import { Construct } from "constructs";
3
+ import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "../aws-construct";
4
+ export interface OpenIdConnectProviderOutputs {
5
+ /**
6
+ * The Amazon Resource Name (ARN) of the IAM OpenID Connect provider.
7
+ * @stability stable
8
+ */
9
+ readonly arn: string;
10
+ /**
11
+ * The issuer for OIDC Provider
12
+ * @stability stable
13
+ */
14
+ readonly issuer: string;
15
+ }
16
+ /**
17
+ * Represents an IAM OpenID Connect provider.
18
+ *
19
+ */
20
+ export interface IOpenIdConnectProvider extends IAwsConstruct {
21
+ readonly openIdConnectProviderOutputs: OpenIdConnectProviderOutputs;
22
+ /**
23
+ * The Amazon Resource Name (ARN) of the IAM OpenID Connect provider.
24
+ */
25
+ readonly openIdConnectProviderArn: string;
26
+ /**
27
+ * The issuer for OIDC Provider
28
+ */
29
+ readonly openIdConnectProviderIssuer: string;
30
+ }
31
+ /**
32
+ * Initialization properties for `OpenIdConnectProvider`.
33
+ */
34
+ export interface OpenIdConnectProviderProps extends AwsConstructProps {
35
+ /**
36
+ * The URL of the identity provider. The URL must begin with https:// and
37
+ * should correspond to the iss claim in the provider's OpenID Connect ID
38
+ * tokens. Per the OIDC standard, path components are allowed but query
39
+ * parameters are not. Typically the URL consists of only a hostname, like
40
+ * https://server.example.org or https://example.com.
41
+ *
42
+ * You cannot register the same provider multiple times in a single AWS
43
+ * account. If you try to submit a URL that has already been used for an
44
+ * OpenID Connect provider in the AWS account, you will get an error.
45
+ */
46
+ readonly url: string;
47
+ /**
48
+ * A list of client IDs (also known as audiences). When a mobile or web app
49
+ * registers with an OpenID Connect provider, they establish a value that
50
+ * identifies the application. (This is the value that's sent as the client_id
51
+ * parameter on OAuth requests.)
52
+ *
53
+ * You can register multiple client IDs with the same provider. For example,
54
+ * you might have multiple applications that use the same OIDC provider. You
55
+ * cannot register more than 100 client IDs with a single IAM OIDC provider.
56
+ *
57
+ * Client IDs are up to 255 characters long.
58
+ */
59
+ readonly clientIds: string[];
60
+ /**
61
+ * A list of server certificate thumbprints for the OpenID Connect (OIDC)
62
+ * identity provider's server certificates.
63
+ *
64
+ * AWS secures communication with OIDC identity providers (IdPs) using our
65
+ * library of trusted root certificate authorities (CAs) to verify the
66
+ * JSON Web Key Set (JWKS) endpoint's TLS certificate.
67
+ *
68
+ * If your OIDC IdP relies on a certificate that is not signed by one of
69
+ * these trusted CAs, only then we secure communication using the
70
+ * thumbprints set in the IdP's configuration.
71
+ *
72
+ * AWS will fall back to thumbprint verification if we are unable to retrieve
73
+ * the TLS certificate or if TLS v1.3 is required.
74
+ *
75
+ * See [AWS OIDC Docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html#manage-oidc-provider-console)
76
+ */
77
+ readonly thumbprints?: string[];
78
+ }
79
+ /**
80
+ * IAM OIDC identity providers are entities in IAM that describe an external
81
+ * identity provider (IdP) service that supports the OpenID Connect (OIDC)
82
+ * standard, such as Google or Salesforce. You use an IAM OIDC identity provider
83
+ * when you want to establish trust between an OIDC-compatible IdP and your AWS
84
+ * account. This is useful when creating a mobile app or web application that
85
+ * requires access to AWS resources, but you don't want to create custom sign-in
86
+ * code or manage your own user identities.
87
+ *
88
+ * @see http://openid.net/connect
89
+ * @see https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html
90
+ *
91
+ * @resource AWS::CloudFormation::CustomResource
92
+ */
93
+ export declare class OpenIdConnectProvider extends AwsConstructBase implements IOpenIdConnectProvider {
94
+ /**
95
+ * Imports an Open ID connect provider from an ARN.
96
+ * @param scope The definition scope
97
+ * @param id ID of the construct
98
+ * @param openIdConnectProviderArn the ARN to import
99
+ */
100
+ static fromOpenIdConnectProviderArn(scope: Construct, id: string, openIdConnectProviderArn: string): IOpenIdConnectProvider;
101
+ readonly openIdConnectProviderOutputs: OpenIdConnectProviderOutputs;
102
+ get outputs(): Record<string, any>;
103
+ readonly resource: iamOpenidConnectProvider.IamOpenidConnectProvider;
104
+ /**
105
+ * The Amazon Resource Name (ARN) of the IAM OpenID Connect provider.
106
+ */
107
+ readonly openIdConnectProviderArn: string;
108
+ readonly openIdConnectProviderIssuer: string;
109
+ /**
110
+ * The thumbprints configured for this provider.
111
+ */
112
+ readonly openIdConnectProviderthumbprints: string[];
113
+ /**
114
+ * Defines an OpenID Connect provider.
115
+ * @param scope The definition scope
116
+ * @param id Construct ID
117
+ * @param props Initialization properties
118
+ */
119
+ constructor(scope: Construct, id: string, props: OpenIdConnectProviderProps);
120
+ }